文档介绍:细心整理
在西门子PLC中运用SCL语言编程的技巧
前言:两年半前我就在工控网上发表了有关SCL编程的学问#lt;#lt;在S7300400型PLC中运用高级语言编程#gt;#gt;,但发表完后,即使我自己都从没有把任何运用SCL编)) OR (condition2 AND ( NOT condition1)) THEN Result:=true; ELSE Result:=false; END_IF; 其等效于Result:= condition1 XOR condition2; XOR功能就是两条件不同输出TRUE,一样输出FALSE
细心整理
4、 脉冲沿检测功能运用以下两条语句替代脉冲上升沿检测函数,譬如检测button_Input上升沿的代码如下: Puls:=button_Input #amp; (NOT button_Last); button_Last:= button_Input; 同样的下降沿脉冲检测如下: Puls:= ( NOT button_Input) #amp; button_Last; button_Last:= button_Input;
5、 编写脉冲发生器 波峰持续时间仅为一个PLC扫描周期的波形称为脉冲波,而波峰持续时间大于或等于两个PLC扫描周期的波形称为方波,脉冲波可用于计数、定时,方波可用于限制信号灯的闪烁输出,可以在西门子PLC的硬件配置中配置一个字节的各种时间的方波〔波峰时间和波谷时间为1:1〕,假设"FP_1Sec" 为这个字节中1秒的方波,那么: #lt;1#gt;、间隔1秒的脉冲波“Impls_1Sec” 如下编程: “Impls_1Sec” := "FP_1Sec" AND (NOT “Impls_1Sec_Aux”); “Impls_1Sec_Aux”:= "FP_1Sec" ; #lt;2#gt;、间隔10秒的脉冲波“Impls_10Sec” 如下编程: IF (“Impls_10Sec” ) THEN Count_ Actual:=0; “Impls_10Sec”:=0; ELSE IF (“Impls_1Sec” ) THEN Count_ Actual:= Count _ Actual 1; END_IF; “Impls_10Sec”:= Count_ Actual#gt;=10; END_IF; Count_ Actual的初始值为0,同时当系统新启动时,也需将其设为零。间隔更长时间的脉冲波编程都可以遵照上面的方式编程。
6、尽量运用编程计数功能来替代定时器功能,这样使程序更牢靠和易于阅读假设Input_Condition为输入,Output_Delay为通过定时处理后的输出,Timer_Setpoint为时间设定点,Timer_Actual为当前时间计数的实际值,“Impls_1Sec” 为系统编程产生的1秒脉冲。 #lt;1#gt;、在输入条件
细心整理
满足的状况下,延时输出的定时器: IF (NOT Input_Condition) THEN Timer_Actual:= 0; Output_Delay:= 0; ELSE IF (“Impls_1Sec” AND NOT Output_Delay) THEN Timer_ Actual