<< 点击显示目录 >> 主页 mappView帮助助手 > mappView入门简单Wiki > 会话变量Session到 PLC 并返回Session variable to PLC and back |
•Automation Studio 4.4
•mappView 5.4
-->此案例<-- 显示如何从会话session变量交换信息到 PLC 并返回。 请记住,每个会话都存在会话变量。 因此,必须在 PLC 端使用阵列数组。 在以下示例中,最多处理 3 个会话。
•配置反映不同会话变量的 PLC 数组
•配置将信息存储在 PLC 变量数组中的列表绑定
•配置将 PLC 变量数组连接到会话变量的事件绑定
创建一个足够大的 PLC 变量数组以存储最大数量的会话变量。 将此阵列启用到 OPC 配置。
在以下列表绑定中,客户端会话变量连接到 PLC 上的变量数组。 通过使用“slotId”作为选择器,每个客户端写入与其槽ID对应的数组元素。
<Binding mode="oneWayToSource">
<Source xsi:type="listElement">
<Selector xsi:type="session" refId="::SYSTEM:clientInfo.slotId" attribute="value" />
<be:List xsi:type="be:opcUa" attribute="value">
<bt:Element index="0" refId="::AsGlobalPV:SessionPLC[0]" />
<bt:Element index="1" refId="::AsGlobalPV:SessionPLC[1]" />
<bt:Element index="2" refId="::AsGlobalPV:SessionPLC[2]" />
</be:List>
</Source>
<Target xsi:type="session" refId="SessionVar" attribute="value" />
</Binding>
在以下事件绑定中,PLC 上的变量数组连接到客户端会话变量。
<EventBinding>
<!-- Trigger when new value />-->
<Source xsi:type="opcUa.Event" refId="::AsGlobalPV:SessionPLC[0]" event="ValueChanged" />
<!-- Read additional value from PLC />-->
<Operand name="slotId" datatype="ANY_INT">
<ReadTarget xsi:type="session.VariableAction.Read" refId="::SYSTEM:clientInfo.slotId" >
<Method xsi:type="session.VariableAction.GetValue" />
</ReadTarget>
</Operand>
<!-- Execute command when conditions are met />-->
<EventHandler condition="slotId=0" >
<Action>
<Target xsi:type="session.VariableAction" refId="SessionVar" >
<Method xsi:type="session.VariableAction.SetValueNumber" value="=newValue" />
</Target>
</Action>
</EventHandler>
</EventBinding>
<EventBinding>
<!-- Trigger when new value />-->
<Source xsi:type="opcUa.Event" refId="::AsGlobalPV:SessionPLC[1]" event="ValueChanged" />
<!-- Read additional value from PLC />-->
<Operand name="slotId" datatype="ANY_INT">
<ReadTarget xsi:type="session.VariableAction.Read" refId="::SYSTEM:clientInfo.slotId" >
<Method xsi:type="session.VariableAction.GetValue" />
</ReadTarget>
</Operand>
<!-- Execute command when conditions are met />-->
<EventHandler condition="slotId=1" >
<Action>
<Target xsi:type="session.VariableAction" refId="SessionVar" >
<Method xsi:type="session.VariableAction.SetValueNumber" value="=newValue" />
</Target>
</Action>
</EventHandler>
</EventBinding>
<EventBinding>
<!-- Trigger when new value />-->
<Source xsi:type="opcUa.Event" refId="::AsGlobalPV:SessionPLC[2]" event="ValueChanged" />
<!-- Read additional value from PLC />-->
<Operand name="slotId" datatype="ANY_INT">
<ReadTarget xsi:type="session.VariableAction.Read" refId="::SYSTEM:clientInfo.slotId" >
<Method xsi:type="session.VariableAction.GetValue" />
</ReadTarget>
</Operand>
<!-- Execute command when conditions are met />-->
<EventHandler condition="slotId=2" >
<Action>
<Target xsi:type="session.VariableAction" refId="SessionVar" >
<Method xsi:type="session.VariableAction.SetValueNumber" value="=newValue" />
</Target>
</Action>
</EventHandler>
</EventBinding>