2.4 CAN通信参数设计
通信模块是实现船舶采集数据的发送和接收,运用CAN总线技术来完成。采用一主多从的工作方式,工控机具有总线的控制权,可向从站发送、获取信息。各个从站都挂接在现场总线上,能够实时接收指令和上报现场工作状况。
CAN控制器收到上位机的请求命令,就对该命令做出响应,将请求的航行信息发送到指定的地址。其中多数信息以应答形式进行发送,个别信息,如即时船位报文、心跳信息等,是由系统自动定时方式发送。发送方式和地址可以事先设定,也可由主站随时修改。主从站之间传输和运行数据的读取均以PDO方式完成。
上位机和下位机的数据通信由表2所示的PDO映射决定。通信参数主要包括CANopen设备的通信参数,RPDOs、TPDOs的通信及映射参数。每个映射参数子索引都包含表2所示的各部分。子索引0的值表示有3个对象映射到PDO中。子索引1开始为映射的数据对象。每个子索引包含4个字节。例如值0x64010110前两个字节表示数据对象的索引值,第三个字节表示数据对象的子索引值,最后一个字节表示数据对象的长度,10表示由16位组成。
表2 PDO对象映射 子索引 值 0 3 1 0x64010110 (控制船舱压力) 2 0x62200110 (控制船舱液位) 3 0x60200208 (控制船舱温度) …… …… 3 系统软件设计
整个系统的软件设计包括船舶采集模块、上位机监控模块、以及CAN通信模块的软件设计。上位机监控软件程序主要完成数据显示、分析、报警信息、回放、存储、数据报表打印等功能。利用虚拟仪器Labview中已经封装好的API能够便利地进行各个模块的开发,人机界面友好,有较强的模块性和可移植性。
3.1船舶采集模块
采集模块中微处理器软件采用自顶向下的程序设计思想,使用C语言和汇编语言混合编写,其主程序流程图如图4所示。
具体工作流程为:上电开始后,微处理器负责CAN控制器和I/O通道的初始化,通过内部A/D模块采集船舶数据,数据采集的间隔时间由定时器来完成,即在定时器中断到来时才读取A/D转换采集得到的数据。如果得到数据则设置一个标志位通知CPU已经输出数字量和模拟量信息,并将数据传送给CAN 控制器。将常用的 I/O输入输出功能即 A I、AO、D I、DO功能全部集成到从站上,用以模拟现场应用环境[5],并可根据需要从 CAN 总线接受命令和控制参数,把采集计算结果传输到 CAN总线上,达到集中监控、分散处理的目的。
利用CANopen协议,传送PDO数据前要用SDO来设置从站的PDO,而在整个主站与从站的数据交换过程中,随时都可以使用SDO灵活读取或写入任何索引数据[6]。
3.2上位机监控模块
上位机监控系统软件主要包括以下几个模块:数据显示模块、数据处理模块、报警模块、报表打印模块、退出模块等。监控系统的主界面如图5所示。
图4采集模块流程图
(1)数据采集显示模块:按照用户的设定的采样率,对船舶中主要设备参数进行多通道实时采集并在主界面上显示。
(2)数据处理模块:将采集到的模拟量、数字量信息以及音频信息做例如滤波、FFT、时域、频域分析等处理,以及时预测和了解船舶航行的状态和受周围环境影响的程度。
(3)报警模块:当采样数据超越设定极限时,发出声光等报警,LED灯闪烁,提醒现场工作人员进行调查,排除故障。
(4)报表打印模块:可按照监控人员要求保存某一时刻采集的实时数据或者历时数据,制作成报表形式,存档以备日后使用。
(5)退出模块:点击退出按钮,退出监控界面,返回操作系统。
图5 监控系统主界面
3.3 CAN通信软件实现
(1)初始化
系统初始化包括对CAN端口的属性设置及发送接收报文的初始化。CAN端口设置包括对波特率,端口号,节点的设置。对于高速CAN卡波特率一般选择125K/bs。报文初始化包括对PDO的类型,地址分配符,缓冲区大小、PDO的传输方式等设置[5-6]。初始化前面板如图6所示。
图6 初始化前面版
(2)发送、接收子程序
发送与接收程序中,PDO传送的类型要对应起来,为相应的TPDOx和RPDOx,分别调用了CANopen write.vi和CANopen read.vi来实现通信。循环内是将缓冲区内的数据进行转换,最后停止远程请求模式,关闭PDO报文传输和CAN通信设备。具体程序如图6所示。
图7 (a) 发送子程序
图7(b) 接收子程序
4 结语
本文设计了以CANopen为应用层通信协议的船舶监控系统,主要完成了对船舱液位和压力的实时采集、通信及监控,保证了船舶行驶过程中的安全性。将现场总线技术运用于船舶工业中,提高了数据传递的实时性和可靠性,为进一步提高船舶工业的自动化水平奠定基础。
参考文献:
[1]CAN in Automation. CiA Draft Standard 301,Version 4.02,2002.
[2]邓遵义,宁祎. 基于CANopen 协议的主节点通讯实现[J].微计算机信息,2008(24): 54-56.
[3]车海宁.船舶机舱监测系统设计[J].2008(37):50-52.
[4]韩建锋,陈星. 嵌入式船舶数据采集与监控系统[J].仪表技术与传感器,2008(8):61-62.
[5]曾胜斌,林少芬,江小霞等.基于LabVIEW船舶变频液压舵机测控系统的设计与实现[J].机电技术,2009增刊:93-95.
[6] MadalinStefanVlad,Valentin Sgarciu. Distance ProcessMonitoring Using LabVIEW Environment[A].Automation,QualityandTesting,Robotics (AQTR) , IEEE International Conference on[C]. 2006 :214 - 219.