关于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日 上午2:42

相关推荐

  • Wincc曲线和报警打印问题

    我们要求通过时间查询,打印“数据曲线”和“报警记录”1,新建打印布局,“Test.RPL”,加入曲线控件和报警控件2.新建打印作业,“Print Job001”&nbsp…

    SIMATIC WinCC 2019年6月10日
  • 为何无法连接到HMI

    我使用MP277,通过WCC FLEXIBE2008无论通过MPI/DP还是通过以太网,为何连接时一闪就过去了,没有任何提示,就连接不上,之前也是这个程序,但是连机正常的…

    SIMATIC WinCC 2019年6月10日
  • wincc控件属性乱码显示

    我安装的wincc6.0控件属性乱码显示 ,请问各位大哥能诊断一下是说明原因。是不是缺少字库呀,在英文和中文的情况下都是乱码,请参看图片。谢谢! 问题补充:两位的回答我都…

    2019年6月11日
  • WCC安装太麻烦了,有没有自动安装系统啊

    最佳答案 没有自动安装系统,必须按照顺序一步步安装, 提问者对于答案的评价:谢谢师兄,按你指导,立马安装好 ,谢谢 专家置评 ASK 说得很详细。不同版本稍有区…

    SIMATIC WinCC 2019年6月11日
  • 如何使用kepserver进行modbus的rtu通讯??

    在建立通道时有好多的选择,如modbus ascii serial 、modbus ethervnet、modbus plus、m…

    SIMATIC WinCC 2019年6月11日
  • WINCC FIEXIBLE 权限问题

    wincc的用户名和密码都正确,当我点击一个按钮时,弹出登录画面,我输入了有相关权限的用户和密码(前提是密码正确)为何点OK后,消失没有任何反应,求解密码是可以自己修改的把,即使密…

    SIMATIC WinCC 2018年12月6日
  • 结构变量问题1

    恕我转不过弯来,结构这个       1.是多个画面窗口指向一个变量组态(小画面里组态一些共用的按钮之类)且多…

    SIMATIC WinCC 2019年6月11日
  • Wincc运行记录报表如何做

    最基本的一张报表,例如A系统,开机时间,关机时间,自动生成一张报表,包边可按天,周生成。 钻石用户推荐最佳答案 WinCC数据报表实现方法介绍http://www.ad.sieme…

    SIMATIC WinCC 2021年7月5日
  • wincc 焦点 与 文字显示

    首先请问wincc对象属性事件里面的焦点有什么用?再就是我想使用鼠标划向控件,就能够显示文字和变量(文字和变量参杂在一起),用C怎么做呢?麻烦各位了! 问题补充:我选的时Symbo…

    SIMATIC WinCC 2019年6月11日
  • wincc中按钮动作变量赋值

    一个变量“a”为Bool型,按下wincc上的按钮在鼠标动作时打开一个窗口,在此窗口内有一个按钮对应的变量“b”为Bool型,能否使在变量“b”值变化时变量“a”同时变化 最佳答案…

    SIMATIC WinCC 2021年7月5日