Remote OPC UA connection status远程OPC UA连接状态

<< 点击显示目录 >>

主页  mappView帮助助手 > mapp View帮助信息 > 指南 > FAQs > 事件和行动应用 >

Remote OPC UA connection status远程OPC UA连接状态

这个例子描述了如何监控与任何OPC UA服务器的连接以及如何将状态存储在会话变量中。

为此,在Event&Action系统中,有以下事件和动作。

事件Event Connected - 在断开连接后成功建立与OPC UA服务器的连接时触发。

事件Event Disconnected - 当与OPC UA服务器的连接在之前的连接后被中断时触发。

动作Action GetServerStatus - 返回一个OPC UA连接的当前连接状态。

在一个会话变量上保存初始连接状态

系统变量 ::SYSTEM:clientInfo.isValid的ValueChanged事件  被触发,用于检测事件绑定中第一次可能访问HMI应用程序的初始连接状态。

状态 "true"(连接)或 "false"(未连接)被保存在一个名为 ServerStatus1的会话变量中 。

创建一个会话变量

会话变量是在任何.svar文件中创建的,然后在可视化对象(.vis)中被引用。

<Variable name="ServerStatus1" xsi:type="BOOL" value="true" />

创建一个事件绑定

事件绑定是在任何.eventbinding文件中创建的,在可视化对象(.vis)中也被引用。

当事件isValid发生时,用一个操作数读出别名为 "RemoteServer "的远程OPC UA服务器的状态。由于会话变量  在连接时 被初始化为 true ,在事件处理程序的条件中只检查一个中断,  如果没有连接, 会话变量被定义为 false

<EventBinding>
 <Source xsi:type="session.Event" refId="::SYSTEM:clientInfo.isValid" event="ValueChanged" />
 <Operand name="serverStatus" datatype="ANY_INT">
  <ReadTarget xsi:type="opcUa.SystemAction.Read" serverAlias="RemoteServer" >
   <Method xsi:type="opcUa.SystemAction.GetServerStatus" />
  </ReadTarget>
 </Operand>
 <EventHandler condition="serverStatus = 2">
  <Action>
   <Target xsi:type="session.VariableAction" refId="ServerStatus1" >
    <Method xsi:type="session.VariableAction.SetValueBool" value="false" />
   </Target>
  </Action>
 </EventHandler>
</EventBinding>

如果配置了几个OPC UA服务器,必须根据数量提供不同的会话变量。对于必须检查其连接状态的每个服务器,必须使用具有相应服务器别名的单独操作数,并且条件也必须相应地包含在一个单独的事件处理程序中。

在运行时检查连接状态

运行时的连接状态通过事件 ConnectedDisconnected监控 。

根据该事件,对应于OPC UA服务器的会话变量被定义为 "真True "或 "假False"。

<EventBinding>
 <Source xsi:type="opcUaSystem.Event" event="Connected" />
 <EventHandler condition="serverAlias=&quot;RemoteServer&quot;">
  <Action>
   <Target xsi:type="session.VariableAction" refId="ServerStatus1" >
    <Method xsi:type="session.VariableAction.SetValueBool" value="true" />
   </Target>
  </Action>
 </EventHandler>
</EventBinding>
<EventBinding>
 <Source xsi:type="opcUaSystem.Event" event="Disconnected" />
 <EventHandler condition="serverAlias=&quot;RemoteServer&quot;">
  <Action>
   <Target xsi:type="session.VariableAction" refId="ServerStatus1" >
    <Method xsi:type="session.VariableAction.SetValueBool" value="false" />
   </Target>
  </Action>
 </EventHandler>
</EventBinding>

会话变量的值可用于显示连接符号或切换HMI应用程序中的样式。