楼主最近还看过
讲讲自己遇到的两个问题,可能都与这个采样周期有关,但我解释不了:
1,公司组织篮球赛,用备用的PLC和HMI做个时间和计分显示放在裁判席,操作的MM总是抱怨输入比分时,显示更新比较慢。查看了一下比分变量的采样周期,就是默认的1s,这样,写进读出就2s了,还不算PLC的处理时间,把周期改为100ms就快了。
2,西门子HMI里没有自复位按钮,一般书籍都是说组态自复位按钮,要在事件中组态“按下”来setbit,再组态个“释放”来resetbit;这种方法在一般PLC和HMI中没发现有问题,但在一个基于PC的HIM站中,组态一个自复位按钮,容易出问题,就是怎么按都没反应。无奈,只好在事件中组态一个“按下”来setbit,然后在PLC中自复位。
呵呵,这是我一直感到困惑和怀疑的问题,苦于没有任何可参考的信息,厂家也不会公开这里面的细节。
组态软件中,我定义的一个变量数新周期为1秒,与定义了1000个变量刷新周期为1秒,系统的负荷肯定是不一样的,但是编译时系统不会告诉你这时的通讯负荷具体是多少,系统到底能不能达到组态的要求,没准系统自动的把所有的变量的刷新周期都改为2s了也不得而知(这就是所谓的系统优化功能),我们其实大多数时候都不注意这些的,只有在很偶然的情况下,才发现似乎有些问题,但又找不到根据,而且能够改变的手段也很少。
当然,以上说的还仅仅是HMI自身的一方面,通讯的另一方面PLC以及通讯链路的好坏,都会对实际的数据的刷新率带来比较大的影响,
所以,现在但凡是看看的数据,我们就用现成的HMI做,但遇到要分析的数据,我们就自己开发软件了,这样数据的刷新率是可以确保的。
讲讲自己遇到的两个问题,可能都与这个采样周期有关,但我解释不了:
1,公司组织篮球赛,用备用的PLC和HMI做个时间和计分显示放在裁判席,操作的MM总是抱怨输入比分时,显示更新比较慢。查看了一下比分变量的采样周期,就是默认的1s,这样,写进读出就2s了,还不算PLC的处理时间,把周期改为100ms就快了。
2,西门子HMI里没有自复位按钮,一般书籍都是说组态自复位按钮,要在事件中组态“按下”来setbit,再组态个“释放”来resetbit;这种方法在一般PLC和HMI中没发现有问题,但在一个基于PC的HIM站中,组态一个自复位按钮,容易出问题,就是怎么按都没反应。无奈,只好在事件中组态一个“按下”来setbit,然后在PLC中自复位。
我想对于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里有OB35等周期中断,HMI里的数据采样周期在原理上应该一样也是利用中断来查询,但HMI要访问的数据是在PLC的存储区,这就象PLC程序中的块,块的外部如何赋值给块的内部?(以前也有帖子讨论过,块本身需要带一个数据存储区)
现在,总线的应用越来越广泛,不管什么协议,总线这个概念本质是将CPU的内部、外部总线之间的区别变得越来越模糊,一些专用的单片机高速数据采集思路,慢慢也应用在通用的PLC平台上,因为实际应用有这个需要,PLC就要向这个方向发展。
为什么我用普通的方法实现自复位按钮不能在基于PC的控制上可靠运行,因为基于PC的控制是使用“软总线”,它是虚拟的总线。
我想对于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无关。
楼上说的很对,CPU刷新跟HMI无关。
这里可以理解为,地层刷新时间和应用显示时间无关(我是这么理解的)
刷新可以分三层,第一层,PLC刷新,PLC在程序里可以设置刷新频率,可根据CPU的不同,最低各有不同
第二层是传输层,串口的波特率的大小,以太网的传输都会直接影响刷新时间。
第三层就是HMI显示层,我以前做过12条皮带的动画,本想把皮带上的煤炭也动起来,煤炭+滚筒都转起来后,发现界面卡的不得了,我点了一个按钮,里面弹出一个msgbox,都要4,5秒后才能出来。所以更不要说数据刷新记录了。所以归档的刷新时间,也要跟HMI软件负荷也有关系。
1:有这样一种现象,如果将变量的采集周期设置的太快的话,增加了实际hmi的负担,实际效果hmi的刷新频率不升,反而降低了。这是为什么呢?
所以说设置好变量采样周期,HMI上的数据不一定会按照我们设置的采样周期来刷新。
2:winccflexible是否有可以像wincc那样支持数据打包上传呢?在wincc中,如果PLC是400的话,可以支持打包,在wincc中进行数据解析,最高速度可以达到1ms,目前winccflexible没见到相关的资料
3:如何合理的选择hmi变量的扫描周期,目前的项目到没遇到太大的问题,如果项目非常大的话,有可能会遇到这样的问题。目前项目的做法是需要显示快的话,设置成100ms,刷新速率慢的,直接按照默认。这样做肯定不合理,正确的方法应该如何去做呢?
4:在变量的定义,是否最好用统一变量区,变量地址尽量在固定的一片区域内呢?