首页 新闻中心 重点产品 实操指南|LicOS PLC/PAC的Modbus TCP/RTU配置详解

实操指南|LicOS PLC/PAC的Modbus TCP/RTU配置详解

分类:重点产品
来源:联诚科技
发布时间:2025-10-13
浏览:664


在工业自动化系统中,Modbus协议作为最经典的现场通信标准之一,凭借结构清晰、兼容性强的特点,广泛应用于控制器、传感器及监控系统之间的数据交互。本文将简要说明联诚科技LicOS PLC/PAC在作为Modbus服务器时的地址结构与通信机制,帮助开发者和集成商快速理解与部署系统。

基本功能与意义

在LicOS PLC/PAC中,Modbus地址的作用主要体现在以下四个方面:

数据标识与定位

每个地址对应PLC内部的特定数据区域,如线圈、输入寄存器、保持寄存器等。通过地址,客户端可以准确访问或修改目标数据。

数据交互与通信

客户端通过读写特定地址完成与PLC的实时通信,实现数据采集与控制命令的下发。

设备互联与兼容

清晰的地址规则使LicOS设备能与其他支持Modbus协议的系统实现无缝互联。

系统配置与维护便利

明确的地址映射可降低系统调试与后期维护的复杂度,提高项目实施效率。

Modbus通讯格式有三种,这是根据物理层/传输层而做的适配。根据TCP等传输层协议的特点,Modbus摇身一变,就成为了ModbusTCP,使用RS485、RS232等串行物理层协议,Modbus就形成了ModbusRTU和ModbusASCII。

本教程基于以下开发条件:

软件:

Smart Control V5.0、Modbus Toolkit 5、SCOMM

网络拓扑:

Modbus TCP

Modbus TCP协议的数据格式由三部分组成:MBAP + 功能码 + 数据。

其中 MBAP 含四个字段:事务标识符、协议标识符、长度、单元标识符。

事务标识符(2字节):表示数据序号,每发送一次数据可自增或保持不变;

协议标识符(2字节):固定为00;

长度(2字节):表示后续数据的长度;

单元标识符:相当于串行从机地址。

示例:从机返回数据 0001 0000 0005 03 04 02 0006

其中 0001 为消息序号,0000 表示Modbus TCP协议,0005 为后续数据长度,03 为单元标识符,04 为功能码,02 表示数据长度为2字节,0006 为寄存器数据。

1. 报文头MBAP

MBAP为报文头,长度为7字节,组成如下:

报文格式

报文格式解释

从机返回响应数据:

从机返回响应数据结构图

2. 帧结构PDU

帧结构PDU由功能码+数据组成。功能码为1字节,数据长度不定,由具体功能决定。

功能码

Modbus的操作对象有四种:线圈、离散输入、保持寄存器、输入寄存器。

功能码解释

根据对象的不同,Modbus的功能码有:

功能码类型

3. 服务器配置

PLC/PAC作为ModbusTCP服务器,有以下几个参数,如下图所示:

ModbusTCP服务器配置

l Base Info Config-基本信息

Enable or Disable:TRUE启用PLC的 ModbusTCP从站功能:FALSE关闭PLC的ModbusTCP从站功能。

Port ID:端口号。

Max Connection:最大连接数量。

l Filter Info Config-过滤信息

Enable Filter:TRUE启用IP过滤功能,FALSE关闭IP过滤功能。

Mask:允许接入的客户端所处网段的子网掩码。

Start IP:允许接入的客户端所处网段的起始IP。

End IP:允许接入的客户端所处网段的结束IP。

l Clients Info:连接信息,连接数量及IP信息

Nummber ofclient:已经接入的客户端数量。

IP ofclient:当有多个客户端接入时,轮询显示接入客户端的IP、端口信息,显示格式如下图所示。

接入设备IP信息

4. 0x01:读多个线圈

在从站中读1~2000个连续线圈状态,ON=1,OFF=0

请求:MBAP 功能码 起始地址H 起始地址L 数量H 数量L(共12字节)

响应:MBAP 功能码 数据长度 数据(一个地址的数据为1位)

如:在从站0x01中,读取开始地址为0x0000的线圈数据,读0x0008位

00 02 00 00 00 06 01 01 00 00 00 08

回:数据长度为0x01个字节,数据为0x01,第一个线圈为ON,其余为OFF

00 02 00 00 00 04 01 01 01 01

00000001

读多个线圈

5. 0x02:读多个离散量输入

在从站中读1~2000个连续的离散量输入状态

请求:MBAP 功能码 起始地址H 起始地址L 数量H 数量L(共12字节)

响应:MBAP 功能码 数据长度 数据(长度:9+ceil(数量/8))

如:从地址0x0000开始读0x0008个离散量输入

00 03 00 00 00 06 01 02 00 00 00 08

