基于字节流数据包的舰船控制系统数据交互技术
2021-04-12张东京吴国庆潘广善从曙光
张东京,吴国庆,潘广善,从曙光,张 震
(中国船舶科学研究中心深海载入装备国家重点实验室,江苏无锡214082)
0 引 言
随着IT技术的发展,舰船控制系统通过PLC+Labview采用开放式用户通信TCP协议,将机电控制和信息管理有机的结合,形成管理和控制一体化系统。PLC是专为在工业环境下应用而设计的数字运算操作电子系统,通过数字式或模拟式的输入输出来控制各种类型的机电设备或生产过程,具有可靠性高、抗干扰能力强等特点。而Labview拥有可视化开发环境,集成了工程师和科学家快速构建各种应用所需的所有工具,为用户提供简明、直观、易用的图形编程方式。TCP在PLC和Labview人机接口之间提供全双工、面向连接、可靠安全的连接服务,相比于OPC数据访问标准[1],TCP基于字节流数据包进行数据传输,保证了数据结构的灵活性[2]。然而,在舰船机电系统中集中控制器PLC和人机接口Labview需要交互的数据结构存在不确定性,导致系统通信接口程序复杂、难以扩展。为此,本文致力于研究并设计通用的数据包模型和通信接口程序。
1 数据包模型
舰船机电系统主要由动力控制系统、电力管理系统、自动损管系统和辅机控制系统组成[3],PLC作为输入输出接口,采集机电系统设备状态信息和发出控制指令,舰船机电系统输入输出变量可归纳为数字量输入DI、数字量输出DO、模拟量输入AI、模拟量输出AO、浮点数输入FI和浮点数输出FO,其中数字量占用1个二进制位,模拟量一般占用16个二进制位,浮点数一般占用32个二进制位。
TCP协议以字节流数据包的方式发送和接收数据。鉴于此,PLC发送数据包为一维数组Bytea[x],x为发送数据包的长度。PLC接收的数据包为一维数组y为接收数据包的长度。其中:k为数字量输入数;l为数字量输出数;i为模拟量输入数;j为模拟量输出数;m为浮点数输入数;n为浮点数输出数;[]为向上取整,k,l,i,j,m,n为非零正整数。
发送数据包由数字量输入D I B、模拟量输入AIW和浮点数输入FID组成。8个数字量输入组成了一个字节,1个模拟量输入由高有效字节和低有效字节组成,1个浮点数输入由4个字节组成。同样,接收数据包由数字量输出DOB、模拟量输出AOW和浮点数输出FOD组成。8个数字量输出组成了1个字节,1个模拟量输出由高有效字节和低有效字节组成,1个浮点数输出由4个字节组成。发送数据块和接收数据的结构分别见图1和图2。
对于一个32位浮点数[4],假设由双字M D 100(MB100,MB101,MB102,MB103)表示,其第31位为符号位,为0表示正数,反之为负数,其数值为s;第30~23位为幂数,其数值为e;第22~0位作为系数,其数值为t。那么该浮点数的数值为:
那么,发送数据包a[x]与PLC输入输出变量的关
图1 发送数据包的结构Fig.1 Structure of sending packet
图2 接收数据包的结构Fig.2 Structure of received packet
系如下:
接收数据包b[y]与PLC输入输出变量的关系如下:
2 通信接口程序设计
舰船机电控制系统PLC端通信接口程序主要完成数据包与输入输出变量的一一映射,程序设计较为简单。Labview端完成舰船机电设备控制的前提是要对数据包进行编码和解析。Labview端通信接口程序设计遵循模块化程序设计原则,保证各个子程序功能模块相对独立、功能单一、结构清晰和接口简单。Labview端通信接口程序包含数字量解析子程序(DIParse)、模拟量解析子程序(AI Parse)、浮点数解析子程序(FI Parse)、数字量编码子程序(DO Encode)、模拟量编码子程序(AO Encode)和浮点数编码子程序(FO Encode)。
图3 发送数据包解析程序Fig.3 Parse program of sending packet
图4 接收数据包编码程序Fig.4 Encode program of received packet
3 数据交互实例
以西门子S7-1214C为例,发送数据包Bytea[x]和接收数据包Byteb [y],x=30,y=26,分 别 进 行PLC编程(配置PLC--> 添加发送和接收数据块-->发送数据程序 -->接收数据程序-->编译下载)和LabVIEW编程(创建TCP连接--> 接收或发送数据 --> 关闭连接),见图5和图6。其中,PLC通信负载设置为50%。Labview人机接口界面见图7。经过测试,PLC和Labview数据包发送和接收正确,本实例数据交互时间9ms。
图5 PLC程序编写Fig.5 PLC programming
此外,对不同数据包大小和数据交互时间进行了测试,结果如表1所示。当发送数据包和接收数据包大小均不大于8M时,数据交互时间不大于14ms。当发送数据包和接收数据包大小任意一个大于8 M时,数据交互失败,经查询技术手册,可知西门子S71200 TCP通信支持最大发送长度为8192 bit,支持最大接收长度为8192 bit[4],这与实际测试结果一致。
4 结语
本文结合舰船机电控制系统特点和测控技术领域PLC和Labview两者优点,基于TCP通信协议字节流数据包的数据结构,提供了通信数据包模型构造方法和通信接口程序编码解析方法。在实际应用中,该方法具有以下特点:
图6 Labview程序编写Fig. 6 Labview programm ing
图7 Labview人机接口界面Fig.7 Labview human machine interface
表1 数据包大小与数据交互时间Tab.1 Packet size and data interaction time
1)安全性
本方法是基于开方式用户通信TCP设计,TCP是可靠安全的数据传输服务,因而本方法对数据传输的安全是有保障的。
2)灵活性
本方法是基于字节流数据包设计,对发送、接收的数据类型及数量(在一定范围内)没有限制。另外,集中控制器PLC端仅负责输入输出数据的一一映射,Labview端负责完成输入输出数据的编码和解析,模块化的通信接口程序增加了编程调用的灵活性。
3)通用性
本方法的设计不拘泥于某个系统,可应用于任何基于字节流数据包数据交互技术的平台上。目前该方法已被广泛应用于下位机基于西门子S7-1200/1500/300/400和上位机基于Labview的控制系统中。