WinCC OA-CTRL-脚本执行流程及作用域
2021-03-04 00:28
标签:开发 ref inf 假设 img 参考 加载 current 一个 近日,发现了一张有助于大家理解OA架构的图,在此分享给大家 有关OA架构的文章大家可以参考 WinCC OA前言-透视OA软件架构 我们知道 control 脚本 作为OA系统里的粘合剂,帮助WinCC OA 实现了在线开发,在使用过程中难免对contrtol的执行步骤及流程有所困惑,比如全局变量该怎么设置, 今天就带领大家仔细研究下control的启动及加载流程. 上图总结了 control 运行的流程, 我们现在假设有一个string类型的变量tag1,需要在 Control Manager 及Panels 中访问, OK ,让我们操练起来 我们在项目的Liraries文件夹下 创建了globalTest.ctl文件 我们在control manager 启动文件里 添加了jiang.ctl jiang.ctl 负责引入 刚刚创建的globalTest.ctl 库文件 并修改tag1内容, 新建一个测试用panel script1.pnl 并在ScopeLib 里 引用“globalTest.ctl”,同时我们定义一个tag2 我们在initialize 事件里分别打印 tag1 及tag2 重启Control Manager 及运行script1.pnl 注意观察LogViewer 我们看到 全局变量 都打印出来了 但是在control manager 里面修改的内容 script1.pnl并没有拿到 重点 前几篇文章 我们说过 WinCC OA 里的Control Manager 与User Interface(本文的gedi),都是独立的进程, OA为了让全局变量更加安全可控,并没有采用全局共享内存的方法,而是在每个进程引用全局变量的时候,分别拷贝一份副本供自己使用 因此 自定义的库文件jiang.ctl里面的tag1 才会出现上图现象,但是相同进程里的操作是同一份全局变量,我们可以做个小实验 1)让我们新建一个script2.pnl,同样在ScopeLib里使用#uses "globalTest.ctl"引用全局变量,之后在面板里面放置一个按钮, 按钮用来打印tag1并加上标记 2) 将script2.pnl 拖拽放入script1.pnl 3) 在script1.pnl内新增一个按钮 打印tag1 并加上标记panel1 marked; 运行这个复合面板 script1.pnl 打印结果如下 三次点击 分别都加上了各自的印记 如何在Control Manager 与 User Interface 里同时操作一个全局变量? 还记得我们说过 Control Manager 与User interface 都是通过EV 发送及接受消息的,结合之前说过的 定时器 ,相信大家一定会想到方法 WinCC OA-CTRL-脚本执行流程及作用域 标签:开发 ref inf 假设 img 参考 加载 current 一个 原文地址:https://www.cnblogs.com/indus-eric/p/12946022.html题外话
Control 脚本执行流程
流程图
1) 创建全局变量 tag1
2) Control Manager 引用并修改
3) 创建第一个测试用panel
4) 创建嵌入式panel并测试
思考?
欢迎扫码 关注我们
上一篇:C#递归
文章标题:WinCC OA-CTRL-脚本执行流程及作用域
文章链接:http://soscw.com/index.php/essay/59755.html