由于隧道的相对封闭性和其中行车环境的复杂性,要保障其安全运营存在一定的复杂性。尤其对于高速公路中的长隧道(长度介于1 km和3 km之间)和超长隧道(长度高于3 km),由于车速高、流量大以及通风等问题的存在,隧道中容易累积汽车尾气中的CO、氮氧化物等有害气体。另外,隧道中还可能因为照明故障、能见度低等问题的产生导致交通事故的发生。为保证隧道的运营安全,避免造成安全事故和重大经济损失,应对隧道配备完善的环境参数监控系统。
本文介绍的隧道环境监控系统,利用区域控制部分的实时监控技术对各监控点的照明亮度、能见度、CO浓度、烟雾浓度等参数进行采集、监测,并根据这些参数控制相关的交通灯、应急灯、LED交通指示牌、限速牌以及报警装置。然后通过现场总线将各节点的参数和报警信号发送至本地监控中心,由本地控制中心对各区域控制模块进行调度。本地控制中心还将这些参数通过以太网发送至远程监控终端处,在终端上远程监控隧道的环境参数。
1 系统总体结构
系统的总体结构如图1所示。系统主要包括区域控制部分、本地控制中心和远程监控终端。
安装在隧道中的区域控制部分采用CAN总线分布式数据采集控制方式。当系统启动后,各环境参数监测点开始采集环境参数,并在接收到发送数据命令后将数据传送至CAN总线。在区域控制模块接收处理数据后会控制报警器等相关设备。
由于CAN总线协议不对节点进行地址编码,而是采用对通信数据块进行编码的方式,这使得CAN总线上的节点数量理论上几乎不受限制[2]。然而实际上,由于存在电气特性上的限制,CAN总线上节点数量不宜超过100个。因此各个区域控制模块与本地控制中心使用另一条CAN总线进行数据通信。区域控制模块在采集到环境参数并做出控制动作后会将参数打包通过CAN总线发送至本地控制中心的工控机。本地控制中心如收到某个区域控制部分的报警信号,会根据报警信号类型对该区域控制部分前方的各区域控制部分做出控制,提前预警车辆隧道前方通行环境存在问题。
远程控制终端通过客户端的显示程序显示出由本地控制中心发送的隧道环境参数,并将参数保存在数据库,以实现历史数据的存储。
2 系统硬件设计
整个系统硬件部分包括由区域控制模块和各环境参数测量模块组成的区域控制部分、本地控制中心的工控机以及监控终端。其中关键部分为区域控制部分,本文将对这部分进行重点介绍。
区域控制模块选用意法半导体公司的STM32F105RCT6为控制核心,它是采用ARM Cortex-M3为内核的32位高性能嵌入式微处理器。它集成了两个CAN控制器,并为每个CAN控制器分配了256 B的SRAM,每个CAN控制器有三个发送邮箱和两个接收FIFO[1]。模块的其他外设包括用于CAN总线信号收发的CAN收发器,用于显示当前环境参数的点阵液晶,用于实现基本控制功能的按键等。区域控制模块的硬件框图如图2所示。
区域控制模块中CAN总线接口电路由STM32F105RCT6中内置的CAN控制器和CAN收发器SN65HVD230D组成。STM32F105RCT6的PA11/CAN1_RX和PA12/CAN1_TX为CAN1控制器接口,将其与CAN收发器连接后接入与各测量模块相连的CAN总线中;PB12/CAN2_RX和PB13/CAN2_TX为CAN2控制器接口,将其与CAN收发器连接后接入与其他区域控制部分及本地控制中心相连的CAN总线中。
[page]
能见度测量模块由能见度检测仪和控制模块组成。能见度检测仪能将检测到的能见度值通过RS232发送至控制模块。当区域控制模块向能见度测量模块中的控制模块请求数据时,控制模块会使能见度检测仪通过RS232向控制模块发送数据,并转换成CAN数据包发送至CAN总线。其他测量模块工作模式与能见度测量模块相同。
3 区域控制模块软件设计
由于区域控制部分在测量环境参数以及控制相应设施方面对实时性和稳定性要求,区域控制模块选择使用μC/OS-II管理控制任务的调度。μC/OS-II是一个专为嵌入式应用设计,基于优先级调度的抢占式实时操作系统内核,它包含了任务调度、任务管理、时间管理/任务间通信与同步等功能。各任务之间通过信号量、邮箱和消息队列实现相互间的数据交换和同步[3]。
根据区域控制模块在系统中的作用,嵌入式操作系统中应实现多个不同优先级的控制任务。这些任务按照优先级由高到低分别为:接收本地控制中心调度;接收按键控制;采集环境参数;控制相关设备;显示环境参数;发送数据到本地控制中心。对于区域控制系统来说,本地控制中心的调度命令决定着它的系统设置,因此需要把接受本地控制中心调度任务分配到相对最高的优先级。其他任务也根据相对的重要性和执行顺序分配相应的优先级。系统启动流程图如图3所示。
硬件初始化程序负责初始化芯片的系统时钟、中断向量、I/O配置、CAN配置等。操作系统初始化程序负责初始化任务的空闲链表和使用链表、时钟管理等。在启动任务调度之前需利用OSTaskCreate()函数创建需要使用的任务,设置不同任务的堆栈区和优先级。然后使用OSStart()函数开始多任务调度。多个任务之间需要共享环境参数,因此在任务创建之前分配一块共享内存以供任务间数据通信。以下重点介绍环境参数采集任务和控制设备任务的软件实现。
环境参数采集任务和控制设备任务中CAN总线使用CAN 2.0B协议,波特率设置为250 kb/s。STM32F105RCT6的CAN控制器中包含28个共享的可配置标识符过滤器组。通过过滤器组的设置,配合使用不同的接收FIFO寄存器,可以在硬件上设置区分不同标识符的报文。每收到一帧报文,首先与过滤器组中设置的报文ID进行比较。报文如果与过滤器组中设置的环境参数报文的ID匹配则将报文送入接收FIFO0寄存器,如果与过滤器组中控制报文的ID匹配则将报文送入接收FIFO1寄存器,如果都不匹配,则认定此报文为垃圾报文,直接丢弃。
环境参数采集采用轮询的方式,由区域控制模块轮询请求各数据采集点的数据,轮询时间间隔为1 s,轮询由任务延时函数OSTimeDLY()实现。在接收到所有环境参数采集点的数据后,这些参数将被存入共享内存。接着通过OSTimeDLY()函数的调用,实现将当前任务挂起,并延时时钟节拍1 s,然后调用OSSched()进行任务重新调度。在指定的时钟节拍到来之后,当前任务会被恢复为就绪状态。环境参数采集任务流程图如图4所示。
控制设备任务的优先级仅次于环境参数采集任务,在环境参数采集任务被挂起后运行。控制设备任务首先访问读取共享内存区的环境参数,根据阈值判断是否对各控制设备做出动作。在结束动作之后,本任务也会调用OSTimeDLY()函数挂起自己以实现下一优先级任务的运行。
接收本地控制中心调度任务和按键控制任务在创建之后就通过调用OSTaskSuspend()函数进入挂起状态,当接收到调度命令和按键中断以后,才会通过调用OSTaskResume()函数恢复任务,实现任务的执行。
本文给出了基于CAN总线的隧道环境监控系统的软硬件设计方法。系统中区域控制模块采用高性能嵌入式微处理器和嵌入式实时操作系统为核心,并使用稳定的工业现场总线,保证了系统的高可靠性和高实时性,满足了隧道环境的监控需求。
上一篇:单片机的I2C总线与MAX517与数据通信
下一篇:RS485总线稳定性解决方案
推荐阅读最新更新时间:2024-05-02 21:22