quote:以下是引用htc在2013-09-11 09:48:57的发言:
在Step7 V5.X环境下,如果是专业版软件则包括SCL软件,如果是其他的则不包括,需要单独安装。
V5.x环境下使用SCL感觉不爽的是上升沿、下降沿需要编程,不像LAD、STL那样有指令直接使用。
关于沿的编程,参考http://support.automation.siemens.com/WW/view/en/6210591
在博途V12,S7-1200和S7-1500CPU中,支持两个位逻辑运算R_TRIG和F_TRIG,分别为上升沿检测和下降沿检测。其实质是两个功能块(调用时需要分配背景数据块,博途将它们归类为系统块目录下)。在300,400CPU或者是STEP7 V5.X下使用SCL语言可以自己编写一个FB块,其可在多重背景中使用,作为沿检测信号,FB1程序:
FUNCTION_BLOCK FB1
VAR_INPUT
CLK:BOOL;
END_VAR
VAR_OUTPUT
R_Q:BOOL;
F_Q:BOOL;
END_VAR
VAR
StatCLK:BOOL;
END_VAR
IF CLK=1 AND StatCLK=0 THEN
R_Q:=1;
ELSIF CLK=0 AND StatCLK=1 THEN
F_Q:=1;
ELSE
R_Q:=0;F_Q:=0;
END_IF;
StatCLK:=CLK;
END_FUNCTION_BLOCK
然后FB2中使用多重背景调用:
FUNCTION_BLOCK FB2
VAR
Edge01:FB1;
Edge02:FB1;
END_VAR
Edge01(CLK :=m0.0 // IN: BOOL
);
m0.1:= Edge01.R_Q; // OUT: BOOL
m0.2:= Edge01.F_Q; // OUT: BOOL
Edge02(CLK :=m0.3 // IN: BOOL
);
m0.4:= Edge01.R_Q; // OUT: BOOL
m0.5:= Edge01.F_Q; // OUT: BOOL
END_FUNCTION_BLOCK
不过在FC或者OB中调用FB1还是需要单独分配背景数据块,使用起来确实不如STL和LAD中的沿检测方便。htc给出的链接程序中,程序的编写更为简洁。