前些日子做了一个modbus通讯的程序,遇到一些问题,现将它们总结一下,并附上解决方法。事情是这样的,我有一台PLC用modbusRTU通讯读取一台流量计的示数,然后这个PLC再通过modbusRTU传送给上位机组态王。开始的时候我读取流量计的数据有数据上来,但是最终结果是错误的,后来查看流量计说明书说该流量计的流量累计值是一个整数,以双形式存储,并且低字节在前面,高字节在后面,我的PLC和流量计数据存储格式一致,但是读取数据就是不对,当我尝试把寄存器地址向前移一个时(从4001开始读取改为从4000开始读取),通讯成功了,接着我有遇到第二个问题,当我的数据以这种方法向组态王传数据的时候又出现了错误,后来尝试将高低的两个WORD 字交换,结果PLC向组态王数据传送成功。由此总结两条结论,第一个是寄存器的起始地址会导致modbusRTU数据错误,第二个是数据的高低位不一致也可能导致modbusRTU的数据错误。下面详细说明两种情况。
1有时候第一个寄存器并不一定从4001开始读取,也有可能从4000开始读取。做通讯时一定多尝试一下
2组态王modbusRTU通讯默认是高字节存储高16位,低字节存储低16位,这个可能与仪表和PLC相反,高低字节需要交换一下,才能正确读取。如下图所示:
高低位交换
当仪modbusRTU读取数据出现错误时可尝试进行高低字节交换,plc无法正确读取仪表侧数据时,先进行高低位交换(move指令)然后进行读取数据。组态王侧无法正确读取PLC数据时可将PLC内正确的数据进行高低位交换,组态王在进行读取。对于长整形数据(正数),组态王侧也可以读取两个ushort数据进行组合,如下图所示,3000存储双正数的余数,3001存储了双整数的商,组态王侧组合出的长整数是 (300165536)+3000 (此种情况只在无符号正整数下用过,)
3PLC数据高低位不想交换时,也可在组态王侧改变高低位的存储地址。新建一个变量,照如下方法指定链接,具体做法如下:
swap
其中 swapf是改变浮点数的读写顺序,swapL是改变长整形的读写顺序,我们只需要在全局脚本里面设置值就能改变读写顺序了。
接口异常的意思就是服务器崩了,网络导致视频播放失败,接口出现了异常。
检查自己的网路是不是已经连接成功了,网速限速没,连接成功后再次登录,就可以看自己想要看的视频了。
机顶盒连在电视上出现开机获取数据失败的原因和解决方法:1网络机顶盒未接通网络导致获取数据失败,进入机顶盒的网络设置界面,查看网络连接情况,重新设置联网即可,也可以通过重启路由器或者重置路由器来解决网络连接的问题。
2机顶盒的系统有问题导致获取数据失败,可以重启机顶盒来解决,如果重启多次无效,则可以将机顶盒系统还原为出厂设置状态或者升级到最新版本来解决。
3机顶盒内置的网络视频播控平台停止服务也会导致获取数据失败,因为国家广电总局近期推出了禁令,禁止未经审核的网络播控平台提供在线视频服务,所以部分未通过审核的播控平台就会停止服务,导致用户端无法认证,这种情况可以尝试给机顶盒安装第三方网络视频软件来替代使用。
4如果以上方法均不能解决时,建议联系网络机顶盒的售后服务对机顶盒进行全面的检测和维修即可。
以上就是关于plc通过modbusrtu读取累计流量不全部的内容,包括:plc通过modbusrtu读取累计流量不、接口异常是什么意思、广电机顶盒未找到应用数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)