在 WinCC 中如何生成用户自定义操作员输入消息?

WinCC V7.0新特性
从WinCC V7.0 起,可利用 C 动作和 VBS 动作的标准函数生成用户自定义操作员消息。该功能的使用示例位于本条目的末尾

WinCC V7.0 版本之前生成用户定义操作员输入消息

初步信息:
使用WinCC Audit 选件不需要过多的组态便可以实现在 Audit Trail 中获得操作员输入消息。那么对于整个工厂通过 WinCC 客户端/服务器(WebNavigator 客户端/服务器)的项目画面可以使操作员输入消息集中显示在 Audit Trail 中。Audit Trail 被保护以防止修改。
此外,在项目设计中的修改也能够在 Audit Trail 中记录。WinCC Audit 选件是相应配套发布的标准 WinCC 选件。

说明:
如果在组态 I/O 域时已将“Operator Input”属性设置为“Yes”,通过使用 I/O域会在 WinCC中自动生成操作员输入消息。
本条目展示如何使用 WinCC 选件“WinCC Open Development Kit(ODK) 生成用户自定义的操作员输入消息。例如可能在按钮按下时需要生成一条操作员输入消息。在本条目中的 C 函数使用的是在 WinCC V6.0 SP3 和更高版本中的 ODK 函数。条目 ID 218555 使用的是也可在 WinCC 早期版本中实现的 ODK 函数。有关 ODK 的信息可在条目 ID 9652128 中获得。

注意,关于操作员输入消息可在 WinCC 在线帮助“WinCC 信息系统 > 使用 WinCC > 建立消息系统 > WinCC 中的消息归档”中获得。

下表描述了如何组态用户自定义的操作员输入消息。在本条目中假定使用了 WinCC OS project editor。 对于 OS project editor 生成的画面(消息窗口)不必进行任何修改。用户自定义的操作员输入消息显示在消息窗口的“operation list”中。

步骤 描述
1 在报警记录中组态操作员输入消息
打开报警记录编辑器创建一个消息类别“Operator Input Message”的消息。为消息任意选择一个编号。在本例中将使用消息编号“1001”。

在 WinCC 中如何生成用户自定义操作员输入消息?

在“Text”选项卡中设置那些在运行时显示的用户文本块参数。在本例中过程值块 1 到5 的值以文本显示在用户文本块 1 到 5 中。

在 WinCC 中如何生成用户自定义操作员输入消息?

这里仅将过程值块分配给用户文本块。过程值块的实际设置是在运行时通过函数“MSRTCreateMsgInstanceWithComment()”完成的(见步骤 2)。

注意:
原则上也可使用消息编号“12508141”的内部消息生成操作员输入消息。因此完全不需要本组态步骤。可是,消息编号“12508141”的操作员输入消息的结构是预先定义不可更改的。操作前的数值(原有数值) 显示在过程值块_2 中而更改后的数值(新数值)显示在过程值块_3 中。包含已登录用户名的用户文本块_3 和用户文本块_5 跟随着新数值和原有数值。

2 编写生成操作员输入消息的函数
下列下载包含文件“24325381_ISALG_OperationLog.fct (在 WinCC V6.2 中创建)”。

在 WinCC 中如何生成用户自定义操作员输入消息? WinCC_OperationLog.zip ( 8 KB )

拷贝文件到 WinCC 项目目录中的“library”目录中。打开“Global Script C”编辑器并执行“Tools > Regenerate Header”菜单命令。然后“ISALG_OperationLog()”函数可作为项目函数使用。

为了生成在运行时的操作员输入消息同样必须在客户端的 WinCC 项目(多客户)中执行这一步骤。

