回复:技术专题探讨-WinCC 与 S7-300/400 通信设置和优化

四书五经

  • 帖子

    762
  • 精华

    58
  • 被关注

    30

论坛等级:侠圣

注册时间:2005-12-23

普通 普通 如何晋级?

发布于 2009-04-13 11:04:33

0楼

今天细看了一下WINCC在线帮助,对我前面的说法又有了不同的观点,前面误导大家了,不好意思!
1.GetTagXXX函数是异步执行函数,当调用这些函数时,如果使用了周期性服务,并且周期性服务数量还没有用完,则要读取的变量就会在WINCC的映像区中注册。并且对于标准触发,周期性服务的更新周期是变量刷新周期的1/2,第一次注册完之后,以后AS的周期性服务就会主动的发数据给WINCC。所以如果变量刷新周期太短的话,则周期性服务的周期也会变短,这样通讯的负担就加重了。具体如下图所示:

2.对于GetTagXXX函数,如果不能使用周期性服务,WINCC将使用非周期性读取。但仍然进行注册,并从WINCC的映像区中读取。只不过AS不是主动发送,而是WINCC请求一次,AS发送一次,并且请求周期的排列也由WINCC来执行。
3.当一个画面关闭时或者被切换成非激活画面时,其使用的变量注册的周期性服务也停止了。但全局脚本中使用的变量注册的周期性服务会一直保留,直到WINCC停止运行,因为周期性服务数量是有限的,所以在全局脚本中建议使用加Wait的函数。
4.对于在象MOUSE CLICK这样的事件中使用GetTagXXX函数,当函数执行时,GetTagXXX函数首先要进行注册,然后就会周期性的从AS中请求数据(或者AS主动的发送数据),当这个click事件结束,仍然还要从AS中周期性的请求数据直到画面关闭。这样就会加重WINCC的执行负荷。而解决的方法是采用GetTagXXXWait函数,虽然使用GetTagXXXWait函数会导致更高的通讯负荷,但不需要将变量在WINCC中进行注册,就不会进行周期性的请求数据。这样WINCC的执行负荷会减小。
5.如果在一个脚本中要读取的变量已经做为脚本的触发器使用过了,那么读取变量就直接从映像区中读取,而不会再去注册。因为在打开画面时,做为触发器的变量WINCC会自动进行注册,因为这种情况所有的变量一次性注册,效率是最高的。WINCC帮助中特别说明建议使用此种方式。
6.所有采用Upon change方式进行触发的脚本中使用的GetTagXXX函数,相当于1秒钟的循环读取服务。
7.在回调函数中一定要使用加WAIT的函数。
8.GetTagWait方式不进行注册,它只向AS请求一次数据。原理如下图所示:

9.WINCC的映像区的大小应该也是有限制的,注册的变量太多,WINCC的负担也会很重的。所以有时用一用WAIT的函数也是很好的,有时候并不是通讯过载,而是WINCC过载了,我前面说的关闭周期性服务,通讯就正常的情况,可能就是因为WINCC的负担太重了。
以上是我根据WINCC在线帮助和实际经验的理解,具体可以参考WINCC在线帮助,不过这一段是英文的,呵呵,我的英文不是很好,对内容解释的也不是很好!
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32564条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。