首页 上一页 1 2 下一页 尾页

200分高分悬赏:流量计modbus通讯采集的数据问题 点击:3460 | 回复:34



gk2017

    
  • 精华:1帖
  • 求助:1帖
  • 帖子:1帖 | 4回
  • 年度积分:0
  • 历史总积分:920
  • 注册:2019年1月14日
发表于:2020-07-30 12:59:04
楼主
求助帖200分-未结帖

今天做了个程序,用s7200smartPLC通过modbus RTU通讯采集燃气流量计的数据,共采集了六个个数据(长整数型和32位浮点数型),分别是标况瞬时流量,工况瞬时流量,标况累计流量,工况累计流量,温度,压力,存放地址分别是VD200  VD210  VD220  VD230,VD240 VD250 显示在中控室电脑的WINCC监控画面上,j监控画面上显示了四个,分别是工况瞬时,工况累计,温度,压力,数据都很准确。就是数据的显示,有时瞬时流量会显示在温度显示小窗口的上面,压力会显示在累计流量的小窗口上面,另外几个个也一样,随机显示,像图一压力显示在温度窗口里面了,图二温度显示在流量窗口里面了,图三是正常的,数据不会稳定的显示在程序分配给它的地址上面,各位前辈分析一下这是什么原因呀。后面是程序,压力和温度的也是一样的程序,对了,在程序里面监控的时候也是这种现象,网上到处找资料都没有我这方面问题的,急死小弟了,前辈们帮忙看看是哪方面原因。


1分不嫌少!


楼主最近还看过



AI雪

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 230回
  • 年度积分:332
  • 历史总积分:2433
  • 注册:2016年8月07日
发表于:2020-07-30 14:02:16
1楼

先问个问题啊 就一台流量计对吧 还有你这个系统里 除了上位机PLC还有没有别的 硬件 触摸屏之类的

回复本条

    

gk2017

  • 精华:1帖
  • 求助:1帖
  • 帖子:1帖 | 4回
  • 年度积分:1
  • 历史总积分:921
  • 注册:2019年1月14日
发表于:2020-07-30 15:17:19
2楼

"AI雪" 的回复,发表在1楼
        对内容: 【先问个问题啊 就一台流量计对吧 还有你这个系统里 除了上位机PLC还有没有别的 硬件 触摸屏之类的...】进行回复:

        -----------------------------------------------------------------


是显示在电脑的WINCC监控画面上的,我用程序状态图表监控也是这样的问题,数据采集准确,就是显示会错位,比如流量显示在温度的地址上(也会显示在压力等别的参数地址上),温度显示在压力的地址上,等等,显示感觉随机跳地址

回复本条

    

sccswow

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 8回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2012年5月10日
发表于:2020-07-30 15:24:41
3楼

先拿MODSCAN这些类似工具读一下传感器数据,配合你的分析很简单能找到问题的

回复本条

    

AI雪

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 230回
  • 年度积分:332
  • 历史总积分:2433
  • 注册:2016年8月07日
发表于:2020-07-30 15:25:52
4楼

"gk2017" 的回复,发表在2楼
        对内容: 【"AI雪" 的回复,发表在1楼        对内容: 【先问个问题啊 就一台流量计对吧 还有你这个系统里 除了上位机PLC还有没有别的 硬件 触摸屏之类的...】进行回复:        -----...】进行回复:

        -----------------------------------------------------------------


我之前有过类似情况,我是这样的 组态王上位机 昆仑通态触摸屏 200Smart,然后我上位机和触摸屏绑变量的时候 没有改只读,绑的读写,然后我触摸屏里面变量绑错位了,导致触摸屏的数往上位机里面写,出现了错位的现象


你这个PLC程序我看着没啥问题啊就是一个高低字节的转换,你交叉引用查下看看地址有没有重了吧



回复本条

    

佳佳鬼

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 52回
  • 年度积分:56
  • 历史总积分:720
  • 注册:2016年10月09日
发表于:2020-07-30 15:31:37
5楼

我一般遇见这种问题会先定位问题点:用网线连上PLC,监视VD200  VD210  VD220  VD230,VD240 VD250这几个寄存器里的数会不会随机跳变。A:如果有,则用modscan单独连燃气流量计,看看流量计传出的数会不会跳变。B:如果没有跳变,则说明PLC读取流量计的程序及仪表正常。然后查WINCC读PLC的组态方法对不对。有没有遗漏说明或某一个勾没去掉或加上。

回复本条

    

佳佳鬼

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 52回
  • 年度积分:56
  • 历史总积分:720
  • 注册:2016年10月09日
发表于:2020-07-30 15:33:55
6楼

先查出那个环节没问题,在用其他工具来验证。PLC和上位机可以用组态王或KEPServer来单独读取PLC的数。最后确保度的数正常后再显示在画面上。


回复本条

    

关育谋

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:773帖 | 5759回
  • 年度积分:4
  • 历史总积分:94289
  • 注册:2004年5月28日
发表于:2020-07-30 20:08:06
7楼

以这个为例,保存数据应该是M0.2为1、且VB0=0时把接收到的数据VW100、VW102进行转存。
QQ图片20200730200622.png

回复本条

    

关育谋

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:773帖 | 5759回
  • 年度积分:4
  • 历史总积分:94289
  • 注册:2004年5月28日
发表于:2020-07-30 20:08:50
8楼

可以先用第三方工具测试一下流量计,比如用Modbus Poll调试助手测试一下流量计,看看读过来的数据是否也有这样的现象。

回复本条

    

关育谋

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:773帖 | 5759回
  • 年度积分:4
  • 历史总积分:94289
  • 注册:2004年5月28日
发表于:2020-07-30 20:10:04
9楼

