签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
我的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
电量表一般都是这样传输MODBUS数据的,要看后面的精度的。
这种情况很常见,跟精度无关,精度一般只是告诉你小数点后面保留多少位。至于MODBUS通讯来的数据,要看设备厂商怎么处理了,有些需要做运算的会直接说明,或者像这种简单的运算在对数据的时候能够看出来。
可以传送浮点数的,不要纠结在16位上面
关键对方的参数所在的寄存器地址是连着的,2104、2015、2016,分别对应着频率、速度和电流。我的DB块里的元素就只能用16位的了。可是对方说那些参数传来的是5.5这样的实数,这就让我混乱了。
如果对方的参数所在的寄存器地址是间隔的,2104、2106、2108,那么它传来的参数是5.5这样的就可以理解了。
我是第一次用RTU,对方对他的数据也不甚了了,所以造成我的不理解。
后来我才想到,对方的数据传来是是55这样的整数,我得根据后面的精度再除以10,变成5.5这样的才行。于是,我就确定了用16位的元素去接对方的参数,然后在PLC里除以10这样的整十数。此前我一直在困惑于是用16位还是用32位的元素去接收对方传来的参数数据。
多看相关资料,多学习!
RTU,和TCP MODBUS都可以读写32位的
精度只是说明计量装置本身的测量精确度等参数,跟怎样传输数据无关,最终还是取决于厂家的设计思路。
今天登录给我推荐了这个贴看看,这个其实很简单的,关键是你要认真看设备的说明书。一般说明书会有例子,比如ABB变频器就如此。
对于Modbus-RTU,原生协议是以byte为计数单位的,至于封装后的FB之类,会更好地贴近用户的使用,比如如果是寄存器值则是32位的,但是通讯传送的具体内容则已经自动由FB换算好了,可以监视看看。
MODBUS建议看Zane大神帖子,具体数字问题还是应该多跟厂家沟通交流,每家的技术参数不同。
爱恨交织的modbus通讯。
之前,刚刚开始熟悉modbus 通讯那一会儿,200的plc做的项目,就是死活连接不上,该检查都已经检查不知道几遍了,该确认的也都确认过自己都懒得再看一遍了。可是,问题的问题就是没有连接上,那个焦虑啊。
连接不上通讯不外乎2个方面,硬件连接和软件。
我个人理解连接不上,大多数原因是外部,而不是内部的程序(或者说内部程序控制出错的概率比较少,因为可是做项目对程序比较用心去做,反到关键的外部硬件连接不被重视),总以为就是简单的2根导线呀,有什么文章可以做的?事实恰恰相反,我所经历过的练习或者项目,问题都出在外部。
已经记不起是第几次失败了,之前在测试练习时,失败过,也放弃过,但是从来都没有终止过。
就拿那个非常常用的转换器,RS232转USB吧,我测试过几款,只有其中一款可以通过测试,可想而知,刚刚开始学习、熟悉这个通讯有何等的困难。
也不知道失败了多少次,突然有一次,不知道是什么原因感动上苍了吧,串口调试软件中“不应该出现的数据串,不知道什么时候,悄悄的无休止的出现在软件串口上,哦,原来如此,从此,无论是200,还是200smart、还是最近测试是s7-1200的,都能够很快熟悉,进入角色,原因是前面无数次失败的铺垫。
看到楼主的帖子,有感而发的写了一点自己的经历。
楼主你直接把数据抓回来,然后分析一下,就知道他传回来的是浮点数还是整数,还是放大了多少倍的数据了。光猜想没用的。
虽然modbus的寄存器是16为的,但是连续传几个寄存器就可以传32位的浮点数了。
另外,字节顺序采集回来还不一定能用的,所以还是要采集回来看看数据
通讯这东西都是经历过无数的失败然后才成功的,失败多了自然可以总结出各种失败可能存在的原因。
因此多经历挫折,才能从挫折中成长
对啊,这就是早前大家在讨论的“坑”论了,动不动就掉坑,动不动就掉坑,掉多了,知道掉下去的疼了,才会有柔不起,躲得起的想法,不然,不知道疼,再多掉几次也无妨的,这种属于皮糙肉厚那一类人群。
通讯这东西,说神奇确实神奇,写几个指令可以做接、发数据的传递,但是,开始做起来那有那么容易哦。得掉坑、、、、、、
哦,对,忘了说了,有机会多与有工作经验的交流,有助于自己对分析问题的提高。
有时候看到论坛上看到类似通讯无法连接的帖子时,心里有一种莫名的焦虑,老是在乞求老天开个眼吧,给这个已经经历过无数次失败的人有一次连接上的机会吧,也好辅助他对认识通讯理解通讯多一点心情和兴趣吧。可是,现实是残酷的,世上从来不同情弱者,反倒害怕强者。坚持就是成功。
通信通不上,十有八九是接线问题。不要轻易相信只有2根线,电工安装不会出错!
什么是 定点数 了解一下
基础很重要
modbus 可以是32 位的
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录