beremiz

c9915bc620cd
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>