SIEMENS西门子 触摸屏KP700 6AV21241GC010AX0
有关 OPC UA 紧凑指令的实用信息 (S7-1500) 建立和终止会话 如果要使用在“SessionConnectInfo”输入参数中指定的属性与 OPC UA 服务器建立会话,请将 “MaintainSession”参数设置为 TRUE。之后,紧凑指令将调用所需的指令建立和保持会话。 “MaintainSession”参数的值为 TRUE 时,此紧凑指令将继续保持该会话,同时可启动其它作 业。如果要终止会话,请将“MaintainSession”参数设置为 FALSE。 如果要执行多个作业,可以通过使用“MaintainSession”参数保持会话来节省 CPU 资源:无需 针对每个作业建立和终止与服务器的会话,而是保持会话,从而更快地执行作业。 如果在不执行所请求作业的情况下建立或终止会话时发生错误,则不会设置“Error”输出参数。 这意味着在设置“MaintainSession”时应监视“Status”输出参数,以识别建立或终止会话时出 现的问题。 请求读取/写入操作或方法调用 无论“MaintainSession”参数的值如何,系统都会在“REQ”输入参数中有上升沿时激活作业。
如果会话已经存在(“MaintainSession”= TRUE),则将立即启动读取/写入进程或方法调用。 如果会话尚不存在,则该紧凑指令将尝试建立一个会话,然后启动读取/写入进程或方法调用。 如果发生错误,则会话将关闭。 通过读取变量的错误代码监视状态列表 多个内部调用指令成功完成后,紧凑指令将检查该内部指令的状态列表。 • 如果状态列表为空,则输出参数“Status”中包含一条信息 (16#38xx_xxxx)。 • 如果状态列表不为空,则该紧凑指令将检查所有的列表元素。如果发现某个错误代码,则 检查停止同时输出参数“Status”中包含一条警告消息 (16#78xx_xxxx)。此时,需检查该紧 凑指令中背景数据块的静态变量 s_StatusList_CurrentElement。该值为状态列表数组包含 第一个错误代码的元素编号。 OPC UA 紧凑指令与其它 OPC UA 指令之间的交互 从 OPC UA 紧凑指令获取的连接句柄和节点句柄也可用于其它 OPC UA 指令。例如,可以调用 “OPC UA-ReadList_C”指令来获取连接句柄和节点句柄。可以使用该连接句柄(以静态变量形 式提供)和节点句柄来调用“OPC_UA_WriteList”指令;无需调用其它 OPC UA 指令来建立连 接并获取节点句柄。 此概念基于以下事实,即句柄不是来自指令,而是由 CPU 的固件提供的。因此,只要句柄在 CPU 中可用,OPC UA 指令就可以共同使用这些句柄。 但 OPC UA 紧凑指令的连接句柄无法调用 OPC UA 指令,终止数据交换。此时,如果使用紧 凑指令,则在处理作业和关闭会话将出错。如果使用紧凑指令建立会话,则需使用相同的紧 凑指令实例关闭该会话。 “OPC_UA_Connect”指令不能用于建立会话,而且该会话也不能使用 OPC UA 紧凑指令进行 操作。 连接中断时重新连接 “MaintainSession”参数的值为 TRUE 时,紧凑指令将尝试保持与服务器的连接。指令按如下 方式检查连接:监视在内部调用指令时是否将“Error”参数设置为 TRUE。否则,紧凑指令将 假定连接仍然存在。 如果内部调用指令的错误代码指示存在连接错误或服务器故障,需要断开连接后重新建立, 则紧凑指令不显示任何错误。如果节点句柄可用,该句柄将首先调用 “OPC_UA_NodeReleaseHandleList”。然后,调用“OPC_UA_Disconnect”。连接终止后,紧凑 指令将在下次使用“MaintainSesion”= TRUE 进行调用时尝试重新建立连接。如果执行未经“REQ”输入请求的作业时出错,则系统不置位紧凑指令的“Error”输出参数。这 意味着必须监视“Status”输出参数,以识别建立会话时出现的问题。 如果紧凑应用程序在尝试建立会话时出错(“Status”的值为 16#3870_0100 或 16#3870_0200),且“MaintainSession”参数的值为 TRUE,则该紧凑指令将在 30 秒钟的延 时时间后尝试重新建立会话。延时激活时,“Status”参数的值始终为 16#3870_0600。将 “MaintainSession”参数设置为 FALSE 时,可取消延时。此时,该指令将立即尝试重新建立会 话。 准备数据交换 (S7-1500) OPC_UA_Connect:创建连接 有效性 “OPC_UA_Connect”指令的以下说明适用于 S7-1500 CPU 固件版本 V2.6 及更高版本。 说明 “OPC_UA_Connect”指令用于与 OPC UA 服务器建立连接。 下图显示了该指令在编辑器 (FBD) 中的图标。在上图中,尚未包含该指令的参数。 该指令可用于准备 OPC UA 服务器与 OPC UA 客户端间的数据交换;有关 ① 的说明,请见 下图: 该指令将返回的一个连接句柄(数值引用),将使用以下指令引用该连接。① 准备读取和写入操作的指令 ② 读取和写入指令(根据应用程序,重复调用指令) ③ 完成读取或写入操作后释放资源的指令 “OPC_UA_Connect”的参数 参数 区域中的声明 数据类型 含义 REQ Input BOOL 参数中的上升沿 0 → 1 可触发指令的 执行。 ServerEndpointUrl InOut VARIANT 指向 STRING 或 WSTRING 类型的变量 且带 OPC UA 服务器地址 (URL) 的指 针。支持 IPv4 地址以及 FQDN(完全 限定域名),前提是已在 CPU 属性中 组态了 DNS 服务器。 SessionConnectInfo InOut VARIANT 指向“OPC_UA_SessionConnectInfo (页 5889)”系统数据类型的变量中的 连接描述的指针。 Timeout Input TIME 连接建立的Zui大时间(单位为毫 秒)。 “Timeout”参数用于定义客户端发送 到服务器的下位 OPC UA 服务请求的 服务超时时间。 由于较少的值无意义,因此需将小于 100 ms 超时时间或负值设置为 100 ms。 Done Output BOOL 执行状态参数: • 0:指令的执行中止、尚未完成或 尚未开始 • 1:指令的执行已完成且未出错参数 区域中的声明 数据类型 含义 Busy Output BOOL 执行状态参数: • 0:指令未在执行 • 1:指令当前正在执行 Error Output BOOL 错误显示 • 0:无错误 • 1:发生错误。请参见“状态”参 数。 Status Output DWORD 错误原因,请参见下文中的“状态对 应的错误编号”。 ConnectionHdl Output DWORD 已建立连接的唯一标识符。 其它 OPC UA 指令需要将该句柄用作 输入参数。 状态对应的错误编号 “Status”参数将提供指令执行过程中所发生错误的相关信息。 下表列出了各错误代码的具体说明:无 OPC UA 客户端可用的内存。 由于 OPC UA 客户端和 OPC UA 服务器共用存储区,应 降低服务器的存储区要求。 此时,可执行以下操作: • 为 OPC UA 释放少量 PLC 变量。 • 减少当前连接到服务器的 OPC UA 客户端的数量。 • 设置更少的订阅。 • 常规:减少已注册 OPC UA 元素的数量。可通过 OPC UA 服务器诊断工具(如,Unified Automation 公司 的 UaExpert),确保不存在无效会话和订阅。作为 对策,可在客户端选择相应的超时时间(订阅超时时 间 <= 会话超时时间)。连接超时。 可能的原因: • 服务器地址 (ServerEndpointURL) 错误或不完整、或 服务器返回错误的寻址地址值。在以下几种情况下, 寻址的地址与返回的地址不同: – 服务器位于其它子网中,通过 NAT(网络地址转 换)进行访问 – 服务器以名称进行响应而非 IP 地址 相关应用示例,参见“如何组态 SIMATIC S7-1500 的 OPC UA 客户端,通过 FQDN 建立连接或绕过 FQDN?” • 在建立连接的过程中,服务器无法接受客户端发送的 缓冲区大小。 补救措施: • 检查并更正 ServerEndpointURL。如果该错误由寻址 地址与返回地址不同导致,则可更改服务器组态,确 保服务器响应的 ServerEndpointURL 与客户端寻址 的地址相同。如果服务器的这一特性无法更改,则可 在“ConnectInfo.ServerUri”变量 (“SessionConnectInfo”参数)中输入 ServerEndpointURL。之后,相同将使用该值覆盖服 务器所寻址的地址。该值也必须位于服务器证书中。 • 检查所允许的缓冲区大小。S7-1500 CPU 的客户端可 提供 8192 字节大小。服务器需接受该值。