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>
</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>
</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>SanyoDenki RS2 EtherCAT</Name>
<PhysAddr>3</PhysAddr>
<AutoIncAddr>1</AutoIncAddr>
<Physics></Physics>
<VendorId>441</VendorId>
<ProductCode>2</ProductCode>
<RevisionNo>0</RevisionNo>
<SerialNo>0</SerialNo>
</Info>
</Slave>
</Config>
</EtherCATConfig>