回复:如何将某个字节VB**的最低7位和最高位分别读出,并分别转换成另外两个字节??

已锁定

sdzcl

  • 帖子

    18
  • 精华

    0
  • 被关注

    2

论坛等级:游民

注册时间:2016-10-12

普通 普通 如何晋级?

发布于 2021-01-18 13:48:19

4楼

展开查看
以下是引用Zaxife在2021-01-18 13:15:59的发言 >2楼

0xA000这种Modbus通讯地址是输出线圈,也就是位变量,你确定厂家的资料没错?用位变量来传输8个位的内容?

3xA000 、4xA000这些才是字存储的寄存器。


如果读取的是线圈,则读取地址是 40960(A000),如果读取的是输入寄存器则是340960,如果读取的是保持寄存器则是440960。还有国内很多厂家都不按标准Modbus地址编号的,所以实际的地址有可能是40959?40960?40961。这种乱七八糟的情况我在用第三方Modbus外设就都碰到过,不稀奇。


至于拆分寄存器的高低字节?可以直接取就可以了,不用特意转换。比如读取的内容放在VW100,那么VB100就是高字节、VB101就是低字节。如果VW100=16#1234,那么VB100=16#12、VB101=16#34。

最位也可以直接用V100.7获取。

谢谢大侠的指点!

是不是根据该协议,写寄存器从”340960“开始,读保持寄存器从”40960“开始,还需要偏移1吗?

如果VB中取低位7位转换成另外一个数值,是不是直接左移7位,然后得数除以10即可?

不怕没有,只要自己有心,没有也可变为有!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9002条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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