会话变量Session到 PLC 并返回Session variable to PLC and back

<< 点击显示目录 >>

主页  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 阵列数组的配置

创建一个足够大的 PLC 变量数组以存储最大数量的会话变量。 将此阵列启用到 OPC 配置。

将信息存储在 PLC 变量数组中的列表绑定的配置

在以下列表绑定中,客户端会话变量连接到 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 变量数组连接到会话变量的事件绑定

在以下事件绑定中,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>