209
MODBUS TCP 通讯协议在PLC 与串口服务器的通讯应用
马永钧,王彦龙
(北京源深节能技术有限责任公司,北京海淀100142)
摘要:文章介绍了MODBUS 通讯协议的PLC 与串口服务器的通讯应用。主要包括MODBUS TCP 通讯原理、串口服务
器的通讯配置、PLC 组态配置和软件通讯实现等内容。实践表明,该系统具有良好的实时性和可靠性。关键词:MODBUS TCP ;通讯;PLC ;串口服务器中图分类号:TP393.05文献标识码:A 文章编号:1673-1131(2016)10-0209-02
0引言
在工业企业中,集散控制系统(DCS )与可编程逻辑控制器(PLC )、数据采集器和各种智能仪表通过控制网络相互组合构成完整的自动化控制系统。现场设备通常采用RS-232和RS-485总线进行连接,但是随着工业企业对自动化应用的实时性需求日益提高,工业以太网在自动化领域被广泛应用,取代串口通讯已成
为自动化系统的一种趋势。为了保护对现有设备的投资,同时满足用户对数据通讯处理能力的要求,就需要将原有串口通讯转换成工业以太网通讯,而串口服务器是设备硬件串口转以太网连接的桥梁,它能将传统的串行数据变成基于TCP/IP 协议的报文数据。
基于MODBUS TCP 协议的工业以太网连接方便,现场较容易实施,TCP/IP 协议的基础上在应用层使用MODBUS TCP 通讯协议,就能实现使用工业以太网进行数据实时交换,将大量的数据传输到实时监控网和管理网。本文深入研究了MODBUS TCP 通讯协议,对MODBUS TCP 通讯原理、串口服务器的通讯设置、PLC 的组态配置和控制逻辑实现进行了详细说明。
1MODBUS TCP 协议
MODBUS 协议是工业控制领域中最流行的通讯协议,它支持传统的RS232、RS422、RS485和以太网设备。MODBUS 协议有两种通讯方式,既RTU (远程终端)方式和ASCII 方式。自动化控制系统对现场数据实时性要求较高,而ASCII 方式采用7位ASCII 码进行通讯,数据校验采用LRC 逻辑冗余校验,通讯速率较慢,因此本文研究采用通过MODBUS/TCP 网络携带的MODBUS 请求和响应封装的一般格式,使用RTU 通讯方式通讯,用8位字节的二进制数据通讯,数据校验采用CRC 循环冗余校验,通讯速度较快。MODBUS 协议在通过网桥和网关等设备时使用单字节的“单元标识符”代替“从站地址”字段进行通讯,数据请求一般是在给定的连接以半双工的方式发送,并通过TCP 从寄存器端口502发出。本文从
MOD-BUS TCP 分层模型、数据帧和功能码等方面研究MODBUS TCP 协议基础上,确定本文通讯具体采用的方式。
1.1MODBUS TCP 分层模型
与传统的TCP/IP 协议5层模型相比,本文研究的MOD-BUS TCP 协议是在应用层使用MODBUS TCP 协议报文,其
各层功能见表1。
表1MODBUS TCP
分层模型
1.2MODBUS TCP 数据帧
MODBUS TCP 数据帧由报文头、功能代码和数据组成,
其中报文头为7个字节,功能代码为1个字节,数据部分为实际传输的数据。报文头的前四个字节主要是事务处理标识符和协议标识符,通常为0;第五、六个字节定义为数据的长度字段;第七个字节为单元标识符(原从站地址)
图1MODBUS TCP 数据帧组成示意图
1.3MODBUS 功能代码
MODBUS 功能代码分为公共功能码、用户自定义功能码和保留的功能码三类。其中公共功能码为保证其唯一性,都已定义好,本文从现场采集数据使用的是公共功能码FC03读多个寄存器,因此需要在MODBUS TCP 数据帧中定义功能码为03。
表2MODBUS
常用公共功能代码
2串口服务器
选用MOXA DA660串口服务器作为RS-232/485与以太
网转换的中间设备,DA660的以太网接口连接至PLC 自动化系统,实现通讯数据网络共享。MOXA DA660串口服务器实际上充当了串行接口到以太网的通信网关,实现串口和以太网接口的双向数据传输,它是一个带有CPU 、嵌入式操作系统以及完整TCP/IP 协议的独立智能设备,完成串行数据和网络IP 数据包之间的数据转换,进而实现终端登录、扩展串行、联网传统串行设备等功能。
在MOXA DA660串口服务器工作之前,需进行各种参数设置包括串口通讯设置、网口通讯设置、添加MODBUS 通讯节点等。串口通设置有串口类型、串口模式、波特率、校验位、数据位和停止位。网口通讯设置有IP 地址和端口号。添加MODBUS 通讯节点设置有节点描述、通讯口、设备地址、寄存
2016
(Sum.No 166)
信息通信
INFORMATION &COMMUNICATIONS
2016年第10期(总第166期)
210
器类型、寄存器数量和映射地址等。如本工程有一块电表,它的MODBUS 地址是17,它的电流、电压等数据存放在“保持寄存器”的90~99的地址中,一共10个寄存器数据;而我们需要将这10个寄存器数据读到后存放在串口服务器“保持寄存器”的200~209这个地址中,如图2
tcp ip协议是全工
所示。
图2添加MODBUS 通讯节点设置
3通讯的实现
本工程采用了西门子S7-400H 的冗余可编程控制器,在硬件网络组态中建立TCP 连接,设置串口服务器的IP 地址及端口号,如图3
所示。
图3MODBUS TCP 连接组态图
以下PLC 程序实现了PLC 向串口服务器发送数据请求,将串口服务器寄存器中的数据读到PLC 数据块DB50中,起始地址为DBX20.0。
L 1
T #TCPID L W#16#7FFD T #TCPLADDR A #Active FP #ActiveP1AN #SendBusy =#ActSend S #SendBusy OPN DB 50LAR1P#DBX 0.0L 0
T D [AR1,P#0.0]T B [AR1,P#4.0]
L B#16#6
T B [AR1,P#5.0]L B#16#1
T B [AR1,P#6.0]L B#16#3
T B [AR1,P#7.0]L 0
T B [AR1,P#8.0]T B [AR1,P#9.0]
T B [AR1,P#10.0]
L B#16#A
T B [AR1,P#11.0]A #ActSend =L 0.0BLD 103
CALL FC 50
ACT :=L0.0ID :=#TCPID
LADDR :=#TCPLADDR
SEND :=P#DB50.DBX0.0BYTE 12LEN :=12
DONE :=#SendDone ERROR :=#SendERROR STATUS:=#SendStatus NOP 0
A #SendDone A #SendBusy R #SendBusy L #SendStatus T #SndStatus A #SendERROR A (
L #SendStatus L 28672<>I )
R #SendBusy CALL FC 51ID :=#TCPID
LADDR :=#TCPLADDR
RECV :=P#DB50.DBX20.0BYTE 100NDR :=#RCVNDR ERROR :=#RCVERROR STATUS:=#RCVStatus LEN :=#RCVLen NOP 0
L #RCVStatus T #RecvStatus NOP 0
4结语
本文介绍的通讯方案已经投入使用,通讯运行质量稳定可靠,将现场串口设备的大量数据信息采集到自动化控制系统,实现了数据网络共享。随着工业企业信息化的发展,大量的原有串口设备需要联网,数据要在企业内各个系统之间进行交换,用户越来越重视自动化控制系统与串口设备通讯问题,因此本文对同类工程通讯实现具有较强的参考意义。参考文献:[1]
刘国利.基于MODBUS 的DCS 与PLC 吹灰程控的通讯
实现[J ].热电技术,2011(1).
[2]张嗣卿,邢学哲,白凤山.MODBUS 通讯协议在火电厂自动
化改造中的应用[J ].东北电力技术,2001(8).
信息通信马永钧等:MODBUS TCP 通讯协议在PLC 与串口服务器的通讯应用

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。