注意:
“ISALG_OperationLog()” 函数的结构描述如下。

  • INIT_MESSAGE_STRUCT
    在这部分中填写结构“MsgCreateEx”用于生成消息。“GetLocalTime()”函数获取本地计算机时间。“GetComputerNameA()”函数获取计算机名。“PWRTGetCurrentUser()”函数获取当前登录的 WinCC 用户名。在这部分中对于作为文本值的过程值块 1 到 5 的有效性及初始化函数检查传输参数。

    过程值 block_1
    参数
    pszSource
    在“pszSource”参数中能够传输消息来源(例如,变量名称或测量点名称) 到操作员输入消息。如果使用这个参数(数值不能等于零),此文本显示在消息的过程值块_1 中。

    过程值 block_2
    参数
    pszArea
    在参数“pszArea”中可以传递区域(例如系统区域或子系统)到操作员输入消息。如果使用这个参数(数值不能等于零),此文本显示在消息的过程值块_2 中。

    过程值块,过程值 block_5
    参数 pszEvent, fOld, fNew, pszUnit
    在参数“pszEvent”中可以传递一个事件文本(例如“Specify setpoint value”或“Motor ON”)到操作员输入消息。在参数“fOld"”中可以传递操作前的数值以及在参数“fNew”中修改后的数值。在参数“pszUnit”中可以传递度量单位。这个数据以及计算机名和用户名显示在消息的过程值块_3 和过程值块_5 中。

    过程值 block_4
    参数 pszBatch
    在参数“pszBatch”中可以传递批次名称到操作员输入消息。 此文本显示在消息的过程值块_4 中。

  • START_MESSAGE_SERVICE
    在这个部分“MSRTStartMsgService()”函数被调用。

    注意:
    如果“MSRTStartMsgService()”函数在客户端(多客户)上使用,操作员输入消息会输出到所组态的标准服务器上。如果没有组态标准服务器,函数调用失败。为了组态标准服务器在 WinCC 浏览器的项目树中右键点击“Server data”条目。然后在弹出的菜单中打开选择“Standard server...”条目。分配期望的 WinCC服务器符号计算机名给报警记录(报警组件)。可用的符号计算机名的服务器数据可被倒入。

  • CREATE_MESSAGE_INSTANCE
    在这部分“MSRTCreateMsgInstanceWithComment()”函数被调用。
  • STOP_MESSAGE_SERVICE
    在这部分“MSRTStopMsgService()”函数被调用。

函数包含“printf()”语句,可在运行时的全局脚本诊断窗口或在 APDIAG “Output Window”中生成诊断消息。

3 调用函数生成操作员输入消息
可直接在过程画面或面板中使用“ISALG_OperationLog()”函数。下图显示了通过点击按钮实现函数的调用。

在 WinCC 中如何生成用户自定义操作员输入消息?

表 01

注意

  • “MSRTCreateMsgInstanceWithComment()”函数从 WinCC V6.0 SP3 开始可以使用。它需要使用结构类型“MSG_RTDATA_INSTANCECOMMENT_STRUCT”。过程值块可支持最多 256 个以“NULL”结尾的字符文本。然而文本的实际的最大程度不超过 255 个字符。因为在 WinCC报警记录中的用户文本块只能显示最多 255个字符。而且,在 WinCC报警控件中显示长文本并不适用。
  • WinCC V6.0 SP3 之前的版本中可以使用“MSRTCreateMsg()”函数作替代来生成操作员输入消息。在这种情况下注意过程值块的字符长度最大为 32 (与结构“MSG_RTCREATE_STRUCT”有关)。 如果想要在用户文本块中显示更多的字符,可使用多个过程值块显示已过用户文本块。使用单独的函数“MSRTSetComment()”设置消息的注释。
  • 本条目中的脚本已在 WinCC 单用户和 WinCC 客户机项目中经过测试。适合于下列版本:WinCC V6.2WinCC V7.0。也与 WinCC Web Navigator V6.2WinCC Web Navigator V7.0 成功测试。

警告:

  • Audit 仅记录 Web Navigator client 的登录,所有 Web Navigator 的其他操作不记录。
  • 在 WebNavigators V7.0 之前版本中,不能确定用户名只能确定计算机名而用户名将被“---未知 web 用户---”替代。
  • 如果在 WinCC 服务器(或单用户站)或 WinCC 客户端上没有用户登录,那么用户名将被“---未知用户---”替代。

WinCC V7.0 及以上版本中使用标准 VBS 脚本

在 WinCC 帮助里有个 VBS 脚本示例位于 WinCC 脚本: VBS, ANSI-C, VBA >用于创建过程和动作的 VBS > VBS Reference > Objects and Lists > Alarm Object (list)

WinCC V7.0 及以上版本中使用标准 C脚本

在WinCC帮助里有关于标准 C 脚本参数的描述,位于WinCC 脚本: VBS, ANSI-C. VBA > 用于创建过程和动作的 ANSI-C > ANSI-C Function Description > Standard Functions > Alarm > GCreateMyOperationMsg

示例


描述
1 创建一个消息位于类别 “Operator Input Message” 下。任意选择一个消息编号。本例中使用1002。
2 在相关条件下创建 C 脚本来触发此消息,本例中采用鼠标点击按钮来触发。

在 WinCC 中如何生成用户自定义操作员输入消息?

表 02

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc327245.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论