c. 在报警控件中对于消息的操作,例如确认锁定/释放消息等。 1.1如何限制用户对画面对象的操作
如上图中,通过按钮PIC1切换画面。如果需要限定某些操作员不能切换画面,就可以在按钮属性“其他”的“授权”中指定操作此对象所需要的权限。然后,在“用户管理器”中创建新用户,并分配相应权限即可。这样,如果没有用户登陆,或登陆用户没有按钮预先定义的授权,则无法操作按钮。
需要注意的是,在“用户管理器”中列出的1--17号权限的名称,仅是权限编号的别名而已,没有任何实际的功能。例如,画面中按钮1需要1号权限,按钮2需要2号权限…….按钮17需要17号权限;这样,只要用户管理器中的用户分配了相应的权限编号,如1、3、13号权限,那么这个用户只能操作1、3、13号按钮,其他按钮则无法操作。 在按钮的“事件”中插入以下脚本可以弹出用户登陆的对话框。 #pragma code(\"useadmin.dll\") #include \"pwrt_api.h\" #pragma code()
PWRTLogin('1'); //登陆C脚本
在按钮的“事件”中插入以下脚本可以注销当前登陆的用户。 #pragma code(\"useadmin.dll\") #include \"pwrt_api.h\" #pragma code()
PWRTLogout(); //注销C脚本
也可以在项目属性中,为用户登陆的对话框分配热键。
1.2 记录操作员登陆/注销的消息
在报警记录中,“工具”里“WinCC系统消息”,创建系统消息。
在画面中添加WinCC Alarm Control控件,“消息块”中增加勾选„计算机名‟和„用户名‟。并添加到“消息列表”中的“选定的消息块”。
如下图过滤 消息编号1008003到1008005之间的系统消息。
这样,通过“长期归档列表”,在运行系统中就可以查询用户登陆/注销的系统消息。
2.操作员输入消息的组态方法
2.1 “图形编辑器”中相应对象的属性中有“操作员输入消息”选项的对象
可选择激活“图形编辑器”中相应对象的“操作员输入消息”属性,以控制某些对象,例如,在 I/O 域中输入数值,文本列表中选择文本等。这可通过设置“操作员输入消息”属性来完成,如图2-1。
注意:该消息的结构不能进行编辑。操作员输入消息的消息号为“12508141”。操作员输入消息包含过程值块 2 中的操作前的值(旧值)和过程值块 3 中修改后的值(新值)。
图2-1
“操作员激活报表”属性指操作员是否记录操作理由。操作员活动报表在消息系统中归档。 操作员输入的理由在长期归档列表中作为操作员输入消息的注释显示。
“操作员输入消息”属性指在操作之后是否生成编号为12508141的系统消息。如果“操作员输入消息”属性已设置为“是”,则在操作时生成一个消息,并将其发送至消息系统进行归档。例如,使用消息系统,可在消息行中输出消息。
为了使操作员在操作完成之后可输入操作理由,必须启用“操作员激活报表”属性。 操作员输入的理由在长期归档列表中作为操作员输入消息的注释显示。
图2-2
为了更直观在报警控件里查看此类消息,可在OS项目编辑器中作以下设置并“确定”。
在报警控件中添加“消息列表”,并设置过滤条件。
这样,在报警控件中可以直观的查看操作员修改数值的消息。
如果用户登陆后修改了数值,消息内容“新值/旧值”的前面会增加操作的用户名称。
2.2 “图形编辑器”中相应对象的属性中没有“操作员输入消息”选项的对象
对于操作可选图形 WinCC 对象,可以将您自己的操作员消息组态为 C 动作或 VBS 动作。执行各自的 C 动作或者VBS动作作为对操作事件的反应。 例如,在这种情况下,操作事件可以是鼠标单击 WinCC 对象,例如对按钮操作。使用“报警”功能组中“GCreateMyOperationMsg”功能组态您自己的操作员输入消息,下面举例对此函数进行简单说明。
int GCreateMyOperationMsg(DWORD dwFlags, DWORD dwMsgNum, char*
lpszPictureName, char* lpszObjectName, DWORD dwMyTextID, double doValueOld, double doValueNew, char* pszComment)
参数的简单介绍
dwFlags FLAG_COMMENT_PARAMETER 0x00000001 为操作员输入消息添加固定的注释,在pszComment中添加相应的文本FLAG_COMMENT_DIALOG 0x00000003在对对象进行操作时弹出对话框,在对话框中为其添加注释 dwMsgNum 生成的操作员输入消息的消息号,需要预先创建 pszPictureName 需要生成操作员输入消息对象所在的画面
lpszObjectName 在操作员消息生成时,需要在消息中记录的变量。
doValueOld lpszObjectName组态的变量在消息生成之前的数值,注 意:函数无法自动计算此数值,需要利用GetTagvalue等函数自己提取。
doValueNew lpszObjectName组态的变量在消息生成之后的数值,函数无法自动计算此数值,需要利用GetTagvalue等函数自己提取。
pszComment 在FLAG_COMMENT_DIALOG 0x00000001 时,在此参数中添加相应文本。 注意:
要预先创建编号为“11”的报警消息;
消息类别为:系统无需确认; 类型为:操作员输入消息;
在“消息文本”中输入需要显示的报警提示信息;其他参数保持默认值即可。
实例:按钮的功能为在对变量做加法计算后,保留结果,同时记录操作员输入的消息,并在报警控件的 系统块的 注释 列中(其对应报警控件工具栏里输入或查询的图标
为
为在按钮的事件上添加的脚本。
)添加脚本中的文本“changed”。下图
更进一步的详细设置,可以在WInCC V7帮助中Search:GCreateMyOperationMsg 对于V6版本请参考以下链接:24325381
2.3 对于消息操作,生成一条操作员输入消息
例如确认锁定/释放消息,操作员输入消息将在 WinCC 报警记录中进行组态。为此必须在报警记录编辑器中创建 WinCC 系统消息。
在“操作员输入消息”选项卡上的 WinCC 报警控件中,激活操作消息的触发事件,如下图所示。也可在此处组态操作员输入消息本身。 在 WinCC V7 之前,在“消息列表”选项卡上的 WinCC 报警控件中,使用“操作员输入消息”按钮激活操作员输入消息的触发事件。为了显示或输入对应的操作员输入消息的注释,可使用“注释”按钮在长期归档列表中打开对话框。 在报警控件中将“注释”系统块插入消息行时,此消息块指示此消息有注释。
因篇幅问题不能全部显示,请点此查看更多更全内容