还有,最好是CTRL指令完成后,再去执行MSG指令。

回复本条

    

关育谋

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:773帖 | 5759回
  • 年度积分:4
  • 历史总积分:94289
  • 注册:2004年5月28日
发表于:2020-07-30 20:12:54
10楼

比如类似这样的方式:


回复本条

    

关育谋

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:773帖 | 5759回
  • 年度积分:4
  • 历史总积分:94289
  • 注册:2004年5月28日
发表于:2020-07-30 20:14:54
11楼

也就是说转存数据要在MBUS_MSG指令执行完成后、指令的完成标志位为1、且错误代码为0的时候进行数据转存,这样才是最保险的,而不是你那样使用SM0.0一直接通着。你可以改改程序试试。

回复本条

    

关育谋

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:773帖 | 5759回
  • 年度积分:4
  • 历史总积分:94289
  • 注册:2004年5月28日
发表于:2020-07-30 20:17:18
12楼

你看看这条指令:MBUS_MSG指令执行完成后,M1.6会被置位,所以程序里保存数据的前提条件就是M1.6置位后、且VB142错误代码为0时进行转存数据。数据转存完成后,复位M1.2、M1.6,然后再置位下一条MBUS_MSG指令的执行标志位即可。
5.png

回复本条

    

gk2017

  • 精华:1帖
  • 求助:1帖
  • 帖子:1帖 | 4回
  • 年度积分:1
  • 历史总积分:921
  • 注册:2019年1月14日
发表于:2020-07-30 20:38:17
13楼

"关育谋" 的回复,发表在10楼
        对内容: 【比如类似这样的方式:】进行回复:

        -----------------------------------------------------------------


好的,我明天改一下程序看看

回复本条

    

gk2017

  • 精华:1帖
  • 求助:1帖
  • 帖子:1帖 | 4回
  • 年度积分:1
  • 历史总积分:921
  • 注册:2019年1月14日
发表于:2020-07-30 20:42:16
14楼

"关育谋" 的回复,发表在11楼
        对内容: 【也就是说转存数据要在MBUS_MSG指令执行完成后、指令的完成标志位为1、且错误代码为0的时候进行数据转存,这样才是最保险的,而不是你那样使用SM0.0一直接通着。你可以改改程序试试。...】进行回复:

        -----------------------------------------------------------------


有道理,我明天改一下程序看看,但想想有不太对,我接收的数据都是很准确的,和仪表里面的一样,如果程序逻辑不够严谨,它接收的数据应该不会这么准确,就是显示的地址会错位,刚开始没做到WINCC画面里面,在程序状态图表里面直接监控的时候也是这样,几个采集数据的显示位置会错位,但数据准确

回复本条

    

gk2017

  • 精华:1帖
  • 求助:1帖
  • 帖子:1帖 | 4回
  • 年度积分:1
  • 历史总积分:921
  • 注册:2019年1月14日
发表于:2020-07-30 20:43:55
15楼

"关育谋" 的回复,发表在12楼
        对内容: 【你看看这条指令:MBUS_MSG指令执行完成后,M1.6会被置位,所以程序里保存数据的前提条件就是M1.6置位后、且VB142错误代码为0时进行转存数据。数据转存完成后,复位M1.2、M1.6,然后再...】进行回复:

        -----------------------------------------------------------------


这条程序逻辑更严谨,学习了

回复本条

    

关育谋

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:773帖 | 5759回
  • 年度积分:4
  • 历史总积分:94289
  • 注册:2004年5月28日
发表于:2020-07-30 21:44:46
16楼

引用 "gk2017" 的回复,发表在14楼
        内容: "关育谋" 的回复,发表在11楼        对内容: 【也就是说转存数据要在MBUS_MSG指令执行完成后、指令的完成标志位为1、且错误代码为0的时候进行数据转存,这样才是最保险的,而不是你那样使...

如果MBUS_MSG指令没有执行完成的时候,对应指令的缓冲区数据是不稳定的。所以才建议你像我那么处理,至少那么处理是相对来说更好的。

回复本条

    

关育谋

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:773帖 | 5759回
  • 年度积分:4
  • 历史总积分:94289
  • 注册:2004年5月28日
发表于:2020-07-30 21:46:39
17楼

引用 "gk2017" 的回复,发表在14楼
        内容: "关育谋" 的回复,发表在11楼        对内容: 【也就是说转存数据要在MBUS_MSG指令执行完成后、指令的完成标志位为1、且错误代码为0的时候进行数据转存,这样才是最保险的,而不是你那样使...

如果不放心,最好的办法就是用一些第三方工具,比如串口调试助手或者Modbus Poll调试助手去测试一下流量计,这样最直观,也能发现问题所在。

回复本条

    

关育谋

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:773帖 | 5759回
  • 年度积分:4
  • 历史总积分:94289
  • 注册:2004年5月28日
发表于:2020-08-01 17:21:31
18楼

楼主,问题得到解决了吗?如果还有问题随时跟帖交流哈。

回复本条

    

gk2017

  • 精华:0帖
  • 求助:4帖
  • 帖子:4帖 | 25回
  • 年度积分:0
  • 历史总积分:169
  • 注册:2019年7月06日
发表于:2020-08-03 15:15:11
19楼

咱俩的名字一样呢


回复本条

    

幽森

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 32回
  • 年度积分:0
  • 历史总积分:64
  • 注册:2019年5月20日
发表于:2020-08-03 17:08:05
20楼

PLC里面的地址调用有冲突,先看下PLC的交叉调用里面,地址是不是有重复的

回复本条

    

热门招聘
相关主题

官方公众号

智造工程师
    
    首页 上一页 1 2 下一页 尾页