技术论坛

今天一个灵感,使我明白了Modbus_RTU的一个重要技术

作者 主题
侠圣

经验值: 3610
发帖数: 745
精华帖: 3
主题:【探讨】今天一个灵感,使我明白了Modbus_RTU的一个重要技术
推荐帖


只看楼主 楼主 2019-09-05 14:02:16

    我的PLC要接一个变频器的参数,用Modbus_RTU通信。

    一般地,外围设备传给PLC的是一串整数,然后PLC里进行等比例换算才会成为外围设备参数的真实值(就是数似5.5这样的带小数点的数)。比如,如果是接收温度的数值,温度范围是0-100度,那么它传给PLC的数值是0-27648,而不是0-100这样的。如果在某次测量中外围设备传给PLC的数值是16824,那么PLC里就得进行换算,就变成50度这样的了。50度是真实温度,而16824却不是。

     我觉得外围设备不可能会把参数的真实数值(类似5.5这样的)传给PLC,而是把类似16824这样的整数值传给PLC。可是,这次的项目中,变频器厂商明确地说传给我的数值是类似5.5这样的数字。我就犯糊涂了。因为这样就给我带来一个困难:5.5这样的数必然是32位的,没有可能是16位的。而Modbus_RTU是只能接受16位数据的。那么我的PLC里的Modbus_RTU就接不了5.5这样的数值了。

    对方对Modbus_RTU知之甚少,沟通下来没啥结果;它的Modbus_RTU手册也讲得含糊。

    后来我来了灵感,才明白事情的缘由。先看对方的手册,如下图:    

    举个例子,上图中第三行“电机电流”,其“精度”栏里写着0.1A。我判定是这样的,对方传给我的数值是55这样的,我在PLC里得除以10,得到5.5,这才是电流的真实值。上图中红框的“精度”栏的意思是除以整十数。以电流为例,对方永远不可能传给我一个5.5这样的数值,只会传给我55这样的数值。

   精度为0.1就是除以10,精度为0.01就是除以100。再以上图中第一行“输出频率”为例,此变频器传给我的PLC的数值是100,那么我在PLC里得把它除以100,变成1,这个1才是变频器的真实频率,就是1Hz;如果传过来的是200,除以100,就是2,说明这时变频器的频率是2Hz。

    诸位大侠,给个意见,我说得对不对?我是第一次用Modbus_RTU,许多东西还得学习。


 
以下网友喜欢您的帖子:

  
重要声明:

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

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

至圣

经验值: 24889
发帖数: 4534
精华帖: 10
回复:今天一个灵感,使我明白了Modbus_RTU的一个重要技术
推荐帖


只看楼主 1楼 2019-09-05 14:14:54

电量表一般都是这样传输MODBUS数据的,要看后面的精度的。


别人在休息的时候,我往前走。
以下网友喜欢您的帖子:

  
游民

经验值: 71
发帖数: 4
精华帖: 0
回复:今天一个灵感,使我明白了Modbus_RTU的一个重要技术


只看楼主 2楼 2019-09-05 14:56:11

这种情况很常见,跟精度无关,精度一般只是告诉你小数点后面保留多少位。至于MODBUS通讯来的数据,要看设备厂商怎么处理了,有些需要做运算的会直接说明,或者像这种简单的运算在对数据的时候能够看出来。


 
以下网友喜欢您的帖子:

  
新手

经验值: 42
发帖数: 1
精华帖: 0
回复:今天一个灵感,使我明白了Modbus_RTU的一个重要技术


只看楼主 3楼 2019-09-05 14:58:35

可以传送浮点数的,不要纠结在16位上面


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3610
发帖数: 745
精华帖: 3
回复:今天一个灵感,使我明白了Modbus_RTU的一个重要技术


只看楼主 楼主 4楼 2019-09-05 18:42:01
以下是引用暗香迷情在2019-09-05 14:58:35的发言 >3楼

可以传送浮点数的,不要纠结在16位上面

    关键对方的参数所在的寄存器地址是连着的,2104、2015、2016,分别对应着频率、速度和电流。我的DB块里的元素就只能用16位的了。可是对方说那些参数传来的是5.5这样的实数,这就让我混乱了。

    如果对方的参数所在的寄存器地址是间隔的,2104、2106、2108,那么它传来的参数是5.5这样的就可以理解了。

    我是第一次用RTU,对方对他的数据也不甚了了,所以造成我的不理解。

    后来我才想到,对方的数据传来是是55这样的整数,我得根据后面的精度再除以10,变成5.5这样的才行。于是,我就确定了用16位的元素去接对方的参数,然后在PLC里除以10这样的整十数。此前我一直在困惑于是用16位还是用32位的元素去接收对方传来的参数数据。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 10581
