WinCC OA-面向对象工程开发2-Para与Gedi关联

接上文

WinccOA-面相对象工程开发1-面相对象模型搭建

粘合剂

上篇文章 我们搭建了 泵站分区对象 的Para数据类型及Gedi组态,

现在我们要将数据与图形关联起来,关联的方法有两种

  • 一种为组态(妥妥拽拽,点击配置)
  • Crtl脚本(其实组态的底层也是Ctrl)

我们主要使用Ctrl脚本,这样便于对模板的管理

关联步骤

1)新建数据点

newdata

在数据类型DeliveryArea 下新建数据点 community01

2)对Gedi里的控件起名


如图示 红色字为控件属性名称

3)对panel的initialize事件进行编码

引用刚才数据点 编写Ctrl脚本

详细代码如下

main()
{
  //阀门关联函数
  dpConnect("setValvePos","System1:community01.Valve.switch");
  //入口压力流量关联函数
  dpConnect("setInPress","System1:community01.InPress.value");
  dpConnect("setInTotal","System1:community01.InFlow.total");
  dpConnect("setInNow","System1:community01.InFlow.now");
  //出口 压力流量关联函数
  dpConnect("setOutPress","System1:community01.OutPress.value");
  dpConnect("setOutTotal","System1:community01.OutFlow.total");
  dpConnect("setOutNow","System1:community01.OutFlow.now");
}
//阀门数值变化调用函数
void setValvePos(string dp1, bool a)
{
    if(a==FALSE){
      setValue("switchLine","visible",TRUE);
      setValue("valve","color","STD_value_not_ok");
    }else{
      setValue("switchLine","visible",FALSE);
      setValue("valve","color","STD_man");
    }
}
//入口压力数值变化调用函数
void setInPress(string dp1,float a)
{
  setValue("inPress","text",a);
}
//入口累计流量数值变化调用函数
void setInTotal(string dp1,float a)
{
  setValue("inTotal","text",a);
}

void setInNow(string dp1,float a)
{
setValue(
"inNow","text",a);
}

void setOutPress(string dp1,float a)
{
setValue(
"outPress","text",a);
}
void setOutTotal(string dp1,float a)
{
setValue(
"outTotal","text",a);
}

void setOutNow(string dp1,float a)
{
setValue(
"outNow","text",a);
}

注: 暂时忽略泵转速属性....

4) 对组态按钮事件编码

按钮单击事件

main(mapping event)
{
int rc, x;
rc
=dpGet("System1:community01.Valve.switch", x);
dpSet(
"System1:community01.Valve.switch", !x);
}


5) 模拟数值变化&测试

2020-05-13-11-02-32

未完 待续...


欢迎关注,及时获取更新

posted @ 2020-05-13 11:13  莱立佰  阅读(1796)  评论(0编辑  收藏  举报