应用探讨——HMI中的数据真的是按照你设定的采样周期在更新吗? 点击:5228 | 回复:14



PLC酷客

    
  • [版主]
  • 精华:9帖
  • 求助:31帖
  • 帖子:1460帖 | 7990回
  • 年度积分:457
  • 历史总积分:59176
  • 注册:2004年7月13日
发表于:2013-12-07 11:08:08
楼主

应用探讨——HMI中的数据真的是按照你设定的采样周期在更新吗?


PLC与HMI通信是大家经常会用到的,我们会根据实际需求来为每个变量设置变量采样周期,比如1S或者100ms,那么是不是只要设置好变量采样周期,HMI上的数据就会按照我们设置的采样周期来刷新呢?PLC的程序执行时间会影响与HMI的数据更新吗?如果HMI的数据更新达不到我设定的数据刷新时间要求,有没有改善或者解决的办法?

本期就以上话题展开讨论,希望大家踊跃参与!





楼主最近还看过



PLC酷客

  • [版主]
  • 精华:9帖
  • 求助:31帖
  • 帖子:1460帖 | 7990回
  • 年度积分:457
  • 历史总积分:59176
  • 注册:2004年7月13日
发表于:2013-12-07 11:09:00
1楼

以下节选网友回答:


"如果HMI的数据更新达不到我设定的数据刷新时间要求",设定的刷新时间最快是100ms,如果需要1ms刷新一次只能用“缓冲”。
具体地说就是用一组连续的变量分时显示这一个变量,用“多”来代替“快”。

一个变量的采样周期还需要配合采集模式,比如采集模式默认是“循环使用”,则变量更新只针对使用中的当前画面变量,那么对一些数据记录则需要“循环连续”

PLC酷客

  • [版主]
  • 精华:9帖
  • 求助:31帖
  • 帖子:1460帖 | 7990回
  • 年度积分:457
  • 历史总积分:59176
  • 注册:2004年7月13日
发表于:2013-12-07 11:09:19
2楼

讲讲自己遇到的两个问题,可能都与这个采样周期有关,但我解释不了:
1,公司组织篮球赛,用备用的PLC和HMI做个时间和计分显示放在裁判席,操作的MM总是抱怨输入比分时,显示更新比较慢。查看了一下比分变量的采样周期,就是默认的1s,这样,写进读出就2s了,还不算PLC的处理时间,把周期改为100ms就快了。
2,西门子HMI里没有自复位按钮,一般书籍都是说组态自复位按钮,要在事件中组态“按下”来setbit,再组态个“释放”来resetbit;这种方法在一般PLC和HMI中没发现有问题,但在一个基于PC的HIM站中,组态一个自复位按钮,容易出问题,就是怎么按都没反应。无奈,只好在事件中组态一个“按下”来setbit,然后在PLC中自复位。

PLC酷客

  • [版主]
  • 精华:9帖
  • 求助:31帖
  • 帖子:1460帖 | 7990回
  • 年度积分:457
  • 历史总积分:59176
  • 注册:2004年7月13日
发表于:2013-12-07 11:09:30
3楼

在触摸屏的变量属性里面,有循环连续 和 循环使用。
循环使用 只有当画面切换到含有该变量的页面时才进行数据采集。
循环连续,不论当前画面如何,该变量一直在采集更新。
在一些对数据采集要求高的画面里,尽量减少循环连续的使用,也是增强触摸屏采集性能的一种方法。

PLC酷客

  • [版主]
  • 精华:9帖
  • 求助:31帖
  • 帖子:1460帖 | 7990回
  • 年度积分:457
  • 历史总积分:59176
  • 注册:2004年7月13日
发表于:2013-12-07 11:09:39
4楼

呵呵,这是我一直感到困惑和怀疑的问题,苦于没有任何可参考的信息,厂家也不会公开这里面的细节。

