回复:S7-200与台达VFD-M通信。

wjy18

  • 帖子

    455
  • 精华

    0
  • 被关注

    9

论坛等级:侠士

注册时间:2009-11-20

普通 普通 如何晋级?

发布于 2011-12-28 12:38:42

6楼

我有网上看到的资料,可能还是这个论坛的,记不清了,
LRC纵向冗余校验LRC:Longitudinal Redundancy Check,纵向冗余校验,简称LRC校验或纵向校验。
下面以实例对这种校验方法做个说明。
台达VFD-M系列变频器的modbus ASCII通信模式採用LRC偵誤值。LRC偵誤值乃是將ADR1至最後一個資料內容加總,得到之結果以十进制的256為單位,超出之部分去除(例如得到之結果為十六進位之128H則只取28H(减去了100H,就是减去了256D)),然後計算二次反補後得到之結果即為LRC偵誤值。例如:從地址為01H之交流電機驅動器的0401H地址讀取1個字。
STX ‘:’
ADR 1 ‘0’
ADR 0 ‘1’
CMD 1 ‘0’
CMD 0 ‘3’
啟始資料地址‘0’
‘4’
‘0’
‘1’
資料數 ‘0’
‘0’
‘0’
‘1’
LRC CHK 1 ‘F’
LRC CHK 0 ‘6’
END 1 CR
END 0 LF
01H+03H+04H+01H+00H+01H=0AH, 0AH的二次反補為F6H。
二次反补:取反然后加1B或1H(1B=1H)。
计算方法1:
取反后加1B:把数据转换为二进制,每位取反后再加1B。例如:0AH=00001010B,按位取反后得11110101B,11110101B+1B=11110110B=F6H,0AH的二次反补就是F6H。
取反后加1H:把数据转换为二进制,每位取反后再加1H。例如:0AH=00001010B,按位取反后得11110101B=F5H,F5H+1H=F6H,0AH的二次反补就是F6H。
计算方法2:
有个简单算法就是:这个十六进制值有几位数,就把高于这个位数的最小值减去这个值。如果16进制数有2位,那么高于2位的最小值就是100H,用100H减去这个数就是其二次反补。
实际上,该方法的原理和方法1相同:以2位16进制数为例,FFH减去那个数就是把那个数取反(FFH的数据为全1,减去那个数的结果就是原来1的位数变为0,原来0的位数变为1),而FFH+1H=100H。所以取反然后加一就等于100H减去这个数。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。