回:数据长度为0x01个字节,数据为0x01,第一个离散量输入为ON,其余为OFF

00 03 00 00 00 04 01 02 01 01

00000001

读多个离散量输入

6. 0x03:读多个保持寄存器

在从站中读保持寄存器连续块的内容

请求:MBAP 功能码 起始地址H 起始地址L 寄存器数量H 寄存器数量L(共12字节)

响应:MBAP 功能码 数据长度 寄存器数据(长度:9+寄存器数量×2)

如:起始地址是0x0000,寄存器数量是 0x0003

00 04 00 00 00 06 01 03 00 00 00 03

回:数据长度为0x06,第一个寄存器的数据为0x05,第二个寄存器的数据为0x06,其余为0x00

00 04 00 00 00 09 01 03 06 00 05 00 06 00 00

5,6,0

读多个保持寄存器

7. 0x04:读多个输入寄存器

在从站中读1~2000个连续输入寄存器

请求:MBAP功能码 起始地址H起始地址L寄存器数量H寄存器数量L(共12字节)

响应:MBAP功能码 数据长度 寄存器数据(长度:9+寄存器数量×2)

如:读起始地址为0x0000,数量为0x0005的寄存器数据

00 05 00 00 00 06 01 04 00 00 00 05

回:数据长度为0x0A,第一个寄存器的数据为0x0B,第一个寄存器的数据为0x16,其余为0x00

00 05 00 00 00 0D 01 04 0A 00 0B 00 16 00 00 00 00 00 00

11,22,0,0,0

读多个输入寄存器

8. 0x05:写单个线圈

在从站中的一个输出写成ON或OFF

请求:MBAP功能码 输出地址H输出地址L输出值H输出值L(共12字节)

响应:MBAP功能码 输出地址H输出地址L输出值H输出值L(共12字节)

如:将地址为0x0003的线圈设为ON

00 07 00 00 00 06 01 05 00 03 FF 00

回:写入成功

00 07 00 00 00 06 01 05 00 03 FF 00

TRUE

写单个线圈

9. 0x06:写单个保持寄存器

在从站中写一个保持寄存器

请求:MBAP功能码寄存器地址H寄存器地址L寄存器值H寄存器值L(共12字节)

响应:MBAP功能码寄存器地址H寄存器地址L寄存器值H寄存器值L(共12字节)

如:向地址是0x0000的寄存器写入数据0x000A

00 08 00 00 00 06 01 06 00 00 00 0A

回:写入成功

00 08 00 00 00 06 01 06 00 00 00 0A

10

写单个保持寄存器

10. 0x10:写多个保持寄存器

在一个远程设备中写连续寄存器(1~123个寄存器)

请求:MBAP功能码起始地址H起始地址L寄存器数量H寄存器数量L字节长度寄存器值(13+寄存器数量×2)

响应:MBAP功能码起始地址H起始地址L寄存器数量H寄存器数量L(共12字节)

如:向起始地址为0x0000,数量为0x0001的寄存器写入数据,数据长度为0x02,数据为0x000F

00 00 00 00 00 09 01 10 00 00 00 01 02 00 0F

回:写入成功

00 00 00 00 00 06 01 10 00 00 00 01

1

写多个保持寄存器

11. 0x0F:写多个线圈

将一个从站中的一个线圈序列的每个线圈都强制为ON或OFF,数据域中置1的位请求相应输出位ON,置0的位请求响应输出为OFF

请求:MBAP功能码起始地址H起始地址L输出数量H输出数量L字节长度输出值H输出值L

响应:MBAP功能码起始地址H起始地址L输出数量H输出数量L

如:将地址为0x0000、0x0002的线圈设为ON,0x0001的线圈为OFF

00 01 00 00 00 08 01 0F 00 00 00 03 01 05

回:写入成功

00 01 00 00 00 06 01 0F 00 00 00 03

3

写多个线圈

Modbus RTU

Modbus RTU 数据包通常由 从站地址、功能码、数据和差错校验 组成。

例如,主机发送的数据包为:06 03 00 50 00 04 45 AF。

其中:

06 为从站地址;

03 为功能码,表示读取保持寄存器;

0050 为起始寄存器地址;

0004 表示读取 4 个字的数据;

45AF 为 CRC 校验码,用于检测数据传输是否出错。

1. 帧结构

帧结构 = 地址 + 功能码 + 数据 + 校验

地址:占用一个字节,范围0-255,其中有效范围是1-247,其他有特殊用途,比如255是广播地址(广播地址就是应答所有地址,正常的需要两个设备的地址一样才能进行查询和回复)。

功能码:占用一个字节,功能码的意义就是,知道这个指令是干啥的,比如可以查询从机的数据,也可以修改数据,所以不同功能码对应不同功能。

数据:根据功能码不同,有不同结构,在后续的实例中有说明。

