在 OPC UA 服务器上提供方法关于服务器方法的有用信息 提供用于服务器方法的用户程序 在 S7-1500 CPU(自固件版本 V2.5 起)的 OPC UA 服务器中,可以选择通过用户程序提供方 法。例如,OPC UA 客户端可使用这些方法,通过 S7-1500 CPU 的方法调用启动生产作业。 OPC UA 方法是“远程过程调用”的实现,为不同通信节点之间的交互提供了有效机制。该机制 提供作业确认和反馈值,因此用户无需再编程握手机制。 例如,使用 OPC UA 方法,可以持续传输数据,而无需触发位/握手或触发控制器上的特定操 作。 OPC UA 方法的工作原理 通常,OPC UA 方法的工作原理与运行系统中由外部 OPC UA 客户端调用的受专有技术保护函 数块的原理类似。 OPC UA 客户端仅“监视”已定义的输入和输出。函数块、方法或算法的内容对外部 OPC UA 客户 端保持隐藏。OPC UA 客户端接收成功执行的反馈以及函数块(方法)返回的值,或者,如果 执行不成功,则会收到错误消息。 作为程序员,对 OPC UA 方法运行的程序环境负有责任并具有完全控制权。 编程方法和运行行为的规则 • 确保 OPC UA 方法返回的值与 OPC UA 客户端提供的输入值一致。 • 遵守分配参数名称和结构的规则以及允许的数据类型(请参见 OPC UA 服务器指令的说 明)。 • 运行期间的行为:对于每个实例,OPC UA 服务器均接受一次调用。在调用已由用户程序处 理或已超时之前,方法实例不可用于其它 OPC UA 客户端。 实现用户程序(作为服务器方法)的基本步骤如下。 服务器方法的实现 用于实现服务器方法的程序(函数块)的结构如下: 1. 使用 OPC_UA_ServerMethodPre 查询服务器方法调用 先在用户程序中(即服务器方法中)调用“OPC_UA_ServerMethodPre”指令。 该指令将执行以下任务: – 通过该指令询问 CPU 的 OPC UA 服务器是否已通过 OPC UA 客户端调用服务器方法。 – 如果已调用方法,并且服务器方法具有输入参数,服务器方法现在会接收到输入参数。 服务器方法的输入参数来自调用 OPC UA 客户端。 2. 编辑服务器方法 在这部分服务器方法中,用户提供实际用户程序。 选项与其它任何用户程序中的选项相同(例如访问其它函数块或全局数据块)。 如果服务器方法使用输入参数,则可使用这些参数。 仅当 OPC UA 客户端已调用服务器方法时,才可执行服务器方法的这一部分。 成功执行方法后,如果方法具有输出参数,需要设置服务器方法的输出参数。 3. 使用 OPC_UA_ServerMethodPost 响应服务器方法 要完成服务器方法,应调用“OPC_UA_ServerMethodPost”指令。 使用参数通知“OPC_UA_ServerMethodPost”指令是否已处理用户程序。 如果用户程序已成功执行,则会通过相关参数通知 OPC UA 服务器。OPC UA 服务器随后会 将服务器方法的输出参数发送到 OPC UA 客户端。无论用户程序是由“OPC_UA_ServerMethodPre”和“OPC_UA_ServerMethodPost”指令处理还是在 下一个周期继续执行,始终以成对的形式调用这两个指令。 有关实现服务器方法的示例,请参见 STEP 7 在线帮助。 集成服务器方法 下图显示了 OPC UA 客户端 (A) 如何调用服务器方法“Cool”: CPU 在循环用户程序 ⑥ 中执行服务器方法“Cool”的实例“Cool1”。 CPU 首先使用指令“OPC_UA_ServerMethodPre”查询 ④ OPC UA 客户端是否调用了服务器方 法“Cool”①。 • 如果尚未调用服务器方法,则程序执行将通过 ④ 和 ⑥ 直接返回至循环用户程序。 在“Cool1”之后,CPU 恢复循环用户程序。 • 如果已调用服务器方法,则该信息将通过 ④ 返回至服务器方法“Cool”。实际功能现在会在 Cool 服务器方法中执行,请参见图中的“<方法功能>”()。 然后服务器方法使用指令“OPC_UA_ServerMethodPost”⑤ 通知固件 (B) 该指令已执行 ③。 固件通过 ② 将该信息返回至调用 OPC UA 客户端 (A)。 在“Cool1”之后,CPU 恢复循环用户程序。服务器方法的调用以及“完成”(Done) 信息(方法已完成)的管理 ① 服务器方法的异步调用 ② 调用方法的异步“完成”(Done) 信息(方法已完成) B 等待 OPC UA 客户端调用,管理队列中的调用,将“完成”(Done) 信息从循环用户程序转发到 OPC UA 客户端 ③ 在 OPC UA 服务器与用户程序的方法实例之间的数据传输 C 检查方法是否已调用。 如果已调用,将输入数据从 OPC UA 服务器转发到用户程序的方法实例,并为方法实例反馈方法已调用(“已调 用”) ④ 同步调用指令 OPC_UA_ServerMethodPre(作为多重实例),说明来自 OPC UA 服务器的输入数据的存储区域。 返回值指示 OPC UA 客户端是否调用了方法。
⑤ 检查方法是已完成还是仍处于活动状态(“忙”)。 D 检查方法是否已完成。 如果已完成,则会将方法实例的输出数据转发到 OPC UA 服务器,并通知方法实例方法已完成。通知 OPC UA 服务 器。 ⑥ 使用所需实例和过程参数调用方法 FB(在本例中为:FB Cool) 图 10-51 示例:调用“Cool”服务器方法 关于服务器指令的信息 “指令 > 通信 > OPC UA 服务器”(Instructions > Communication > OPC UA > OPC UA server) 的 帮助中详细介绍了“OPC_UA_ServerMethodPre”和“OPC_UA_ServerMethodPost”。 10.3.5.2 使用服务器方法的边界条件 支持的数据类型 提供服务器方法时,请遵循以下规则: • 根据下图所示,指定数据类型(SIMATIC 数据类型 - OPC UA 数据类型)。系统不支持其它 分配方式。 STEP 7 不会检查是否遵循该规则,因此也不会预防分配错误。用户需确保所做的选择和数据 类型分配符合规则。 例如,所列出的数据类型,也可用作自定义服务器方法(UAMethod_InParameters 和 UAMethod_OutParameters)中输入和输出参数结构/数组/UDT 的元素。超出时的错误消息 如果超出服务器方法的Zui大数量,则指令 OPC_UA_ServerMethodPre 或 OPC_UA_ServerMethodPost 将报告错误代码 0xB080_B000 (TooManyMethods)。 使用带有嵌套数组的结构化数据类型 如果结构化数据类型 (Struct/UDT) 中包含一个数组,则 OPC UA 服务器无法提供该数组的长度 信息。 如果将该结构用作服务器方法的输入或输出参数,则需确保调用该方式时使用的嵌套数组长度 正确。 如果长度错误,则该方法调用失败且错误代码为“BadInvalidArgument”。提供 OPC UA 服务器报警有关报警的实用信息 通过报警可以快速检测自动化系统中的过程控制错误,并准确定位和清除这些错误。这有助于 大幅缩短工厂停机时间。OPC UA 信息模型“Alarms & Conditions”提供不限平台的标准化消息 处理方式。自固件版本 V2.9 起,S7-1500 CPU 的 OPC UA 支持 OPC UA 信息模型“报警和条件”。通过这种 方式,OPC UA 服务器可支持访问控制报警。 下面部分将介绍 SIMATIC 中可用的哪些报警类型是 OPC UA 服务器的 OPC UA 接口所支持的。 下文中还介绍了 S7-1500 CPU 中 OPC UA 服务器的报警和条件组态;OPC UA 与报警和条件模 型的架构;以及与 CPU 报警系统的 SIMATIC 控制器报警相比,使用 OPC UA 服务器地址空间 的报警时,需考虑的特殊事项。 将报警转换到 OPC UA Alarms & Conditions 的基础 Alarms and Conditions 信息模型在“OPC 10000-9: OPC Unified Architecture Part 9: Alarms & Conditions”规范中指定。 SIMATIC 中的控制器报警 S7-1500 CPU 的 OPC UA 服务器支持下列控制器报警,这些报警均可供 S7-1500 CPU 使用。用 户可按常规方式对这些报警进行组态和编程,无需额外考虑在 OPC UA 客户端上使用这些报警 的规则。 OPC UA Alarms and Conditions 所带来的额外优势是,这些报警类型不仅可通过 HMI 设备、 Web 浏览器、CPU 显示屏或 TIA Portal 显示,而且也可在支持 OPC UA 报警和条件的所有 OPC UA 客户端中显示。 • ProDiag 的 PLC 监控报警 只需执行几个组态步骤,即可在程序中快速集成监控功能,且无需更改程序代码。由于仅 监控单个的操作数且无需额外编程,因此监控的组态与 TIA Portal 的编程语言无关。 • 系统诊断报警 与配置相关的模块事件以 CPU 硬件配置的方式提供,并可通过连接的显示设备加以评估。 这些事件只能在报警编辑器中查看,不能编辑。 • 程序报警(Program_Alarm 指令) 为报告程序同步事件,程序报警一次分配到一个块中。这些报警在程序编辑器中创建,在 报警编辑器 (TIA Portal) 中编辑。 • GRAPH 报警 对于 GRAPH 函数块,用户还可启用报警;例如用于互锁、监控和 GRAPH 警告(步时间监 视)。 有关报警类型的重要信息 在报警行为的差异上,下列特性有重要意义: • 报警是否有状态(例如,报警当前是处于进入还是离开状态,是否有相应的时间戳)? • 报警是否需要确认? 如果这些特性均不适用,也就是说报警没有任何状态且无需确认,那么报警的作用仅是就已经 发生的事件提供相关信息(“发后即忘”)。具体是将报警缓存起来以备后用,还是仅用于显示 目的,这取决于接收报警的设备。 报警类别决定确认行为 本部分将介绍程序报警的设置选项。用户还可为系统诊断报警和 PLC 监控报警(例如, ProDiag 监控设置)设置报警行为 - 有关详细信息,请参见链接中的更多信息。