技术论坛

Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??

作者 主题
游民

经验值: 130
发帖数: 9
精华帖: 0
主题:【探讨】Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??
推荐帖


只看楼主 楼主 2022-12-20 22:16:31

在有些仪表的寄存器的值为实数型, 常规  &VB XX 写入 后, 仪表寄存内实际的值为 VWxx 值 / 100 , 


按VW 最大而言,65535, 所以仪表内最大只能写入655, 这种情况下如何实现 写入值超过655,譬如输入 1000, 该如何实现


 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1800275&b_id=64&s_id=0&num=17

版主

经验值: 25998
发帖数: 11809
精华帖: 43
回复:Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??


只看楼主 1楼 2022-12-20 22:57:32

我没看明白问题


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1004
发帖数: 144
精华帖: 0
回复:Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??


只看楼主 2楼 2022-12-21 09:41:15

能否描述再多一点


自力更生,艰苦创业;团结协作,无私奉献
以下网友喜欢您的帖子:

  
至圣

经验值: 67550
发帖数: 14784
精华帖: 100
回复:Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??


只看楼主 3楼 2022-12-21 09:51:28

你发一下说明书。有人看完就会帮你做。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 17196
发帖数: 2948
精华帖: 6
回复:Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??


只看楼主 4楼 2022-12-21 10:08:59

楼主可能对于&VB**理解有错误。


 
以下网友喜欢您的帖子:

  
游民

经验值: 130
发帖数: 9
精华帖: 0
回复:Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??


只看楼主 楼主 5楼 2022-12-21 10:37:09



谢谢大家的回答。


如上图, 仪表的寄存器地址是 3, VW80 内的值( 譬如1000)写入到400003 后, 仪表内的实际值是10.00,


实际的要求需要仪表内的值为1000.00, 那我VW80 的值就得100*1000; 而 VW80 最大值范围是 65535, 


不知道大家有没有遇到过这个问题过。


再次感谢。。


 
以下网友喜欢您的帖子:

  
版主

经验值: 25998
发帖数: 11809
精华帖: 43
回复:Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??


只看楼主 6楼 2022-12-21 11:02:13

仪表传过来的值,为什么要*100?

就你说的,1000的值不对吗?


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72012
发帖数: 8043
精华帖: 145
回复:Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??


只看楼主 7楼 2022-12-21 11:51:36

大概看明白你的提问了,这个是病句。

你的意思是在一个字里面,需要在VW80里面传送数据大于65535的数据?

这个神仙都无法实现的伪命题。

如果需要写数据大于65535的数据,你至少在count填写大于1的数据才可以。

你还是重新核实实际的应用,400003 里面到底能够存放多大的数据,400002、400004是什么?


 
以下网友喜欢您的帖子:

  
至圣

经验值: 17196
发帖数: 2948
精华帖: 6
回复:Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??


只看楼主 8楼 2022-12-21 13:09:34

按照楼主的贴图,cont=1是不能正确读的浮点数的数值。因为浮点数占用2个字,读1个浮点数cont=2.

读到这个浮点数存储在vw80和vw82。因为西门子浮点数字地址顺序与标准相反,必须对vw80和vw82进行地址交换才能得到正确的浮点数。


 
以下网友喜欢您的帖子:

  
游民

经验值: 130
发帖数: 9
精华帖: 0
回复:Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??


只看楼主 楼主 9楼 2022-12-21 13:30:34

从 手册看,Modbus-TCP client DataPatr 的数据格式只能是整形,浮点型不支持。。


这个问题应该无解, 只能从仪表端的寄存器地址看看有没有别的地址可以用。。


谢谢大家了


 
以下网友喜欢您的帖子:

  
至圣

经验值: 17196
发帖数: 2948
精华帖: 6
回复:Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??


只看楼主 10楼 2022-12-21 15:33:13
以下是引用argus在2022-12-21 13:30:34的发言 >9楼

从 手册看,Modbus-TCP client DataPatr 的数据格式只能是整形,浮点型不支持。。


这个问题应该无解, 只能从仪表端的寄存器地址看看有没有别的地址可以用。。


谢谢大家了

支持浮点数的,它要占用连续的2个地址。



 
以下网友喜欢您的帖子:

  
游民

经验值: 130
发帖数: 9
精华帖: 0
回复:Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??


只看楼主 楼主 11楼 2022-12-21 15:54:25
以下是引用YUKJ在2022-12-21 15:33:13的发言 >10楼

