回复:S7-1200组态做ModbusTcp服务器时,如何位映射到保持寄存器

yming

西门子1847工业学习平台

  • 帖子

    23142
  • 精华

    881
  • 被关注

    1253

论坛等级:至圣

注册时间:2004-03-06

钻石 钻石 如何晋级?

发布于 2017-08-13 12:53:30

10楼

展开查看
以下是引用好不好99在2017-08-13 12:33:18的发言 >

我说错了,应该是字。我设置了一个含15个Int变量的Modbus数组区,程序如下:

我把我要传递的M80.1放在BinaryPoints这个Int变量里, MOVE给数组[15], 然后呢?上位机如何读取呢?我能成功读取整个16位字,但是难道要我在上位机里编程来分离单个位吗? 我又该如何把1赋值给BinaryPoints中的第二个位呢?

我的上位机软件有两个选项,一个是读取字,我能够成功读取(设置偏移量为15,相当于40015):

我的上位机软件另外一个选项是Binary(位),如果选位操作的话,该怎么设置偏移量呢?:


然后,为了把值1赋值给M80.1, 我是否再来一次MOVE,从数组MOVE给Binary?

这里头似乎很复杂,但1200的说明书上没有讲。



1200的MODBUS TCP 对于寄存器来说,偏移是和那个 40000 对应的。

你用40015就别偏移了。你可以自己测试一下(别偏移那么多,偏移1个字,不就知道两者的关系了吗?)

MODBUS TCP对寄存器有位的寻址么?只有实际硬件的输入输出位吧?


题外话:我觉得MODBUS 协议是针对传感器信号传输开发的,所以它的一些规定都是针对这些:

 开关量输入输出:位的读和写。

模拟量输入输出:字的读和写。

寄存器参数设置的:字的读和写。



学而时习之,不亦说乎?温故而知新,不亦乐乎?
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15105条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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