江苏航运职业技术学院学报  2019年03期 43-47   出版日期:2019-09-25   ISSN:1006-6977   CN:61-1281/TN
基于Modbus协议的港口起重机分布式AI模块开发


“一带一路”倡议及“长江经济带”和“海洋强国”等国家战略的推进实施,使港口行业发展前景广阔。港

口起重机是提高港口装卸效率的关键,正逐步向大型化、智能化方向发展,以适应船舶大型化和货物装卸自

动化的需求,但这也造成了传感器和执行器等现场设备在空间位置上的分散。正是由于港口起重机设备的这

种特点,使得现场分布式设备和控制中心之间的距离较远[1],原有的模拟信号控制方式不易实现,即便实现,

随着设备大型化能耗损失也极高。

分布式远程AI控制成为港口机械控制领域内一种有效解决途径。分布式远程AI系统是将传统工业控制模拟

信号(4~20 mA)转换成数字信号,再通过某种通信协议传输到设备控制中心,实现“集中处理、分散控制”

。该方案利用通信和网络技术,将模拟信号传输过程受到的干扰降到最低,信号电缆结构简单,减少了后续的

电缆维护问题。以港口集装箱桥式起重机为例,分布式远程AI系统工作将港口起重机分成若干个独立执行器

单元,如大车行走机构、小车行走机构、起升机构、吊具控制机构、防摇机构等,利用通信方式,将分布式AI

系统控制器与控制中心(PLC)进行数据传输,实现“集中处理、分散控制”[2],如图1所示。本次设计的分布

式远程AI控制器以单片机为基础,可用于PLC控制系统,支持MODBUS-RTU协议的设备。

 图1 港口起重机分布式远程AI控制系统
图1 港口起重机分布式远程AI控制系统   下载原图

1 Modbus通信协议规划设计
Modbus即工业领域通信协议标准,是一种串行通信协议,现在是工业电子设备之间相当常用的连接方式。

Modbus协议只规定了数据帧格式,在主从通信中,只要其数据帧格式符合便可实现通信。利用网络中主机PLC

发起通信,网络可支持从站数达247个。Modbus协议包括ASCII、RTU、TCP等,由于ASCII、TCP在单片机上不

能直接实现,而且实际应用也很少,这里采用RTU模式。以RTU模式通信时,在报文消息中每个字节由两个4位

的十六进制字符组成,报文消息格式是8位二进制[3],采用16进制字符0到F,同时可以利用CRC进行冗余检测,

提升稳定性。最后分析地址以确定帧数据是否发往该设备,若错误,则丢失此帧数据。

为了减少接收处理时间,可以在接收到地址域后立刻对其进行分析,而不需要等到整个帧结束。这样,CRC计

算只需要在帧寻址到该节点(包括广播帧)时进行,如表1所示。

表1 RTU数据帧字符格式与字符长度     下载原表

 表1 RTU数据帧字符格式与字符长度
2 系统设计方案
2.1 硬件结构设计
港口起重机分布式远程AI控制系统核心控制芯片采用宏晶科技STC12C5A60S2,上位机通过RS-232接口进行

Modbus协议节点的ID设置,RS-485实现分布式远程AI控制系统和控制中心PLC间的通信,采用上述Modbus协议

方案。但在实际应用系统中,往往由于分散节点数量较多,分布较远,现场会存在各种干扰,为了减少对单片

机系统的电磁干扰,在单片机与继电器、单片机与RS-485的通道上均增加了光电隔离,方案在电路设计时规

划在RS-485接口电路中。[4,5]

从图1可以看出,港口起重机分布式远程AI控制系统信号通道分为两类:模拟量信号和数字量信号。根据传感

器信号具体形式选用对应的信号调理电路,最终转换成STC12C5A60S2处理的数据。由于信号调理电路对应的

设计方案很多,且比较成熟,这里就不作为研究对象。

在控制输出部分,市场上大部分变频器具有Modbus端口,即便没有集成也可以很方便地购买到通用Modbus板

卡。因此,按照RTU从站协议进行Modbus控制变频器进而驱动电动机。在图2中,输出信号通过控制信号驱动

