zoukankan      html  css  js  c++  java
  • WinCC OA-CTRL-脚本执行流程及作用域

    题外话

    近日,发现了一张有助于大家理解OA架构的图,在此分享给大家

    有关OA架构的文章大家可以参考 WinCC OA前言-透视OA软件架构

    image


    Control 脚本执行流程

    我们知道 control 脚本 作为OA系统里的粘合剂,帮助WinCC OA 实现了在线开发,在使用过程中难免对contrtol的执行步骤及流程有所困惑,比如全局变量该怎么设置,

    今天就带领大家仔细研究下control的启动及加载流程.

    流程图

    image

    上图总结了 control 运行的流程, 我们现在假设有一个string类型的变量tag1,需要在 Control Manager 及Panels 中访问,

    OK ,让我们操练起来

    1) 创建全局变量 tag1

    我们在项目的Liraries文件夹下 创建了globalTest.ctl文件

    image

    2) Control Manager 引用并修改

    我们在control manager 启动文件里 添加了jiang.ctl

    image

    jiang.ctl 负责引入 刚刚创建的globalTest.ctl 库文件 并修改tag1内容,

    image

    3) 创建第一个测试用panel

    新建一个测试用panel script1.pnl 并在ScopeLib 里 引用“globalTest.ctl”,同时我们定义一个tag2

    我们在initialize 事件里分别打印 tag1 及tag2


    image


    重启Control Manager 及运行script1.pnl 注意观察LogViewer

    image

    我们看到 全局变量 都打印出来了 但是在control manager 里面修改的内容  script1.pnl并没有拿到

    重点

    前几篇文章  我们说过  WinCC OA 里的Control ManagerUser Interface(本文的gedi),都是独立的进程,

    OA为了让全局变量更加安全可控,并没有采用全局共享内存的方法,而是在每个进程引用全局变量的时候,分别拷贝一份副本供自己使用

    因此 自定义的库文件jiang.ctl里面的tag1 才会出现上图现象,但是相同进程里的操作是同一份全局变量,我们可以做个小实验

    4) 创建嵌入式panel并测试

    image

    1)让我们新建一个script2.pnl,同样在ScopeLib里使用#uses "globalTest.ctl"引用全局变量,之后在面板里面放置一个按钮, 按钮用来打印tag1并加上标记

    2) 将script2.pnl 拖拽放入script1.pnl

    3) 在script1.pnl内新增一个按钮 打印tag1 并加上标记panel1 marked;

    运行这个复合面板 script1.pnl 打印结果如下

    image

    三次点击 分别都加上了各自的印记

    思考?

    如何在Control Manager 与 User Interface 里同时操作一个全局变量?

    还记得我们说过 Control Manager 与User interface 都是通过EV 发送及接受消息的,结合之前说过的 定时器 ,相信大家一定会想到方法


    欢迎扫码 关注我们

  • 相关阅读:
    《ECMAScript6入门》___阮一峰 笔记
    JS的常用正则表达式 验证密码(转载自用)
    微信小程序 写一个获取验证码 及setInterval 使用基本方法
    python中将图片从客户端(client)推到(POST)到服务器端(server)的方法
    用python将MSCOCO和Caltech行人检测数据集转化成VOC格式
    Tensorflow物体检测(Object Detection)API的使用
    opencv获取IP摄像头(IP-camera)实时视频流
    利用flask将opencv实时视频流输出到浏览器
    Tensorflow同时加载使用多个模型
    opencv在同一窗口打印多张图片
  • 原文地址:https://www.cnblogs.com/indus-eric/p/12946022.html
Copyright © 2011-2022 走看看