在西门子PLC中沿指令编程似乎是一个永久话题,五彩缤纷,表现了西门子开放性,了解这些技巧对于阅读和编写程序大有脾益,HUO1921大侠分享的程序中出现了另一种沿指令编程编程方法,本人经过仿真,对这种编程方法有了进一步理解,在此分享,供大家参考:
参考:https://www.ad.siemens.com.cn/club/bbs/post_1798084_66_0_29.html#anch
程序中分别在字逻辑和位逻辑中出现了两次以下逻辑:
===================================
B:=A XOR A_FP AND A;
A_FP:=A;
===================================
A: 输入信号:BOOL或位序列类型(Word)
A_FP: 存储位:BOOL或位序列类型(Word)
B: 结果沿信号:BOOL或位序列类型(Word)
为了便于测试,本人用经典STEP 7 SCL编程进行测试, 程序如下:
FB10:
FUNCTION_BLOCK FB10
VAR_INPUT
A:WORD; //输入信号
END_VAR
VAR_OUTPUT
B:WORD; //输出沿信号
D AT B: ARRAY [0..15] OF BOOL;
C:WORD; //记录沿信号
END_VAR
VAR
A_FP:WORD;
EE: WORD;
TEST AT EE: ARRAY [0..15] OF BOOL;
END_VAR
VAR_TEMP
i: INT;
END_VAR
i:=0;
B:=A XOR A_FP AND A;
A_FP:=A;
FOR i:= 0 TO 15 BY 1 DO
IF D[i]
THEN
TEST[i] := TRUE;
END_IF;
END_FOR;
C:=EE;
END_FUNCTION_BLOCK
OB1:

测试结果,无论BOOL或位序列类型(Word),均得到沿脉冲

提示:
每次测试后下一次输入值前,要在变量表中将背景数据块中变量#EE值清零:

欢迎大家批评指正!