杭州中凌自动化系统有限公司@逐渐变晕315230746admin@hackhome.net使用Wincc-自定义对象实现阀门复杂控制要求一、需求:阀门一般有5种状态:全开全关故障开关。控制:以wincc元件库的阀门为基础,全开的时候显示绿色,全关的时候显示红色,开过程显示闪烁绿色,关过程显示闪烁红色,故障显示闪烁黄色。二、实现:思路一直接在元件的属性写脚本,但是这个方法在不同的控制对象,需要修改变量时,必须进入脚本修改,万一不小心,可能会修改其他代码,而且修改不是很方便思路二建立wincc的自定义对象,可以解决上面问题。步骤1、在内部变量建立五个变量命名为bool1bool2bool3bool4bool5bool1对应全开bool2—全关bool3—开bool4—关bool5—故障2、在画面编辑器中,从库中拖出一个阀门元件和5个静态文本,把阀门元件的符号外观属性修改为Shaded-1如下图:文本一对象名改为FullOpen文本二对象名改为FullClose文本三对象名改为Open文本四对象名改为Close文本五对象名改为Fault阀门元件对象名称为Control13、把文本对象叠在一起,并所有文本的显示属性改为否,放到阀门后面,使其看不见。杭州中凌自动化系统有限公司@逐渐变晕315230746admin@hackhome.net4全选对象(注意阀门元件是否被选中,可能需要shift+单击来选中),右击—自定义对象—创建把UserDefined2名称修改为Script用来放置需要修改脚本的属性,并将control1的前景色闪烁颜色闪烁样式加入到Script属性组的下面。如下图:5、回到选择的属性框,右击选择-主题选择并把userDefined3添加到已选主题框中(右移)确定后,修改userDefined3为userDefined(这个属性组中存储的是在工程中我们要添加的变量名),分别把FullOpenFullCloseOpenCloseFault5个文本变量的文本属性添加到userDefined下面,并右击修改属性的名称,确定完成修改。修改后如下。杭州中凌自动化系统有限公司@逐渐变晕315230746admin@hackhome.net6、添加脚本在Script下的ForeColor属性添加vbs脚本:Dimfullopen,fullclose,open,close,faultIfItem.FullOpenThen'防止输入空字符fullopen=HMIRuntime.Tags(Item.FullOpen).Read()'获取阀门全开变量值EndIfIfItem.FullCloseThen'防止输入空字符fullclose=HMIRuntime.Tags(Item.FullClose).Read()'获取阀门全关变量值EndIfIfItem.OpenThen'防止输入空字符open=HMIRuntime.Tags(Item.Open).Read()'获取阀门开变量值EndIfIfItem.CloseThen'防止输入空字符close=HMIRuntime.Tags(Item.Close).Read()'获取阀门关变量值EndIfIfItem.faultThen'防止输入空字符fault=HMIRuntime.Tags(Item.fault).Read()'获取阀门故障变量值EndIfIffault=1Then'当故障ForeColor_Trigger=RGB(255,255,0)'前景色黄色Item.BlinkColor=RGB(180,180,0)'闪烁色淡黄色Item.BlinkMode=2'闪烁模式选择(详见wincc)Elseiffullopen=1Then'当全开ForeColor_Trigger=RGB(0,255,0)'前景色绿色Item.BlinkMode=0'闪烁模式选择(0为取消闪烁)Elseiffullclose=1Then'当全关ForeColor_Trigger=RGB(255,0,0)'前景色红色Item.BlinkMode=0'闪烁模式选择(0为取消闪烁)ElseForeColor_Trigger=RGB(128,128,128)'其他状态为灰色EndIf杭州中凌自动化系统有限公司@逐渐变晕315230746admin@hackhome.net在BlinkColor属性中添加如下脚本:Dimfullopen,fullclose,open,close,faultIfItem.FullOpenThen'防止输入空字符fullopen=HMIRuntime.Tags(Item.FullOpen).Read()'获取阀门全开变量值EndIfIfItem.FullCloseThen'防止输入空字符fullclose=HMIRuntime.Tags(Item.FullClose).Read()'获取阀门全关变量值EndIfIfItem.OpenThen'防止输入空字符open=HMIRuntime.Tags(Item.Open).Read()'获取阀门开变量值EndIfIfItem.CloseThen'防止输入空字符close=HMIRuntime.Tags(Item.Close).Read()'获取阀门关变量值EndIfIfItem.faultThen'防止输入空字符fault=HMIRuntime.Tags(Item.fault).Read()'获取阀门故障变量值EndIfIffullopen=0Andfullclose=0Andfault=0ThenIfopen=1Then'阀门打开过程'实现灰色与绿色的交替闪烁Item.ForeColor=RGB(128,128,128)BlinkColor_Trigger=RGB(0,255,0)Item.BlinkMode=2Elseifclose=1Then'阀门关闭过程'实现灰色与红色的交替闪烁Item.ForeColor=RGB(128,128,128)BlinkColor_Trigger=RGB(255,0,0)Item.BlinkMode=2EndIfEndIfIfopen=0Andclose=0Andfault=0ThenItem.BlinkMode=0'除了开关故障其余取消闪烁EndIf杭州中凌自动化系统有限公司@逐渐变晕315230746admin@hackhome.net到这里我们需要实现的功能就已经实现了。工程中需要使用只要把UserDefined属性下的全开全关开关故障填上相应的变量就可以了,其他不用改动脚本也不需要懂。只给你5个变量接口(注意:不是在动态中进行变量连接,而是双击属性名,在单出的文本输入中输入变量名)。以上内容在wincc6.2sp3中文版中测试通过预览地址:=76104&uk=17166665Demo下载地址:=76123&uk=17166665