用MCGS做过MODBUS的请进!急!! 点击:3410 | 回复:20



zhouke04

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 11回
  • 年度积分:0
  • 历史总积分:74
  • 注册:2008年11月08日
发表于:2010-06-23 14:38:16
楼主

我现在需要以MODBUS RTU做如下通讯,可否使用MCGS嵌入版自带“标准MODBUS RUT设备”驱动实现?

发送:

01 03 00 6B CRC低 CRC高                (地址 功能 读取起始 读取位数 校验 校验)     

 

接收:

01 03 xx xx xx xx CRC低 CRC高             (地址 功能 数据1 数据2 数据3 数据4 校验 校验)

 

发送中的“读取起始”和“读取位数”必须是 “00”和“6B”!




W5880527

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 373回
  • 年度积分:0
  • 历史总积分:239
  • 注册:2008年5月16日
发表于:2010-06-23 15:56:31
1楼

你那个发送的数据不全,不标准,除掉地址双字节,就没有读取位数信息了

zhouke04

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 11回
  • 年度积分:0
  • 历史总积分:74
  • 注册:2008年11月08日
发表于:2010-06-23 16:33:04
2楼
回复内容:
对:W5880527 关于

你那个发送的数据不全,不标准,除掉地址双字节,就没有读取位数信息了

内容的回复:

发送是否应改为: 01 03 00 00 00 6B CRC低 CRC高




W5880527

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 373回
  • 年度积分:0
  • 历史总积分:239
  • 注册:2008年5月16日
发表于:2010-06-24 09:27:09
3楼

百度一下就可以解决的事情,工作了要学会自己解决问题哈,不是在学校了

zhouke04

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 11回
  • 年度积分:0
  • 历史总积分:74
  • 注册:2008年11月08日
发表于:2010-06-24 14:24:48
4楼

已解决 采集脚本贴上

!ArrayResize(SendByteArr,6)
SendByteArr[1] = &H01
SendByteArr[2] = &H03
SendByteArr[3] = &H00
SendByteArr[4] = &H6B
nReturn = !SvrByteArrayModbusCRC(SendByteArr,1,4)
SendByteArr[5] = !BitAnd(nReturn,&H000000FF)
nTmp = !BitAnd(nReturn,&H0000FF00)
SendByteArr[6] = !BitRShift(nTmp ,8)

‘发送和接收数据按如下方式:
!ArrayResize(RecByteArr,9)
nReturn = !DevWriteAndReadByteArr(SendByteArr, 6, RecByteArr, 9, 通讯延时)
if nReturn <> 9 then
!SetSingleChannelValueByName("通讯状态", 1)
exit
endif

nIndex = 0
!ArrayResize(DataByteArr,1)
while nIndex < 7
DataByteArr[1] = RecByteArr[nIndex*1+1]
nReturn = !SvrGetByteFromByteArr(DataByteArr,1,开关数据,0)
数值数据 = 开关数据
!SetSingleChannelValueByNum(nIndex+nChlIndex+2,数值数据)
nIndex = nIndex + 1
endwhile
nChlIndex = nChlIndex + nIndex‘设置通讯标志,解析都正确
!SetSingleChannelValueByName("通讯状态", 0)
!SetSingleChannelValueByName("AI01",RecByteArr[1] )
!SetSingleChannelValueByName("AI02",RecByteArr[2] )
!SetSingleChannelValueByName("AI03",RecByteArr[3] )
!SetSingleChannelValueByName("AI04",RecByteArr[4] )
!SetSingleChannelValueByName("AI05",RecByteArr[5] )
!SetSingleChannelValueByName("AI06",RecByteArr[6] )
!SetSingleChannelValueByName("AI07",RecByteArr[7] )

zhouke04

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 11回
  • 年度积分:0
  • 历史总积分:74
  • 注册:2008年11月08日
发表于:2010-06-24 14:28:46
5楼
回复内容:
对:W5880527 关于

