WinCC OA-面向对象工程开发2-Para与Gedi关联
接上文
粘合剂
上篇文章 我们搭建了 泵站分区对象 的Para数据类型及Gedi组态,
现在我们要将数据与图形关联起来,关联的方法有两种
- 一种为组态(妥妥拽拽,点击配置)
- Crtl脚本(其实组态的底层也是Ctrl)
我们主要使用Ctrl脚本,这样便于对模板的管理
关联步骤
1)新建数据点
在数据类型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);
}