1天时间这样搞定上位机(组态王)几百设备的组态?懒惰使人进步
我是老董,专注于电气自动化项目经验分享,欢迎转发!
这两天接手了一个别人做了一半的上位机项目,使用的是组态王7.5版本,几百的类似的设备,如:工频水泵、电机,变频水泵、电机,各种传感器、阀门,但仔细归纳起来基本上可以归为三大类:电机、阀门、仪表。
前情介绍

前面别人做的方式是基本的典型应用,比如:电机1的运行是绿色,就弄一个绿色的圆圈,然后用电机1_run信号显示/隐藏,故障是黄色圈,用电机1_fault显示隐藏。
然后弹出窗口一个变量一个变量的进行连接,这样做当然没问题,问题的关键是老董懒啊!让老董做这种重复且繁琐的工作浪费大把时间精力,老董实在是有心无力!所以还是按照老董惯用套路~一种套路打天下

改进方式
1、首先改进工艺图上的状态显示,一个表达式多种颜色显示所有状态。
有多种属性如:run,fault,alarm都是布尔值,但是我们上完小学了,我们不光会加法,还会乘法啊~嘿嘿,run*1+fault*2+alarm*4这样我就可以等于0时灰色,等于1时绿色,等于2时红色,等于4时黄色,一直到100都是红色就OK了啊。
有朋友问老董为啥没有3啊?你吃了啊?
并没有,1+2等于3为了避免这种情况,我们可以设定一个特殊颜色用来表示多信号同时为真的状态。
这个样子复制粘贴、然后更改速度很快了,注意最好是将按下时的弹窗脚本编辑完成后再复制。感叹一下,组态王功能还是偏弱了,很多组态软件做成模板,我可以直接就改一个设备名就可以了。

2、使用脚本做弹窗公用模型,间件传址的方式简化工作流程。
首先将阀门、电机、仪表的属性接口、事件接口整理出来,将电机、阀门、仪表规成三类,用最多属性的设备做成结构变量。
如下图:
1)结构变量全部用内存型

2)建立结构变量VF_MOTOR1,成员类型全部内存型,与外部变量数据类型相同。

3)建立公用窗口
窗口内所有状态连接结构内存变量,如:当前频率显示选择模拟量值输出,表达式内VF_MOTOR1.HZ_PV

4)工艺画面中的表示设备状态的圈圈,按下时使用脚本:
VarRefAddress("\\local\VF_MOTOR1.R_L", "TEST_VFPUMP1_R_L");
VarRefAddress("\\local\VF_MOTOR1.RUN", "TEST_VFPUMP1_RUN");
VarRefAddress("\\local\VF_MOTOR1.FAULT", "TEST_VFPUMP1_Fault");
VarRefAddress("\\local\VF_MOTOR1.M_A", "TEST_VFPUMP1_M_A");
VarRefAddress("\\local\VF_MOTOR1.M_START", "TEST_VFPUMP1_M_Start");
VarRefAddress("\\local\VF_MOTOR1.M_STOP", "TEST_VFPUMP1_M_Stop");
VarRefAddress("\\local\VF_MOTOR1.D_ALARM", "TEST_VFPUMP1_D_ALARM");
VarRefAddress("\\local\VF_MOTOR1.RST_DALARM", "TEST_VFPUMP1_RST_Alarm");
VarRefAddress("\\local\VF_MOTOR1.ACCTIME", "TEST_VFPUMP1_ACC_TIME");
VarRefAddress("\\local\VF_MOTOR1.RST_ACCTIME", "TEST_VFPUMP1_RST_ACCTIME");
VarRefAddress("\\local\VF_MOTOR1.HZ_PV", "TEST_VFPUMP1_HZ_PV");
VarRefAddress("\\local\VF_MOTOR1.M_HZ_SV", "TEST_VFPUMP1_M_HZ_SV");
\\local\BOX_NAME="测试泵1" ;
ShowPicture("变频电机控制");

快速替换
使用脚本的意义当然是为了快速替换了,我们在建立变量时使用统一的后缀,如_run,_m_a,_fault,等等,而前缀可以是位号也可以是设备名如:"TEST_VFPUMP1",所以我们可以直接在脚本窗口将TEST_VFPUMP1,直接替换成类似TEST_VFPUMP2等其他设备名。
变量快速建立
变量可不要一个一个在组态王中建立,建立几个然后导出到EXCEL批量编辑完以后直接导入进组态王,效率N倍。。。


好了现在你可以愉快的玩耍了,看完了记得关注老董昂,我们要仗义!
要不~老董说两句好话?讨好一下~额~~~祝大家2020年收获满满~2021年再战辉煌!嘿嘿!!
对了附上VarRefAddress函数说明:
VarRefAddress
该函数为实现普通变量间的引用,普通变量可以数据类型相同的其它变量。一般用于对于多组定义相同的IO变量,定义一组内存变量,在组态王中使用这一组内存变量定义画面显示的情况。调用格式:
VarRefAddress(RefTagName, RefedTagName);
参数说明:
RefTagName:字符串型 引用的变量名称
RefedTagName:字符串型 被引用的变量名称
别忘了关注、点赞、转发昂~~