“AccessLevelEx”属性会扩展访问特性 自固件版本 V2.6 起,S7-1500 CPU 的 OPC UA服务器不仅支持“AccessLevel”属性(参见“协调 CPU 变量的读写权限 (页190)”),还支持“AccessLevelEx”属性,该属性除了提供已介绍的用 于读取权限和写入权限的位之外,还提供关于 OPCUA 变量一致性的信息。新属性自 OPC UA 规范的版本 V1.04 起引入(第 3 部分,地址空间模型)。 读取一致性特性 在OPC UA 服务器的 OPC UA 信息模型中,属性“AccessLevel”定义访问权限。 AccessLevel按位定义;此时,相关位为: • 位 0 = CurrentRead • 位 1 = CurrentWrite • 位 2 到 7 与S7-1500 CPU 的 OPC UA 服务器无关 关于读取和写入权限的部分中介绍了位组合的含义: 还添加了下列用于表示一致性的位:• 位 8 = NonatomicRead;如果不能一致地读取变量,此位会置位。对于变量的读取一致 性,位 8 = 0。 • 位 9= NonatomicWrite;如果不能一致地写入变量,此位会置位。对于变量的写入一致 性,如果未批准写入权限的情况,位 9 =0。 示例 OPC UA 变量(结构体)可读取且可写入,但读取和访问权限不一致。 位 0、1、8 和 9会置位:AccessLevelEx =“771”(1+2+256+512)。 另一结构体为只读。 位 0 和 8 会置 1,位1 和位 9 不会置位:AccessLevelEx =“257”(1+0+256+0)。 服务器中属性的处理“AccessLevelEx”属性仅可用于 OPC UA 服务器。该属性不存在于节点集文件(XML 导出文件) 中。但导出的属性“AccessLevel”包含“AccessLevelEx”中的信息,请参见下一部分。 导出 对标准 SIMATIC服务器接口执行 XML 导出时,服务器会将“AccessLevel”属性(与 V1.03 相 比,V1.04 中将该属性扩展为 32位)设为“AccessLevelEx”属性的值。 导入 导入节点集文件时(例如来自服务器接口导出),S7-1500 CPU会按照其自身对已导入数据类 型一致性的估算来设置属性“AccessLevelEx”,请参见下一部分。会忽略导入的值。示例 • OPCUA 服务器接口中的 AccessLevel = 1(只读) • 在 PLC 变量表中选择了“从 HMI/OPC UA可访问”(Accessible from HMI/OPC UA) 和“从 HMI/OPC UA 可写”(Writable fromHMI/OPC UA)。 结果:该变量为只读。 规则 如果需要写权限: • AccessLevel = 2 或 3 • 启用“从HMI/OPC UA 可写”(Writable from HMI/OPC UA) 如果需要读权限: • AccessLevel =1(AccessLevel 3 也可以,具有误导性。该设置表示 OPC UA 客户端具 有读写权限) • 启用“从 HMI/OPCUA 可访问”(Accessible from HMI/OPC UA),禁用“从 HMI/OPC UA 可 写”(Writablefrom HMI/OPC UA) 如果不授予读写权限(无访问权限): • AccessLevel = 0 • 禁用“从 HMI/OPCUA 可访问”(Accessible from HMI/OPC UA) 要阻止所有访问权限,需满足两个条件之一。在这种情况下,请检查OPC UA 服务器接口 中的变量实际上是否完全需要。 访问表 如果要通过 OPC UA 进行访问,必须设置“从 HMI/OPC UA可访问”(Accessible from HMI/OPC UA)。如果要允许 OPC UA 客户端写入变量/DB 元素,必须设置“从HMI/OPC UA 可写”(Writable from HMI/OPC UA)。 请参见下表了解实现的访问权限。
服务器接口中数据类型的一致性对于以下数据类型,会在服务器接口节点处确保 S7-1500 CPU 程序循环中变量的一致性(OPC UA 语言使用中的“原子性”):• BOOL、BYTE、WORD、DWORD、LWORD •SINT、INT、LINT、DINT、USINT、UINT、ULINT、UDINT • REAL、LREAL •DATE、LDT、TIME、LTIME、TIME_OF_DAY、LTIME_OF_DAY、S5TIME • CHAR、WCHAR •基于上述数据类型的系统数据类型和硬件数据类型也保持一致。 示例:HW_ANY,源自 UINT (UInt16)。 提示:如果浏览S7-1500 CPU 的地址空间(例如使用 OPC UA 客户端 UaExpert),可在“类型 BaseDataType >枚举/数字/字符串”(Types > BaseDataType > Enumeration/Number/String)下 找到一致的数据类型。 以下数据类型的变量不一致(OPC UA 的语言使用中为“nonatomic”): • SIMATIC结构体通常不一致。这意味着所有变量(例如包含未知结构或 UDT 数据类型)均 不一致。 •DTL、IEC_Counter、IEC_TIMER 等系统数据类型是源自结构体的数据类型。 • 字符串(CHAR 型数组)不一致。提示:如果浏览 S7-1500 CPU 的地址空间(例如使用 OPC UA 客户端 UaExpert),可在“类型BaseDataType > 结构体”(Types > BaseDataType > Structure)下找到基于结构体的数据类型。 对 S7-1500 Motion Control 中的 OPC UA 变量的写访问。 CPU除了检查数据类型的一致性之外,还检查工艺对象的变量的合理性和有效性。 如果 OPC UA客户端将无效的值或不合理的值写入变量,则工艺对象的变量中仍保留原始值。 写入访问没有成功,仍将输出“良好”(Good) 状态。示例 1 循环凸轮的插补类型 变量 "Cam_1".InterpolationSettings.InterpolationMode的类型是 INT,但仅接受值 1...2。 如果使用 OPC UA 将变量更改为无效值(例如3),输出状态代码“Good”,但变量并不会 改变。 示例 2 在定位轴上定位软限位开关正向硬限位开关的位置必须大于负向软限位开关的位置。 "PosAxis_1".PositionLimits_SW.MaxPosition> "PosAxis_1".PositionLimits_SW.MinPosition 如果使用 OPC UA将变量更改为不满足此条件的值,输出状态代码“Good”,但变量并不会 改变。有关适用于工艺对象变量的有效值,请参见工艺对象文档访问 OPC UA 服务器数据 符合应用程序的高性能 OPC UA设计用于在较短的时间内传送大量数据。如果将数组和结构作为一个整体进行读写访 问,而非对单个 PLC变量进行访问,则可显著提高系统性能。 这是Zui快的访问数组的方式。需将 OPC UA 客户端数据组合到数组中。 关于通过 OPCUA 客户端访问 OPC UA 服务器的建议 • 对于一次性或不频繁的数据访问,请使用标准的读/写访问。 •对于少量数据的循环访问(循环间隔Zui长约为 5 秒),请使用订阅。 优化 OPC UA服务器中的Zui短发布时间间隔设置和Zui小采样时间间隔设置。 • 如果定期访问某些特定变量(重复访问),则可使用函数“RegisteredRead”和“RegisteredWrite”。 通过增加通信循环负载值,可增大 PLC上的通信负载。确保更改设置后应用程序仍能正常工 作。 创建数组 DB 的操作步骤在全局数据块中或某个函数块的背景数据块中,可创建数组或创建为一个数组 DB。以下章节 中,将介绍如何创建一个数组 DB。要创建带数组的数据块(数组数据块),请按照以下步骤进行操作: 1. 在项目树中选择带 OPC UA 服务器的 CPU。 2.双击“程序块”(Program blocks)。 3. 双击“添加新块”(Add new block)。 4.单击“数据块”(Data block)。 5. 为数据块选择一个唯一名称,并接受已输入的名称。 6. 从“类型”(Type)下拉列表中选择“数组 DB”(Array DB) 条目。 7. 从“数组数据类型”(Array data type)下拉列表中选择数组各个元素的数据类型。 8. 在“数组限值”(Array limit) 中,输入数组的上限。 9.单击“确定”(OK)。 MinimumSamplingInterval 属性 变量的MinimumSamplingInterval 属性除了“Value”、“DataType”和“AccessLevel”之外,在表示服务器地址空间的 XML 文件中还可为变量设置“MinimumSamplingInterval”属性。 该属性用于指定服务器采样变量值的速度。 S7-1500 CPU 的OPC UA 服务器按以下方式处理 MinimumSamplingInterval 的值: • 负值和大于 4294967 的值会设为-1;这表示:Zui低采样率无法确定。服务器未指定可以对 变量值进行采样的速度。 • 小数会舍入到小数点后三位。