一、控制要求
一条公路与人行横道之间的信号灯顺序控制。没有人横穿公路时,公路绿灯与人行道红灯始终都是亮的。当有人需要过路时,按路边设有的按钮(两侧均设) SB1或SB2, 15s后, 公路绿灯灭,黄灯亮。再过10s, 黄灯灭,红灯亮。然后,过5s人行道红灯灭,绿灯亮,绿灯亮10s后,又闪烁4s。4s后,红灯又亮了。再过5S,公路红灯灭,绿灯亮。在这个过程中按路边的按钮是不起作用的,只有当整个过程结束后,也就是公路绿灯与人行道红灯同时亮时,再按按钮才起作用。
二、任务分析
当人行道没有人需要通过时,公路一直绿灯亮人行道红灯亮,当有人需要通过时,按人行道旁按钮,公路15s后绿灯灭黄灯亮再过10s, 黄灯灭,红灯亮。然后,过5s人行道红灯灭,绿灯亮,绿灯亮10s后,又闪烁4s。4s后,红灯又亮了。再过5S,公路红灯灭,绿灯亮。之后再次恢复到公路一直绿灯亮人行道红灯亮状态等待下次按钮被按下。
当有人需要通过时,按下按钮后我们根据任务要求可以列出公路和人行道两侧红绿灯变化与时间关系的表如下:
表1 按钮按下后红绿灯变化
三、设计思路:
我们可以将控制要求分为两种状态,一种是没有人通过时另一种是有人需要通过。没有人通过时公路绿灯亮人行道红灯亮;而有人需要通过时,按下两侧任意一侧按钮时,程序内部启动一个定时器,可以根据上表中时间段值使用比较指令输出当前时刻人行道与公路两侧对应的红绿灯状态。
四、程序设计