OPC UA报警和条件支持的方法 举例而言,OPC UA 规范第 9 部分 (OPC 10000-9: Alarms & Conditions)定义了如何借助 OPC UA 服务器让 OPC UA 客户端能够对状态变化做出响应的方法。 下文将介绍 S7-1500 CPU 的OPC UA 服务器支持的这些方法及其特殊功能。 要求 欲使用报警和条件功能的相应方法,需要满足以下各项: • 报警和条件已激活 •对于“Acknowledge”方法,必须在服务器一侧允许由 OPC UA 客户端确认报警。 OPC UA 报警和条件支持的方法下文将简要介绍各个方法,以及因实施 S7-1500 CPU 的 OPC UA 服务器而带来的特殊功能和限 制。各方法在类型空间中可见。 上文列出的 OPC UA 规范包含一般说明。此概述表下方给出了有关各个方法的详细说明。Acknowledge 此方法用于确认以 EventId 唯一标识的报警对象。ConditionRefresh 此方法用于请求对所有报警对象进行更新(用 SIMATIC 语言表述:更新所有未决报警)。订阅之下所有受监视的项都将更 新。 对于 CPU 中 OPC UA 服务器的未决报警对象,其同步情况将在诸如以下之类的情形下加以指示: • 首次连接或恢复连接(通信中断后) • HMI 设备操作员屏幕的屏幕切换 AddComment此方法用于为报警对象添加注释。 调用“Acknowledge”和“AddComment”方法 在 OPC UA 中调用方法时将用到MethodId 和 ObjectId。 对于报警对象,ObjectId 是报警对象实例的节点 ID。由于 Simatic报警和条件的地址模型不提供报警对象的实例,OPC UA 规范在此情况下规定, OPC UA 客户端使用 ConditionId 来作为ObjectId。 有关如何通过事件过滤器的 SelectClause 中的 SimpleAttributeOperands 来确定ConditionId 的更多信息,另请参见 OPC UA 规范第 9 部分 (OPC 10000-9: Alarms &Conditions):说明 ConditionRefresh2 方法 ConditionRefresh2方法可在订阅中专门同步一个受监视项 (MonitoredItem),而 S7-1500 CPU 的 OPC UA不支持此方法。在这种情况下,OPC UA 服务器将返回结果代码“Bad_MethodInvalid”。转而使用方法“ConditionRefresh”。 AddComment 用户可以为SimaticAlarmConditionType 类型的 Alarms- 对象添加注释,因为 OPC UA Alarms andConditions 强制要求支持注释。 注释保存在“Comment”事件字段。 以下时间戳事件字段属于注释: •“Comment.SourceTimestamp”,注释传送到 CPU 的时间 • “Time”,修改 Alarms 对象的时间在调用“AddComment”方法时,“Time”和“Comment.SourceTimestamp”相同。 CPU 的 OPC UA服务器针对报警和条件注释提供的特殊功能CPU 的 OPC UA 服务器针对报警和条件注释提供的特殊功能 用户可以通过AddComment 方法为“SimaticAlarmConditionType”类型的报警对象添加注释。 在调用Acknowledge 方法时也将设置注释。“AddComment”方法可多次调用。 •注释保存在“Comment”事件字段。“Comment.SourceTimestamp”指示注释上一次设置的时 间。 •“Time”时间戳标记的是,报警对象上一次的修改时间。在调用“AddComment”方法时,“Time”和“Comment.SourceTimestamp”相同。在调用“Acknowledge”方法时,两个时间戳可能不同,因为确认不是同步进行的。 支持注释是 OPC UA报警和条件的强制要求。SIMATIC 报警系统没有相应报警注释的信息。因 此,一些特殊功能必须加以考虑: • 只有一个注释:某报警对象只有一个注释,在有多个方法连续进行调用时,既有注释始终都会受到覆 盖。 • 使用寿命和时间戳:注释仅存储在当前报警对象中。如果报警对象不复存在(例如,在服务器重启之后),相应的注释也将同样消失。相应的“Comment”和“Comment.SourceTimestamp”事件字段将受 到复位(归零)。“Time”事件字段也将设置,就像是方法调用“AddComment”从未存在过一般。示例:如果对 未确认的 Alarms报警对象添加注释,“Time”事件字段将收到此注释变更的时间。在服务器重启后,“Time”事件字段不会显示注释设置的时间,而是会显示相应 Event 到达的时间。处理 OPC UA 报警和条件的存储器限制S7-1500 CPU 的 OPC UA 服务器根据产品的不同而对“报警和条件”功能有各异的有限存储器容 量(参见 CPU 规范)。供有两个存储器池,分别存储不同类别的报警: • 仅适用于 ProgramAlarms的存储器池(对应于与程序相关的报警源(生产者),例如基于 Program_Alarm、ProDiag、Graph 的程序报警) •仅适用于 SystemDiagnostics 的存储器池(对应于系统诊断报警) 在不利的条件下(例如,报警激增),CPU无法将所有来自 SIMATIC 报警区域的所有未决报 警(ProgramAlarms 或 SystemDiagnostics)提供给OPC UA 报警和条件系统。但此时报警将 不会丢失。 用户可以在用户程序中就此过载事件做出响应。根据具体应用,用户可使用“ConditionRefresh”方法来将“未能进入 OPC UA 报警和条件系统”的报警再提供给 OPC UA 报警和条件系统。下图显示了一个简化的过程,即,会将 ProgramAlarms 临时存储下来,并另寻时间来提 供给 OPC UA报警和条件系统。说明中提到的节点在以下地址模型图片中可见。① 活动报警的数量过多,无法通过 OPC UA 报警和条件访问全部报警 ②过载报警 (Overloads) 已触发。过载报警在发生以下情况之前保持激活: • 对于 OPC UA报警和条件系统,没有更多报警处于未决状态 (OutstandingProgramAlarms = 0); • OPC UA报警和条件系统的报警数量 < 已清除滞后的 OPC UA 报警数量Zui大值 (= MaxAlarmsInQueue -OverloadHysteresis) 因过载情况而在 OPC UA 报警和条件系统中不可用的报警由 CPU作为“OutstandingAlarms”进行缓冲。 ③ 在 OPC UA 客户端执行 ConditionRefresh方法时,不仅相关订阅的所有报警对象都将同步,OPC UA 报警和条 件的未确认报警 (OutstandingAlarms)也将传送到报警和条件存储区中(但前提是未达到报警的Zui大数量)。“Zui早”的报警将Zui先传送。在此之后,这些报警的每个订阅(不jinxian于调用 ConditionRefresh 方法的 OPC UA客户端) 都将收到已传送的报警。 ④ OPC UA 客户端通过“过载”(Overloads) 节点的信息控制未决报警的处理。•在未决报警转出或得到确认后,将不再经由 ConditionRefresh 方法进入 OCP UA 报警和条 件系统区域。于是,它们将对OPC UA 报警和条件“不可见”,进而也无法由所连的 OPC UA 客户端获取。这会影响报警进行过程的统计评估以及其它类似方面。 •为避免在报警数量围绕Zui大值上下波动时致使过载报警出现较高的报警频率,触发报警的限值要高于取消报警的限值:此差值显示在“OverloadHysteresis”节点中。示例:Zui大报警数量:200,OverloadHysteresis:3。 过载报警的数量在达到 200 时就开始触发,但只有在下降到197 以下时才会取消。如果报 警数量增加,仍需超过 200 才会触发报警。OPC UA 服务器诊断 OPC UA 服务器在线诊断S7-1500 CPU OPC UA 服务器可通过标准 OPC UA 客户端(如 UaExpert)进行在线诊断。诊断信息分为以下几部分: • 服务器诊断 • 会话诊断: • 订阅诊断 举例来说,在服务器的地址空间中,以下节点提供诊断信息: •ServerDiagnosticsSummary:服务器诊断汇总 – CurrentSessionCount:活动会话数量 –SecurityRejectedSessionCount:因客户端与服务器之间的端点安全设置不匹配而被拒绝 的会话数 •SessionsDiagnosticsSummary:会话诊断汇总 –ActualSessionTimeout:设置会话在连接断开等情况下的持续时间。 •SubscriptionsDiagnosticsArray:为每个会话的每个订阅包含一个元素的数组客户端与服务器间的连接诊断要诊断客户端中程序运行期间的连接状态,请使用以下指令: OPC_UA_ConnectionGetStatus:读取连接状态在程序中运行OPC UA 服务器诊断 在 STEP 7 (TIA Portal) V18 及以上版本中,可通过访问 S7-1500CPU(固件版本 V3.0 及以上版 本)内 OPC UA 地址空间中的节点,评估程序待诊断的内容。 工作原理 在 CPU的本地地址空间中,包含很多 CPU 的 OPC UA 服务器用于存储数据和状态的节点。通过“OPC_UA_ReadList”指令,可访问相关信息并在用户程序中 进行评估。 示例:“ServerState”是 CPU中的一个地址空间,其中包含有服务器的状态值或状态转换值(运 行、关闭、失败等等)。 该指令并不是一个客户端指令,而是一个读取本地OPC UA 地址空间节点的指令。此时,需使 用特殊的规则和要求。 更多信息有关调用“OPC_UA_Readlist”指令进行诊断的更多信息,请参见 TIA Portal 帮助中的“通过OPC_UA_Readlist 诊断 OPC UA 服务器”主题。