袁显明
摘 要:针对系留气球远程监控终端的需求,设计了一种基于MODBUS TCP通信协议的监控系统。文章详细描述了MODBUS TCP通信协议的技术细节,并利用其开发了远程监控客户端,通过与系留气球测控装置PLC通信,实现了球体参数的采集、显示及执行机构的控制,同时将系统的运行数据保存到Access数据库中备查。
关键词:系留气球;MODBUS TCP协议;远程监控系统
中图分类号:TP277 文献标识码:A 文章编号:1674-1064(2020)08-0025-02
系留气球作为一种依靠净浮力升空的浮空飞行器,在地面锚泊状态下,仍需监控囊体压力,确保球体安全。针对系留气球地面锚泊的特点,研制了一套以PLC为核心的监控设备,代替原有系统完成囊体压力的监控与调节,以延长球载设备的电气寿命。为方便监控人员实时了解球体状态,需设计一套远程监控终端,以实现囊体压力的远程监控与调节[1-2]。远程监控终端应具备如下功能:
终端设备安装在远距离的地面测控中心,能够稳定地与PLC通信实现信息的交互。
操作员能够在地面测控中心实时监控囊体压力和风机的工作状态,并将数据保存到数据库以备后续审查。操作员能够控制球载风机的开启和关闭,系统要提供必要的声音报警和视觉信号报警。系统需具备较高的可靠度等级,能长期稳定的工作。
文章主要介绍了一种通过网口通信实现数据的远距离传输和控制的监控系统,该系统能较好地完成系留气球远程监控终端的任务,并具有较强的抗干扰能力和扩展性。
1 系统原理
1.1 系统结构
由于锚泊车和地面测控中心之间的布线距离较远,为保证信号的稳定传输,在PLC和工控机间增设一对光纤收发器,将电信号转换为光信号,实现数据的远距离传输,如图1所示。文章主要讨论PLC与地面测控中心工控机间MODBUS TCP通信的设计与实现。
1.2 MODBUS TCP协议
MODBUS TCP/IP應用层协议的PDU与基于串行链路的MODBUS协议相同,区别在于ADU的结构中引入了MBAP报文头。由于采用TCP/IP协议,各个通信设备已经分配了IP地址,MBAP报文头中单元标示符取代了MODBUS串行链路上的地址域,从而用于通过网桥和网关等设备的通讯。TCP协议是建立可靠数据连接的传输协议,可以保证数据包传输的数据完整性,所以在基于TCP/IP的MODBUS协议的ADU中,不需要串行链路中使用的数据校验域,如图2所示。
MODBUS TCP协议的功能码以MODBUS设备间互用性划分为不同的等级。本系统主要使用到等级0和等级1的功能。等级0代表普遍使用且总体一致的功能;等级1代表有用的功能,但带有某些特性。
2 系统实现
2.1 硬件设计
光纤收发器提供1路速度为10/100M自适应的以太网接口,工作波长分别为1310nm和1550nm,实现在一根单模光纤上信号的双向传输。PLC为系统核心部件,通过AD和DI模块对模拟量信号和数字量信号进行采集,通过DO模块驱动受控设备进行动作。PLC通过以太网端口与远程工控机进行通信,同时接受监控软件的控制指令。工控机作为系统的控制中枢,选用标准机架式工控机,满足命令响应、数据处理、存储和显示等功能的需求。采用单色报警灯,并带有蜂鸣器,监控软件通过工控机的DO口驱动报警器发出声光报警。
2.2 软件设计
本系统监控软件使用C++语言开发,实现参数采集、设备控制和数据的存储与查询功能。软件主要包含数据通信、数据处理和数据库等三个单元。
监控软件通过MODBUS TCP协议功能6(写单个保持寄存器)向PLC写入控制指令。如副气囊风机状态字保存在MODBUS地址为4X10022的保持寄存器中,状态字为1时风机开启,状态字为0时风机关闭。
开启副气囊风机的指令格式如图3所示。
关闭副气囊风机的指令格式如图4所示。
参照副气囊风机的指令格式,可写入其他执行机构的控制指令。编写完成控制指令数据包TxData[]后,通过客户端的Socket通道向PLC发送数据,通信周期为500ms。
ClientSocket->Socket->SendBuf(&TxData,sizeof(TxData));
监控软件通过MODBUS TCP协议功能3(读单个或多个保持寄存器)向PLC写入读数据请求。如读取MODBUS首地址为4X10000的24个保持寄存器,请求指令格式如图5所示。
完成请求数据包TxData[]后,通过客户端的Socket通道向PLC发送数据;同时通过客户端Socket通道读取PLC应答数据。
ClientSocket->Socket->SendBuf(&TxData,sizeof(TxData));
ClientSocket->Socket->ReceiveBuf(RxData,sizeof(RxData));
读保持寄存器请求的PLC应答数据包格式如图6所示。
监控软件通过调用库文件工控机I-DASK.dll,实现与数据I/O卡的通信。
2.3 数据处理
数据显示:监控软件从RJ45接受到的数据遵从MODBUS TCP协议。去除MBAP报文头、站地址和功能代码后,余下的为有效字节。依据通信协议对数据进行解析后显示在软件界面上。状态显示:为了避免雷同,使得界面具有更好的美观性,在对设备的状态进行显示的时候,采用了虚拟LED灯、立体按钮等不同的视觉表达方式。数据作图:对囊体压力参数显示采用虚拟仪表的作图方式,能够直观地表达当前压力状态。故障告警:监控软件将解析后的数据与告警阈值进行比对,若参数的值超出报警阈值,则生成相应的报警信号和报警等级。根据报警等级在报警信息栏中以黄色或红色显示当前报警原因,同时输出两路高电平控制信号,驱动报警器和报警灯工作。
2.4 数据库操作
本系统采用Access数据库。Access具有强大的数据处理、统计分析能力,利用Access的查询功能,可以方便地进行各类汇总、平均统计。软件使用ADOTable组件访问数据库,开发人员通过代码进行数据库的动态连接。
ADOTable组件只能使用字段编辑器来决定使用的字段是哪些,无法对数据库下达SQL命令。要连接数据库,又要对数据库下命令需使用ADOQuery组件。ADOQuery组件与ADOTable组件一样,使用ConnectionString属性连接数据库,在连接数据库后通过SQL属性取回数据。在设置SQL属性之前,不可以将ADOTable组件的Active属性设置为True。
软件使用SQL语言进行数据的查询操作。SQL语言是关系型数据库中的标准化查询语言,能够对目标数据库完成数据定义、数据查询和数据控制等操作。SQL查询命令如下:
Select 数据字段 From 表 where 限制条件1 and 限制条件2...
DataSource组件是ADOTable组件与其他具有数据感知能力的数据库组件的沟通桥梁。通过DataSource组件才可以取得数据库文件内的数据字段。
数据库感知组件通过与DataSource组件的连接,取得数据库中的记录,并将其显示出来。该软件通过ADOQuery组件和SQL命令筛选出数据表中数据后,数据感知组件DBGird和DBEdit将数据内容显示出来,实现历史记录的查询。
3 结语
针对系留气球远程监控终端的需求,设计了上文所述的监控系统。该系统运行稳定,具有数据采集、传输、处理准确及时,实时性好,抗干扰能力强,软件界面简洁明了,操作简单等优点。
参考文献
[1] 杨天祥,曾腾辉,杨潇文.系留气球测控系统设计[J].测控技术,2016,35(3):12.
[2] 唐黎江.机动式系统气球测控系统软件设计与实现[J].机械与电子,2013(2):23.