前言:
眼前朋友们对“红绿灯编程代码”大体比较看重,看官们都需要了解一些“红绿灯编程代码”的相关内容。那么小编也在网摘上汇集了一些对于“红绿灯编程代码””的相关文章,希望小伙伴们能喜欢,兄弟们快快来学习一下吧!基于PikePLCStudio用Ladder图形化编程语言开发了一个用于控制交通灯的简单示例。
本文最后的ST源代码是Ladder编译器将梯形图转换为ST语言后的结果。
说明:本示例主要是为了演示使用PikePLCStudio基于梯形图开发PLC程序的能力,至于交通灯控制程序逻辑本身,不排除还会有其它更好的逻辑算法。另外,本人不保证程序逻辑的正确性[微笑]
例子描述如下:
十字路口有南北向和东西向四个红绿灯。南北向和东西向的红灯亮时长为30秒。南北向和东西向的绿灯亮时长为27秒,黄灯亮时长为3秒。当电源控制开关接通后,南北向的先绿灯亮,东西向的红先灯亮。当电源控制开关断开后,所有的红绿灯都关闭。定义变量
PROGRAM TrafficLight(* 十字路口有南北向和东西向四个红绿灯。 南北向和东西向的红灯亮时长为30s。 南北向和东西向的绿灯亮时长为27s,黄灯亮时长为3s。 当控制开关接通后,南北向的绿灯亮,东西向的红灯亮。 当控制开关断开后,所有的红绿灯都关闭。*) VAR power AT %IX0.0:BOOL;//红绿灯控制开关 snRed AT %QX0.0:BOOL;//南北向红灯 snGreen AT %QX0.1:BOOL;//南北向绿灯 snYellow AT %QX0.2:BOOL;//南北向黄灯 weRed AT %QX0.3:BOOL;//东西向红灯 weGreen AT %QX0.4:BOOL;//东西向绿灯 weYellow AT %QX0.5:BOOL;//东西向黄灯 time0:TIME; time1:TIME; time2:TIME; time3:TIME; time4:TIME; time5:TIME; initialized:BOOL:=TRUE;//标记是否第一次初始化 END_VAR VAR TON0:TON; TON1:TON; TON2:TON; TON3:TON; TON4:TON; TON5:TON; END_VAREND_PROGRAM程序逻辑PikePLCStudio界面截图
Ladder编译器生成的ST代码
PROGRAM TrafficLight VAR power AT %IX10.1:BOOL;//红绿灯控制开关 snRed AT %QX0.0:BOOL;//南北向红灯 snGreen AT %QX0.1:BOOL;//南北向绿灯 snYellow AT %QX0.2:BOOL;//南北向黄灯 weRed AT %QX0.3:BOOL;//东西向红灯 weGreen AT %QX0.4:BOOL;//东西向绿灯 weYellow AT %QX0.5:BOOL;//东西向黄灯 time0:TIME; time1:TIME; time2:TIME; time3:TIME; time4:TIME; time5:TIME; initialized:BOOL:=TRUE;//标记是否第一次初始化 TON0:TON; TON1:TON; TON2:TON; TON3:TON; TON4:TON; TON5:TON; END_VARIF initialized AND power THEN snGreen:=TRUE;END_IF;IF initialized AND power THEN snYellow:=FALSE;END_IF;IF initialized AND power THEN snRed:=FALSE;END_IF;IF initialized AND power THEN weRed:=TRUE;END_IF;IF initialized AND power THEN weGreen:=FALSE;END_IF;IF initialized AND power THEN weYellow:=FALSE;END_IF;IF initialized AND power THEN initialized:=FALSE;END_IF;IF NOT(IN:=power) THEN snGreen:=FALSE;END_IF;IF NOT(IN:=power) THEN snRed:=FALSE;END_IF;IF NOT(IN:=power) THEN snYellow:=FALSE;END_IF;IF NOT(IN:=power) THEN weRed:=FALSE;END_IF;IF NOT(IN:=power) THEN weGreen:=FALSE;END_IF;IF NOT(IN:=power) THEN weYellow:=FALSE;END_IF;initialized:=(NOT(IN:=power));TON0( IN:=snGreen AND power, PT:=t#27s, ET=>time0);IF TON0.Q THEN snGreen:=FALSE;END_IF;IF TON0.Q THEN snYellow:=TRUE;END_IF;TON1( IN:=snYellow AND power, PT:=t#3s, ET=>time1);IF TON1.Q THEN snYellow:=FALSE;END_IF;IF TON1.Q THEN snRed:=TRUE;END_IF;TON2( IN:=snRed AND power, PT:=t#30s, ET=>time2);IF TON2.Q THEN snGreen:=TRUE;END_IF;IF TON2.Q THEN snRed:=FALSE;END_IF;TON3( IN:=weGreen AND power, PT:=t#27s, ET=>time3);IF TON3.Q THEN weGreen:=FALSE;END_IF;IF TON3.Q THEN weYellow:=TRUE;END_IF;TON4( IN:=weYellow AND power, PT:=t#3s, ET=>time4);IF TON4.Q THEN weYellow:=FALSE;END_IF;IF TON4.Q THEN weRed:=TRUE;END_IF;TON5( IN:=weRed AND power, PT:=t#30s, ET=>time5);IF TON5.Q THEN weRed:=FALSE;END_IF;IF TON5.Q THEN weGreen:=TRUE;END_IF;END_PROGRAM
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #红绿灯编程代码