舰船科学技术  2021, Vol. 43 Issue (3): 171-174    DOI: 10.3404/j.issn.1672-7649.2021.03.033   PDF    
基于字节流数据包的舰船控制系统数据交互技术
张东京, 吴国庆, 潘广善, 从曙光, 张震     
中国船舶科学研究中心 深海载入装备国家重点实验室,江苏 无锡 214082
摘要: 本文结合舰船机电控制系统特点和测控技术领域PLC和Labview两者优点,基于字节流数据包的数据灵活性,设计PLC和Labview通信数据包模型,并遵循模块化程序设计原则完成通信接口程序设计,解决舰船机电系统集中控制器和人机接口数据交互的描述问题和通信接口程序通用性问题。最后,通过实例验证设计的数据包模型和通信接口程序能够实现数据快速可靠安全的交互。该技术可应用于舰船综合监控系统和类似系统的软件开发。
关键词: TCP     字节流     数据包     PLC     Labview    
Research on application of data interaction technology of ship control system based on byte stream data package
ZHANG Dong-jing, WU Guo-qing, PAN Guang-shan, CONG Shu-guang, ZHANG Zhen     
State Key Laboratory of Deep-sea Manned Vehicles, China Ship Scientific Research Center, Wuxi 214082, China
Abstract: Based on the characteristics of marine electromechanical control system and the advantages of PLC and Labview in the field of measurement and control technology, the communication data package model of PLC and LabVIEW is designed based on the data flexibility of byte flow data package, and the communication interface programming is completed according to the principle of modular programming, which solves the description problem of data interaction and the universality of communication interface program between centralized controller and human-machine interface in marine electromechanical system. Finally, an example is given to verify that the designed data package model and communication interface program can realize fast, reliable and safe data interaction, and the technology can be applied to the software development of integrated monitoring system and similar systems.
Key words: TCP     byte stream     data packet     PLC     Labview    
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发送数据包为一维数组Byte $a\left[ x \right]$ $x$ 为发送数据包的长度。PLC接收的数据包为一维数组Byte ${\rm{b}}\left[ y \right]$ $y$ 为接收数据包的长度。

$x = \left\lceil {\frac{k}{8}} \right\rceil + 2i + 4m \text{,}$ (1)
$y = \left\lceil {\frac{l}{8}} \right\rceil + 2j + 4n {\text{。}}$ (2)

其中: $k$ 为数字量输入数; $l$ 为数字量输出数; $i$ 为模拟量输入数; $j$ 为模拟量输出数; $m$ 为浮点数输入数; $n$ 为浮点数输出数; $\left\lceil {} \right\rceil $ 为向上取整, $k,l,i,j,m,n$ 为非零正整数。

$k' = \left\lceil {\dfrac{k}{8}} \right\rceil$ $l' = \left\lceil {\dfrac{l}{8}} \right\rceil$ ,则式(1)和式(2)变为:

$x = k' + 2i + 4m \text{,}$ (3)
$ y={l}'+2j+4\left\lceil {} \right\rceil {\text{。}}$ (4)

发送数据包由数字量输入DIB、模拟量输入AIW和浮点数输入FID组成。8个数字量输入组成了一个字节,1个模拟量输入由高有效字节和低有效字节组成,1个浮点数输入由4个字节组成。同样,接收数据包由数字量输出DOB、模拟量输出AOW和浮点数输出FOD组成。8个数字量输出组成了1个字节,1个模拟量输出由高有效字节和低有效字节组成,1个浮点数输出由4个字节组成。发送数据块和接收数据的结构分别见图1图2

图 1 发送数据包的结构 Fig. 1 Structure of sending packet

图 2 接收数据包的结构 Fig. 2 Structure of received packet

对于一个32位浮点数[4],假设由双字MD100(MB100,MB101,MB102,MB103)表示,其第31位为符号位,为0表示正数,反之为负数,其数值为 $s$ ;第 30~23位为幂数,其数值为 $e$ ;第22~0位作为系数,其数值为 $t$ 。那么该浮点数的数值为:

$f(MB100,MB101,MB102,MB103)={( - 1)^S}\times(1+t)\times{2^{(e - 127)}}\text{,}$ (5)

那么,发送数据包 $ a\left[x\right] $ 与PLC输入输出变量的关系如下:

