求助modbus的lrc算法 点击:2129 | 回复:4



szais

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 7回
  • 年度积分:0
  • 历史总积分:19
  • 注册:2001年11月23日
发表于:2002-07-10 20:21:00
楼主
lrc算法通过vc来编写,是按照手册上的例子来做的,可惜结果就是不对。有哪位高手知道到底该怎样写,有例子吗?



szais

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 7回
  • 年度积分:0
  • 历史总积分:19
  • 注册:2001年11月23日
发表于:2002-05-28 14:53:00
1楼
没有人知道吗? 有一例子: 某命令串为":010200000001FC" 其16进制为“3A 30 31 30 32 30 30 30 30 30 30 30 31 46 43 0D 0A”。其中第一个为起始符,2-13为数据,14-15即“FC”为LRC校验码,有人能告诉我FC是如何算出来的吗?

leef

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 1回
  • 年度积分:0
  • 历史总积分:7
  • 注册:2002年6月11日
发表于:2002-06-18 10:58:00
2楼
01+02+00+00+00+01=04; 取2的补码100-04=FC

远 方

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 401回
  • 年度积分:0
  • 历史总积分:561
  • 注册:2002年1月29日
发表于:2002-06-19 09:10:00
3楼
命令串就是十六进制数吧??? 楼上兄弟讲的很对,LRC的定义为: LRC侦误值及是将第一至最后一个资料内容加总,得到之结果以256为单位,超出之部分去除(例如得到之结果为十六进位128H,则只取28H),然后计算二次反补后得到之结果即为LRC侦误值。 如果你的程序有问题,你可以单步看看每步算得是否对,可能位操作会容易出错。

bevans

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2002年7月10日
发表于:2002-07-10 20:21:00
4楼
LRC 看来就是所谓的零校验了。

热门招聘
相关主题

官方公众号

智造工程师