tests/ethercat/wago_higen/ethercat@etherlab/master@EthercatNode/config.xml
author Andrey Skvortsov <andrej.skvortzov@gmail.com>
Wed, 01 Aug 2018 13:09:45 +0300
changeset 2258 c9915bc620cd
parent 2165 02a2b5dee5e3
permissions -rw-r--r--
Fix wrong code generation if EN/ENO are used in FBD/LD/SFC

This problem appears for example here

--------
------- | MOVE |
| MOVE1 |------|EN ENO|
------- | |
| |
------- | | -----------
| 23 |------|IN OUT|---| LocalVar0 |
------- -------- -----------


--------
------- | MOVE |
| MOVE2 |------|EN ENO|
------- | |
| |
------- | | -----------
| 15 |------|IN OUT|---| LocalVar0 |
------- -------- -----------

Before wrong code was generated for this case:

MOVE6_OUT := MOVE(EN := move1, IN := 23, ENO => MOVE6_ENO);
LocalVar0 := MOVE6_OUT;
MOVE4_OUT := MOVE(EN := move2, IN := 15, ENO => MOVE4_ENO);
LocalVar0 := MOVE4_OUT;

With this patch now following code is generated:

MOVE6_OUT := MOVE(EN := move1, IN := 23, ENO => MOVE6_ENO);
IF MOVE6_ENO THEN
LocalVar0 := MOVE6_OUT;
END_IF;
MOVE4_OUT := MOVE(EN := move2, IN := 15, ENO => MOVE4_ENO);
IF MOVE4_ENO THEN
LocalVar0 := MOVE4_OUT;
END_IF;


See discussion here:
https://sourceforge.net/p/beremiz/mailman/message/36378805/
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<EtherCATConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="EtherCATInfo.xsd">
  <Config>
    <Master>
      <Info>
        <Name></Name>
        <Destination>00</Destination>
        <Source>00</Source>
      </Info>
    </Master>
    <Slave>
      <Info>
        <Name>EK1100</Name>
        <PhysAddr>0</PhysAddr>
        <AutoIncAddr>0</AutoIncAddr>
        <Physics></Physics>
        <VendorId>2</VendorId>
        <ProductCode>72100946</ProductCode>
        <RevisionNo>65536</RevisionNo>
        <SerialNo>0</SerialNo>
      </Info>
      <Mailbox>
        <Send>
          <Start>0</Start>
          <Length>0</Length>
        </Send>
        <Recv>
          <Start>0</Start>
          <Length>0</Length>
        </Recv>
        <CoE>
          <InitCmds/>
        </CoE>
      </Mailbox>
    </Slave>
    <Slave>
      <Info>
        <Name>EL1088</Name>
        <PhysAddr>1</PhysAddr>
        <AutoIncAddr>0</AutoIncAddr>
        <Physics></Physics>
        <VendorId>2</VendorId>
        <ProductCode>71315538</ProductCode>
        <RevisionNo>1048576</RevisionNo>
        <SerialNo>0</SerialNo>
      </Info>
      <Mailbox>
        <Send>
          <Start>0</Start>
          <Length>0</Length>
        </Send>
        <Recv>
          <Start>0</Start>
          <Length>0</Length>
        </Recv>
        <CoE>
          <InitCmds/>
        </CoE>
      </Mailbox>
    </Slave>
    <Slave>
      <Info>
        <Name>EL2088</Name>
        <PhysAddr>2</PhysAddr>
        <AutoIncAddr>0</AutoIncAddr>
        <Physics></Physics>
        <VendorId>2</VendorId>
        <ProductCode>136851538</ProductCode>
        <RevisionNo>1048576</RevisionNo>
        <SerialNo>0</SerialNo>
      </Info>
    </Slave>
    <Slave>
      <Info>
        <Name>EDA7000 CoE Drive</Name>
        <PhysAddr>3</PhysAddr>
        <AutoIncAddr>0</AutoIncAddr>
        <Physics></Physics>
        <VendorId>1573</VendorId>
        <ProductCode>1768449365</ProductCode>
        <RevisionNo>3</RevisionNo>
        <SerialNo>0</SerialNo>
      </Info>
      <Mailbox>
        <Send>
          <Start>0</Start>
          <Length>0</Length>
        </Send>
        <Recv>
          <Start>0</Start>
          <Length>0</Length>
        </Recv>
        <CoE>
          <InitCmds>
            <InitCmd>
              <Transition>II</Transition>
              <Comment>Configure limit switches signal</Comment>
              <Timeout>0</Timeout>
              <Ccs>0</Ccs>
              <Index>8229</Index>
              <SubIndex>0</SubIndex>
              <Data>07</Data>
            </InitCmd>
            <InitCmd>
              <Transition>II</Transition>
              <Comment></Comment>
              <Timeout>0</Timeout>
              <Ccs>0</Ccs>
              <Index>24800</Index>
              <SubIndex>0</SubIndex>
              <Data>05DC</Data>
            </InitCmd>
            <InitCmd>
              <Transition>II</Transition>
              <Comment></Comment>
              <Timeout>0</Timeout>
              <Ccs>0</Ccs>
              <Index>24801</Index>
              <SubIndex>0</SubIndex>
              <Data>05DC</Data>
            </InitCmd>
          </InitCmds>
        </CoE>
      </Mailbox>
    </Slave>
  </Config>
</EtherCATConfig>