$\left\{ {\begin{array}{*{20}{l}} a[k' - 1] = {\rm{DIB}}k' = {\rm{DI}}k'.7 \times {2^7} + {\rm{DI}}k'.6 \times {2^6} + \cdots + \\ \qquad\qquad\;\;{\rm{DI}}k'.0 \times {2^0}\text{,} \\ a[k' + 2i - 2] \times 256 + a[k' + 2i - 1] = {\rm{AI}}Wi\text{,} \\ f(a[k' + 2i + 4m - 4],a[k' + 2i + 4m - 3],\\ a[k' + 2i + 4m - 2],a[k' + 2i + 4m - 1]) = {\rm{FID}}m\text{,} \end{array}} \right.$

接收数据包 $ b\left[y\right] $ 与PLC输入输出变量的关系如下:

$\left\{ {\begin{array}{*{20}{l}} {\rm{b}}[l' - 1] = {\rm{DOB}}l' = {\rm{DO}}l'.7 \times {2^7} + {\rm{DO}}l'.6 \times {2^6} + \cdots +\\ \qquad\qquad\;\;{\rm{DO}}l'.0 \times {2^0}\text{,} \\ b[l' + 2j - 2] \times 256 + b[l' + 2j - 1] = {\rm{AO}}Wj \text{,}\\ f(b[l' + 2j + 4n - 4], b[l' + 2j + 4n - 3],\\b[l' + 2j + 4n - 2],b[l' + 2j + 4n - 1]) = {\rm{FOD}}n \text{。} \end{array}} \right.$
2 通信接口程序设计

舰船机电控制系统PLC端通信接口程序主要完成数据包与输入输出变量的一一映射,程序设计较为简单。Labview端完成舰船机电设备控制的前提是要对数据包进行编码和解析。Labview端通信接口程序设计遵循模块化程序设计原则,保证各个子程序功能模块相对独立、功能单一、结构清晰和接口简单。Labview端通信接口程序包含数字量解析子程序(DI Parse)、模拟量解析子程序(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为例,发送数据包Byte $a\left[ x \right]$ 和接收数据包Byte ${\rm{b}}\left[ y \right]$ $ x=30 $ $y = 26$ ,分别进行PLC编程(配置PLC --> 添加发送和接收数据块 --> 发送数据程序 --> 接收数据程序 --> 编译下载)和LabVIEW编程(创建TCP连接 --> 接收或发送数据 --> 关闭连接 ),见图5图6。其中,PLC通信负载设置为50%。Labview人机接口界面见图7。经过测试,PLC和Labview数据包发送和接收正确,本实例数据交互时间9 ms。

图 5 PLC程序编写 Fig. 5 PLC programming

图 6 Labview程序编写 Fig. 6 Labview programming

图 7 Labview人机接口界面 Fig. 7 Labview human machine interface

此外,对不同数据包大小和数据交互时间进行了测试,结果如表1所示。当发送数据包和接收数据包大小均不大于8 M时,数据交互时间不大于14ms。当发送数据包和接收数据包大小任意一个大于8 M时,数据交互失败,经查询技术手册,可知西门子S71200 TCP通信支持最大发送长度为8192 bit,支持最大接收长度为8192 bit[4],这与实际测试结果一致。

表 1 数据包大小与数据交互时间 Tab.1 Packet size and data interaction time
4 结 语

本文结合舰船机电控制系统特点和测控技术领域PLC和Labview两者优点,基于TCP通信协议字节流数据包的数据结构,提供了通信数据包模型构造方法和通信接口程序编码解析方法。在实际应用中,该方法具有以下特点:

1)安全性

本方法是基于开方式用户通信TCP设计,TCP是可靠安全的数据传输服务,因而本方法对数据传输的安全是有保障的。

2)灵活性

本方法是基于字节流数据包设计,对发送、接收的数据类型及数量(在一定范围内)没有限制。另外,集中控制器PLC端仅负责输入输出数据的一一映射,Labview端负责完成输入输出数据的编码和解析,模块化的通信接口程序增加了编程调用的灵活性。

3)通用性

本方法的设计不拘泥于某个系统,可应用于任何基于字节流数据包数据交互技术的平台上。目前该方法已被广泛应用于下位机基于西门子S7-1200/1500/300/400和上位机基于Labview的控制系统中。

参考文献
[1]
邢建春, 王平, 仲未央, 等. 工业控制软件互操作标准OPC综述[J]. 工业控制计算机, 2000(1): 29-32+37. DOI:10.3969/j.issn.1001-182X.2000.01.010
[2]
陈树学, 刘萱. LabVIEW宝典[M]. 北京: 电子工业出版社, 2011.
[3]
汪晓旭, 郑松. PLC在舰船机电控制系统中的应用[C]//中国指挥与控制学会会议论文集, 2015(1): 360 − 364.
[4]
段礼才等. 西门子S7-1200PLC编程及使用指南[M]. 北京: 机械工业出版社, 2017.
[5]
许楠. 浅谈我国工业自动化控制的现状及发展趋势[J]. 中国高新技术企业, 2017(6): 73-74.
[6]
施斌, 薛倡新, 王华, 等. 字节流对象模型的设计和应用[J]. 火力与指挥控, 2015, 40(1): 163-166.
[7]
李阳, 王华, 张得华. 测控系统指显数据处理方法[J]. 计算机系统应用, 2019, 28(2): 270-273.
[8]
席盛代. 基于PC+PLC工业控制系统的应用与发展趋势[J]. 工业控制计算机, 2008(7): 1-2. DOI:10.3969/j.issn.1001-182X.2008.07.001
[9]
郭军杰, 赵恒永, 李洁. 字节流式数据传输协议的设计与实现[J]. 微计算机应用, 2000(6): 342-345. DOI:10.3969/j.issn.2095-347X.2000.06.006
[10]
陈效军. LabVIEW在舰船主机自动遥控系统的应用[J]. 舰船科学技术, 2017(14): 360-364.