WinCCV7中如何生成操作员的操作记录1.操作员输入消息的分类对于某些重要的对象和数据进行操作,根据需要可以在操作过程中触发操作员输入消息,操作员输入消息根据操作的对象和操作类型的不同,分为以下三类:a.“图形编辑器”中相应对象的属性中有“操作员输入消息”选项,例如:在I/O域中输入数值,文本列表中选择文本等。对象属性功能支持的对象类型操作员输入消息定义操作后是否输出消息I/O域、文本列表、组合框、列表框、复选框、单选框、滚动条操作员激活报表定义是否记录操作的原因I/O域、文本列表、组合框、列表框、滚动条b.对于操作可选图形WinCC对象,其属性中没有“操作员输入消息”选项,例如:对于按钮的操作等。c.在报警控件中对于消息的操作,例如确认锁定/释放消息等。1.1如何限制用户对画面对象的操作如上图中,通过按钮PIC1切换画面。如果需要限定某些操作员不能切换画面,就可以在按钮属性“其他”的“授权”中指定操作此对象所需要的权限。然后,在“用户管理器”中创建新用户,并分配相应权限即可。这样,如果没有用户登陆,或登陆用户没有按钮预先定义的授权,则无法操作按钮。需要注意的是,在“用户管理器”中列出的1--17号权限的名称,仅是权限编号的别名而已,没有任何实际的功能。例如,画面中按钮1需要1号权限,按钮2需要2号权限…….按钮17需要17号权限;这样,只要用户管理器中的用户分配了相应的权限编号,如1、3、13号权限,那么这个用户只能操作1、3、13号按钮,其他按钮则无法操作。在按钮的“事件”中插入以下脚本可以弹出用户登陆的对话框。#pragmacode(useadmin.dll)#includepwrt_api.h#pragmacode()PWRTLogin('1');//登陆C脚本在按钮的“事件”中插入以下脚本可以注销当前登陆的用户。#pragmacode(useadmin.dll)#includepwrt_api.h#pragmacode()PWRTLogout();//注销C脚本也可以在项目属性中,为用户登陆的对话框分配热键。1.2记录操作员登陆/注销的消息在报警记录中,“工具”里“WinCC系统消息”,创建系统消息。在画面中添加WinCCAlarmControl控件,“消息块”中增加勾选‘计算机名’和‘用户名’。并添加到“消息列表”中的“选定的消息块”。如下图过滤消息编号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”功能组态您自己的操作员输入消息,下面举例对此函数进行简单说明。intGCreateMyOperationMsg(DWORDdwFlags,DWORDdwMsgNum,char*lpszPictureName,char*lpszObjectName,DWORDdwMyTextID,doubledoValueOld,doubledoValueNew,char*pszComment)参数的简单介绍dwFlagsFLAG_COMMENT_PARAMETER0x00000001为操作员输入消息添加固定的注释,在pszComment中添加相应的文本FLAG_COMMENT_DIALOG0x00000003在对对象进行操作时弹出对话框,在对话框中为其添加注释dwMsgNum生成的操作员输入消息的消息号,需要预先创建pszPictureName需要生成操作员输入消息对象所在的画面lpszObjectName在操作员消息生成时,需要在消息中记录的变量。doValueOldlpszObjectName组态的变量在消息生成之前的数值,注意:函数无法自动计算此数值,需要利用GetTagvalue等函数自己提取。doValueNewlpszObjectName组态的变量在消息生成之后的数值,函数无法自动计算此数值,需要利用GetTagvalue等函数自己提取。pszComment在FLAG_COMMENT_DIALOG0x00000001时,在此参数中添加相应文本。注意:要预先创建编号为“11”的报警消息;消息类别为:系统无需确认;类型为:操作员输入消息;在“消息文本”中输入需要显示的报警提示信息;其他参数保持默认值即可。实例:按钮的功能为在对变量做加法计算后,保留结果,同时记录操作员输入的消息,并在报警控件的系统块的注释列中(其对应报警控件工具栏里输入或查询的图标为)添加脚本中的文本“changed”。下图为在按钮的事件上添加的脚本。更进一步的详细设置,可以在WInCCV7帮助中Search:GCreateMyOperationMsg对于V6版本请参考以下链接:243253812.3对于消息操作,生成一条操作员输入消息例如确认锁定/释放消息,操作员输入消息将在WinCC报警记录中进行组态。为此必须在报警记录编辑器中创建WinCC系统消息。在“操作员输入消息”选项卡上的WinCC报警控件中,激活操作消息的触发事件,如下图所示。也可在此处组态操作员输入消息本身。在WinCCV7之前,在“消息列表”选项卡上的WinCC报警控件中,使用“操作员输入消息”按钮激活操作员输入消息的触发事件。为了显示或输入对应的操作员输入消息的注释,可使用“注释”按钮在长期归档列表中打开对话框。在报警控件中将“注释”系统块插入消息行时,此消息块指示此消息有注释。