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中读取了变量名,并在操作中取反,实现了设备从停止到运转及从运转到停止的单键切换。