发布于 2008-12-25 21:22:57
0楼
以下为ASCII方式:(库中为RTU方式)
LRC校验被称为“纵向冗余错误校验”,在LRC校验时,冒号(:)、回车字符(CR)、换行字符(LF)
和置入的其他任何非ASCII十六进制字符在运算时忽略不计。
计算方法如下:
十六进制 二进制
----------------------------------------------------
地址 0 2 0000 0010
功能码 0 1 0000 0001
起始地址高位 0 0 0000 0000
起始地址低位 0 0 0000 0000
单元数量 0 0 0000 0000
0 8 0000 1000
---------------------
计算出二进制和:0000 1011
---------------------
和的二进制补码:1111 0100
---------------------
补码+1后的结果: 1111 0101
---------------------
转换成十六进制: F 5
当接收到的 信息报文数据字节 + LRC = 零(超过8位的数据忽略掉),则说明报文正确。
Modbus协议ASCII方式的报文示意:
Master请求Slave的报文:
: 06 03 00 6B 00 03 LRC(占2字符) 回车 换行
-- -- -- -- -- -- -- ------------- ---- ----
Slave响应Master的报文:
: 06 03 06 02 2B 00 00 00 63 LRC(占2字符) 回车 换行
-- -- -- -- ----- ----- ----- ------------- ---- ----
起 从 读 数 第 第 第 校 结束符
始 站 指 据 一 二 三 验
符 地 令 的 个 个 个
址 字 数 数 数
节 据 据 据
数
量
工控——这是一条不归路啊