百度一下就可以解决的事情,工作了要学会自己解决问题哈,不是在学校了

 

他那个协议是不标准

但我确实是通过上面那个协议做的,现在也成功采集到了数据。

不过还是谢谢你

ArrayResize(SendByteArr,6)
SendByteArr[1] = &H01
SendByteArr[2] = &H03
SendByteArr[3] = &H00
SendByteArr[4] = &H6B
nReturn = !SvrByteArrayModbusCRC(SendByteArr,1,4)
SendByteArr[5] = !BitAnd(nReturn,&H000000FF)
nTmp = !BitAnd(nReturn,&H0000FF00)
SendByteArr[6] = !BitRShift(nTmp ,8)

‘发送和接收数据按如下方式:
!ArrayResize(RecByteArr,9)
nReturn = !DevWriteAndReadByteArr(SendByteArr, 6, RecByteArr, 9, 通讯延时)
if nReturn <> 9 then
!SetSingleChannelValueByName("通讯状态", 1)
exit
endif



内容的回复:

W5880527

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 373回
  • 年度积分:0
  • 历史总积分:239
  • 注册:2008年5月16日
发表于:2010-06-24 16:04:33
6楼
一个字节作为地址最多就读256的空间,太不标准了

gk2017

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 8回
  • 年度积分:0
  • 历史总积分:73
  • 注册:2017年10月11日
发表于:2019-03-17 12:52:56
7楼

谢谢分享,好东西正要用呵呵

fengxiaolangzi

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 536回
  • 年度积分:0
  • 历史总积分:490
  • 注册:2014年1月07日
发表于:2019-09-15 15:44:31
8楼

谢谢分享,好东西正要用呵呵

daivd

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 324回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2008年5月28日
发表于:2019-12-29 12:45:35
9楼

谢谢分享,好东西正要用呵呵

杨克1978

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 18回
  • 年度积分:0
  • 历史总积分:63
  • 注册:2019年9月10日
发表于:2020-02-20 23:17:31
10楼

谢分享,好东西正要用呵呵

steven_2016

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 74回
  • 年度积分:0
  • 历史总积分:57
  • 注册:2016年6月01日
发表于:2020-03-03 15:58:30
11楼

谢谢分享,学习一下 ,感谢感谢

xufuqiang

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 49回
  • 年度积分:8
  • 历史总积分:179
  • 注册:2009年10月23日
发表于:2020-03-13 10:11:25
12楼

不错的资料,下载学习一下,谢谢楼主分享!


lwtwm

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 56回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2006年1月02日
发表于:2020-03-18 10:56:53
13楼

谢谢楼主分享

紫湮

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 53回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2012年12月11日
发表于:2020-04-05 23:33:49
14楼

好东西 谢谢分享 学习了

summer205

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 338回
  • 年度积分:1
  • 历史总积分:234
  • 注册:2019年1月10日
发表于:2020-08-07 14:03:40
15楼

很不错的例子,学学脚本

弱水三千315

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 34回
  • 年度积分:0
  • 历史总积分:53
  • 注册:2016年12月31日
发表于:2020-08-22 11:44:44
16楼

很不错的例子,学学脚本

陈鹏电工

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 79回
  • 年度积分:0
  • 历史总积分:79
  • 注册:2013年5月03日
发表于:2020-09-07 20:14:35
17楼

谢谢分享

糊糊糊糊

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 15回
  • 年度积分:0
  • 历史总积分:109
  • 注册:2018年5月23日
发表于:2021-02-04 11:37:43
18楼

谢谢分享,学习一下 ,感谢感谢

q555859

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 18回
  • 年度积分:0
  • 历史总积分:58
  • 注册:2021年2月24日
发表于:2021-03-01 09:26:42
19楼

赚不到钱,赚积分我还是能赚的

yulin3192

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2013年10月25日
发表于:2022-04-07 13:19:56
20楼

我还不知道脚本怎么编写了


热门招聘
相关主题

官方公众号

智造工程师