西门子WinCC从入门到精通
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.2 动态对象设计

所谓动态对象,就是可以链接到系统的运行变量,把系统的运行状态以数字或者图像变化的方式显示到画面上,或者在画面上有一个输入接口,操作者可以把一些操作指令或者给定值输入,然后再通过变量送给PLC系统,控制设备启停或者修改系统参数。

我们可以参照Windows系统软件本身的操作功能,最常用的大概有:输入框、按钮、棒图、滚动条、单选框、复选框等。入门篇挑选最基本的控件进行介绍。

这些动态对象分组在对象选项板的智能对象组和窗口对象组中。

(1)输入/输出域

所谓输入输出域,也称I/O域,就是既可以输入,用于输入数值,又可以输出,用于显示运行数值。

对于画面中的I/O域以及所有后面章节插入的动态对象,点击右键中的组态对话框命令,见图4-11,可以弹出常用的与动态数据本身相关的属性集中设置的界面,比如图4-12,I/O域的组态对话框的界面。

图4-11 属性

图4-12 I/O域组态

变量从变量表中选择,更新则基本可以保持默认即可。

类型,如果是用于输入,则一般情况是选择输出和输入,因为你输入新数值之后,还要回显回来以看到效果。

而如果数值是只用于显示,不允许修改,则可以设置为输出。

为了便于用户识别这两种不同模式的数值框,通常设置两种不同的背景颜色,比如参考Windows系统的习惯,输入数据为白色,输出数据背景为灰色或彩色。

背景颜色的属性不在组态对话框中,可以在选中对象的情况下,直接在工具栏左侧的颜色栏中选取即可。

在设定完毕之后,打开控件的属性,可以看到,绑定了变量和程序的属性项,字体变成了黑体,因而顺着黑体字可以很方便地找到绑定变量的参数的位置,见图4-13。

图4-13 对象属性

除了少数参数在组态对话框中直观地设置外,更多细节的参数还是需要在这里设置,其中比较重要的是数据的输出格式。需要估量实际数据的范围,来指定数据显示的整数位和小数位,必须足够长而不浪费。比如缺省的999.999。即便是整数1,也显示1.000,而只要超过1000,这里显示不下了,就会显示为***。控件在这方面的自动适应性还是不够强大。

属性之后的静态列中为设置的属性。而动态列中凡是白色灯泡的为可以动态绑定程序,而没有灯泡的,比如数据格式后面没有灯泡,则代表这个属性不可以动态。

(2)棒图

插入棒图后,调出组态对话框的界面,见图4-14。

图4-14 棒图组态

绑定变量后,在属性页中的显示,见图4-15。

图4-15 对象属性

(3)滚动条

滚动条的组态对话框及属性设置与棒图非常相似。但区别是它可以作为输入接口,通过拖动滚动条,来给PLC设定数据。

(4)状态显示

其实本意是根据状态值的变化,显示不同的图形。在某些另外的软件里会叫做图形列表。在使用这个对象之前,我们应该准备一批图形系列,或自己绘制,或网上下载,或提前储备。如图4-16所示(图形为彩色,真实效果更明显)。

图4-16 图形素材

几个图像分别代表了阀门关闭、打开、正关闭、正打开以及错误的各种状态,见图4-17。

图4-17 状态显示组态

在画面中插入了状态显示之后,先增加1、2、4、8状态,然后把图像拖给各状态对应的基本画面。

画面建立OK之后,运行中可以通过修改所绑定的内部变量的值来观察运行效果了。

(5)选项组(单选框)

单选框的每一个选择框,对应的是一个字的每一个位,所对应的字的数值恰恰就是1、2、4、8,可以用来选择方式输入值。这里正好演示做操控上面的图形显示的对象。见图4-18。

图4-18 对象属性

插入对象后,先在几何组中把框数量由缺省的3改为4,然后在字体中逐步修改索引从1到4,逐个修改每条文本的内容。

将过程值绑定到和状态显示同一个的WinCC变量,见图4-19。

图4-19 变量绑定

后面的“更新”,可以改为“有变化时”。因为这里是人工操作的接口,响应快一点,可以令操作人员操作起来更舒适。

整体运行后效果如图4-20所示。

图4-20 运行

可以看到,随着选择不同内容,变量数值变化,画面显示的图像也同步变化,很好地实现了动态化。

(6)复选框

