【嵌入式】基于TI LM3S9B92的智能井下预警及求救系统
0赞以Cortex-M3为开发平台的、基于ZigBee和CAN总线技术的智能井下预警及求救系统。该系统可以实时监测和记录井下工人所在位置的各种环境参数值,在瓦斯浓度超过设定值时向工人及井上监控中心发出警报信号。同时,当发生突发事故时工人可以发出报警信号,告知附近的工人和井上监测人员,此外,监测人员可根据本系统标识并定位该工人。
背景及目的
近几年,国内矿难事故频发。每一起事故的发生都是那么的触目惊心。煤矿安全事故问题存在很久了,已经造成太多人员的伤亡,根据国家安全生产监督管理总局的统计,2010年,全国发生煤矿安全事故1403起,死亡2433人。2011年,全国发生煤矿安全事故1201起,死亡1973人。我国矿难的死亡人数占全球矿难死亡人数的80%左右。据以上数据,可以较清楚的看到一直以来频发的矿难是困扰我国安全生产的重大问题。对于作为大学生的我们,应该加强这方面的科技研究。煤矿安全事故中,瓦斯爆炸占了很大的一部分。瓦斯突出问题在我国至今没有得到根本解决,往往是出了事故,处理完了就完了,并没有真正分析事故原因,防止类似事故重复发生。
为了工人的生命安全,降低死亡率,我们针对瓦斯爆炸做了具体的分析,找出瓦斯爆炸的原因,分析这些原因,从而得到具体的方案。
“瓦斯”是一种有毒的混合气体,主要含有甲烷和一氧化碳两种气体,常产生在矿井之中,如遇明火,即可燃烧,发生“瓦斯”爆炸。瓦斯爆炸产生的高温高压,促使爆源附近的气体以极大的速度向外冲击,造成人员伤亡,破坏巷道和器材设施,扬起大量煤尘并使之参与爆炸,产生更大的破坏力。另外,爆炸后生成大量的有害气体,造成人员中毒,直接威胁着矿工的生命安全。
通过对矿井下环境的监测,可以预测到瓦斯爆炸,进而让工人提早退出矿井,对矿井中的瓦斯气体进行疏通,从而避免惨剧的发生。
另外,我们发现当矿难发生时,搜救人员很难确定遇难工人的位置,他们要花很长的时间确认工人的位置,然后再进行搜救。当矿难发生时,对于工人及其家属,时间就是金钱,可能就是这几分钟确定位置的时间,对工人却是生死关头,因此,我们要求系统具有能够大致确定井下工人位置的功能。除了发生事故时,在平时的日常生产工作中工人可能会遇到某些突发情况(如摔伤),如果工人能够在遇到突发情况向地上检测中心发出求救信号,并且能够通知在周围工作的工人前来救助,那么这些突发情况就能尽快的解决。因此我们在这个系统中还增加了智能求助的功能。
系统方案概述
本系统是一个集预警求助于一身的智能型系统,主要用于检测井下作业人员所在点的环境情况(甲烷、一氧化碳、烟雾、温度、光照等五个环境参数),并能够实时的将各测量值发送到地上监控中心的电脑上进行显示和记录,当出现有测量值超过预设值时能够发出报警信号通知作业人员提高警惕,同时报警信号也会在地上监控中心的电脑上发出以方便地面上尽快做出紧急预案部署。不幸发生事故之后只要在井下有线通信线(CAN总线)不中断的情况下能够和地面上进行简单的通信并大致的定位底下人员的所在位置,为营救方案提供参考。该系统以预防为主,防治结合,从而减少矿难的发生率,在矿难发生的情况下减少死亡率。
我们为每个在井下作业的工人配备一个无线传感器节点,传感器的供电是通过工人所带的电瓶进行供电,在工人所经过的路线上会沿路放置一些转发器(即ZigBee协调器),特别是拐角的地方。工人在移动的过程中身上携带的传感器节点能够自动和不同的转发器进行通信,把监测到的数据发送出去。
转发器和工人所携带的无线传感器节点都有唯一的一个ID号(一个工人对应进一个节点ID号),发送到电脑上的数据帧包中除了包含所测量得到的环境参数外,还有传感器节点的ID和转发器的ID。由于转发器的位置是固定的,而Zigbee无线通信的距离是有一定范围的,因此,地面监控中心收到数据之后除了知道环境状况之外,还能够知道无线传感器节点(工人)目前所处的大致位置,这也为发生矿难之后的营救工作提供了一定的参考依据。
井下作业人员随身携带的无线传感器节点与距离它最近的固定的转发器之间能够组成一个临时的传感器网络,传感器节点周期性的将需要进行测量的各个环境参数模拟量通过A/D转换变成数字量,并判断是否超过了所设置的上限或下限,如果超过了就通过蜂鸣器进行报警以通知工人提高警惕。同时,传感器节点会将它所得到的测量值和它自身的ID组成一个无线数据帧通过Zigbee方式发送到距离它最近的转发器上,转发器收到传感器节点发来的数据帧之后会在数据帧前面加上转发器的ID组成一个新的适合在CAN总线上进行传送的数据帧发送到CAN总线上。和CAN总线相连的MCU主控机收到CAN总线上传来的数据帧之后将该数据帧转换成能够通过串口或者以太网方式传送的串口帧或者以太帧向地上监控中心的监控电脑发送。监控中心的电脑收到从MCU发送来的数据帧之后(串口或者以太网方式)将更新监控界面上对应传感器节点(工人)上的对应的测量值,当环境参数值超过极限值时,监测中心的电脑也会发出报警声。监测中心的电脑将记录任意时刻收到的数据,为发生事故之后对事故原因分析提供依据。
另外,当意外事故发生时(如工人摔伤),工人可以按下其携带的传感器节点上的求救按钮,此时传感器节点和监测中心都会发出报警信号。传感器节点发出报警声时,四周的工人将过来援助;监测中心发出报警声时,可以根据转发器和传感器的ID号来确定其位置和身份。
系统方案框图
系统示意图
地下有线通信方式的选择
控制器局域网(CAN)为一种串行通信协议,能够有效的支持具有很高安全等级的分布实时控制。CAN的应用范围很广,从高速的网络到低价位的多路接线都可以使用CAN。尤其是在汽车电子行业里,CAN总线被普遍使用,如使用CAN连接发动机控制单元、传感器、防刹车系统等等,其传输速率可达1Mbps。在本系统中,地下有线信道我们之所以选择CAN总线主要是基于以下几个方面的综合考虑:
CAN总线通信线相对便宜,并且其铺设容易,可以随着采矿的不断深入而逐渐往前铺设
CAN总线通信距离远,在5Kbps的传输速率情况下可以长达10Km,通过中继和转发的方式能够再扩大其通信范围。从而可以提高该系统的使用范围,从小型矿井到大中型矿井均能适用。
CAN总线使用差分电压通信,抗干扰性能强,特别适合井下这种环境恶劣的条件下使用。
在CAN总线上添加或者删除节点十分方便,方便Zigbee转发器的添加和删除。
标准的CAN总线使用11位作为节点标识,能够支持2048个节点,而扩展格式时使用29位作为节点标识,大大的增加了能够支持节点数目。
地下无线通信方式的选择
ZigBee是一种新兴的短距离、低速率、低功耗无线网络技术,它是一种介于无线标记技术和蓝牙之间的技术提案。ZigBee此前被称作“HomeRF Lite”或“FireFly”无线技术,主要用于近距离无线连接。它有自己的无线电标准,在数千个微小的传感器之间相互协调实现通信。这些传感器只需要很低的功耗,以接力的方式通过无线电波将数据从一个传感器传到另一个传感器,因此它们的通信效率非常高。最后,这些数据就可以进入计算机用于分析或者被另外一种无线技术如WiMax收集。ZigBee的目标市场主要有PC外设(鼠标、键盘、游戏操控杆)、消费类电子设备(TV、VCR、CD、VCD、DVD等设备上的遥控装置)、家庭内智能控制(照明、煤气计量控制及报警等)、玩具(电子宠物)、医护(监视器和传感器)、工控(监视器、传感器和自动控制设备)等非常广阔的领域。
井下作业人员不可能一直呆在一个地方,他可能从一个网络进入下一个网络,此时,ZigBee的自组织功能能够自动断开已建的网络切换到新的网络,从而便于工人从一个转发器网络切换到另一个转发器网络。此外ZigBee节点的主控芯片为CC2530,可完成A/D采样而无需增加其它的A/D采样芯片,这可以缩小传感器节点的大小。ZigBee的低功耗可以大大延长传感器节点电源的使用时间。
SPI总线转CAN总线模块
由于Zigbee转发器模块没有CAN接口不能够直接挂到CAN总线上,因此需要在Zigbee转发器模块与CAN总线之间添加一个转换模块,目前市面上的CAN接口芯片比较多,我们选择MCP2515和TJA1050相结合的方案。
MCP2515是一款独立CAN控制器,可简化需要与CAN总线连接的应用,其内部包含了CAN协议引擎、验收滤波器寄存器、验收屏蔽寄存器、发送和接收缓冲,可以以SPI的通信方式与Zigbee转发器模块进行通信。
TJA1050是控制器区域网络(CAN)协议控制器和物理总线之间的接口芯片,它能够将MCP2515提供的逻辑电平转换为CAN总线专用的差分电平。
传感器及报警电路
在本系统中,井下作业人员携带的传感器网络节点包括了环境参数采集的电路和报警电路。由于瓦斯的主要成分包括甲烷()、一氧化碳(),有必要对这二种气体的浓度进行检测,一旦这二种参数到达预定值,报警系统就会给出警告。另外,为了对井下环境更为了解,我们对烟雾浓度、光照强度、温度三个参数也进行的采集,监测中心的电脑可以随时显示任意工人所处环境的这五个参数。
如表1所示,为传感器的网络信息。其中,参数类型包含了所要采集的五类环境参数;器件类型是各个参数类型所采用的传感器器件;传输数据类型是在整个系统中传递数据时,用它来代表参数类型,比如传输数据类型为3,则代表此时传输的是一氧化碳浓度的数据。ZigBee节点对应引脚为井下作业人员携带的ZigBee终端节点与环境参数采集电路连接时所使用的引脚。
表1传感器网络信息
参数类型
器件类型
传输数据类型
ZigBee节点对应引脚
温度
LM35
1
P0_2
光照
光敏电阻
2
P0_3
一氧化碳
MQ-7
3
P0_4
甲烷
MQ-5
4
P0_5
烟雾
MQ-2
5
P0_7
参数类型
器件类型
传输数据类型
ZigBee节点对应引脚
温度
LM35
1
P0_2
光照
光敏电阻
2
P0_3
一氧化碳
MQ-7
3
P0_4
甲烷
MQ-5
4
P0_5
烟雾
MQ-2
5
P0_7
报警电路
为了在瓦斯浓度过高时使工人有所警觉,在井下作业人员携带的传感器网络节点中增加了报警电路,如图5所示。在该报警电路中,Bell是蜂鸣器,Vcc为5V,R0是12KΩ,Q是三极管8050。当传感器网络中的环境参数超过了极限值,Vin可通过程序被置为高电平,此时,蜂鸣器将发出声响,即有预警作用。
1.系统软件设计
MCU主控机程序设计
通过对MCU主控机需求的分析,可大致得到MCU需要完成的任务主要有以下几个:
接收CAN总线上的数据帧,并把其转换成在串口或者以太网上传输的数据帧格式;
根据传输设置,将数据通过串口或者以太网的方式传输到PC机上;
接收通过串口或者以太网上从PC发出的测量请求,并将其转换成适合在CAN总线上传输的数据帧;
Shell部分负责接收从串口或者以太网传来的调试命令的解释和执行,并返回执行结果。
基于以上任务不是很多,可以通过任务轮流调度和中断的方式来解决。于是在初级阶段就取消了操作系统在MCU主控机上的使用,随着后阶段系统任务量的增加会考虑向MCU主控机移植一个嵌入式操作系统。
CAN总线和串口的收发采用了中断的方式,其中LM3S9B92的CAN总线数据帧可以配置成0到8个长度,足以完成发送帧和接收帧的配置,而串口部分由于每次只能发送一个字节,因此采用了一个起始帧作为帧起始标志,从而为上位机提取数据帧提供了依据。从串口或者以太网中接收从监控中心发来数据时需要在接收的时候每次收到帧起始标志时便开始接收,之后收到的数据先发到接收缓冲区并计数,当接收的数据字节数为一个帧长时就把缓冲区中的数据当作一个请求帧进行处理。
CAN总线通信和串口通信程序的开发使用了TI公司的Stellaris驱动库,这极大的缩短了开发周期。而以太网部分使用了Keil的RL库(Real-Time Library)中的TCPnet,我们使用将MCU主控机与远程PC机之间建立稳定的TCP连接,收发数据都是通过嵌套字(socket)完成,从而保证传输的实时性和可靠性。由于TCP底层会根据数据帧的大小和发送速度对数据帧进行重组,为了让PC机接收端能够区分数据帧的起始,因此和串口发送方式一样需在数据帧前面添加一个帧起始标志。CAN传来的数据速率不稳定,如果直接对每个CAN传来的数据帧进行发送,那么TCP数据帧常会出现丢帧的情况,为了有效的解决这一问题,我们采用了根据CAN传来的帧速来确定每个TCP帧中应该包含的数据帧个数,即CAN总线上的帧速越快则是每个TCP帧就包含越多的数据帧。通过这一方法巧妙的解决了TCP传输时出现的丢帧情况。该算法的伪代码如下:
PC端监控程序设计
通过对PC机需求的分析,可大致得到PC需要完成的任务主要有以下几个方面:
根据监控人员需要通过串口或者以太网方式连接到MCU主控机;
允许监控人员根据实际情况添加或删除工人节点。并为各个工人节点设置允许的测量值,这主要是考虑到不同的工人其工作范围不同,因此需要进行测量的值也就有可能不同;
监控人员可以设置各个工人节点的各测量值的上限和下限,当测量值超过其上限或者下限时通过报警通知监控人员;
在收到工人的求救信号之后通过报警通知监控人员;
记录所有接收到的测量值,方便以后查看研究分析;
后阶段可能会根据需要增加绘制各测量值的波形图谱功能以方便研究分析;
为了方便监控人员的操作,需提供配置文档的保存和加载功能。
基于以上分析,我们的PC机软件选择了在.NET2.0平台下进行,开发工具为Microsoft Visual Studio 2010,使用C#语言进行编程,软件的操作方式采用了Windows平台下惯用的菜单驱动方式。
从串口或者以太网传来的数据中得到数据帧的思路和MCU中接收控制中心电脑发出的请求帧的方法类似。但由于从串口或者以太网传输来的数据帧不稳定,有时帧速很高,如果每来一帧就立即更新显示的话CPU的占用率会很高,严重的时候电脑直接卡住,为了解决这一问题,我们采用了双缓冲的办法,我们定义了两个存放数据帧的缓冲器,所有传来的数据不直接更新显示,而是先放到接收缓冲器,然后使用一个定时器周期的从接收缓冲器中读取数据帧并更新显示,为了不影响定时器更新显示的时候对数据帧的接收,我们在更新数据的时候用另一个缓冲器作为接收缓冲器,而把的那个接收缓冲器作为更新缓冲器,通过接收缓冲器和更新缓冲器的交替变换完成数据的接收和显示。该算法的伪代码描述如下: