在WinCC画面中,如何让"对象"动起来是一门学问,有许多方法可供选择,比如:变量连接、动态对话框及脚本。一般而言,要实现更为复杂的动态,就需要通过脚本动作来实现了。WinCC中可选的脚本有C脚本和VBS脚本。
接下来,我们通过一些简单的实例,来揭开WinCC的C脚本语言的神秘面纱。
本文演示一下"如何让一个【圆】在水平方向上动起来",效果如图1所示。
![863a25fe895497eb2968ae18ada0a61a.gif](https://i-blog.csdnimg.cn/blog_migrate/c517995152ab897181eb8a3688573313.gif)
图1 【圆】的水平运动
一、画面的结构
![4040c1346b37458a1967fda5f7c668e6.png](https://i-blog.csdnimg.cn/blog_migrate/346feb7fcdf0b81608e8ba3327090122.jpeg)
画面中所有的"对象"如图1所示,共分为两类:
1、运动的【圆】
![c39ff54bbc41de0ae7ab7bbcd0ee062f.png](https://i-blog.csdnimg.cn/blog_migrate/f4f8bf30a09dcd5720d70be53012b576.jpeg)
【圆】是本例的主体,为使其在"水平"方向上动起来,可利用C脚本组态其【位置X】的动态属性。
2、实时坐标显示
【实时坐标显示】功能由3个"静态文本"对象组成,如图1所示。
- "静态文本1"用于显示【括号,"( , )"】,它在画面中是静止的,无需组态动态属性;
- "静态文本2"和"静态文本3"分别用于显示【圆】实时的位置X和位置Y,因为【圆】是运动着的,所以,其【文本】属性应组态成动态属性,与预先定义的内部变量"positionX"、"positionY"相关联,当它们变化时,所显示的文本随之变化,组态如图4所示。
![4bbb42ebc1d442aa4d9c7b24a88dbb0a.png](https://i-blog.csdnimg.cn/blog_migrate/9866928bcd4b0135fa3368d20ff54df2.jpeg)
二、让【圆】动起来
准备工作完成后,现在进入"正题",【利用C脚本,让圆在水平方向上动起来】。
![c0c026b8721d70cfe6c7d6fa4baf0bd4.png](https://i-blog.csdnimg.cn/blog_migrate/e2426f696398889b74415a138b90c93f.jpeg)
如图5所示,为【圆】的"位置X"属性组态动态属性,选择【C动作...】,在"动作编辑窗口"中,编写相应的代码。
1、代码解释
![b97d65e331b61d7f35b231dc9afcc1b0.png](https://i-blog.csdnimg.cn/blog_migrate/5781ad6295e6f591465b5929bcb863ea.jpeg)
在C脚本中,首先通过内部函数"GetTagDouble"将变量"positionX"的值读进来,让其自增20,然后再通过内部函数"SetTagDouble"将其写入变量"positionX"中。判断语句"if(X>=500)"用于限定【圆】的运动范围,使其仅在【100,500】之间运动。
2、C脚本的触发条件
用"C脚本"来组态对象的动态属性,需要为其配置"触发器",否则C脚本将不被执行。
![b46526a3b41c8fe1ea316ac5e3ff9deb.png](https://i-blog.csdnimg.cn/blog_migrate/158c11938febd402b2151e9ccfe13737.jpeg)
在"C动作编辑窗口",点击"触发器"按钮(【小闹钟】图标),即可弹出"触发器配置"窗口,如图7所示。触发器可以是"变量触发"也可以是"周期触发",这里选择通过变量"positionX"触发脚本执行,并在positionX满足条件的情况下,每1s触发一次。
配置了上述"触发器"后,由于变量"positionX"已经被限定在【100,500】之间了,所以,脚本动作会每隔1s执行一次,也就是说,"positionX"的值每隔1s自增20,这样,动态上来看,就实现了【圆】在水平方向上了移动。
【思考】
![a1d76a3896032942226293d71b156176.gif](https://i-blog.csdnimg.cn/blog_migrate/6967de91e80f713a638afdcf6b7352b3.gif)