校验:为了保证数据不错误,增加这个,然后再把前面的数据进行计算看数据是否一致,如果一致,就说明这帧数据是正确的,再回复;如果不一样,说明这个数据在传输的时候出了问题,数据不对的,所以就抛弃了。

主机查询数据:

主机查询数据结构图

2. 功能码

根据对象的不同,Modbus的功能码有:

功能码类型

根据对象的不同,Modbus的功能码有:

功能码类型

3. 服务器配置

PLC/PAC作为ModbusRTU服务器,有以下几个参数,如下图所示:

ModbusRTU服务器参数

基本配置

是否启用:值为TRUE表示ModbusRTU通道开启;值为FALSE表示ModbusRTU通道关闭,默认值为FALSE。

从站地址:PLC/PAC作为ModbusRTU从站时的地址编号,取值范围为1-247。

串口配置

COM端口:PLC/PAC作为ModbusRTU从站时的通信端口,默认值为1,取值范围为1-4,分别对应CPU单元的串口号为1-4的串口,各串口的管脚定义请参阅《PLC/PAC可编程逻辑控制器硬件手册》。

波特率:ModbusRTU通信时的传输速率,取值范围为1200-115200bps,建议使用9600bps,默认值也为9600bps。

奇偶校验:ModbusRTU通信时的数据校验方式,支持奇校验(ODD)、偶校验(EVEN)、无校验(NONE)三种数据校验方法,默认为偶校验EVEN。

数据位:ModbusRTU通信时的数据位长度,支持5、6、7、8位数据长度,默认为8位数据位。

停止位:ModbusRTU通信时的停止位长度,支持1、2位停止位长度,默认为1位停止位长度。

4. 0x01:读多个线圈

作用:读从机线圈寄存器,位操作,可读单个或多个;

发送指令:从机地址:0x01,寄存器开始地址:0x0000,共读取8个线圈。发送命令如下:

TX:01 01 00 00 00 08 3D CC

响应:返回数据每一位的对应的线圈状态,1表示ON,0表示OFF;

RX:01 01 01 07 10 4A

5. 0x02:读多个离散输入

读从机离散输入寄存器,位操作,可读单个或多个;

发送指令:从机地址:0x01,寄存器开始地址:0x0000,共读取8个输入。发送命令如下:

TX:01 02 00 00 00 08 79 CC

响应:返回数据每一位的对应输入的状态,1表示ON,0表示OFF;

RX:01 02 01 10 A0 44

6. 0x03:读多个保持寄存器

作用:读从机保持寄存器,字节操作,可读单个或多个;

发送指令:从机地址:0x01,寄存器开始地址:0x0000,共读取1个寄存器。发送命令如下:

TX:01 03 00 00 00 01 84 0A

响应:返回数据。

RX:01 03 02 00 0F F8 40

7. 0x04:读多个输入寄存器

作用:读从机输入寄存器,字节操作,可读单个或多个;

发送指令:从机地址:0x01,寄存器开始地址:0x0000,共读取1个寄存器。发送命令如下:

TX:01 04 00 00 00 01 31 CA

响应:返回数据。

RX:01 04 02 00 0F F9 34

8. 0x05:写单个线圈

作用:写单个线圈,位操作,只能写一个,写0xFF00表示线圈为ON,写0x0000表示线圈为OFF;

发送指令:从机地址:0x01,设置线圈0x0000为ON。发送命令如下:

TX:01 05 00 00 FF 00 8C 3A

响应:同发送数据。

9. 0x06:写单个保持寄存器

作用:写单个保持寄存器,字节操作,只能写一个;

发送指令:从机地址:0x01,设置线圈0x0000为0x2193。发送命令如下:

TX:01 06 00 00 21 93 D1 F7

响应:同发送数据。

10. 0x10:写多个保持寄存器

作用:写多个保持寄存器,字节操作,可写多个;

发送指令:从机地址:0x01,寄存器地址0x0000,写2个寄存器4个字节数据。发送命令如下:

TX:01 10 00 00 00 02 04 00 08 00 09 B2 6B

响应:返回数据。

RX:01 10 00 00 00 02 41 C8

LicOS PLC/PAC作为Modbus服务器,具备完整的Modbus TCP与RTU通信能力。其地址映射清晰,功能码覆盖全面,支持工业现场常见的数据读写需求。

在实际部署时,建议结合具体网络环境与设备性能,合理配置连接数、串口参数及IP过滤策略,以保障通信的实时性与安全性。


- END -
热门推荐
热门资讯
热门话题

联诚科技,助您开启工业数字化和智能化之路

在线留言
微信客服
联诚科技在线客服

微信官方客服

在线客服
扫码关注
关注联诚科技

关注联诚科技

返回顶部

产品试用申请

感谢关注联诚科技,请填写以下信息,我们将第一时间联系您!

基础信息

需求信息

联诚PLC咨询