使用过WINCC并且项目中用到很多阀门、电机、等大量一模一样设备,又需要上位上面对每个设备能进行单独进行操作的人员,都知道WINCC有个很好用的功能,那就是面板功能,通过替换变量前缀来实现用一个公用窗口来操作所以阀门或者电机,这样就能降低很多工作量,那么问题来了,用MCGS能实现么?怎么实现呢?
下面我就来说一下具体实现方法。
软件环境:McgsPro 3.3.2.5166
MCGS实现面板我知道的有两种方式,两种方式优略各不相同,这一期先说一种方式,
先说下需要用到的函数,
!DataGetInt (DatName,Value)
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014876-1074076561.png)
!DataGetFloat (DatName,Value)
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014991-1815003635.png)
!DataGetString (DatName,Value)
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014924-1992373298.png)
!DataSetInt (DatName,Value)
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014506-1111996068.png)
!DataSetFloat (DatName,Value)
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014420-81763408.png)
!DataSetString (DatName,Value)
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014942-2144922734.png)
咱们会通过以上几个函数来实现今天的功能。
新建一个项目
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014968-1470604252.png)
新建如下变量,用6个阀门来做测试
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014989-318958961.png)
AM 手自动切换
Open 打开 关闭
Status 阀门状态
SP 设定值
Com_SP 这个是公用面板里面设定值的临时中转bian'l
创建两个窗口,运行窗口和 Valve_Com
运行窗口
对应设备的工艺流程图界面,我做的比较丑只是为了演示用不要吐槽。
上面做了六个阀门图标,可以根据项目需求数量来添加阀门
右边为了便于观察效果,做了阀门对应的变量来显示
有的人会问了,这有啥省劲的,我用常规的方式复制粘贴也能搞出来,
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014435-1705864439.png)
阀门图标是图形加一个按钮,在按钮的抬起事件中写入如下脚本
dim Name as STRING ‘定义一个字符串变量作为传递变量名称使用
Name = "AV01" '替换字符串为实际设备名称 给变量赋值,也就是需要替换的地方,脚本只需要替换此处设备名称即可使用,降低工作量
DeviceName = Name '将设备名称传递到全局变量中
!OpenSubWnd(用户窗口.Valve_Com,200,200,200,240,18 ) '打开公用窗口
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014445-503525128.png)
替换填充颜色表达式变量名,这是阀门本体变色使用。
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014989-1682519934.png)
每个阀门图标只需要替换这两个位置的设备名称即可。最大的降低了工作量。
Valve_Com窗口
此窗口为公用窗口,点击阀门图标会弹出该窗口,可以根据点击对应的阀门来对该阀门进行手动控制或者更改参数。
不管你多少个阀门只需要这个窗口,大大降低工作量。
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014942-1185495358.png)
此处填写全局变量设备名称用来显示设备名称
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014430-750597401.png)
此处为关闭弹窗按钮
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014942-782979566.png)
自动按钮脚本如下
具体描述看注释,我就懒一下,不在单独 描述了。
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014525-1150767361.png)
手动按钮操作跟自动一样,只是需要写值 0
开启和关闭按钮我就不在一一描述了,我相信大家举一反三就能做出来。
状态和设定值是比较麻烦的,我来详细描述一下。
状态显示我为了减少全局变量而使用了一个标签动画,
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014989-252642965.png)
打开窗口的循环脚本,设定循环时间100MS(可以根据需要设定刷新周期),
,方框位置为刷新状态值的脚本,脚本我就不解释了,跟上面的都差不多。
Valve_Com.Status.Text = !Str(Value) 这一句的意思就是将读取的状态值写入到显示控件的TEXT熟悉中。
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014442-516267583.png)
设定值,因为该变量需要输入,所以我做了一个全局变量Com_SP来进行中转。
绑定变量到输入框
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014450-215561585.png)
为了设定值能根据实际值实时刷新,所以循环脚本里面加入了以下脚本,对变量进行周期读取刷新。
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014440-1399265070.png)
变量的刷新就写完了然后写写入的程序
右键选择事件
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014968-1247968647.png)
点击更改事件
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014967-1964582757.png)
点击事件连接脚本
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014990-2086610637.png)
写入如下脚本
DIM Name as STRING‘定义字符串变量
Name = DeviceName + "_SP" ’ 组合变量名
!DataSetInt(Name,Com_SP) ‘将Com_SP的值写入到全局变量中
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014824-2034596888.png)
到此为止,公用面板的已经全部写完了,如果需要更多的变量,只需要按照上述方法进行添加就OK了,以后就不需要更改该画面了。只需要复制阀门图标进行替换里面设备名称就OK了。
模拟运行
此时各个阀门的值均为0
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014967-1674674250.png)
点击阀门AV01 弹窗公用窗口
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014507-1986949394.png)
点击自动 ,开启 设定值设定为55
此时各个变量的值已经更改
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014924-42200463.png)
点击阀门AV02
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014435-1498400750.png)
点击自动 ,开启 设定值设定为44
此时各个变量的值已经更改
![]() ![](https://img2022.cnblogs.com/blog/2232416/202204/2232416-20220411232014819-1815000789.png)
测试完毕,可以通过一个公用窗口对各个阀门进行控制。
第一种方法已经讲解完毕,第二种方法下期进行更新。
教程比较简单,忘大家多提意见,谢谢大家看到了最后。
|