回复:MODBUS通讯的问题!盼有经验同志赐教!

H.L

  • 帖子

    1766
  • 精华

    9
  • 被关注

    8

论坛等级:侠圣

注册时间:2005-07-20

普通 普通 如何晋级?

发布于 2007-04-13 10:03:27

0楼


MSComm1.SThreshold = 0'以二进制方式传输
下面是个简单的例子:
写多个字的命令(本例是写2号站%MW20起始的3个字):
   Dim WriteStr() As Byte
   k = 6 ,写6个字节
   ReDim WriteStr(8 + k)
  
   WriteStr(0) = 2 ,从站号是2
   WriteStr(1) = &H10 ,写多个字的命令代码
   WriteStr(2) = 0 ,起始地址高字节
   WriteStr(3) = 20 ,起始地址低字节
   WriteStr(4) = &H0 ,数据长度高字节<字的个数>
   WriteStr(5) = k / 2 ,数据长度低字节<字的个数>
  
   WriteStr(6) = k ,数据长度<字节的个数>
   WriteStr(7) = &H12,写的第1个字的高字节
   WriteStr(8) = &H34,写的第1个字的低字节
   WriteStr(9) = &H56,写的第2个字的高字节
   WriteStr(10) = &H78,写的第2个字的低字节
   WriteStr(11) = &H9A,写的第3个字的高字节
   WriteStr(12) = &HBC,写的第3个字的低字节
  
   Call crc16(WriteStr(), 6 + k)'crc计算
   WriteStr(9 + (k / 2 - 1) * 2) = HiByte
   WriteStr(10 + (k / 2 - 1) * 2) = LoByte
  
   MSComm1.InBufferCount = 0
   MSComm1.Output = WriteStr
只要你把实数转换成二进制,通过数组的形式,将几个字节发送出去就可以了。
既然你可以发送整数了,相信改成实数也很容易,至于发送到哪个地址,你应该很清楚的。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33289条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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