关于WinCC全局脚本VBS-Editor里标准模块和项目模块代码不能执行的问题

我在WinCC全局脚本的动作里输入下面这段代码:
If HMIRuntime.Tags("chang_picture3").Read Then
HMIRuntime.BaseScreenName ="New3"
End If
If HMIRuntime.Tags("chang_picture4").Read Then
HMIRuntime.BaseScreenName ="New4"
End If

If HMIRuntime.Tags("chang_picture5").Read Then
HMIRuntime.BaseScreenName ="cc_9_scripts_00"
End If
然后在触发器里选择周期性触发,程序可以正常运行。但这段代码如果写在项目模块或标准模块里,因为不能选择触发器,所以代码不能运行。我在项目里点击项目--属性--更新周期,选择了500毫秒或1秒等,发现都没有用。请问写在全局脚本VBS-Edit里的项目模块或标准模块里的程序如何执行,因为不能选择触发器呀。能举一个在全局脚本VBS-Edit里的项目模块或标准模块里的程序能够执行的例子吗?到底什么情况代码下应写在项目模块或标准模块里,什么情况下应写在动作里?

最佳答案

模块里存的都是过程,过程就是处理某个事情的过程。
动作总是由触发器触发才执行。
打个比方:你要解决的问题是1+1+2-3-4=?
这里面包含两种运算,加法和减法,那么每一步的加或者减都相当于一个过程,1+1+2就是1+1算出来,结果在加2,两步都是加,是个重复的工作,那你就可以写a+b,用两次即可,这和别的语言里的自定呀函数是一样的,要重复多次完成同一个事情,只是参数不一样,你就可以自定义一个函数,每次给它参数,它就按这个步骤算,返回给你结果。
多个相关的过程可以放在一起,那就是模块,比如这里,你就可以把加法的过程和减法的过程写在一个模块里,可以起模块名叫加减运算,如果以后还有乘除运算,可以再建新模块,方便区分,更是为了优化程序,因为调用过程的之前,wincc加载的是整个模块,比如你后来又用到加法,没用减法,但是wincc加载的还是是整个模块。
而动作解决的问题是什么时候进行这个运算,比如有个按钮,按下时算出上式的结果,你光写在模块里,它是不知道什么时候运行的,这就需要动作,动作里写个程序,调用这个加的过程,触发器选择好,比如是每三秒运行一下,那等到过了三秒,动作就知道,我要运行了,运行什么呢?一看,是运行的那个过程,那个加法的过程,那就把参数(如果有的话)给它让这个过程去算。
上面讲的就是利用动作来调用一个过程,如果你解决的问题并不需要大量重复的工作,那就没必要写过程了,直接在动作里写了就OK了,执行一次就完事,用不着调来调去。

可以简单地、不严谨地理解为,动作就像主函数,这个主函数可以监视到让程序执行的口令,过程就像子函数,主函数调用你了,你就执行,完成一部分特定的任务,模块就是好多相关子函数的集合。

当然,模块或者过程,至少是在本wincc项目里可以通用的,就是项目模块,如果别的wincc项目也想用,就是标准模块。
所以,同一个项目的不同画面,不同窗口里的对象,都可以利用建好的过程,比如你把打开excel的功能做成一个模块,A画面里的“打开A表”按钮可以调用,只需把A这个名字给它就行,B画面里的“打开B表”按钮可以调用,只需把B这个名字给它就行,动作C是用来在每天12点打开C表,那你可以用一天为周期作为C动作的触发器,C动作里写的是把C这个名字赋给过程并调用它即可。

提问者对于答案的评价:
谢谢

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc264024.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日 上午2:41
下一篇 2019年6月11日

相关推荐

  • wincc曲线

    wincc历史曲线有毛刺 不光滑 有什么办法是曲线编的光滑呢 最佳答案 曲线是靠一个一个点连接组合起来的,连接的点越多,曲线越光滑,所以你可以考虑把归档周期改小…

    SIMATIC WinCC 2019年6月10日
  • 如何将Wincc工程项目复制到另一台机器上

    请教高手,如何将Wincc工程项目复制到另一台机器上?只拷贝文件夹可以吗?如果用tools里的project duplicator复制到另一服务器上,硬件上如何连接和设置…

    SIMATIC WinCC 2019年6月11日
  • wincc 7.4导入博途V16 export scada文件没有变量

    使用博途导出工具export scada导出变量,在导入WINCC 7.4中时,V16导出的文件在wincc中读不到数据, V15导出的文件在winc…

    2020年11月1日
  • MP377触摸屏报欠电压

    我有一个MP377触摸屏,之前电源坏了,换了一个,现在上电就显示undervoltage condition detected-system in&n…

    SIMATIC WinCC 2020年11月1日
  • wincc离散量开/停记录

    想把设备的开的时间和停的时间记录下来,用的是离散量报警记录  。但是当信号状态改变时,会生成3~4条记录。应该怎么做呢? 图片说明:    …

    2019年6月11日
  • wincc v7.0 sp3安装问题

    安装时老是出现这个问题,怎么回事,如何解决?求各位大神帮忙! 最佳答案 出现什么问题,可以查软件安装兼容性。 提问者对于答案的评价:谢谢

    SIMATIC WinCC 2017年11月23日
  • 博图V14软件里面的可视化选项

    博图V14软件里面的可视化是不是可以对西门子人机(触摸屏)进行组态编辑啊(就是编写人机画面)?博图功能太强大了好多不知道怎么用 最佳答案 可以你可以在这里学习一下http://ww…

    SIMATIC WinCC 2017年5月28日
  • wincc c脚本

    利用c脚本编程实现,采集一个外部变量,是字符串形式的,然后颠倒字符串的顺序,输出给另一个外部变量。 最佳答案 以下为按钮点击事件脚本,其中 TXT1、TXT2 …

    2019年6月11日
  • 怎样对画面显示值取绝对值显示

    现在我有两个压力测点,测点一a和测点二b,画面显示的差压我是用变量直接连接:a-b。有时候差压会变成负值,所以想取绝对值显示,为什么abs不好用了?还有,相求教下C脚本写的话是怎么…

    SIMATIC WinCC 2017年11月12日
  • WINCC的趋势时间显示轴不同步走

    WINCC的趋势时间显示轴不同步走,不知道是为什么,不管我点go还是stop,在stop状态下点左右翻页也不变化,趋势也不更新。趋势设置里关于时间轴的设置有个从。。。到。。。时间,…

    SIMATIC WinCC 2019年6月11日