程 行 ,岳 锐,金晓龙
(1.中国地质大学(武汉)机械与电子信息学院,湖北 武汉 430074;2.湖北省电子科学研究所有限公司,湖北 武汉 430061;3.武汉市城市路桥收费管理中心,湖北 武汉 430050)
节能减排是当今的一个热点,LNG(液化天然气)由于其高效节能、污染小的特点越来越受到重视。许多船舶厂开始将传统的柴油船改造成柴油和LNG双燃料船。为了更好地对双燃料船进行燃料管理,特别是当需要分析双燃料船的节能比以及了解船舶的燃料安全状态时,就需要对船舶的燃料使用情况和安全状态进行及时的获取和监控。
传统的船舶燃料管理依赖于人工,无法自动和实时地对船舶的燃料信息进行采集和监管,而且船岸通信往往依赖于船舶的卫星通信系统,一般以邮件的方式进行数据交换,信息交互缺乏灵活性。
ARM作为嵌入式的主流核心架构,具有高速度、高精度和智能化等优点,逐渐取代了单片机技术,占据了绝大部分市场。在工业控制、移动设备、智能仪表、信息家电和网络通信等领域有广泛的应用[1-3]。3G网络由于其高带宽和网络接入灵活的特点,越来越广泛地应用于工业数据传输中[4]。本文基于ARM嵌入式终端和3G传输网络,设计了一个船舶燃料管理系统,并在新式双燃料船上成功应用。本文重点介绍系统船舶端的软硬件设计。
船舶燃料管理系统分为监控中心端和船舶端,监控中心端可以对在江面作业的多条船舶进行管理。
船舶端包含ARM11嵌入式终端、网络硬盘录像机和3G路由器,监控中心端包含VPN服务器和监控主机,其中监控主机连接本地数据库。系统的主要功能是利用ARM终端进行燃料信息的采集和发送,监控中心端接收显示船舶端发送来的船舶燃料信息,并将信息存储于数据库以便后续的分析处理,同时,监控中心能够浏览船舶现场的视频信息。
系统采用VPN与电信3G网络相结合的通信方案。通过在监控中心端搭建VPN服务器,就可以让船舶端远程连接到监控中心的内部网络,同时也保证了传输数据的安全性。船舶端传送的每路监控视频的码率为32 kb/s~2 048 kb/s,传送的燃料数据信息码率相对较低。考虑到传输数据量的大小,本系统采用电信3G网络作为视频和燃料数据的传输网络,其最大上行速率达1.8 Mb/s,在对视频的画质要求不是特别高的情况下,可以满足船舶燃料数据和1~4路船舶现场视频的传输带宽要求。
ARM终端以S3C6410处理器为硬件基础,移植嵌入式Linux系统为软件平台,利用终端的RS232口对燃油和LNG二次仪表进行读取,通过ARM终端的与船舶报警继电器相连的GPIO口的状态来获取燃料的安全状态,并通过3G路由器内置的GPS传感器来获得船舶的位置信息,最后将采集的数据信息通过3G网络打包发送到监控中心。
根据船舶的燃料仪表设计,有一个LNG仪表和2个燃油仪表要读取,仪表接口为RS485接口。本设计通过RS485转RS232连接线将仪表与ARM终端进行连接,将ARM终端的3个GPIO口分别连接船舶上的火灾、燃油和LNG异常报警继电器,通过GPIO口的电平状态来判定报警继电器的开关状态,从而确定是否有报警被触发。船舶端软硬件架构和硬件框图分别如图1和图2所示。
图2 船舶端硬件结构框图
将架设在船舶上的网络硬盘录像机作为视频服务器,采集并存储船舶上摄像头的视频信息,这样,监控中心就可以通过访问视频服务器来实时预览或回放船舶端的现场视频。
船舶ARM终端需要完成的具体功能包括船舶的瞬时和累计柴油消耗量、瞬时和累计LNG消耗量、燃料和火灾的报警状态、GPS位置信息的采集,将采集的信息打包发送,以及接收和处理监控中心端发送来的指令等。在采集信息和打包发送数据的同时,有可能需要接收和处理监控中心端的指令。由于系统功能的多任务性,软件采用了基于多线程的设计方式,将各个功能分线程来实现。船舶ARM终端软件采用QT2.2[5]进行设计,并运行于嵌入式Linux系统上。
配置表位于ARM终端文件系统中,主要用于保存船舶的设备信息和网络配置信息等。ARM终端初始化时,软件会从配置表里读取船舶的基本信息(如船名、ID号、各串口的波特率)以及ARM终端的网络信息(如本机IP地址、监控中心端IP地址等)。
利用ARM终端配置telnet服务器,监控中心端可以通过telnet方式远程登录ARM终端来修改配置表,从而修改船舶端的配置。这样的方式为系统调试和维护提供了极大的灵活性和便利性。
本设计通过RS485接口连接多个LNG仪表和燃油表,通过设置不同的仪表地址来区分不同的仪表。
ARM终端软件通过串口读取仪表数据。软件中串口以非阻塞、可读写方式打开。如果是以阻塞方式打开,当读取出现故障时会导致读取线程卡死。为了正确读取数据,必须保证ARM终端的串口属性与仪表串口的属性一致,因此需要设置终端串口的属性,如数据位、奇偶校验位、停止位和串口波特率等,串口属性可以在配置表中读取。串口打开后定时地发送和读取串口数据,从而实现对仪表燃料信息的读取。
3.2.1 读取LNG仪表
LNG仪表与ARM终端之间的通信以ASCII码的十六进制方式来实现。读取累计耗量和瞬时耗量的命令如表1所示,其中#为定界符;AA代表仪表的地址,地址为01~99。仪表设置的地址必须与读取命令中的仪表地址一致。
表1 读取累计耗量和瞬时耗量的命令表
以读取累计值为例,将仪表的地址设为01,则读取命令为#01。将命令加上2位校验核来防止误码,再加上结束符 (回车符),最后从串口发送出去。命令发送后,地址为01的仪表会返回所读取的值,将返回值进行校验后去除校验核和结束符,再进行码值转换后得到实际要读取的值。读取完成后,将读取出来的值显示到嵌入式终端屏幕上并放入发送数据包的相应位置中进行打包。读取LNG仪表串口的流程如图3所示。
3.2.2 读取燃油仪表
图3 读取LNG仪表串口流程图
燃油仪表采用Modbus通信协议进行通信,通过读取仪表的寄存器来获得累计耗量和瞬时耗量。燃油仪表中的累计流量值和瞬时流量值存放在01~06共6个保持寄存器中,Modbus协议相应的读取保持寄存器的命令格式如表2所示。将2块燃油仪表的地址设置成不同值进行区分。发送命令前将待发送的命令数据进行CRC运算,将得出的2 B的CRC校验码加到发送命令的末尾一并发送出去。仪表会对发送命令进行校验并丢弃校验有误的命令。将仪表返回值进行CRC校验以确定返回值的正确性。最后将返回的累计耗量和瞬时耗量显示到终端屏幕上并放入发送数据包的相应位置中。读取燃油仪表串口的流程与LNG仪表类似。
报警线程通过读取ARM终端3个GPIO口的状态来判定报警继电器的开关状态,3个继电器的开关状态分别代表了燃油、火灾、LNG的告警状态。
设计中将这3个GPIO口的操作接口编译为一个驱动模块,并在Linux系统启动时将驱动模块加载进内核,这样就可以将这3个GPIO口当作一个设备来操作。将GPIO口设置为CFG_IN方式,通过读取GPIO口的pin值就可以判断相应继电器的开合状态。
正常状态下,继电器处于断开状态,如果有告警发生,则相应的继电器会被触发闭合,对应的GPIO口电平会被拉高,pin值变为非0。相应的报警号会被置位并写入发送数据包中。由于有3个报警需要读取,每个报警的正常和异常状态可以分别用0和1表示,所以用0~7这8个报警号就可以表示各种报警组合状态。
系统采用的3G路由器内置GPS模块,它能获取船舶所在位置的经纬度信息和精确的UTC时间信息,并能通过网口输出。ARM终端软件通过UDP方式来获取3G路由器输出的GPS信息,将信息中的经度、纬度和UTC时间解析出来,并将UTC时间转换为北京时间,最后放入发送数据包中。
当燃料数据采集好以后,就可以将其打包发送到监控中心。燃料数据的发送格式为:船名/船舶ID号/瞬时LNG流量/瞬时燃油流量/累计LNG耗量/累计燃油耗量/报警号/日期时间/经度/纬度/$,用“/”作为两个数据之间的分隔符,用“$”作为一个数据包的结束符。各分量用字符串表示。
船舶端与监控中心端之间通过TCP方式进行数据传输。船舶端接收监控中心发送的命令,并据此确认采集发送燃料信息的间隔时间。为确保网络连通的稳定性,船舶端每隔5 min向监控中心发送一个特定的连接标志信息“@”,当连续3次发送连接标志信息或燃料信息失败时,软件就重新连接监控中心。船舶端与监控中心数据传输的流程如图4所示。
图4 船舶端与监控中心数据传输流程
船舶内工作环境复杂,可能会对设备的正常运行造成影响。为确保ARM终端设备始终处于运行状态,系统利用终端S3C6410处理器内部的看门狗对嵌入式终端的运行状态进行检测。通过软件开启看门狗并设置喂狗超时时间为15 s,一旦看门狗在喂狗超时时间内没有收到喂狗信号,就复位重启ARM终端设备,这样就保证了船舶端的ARM终端始终处于运行状态。
在监控中心搭建VPN服务器,并在电信3G网络环境下对系统进行测试。
首先配置好船舶端3G路由器并连入3G网络,将船舶ARM终端的数据接收地址设置为监控主机的IP并连接3G路由器,当ARM终端软件连接上监控主机的管理软件后即可进行数据传输。通过监控端软件连接船舶的网络硬盘录像机,还可以浏览船舶上的4路现场视频。在视频格式为CIF格式、视频帧率为25 f/s的条件下进行测试,画质清晰流畅,能达到较好的监控效果。图5为监控端软件中的船舶燃料信息。
图5 监控端燃料数据显示界面
本文针对船舶管理中心对江面作业的双燃料船的燃料管理需要,设计了一个船舶燃料管理系统,采用ARM实现了对双燃料船的燃料使用情况和燃料安全状态的采集。通过结合3G网络和VPN技术,解决了船舶中心与船舶远距离通信的问题,并通过船舶端的视频服务器实现了对船舶现场情况的监控。测试表明,系统稳定可靠,达到了预期效果。本系统还可以在集成度和功能扩展方面做进一步的改进与提升。
[1]王勇,张浩,彭道刚,等.ARM平台在多功能数据采集系统中的设计与实现[J].自动化仪表,2010,31(1):13-16.
[2]张华,吴欣,王大星.基于ARM7的SD卡读写控制在数据采集系统中的应用[J].电子技术应用,2009,35(7):38-41.
[3]张芳,许学忠,梁建斌,等.基于ARM的嵌入式直升机目标识别系统[J].电子技术应用,2009,35(4):31-32.
[4]李建文,章坚武.基于CDMA2000-VPDN的视频监控系统设计[J].单片机与嵌入式系统应用,2011(8):62-65.
[5]贺青,李鹏飞.基于Qt的电脑横机上位机的设计[J].微型机与应用,2012,31(19):16-19.