何凯彦,李维波,许智豪,徐聪,李巍
武汉理工大学自动化学院,湖北武汉430070
随着舰船电力系统电气化水平的不断提高,人们不仅要求供电质量能够满足舰船各设备的需求,还对其可靠性和生命力提出了更高的技术要求。实时通信技术是舰船获取设备信息、实现智能化必不可少的技术手段;决策系统通过通信系统实时获取舰用设备的健康状态和现场工况信息,是其实现正确决策的先决条件。
目前,常规的现场总线通信方式因其带宽窄、实时性差、可靠性不高,已经无法满足综合电力系统“井喷式”增长的信息交换需求[1]。舰船设备工作环境复杂多变,会受到传输距离、现场状况和风浪等诸多因素的影响,从而出现诸如网络堵塞、网线断开、网络接口连接器松动、网络接口硬件电路故障等状况,这将会导致传输通道断开,网络通信的实时性和可靠性降低,甚至造成网络不能正常工作。因此,急需设计出适合船舶内部环境的通信系统,以提高舰船内部信息交换的效率和可靠性[2]。
由于舰船设备更新换代周期较长,很多舰船设备仍然在使用RS-422 串口通信;因此,采用具有连接形式简单、通信距离远、信息传输可靠等优点的RS-422 现场总线技术进行网络化,并将其与可靠性高、实时性强的以太网技术相结合[3],是一种现实的需要。本文将搭建由双以太网与双RS-422架构组成的冗余网络,使系统在发生故障时能切换至备用网络,保障通信的可靠性和安全性。
冗余技术是提高系统可靠性最有效的方法之一,为了保证系统能够稳定可靠的运行,常常配置多个具有同等功能的部件来增加系统的冗余度,并通过一定的逻辑关系使其稳定可靠运行。目前常用的冗余方式有并联冗余和混联冗余[4]。
1)并联冗余。
只有组成系统的所有元件发生故障才会导致系统发生故障,其数学模型为
式中:Rs(t)为系统的可靠度;Ri(t)为第i 个单元的可靠度。由于Ri( )t是个小于1 的值,所以并联的单元越多,可靠性越高。但是,考虑到并联冗余时设备的尺寸、成本和重量等都会成n 倍增加,所以一般取n=2~3。
2)混联冗余。
混联冗余是由串联和并联混合起来的冗余方案,根据连接的先后顺序可以分为串并联冗余和并串联冗余。串并联冗余是将并联的各个单元串接起来,并串联冗余则是将串联的各个单元并联起来,具体情况如图1 所示。
根据混联冗余不同的联接方式,可以推出串并联冗余数学模型的系统统可靠度Rs为
图1 混联冗余架构Fig.1 Hybrid redundant architecture
式中:Rij为第i 行第j 列单元的可靠度,当各单元可靠度都相等,即Rij=R,且m1=m2=…=mn=m 时,
Rs=[1-(1-R)m]n。
同理,可以推出并串联冗余数学模型的系统统可靠度Rs为
当各单元的可靠度都相等,即Rij=R,且n1=n2=…=nm=n 时,Rs=[1-(1-R)n]m。一般来说,在单元相同的情况下,串并联冗余的可靠度要高于并串联冗余的可靠度。
根据以上对冗余方案的对比,本文选择串并联冗余作为冗余实现的基本模型。在考虑通信可靠性、价格和尺寸等各方面影响的情况下,本文在硬件上将通信模块并联后串联在回路中,以此来提高系统的容错能力。
由于舰船设备复杂多样,传输数据量大,并且舰船网络具有特殊性,需要确保数据能够实时可靠地进行传输;因此,系统应采用百兆/千兆以太网自适应进行网络传输。此外,为了保证网络传输的实时性和可靠性,根据行业要求,冗余切换时间不应超过100 ms。
为了实现舰船能量管理系统中以太网与RS-422 的实时通信,构建了基于双CPU 的双以太网与双RS-422 交互通信系统,硬件总体设计框图如图2 所示。该系统主要由2 个以太网控制器、2个RS-422 收发器与2 个CPU 组成。CPU 采用STM32F417ZG,它集成了单周期数字信号处理(Digital Signal Processing ,DSP)指令、168 MHz 时钟频率的浮点单元(Floating Point Unit,FPU)、1 MB 闪存和192 kB 的静态存取存储器(SRAM)。这不仅使数字信号控制器应用和快速产品开发达到了新的水平,而且提升了控制算法的执行速度和代码效率,可以进行一些复杂的计算和控制。集控中心的数据通过以太网传递给控制模块,经控制模块处理后通过RS-422 收发器转发出去。上位机亦可发送相关命令来控制数据的输出。
图2 双以太网与RS-422 交互通信系统的原理框图Fig.2 The principle block diagram of dual Ethernet and dual RS-422 interactive communication system
该系统在双CPU 的基础上实现双以太网与双RS-422 冗余网络,通过增加元件的冗余度来保障通信的可靠性[5]。
双冗余方式能够加强互转通信系统的可靠性。即使网络发生了故障,系统也能继续为用户提供服务。该系统的参数设置灵活、方便,可以快速、平稳、无缝切换,既保证了通信系统的可靠性和快速性,又能适应电磁环境复杂、传输距离较远、通信准确度高的工作场合。
本文以W5500 作为以太网控制器,其内部集成了TCP/IP 协议栈,具有10/100 Mbit/s 以太网网络层及物理层,并且新的高效串行外设接口(Serial Peripheral Interface,SPI)协议能够更好地实现网络通信,为主控制器单元提供更加简易的互联网连接方案,与其他嵌入式以太网方案相比更加方便、快捷。另外,W5500 内部有32 kB 的存储器用于缓存通信数据。用户只需要通过简单的Socket编程就可以实现以太网通信的应用,而不需要处理复杂的以太网控制[6]。
在本文设计中,硬件采用2 个W5500 以太网控制器芯片和2 个STM32F417ZG CPU(一个为主CPU,另一个为备份CPU)。STM32F417ZG 利用3 个SPI 中的任何2 个与外围以太网控制器芯片W5500 进行信息交互,2 个CPU 之间则通过自身的USART 端口进行信息交换。主、备CPU 利用SPI 总线分别与2 个W5500 连接,采用全双工模式使交换机能够同时接收和发送数据,从而构建双以太网冗余通信。在正常工作时,主CPU 承担数据传输任务,2 个W5500 控制器同时接收总线上的数据,并将其中一条通道设置为工作网口,承担主线路的数据传输。当工作通道发生故障时,切换至备份网口完成数据传输。同样,备份CPU 只是对数据进行记录,当主CPU 发生故障时,切换至备份CPU。本文设计的系统将STM32F417ZG 和W5500 控制器的优点集成为一体,大大提高了通信系统的便捷性和可靠性[7]。以太网电路设计框图如图3 所示。
W5500 支持固件TCP/IP 协议,其可通过SPI接口与CPU 非常简单地实现Internet 网络连接。在SPI 通信中,STM32F417ZG 作为主机、W5500 作为从机,系统启动一个主机与从机同步通信。通信时,主机通过SPI 总线的MISO(主入从出)完成数据输入,通过MOSI(主出从入)完成数据输出,从而实现数据的交换[8]。
为了避免对以太网通信的干扰,使其传输距离更远,需要在TX 与RX 处外接网口变压器。该变压器可以实现信号的电平耦合,将芯片端与外部隔离开来,减少芯片端受到的外部干扰,保证芯片能够稳定可靠的运行。
随着计算机技术的快速发展,串口通信技术已非常成熟,RS-422 作为一种典型的串口通信方式,具有传输距离远、连接简单和可靠性高等优势。它是一种典型的差分传输串口通信方式,根据两条传输线之间的电位差值来判断逻辑状态,当两条差分信号线之间的电压差为+2~+6 V 时表示为逻辑“1”,两线之间的电压差为-2~-6 V 时表示为逻辑“0”[9]。由于取消了地线,该通信方式大大降低了信号地线带来的共模干扰。
图3 以太网电路设计框图Fig.3 Ethernet circuit design block diagram
考虑到设计的高效和稳定性,本文采用ADM2587EBRWZ 作为RS-422 的收发器,它是隔离式RS-422 收发器,可配置为半双工或全双工。以其中一路CPU 接线为例,RS-422 串行通信的电路如图4 所示。图中,ADM2587EBRWZ 采用ADI公司的iCoupler 技术,使用5 V 单电源供电,在器件内部集成了三通道隔离器、三态差分线路驱动器(Y,Z)、差分输入接收器(A,B)和isoPower DC/DC 转换器,从而实现了完全集成的信号与电源隔离的RS-422 解决方案[10]。利用STM32F417ZG 中的通用输入输出口(GPIO)复用串口功能,系统能够实现多路串口的控制,具有简单方便的特点。
由于通信的一方是高速率的以太网,另一方是速率较低的串口,为了保证两者通信的可靠性,需要设置一段数据缓冲区。接收到的以太网数据都会先放在缓冲区。在对以太网数据帧进行解析,读取外部数据数量、缓冲中数据的起始地址和外部缓冲区中的数据后,CPU 计算最新的偏移地址并将其写入寄存器。如果外部数据量超出发送缓冲区容量,则需要分两次写入,以避免缓冲区溢出。同时,判断是否有串口接收中断,如果有,则启动数据发送,将缓冲区的数据按照串口数据帧格式进行数据传输。同理,在串口向以太网转发数据时,需将串口接收到的数据拆分解析后放入缓冲区,然后再按照TCP/IP 协议对数据进行封装,并将封装好的数据通过网口发送出去。
在本系统中,2 个CPU 采用冗余备份的方式完成数据通信。默认CPU1 为主控制器,CPU2 为备份控制器,并对2 个网口和串口都进行初始化,2 个CPU 模块根据自检的结果判断是否需要被接管。正常情况下,CPU1 模块输出控制信号。当CPU1 模块出现故障时,CPU1 模块向CPU2 模块发送接管控制信号,同时CPU1 停止输出。如果CPU2 模块也出现故障,则2 个CPU 模块都停止输出控制信号使其不能被接管,并报设备故障,从而防止因为故障输出错误的信号,影响系统安全。具体冗余切换控制策略如图5 所示。
图5 双CPU 冗余实现流程Fig.5 Redundant implementation process of dual CPU
在以太网通信过程中,CPU 在每次主循环中都会从状态寄存器读取状态字并写入相应的寄存器,利用W5500 的Socket 套接字操作相关函数,将套接字状态寄存器Sn_SR(s)中的状态字返回给CPU,从而确定网口的工作状态。正常通信时,CPU读取外部缓存数据并计算偏移地址完成数据接收命令;当出现网络连接超时、网口断开等状态时,会触发中断产生,此时网口1 的故障状态标志位Net1_Status_Flag 置1,切换至网口2 进行数据传输。只有当网口1 重新连接时才会将故障标志位清零,使其处于备份通信状态;此时如果网口2 也发生故障,则将网口2 的故障标志位Net2_Status_Flag 置1,切换至网口1 进行通信。如果检测到2路故障标志位都为1,则报设备故障,故障灯亮起。以太网切换流程如图6 所示。
图6 以太网冗余实现流程Fig.6 Redundant implementation process of Ethernet
要实现RS-422 串行通信,首先需要对串口进行初始化,包括引脚、时钟、数据区、波特率和数据位等的初始化。利用RS422_Init_Port(BaudRate)函数可以完成对波特率、数据位和停止位等相关参数的配置。在串行通信过程中,主机主动向2 条RS-422 总线发送链路检测帧,下位机在接收到主机发送的检测帧后,返回确认信息。同时,主机将要发送的数据打包成帧数据,下位机在接收到用户数据后,将数据帧进行解析,从而判断数据是否接收完全、数据传输是否正确,并根据数据帧携带的功能码做出响应。主机在接收到下位机的响应后优先对一条总线上的数据进行处理。如果在通信过程中发生通信故障,就处理另一条总线的数据,完成总线的切换,并提示报警。具体实现流程如图7 所示。
图7 RS-422 冗余实现流程Fig.7 Redundant implementation process of RS-422
为了验证系统的功能,本文采用外接PC 机来模拟上位机与底层设备通信。在测试装置中,将2 个网口设置为同一个IP,并采用用户数据报协议(User Datagram Protocol,UDP)模式进行传输。当其中一个网口断开时,另一个网口响应连接。具体测试环境如图8 所示。
为了对冗余切换进行验证,除状态指示灯外,
图8 测试环境Fig.8 Testing environment
在冗余切换时可以通过测试帧帧头的不同来更加直观地验证冗余通信策略能否完成。本文利用调试助手来发送数据,并读取回传的数据以测试功能是否实现。网口1 和串口1 的测试帧帧头分别为0x03 和0x5A。当网口1 发生故障时,将网口1的故障状态标志位置1,切换至网口2 进行数据传输并且测试帧帧头由0x03 变为0x06,此时网口1的状态指示灯熄灭,网口2 的状态指示灯点亮,将网口1 重新连接后,网口2 仍然作为主通路进行通信,网口1作为备用通路;若将网口2断开,则网口2的故障标志位置1,网口1 的测试帧帧头又变为0x03,此时,网口1 作为主通路进行通信,网口2 的状态指示灯熄灭,网口1 的指示灯点亮。具体测试结果如图9 所示。结果表明,网口的冗余切换能够实现。
同样,设置好串口调试助手的相关参数,包括波特率、校验、数据位和停止位。根据设计要求,串口波特率设置为19.2 kbit/s,采用奇校验,8 位数据位和1 位停止位。根据协议内容检测输出的数据是否正确。为了检测RS-422 通信部分也能进行冗余切换,默认串口1 为数据传输的工作通道,当串口1 发生故障时,将串口1 的故障状态标志位置1,串口测试帧帧头由0x5A 变为0x6A,并切换至串口2 进行数据传输。此时,串口1 的状态指示灯熄灭,串口2 的状态指示灯点亮。将串口1 重新连接,串口2 仍然作为主通路进行通信。只有串口2 断开连接时才会重新切换至串口1,测试帧帧头又变为0x5A。RS-422收发器得到的数据如图10所示。结果表明,串口的冗余切换能够实现。
图9 以太网冗余测试结果Fig.9 Redundanct test results of Ethernet
图10 RS-422 冗余测试结果Fig.10 Redundant test results of RS-422
为了验证该装置的可靠性,通过模拟不同工况下出现的故障来对冗余功能进行测试。工程化验证包括双CPU 冗余验证、以太网部分冗余验证和RS-422 部分冗余验证。具体故障模式的测试结果如表1~表3 所示。
现场环境下的反复测试表明:该装置能够满足冗余切换时间不超过100 ms 的系统设计要求;基本无丢包现象,且丢包对数据通信不会造成影响;其他各方面指标也均满足设计要求。
表1 双CPU 故障测试结果Table 1 Fault test results of dual CPU
表2 双以太网故障测试结果Table 2 Fault test results of dual Ethernet
表3 双RS-422 故障测试结果Table 3 Fault test results of dual RS-422
本文构建了基于双CPU 的双以太网与双RS-422 交互通信系统,在硬件设计上采用双隔离与双冗余,再通过软件实现冗余切换功能来保证系统与外界设备通信时的数据传输。模拟测试结果表明,该通信系统能够及时地切换到备用网络,确保信息在现场环境传输的实时性。该通信系统既能保证通信的可靠性和快速性,又能适应电磁环境复杂、传输距离较远、通信准确度高的工作场合,具有较高的抗干扰能力。