能否为马达、阀门等功能块添加更多的状态,并在上位机上的Block Icon和faceplate中进行相应的显示?
答:可以,可以借助功能块的USTATUS输入端来完成该功能。
PCS7库中的大部分功能块都有一个DWORD格式的“VSTATUS”输出管脚。该管脚包含了功能块当前各种状态信息(功能块在线帮助中详细解释了各位所代表的状态信息),通过相应的控件即可在上位机的画面上实时显示该功能块的各种状态。细心的人可能会发现,该管脚格式为32位的DWORD形式,而我们通过功能块的在线帮助却只能查询到VSTATUS的低16位的状态,那么高16位用来做什么用处的呢?
功能块有一个WORD格式的“USTATUS”输入管脚,该管脚的注释是”Status word in VSTATUS, can be configured user-specific”,也就是说USTATUS是VSTATUS的一部分,可以用来进行用户自定义的状态输入,将其组合到VSTATUS中。如下图Pic1所示,USTATUS输入为16#1时,仿真MOTOR回路的就地控制,输出VSTATUS为16#10200。USTATUS被加入到VSTATUS的高16位中了。因此,通过USTATUS输入管脚,我们可以为Motor等功能块定制更多的状态。
Pic1.MOTOR回路USTATUS示例
一般来说,我们通常使用某些功能块(MOTOR,VALVE等)的VSTATUS状态返回值和智能图形对象”STATUS DISPLAY EXTEND”来实现状态的上位机显示。 VSTATUS状态返回值是一个输出类型的32位状态字,其高16位为USTATUS(数据类型为WORD)输入,低16位由相应的功能块类型决定。因此,当用户希望自定义的USTATUS状态用STATUS DISPLAY EXTEND功能显示出来时,只要知道其对应于VSTATUS的关系即可,USTATUS的第一位对应VSTATUS的第17位,依此类推。
这里以MOTOR块为例说明,我们希望给该电机一个现场就地/远程选择开关状态指示(1表示就地,0表示远程),此状态可由STATUS DISPLAY EXTEND功能显示出来。 这里可以用USTATUS最低位代表,用STATUS DISPLAY EXTEND功能显示出来;当然,其它位的状态设置方法类似。
√ 首先明确,用户定义的USTATUS为16#0001时,VSTATUS的第17位(BIT16)就对应于该位且值为1。
√ 为观察该电机VSTATUS的值,打开对应的PICTURE,其中self_Motor/1块标识为上面CFC块1(MOTOR块)经OS编译自动生成的的block icon。
Pic2.MOTOR的上位机图标
√ 在其下方添加一个STATUS DISPLAY EXTEND对象,用于显示该电机就地/远程状态。
√ 打开其CONFIG DIAGLOG属性,在GENERAL中定义BIT为FROM STATUSWORD1,BIT NO.为16。
Pic3. 设置STATUS DISPLAY EXTENDED
√ 为该状态位定义相应图片,即:电机为就地操作状态时由索引1连接的图形表示;远程操作状态由索引0连接的图形表示,如Pic4所示。
Pic4.设置相应状态的显示图片
√ 同时在其图形属性组态中,将属性Status1 与self_Motor.VSTATUS 标签连接,见Pic5。 其中该位为1,表示就地状态时显示 ;0,表示远程状态时显示 。
Pic5.关联Status1和相应的VSTATUS
注:这里定做了两个图形文件Localc.bmp和Remote.bmp(存放在<project name>\winproject\<OS name>\GraCS录下),表示1,0两种位状态对应的本地/远程控制状态。
√ 检查测试结果,由图1知道VSTATUS为16#10200表示其第17位1(即:USTATUS最低位的值);同时,参照前面给出的MOTOR块VSTATUS低十六位定义表可知:低字16#0200表示QRUN=1,QMAN_AUT=0(手动),即:电机正以手动方式运行。
√ 运行该画面,该STATUS DISPLAY EXTEND显示为1,表示该电机正处于就地状态,见Pic6所示。
Pic6.马达就地控制显示图标
(责任编辑:admin) |