放大类器件组建的驱动器,进而驱动制动器、指示灯等设备。

结合图1和图2,可以看出电路的整体设计思想是,将每一个执行单元的执行机构和传感器系统进行系统信号

归总,由控制器核心芯片进行信号采集和初步处理,通过Modbus总线传送至控制中心PLC,实现集中运算。根

据控制策略输出控制结果,然后从控制中心PLC通过总线传送给分布式远程AI控制系统,实现分散控制。

 图2 AI控制系统终端
图2 AI控制系统终端   下载原图

2.2 软件设计
软件功能其一是实现主机PLC和分布式远程AI控制系统从机之间基于Modbus协议的通讯功能;其二是根据上

述设计的协议格式进行命令的功能解析和信息数据的提取;其三是实现主机从机之间协议功能的读和写;其

四是冗余校验。根据软件实现的功能,程序设计分为A/D采集程序、串口初始化及串口中断服务程序、

Modbus协议功能实现和CRC循环冗余校验四个部分。[6]

(1)A/D采集程序设计。速度信号、压力信号、吊具姿态信号都属于模拟信号,需要用A/D进行数据采集,由于

A/D转换速率较慢,采用了100 ms周期间隔采集。但在具体测试中发现,在单片机刚刚上电或者复位后不

久,A/D转换器采集的数据是错误的,因此在本次设计中屏蔽了初期采集的50次数据,避免因复位而误报数据,

以保证A/D采集数据的正确性。程序在设计过程中采用了5个队列深度的均值滤波法,以减小误差,如图3所示

 图3 A/D信号采集程序
图3 A/D信号采集程序   下载原图

(2)串口中断处理程序。单片机的串口通信功能强大,而且是数据输入输出的主要通道,无论数据接收还是发

送,都经过串口实现。在本设计中,串口的初始化程序主要是将波特率、通信速率、数据通信格式等信息进

行初始约定。而在串行通信中,收发双方的波特率必须一致。所选单片机型号设定串口的工作方式有4种,本

设计采用工作方式1:8位异步收发,波特率由T0的溢出率和SMOD的值共同确定。此时,晶振频率为11.059 2

MHz,波特率为9 600 bit/s,SMOD为1,定时器1的初值为F4H,如图4所示。

(3)MODBUS协议功能实现程序设计。此次Modbus协议功能数据传递也是通过串口设计来实现。作为节点的单

片机处理芯片通过串口接收程序解析主机的报文帧数据,获取主机的命令信息,并执行对应动作,同时向主机

回复报文,从而实现主机和从机之间的数据交换。其中,主要就Modbus协议的功能码03和15两项具有代表性

功能的实现进行了详细设计。

设备响应过程为:如果接收成功,把计算机发送的命令原样返回,否则不响应。当有错误发生时,功能代码将

被修改,修改后的功能代码用以指出回应的消息是错误的,回功能代码+80H,同时数据段包含了描述此错误的

信息代码:0x01表明从机能识别主机请求;0x02表示请求帧中的从机地址不存在;0x03表示主机的请求不允许

;0x04表示从机不能完成请求。Modbus协议功能实现程序如图5所示。

(4)CRC循环冗余校验。这个部分代码目前相对比较成熟,这里不做赘述。

3 Modbus通信实验分析
在上位机上通过Modbus串口助手进行设备调试,设置本机地址为0x10,波特率为9 600 bit/s,该调试工具可

以实时发送和接收数据,针对功能码03,在未向寄存器写入数值时,读取字节为00,另外还可以读取不同字节

数据及寄存器数据,通信可靠性高。

 图4 串口中断处理程序流程图
图4 串口中断处理程序流程图   下载原图

 图5 实现Modbus协议程序流程图
图5 实现Modbus协议程序流程图   下载原图

4 结束语
分布式远程AI系统模块设计可以实现“集中管理、分散控制”的控制理念。Modbus协议实现的港口起重机

分布式远程AI控制系统可以实现不同类型的数据采集,并以Modbus-RTU协议格式与控制器通信,大大提高了

通信效率和可靠性,避免了模拟信号在设备大型化和自动化过程中出现的衰减问题。