S7-300和S7-1500支持一种语法类似于PASCAL的高级编程语言SCL,这为复杂的数据处理带来了方便。
1、代码
在某工程中,管道的压力特别重要,所以在管道上设置了三个压力变送器,将三个压力的数值进行对比,取中位数参与进一步的逻辑控制。以下的FB551为程序调用的底层块,本代码在Step7 V5.6软件下编译,博图中编译时,头部声明的写入模式稍有不同。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | TITLE = '中位值' VERSION: '1.0' AUTHOR: FOOLMAN NAME: Middle FAMILY: Instr VAR_INPUT IN1: REAL; IN2: REAL; IN3: REAL; END_VAR VAR_OUTPUT MIDDLE: REAL; END_VAR VAR_TEMP TEMP: REAL; END_VAR IF IN1<IN2 THEN TEMP:= IN1; IN1:= IN2; IN2:= TEMP; END_IF; IF IN1<IN3 THEN TEMP:= IN1; IN1:= IN3; IN3:= TEMP; END_IF; IF IN2<IN3 THEN TEMP:= IN2; IN2:= IN3; IN3:= TEMP; END_IF; MIDDLE:= IN2; END_FUNCTION_BLOCK |
2、效果图
在程序中调用块FB551,并将读取的三组压力值分别引至IN1、IN2、IN3,输出管脚的MIDDLE就是中位值。