在工业自动化系统中,,Modbus和谈作为最经典的现场通讯尺度之一,,凭借结构清澈、兼容性强的特点,,宽泛利用于节制器、传感器及监控系统之间的数据交互。。本文将简要注明js3845金沙线路科技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过滤战术,,以保险通讯的实时性与安全性。。