Wincc使用C外部变量替代wincc内部变量
外部变量相对wincc变量的区别
Wincc变量的生命周期是全局的,意味着在CS架构下,和BS架构下,wincc变量的值是统一的,一旦有变化,全局都将发生变化。
如图所示:这里使用的内部变量的location的值为车间首页
![](https://img-blog.csdnimg.cn/img_convert/78c3b80d40d74fffc9f5622d4fcd8232.png)
当点击web端切换画面时,此时画面切换到电线车间,同时location也切换到电线车间,此时服务器端的位置依然在车间首页
![](https://img-blog.csdnimg.cn/img_convert/00867494bdae233bcea3f9d60e7c114c.png)
当服务器端切换画面时,wincc变量随着服务器变成导体车间
![](https://img-blog.csdnimg.cn/img_convert/aed1f19dcf206f14a429f85b75650eab.png)
显然wincc的内部变量是在客户机和服务器间共享的,这可能会导致客户机和服务器或者web端之间产生冲突。
而外部变量的生命周期只在当前运行的客户端中,在每个客户机上面是独立运行的,这样可以各个控件之间传递参数的变量,避免了客户端和服务器之间数据的冲突。
使用方法
在C脚本的项目函数下,创建一个函数,在函数的外部进行变量的定义,这些变量就是外部变量
![](https://img-blog.csdnimg.cn/img_convert/9737a3a69d501818e27acb5d7932c3dc.png)
随后在启动画面处,编辑脚本,在脚本中调用该函数,就会随之创建外部变量,外部变量在当前客户机的生命周期为全局
![](https://img-blog.csdnimg.cn/img_convert/3966044524bc2148d00caaea99e5da18.png)
如图所示,将所有车间画面与数字对应起来
![](https://img-blog.csdnimg.cn/img_convert/a722aa543dbe928c782748ad14334ca0.png)
![](https://img-blog.csdnimg.cn/img_convert/ca02fbaff49fb29ce38d8691e3d4ba73.png)
![](https://img-blog.csdnimg.cn/img_convert/3093bf13b7aba678862eda2eed2c2337.png)
再次运行画面
![](https://img-blog.csdnimg.cn/img_convert/48f2040186e44bb095129bd2b9701d26.png)
切换服务器画面到导体车间,可以看到脚本打印4,而web端并没有影响
![](https://img-blog.csdnimg.cn/img_convert/332c51c34e85da8a592bffe8eb9f34fb.png)
同样,将web端画面切换到电线车间,调试窗口打印了2,服务器端没有变化。说明外部变量的生命周期只在当前服务器或客户端中
![](https://img-blog.csdnimg.cn/img_convert/0f07942068dd4720f69082ac05893f02.png)