发帖数: 1796
精华帖: 0
回复:今天一个灵感,使我明白了Modbus_RTU的一个重要技术


只看楼主 5楼 2019-09-05 22:49:19
大家的分享很精彩,以后常来
 
以下网友喜欢您的帖子:

  
侠圣

经验值: 4511
发帖数: 522
精华帖: 0
回复:今天一个灵感,使我明白了Modbus_RTU的一个重要技术


只看楼主 7楼 2019-09-06 23:26:21

 多看相关资料,多学习!


孜孜不倦,向高峰挺进!
以下网友喜欢您的帖子:

  
侠圣

经验值: 3662
发帖数: 668
精华帖: 0
回复:今天一个灵感,使我明白了Modbus_RTU的一个重要技术


只看楼主 8楼 2019-09-20 10:26:55

RTU,和TCP  MODBUS都可以读写32位的


你让我滚,我滚了。你让我回来,对不起,滚远了...
以下网友喜欢您的帖子:

  
奇侠

经验值: 8513
发帖数: 884
精华帖: 8
回复:今天一个灵感,使我明白了Modbus_RTU的一个重要技术


只看楼主 9楼 2019-09-20 10:39:15

精度只是说明计量装置本身的测量精确度等参数,跟怎样传输数据无关,最终还是取决于厂家的设计思路。


个体职业者。
以下网友喜欢您的帖子:

  
侠圣

经验值: 4871
发帖数: 741
精华帖: 10
回复:今天一个灵感,使我明白了Modbus_RTU的一个重要技术


只看楼主 10楼 2020-06-29 10:04:39

今天登录给我推荐了这个贴看看,这个其实很简单的,关键是你要认真看设备的说明书。一般说明书会有例子,比如ABB变频器就如此。

对于Modbus-RTU,原生协议是以byte为计数单位的,至于封装后的FB之类,会更好地贴近用户的使用,比如如果是寄存器值则是32位的,但是通讯传送的具体内容则已经自动由FB换算好了,可以监视看看。


 
以下网友喜欢您的帖子:

  
游侠

经验值: 442
发帖数: 48
精华帖: 0
回复:今天一个灵感,使我明白了Modbus_RTU的一个重要技术


只看楼主 11楼 2020-07-07 20:08:47

MODBUS建议看Zane大神帖子,具体数字问题还是应该多跟厂家沟通交流,每家的技术参数不同。


认认真真做事,踏踏实实做人。
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:今天一个灵感,使我明白了Modbus_RTU的一个重要技术


只看楼主 12楼 2020-07-08 15:12:41

爱恨交织的modbus通讯。

之前,刚刚开始熟悉modbus 通讯那一会儿,200的plc做的项目,就是死活连接不上,该检查都已经检查不知道几遍了,该确认的也都确认过自己都懒得再看一遍了。可是,问题的问题就是没有连接上,那个焦虑啊。

连接不上通讯不外乎2个方面,硬件连接和软件。

我个人理解连接不上,大多数原因是外部,而不是内部的程序(或者说内部程序控制出错的概率比较少,因为可是做项目对程序比较用心去做,反到关键的外部硬件连接不被重视),总以为就是简单的2根导线呀,有什么文章可以做的?事实恰恰相反,我所经历过的练习或者项目,问题都出在外部。

已经记不起是第几次失败了,之前在测试练习时,失败过,也放弃过,但是从来都没有终止过。

就拿那个非常常用的转换器,RS232转USB吧,我测试过几款,只有其中一款可以通过测试,可想而知,刚刚开始学习、熟悉这个通讯有何等的困难。

也不知道失败了多少次,突然有一次,不知道是什么原因感动上苍了吧,串口调试软件中“不应该出现的数据串,不知道什么时候,悄悄的无休止的出现在软件串口上,哦,原来如此,从此,无论是200,还是200smart、还是最近测试是s7-1200的,都能够很快熟悉,进入角色,原因是前面无数次失败的铺垫。

看到楼主的帖子,有感而发的写了一点自己的经历。


 
以下网友喜欢您的帖子:

  
游士

经验值: 289
发帖数: 19
精华帖: 0
回复:今天一个灵感,使我明白了Modbus_RTU的一个重要技术


只看楼主 13楼 2020-07-10 15:05:22

楼主你直接把数据抓回来,然后分析一下,就知道他传回来的是浮点数还是整数,还是放大了多少倍的数据了。光猜想没用的。