用单选框操作时,会发现有一个缺点,就是不能选择变量值为0了,所以为状态显示设计的0值时的图像不能显示了。而如果用复选框就可以了。使用方法与单选框类似。而复选框的更主要的特点是可以同时选中多个选项,如果用来控制状态图像显示,最终是显示了最大值对应的图像。

(7)文本列表

文本列表的功能与图形列表(状态显示)类似,但不知道为什么,其组态对话框却更接近于I/O域,见图4-21。

图4-21 文本列表组态

所以文本序列需要在属性中输入,见图4-22。

图4-22 对象属性

通过双击分配属性,弹出具体的分配窗口中,输入文本序列和其对应的值。

在运行中,如果只是为了显示对象,那我们知道它可以随着数字的变化而显示不同的文本。而如果是要作为输入接口,就可以通过选择文本,而内核对应的是数字的选择告诉了PLC。这个时候可以把样式\作为下拉列表框显示的属性设置为是,就看到它就真的像Windows里面的下拉框了,见图4-23。

图4-23 运行

(8)动态对话框

我们回过头来看对前面的所有控件的动态绑定的结果,都是白灯变成了绿灯,代表直接绑定了变量。点击右键,见图4-24。其实是有4个:动态对话框、C动作、VBS动作和变量。原来绿灯只是这四种编程形式之中的最后一种。

图4-24 对象属性

信息系统中的描述见表4-1。

表4-1 灯含义描述

简单提一下变量连接:前面用到的变量都是在动态对话框中指定的,而实际上也可以在属性中直接输入链接变量。

比如棒图的上下范围、限制值的范围,都可以直接链接到PLC中实现同步的动态化。每个初学者自行摸索测试一下,即可掌握。这里不再详细讲解。

需要注意的是,每一个属性性质不同,需要链接的变量类型也不同,比如bool型、数值型和字符型,需要自行辨认好。

C动作和VBS动作:两种编程语言分别需要ANSI C和VB Script的基础。一般来说,同一个任务,掌握其中的任何一种都可以实现。但是,有太多的WinCC使用者,甚至是颇有经验的使用者,可能在入门的环节过早地学会了这两种语言,导致明明简单组态就可以实现的问题,搞得异常复杂。自己内心也把使用WinCC的门槛抬高了,甚至莫名其妙对用好WinCC都有了恐惧感。

所以本书的特色是,在入门阶段,这两种编程语言一概不涉及,教给读者,用最简单的组态的方式,就可以实现基本的功能。

除了前面讲到的各种控件的使用方式之外,还有一个重点就是这里要讲的:动态对话框,见图4-25。

图4-25 动态值范围

动态对话框的最经典的应用是对颜色的设定。比如根据变量的数值,设定不同的背景颜色。如图4-25中所示。

对于bool类型的属性,可以直接读取一个字变量的某一个位的状态,见图4-26。

图4-26 位数据

另外,对变量的读取也可以用表达式/公式表达,可以用变量、函数、操作数(+-*/)等各种自由组合,见图4-27。

图4-27 公式

比如可以用一套复杂的计算,得出来结果,通过范围选择来确定状态。或者可以直接采用计算值返回给属性。见图4-28。

图4-28 直接数据

总之,动态对话框的功能非常强大,也非常方便实用,必须结合WinCC信息系统的帮助内容全面学习。

一个对入门者超纲的例子:

针对一个圆的背景颜色的编程,见图4-29。

图4-29 复杂公式

B1,B2,B3,B4分别为4个bool变量;

表达式:('B1'&'B2') | ('B3'&'B4');

功能:在B1与B2同时为1或者B3与B4同时为1时,颜色为红色,否则为灰色。

这里,&=与;|=或,还可以分别替换&为*,|为+,表达式因此变换为('B1'*'B2')+('B3'*'B4'),也可以实现同样的功能。

再比如上面关于状态显示的节中,比如所使用的变量W1是一个完整的状态字,除了低位的bit0~bit3分别代表了阀门的状态之外,高位的其他位也被赋予了其他的信息,那么直接使用变量,就不可用了。解决的方案就是转化为用动态对话框实现。

公式为:W1' & 0xF或者’W1' & 15;

就成功地把一个字中的低4位提取出来了。

是不是太复杂了,有点超出了入门者的理解能力了?别太纠结,如果不能理解也没多大问题,最多在PLC里面多做点编程处理,最终都能达到同样效果。

这里只是给读者展示了能实现的功能而已,实战中用的并不多。

(9)按钮

插入按钮后的组态对话框,见图4-30。

