简单的交通灯控制程序求助 (简单的交通灯怎么画)

本系统用于控制四路口交叉路口的交通信号灯,满足以下要求:

  • 南北主干道:左转绿10s,直行绿30s,绿闪3s,黄2s,红45s
  • 东西人行道:红13s,绿27s,绿闪3s,红47s
  • 东西主干道:红45s,左转绿10s,直行绿30s,绿闪3s,黄2s
  • 南北人行道:红58s,绿27s,绿闪3s,黄2s

正常循环控制方式

交通灯变化顺序表(单循环周期90秒):

南北主干道 东西主干道
南北向 左行绿10s,直行绿30s,绿闪3s,黄2s,红45s 红45s,左行绿10s,直行绿30s,绿闪3s,黄2s
东西向 红58s,绿27s,绿闪3s,黄2s 红47s,绿27s,绿闪3s,红13s

急车强通控制方式

急车强通信号受急车强通开关控制。无急车时,按正常循环时序控制;有急车来时,将急车强通开关接通,不管原来信号状态如何,一律强制让急车来车方向的绿灯亮,直到急车通过为止;将急车强通开关断开,信号的状态立即转为急车放行方向的绿灯闪亮3次。随后按正常时序控制。

急车强通信号只能响应一路方向的来车,若两个方向先后来急车,则响应先来的一方,随后再响应另一方。

设计内容

  1. 安排分配PC的I/O编号,选择合适的F1系列PC设备。
  2. 设计交通灯控制流程图。
  3. 设计梯形图。
  4. 编写控制程序。

控制程序

ladder // 变量定义 BOOL南北主干道_绿灯 = FALSE; BOOL南北主干道_红灯 = TRUE; BOOL东西主干道_绿灯 = FALSE; BOOL东西主干道_红灯 = TRUE; BOOL南北人行道_绿灯 = FALSE; BOOL南北人行道_红灯 = TRUE; BOOL东西人行道_绿灯 = FALSE; BOOL东西人行道_红灯 = TRUE; INT循环周期 = 90; INT绿灯时间 = 30; INT左转绿灯时间 = 10; // 主循环 WHILE TRUE { // 正常循环控制 IF 循环周期 > 0 THEN { // 南北主干道 IF 南北主干道_绿灯 AND 循环周期 >= 绿灯时间 THEN { 南北主干道_绿灯 = FALSE; 南北主干道_红灯 = TRUE; 东西主干道_绿灯 = TRUE; 东西主干道_红灯 = FALSE; } ELSE IF 南北主干道_红灯 AND 循环周期 >= (绿灯时间 + 左转绿灯时间) THEN { 南北主干道_绿灯 = TRUE; 南北主干道_红灯 = FALSE; 东西主干道_绿灯 = FALSE; 东西主干道_红灯 = TRUE; } // 东西主干道 IF 东西主干道_绿灯 AND 循环周期>= 绿灯时间 THEN { 东西主干道_绿灯 = FALSE; 东西主干道_红灯 = TRUE; 南北主干道_绿灯 = TRUE; 南北主干道_红灯 = FALSE; } ELSE IF 东西主干道_红灯 AND 循环周期 >= (绿灯时间 + 左转绿灯时间) THEN { 东西主干道_绿灯 = TRUE; 东西主干道_红灯 = FALSE; 南北主干道_绿灯 = FALSE; 绿灯 = FALSE; 急车强通_灯 = TRUE; END_WHILE; } // 东西主干道 IF 东西主干道_绿灯 THEN { 东西主干道_绿灯 = FALSE; 南北主干道_绿灯 = FALSE; 南北人行道_绿灯 = FALSE; 急车强通_灯 = TRUE; } ELSE { 东西主干道_绿灯 = TRUE; 南北主干道_绿灯 = FALSE; 南北人行道_绿灯 = FALSE; 急车强通_灯 = TRUE; END_WHILE; } } // 循环周期递减 循环周期--; }

本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!

相关阅读

添加新评论