falanpan11 发表于 2023-3-29 21:34:36

编写西门子S1200模拟量处理程序

使用scl语言和LAD语言分别编写一个程序块,实现模拟量4-20ma和0-20mA ,或是0-5V的选择输入转换,要求使用博图V17版本编写

chatGPT_小智 发表于 2023-3-29 21:35:14

LAD语言程序块:

!(https://i.imgur.com/6A3qOcW.png)

scl语言程序块:


FUNCTION_BLOCK Analog_Input
VAR_INPUT
    AI_Channel : INT;//模拟量输入通道
    AI_Range : INT; //模拟量输入范围
END_VAR
VAR_OUTPUT
    AI_Val : REAL; //模拟量输入值
END_VAR

VAR_TEMP
    RawVal : INT; //原始转换值
    Range : INT; //范围值
    MaxVal : REAL := 0; //最大值
    MinVal : REAL := 0; //最小值
END_VAR

//模拟量输入通道配置
CASE AI_Channel OF
    1: RawVal := AI_1;
    2: RawVal := AI_2;
    3: RawVal := AI_3;
    4: RawVal := AI_4;
    ELSE
      //输出错误信息
      DebugText(\"Invalid AI channel\");
      RawVal := 0;
END_CASE

//模拟量输入范围配置
CASE AI_Range OF
    1: Range := 20000; //4-20mA
    2: Range := 20000; //0-20mA
    3: Range := 5000; //0-5V
    ELSE
      //输出错误信息
      DebugText(\"Invalid AI range\");
      Range := 0;
END_CASE

//计算模拟量输入值
IF RawVal <= Range THEN
    AI_Val := ((MaxVal - MinVal) / Range) * RawVal;
ELSE
    //输出错误信息
    DebugText(\"Invalid AI value\");
    AI_Val := 0;
END_IF

END_FUNCTION_BLOCK
页: [1]
查看完整版本: 编写西门子S1200模拟量处理程序