图4-30 按钮组态

在“单击鼠标改变画面”下面选择一个已经设计的画面PDL文件。

然后我们可以看看鼠标事件的鼠标动作中有了一个蓝色闪电,代表已经组态了程序动作,见图4-31。

图4-31 鼠标动作

空白闪电代表未组态动作,而蓝色闪电则代表组态了直接连接。

鼠标动作分左键和右键,其中左键动作可以先后触发3个事件:动作、按下和释放。而动作有3种:C动作、VBS动作和直接连接。

和前面的属性设置一样,在入门阶段我们不涉及C动作和VBS,而仅仅是直接连接,就可以实现足够强大的功能。

然后打开属性对话框,找到事件的鼠标动作中,双击已经生成的动作,打开直接连接组态窗口,见图4-32。

图4-32 直接连接

可以看到,除了可以把一个以后的PDL画面文件名送给画面的名称属性之外,左侧的源有三种:

●常数(不仅仅是画面名,还可以是数值);

●属性(画面中某个对象的某个属性的值);

●变量的值。

右侧的目标也有三种:

●当前窗口;

●画面中的对象(对象的某些属性);

●变量的值。

直接连接的功能,可以从左边的任意一个源取值,送到右边的任意一个目标。

比如:

①可以把一个固定的数值,送给某一个WinCC变量;

②可以把某个WinCC变量的值,送给某一个WinCC变量;

③可以把画面中的某个属性值,送给某个WinCC变量;

④可以把某个固定的数值,送给画面或画面对象的某个属性,比如显示、闪烁、尺寸、位置等;

⑤可以把WinCC变量值,送给上述的属性;

⑥可以把某个对象的相应属性,送给另一个对象的上述属性。

……

注意观察还有个间接的选项,现在暂时不深入探讨,但总的来说,不动用编程语言,仅仅使用直接连接,就可以组态出千变万化的应用可能。

我们来看,按钮除了有事件,也有属性,属性中除了可以设计静态的样式之外,还可以组态动态属性。比如在特定的状态下隐藏、闪烁、字体颜色或背景颜色变化等。与前面讲的所有对象相同。

而与此同时,其实现在再回过头去看,所有介绍过的静态对象和动态对象,原来也曾经有过事件的页面,大部分对象也都可以有鼠标事件、组态鼠标动作、编制程序等无数种可能性。

【万泉河TIPS】如果一个按钮的鼠标事件需要组态的动作有多个,如果在3个以内,可以分别在鼠标单击、按下和抬起中分别组态直接连接,而仍然不需要编程。一次鼠标单击,此三个事件会依次触发。而如果要求多于3个,则只能用编程手段了。

【万泉河TIPS】尽管WinCC提供了无数的组态的可能性,但在实际应用中最好还是把静态对象和动态对象严格分清楚,凡是动态的程序组态到动态对象上,静态的内容上只做背景的展示。除了画面分层管理方便之外,用户使用起来也更容易上手。

(10)库中的开关按钮

有很多时候,画面上需要的操作按钮不是窗口式的,而是一些更复杂的形式,这样的按钮在库中可以找到,见图4-33。

图4-33 全局库

这些大批的按钮都应该熟悉并尝试使用,可以极快地帮助你实现画面的优美组态。

比如可以使用Incrdecr-Buttons文件夹中的增减按钮,见图4-34。

图4-34 增减按钮

在中文环境下插入库按钮时,竟然可以在黑三角下面隐隐地看到一组问号(????),而在英文下则是空白,说明西门子的库在制作中不彻底。可以先修改其组态对话框,见图4-35。

图4-35 自定义对象

把按钮的文本属性添加到对象的对外显示属性中,然后就可以把文本属性的问号修改为空格或者为空,修改之后如图4-36所示。

图4-36 对象属性

把需要控制的WinCC变量绑定到Process属性上即可。

作为电控系统的上位人机界面,有时候需要的按钮是勒死电柜盘上的刀闸开关或者旋钮等样式,控制的对象也直接是电气设备。这样的按钮在Toggle Buttons文件夹中,见图4-37。

图4-37 开关按钮

选择中意的开关样式插入到画面中,见图4-38。

图4-38 对象属性

将需要控制的PLC控制位的bool型的WinCC变量绑定到Toggle属性上即可。

事件属性中有自然封装的程序,自动从Toggle中读取了变量名,并在操作中取反,实现了设备从停止到运转及从运转到停止的单键切换。