组态软件中,我定义的一个变量数新周期为1秒,与定义了1000个变量刷新周期为1秒,系统的负荷肯定是不一样的,但是编译时系统不会告诉你这时的通讯负荷具体是多少,系统到底能不能达到组态的要求,没准系统自动的把所有的变量的刷新周期都改为2s了也不得而知(这就是所谓的系统优化功能),我们其实大多数时候都不注意这些的,只有在很偶然的情况下,才发现似乎有些问题,但又找不到根据,而且能够改变的手段也很少。

当然,以上说的还仅仅是HMI自身的一方面,通讯的另一方面PLC以及通讯链路的好坏,都会对实际的数据的刷新率带来比较大的影响,

所以,现在但凡是看看的数据,我们就用现成的HMI做,但遇到要分析的数据,我们就自己开发软件了,这样数据的刷新率是可以确保的。

PLC酷客

  • [版主]
  • 精华:9帖
  • 求助:31帖
  • 帖子:1460帖 | 7990回
  • 年度积分:457
  • 历史总积分:59176
  • 注册:2004年7月13日
发表于:2013-12-07 11:09:55
5楼

讲讲自己遇到的两个问题,可能都与这个采样周期有关,但我解释不了:
1,公司组织篮球赛,用备用的PLC和HMI做个时间和计分显示放在裁判席,操作的MM总是抱怨输入比分时,显示更新比较慢。查看了一下比分变量的采样周期,就是默认的1s,这样,写进读出就2s了,还不算PLC的处理时间,把周期改为100ms就快了。
2,西门子HMI里没有自复位按钮,一般书籍都是说组态自复位按钮,要在事件中组态“按下”来setbit,再组态个“释放”来resetbit;这种方法在一般PLC和HMI中没发现有问题,但在一个基于PC的HIM站中,组态一个自复位按钮,容易出问题,就是怎么按都没反应。无奈,只好在事件中组态一个“按下”来setbit,然后在PLC中自复位。


          基于PC的系统我用过不少,也是在按钮的事件中组态“按下”来setbit,再组态个“释放”来resetbit,我也认为楼主说的第二种情况发生会发生,但直至现在我也没有见过。所以是不是还有其他的因素?


PLC酷客

  • [版主]
  • 精华:9帖
  • 求助:31帖
  • 帖子:1460帖 | 7990回
  • 年度积分:457
  • 历史总积分:59176
  • 注册:2004年7月13日
发表于:2013-12-07 11:10:06
6楼

至于这个问题,我的想法是HMI数据会按照我们设定的采样周期在更新,因为程序是运行是死的(当然一些极低概率出现BUG错误就不说了),所以我们设定了一个周期程序不会自动改变这个周期,在这里就出现了一个问题,我们监视HMI画面也有会发现采样周期偏长的,这个我想就要考虑到这个程序自身的运行时间了,与负载有关,与设备处理能力有关,比如电脑速度自身运算速度不快使画面卡顿,但这些因素不应该算到采样周期身上,因此在不考虑外围因素的情况下HMI中数据是按我们设定的采样周期来更新。

PLC酷客

  • [版主]
  • 精华:9帖
  • 求助:31帖
  • 帖子:1460帖 | 7990回
  • 年度积分:457
  • 历史总积分:59176
  • 注册:2004年7月13日
发表于:2013-12-07 11:10:18
7楼

我想对于HMI这样一侧来说,应该是按照设定的时间来更新变量,但是pLC发送过来的数据应该是放在HMI这边的一个缓冲区内,HMI画面所刷新的数据应该也指示在自己的缓冲区内读取,它并不知道里面的数据是PLC何时发送过来的数据、PLC有无对数据跟新。
这样理解的话,我们就要考虑三个时间:
1、PLC程序自己运行所需的扫描周期
2、通信传递数据所花的时间
3、HMI上设定的刷新周期
我觉得应该是1+2<=3的这种情况的,HMI每次刷新的数据就应该是PLC更新的时时数据,如果1+2>3的话,HMI进行变量刷新的时候,读到的数据还是上一次的,比如说有可能HMI更新第2次的时候,才是PLC数据的第一次更新(当然是相对来说的第一次和第二次哈)。
解决办法,我觉的也是一样从上面三点出发:降低1和2占用的时间,或者适当调整3为比较大但是又不影响目标效果的值。
小弟才疏学浅,说错了大家莫笑,我只是希望能多多学习……

