<< 点击显示目录 >> 主页 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服务器,必须根据数量提供不同的会话变量。对于必须检查其连接状态的每个服务器,必须使用具有相应服务器别名的单独操作数,并且条件也必须相应地包含在一个单独的事件处理程序中。
运行时的连接状态通过事件 Connected 或 Disconnected来监控 。
根据该事件,对应于OPC UA服务器的会话变量被定义为 "真True "或 "假False"。
<EventBinding>
<Source xsi:type="opcUaSystem.Event" event="Connected" />
<EventHandler condition="serverAlias="RemoteServer"">
<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="RemoteServer"">
<Action>
<Target xsi:type="session.VariableAction" refId="ServerStatus1" >
<Method xsi:type="session.VariableAction.SetValueBool" value="false" />
</Target>
</Action>
</EventHandler>
</EventBinding>
会话变量的值可用于显示连接符号或切换HMI应用程序中的样式。