支持浮点数的,它要占用连续的2个地址。


以下是引用argus在2022-12-21 13:30:34的发言 >9楼:从 手册看,Modbus-...

引用9楼详细内容:

从 手册看,Modbus-TCP client DataPatr 的数据格式只能是整形,浮点型不支持。。


这个问题应该无解, 只能从仪表端的寄存器地址看看有没有别的地址可以用。。


谢谢大家了


我试过, 如上图&VB500 为例, 在VD500 里赋实数值 1000.00,  但最终从 &VB500 里的写入仪表寄存器的数据 显示的 也不是 1000.00




 
以下网友喜欢您的帖子:

  
版主

经验值: 25998
发帖数: 11809
精华帖: 43
回复:Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??


只看楼主 12楼 2022-12-21 16:14:24

请问一下,你区分浮点(实数)和整数吗?


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72012
发帖数: 8043
精华帖: 145
回复:Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??


只看楼主 13楼 2022-12-21 16:17:39
以下是引用argus在2022-12-21 15:54:25的发言 >11楼


我试过, 如上图&VB500 为例, 在VD500 里赋实数值 1000.00,  但最终从 &VB500 里的写入仪表寄存器的数据 显示的 也不是 1000.00



以下是引用YUKJ在2022-12-21 15:33:13的发言 >10楼:支持浮点数的,它要...

引用10楼详细内容:

支持浮点数的,它要占用连续的2个地址。


以下是引用argus在2022-12-21 13:30:34的发言 >9楼:从 手册看,Modbus...

引用9楼详细内容:

从 手册看,Modbus-TCP client DataPatr 的数据格式只能是整形,浮点型不支持。。


这个问题应该无解, 只能从仪表端的寄存器地址看看有没有别的地址可以用。。


谢谢大家了

通讯才不管你是什么数据呢,但是,支持浮点数传送的。

你11楼测试时,count管脚写了几?仪表的add地址又是几?是什么数据类型,这个我在其它仪表中测试,数据写入到仪表是“自动”换算的。

一个浮点数,需要占用2个字的存储空间。count =2,才可以传送一个浮点数。这个还需要仪表支持这个ADD是浮点数。


 
以下网友喜欢您的帖子:

  
侠客

经验值: 979
发帖数: 82
精华帖: 1
回复:Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??


只看楼主 14楼 2022-12-21 21:19:39

你好,楼主。

PLC通过Modbus与仪表或变频器通讯时,确实存在读到寄存器(Word)的值处于0~65535(数据类型为Uint)或者-32768~32767(Int)的情况。比如说PLC与某国产变频器进行Modbus通讯,读到400023(最大工作频率)的值为5000,此时,我们需要将读到的值除以100后得到实际值50.00Hz;再比如说,读到400007(额定电流)的值为420,我们除以10后得到额定电流为42.0A。具体缩放倍数需要查看相应的说明书。

Modbus通讯,字寄存器的最大值就是0~65535或-32768~32767。如果是前者取值范围(无符号整型),不能用编程软件自带指令I_DI、DI_R去转换计算(自带的均为有符号整型转换,转换后会出现负数的情况),需要用到无符号数据类型进行转换,才不会出现转换异常的情况,详见下面链接;当然如果是后者的取值范围,则不存在转换异常的情况。楼主想要的值超过了这个范围,可能是楼主把缩放倍数搞错了,有的值是缩小10倍,有的是缩小100倍详见说明书

链接:

无符号数据类型的转换、比较及运算解决方案



 
以下网友喜欢您的帖子:

  
侠士

经验值: 1371
发帖数: 161
精华帖: 0
回复:Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??


只看楼主 15楼 2022-12-22 09:04:20

数据类型是不是选的int-32768~32767,选word0-65535


 
以下网友喜欢您的帖子:

  
至圣

经验值: 67550
发帖数: 14784
精华帖: 100
回复:Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??


只看楼主 17楼 2022-12-22 14:07:31

知不知道Count是什么?可能还有很多事情未知道。一千亿都可以写进去。先看看说明书吧。

&vb80只是一个指针它是一大堆数之中的第一个格。这堆数有多大?你查查吧。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 14228
发帖数: 3255
精华帖: 1
回复:Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??


只看楼主 18楼 2022-12-22 20:56:10

需要的数值直接写进去就可以,没那么复杂。


就是一个字——坚持!!!
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
Modbus TCP Client 应用中 &VB 值超过65535的情况,如何实现??
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。