- 打卡等级:初来乍到
- 打卡总天数:8
- 最近打卡:2025-03-18 20:40:21
中级会员
- 积分
- 345
|
发表于 2023-9-9 20:30:49
|
显示全部楼层
本帖最后由 大亮 于 2023-9-10 16:26 编辑
2023/08/28, 梁工讲MODBUS,课堂笔记
应用层控制协议 工控 PLC 全球通用 协议文本 报文传输协议 询问/应答协议 纯软件协议与硬件无关
两种传输模式 :ASCII RTU
一主多从 RTU模式 信息中所有数据都死十六进制传输 每一帧都要连续传输
数据位: 1起始位 8位数据, 地位先送 奇偶校验占1位 3.5个字符(字节)世间法空闲
写多寄存器:
地址【1】 功能吗【1】 寄存器地址【2】 寄存器个数【2】 写入字节【1】 写入数据【2*n】 校验CRC16【2】
地址:从机设备地址 0x00~0xff 0x00广播,从机不返回信息
功能码:本次命令的操作功能,查询编码文本 功能码 0x10:写多个寄存器
寄存器地址: MODMBUS协议对数据的都是基于寄存器访问的,每个寄存器2个字节(word),高字节在前,低字节在后
要写入的寄存器个数, 0x0004表示写入4个寄存器
要写入的字节数: 0x08表示要写入8个字节(4个寄存器)
8个字节要写入的数据
CRC16 2个字节(小端模式,低字节在前、高字节在后)
CRC判断、地址判断
从机返回:
地址【1】 功能吗【1】 寄存器地址【2】 寄存器个数【2】 CRC16【2】
返回错误帧:
地址【1】 错误码【1】 CRC16[2]
TX 10 10 1000 0004 08 12 34 56 78 90 AB CD EF 49 30
RX 10 03 10 00 00 04 43 88 10 03 06 12 34 56 78 90 AB CD EF D5 3B
实现代码详解。。。
timer0_config()
void UART1_CONFIG(U32 BRT, U8 TIMER ,U8 EIO)
代码模块化,分层,串口完成数据传输,报文处理、怎么用由上层处理
代码详解。。。
|
|