用交通信号控制系统作为SFC编程语言的一个综合性应用示例。示例中,转换条件可用LD、ST、IL或FBD编程语言表示。同样,动作也可用LD、ST、IL或FBD编程语言表示。由于这些动作中没有顺序功能表,因此,没有用SFC编程语言编程。
1.控制要求
交警上班后,将启动开关START切到自动(START=1)。交通信号灯根据下列控制要求自动切换:
1)南北红灯点亮13s,同时,东西绿灯点亮8s,然后,东西绿灯闪烁3s,东西黄灯点亮2s。
2)自动切换,东西红灯点亮15s,南北绿灯点亮10s,南北绿灯闪烁3s,然后,南北黄灯点亮2s。图4-9显示交通信号灯的控制时序。
图4-9 交通信号灯的控制时序图
交通信号控制系统有一个输入信号START,地址为%IX0.0,有6个输出信号,即东西和南北向的红、绿和黄灯。示例用于说明如何用SFC编程语言编程,因此,对信号灯系统做了简化,例如,没有设置行人的交通信号灯控制程序,也没有设置在交警下班后的黄灯交替点亮的程序等。
2.交通信号控制系统的SFC编程
SFC编程语言的编程工作分下列步骤。
(1)确定SFC
根据控制系统的控制要求确定SFC,包括设置步名、转换名、动作名或动作控制功能块实例名及有向连线的走向,完成步与转换、转换与步之间的连接等。图4-10是交通信号控制系统的SFC。
图4-10 交通信号控制系统的SFC
图中,用S0表示初始步,它用双线矩形框表示。S1~S8分别是操作步,它与相应的动作连接。交通信号控制系统是简单控制系统,因此,各连接动作的限定符都设置为N,表示不存储。连接的动作名分别是BEGIN、NS_RED、EW_GREEN、EW_GREENF、EW_YELLOW、EW_RED、NS_GREEN、NS_GREENF、NS_YELLOW,用于表示东西、南北各信号灯的点亮和闪烁的控制要求。各步之间的转换名T001~T007表示各转换条件。
(2)转换条件的编程
转换条件编程时,可设置有关变量,并对转换条件进行编程,编程语言可采用LD、ST、IL或FBD等编程语言。如图4-10所示,共有7个转换条件,编程如下。
1)T001。该转换条件是启动开关信号START。因此,用ST编程语言编程如下:
T001:=START;
2)T002。该转换条件用于计时,当步S2的消逝时间达到8s时,T002置1。因此,用定时器TON_2实现消逝时间的计时。如果软件系统有消逝时间,也可直接使用,即S2.T。用IL编程语言编程如下:
3)T003。该转换条件用于计时,当步S3的消逝时间达到3s时,T003置1。因此,用定时器TON_3实现消逝时间的计时。用ST编程语言编程如下:
TON_3(IN:=S3.X,PT:=T#3s); /*调用TON_3*/
T003:=TON_3.Q; /*定时器输出送转换条件*/
4)T004。该转换条件用于计时,即对步S4的消逝时间进行计时。当消逝时间达到2s时,转换条件T004置1。因此,用定时器TON_1实现消逝时间的计时。用FBD编程语言编程的图形如图4-11所示。
T004转换条件也可用步S1的消逝时间进行计时。这时的消逝时间为8s+3s+2s=13s。
5)T005、T006和T007。T005、T006和T007转换条件的编程与T002、T003和T004转换条件的编程类似。为便于学习,用LD编程语言编程的T005转换条件图形如图4-12所示。用ST编程语言编程的T006转换条件如下:
TON_6(IN:=S7.X,PT:=T#3s); /*调用TON_6*/
T006:=TON_6.Q; /*定时器输出送转换条件*/
T007转换条件采用对步S5的消逝时间计时。因此,定时器设定值应为10s+3s+2s=15s。用ST编程语言编程如下:
TON_4(IN:=S5.X,PT:=T#15s); /*调用TON_4*/
T007:=TON_4.Q; /*定时器输出送转换条件*/
注意,程序中的定时器TON_4与图4-11的有区别,因为,图4-11中的TON_1对步S4的消逝时间计时,而上述程序对步S5的消逝时间进行计时。(www.xing528.com)
图4-11 T004转换条件
图4-12 T005转换条件
(3)动作或动作控制功能块编程
动作或动作控制功能块的编程时,可设置有关变量,并对动作或动作控制功能块进行编程,可采用LD、ST、IL或FBD等编程语言。如图4-10所示,共有9个动作控制功能块需编程。
输出信号灯变量名称见表4-10。
表4-10 输出信号灯变量名称
1)BEGIN。BEGIN是启动前的初始动作。在SFC程序中,通常在初始步设置一些初始值等。本示例不需要设置初始值,因此,该动作是一个空操作,程序中也可删除该块。
2)NS_RED。该动作控制功能块用于点亮南北方向的红色信号灯。用LD编程语言编程,如图4-13所示。该动作采用N限定符,是非存储型。因此,当步S1成为非活动步时,动作NS_RED不再执行。为此,程序中用转换条件作为南北红灯的熄灭条件。可以看到,当步S1是活动步时,南北红灯NS_R点亮,当转换条件T004满足时,T004常闭触点断开,S1步成为非活动步,南北红灯NS_R熄灭。
3)EW_GREEN。该动作控制功能块用于点亮东西方向的绿色信号灯。用IL编程语言编程如下:
LD S2.X /*读取步状态S2.X*/
ST EW_G /*存EW_GREEN*/
图4-13 南北红灯动作程序图
与NS_RED的动作类似,但用步S2的状态S2.X来确定东西向绿灯的点亮。当状态S2.X满足时,表示步S2是活动步,因此,东西向绿灯EW_G点亮。当计时器TON_2的计时时间到,T002为真,实现转换,并使其常闭触点断开,EW_G东西向绿灯熄灭。
4)EW_GREENF。该动作控制功能块用于东西方向的绿色信号灯的闪烁,为此采用振荡信号发生器线路,例如,采用6.1.1节介绍的振荡信号发生器。图4-14是用LD编程语言编写的功能块体程序,它包含绿灯的闪烁线路。
图4-14 东西绿灯闪烁动作控制功能块图
由于步S3成为活动步后,步2成为非活动步,因此,与步2连接的动作块(采用限定符N)不被存储,即东西向绿灯熄灭。为此,本动作控制功能块用于控制东西向绿灯闪烁。图4-14中,TON_8和TON_9是两个定时器功能块实例,采用相同计时设定值200ms。转换条件T003计时到,使步S3成为非活动步,同时,使闪烁的绿灯熄灭。
5)EW_YELLOW。该动作控制功能块用于点亮东西方向的黄色信号灯。用ST编程语言编写的功能块如下:
EW_Y:=NOTT004; /*用赋值语句将转换条件T004取反后送EW_Y*/
6)EW_RED、NS_GREEN、NS_GREENF、NS_YELLOW。这些动作控制功能块的编程方法与上述编程方法类似,此处不再多述。
3.注意事项
编制SFC程序时应注意下列事项:
1)防止出现不安全和不可达序列的结构。
2)各转换名、动作控制功能块名是唯一的,应避免发生与变量名同名的现象。
3)各转换条件、动作控制功能块内的本体程序可采用IL、LD、ST、SFC和FBD编程语言编写,编程人员可根据对编程语言的熟悉程度选用。
4)变量的数据类型应匹配,防止因数据类型选择不当而出错。
5)根据IEC61131-3标准,可使用步的状态标志和步的消逝时间。当一些软件产品不提供消逝时间时,可在该步添加定时器,用于对该步进行计时。
6)可采用各种限定符对动作控制进行限定。例如,可用存储S、复位R等限定符使某一步中的动作延续到另一步成为活动步时才终止。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。