1、第 40 卷第 3 期计算机应用与软件Vol.40 No 32023 年 3 月Computer Applications and SoftwareMar 2023机舱综合网关控制器的设计与实现王萌萌曹辉林建宝孙泽(大连海事大学轮机工程学院辽宁 大连 116026)收稿日期:2020 07 03。工信部装函“智能船舶综合测试与验证研究”资助项目(2018 473 号);2018 年度辽宁省普通高等教育本科教学改革研究项目。王萌萌,硕士生,主研领域:轮机自动化与智能化。曹辉,副教授。林建宝,硕士生。孙泽,硕士生。摘要针对机舱中各设备采用的组网方式不同、信息共享度低、各设备间配合性差等缺点,设计一
2、种支持S-485 串行通信网络、CAN 总线网、Ethernet 网任意两种网络互连的综合网关控制器。基于 STM32F767IGT6 微处理器设计了包括三种通信接口的方案,并基于 C/OS-III 嵌入式操作系统编写了各通信接口驱动程序和多协议转换应用程序。实验结果表明,该综合网关控制器实现了三种通信协议转换,通信质量稳定可靠,协议转换速率为 75 KB/s。关键词机舱CAN 总线以太网S-485C/OS-III 操作系统网关控制器中图分类号TP3文献标志码ADOI:10 3969/j issn 1000-386x 2023 03 029THE DESIGN AND IMPLEMENTATI
3、ON OF INTEGATED GATEWAY CONTOLLEIN ENGINE OOMWang MengmengCao HuiLin JianbaoSun Ze(College of Marine Engineering,Dalian Maritime University,Dalian 116026,Liaoning,China)AbstractFor the shortcomings of different networking methods adopted,the low degree of information sharing andthe poor cooperation
4、between the equipment in the engine room,an integrated gateway controller supporting any twokinds of network interconnection of S-485 serial network,CAN bus,and Ethernet is designedBased on theSTM32F767IGT6 microprocessor,a scheme including three communication interfaces were designed,and eachcommun
5、ication interface driver and multi-protocol conversion program were written based on the C/OS-III embeddedoperating system The test results show that the integrated gateway controller implements three communication protocolconversion,the communication quality is stable and reliable,and the protocol
6、conversion rate is 70 KB/sKeywordsEngine roomCAN busEthernetS-485C/OS-III OSGateway controller0引言随着计算机技术和网络技术在机舱中的广泛应用,机舱自动化的水平逐渐提高,正向信息集中、信息共享、综合管理方向发展1。然而,机舱中设备繁多,采用的组网方式不同,各设备间具有相互独立性,这不利于机舱中各设备的互联和信息共享2。因此有必要对机舱网关进行研究与设计,实现机舱各设备间信息传递和共享。目前,国外具有代表性的 KONGSBEG 公司 K-Chief500 和 CAE 公司的 IBSC 系统,采用开放式的
7、网络,实现了异构网络之间信息共享3。美国海军提出ICAN 舰载系统,支持多种协议转换,简化了系统的同时提高了效率4。国内的机舱设备供应商能够提供船舶主推进系统、辅机系统、电站监控系统、机舱监视与报警系统、火灾监控系统等自动化产品,但是它们之间配合性差,难以达到信息共享、综合管理的状态5。针对这一问题,本文开发了异构网络综合网关控制器,构建覆盖了机舱的主要设备网络通信,从而实现机舱各第 3 期王萌萌,等:机舱综合网关控制器的设计与实现189设备系统的信息共享。1综合网关控制器的总体设计机舱中的设备采用的通信方式主要有三种,分别是 S-485 串行通信总线、CAN 总线、Ethernet 网。其中
8、:CAN 总线因实时性好、抗干扰性强、成本低等优点,在机舱的现场应用最为广泛6;S-485 串行通信总线出现的时间早、实现简单且可靠,在机舱中也具有一定的应用;以太网组网方式简单,具有能够传输大容量数据等优点,一般用于在机舱的上层监控7。综合网关控制器作为机舱各设备系统的桥梁,其主要作用是实现 TCP/IP 协议、CAN 总线协议、S-485 串口协议两两之间相互转换。综合网关控制器总体结构如图 1 所示,主要包括两部分:硬件层和软件层8。硬件层主要包含 S-485 串行通信接口、CAN 总线接口、以太网接口和 STM32F767IGT6 微处理器等。软件层主要由各通信接口驱动程序、C/OS-
9、III 嵌入式操作系统、多协议转换应用程序三部分组成。图 1综合网关控制器总体结构2综合网关控制器接口方案设计综合网关控制器接口方案设计如图 2 所示,主要包括 Ethernet 网接口电路、双 CAN 冗余接口电路、S-485 串行通信接口电路,各接口电路均采用隔离模块作为保护措施。主控芯片选用基于 AM Cortex-M7 架构的 STM32F767IGT6 微处理器作为逻辑控制单元,其内嵌了1 MB Flash 和512 KB AM 足以满足 C/OS-III嵌入式操作系统移植和搭建。另外,其内部还集成了丰富的外设,如 3 路 CAN 控制器、6 路 SPI 总线、4 路IIC 总线、8
10、 路串口等,简化了外围电路的设计,并提高了硬件电路的抗干扰能力9。图 2综合网关控制器接口方案设计图Ethernet 网接口电路,采用微处理器+W5500+网络变压器+J45 的连接形式。W5500 是一款嵌入式以太网控制器,其内部不仅集成了固件 TCP/IP 协议栈,支持 TCP、UDP 等协议,而且还内嵌了 10/100Mbit/s 以太网数据链路层(DL)和物理子层(PHY),这两个子层构成介质访问控制层(MAC),在设计中只需要通过带有网络变压器的 J45 就可以和 Ethernet 网连接10。此外,W5500 内嵌了 16 KB 发送和16 KB 接收的缓存区用于存放以太网数据包。
11、微处理器和 W5500 连接如图 3 所示,W5500 支持串行 SPI 总线和微处理器连接,此连接方式只需要 4个通用输入输出口(GPIO)引脚便可实现数据通信。这四个 GPIO 引脚分别为从机选择 SCS、时钟 SCLK、主机输出从机输入 MOSI、主机输入从机输出 MISO。另外,还配置了一个 GPIO 作为 W5500 的复位引脚,一个外部中断引脚来响应 W5000 的中断。在 SPI 总线通信中,微处理器作为主机,W5500 为从机,时钟 SCLK提供主机与从机同步节拍,主机通过 MISO 引脚实现数据的输入,通过 MOSI 引脚实现数据的输出,从而完成数据的交换11。图 3微处理器
12、和 W5500 连接图CAN 接口电路,采用双 CAN 总线冗余设计12。具体的方案是:采用两套完全相同的微处理器内嵌的CAN 控制器+数字隔离芯片 AduM1201+CAN 收发器TAJA1050。在正常工作时,两个 CAN 通道的初始化设置相同,一路为工作通道,另一路为备用通道,当工作190计算机应用与软件2023 年通道发生故障时,备用通道切换为工作通道,并对故障通道进行软复位,使其恢复正常。S-485 接口采用了磁隔离技术,隔离电压达到了2 500 V,具有非常强的抗干扰能力。选用 ANALOG-DEVICES 公司生产的带隔离增强型 ADM2483BW 作为 S-485 的收发器。利
13、用微处理器 STM32F767IGT的通用输入输出口(GPIO)复用为异步串口功能,对S-485 串口进行控制,具有简单方便等优点。3综合网关控制器的软件设计以集成开发环境 Keil5 为软件开发平台,基于嵌入式操作系统 C/OS-III 利用 C 语言编写外设接口驱动程序和多协议转换程序。C/OS-III 是一个可剥夺的多任务操作系统,能够将多协议转换程序分割成多个简单任务,简化了程序编写,便于程序的维护13。3 1各通信接口驱动程序设计(1)Ethernet 网通信接口驱动程序。由于 W5500以太网通信芯片内嵌了全硬件 TCP/IP 协议栈,以太网帧的封装和解析都是由硬件 TCP/IP
14、协议来完成,不需要对 TCP/IP 协议代码编写,只需要 SPI 总线对 W5500的端口(Socket)简单配置。考虑到综合网关对数据的实时性要求高,选用 UDP 通信方式。UDP 通信程序主要由 UDP 端口初始化程序、UDP 数据发送程序和 UDP数据接收程序组成。UDP 初始化程序主要设置本地IP 地址、目标 IP 地址、本地端口、目标端口、MAC 地址、子网掩码等。UDP 数据收发流程如图4 所示,UDP 数据收发处理机制是相同的,都是对 W5500 芯片的接收数据缓存区或者发送数据缓存区进行数据的读写操作。图 4UDP 数据收发流程(2)CAN 通信接口驱动程序。在 CAN 通信程
15、序设计中,首先对微处理器内置的 CAN 控制器初始化,主要完成波特率的设置、CAN 工作模式的选择、滤波器的配置和开启 CAN 数据接收中断。初始化完成后,CAN 控制器会自动对 CAN 数据帧进行封装和解包,在数据接收过程中,通过中断服务来实现 CAN 数据接收寄存器的读取操作,在发送时,将数据直接写入发送寄存器实现数据的发送。由于采用了双 CAN 冗余设计,发生故障时 CAN 通道需要切换,CAN 通道切换机制如图 5 所示。图 5CAN 通道切换机制步骤 1CAN 控制器初始化后,CAN 通道处于正常工作状态下。步骤 2CAN 通道故障检测。根据 CAN 控制器的接收或发送错计数值判断是
16、否发生故障,当接收或错误计数值累加到大于 96 判定该通道发生故障14。步骤 3备用通道检测。根据通道标志位来判定,1 表示通道正常,0 表示通道异常。当备用通道标记为 1 时,将备用通道设置为工作通道,当前通道设置为备用通道。步骤 4在新的工作通道发送切换帧,通知 CAN总线上的其他设备节点进行通道切换,切换到备用CAN 总线。步骤 5通道修复。通过 CAN 控制器软复位,复第 3 期王萌萌,等:机舱综合网关控制器的设计与实现191位成功后将备用通道标记为正常。(3)S-485 串行通信接口驱动程序。S-485 驱动程序实质上是微处理器的异步串口的驱动,主要由初始化程序和收发程序组成。初始化主要设置串口波特率、起始位、校验位、数据位、停止位和开启串口数据接收中断。收发程序采用 FIFO 缓冲器来协调微处理的高速并行数据和低速串行数据,FIFO 缓冲器设置为10 个字节。在发送过程中,发送 FIFO 缓冲器被写入将发送的数据,根据先进先出的原则,将 FIFO 数据存入移位寄存器,通过 S-485 数据线串行发送出去。在数据接收时,数据线上的串行数据经移位寄存器转换为并行数据,存入接收