PLC急速入门第四课:Modbus通信手册(含CRC算法)

PLC急速入门第四课:Modbus通信手册(含CRC算法)一 Modbus 物理层接线 1

大家好,欢迎来到IT知识分享网。

一、Modbus物理层接线

1. ModbusRTU(485)错误接法vs正确保命接法

■ 错误接法(可能烧接口)

PLC-A ────■───▶ 设备1-A

PLC-B ────┼───▶ 设备1-B // 星型拓扑产生反射干扰

└───▶ 设备2-A

■ 正确接法(手拉手拓扑)

PLC-A ───▶设备1-A───▶设备2-A

PLC-B ───▶设备1-B───▶设备2-B

屏蔽层单点接地

2. 电压雷区检测表

PLC急速入门第四课:Modbus通信手册(含CRC算法)

二、几种通信方式简介

PLC急速入门第四课:Modbus通信手册(含CRC算法)

1. RS232 vs RS485 电路

■ RS232错误接线(共地干扰)

PC-TXD ────▶ PLC-RXD

PC-RXD ◀──── PLC-TXD

PC-GND ────▶ PLC-GND // 地线环流引入干扰

■ RS485正确接法(差分抗干扰)

PLC-A ────▶ 设备-A

PLC-B ────▶ 设备-B

屏蔽层───▶ 单点接地(柜体PE)

2. Profibus-DP接头内部玄机

进线端 ────■───▶ 出线端

├─▶ 终端电阻开关(末端ON)

设备接口 ◀─┘

铁律:紫色电缆阻抗150Ω,普通电缆导致波形畸变

3. Modbus帧结构(十六进制原始报文)

[从站地址][功能码][起始地址Hi][起始地址Lo][数据Hi][数据Lo][CRC-Lo][CRC-Hi]

例:01 03 00 00 00 01 84 D1 // 读40001寄存器

4. Profibus-DP报文特权指令

SD2 LE LEr SD DA SA FC DSAP SSAP DU FCS ED

↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑

| | | | | | | | | └─ 结束符

| | | | | | | | └─ 数据单元

| | | | | | └───┴─ 服务访问点

| | | | | └── 帧控制

| | | | └─── 源地址

| | | └──── 目标地址

| | └─── 长度重复

| └────── 长度

└──────── 开始符

三、CRC校验算法手工破译

1. CRC计算三步斩(以指令01 03 00 00 00 01为例)

步骤1:数据帧拼接

01 03 00 00 00 01 → 追加CRC空位0000 → 01 03 00 00 00 01 00 00

步骤2:多项式除法(0xA001)

1001 1000 0000 0001 // 0xA001二进制

÷ 0000 0001 0000 0011 0000 0000 0000 0000 0000 0001 0000 0000 // 数据帧

余数 = 1101 1110 → 0xDE

步骤3:高低字节交换 → CRC=0x84D1

2. 三菱PLC手工CRC程序

| 网络1:计算CRC16 |

| MOV K0 D100 // CRC初始值 |

|–| |—-|MOV|———-| |

| FOR K1 K8 // 循环8字节 |

|–| |—-|FOR|———-| |

| XOR D10 D100 // 异或运算 |

|–| |—-|XOR|———-| |

| SHR D100 K1 // 右移1位 |

|–| |—-|SHR|———-| |

| IF D100.15=1 // 判断溢出 |

|–| |—-|IF|———–| |

| XOR H8005 D100 // 异或多项式 |

|–| |—-|XOR|———-| |

| NEXT // 结束循环 |

四、主要品牌通信指令

1. 西门子S7-1200的MB_MASTER

MB_MASTER(

REQ := Start_Req, // 必须用上升沿!

MB_ADDR:= 1, // 从站地址

MODE := 0, // 0=读 1=写

DATA_ADDR:= 40001, // 4x区+1偏移

DATA_LEN := 1, // 读取字数

DATA_PTR := ^DB1.DBB0, // 指向数据区

DONE := Done_Flag,

ERROR := Error_Code // 16#8180=超时

);

注意:

DATA_ADDR必须减1(40001实际填40000)

超时时间在PLC属性→循环时间修改

2. 三菱FX5U ADPRW指令细节

| ADPRW U0 K1 H1 K4 K40001 K1 D100 |

| ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ |

| | | | | | | | └─ 本地寄存器

| | | | | | └─────┴─ 从站地址(40001=H9C41)

| | | | | └──────── 功能码(4=读输入寄存器)

| | | | └───────── 从站号

| | | └────────── 通信口(U0=内置485)

| └─────────────── 指令

指南:

从站地址必须转十六进制(40001 → H9C41)

波特率需在GX Works3模块参数设置

五、工业现场

1. 干扰导致数据跳变解决方案

硬件:

■ 在AB线间并双向TVS管(P6KE6.8CA)

软件:

MOV D100 D200 // 原始值

FILTER D200 K5 D210 // 5次滑动平均滤波

2. 从站无响应排查

步骤1:用USB转485工具监听报文(波特率/地址校验)

步骤2:短接PLC的A/B线自发自收(检测端口硬件)

步骤3:断开所有从站,逐个挂接(定位故障设备)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/187187.html

(0)
上一篇 2025-09-01 10:45
下一篇 2025-09-01 11:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信