一、目标
组态工程师,基于生成器快速开发出具有填充动画的反应罐精灵图,在云组态王中可实现:开发态拖拽到画面中,配置连接实时变量、填充量程,运行态根据实时变量值实时填充液位状态的效果。
二、实现效果
运行态:
反应罐填充
开发态:
点击配置,打开配置页,可配置变量、量程参数信息。
三、前置准备
图片素材:
3D效果的反应罐体
填充动画类配置页模板:
四、开发流程
五、开发步骤
1、2D模型中开发反应罐
1、进入开发工具,新建2D模型
2、创建图片图素容器
3、添加反应罐图素
5、按图片大小设置位置、尺寸
6、设置2D画面的锁定宽高比策略
7、创建填充动画,新建变量
2、2D反应罐配置填充动画
1、双击矩形
点击画刷,类型选择线性填充
2、进入时事件脚本配置
进入时:
- debugger
- let pageName = "反应罐_配置页";
- ShowChild(pageName, {
- styleOptions: {
- width: 454,
- height: 272,
- top:200,
- header: true,
- closable: true,
- title: "配置",
- },
- variables: [{ //将变量名传递给子配置页
- name: "tagname", //子配置页变量名
- value: $Variable.name //本页变量名
- },
- {
- name: "MAX_VALUE",
- value: $Variable.MAX_VALUE
- },
- {
- name: "MIN_VALUE",
- value: $Variable.MIN_VALUE
- }]
- }, (res) => {
- debugger
- let eventParam = res.eventParam;
- if (res.eventName === "cancel") {
- CloseChild(pageName)
- } else {
- if (eventParam[0] != "") { //判断是否直接点击确认按钮
- let data = JSON.parse(eventParam[0]);
-
- // let int_w = {
- // linkDataObjInfo: {
- // id: data.WID,
- // type: 2802,
- // valueType: data.tagDataType
- // }
- // }
- let int_R = {
- linkDataObjInfo: {
- id: data.DATAID,
- type: 2802,
- }
- }
- $ClientProject.SetVariable({
- name: "液位值",
- value: int_R
- }, (res) => {
- debugger
- console.log(res)
- })
- // $ClientProject.SetVariable({
- // name: "变量_写",
- // value: int_w
- // }, (res) => {
- // debugger
- // console.log(res)
- // })
- $ClientProject.SetVariable({ //变量名持久化
- name: "name",
- value: data.name
- }, (res) => {
- debugger
- console.log(res)
- })
-
- }
- //参数处理
- $Variable.MAX_VALUE = eventParam[1];
- $ClientProject.SetVariable({ //变量名持久化
- name: "MAX_VALUE",
- value: eventParam[1]
- }, (res) => {
- debugger
- console.log(res)
- })
-
- $Variable.MIN_VALUE = eventParam[2];
- $ClientProject.SetVariable({ //变量名持久化
- name: "MIN_VALUE",
- value: eventParam[2]
- }, (res) => {
- debugger
- console.log(res)
- })
-
- CloseChild(pageName);
- }
- })
复制代码 全部制作完后点击保存
3、页面模型中开发反应罐配置页面
1、新建配置页面
2、使用配置页模板直接导入现成的配置文件(JSON格式)
3、或者使用左侧的布局容器,自定义配置所需的配置页面字段
4、配置页创建所需的变量
5、编写配置页【请选择】按钮脚本(触发打开变量选择器)
- ShowDataLinkPage(function(res){
- debugger
- if(res.eventName === "submit"){
-
- let data = {
- DATAID: res.eventParam[0].DATAID,
- WID: res.eventParam[0].WID,
- name: res.eventParam[0].name,
- tagDataType: res.eventParam[0].tagDataType
- }
- $Variable.data = JSON.stringify(data);
-
- ElementInput1.value = res.eventParam[0].name;
- }
- //直接关闭变量选择器
- CloseChild();
- })
复制代码
6、编写确定按钮点击事件脚本(同请选择按钮)
- debugger;
- let tagTrue = 0;
- if (ElementInput1.value == "") {
- ShowMessage({
- message: '变量名不能为空!',
- type: 'warning'
- })
- } else if (ElementInput1.value == $Variable.tagname) { //变量未重新选择,允许确认
- tagTrue = 1;
- } else {
- if ($Variable.data != "") { //变量已选择
- let data = JSON.parse($Variable.data);
- let dataType = data.tagDataType;
- if ((dataType == "bool") && (dataType == "string")) { //数据类型检验
- ShowMessage({
- message: '变量类型不匹配!',
- type: 'error'
- })
- } else {
- tagTrue = 1;
- }
- } else {
- $Event.cancel();
- }
- }
- let check = tagTrue && ElementInput2.ValidateCheck() && ElementInput3.ValidateCheck();
- if (check) {
- $Variable.MAX_VALUE = Number(ElementInput2.value);
- $Variable.MIN_VALUE = Number(ElementInput3.value);
- $Event.submit($Variable.data, $Variable.MAX_VALUE, $Variable.MIN_VALUE);
- }
复制代码
7、编写取消按钮点击事件脚本
8、创建时事件脚本
- debugger;
- //数据加载至配置页组件;
- ElementInput1.value = $Variable.tagname;
- ElementInput2.value = $Variable.MAX_VALUE;
- ElementInput3.value = $Variable.MIN_VALUE;
复制代码
9、自定义公共事件创建,默认创建submit、canel
通过以上步骤完成精灵图配置页面的开发。
4、精灵图绑定子配置页
1、再次打开2D反应罐精灵图页面
名称填写为配置页名称。
通过以上步骤完成精灵图的所有开发工作。
5、扩展
云组态王精灵图除填充效果外,还可实现旋转、移动、显隐等效果,应用面十分广阔,可运用于许多工业设备,如电机、阀门、传感器、仪表、风机、信号灯、按钮等工业元件,不仅可以的实现一个动态效果,还更加简洁美观,操作更加简便。
|
|