信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。

1847会员专享内容,开通会员免费看

WinCC 脚本诊断之如何让WinCC脚本运行更加顺畅

立即开通 登录/注册

WinCC 脚本诊断之如何让WinCC脚本运行更加顺畅

    • Course introduction

      课程介绍

      您在使用WinCC时遇到过运行慢,堵塞等问题吗?

      专家带您解析WinCC脚本底层的队列机制,以及脚本队列的诊断和优化方法,案例分析将有助于您综合解决实际的问题。      

      课程难度:中级 课程方向:HMI,WinCC 课程标签: 课程用途:专家大讲堂

     20200527WinCC 脚本诊断之如何让WinCC脚本运行更加顺畅——直播答疑


    直播时间:2020年5月27日(周三)19:30-20:30

    主讲专家:李宏宇


    直播课主要内容

    您在使用WinCC时遇到过运行慢、堵塞等问题吗?

    专家带您解析WinCC脚本底层的队列机制,以及脚本队列的诊断和优化方法,案例分析将有助于您综合解决实际的问题。

     

    课程回看链接

    http://www.ad.siemens.com.cn/service/elearning/Course/2677.html


    直播答疑汇总

    Q1:在一个窗口画面做一个按钮,用C 脚本写,窗口的周期会不会影响按钮中C脚本的执行周期

    A1:也就是说这个客户,在一个画面窗口中使用一个按钮,那么这个画面窗口的周期是不会影响这个画面窗口中按钮的执行的;但是如果这个画面窗口中有这个相应的对象,那么对象的属性中,如果在这个对象属性的更新周期中,如果选择了窗口周期,那么这个对象的执行周期是要受到画面窗口执行周期的影响的。

     

    Q2:关于脚本诊断方面的一些基础课程

    A2:大家如果感兴趣的话,可以到西门子视频学习中心,找到 “WinCC跟我做” 系列,里面有关于 “WinCC脚本调试与诊断方法” 的基础视频。关于脚本调试和诊断方法,在后续的大讲堂中,也会给大家介绍更多的内容。


    Q3:凡是脚本堵塞的情况,大部分都是程序员设计的不合理,过度的使用脚本造成的。

    A3:这个说法在一定程度上是对的。因为如果脚本使用过度且设计不合理,就容易导致脚本阻塞的问题;如果能够顺应脚本底层的队列机制,合理地设计脚本,就可以尽量避免脚本出现堵塞的情况。

     

    Q4:批量传送变量怎么传送?

    A4:针对C脚本和VBS脚本,实现的方法是不同的。在C脚本中,可以调用一些批量读写的函数,比方说给大家介绍的GetTagMultiWait函数,通过调用这个函数,可以一次性请求多个变量并返回所有请求的值。在VBS脚本中,我们可以调用createTagSet这个方法实现批量读写变量。

     

    Q5:可以查看某个C动作的运行时间吗?

    A5:这个在我们之前的胶片介绍也提到过,使用这个APdoub的profy功能,我们可以去设定一个脚本的执行的检测值,那么如果超过这个检测值的这个脚本,包括他的这个运行时间,我们都可以输出到JSC诊断窗口中。

     

    Q6:能同时运行多少个全局脚本的数量是不是有限制

    A6: 这个我们没有看到特别明确的说明,这个要取决于我这个全局脚本对WinCC脚本系统造成的影响有多大,比方说这个全局脚本它本身执行的脚本数量所耗费的时间非常的少,那么这个时候我们多运行几个全局脚本也是没有关系的。

      

    Q7:如何激活诊断变量?

    A7:激活诊断变量有两种方法,方法一是可以通过WinCC的C脚本函数FillDiagnoseInTags来激活诊断变量;方法二是可以使用ApDiag工具的菜单项FillTags来激活诊断变量。但是需要注意的是,我们不使用诊断变量的时候,一定要把该功能关闭掉。

     

    Q8:画面上有按钮按了之后,数据传输延迟,但画面切换一次后就传输数据了,这是什么原因。

    A8:我觉得这很有可能是,比方说我画面的按钮当中所执行的脚本花费的时间非常长,这个脚本发生了堵塞,但是切换画面呢在切换回来之后,那么当前的这个脚本队列就清空了,所以就其他的这个跟他位于同一个脚本队列的脚本就可以正常执行了。

     

    Q9:延时的脚本容易造成堵塞吗?

    A9:是的,我在讲解过程中给大家介绍的这个用于延时的Sleep脚本函数,本身就是一个容易造成堵塞的函数,我在这里面引用它主要是为了给大家进行演示,用它来模拟一段比较耗费时间的脚本;大家在实际的项目中,请尽量减少使用类似的函数。

     

    Q10:有没有WinCC脚本的函数文档

    A10:这个函数文档的话应该是在我们的帮助文档里是最全的,大家可以参考一下我们的在线帮助。


    Q11:WinCC自带的配方功能是什么?

    A11:WinCC自带的配方功能,指的是WinCC的用户归档功能,大家可以在WinCC的帮助文档章节 “选件 / 用户归档” 中找到相应的介绍。

     

    Q12:诊断变量中显示的是画面脚本还是全局脚本中动作的运行情况?

    A12:诊断变量的值既包括画面中的动作,也包括全局脚本中的动作。如果想区分开,可以在项目 “启动” 选项中取消勾选 “全局脚本运行系统”,即可以测试画面脚本中动作的运行情况。这里边,诊断变量显示的是画面周期的脚本和全局脚本的总和。


    Q13:脚本和变量记录是互不影响的

    A13:是的,脚本系统和变量记录系统是互不影响的。


    Q14:VBS全局脚本看执行时间,是一头一尾利用两次系统时间自己算吗?一头一尾输出两次系统时间是自己算吗

    A14:可以编写VBS脚本计算动作实际执行的时间,并输出到GSC 诊断窗口中;方法是在动作开始和结束的位置分别获取系统的当前时间,计算时间差即动作所执行的时间,并输出到GSC诊断窗口中;再与该动作计划执行时间进行比较,判断脚本队列是否有发生阻塞的可能。


     

    暂无评论

    李宏宇