PLC酷客

  • [版主]
  • 精华:9帖
  • 求助:31帖
  • 帖子:1460帖 | 7990回
  • 年度积分:457
  • 历史总积分:59176
  • 注册:2004年7月13日
发表于:2013-12-07 11:11:21
8楼

说到周期,首先也是多年来迷糊的地方。
在WINCC的通道属性中,有个周期管理的选项:

而也有帮助提示:

可以看到整个翻译都是乱的,整个就是不知所云。
说明恐怕德国人自己都没搞明白这几个选项具体啥意思。

有高人先给说明白了先。
前几年四书五经在的时候曾经说过一会,但还是没懂。

我曾经接到电话有人问我怎么搞,是勾上还是不勾。我给的答复是你都试试,哪样能通讯用哪样。


PLC酷客

  • [版主]
  • 精华:9帖
  • 求助:31帖
  • 帖子:1460帖 | 7990回
  • 年度积分:457
  • 历史总积分:59176
  • 注册:2004年7月13日
发表于:2013-12-07 11:11:32
9楼

西门子PLC里有OB35等周期中断,HMI里的数据采样周期在原理上应该一样也是利用中断来查询,但HMI要访问的数据是在PLC的存储区,这就象PLC程序中的块,块的外部如何赋值给块的内部?(以前也有帖子讨论过,块本身需要带一个数据存储区)
现在,总线的应用越来越广泛,不管什么协议,总线这个概念本质是将CPU的内部、外部总线之间的区别变得越来越模糊,一些专用的单片机高速数据采集思路,慢慢也应用在通用的PLC平台上,因为实际应用有这个需要,PLC就要向这个方向发展。
为什么我用普通的方法实现自复位按钮不能在基于PC的控制上可靠运行,因为基于PC的控制是使用“软总线”,它是虚拟的总线。

PLC酷客

  • [版主]
  • 精华:9帖
  • 求助:31帖
  • 帖子:1460帖 | 7990回
  • 年度积分:457
  • 历史总积分:59176
  • 注册:2004年7月13日
发表于:2013-12-07 11:11:46
10楼

我研究过别的品牌的HMi,截取过HMI发向PLC的通讯数据.HMI理论上可以按照设定的采样周期更新,但在数据量较大时HMI来不及发送数据,可能会造成更新周期延时.严重时HMI的数据更新会出现假死的状况.
另外,在编写HMI时将相关的数据软元件地址最好按照顺序连续编写,这样HMI向PLC发送的读写指令时可以将多条指令整合成一条.这样可以提升通讯效率.
PLC的一个扫描周期分,处理通讯,映射IO区域和执行程序等步骤,若程序越大,扫描周期越长.PLC和HMI的通讯相应也就越慢.

PLC酷客

  • [版主]
  • 精华:9帖
  • 求助:31帖
  • 帖子:1460帖 | 7990回
  • 年度积分:457
  • 历史总积分:59176
  • 注册:2004年7月13日
发表于:2013-12-07 11:12:00
11楼

