求助s7-200的crc校验问题 点击:2087 | 回复:12



wode1949

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 164回
  • 年度积分:0
  • 历史总积分:107
  • 注册:2012年8月10日
发表于:2012-08-10 20:00:37
楼主

利用modbus rtu通讯方式读变频器的参数,直接用西门子的MBUS_MSG指令读取。如果我想用crc校验来检测数据的正确性,请问crc校验的程序还需不需要自己编写?恳请各位高手解答,拜谢!




yjig

  • 精华:2帖
  • 求助:5帖
  • 帖子:97帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2012-08-10 20:23:41
1楼
CRC校验不需要,S7-200内部有现成的库,可直接调用,但变频读、写程序还是要的。

wode1949

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 164回
  • 年度积分:0
  • 历史总积分:107
  • 注册:2012年8月10日
发表于:2012-08-10 22:19:12
2楼
回复内容:
对:yjig关于CRC校验不需要,S7-200内部有现成的库,可直接调用,但变频读、写程序还是要的。 内容的回复:

有crc校验的库?直接设置成MBUS_MSG指令的RW设置成2,然后直接调用crc校验的库就可以了?是不是这样?

yjig

  • 精华:2帖
  • 求助:5帖
  • 帖子:97帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2012-08-10 23:34:36
3楼

RW设置成2?

没见过设置成2,RW是读、写设置,只能为0,或者为1,0表示只能读,1表示只能写。

wode1949

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 164回
  • 年度积分:0
  • 历史总积分:107
  • 注册:2012年8月10日
发表于:2012-08-11 11:27:15
4楼
汗, 说错了,是设置成parity设置成2。然后直接调用crc校验的库就行?

wode1949

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 164回
  • 年度积分:0
  • 历史总积分:107
  • 注册:2012年8月10日
发表于:2012-08-11 11:49:51
5楼
是不是parity这儿只要设置成2,然后只要发一个modbus请求,接收过来的数据是不是就是校验过后的的数据了?

yjig

  • 精华:2帖
  • 求助:5帖
  • 帖子:97帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2012-08-11 16:31:23
6楼

又错了!见下图,parity是校验区别码,设置成2表明是偶校验,与你的解释没关系。

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2012-08-12 11:36:45
7楼

既然你调用了 Modbus RTU 库指令, CRC 校验 在内部就完成了,不需要你再 额外 去调用 CRC 校验程序,

 

CRC 校验是在每一帧数据 发送或接收完成时 就要调用的。

 

wode1949

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 164回
  • 年度积分:0
  • 历史总积分:107
  • 注册:2012年8月10日
发表于:2012-08-14 20:08:42
8楼
回复内容:
对:yjig关于又错了!见下图,parity是校验区别码,设置成2表明是偶校验,与你的解释没关系。内容的回复:


嗯,谢谢。

wode1949

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 164回
  • 年度积分:0
  • 历史总积分:107
  • 注册:2012年8月10日
发表于:2012-08-14 20:10:20
9楼
回复内容:
对:miy_gongkong关于既然你调用了 Modbus RTU 库指令, CRC 校验 在内部就完成了,不需要你再 额外 去调用 CRC 校验程序,  CRC 校验是在每一帧数据 发送或接收完成时 就要调用的。  内容的回复:


我就是在这儿卡住了,不知道西门子modbus rtu的库到底包含什么程序,里面是不是有crc校验程序。听你这么一解释,我好像知道了。

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2012-08-15 10:37:14
10楼
引用 wode1949 的回复内容:回复内容:对:miy_gongkong关于既然你调用了 Modbus RTU 库指令, CRC 校验 在内部就完成了,不需要你再 额外 去调用 CRC 校验程序,  CRC 校验是在每一帧数据 发送或接收完成时 就要调用的。  内容的回复:我就是在这儿卡住了,不知道西门子modbus rtu的库到底包含什么程序,里面是不是有crc校验程序。听你这么一解释,我好像知道了。



就这么理解就对了, CRC 校验就在库里面 完成了,不需要额外去 写,或者调用。

工控小周

  • 精华:0帖
  • 求助:3帖
  • 帖子:45帖 | 502回
  • 年度积分:3
  • 历史总积分:2254
  • 注册:2011年10月28日
发表于:2012-08-15 10:54:02
11楼
就是西门子没有C语言调用,不然CRC校验很简单

wode1949

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 164回
  • 年度积分:0
  • 历史总积分:107
  • 注册:2012年8月10日
发表于:2012-08-16 15:49:19
12楼

根据这儿的程序,假设40004保持寄存器是10000,那读出来存到vb500的值是多少?是不是也是10000?那crc校验码又存在哪儿呢?


热门招聘
相关主题

官方公众号

智造工程师