请教和校验的问题? 点击:868 | 回复:5



自控小生

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:54帖 | 204回
  • 年度积分:0
  • 历史总积分:349
  • 注册:2005年11月29日
发表于:2007-01-12 21:33:00
楼主
VB和FX2NPLC通讯,和校验的程序如何编写,望高手指教,谢谢了!



朱勇军

  • 精华:0帖
  • 求助:0帖
  • 帖子:28帖 | 1921回
  • 年度积分:0
  • 历史总积分:2210
  • 注册:2004年4月06日
发表于:2007-01-13 08:38:00
1楼
在校验中和校验最容易编写了。把需要校验的所有数据相加就可以了。比如下面:
LD M8000 
ADD D0 D1 D20
ADD D2 D20 D20
ADD D3 D20 D20
ADD D4 D20 D20
那么就把D0--D4的数据相加放到D20里了。其他数据以此类推。
我生产三菱PLC的编程电缆。欢迎光临我的网站:plc.123ye.com.

自控小生

  • 精华:0帖
  • 求助:0帖
  • 帖子:54帖 | 204回
  • 年度积分:0
  • 历史总积分:349
  • 注册:2005年11月29日
发表于:2007-01-13 10:19:00
2楼
Private Function SumChk(Dats$) As String
    Dim i&
    Dim CHK&
    For i = 1 To Len(Dats)
        CHK = CHK + Asc(Mid(Dats, i, 1))
    Next i
    SumChk = Right(Hex$(CHK), 2)
End Function


比如例子:通讯协议
STX ,CMD ,ADDRESS, BYTES, ETX, SUM
02H, 30H, 31H,30H,46H,36H, 30H,34H, 03H, 37H,34H
和校验为:SUM=CMD+......+ETX;
               30h+31h+30h+46h+36h+30h+34h+03h=74h;
Dats$为“3031304636303403”吗?可是返回的不是74啊,如何解释?
Dats$如何写,望指教!

LG产电MM

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 174回
  • 年度积分:0
  • 历史总积分:342
  • 注册:2003年8月26日
发表于:2007-01-16 16:17:00
3楼
用C写函数最简洁!

自控小生

  • 精华:0帖
  • 求助:0帖
  • 帖子:54帖 | 204回
  • 年度积分:0
  • 历史总积分:349
  • 注册:2005年11月29日
发表于:2007-01-18 12:11:00
4楼
我知道了,被误导了,以下的校验函数源码是正确的。
 Private Function SumChk(Dats$) As String
    Dim i&
    Dim CHK&
    For i = 1 To Len(Dats)
        CHK = CHK + Asc(Mid(Dats, i, 1))
    Next i
    SumChk = Right(Hex$(CHK), 2)
End Function

wlthgzk

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2007年10月29日
发表于:2008-05-07 11:16:22
5楼

把总合除以一个256


热门招聘
相关主题

官方公众号

智造工程师