随着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
$x = \left\lceil {\frac{k}{8}} \right\rceil + 2i + 4m \text{,}$ | (1) |
$y = \left\lceil {\frac{l}{8}} \right\rceil + 2j + 4n {\text{。}}$ | (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表示正数,反之为负数,其数值为
$f(MB100,MB101,MB102,MB103)={( - 1)^S}\times(1+t)\times{2^{(e - 127)}}\text{,}$ | (5) |
那么,发送数据包
$\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.$ |
接收数据包
$\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.$ |
舰船机电控制系统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 |
以西门子S7-1214C为例,发送数据包Byte
![]() |
图 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 |
本文结合舰船机电控制系统特点和测控技术领域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. |