我想对于HMI这样一侧来说,应该是按照设定的时间来更新变量,但是pLC发送过来的数据应该是放在HMI这边的一个缓冲区内,HMI画面所刷新的数据应该也指示在自己的缓冲区内读取,它并不知道里面的数据是PLC何时发送过来的数据、PLC有无对数据跟新。
 这样理解的话,我们就要考虑三个时间:
 1、PLC程序自己运行所需的扫描周期
 2、通信传递数据所花的时间
 3、HMI上设定的刷新周期
 我觉得应该是1+2<=3的这种情况的,HMI每次刷新的数据就应该是PLC更新的时时数据,如果1+2>3的话,HMI进行变量刷新的时候,读到的数据还是上一次的,比如说有可能HMI更新第2次的时候,才是PLC数据的第一次更新(当然是相对来说的第一次和第二次哈)。
 解决办法,我觉的也是一样从上面三点出发:降低1和2占用的时间,或者适当调整3为比较大但是又不影响目标效果的值。
 小弟才疏学浅,说错了大家莫笑,我只是希望能多多学习……


我看到这才是最合理的解释,其实影响通讯速度的就是这3个因素:1,PLC的扫描周期,是根据程序来决定的,一般程序结构简单,程序越少,CPU越好,扫描周期很短,我用最快的是1MS ,最慢的是50MS;2,是根据所设定波特率来的,DP总线的波特率越高,传输时间越短,当然用以太网是最快的;3,CPU每刷新一次自动把数据放在HMI缓存里,而触摸屏根据其自己的刷新来读取数据。个人总结,CPU刷新和HMI无关。

PLC酷客

  • [版主]
  • 精华:9帖
  • 求助:31帖
  • 帖子:1460帖 | 7990回
  • 年度积分:457
  • 历史总积分:59176
  • 注册:2004年7月13日
发表于:2013-12-07 11:12:10
12楼

楼上说的很对,CPU刷新跟HMI无关。
这里可以理解为,地层刷新时间和应用显示时间无关(我是这么理解的)
刷新可以分三层,第一层,PLC刷新,PLC在程序里可以设置刷新频率,可根据CPU的不同,最低各有不同
第二层是传输层,串口的波特率的大小,以太网的传输都会直接影响刷新时间。
第三层就是HMI显示层,我以前做过12条皮带的动画,本想把皮带上的煤炭也动起来,煤炭+滚筒都转起来后,发现界面卡的不得了,我点了一个按钮,里面弹出一个msgbox,都要4,5秒后才能出来。所以更不要说数据刷新记录了。所以归档的刷新时间,也要跟HMI软件负荷也有关系。

PLC酷客

  • [版主]
  • 精华:9帖
  • 求助:31帖
  • 帖子:1460帖 | 7990回
  • 年度积分:457
  • 历史总积分:59176
  • 注册:2004年7月13日
发表于:2013-12-07 11:12:22
13楼

当然,一般工控对刷新时间要求不是太高。所以一般用户感觉不到。
只要1秒内有变化,我都可以接受了。

像一些比如汽车行业,要求数据实时性极高的,WINCC等HMI之类的组态软件就不能用了。
有些WINDOWS都不能用。

PLC酷客

  • [版主]
  • 精华:9帖
  • 求助:31帖
  • 帖子:1460帖 | 7990回
  • 年度积分:457
  • 历史总积分:59176
  • 注册:2004年7月13日
发表于:2013-12-07 11:12:32
14楼

1:有这样一种现象,如果将变量的采集周期设置的太快的话,增加了实际hmi的负担,实际效果hmi的刷新频率不升,反而降低了。这是为什么呢?
所以说设置好变量采样周期,HMI上的数据不一定会按照我们设置的采样周期来刷新。
2:winccflexible是否有可以像wincc那样支持数据打包上传呢?在wincc中,如果PLC是400的话,可以支持打包,在wincc中进行数据解析,最高速度可以达到1ms,目前winccflexible没见到相关的资料
3:如何合理的选择hmi变量的扫描周期,目前的项目到没遇到太大的问题,如果项目非常大的话,有可能会遇到这样的问题。目前项目的做法是需要显示快的话,设置成100ms,刷新速率慢的,直接按照默认。这样做肯定不合理,正确的方法应该如何去做呢?
4:在变量的定义,是否最好用统一变量区,变量地址尽量在固定的一片区域内呢?


热门招聘
相关主题

官方公众号

智造工程师