电子技术、计算机技术、网络技术在船舶中的广泛应用,加快了船舶自动化的进程,船舶自动化系统正在向船舶信息集成化方向发展—船舶综合信息平台管理系统(IPMS)[1]。船舶主推进系统、电站及电能管理系统、辅机系统、损管系统、船桥系统或设备都实现了智能化,但是不同的系统采用的组网方式不同,数据传输格式与协议不同,各系统间具有独立性,无法实现全船联网与数据共享[2]。船舶集成平台管理系统中上层网传输数据量大,一般采用以太网,现场层数据传输实时性要好,一般采用现场总线网或 RS485 串口网络,本文针对某型船,开发 Ethernet、CAN 现场总线及 RS485 串口综合网关,实现了 3 种网络的联网,采用嵌入式系统保证数据的实时性,CAN 网络和以太网分别采用双冗余设计,保证了系统的可靠性,满足船舶各系统及船舶集成平台间的网络互连,实现数据共享的要求[3]。
1 船舶综合信息平台网络结构及工作原理图 1 为某型船综合信息平台网络结构图。主要包括系统或设备通信节点、Ethernet、CAN 总线、RS485 串行总线和船舶网络综合网关。系统或设备通信节点包括船舶主推进系统、AIS 自动识别系统、视屏监控系统、主推进系统、模拟操作系统、船桥系统等,所有设备通信节点通过 Ethernet、CAN 总线或 RS485 串行总线挂接到船舶网络综合网关上[4]。船舶网络综合网关实现不同设备通信节点的协议转换与通讯连接,将船舶所有系统连接到统一的平台之上,实现了全船网络信息共享,使各系统协调配合工作,加强了船舶自身的安全性能。
船舶网络综合网关硬件结构如图 2 所示。主要包括以太网接口电路、CAN 接口电路及 RS485 接口电路。各接口电路均采取了相应的隔离与保护措施[5]。
1)以太网接口电路。采用含有以太网控制器的微处理器 + 网络变压器 + RJ45 的形式,W7100A 网络微处理器内嵌全硬件的 TCP/IP 协议栈,支持 TCP,UDP 等硬件协议,内部集成 PHY 物理接口收发器,设计中只需要通过带网络变压器的 RJ45 接口便可以与 10/100 M 以太网连接。
2)CAN 接口电路。采用双冗余的 CAN 总线结构,具体方案为:采用 2 套总线控制器 SJA1000 和 CAN 收发器 82C250。正常工作时,2 套控制器的初始化设置完全一致,两路上传送相同的数据,当一路出现故障时,另外一路能正常传送数据,不影响正常的通信,同时 CPU 对故障总线的控制器重新进行初始化,使其恢复正常。
3)RS485 接口电路。RS485 收发器选用 MAX3485,硬件电路设计中采用了瞬态抑制二极管进行过压保护。
3 船舶网络综合网关软件设计为提高数据传输的实时性,如图 3 所示,整个软件系统基于嵌入式操作系统 μC/OS-Ⅱ 利用 C 语言进行开发,主要包括各接口的硬件驱动及协议转换程序。由于移植了多任务嵌入式操作系统μC/OS-Ⅱ,程序设计时只需将协议转换程序划分为几个任务然后分别编写实现代码即可,简化了开发流程,便于程序维护。在 μC/OS-Ⅱ 系统滴答函数 OSTimeTick()中调用了时钟节拍钩子函数 OSTimTickHook(),用来实现网关模块的运行状态指示,若运行指示灯不闪烁表明网关死机[6]。
1)以太网接口驱动程序设计
由于 W7100A 网络微处理器内嵌了全硬件的 TCP/IP 协议栈,并且支持 UDP 和 TCP 两种工作方式,数据通信的出栈和进栈以及以太网帧的封装和解包等以太网数据处理过程全都在硬件 TCP/IP 协议栈中完成。故在该部分程序的设计中不需要 TCP/IP 协议集代码的编写,只需要进行比较简单的网络端口(Socket)编程即可。本系统数据传输的实时性要求较高,故采用的是 UDP 通信方式。
2)CAN 接口驱动程序设计
CAN 通信程序主要包括:初始化程序、CAN 数据发送程序及CAN 数据接收程序几部分。初始化程序主要完成波特率的设置、控制器 CAN 模式的选择、中断的开启及配置验收滤波器等。CAN 控制器 SJA1000 会自动完成 CAN 数据报帧的封装与拆包,用户编写的收发程序只需完成对 SJA1000 数据寄存器的读写。
3)RS485 接口驱动程序设计。
RS485 数据收发程序实质上是微处理器 UART 的数据收发。串口驱动程序主要包括串口初始化和串口收发程序。初始化程序主要完成串口的通讯波特率、停止位、校验位及收发中断等参数的配置。串口收发程序采用中断的方式完成,即在串口中断服务程序中完成函数的收发,对数据缓冲区的读写。
3.2 协议转换程序任务划分及任务之间的通信与同步设计各通信接口的驱动程序已经实现了各总线数据帧的收发功能。在协议转换程序开发中主要完成的是数据的读写和帧格式的转换。如图 4 为协议转换程序流程图,划分了 CanData_T_Task、TCPData_T_Task 和 URTData_T_Task 三个协议转换与发送任务,分别将接收到的数据封装成 CAN 报文、以太网帧和串口数据帧格式并将其发送出去,各接口数据的接收全部在各自的中断服务程序中完成。此外,还设计了一个网关模块的以太网参数配置任务 SetPrameter_Task,用于配置 IP 地址,端口号及 MAC 地址等参数。系统的起始任务 Gateway_Start_Task 主要是完成上述帧格式封装与发送任务以及以太网参数配置任务的创建与激活、W7100A 初始化、各通信接口的参数配置以及系统节拍的开启。起始任务完成上述工作后便调用任务挂起函数 OSTaskSuspend(OS_PRIO_SELF)将自身挂起不再运行[7]。
任务设计中将 CanData_T_Task 优先级设为最高为 3,其次 TCPData_T_Task 优先级为 4,最后 URTData_T_Task 优先级为 5。系统的起始任务优先级为 0,运行后将自身挂起进入睡眠状态不再运行。
任务设计中使用了信号量进行中断程序与任务之间的同步与通信。数据转发任务同步机制如图 5 所示。定义数据的第一字节标志数据流向。例如当接收以太网 UDP 数据报时,00 表示接收到的是以太网参数配置命令,此时调用函数 OSSemPost()发送信号量 SetPrameter_sem,以太网参数配置任务使用 OSSemPend()获得信号量 SetPrameter_sem 后被唤醒,执行参数配置程序;FF 表示要将以太网数据发送到 CAN 总线,此时将有效的以太网数据写入数据缓冲区,并发送信号量 CanTx_sem,同样 CAN 数据帧封装与转换任务被唤醒,将以太网数据帧封装成 CAN 数据报并发送到 CAN 总线上。
船舶网络综合网关通信协议设计主要是基于应用层的协议设计,CAN、Ethernet 和 RS485 采用统一的协议格式。CAN 协议采用 2.0B 版本的 29 位标识符的扩展帧格式,加上 3 位标识符正好为 4 个字节,再加上 CAN 标准协议格式中的 8 个数据字节正好为 12 个字节(见表 1),各通信方式均采用 12 个有效字节。其中第 1 个字节标志数据要传输到何种网络(11 代表 RS485,FF 代表 CAN 总线,F1 代表以太网),第 2 字节为设备或系统标识码,第 3~12 字节为具体的数据。
船舶网络综合网关具有以太网冗余功能,使用该设备构建的网络具有很高的可靠性和自愈能力[8]。
要实现以太网冗余,需要 2 个或 2 个以上的网关模块配合使用,并且都工作在 UDP 工作模式下,其他网络参数设置要保持完全相同。综合网关通过控制其内部继电器的开启和闭合来控制后续设备的上电和下电,最终实现以太网的冗余。要使用网关模块的以太网冗余功能,需要按照图 6 所示的连接方式供电。
以太网冗余功能的实现流程如图 7 所示,给系统上电后,默认情况下网关模块会打开开关(继电器),防止对后续的模块供电,随后综合网关就开始自动检测网络是否连接正常,如果检测到网络连接正常,就会维持继电器的打开状态,不对后续的模块供电。否则就会闭合继电器,对后续的模块供电,启用后续的模块。同时,还会定期检测网络连接是否恢复,如果网络恢复连接,就打开继电器,切断后续模块的电源,启用本设备。
随着船舶自动化技术的不断进步,船舶自动化产品进一步向数字化与网络化发展,构造网络集成的船舶综合信息平台己成为一种必然趋势,实现船舶所有系统网络化及信息共享是现代船舶网络发展的需要。本文针对某型船网络结构形式,采用嵌入式 W7100A 网络微处理器 + SJA1000CAN 控制器形式,基于 μC/OS-Ⅱ 嵌入式操作系统的方案开发的以太网、CAN 与串口协议转换器在某型船的应用能够实现 3 种网络的互连,实现船舶各系统或设备之间数据共享,具有很高的实时性,双冗余的网络结构确保了综合信息平台的可靠性。
[1] |
任悦琴, 徐慧. 舰船综合平台管理系统[J]. 舰船科学技术 , 2005, 27 (6) :105–108.
REN Yue-qin, XU Hui. Development of integrated platform management system[J]. Ship Science and Technology , 2005, 27 (6) :105–108. |
[2] |
夏学知, 吴向军, 张子鹤. 船舶一体化网络系统技术研究[J]. 船舶工程 , 2005, 27 (2) :54–57.
XIA Xue-zhi, WU Xiang-jun, ZHANG Zi-he. Research on ship borne integrated network system[J]. Ship Engineering , 2005, 27 (2) :54–57. |
[3] |
周震, 雷志广. 基于Ethernet的冗余CAN总线协议转换器设计[J]. 计算机技术与发展 , 2013, 23 (3) :249–253.
ZHOU Zhen, LEI Zhi-guang. Design of CAN Bus protocol convertor based on Ethernet[J]. Computer Technology and Development , 2013, 23 (3) :249–253. |
[4] |
冯亮. 信息技术下的舰船动力设备综合性能研究[J]. 舰船科学技术 , 2014, 36 (12) :62–65.
FENG Liang. Research of control strategy for source converter in integrated ship power system[J]. Ship Science and Technology , 2014, 36 (12) :62–65. |
[5] |
吴向军. 舰船综合平台管理系统网络通信与集成技术研究[J]. 舰船电子工程 , 2005, 25 (5) :47–51.
WU Xiang-jun. Researches on network and integration technology of ship's integrated platform management system[J]. Ship Electronic Engineering , 2005, 25 (5) :47–51. |
[6] |
段新, 褚健, 施一明. 船舶综合数字信息系统研究与探讨[J]. 中国造船 , 2010, 51 (1) :183–190.
DUAN Xin, CHU Jian, SHI Yi-ming. Research and discussion on integrated digital information system for ship[J]. Shipbuilding of China , 2010, 51 (1) :183–190. |
[7] |
万军, 陈凯华. 船舶导航信息系统接口设计[J]. 舰船科学技术 , 2015, 37 (1) :204–208.
WAN Jun, CHEN Kai-hua. Research and design of interface in marine navigation information system[J]. Ship Science and Technology , 2015, 37 (1) :204–208. |
[8] |
赵德福. 基于云计算的船舶动态监控系统设计[J]. 舰船科学技术 , 2014, 36 (12) :120–123.
ZHAO De-fu. Ship dynamic monitoring system design based on cloud computing[J]. Ship Science and Technology , 2014, 36 (12) :120–123. |