虽然modbus的寄存器是16为的,但是连续传几个寄存器就可以传32位的浮点数了。


另外,字节顺序采集回来还不一定能用的,所以还是要采集回来看看数据


 
以下网友喜欢您的帖子:

  
yzs
侠圣

经验值: 3553
发帖数: 441
精华帖: 7
回复:今天一个灵感,使我明白了Modbus_RTU的一个重要技术


只看楼主 14楼 2020-07-10 15:35:49
以下是引用WWCWWC在2020-07-08 15:12:41的发言 >12楼

爱恨交织的modbus通讯。

之前,刚刚开始熟悉modbus 通讯那一会儿,200的plc做的项目,就是死活连接不上,该检查都已经检查不知道几遍了,该确认的也都确认过自己都懒得再看一遍了。可是,问题的问题就是没有连接上,那个焦虑啊。

连接不上通讯不外乎2个方面,硬件连接和软件。

我个人理解连接不上,大多数原因是外部,而不是内部的程序(或者说内部程序控制出错的概率比较少,因为可是做项目对程序比较用心去做,反到关键的外部硬件连接不被重视),总以为就是简单的2根导线呀,有什么文章可以做的?事实恰恰相反,我所经历过的练习或者项目,问题都出在外部。

已经记不起是第几次失败了,之前在测试练习时,失败过,也放弃过,但是从来都没有终止过。

就拿那个非常常用的转换器,RS232转USB吧,我测试过几款,只有其中一款可以通过测试,可想而知,刚刚开始学习、熟悉这个通讯有何等的困难。

也不知道失败了多少次,突然有一次,不知道是什么原因感动上苍了吧,串口调试软件中“不应该出现的数据串,不知道什么时候,悄悄的无休止的出现在软件串口上,哦,原来如此,从此,无论是200,还是200smart、还是最近测试是s7-1200的,都能够很快熟悉,进入角色,原因是前面无数次失败的铺垫。

看到楼主的帖子,有感而发的写了一点自己的经历。

通讯这东西都是经历过无数的失败然后才成功的,失败多了自然可以总结出各种失败可能存在的原因。

因此多经历挫折,才能从挫折中成长


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:今天一个灵感,使我明白了Modbus_RTU的一个重要技术


只看楼主 15楼 2020-07-10 15:53:20
以下是引用yzs在2020-07-10 15:35:49的发言 >

通讯这东西都是经历过无数的失败然后才成功的,失败多了自然可以总结出各种失败可能存在的原因。

因此多经历挫折,才能从挫折中成长

对啊,这就是早前大家在讨论的“坑”论了,动不动就掉坑,动不动就掉坑,掉多了,知道掉下去的疼了,才会有柔不起,躲得起的想法,不然,不知道疼,再多掉几次也无妨的,这种属于皮糙肉厚那一类人群。

通讯这东西,说神奇确实神奇,写几个指令可以做接、发数据的传递,但是,开始做起来那有那么容易哦。得掉坑、、、、、、

哦,对,忘了说了,有机会多与有工作经验的交流,有助于自己对分析问题的提高。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:今天一个灵感,使我明白了Modbus_RTU的一个重要技术


只看楼主 16楼 2020-07-10 16:02:37

有时候看到论坛上看到类似通讯无法连接的帖子时,心里有一种莫名的焦虑,老是在乞求老天开个眼吧,给这个已经经历过无数次失败的人有一次连接上的机会吧,也好辅助他对认识通讯理解通讯多一点心情和兴趣吧。可是,现实是残酷的,世上从来不同情弱者,反倒害怕强者。坚持就是成功。


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 6265
发帖数: 696
精华帖: 19
回复:今天一个灵感,使我明白了Modbus_RTU的一个重要技术


只看楼主 17楼 2020-07-15 07:53:21

通信通不上,十有八九是接线问题。不要轻易相信只有2根线,电工安装不会出错!


 
以下网友喜欢您的帖子:

  
至圣

经验值: 19840
发帖数: 8834
精华帖: 39
回复:今天一个灵感,使我明白了Modbus_RTU的一个重要技术


只看楼主 18楼 2020-07-15 09:08:10

什么是  定点数 了解一下


基础很重要


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1010
发帖数: 81
精华帖: 0
回复:今天一个灵感,使我明白了Modbus_RTU的一个重要技术


只看楼主 19楼 2020-07-16 15:13:24

modbus 可以是32 位的


 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
今天一个灵感,使我明白了Modbus_RTU的一个重要技术
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。