十字交叉道路交通仿真系统设计研究
2021-11-08周承云
周承云
(广西交通投资集团南宁高速公路运营有限公司,广西 南宁 530022)
0 引言
近年来,道路机动车数量急剧增长,交通事业发展速度跟不上,导致交通状况日益恶化,而交通仿真系统的出现,对解决各种交通问题做出了巨大的贡献。交通仿真系统[1]是模拟交通控制在城市道路交通中通过检测参数设置的合理性、道路交通需求的适应性,及时地调整和控制交通信号的参数,避免因信号控制失误造成交通混乱,以此来观察系统的科学性和运行效率。其不仅可以为现实交通规划提供参考,还可以为信号控制配时方案进行评估,达到节能减排、减少交通拥挤的效果,具有很强的现实意义。
早期的智能交通控制主要采用的是模糊逻辑的方法[2],但简单的模糊处理会降低控制精度,导致规则难以总结。若采用凑试法,则量化因子等参数包含了过多的人为因素,造成设计过程缺乏系统性。目前,运用较多的是遗传算法[3],然而随着路由机制的导航系统变量增加,系统计算的成本也会成倍增加。
为此,本文设计了一种基于单片机的十字交叉道路交通信号控制仿真系统,采用模块化思想对系统进行硬件与软件设计,该系统能够根据相应的按键来选择十字交叉路口的交通信号控制策略的模拟及可视化,同时也可通过修改相应程序来调整交通流的流通速度、通行时间及车辆类型。
1 系统总体设计与分析
目前交通信号控制的设计多采用工控机[4]、可编程控制器(Programmable Logic Controller,PLC)[5]和FPGA半定制电路[6]。然而,工控机会随着运行时间过长,导致系统运行速度和可靠性降低;PLC设计死板,结构过于封闭;FPGA成本较高,不建议多用。单片机具有集成度高、体积小、可靠性高、强大的控制功能、低电压、低功耗、便携式产品、易于生产、易于扩展等优点,故本文采用单片机控制技术[7-9]。
整个系统分为硬件和软件两个部分。硬件是由主控制模块、车辆检测模块、倒计时模块、流量检测模块、供电模块和信号输出模块组成。软件设计包括通讯程序设计、系统倒计时显示设计、故障诊断及保护程序设计和Unity虚拟仿真程序设计。设计采用单片机STM32F103为核心元器件,通过程序实现控制通行时间,以数码管倒计时显示出来,若出现交通阻塞时,可通过按键延长通行时间,缓解交通压力。
2 硬件设计
硬件系统是由系统供电模块、流量检测模块、主控制模块、车辆检测模块、倒计时模块、信号输出模块等组成。本系统的主控芯片选择了来自ARM公司的STM32F103C4芯片。STM32F103系列芯片采用了Cortex-M3内核,具有高性能和低功耗的特性。芯片本身还具有USB、CAN和7个DMA通道,以方便进行开发过程中的调试,这些特性使得这一系列芯片在嵌入式系统开发领域中受到了广泛使用,系统整体结构如图1所示,除了作为核心的STM32F103C4控制板外,系统共分6个模块,各模块功能如下:
图1 系统整体结构示意图
(1)系统供电模块:为系统整体进行3.3 V和5 V直流供电。
(2)车流监视模块:用以监视仿真过程中,不同道口方向的车辆流通情况,并将其量化,转换为数字信号以输入主控芯片。
(3)控制模块:用以提供仿真设备的开启、关闭和复位等基本操作,并能切换设备的不同工作模式。
(4)交通流显示模块:用以显示系统检测到的实时车流情况。
(5)倒计时模块:用以显示车流的剩余通行时间。
(6)信号输出模块:用以将控制信号发送至个人电脑。
3 交通仿真系统软件设计及分析
系统软件的形成是依靠硬件的,只有当二者兼容协调才能够使得本系统稳定运行。为了满足半实物仿真的实时性,让系统在运行期间不发生延时,在本软件设计中重点解决高速的信号仿真器与PC机的实时通信问题以及Unity3D平台里三维虚拟视景的快速生成和显示问题。同时,为了使得以后相应的程序可以更好进行调试与维护,对于本系统的软件部分采用模块化设计,其中系统的主程序通过调用各个子程序完成系统初始化、各种控制方式的实现及通讯控制等。
3.1 通讯程序设计
高速的信号仿真器采集到的控制信号主要存放在寄存器当中,本系统主要采取Modbus协议来对这些寄存器进行访问,在IAR EWARM里搭建好固件库后,编写好相应的应用程序,使得数据按照Modbus RTU通信协议进行传输。串口采用的是RS485,其基本操作包括串口初始化、发送和接收数据,主要通过访问寄存器来完成,具体如图2所示。
图2 串口通信程序流程图
3.2 系统倒计时显示程序设计
系统的时段主要分成平常时段与假日时段,同时根据不同的交通情况改变信号灯的状态。在系统开始工作时,南北红灯亮,同时东西绿灯亮。南北红灯时间维持45 s程序,东西绿灯时间维持30 s程序。到30 s时,东西绿灯闪亮,绿灯闪亮时间5 s后熄灭,东西黄灯亮并维持10 s程序。到10 s时,东西黄灯熄灭且东西红灯亮45 s程序,同时南北红灯熄灭,南北绿灯亮30 s程序。东西红灯维持时间45 s程序,南北绿灯维持30 s程序。到30 s时,南北绿灯闪亮后熄灭,南北黄灯亮且维持10 s程序。到10 s时,南北黄灯熄灭且其方向上的红灯亮,接着就进行第二周期的运行。具体倒计时显示程序流程图如图3所示。
图3 倒计时显示程序流程图
3.3 故障诊断及保护程序设计
本系统通过四相位交通控制,采集各个相位绿灯信号进行比对,对绿灯冲突故障进行检测。若有故障信息,则通过串口将信息发送给单片机进行报警及故障显示,具体如图4所示。
图4 故障诊断及保护电路程序流程图
3.4 Unity3D虚拟仿真程序设计
在虚拟仿真平台中,本系统采用多线程的编程方式进行设计。整个Unity3D平台的多线程流程图如图5所示。
图5 Uniry3D平台的多线程流程图
其中线程1完成的是被控对象模型的执行动作显示,每个采集到的信号会对应着一个被控对象的执行动作,被控对象的执行动作根据对应信号的变化而变化。而线程2完成的是采集高速信号仿真器里存储的控制信号。但是线程1和线程2在同步运行时,会出现相互打断的现象,不利于提高虚拟平台的刷新频率,为此,采用同步锁来处理这种问题。同步锁的程序流程图如图6所示。
图6 同步锁的程序流程图
4 电路安装与调试
在交通信号灯的虚拟视景平台里,分别截取了交通信号灯的控制面板和交通信号灯的视景效果图,以此来展现交通信号灯的单片机控制半实物仿真系统的运行状态和结果如图7所示。
5 结语
本文设置了一种基于单片机的十字交叉路口交通信号控制仿真器,并完成实物制作。该仿真器以STM32单片机为控制器,交通流显示模块由16×16点阵的LED模块及7段数码管组成,PC上位机与信号输出模块相连,将真实的控制信号与虚拟的控制信号相互转化,使用移植性好的C语言编写电源、车辆检测、按键及倒计时模块,同时还引入车辆检测模块优化配置信号。
本系统的PC端上位机的Unity视景图像可以观察交通流的状况,采用按键方式实现不同的交通流模式的切换,也可修改软件参数实现对通行时间的设置,且在这一过程中可采用红外遥控代替按键键盘,使效果更加逼真。