move v2 slit code to tc_mca submodule and delete IO and NC axes from testing

This commit is contained in:
Cooper
2022-06-01 09:04:46 +01:00
parent 037218b267
commit 598918bbab
28 changed files with 125 additions and 11703 deletions
@@ -1,46 +0,0 @@
<?xml version="1.0"?>
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4024.11" ClassName="CDevEtherCATDef" SubType="111">
<Device Id="1" DevType="111" DevFlags="#x0003" AmsPort="28673" AmsNetId="5.65.74.200.2.1" RemoteName="Device 1 (EtherCAT)">
<Name>__FILENAME__</Name>
<AddressInfo>
<Ccat>
<Address>-801112064</Address>
<Offset>131072</Offset>
<Size>8192</Size>
<BaseAddr>0</BaseAddr>
<BusNo>3</BusNo>
<SlotNo>0</SlotNo>
<VendorId>5612</VendorId>
<DeviceId>20480</DeviceId>
<Dma>
<Address>0</Address>
<Offset>4096</Offset>
<Size>12288</Size>
<BaseAddr>2</BaseAddr>
<RxChn>0</RxChn>
<TxChn>1</TxChn>
</Dma>
<TimeSize>128</TimeSize>
<TimeOffs>1024</TimeOffs>
<GpioSize>32</GpioSize>
<GpioOffs>768</GpioOffs>
<EepromSize>32</EepromSize>
<EepromOffs>512</EepromOffs>
<IntCtrlSize>16</IntCtrlSize>
<IntCtrlOffs>640</IntCtrlOffs>
<Identification>
<Value>1795167326</Value>
<Version>1</Version>
<Size>256</Size>
</Identification>
</Ccat>
</AddressInfo>
<Image Id="2" AddrType="9" ImageType="3">
<Name>Image</Name>
</Image>
<Box File="Term 1 (EK1200).xti" Id="1">
<EtherCAT PortABoxInfo="#x00ffffff"/>
</Box>
<EtherCAT/>
</Device>
</TcSmItem>
@@ -1,32 +0,0 @@
<?xml version="1.0"?>
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4024.11" ClassName="CFlbTermDef" SubType="9099">
<ImageDatas>
<ImageData Id="1000">424dd6020000000000003600000028000000100000000e0000000100180000000000a0020000c40e0000c40e00000000000000000000ff00ffff00ffff00ff808080808080808080808080808080808080808080808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ff0000c00000c0ffffffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ff0000c00000c0ffffffc0c0c000ffffc0c0c000ffff808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ff0000c00000c0ffffffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ff0000c00000c0ffffffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ff0000c00000c0ffffffc0c0c0ff0000c0c0c0ff0000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ff0000c00000c0ffffffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ff0000c00000c0ffffffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ff0000c00000c0ffffffc0c0c00000ffc0c0c00000ff808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ff0000c00000c0ffffffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ff0000c00000c0ffffffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ff0000c00000c0ffffffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ff0000c00000c0ffffffc0c0c0008000c0c0c0008000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ff0000c00000c0ffffffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff</ImageData>
</ImageDatas>
<Box Id="1" BoxType="9099">
<Name>__FILENAME__</Name>
<ImageId>1000</ImageId>
<EtherCAT PdiType="#x0100" CycleMBoxPollingTime="0" VendorId="#x00000002" ProductCode="#x04b02c52" RevisionNo="#x00001388" InfoDataState="false" PortPhys="49" MaxSlotCount="256" MaxSlotGroupCount="1" SlotPdoIncrement="1" SlotIndexIncrement="16" Type="EK1200-5000 EtherCAT Power supply (2A E-Bus)" Desc="EK1200"/>
<Box File="Term 2 (EL1808).xti" Id="2">
<EtherCAT PortABoxInfo="#x01000001"/>
</Box>
<Box File="Term 3 (EL2819).xti" Id="3">
<EtherCAT PortABoxInfo="#x01000002"/>
</Box>
<Box File="Term 4 (EL5002).xti" Id="4">
<EtherCAT PortABoxInfo="#x01000003"/>
</Box>
<Box File="Term 5 (EL2014).xti" Id="5">
<EtherCAT PortABoxInfo="#x01000004"/>
</Box>
<Box File="Term 6 (EL7041-0052).xti" Id="6">
<EtherCAT PortABoxInfo="#x01000005"/>
</Box>
<Box File="Term 7 (EL7041-0052).xti" Id="7">
<EtherCAT PortABoxInfo="#x01000006"/>
</Box>
<Box File="Term 8 (EK1110).xti" Id="8">
<EtherCAT PortABoxInfo="#x01000007"/>
</Box>
</Box>
</TcSmItem>
@@ -1,51 +0,0 @@
<?xml version="1.0"?>
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4024.11" ClassName="CFlbTermDef" SubType="9099">
<Box Id="2" BoxType="9099">
<Name>__FILENAME__</Name>
<ImageId>7</ImageId>
<EtherCAT SlaveType="1" PdiType="#x0104" CycleMBoxPollingTime="0" VendorId="#x00000002" ProductCode="#x07103052" RevisionNo="#x00120000" RepeatSupport="true" PortPhys="51" MaxSlotCount="256" MaxSlotGroupCount="1" SlotPdoIncrement="1" SlotIndexIncrement="16" Type="EL1808 8Ch. Dig. Input 24V, 3ms" Desc="EL1808">
<SyncMan>001001000000010004000000000000000100001000010000</SyncMan>
<Fmmu>0000000000000000001000010100000002000000000000000000000000000000</Fmmu>
<Pdo Name="Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="0">
<Entry Name="Input" BitLen="1" Index="#x6000" Sub="#x01">
<Type>BIT</Type>
</Entry>
</Pdo>
<Pdo Name="Channel 2" Index="#x1a01" Flags="#x0011" SyncMan="0">
<Entry Name="Input" BitLen="1" Index="#x6010" Sub="#x01">
<Type>BIT</Type>
</Entry>
</Pdo>
<Pdo Name="Channel 3" Index="#x1a02" Flags="#x0011" SyncMan="0">
<Entry Name="Input" BitLen="1" Index="#x6020" Sub="#x01">
<Type>BIT</Type>
</Entry>
</Pdo>
<Pdo Name="Channel 4" Index="#x1a03" Flags="#x0011" SyncMan="0">
<Entry Name="Input" BitLen="1" Index="#x6030" Sub="#x01">
<Type>BIT</Type>
</Entry>
</Pdo>
<Pdo Name="Channel 5" Index="#x1a04" Flags="#x0011" SyncMan="0">
<Entry Name="Input" BitLen="1" Index="#x6040" Sub="#x01">
<Type>BIT</Type>
</Entry>
</Pdo>
<Pdo Name="Channel 6" Index="#x1a05" Flags="#x0011" SyncMan="0">
<Entry Name="Input" BitLen="1" Index="#x6050" Sub="#x01">
<Type>BIT</Type>
</Entry>
</Pdo>
<Pdo Name="Channel 7" Index="#x1a06" Flags="#x0011" SyncMan="0">
<Entry Name="Input" BitLen="1" Index="#x6060" Sub="#x01">
<Type>BIT</Type>
</Entry>
</Pdo>
<Pdo Name="Channel 8" Index="#x1a07" Flags="#x0011" SyncMan="0">
<Entry Name="Input" BitLen="1" Index="#x6070" Sub="#x01">
<Type>BIT</Type>
</Entry>
</Pdo>
</EtherCAT>
</Box>
</TcSmItem>
@@ -1,308 +0,0 @@
<?xml version="1.0"?>
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4024.11" ClassName="CFlbTermDef" SubType="9099">
<DataTypes>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000004}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..3] OF BIT</Name>
<BitSize>4</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
<LBound>0</LBound>
<Elements>4</Elements>
</ArrayInfo>
</DataType>
</DataTypes>
<ImageDatas>
<ImageData Id="1000">424dd6020000000000003600000028000000100000000e0000000100180000000000a0020000120b0000120b00000000000000000000ff00ffff00ffff00ffff00ffff00ffff00ff808080808080808080808080808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c000ffffc0c0c000ffff808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0ff0000c0c0c0ff0000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff0000ff0000ff0000ff0000ff0000ff0000ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ff0000ff0000ff0000ff0000ff0000ff0000ffc0c0c00000ffc0c0c00000ff808080ff00ffff00ffff00ffff00ffff00ff0000ff0000ff0000ff0000ff0000ff0000ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff0000ff0000ff0000ff0000ff0000ff0000ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ff0000ff0000ff0000ff0000ff0000ff0000ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff0000ff0000ff0000ff0000ff0000ff0000ffc0c0c0008000c0c0c0008000808080ff00ffff00ffff00ffff00ffff00ff0000ff0000ff0000ff0000ff0000ff0000ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff</ImageData>
</ImageDatas>
<Box Id="3" BoxType="9099" BoxFlags="#x00000020">
<Name>__FILENAME__</Name>
<ImageId>1000</ImageId>
<EtherCAT SlaveType="2" PdiType="#x0005" MboxDataLinkLayer="true" StateMBoxPolling="true" CycleMBoxPollingTime="0" CoeType="7" FoeType="1" VendorId="#x00000002" ProductCode="#x0b033052" RevisionNo="#x00120000" InfoDataAddr="true" TimeoutMailbox2="2000" CheckRevisionNoType="3" PortPhys="51" MaxSlotCount="256" MaxSlotGroupCount="1" SlotPdoIncrement="1" SlotIndexIncrement="16" Type="EL2819 16Ch. Dig. Output 24V, 0,5A, Diagnostic" Desc="EL2819">
<SyncMan>001080002600010001000000800080008000001026010000</SyncMan>
<SyncMan>801080002200010002000000800080008000801022010000</SyncMan>
<SyncMan>001102002400010003000000000000000200001124010000</SyncMan>
<SyncMan>801109002000010004000000000000000800801120010000</SyncMan>
<Fmmu>0000000000000000001100020100000001000000000000000000000000000000</Fmmu>
<Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu>
<Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu>
<BootStrapData>0010f400f410f400</BootStrapData>
<Pdo Name="DIG Diag Inputs" Index="#x1a00" Flags="#x0010" SyncMan="3">
<Entry Name="Channel 1__Overtemperature" BitLen="1" Index="#x6001" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 1__Open Load" BitLen="1" Index="#x6001" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 1__Overcurrent" BitLen="1" Index="#x6001" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 1__Short Circuit to 24V" BitLen="1" Index="#x6001" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 2__Overtemperature" BitLen="1" Index="#x6011" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 2__Open Load" BitLen="1" Index="#x6011" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 2__Overcurrent" BitLen="1" Index="#x6011" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 2__Short Circuit to 24V" BitLen="1" Index="#x6011" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 3__Overtemperature" BitLen="1" Index="#x6021" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 3__Open Load" BitLen="1" Index="#x6021" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 3__Overcurrent" BitLen="1" Index="#x6021" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 3__Short Circuit to 24V" BitLen="1" Index="#x6021" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 4__Overtemperature" BitLen="1" Index="#x6031" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 4__Open Load" BitLen="1" Index="#x6031" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 4__Overcurrent" BitLen="1" Index="#x6031" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 4__Short Circuit to 24V" BitLen="1" Index="#x6031" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 5__Overtemperature" BitLen="1" Index="#x6041" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 5__Open Load" BitLen="1" Index="#x6041" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 5__Overcurrent" BitLen="1" Index="#x6041" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 5__Short Circuit to 24V" BitLen="1" Index="#x6041" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 6__Overtemperature" BitLen="1" Index="#x6051" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 6__Open Load" BitLen="1" Index="#x6051" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 6__Overcurrent" BitLen="1" Index="#x6051" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 6__Short Circuit to 24V" BitLen="1" Index="#x6051" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 7__Overtemperature" BitLen="1" Index="#x6061" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 7__Open Load" BitLen="1" Index="#x6061" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 7__Overcurrent" BitLen="1" Index="#x6061" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 7__Short Circuit to 24V" BitLen="1" Index="#x6061" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 8__Overtemperature" BitLen="1" Index="#x6071" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 8__Open Load" BitLen="1" Index="#x6071" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 8__Overcurrent" BitLen="1" Index="#x6071" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 8__Short Circuit to 24V" BitLen="1" Index="#x6071" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 9__Overtemperature" BitLen="1" Index="#x6081" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 9__Open Load" BitLen="1" Index="#x6081" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 9__Overcurrent" BitLen="1" Index="#x6081" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 9__Short Circuit to 24V" BitLen="1" Index="#x6081" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 10__Overtemperature" BitLen="1" Index="#x6091" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 10__Open Load" BitLen="1" Index="#x6091" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 10__Overcurrent" BitLen="1" Index="#x6091" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 10__Short Circuit to 24V" BitLen="1" Index="#x6091" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 11__Overtemperature" BitLen="1" Index="#x60a1" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 11__Open Load" BitLen="1" Index="#x60a1" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 11__Overcurrent" BitLen="1" Index="#x60a1" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 11__Short Circuit to 24V" BitLen="1" Index="#x60a1" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 12__Overtemperature" BitLen="1" Index="#x60b1" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 12__Open Load" BitLen="1" Index="#x60b1" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 12__Overcurrent" BitLen="1" Index="#x60b1" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 12__Short Circuit to 24V" BitLen="1" Index="#x60b1" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 13__Overtemperature" BitLen="1" Index="#x60c1" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 13__Open Load" BitLen="1" Index="#x60c1" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 13__Overcurrent" BitLen="1" Index="#x60c1" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 13__Short Circuit to 24V" BitLen="1" Index="#x60c1" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 14__Overtemperature" BitLen="1" Index="#x60d1" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 14__Open Load" BitLen="1" Index="#x60d1" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 14__Overcurrent" BitLen="1" Index="#x60d1" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 14__Short Circuit to 24V" BitLen="1" Index="#x60d1" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 15__Overtemperature" BitLen="1" Index="#x60e1" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 15__Open Load" BitLen="1" Index="#x60e1" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 15__Overcurrent" BitLen="1" Index="#x60e1" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 15__Short Circuit to 24V" BitLen="1" Index="#x60e1" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 16__Overtemperature" BitLen="1" Index="#x60f1" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 16__Open Load" BitLen="1" Index="#x60f1" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 16__Overcurrent" BitLen="1" Index="#x60f1" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 16__Short Circuit to 24V" BitLen="1" Index="#x60f1" Sub="#x04">
<Type>BIT</Type>
</Entry>
</Pdo>
<Pdo Name="DIG Inputs Device" Index="#x1a02" Flags="#x0010" SyncMan="3">
<Entry Name="Common Fault" BitLen="1" Index="#xf600" Sub="#x11">
<Type>BIT</Type>
</Entry>
<Entry Name="Overtemperature Device" BitLen="1" Index="#xf600" Sub="#x12">
<Type>BIT</Type>
</Entry>
<Entry Name="Undervoltage" BitLen="1" Index="#xf600" Sub="#x13">
<Type>BIT</Type>
</Entry>
<Entry Name="Missing Voltage" BitLen="1" Index="#xf600" Sub="#x14">
<Type>BIT</Type>
</Entry>
<Entry BitLen="4">
<Type GUID="{18071995-0000-0000-0000-002000000004}">ARRAY [0..3] OF BIT</Type>
</Entry>
</Pdo>
<Pdo Name="DIG Outputs" Index="#x1600" InOut="1" Flags="#x0010" SyncMan="2">
<Entry Name="Channel 1__Output" BitLen="1" Index="#x7000" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 2__Output" BitLen="1" Index="#x7010" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 3__Output" BitLen="1" Index="#x7020" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 4__Output" BitLen="1" Index="#x7030" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 5__Output" BitLen="1" Index="#x7040" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 6__Output" BitLen="1" Index="#x7050" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 7__Output" BitLen="1" Index="#x7060" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 8__Output" BitLen="1" Index="#x7070" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 9__Output" BitLen="1" Index="#x7080" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 10__Output" BitLen="1" Index="#x7090" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 11__Output" BitLen="1" Index="#x70a0" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 12__Output" BitLen="1" Index="#x70b0" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 13__Output" BitLen="1" Index="#x70c0" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 14__Output" BitLen="1" Index="#x70d0" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 15__Output" BitLen="1" Index="#x70e0" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 16__Output" BitLen="1" Index="#x70f0" Sub="#x01">
<Type>BIT</Type>
</Entry>
</Pdo>
<CoeProfile ProfileNo="18355081"/>
<CoeProfile ProfileNo="18355081"/>
<CoeProfile ProfileNo="18355081"/>
<CoeProfile ProfileNo="18355081"/>
<CoeProfile ProfileNo="18355081"/>
<CoeProfile ProfileNo="18355081"/>
<CoeProfile ProfileNo="18355081"/>
<CoeProfile ProfileNo="18355081"/>
<CoeProfile ProfileNo="18355081"/>
<CoeProfile ProfileNo="18355081"/>
<CoeProfile ProfileNo="18355081"/>
<CoeProfile ProfileNo="18355081"/>
<CoeProfile ProfileNo="18355081"/>
<CoeProfile ProfileNo="18355081"/>
<CoeProfile ProfileNo="18355081"/>
<CoeProfile ProfileNo="18355081"/>
</EtherCAT>
</Box>
</TcSmItem>
@@ -1,94 +0,0 @@
<?xml version="1.0"?>
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4024.11" ClassName="CFlbTermDef" SubType="9099">
<DataTypes>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000009}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..8] OF BIT</Name>
<BitSize>9</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
<LBound>0</LBound>
<Elements>9</Elements>
</ArrayInfo>
</DataType>
</DataTypes>
<ImageDatas>
<ImageData Id="1000">424dd6020000000000003600000028000000100000000e0000000100180000000000a0020000c40e0000c40e00000000000000000000000000ff00ffff00ffff00ff000000ff00ff808080808080808080808080808080ff00ffff00ffff00ffff00ffff00ff000000ff00ffff00ffff00ff000000ff00ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ff000000ff00ffff00ffff00ff000000ff00ffc0c0c000ffffc0c0c000ffff808080ff00ffff00ffff00ffff00ffff00ff000000ff00ff000000ff00ff000000ff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff000000000000ff00ff000000000000ff00ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ff000000ff00ffff00ffff00ff000000ff00ffc0c0c0ff0000c0c0c0ff0000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c00000ffc0c0c00000ff808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c0008000c0c0c0008000808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff</ImageData>
</ImageDatas>
<Box Id="4" BoxType="9099" BoxFlags="#x00000020">
<Name>__FILENAME__</Name>
<ImageId>1000</ImageId>
<EtherCAT SlaveType="2" PdiType="#x0405" MboxDataLinkLayer="true" StateMBoxPolling="true" CycleMBoxPollingTime="0" CoeType="7" FoeType="1" VendorId="#x00000002" ProductCode="#x138a3052" RevisionNo="#x00140000" InfoDataAddr="true" TimeoutMailbox2="2000" CheckRevisionNoType="3" PortPhys="51" MaxSlotCount="256" MaxSlotGroupCount="1" SlotPdoIncrement="1" SlotIndexIncrement="16" Type="EL5002 2Ch. SSI Encoder" Desc="EL5002">
<SyncMan>001080002600010001000000800080008000001026010000</SyncMan>
<SyncMan>801080002200010002000000800080008000801022010000</SyncMan>
<SyncMan>001100000400000003000000000000000000001104000000</SyncMan>
<SyncMan>80110c002000010004000000000000000c00801120010000</SyncMan>
<Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu>
<Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu>
<BootStrapData>0010f400f410f400</BootStrapData>
<DcMode>53796e6368726f6e00000000000000004672656552756e2f534d2d53796e6368726f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</DcMode>
<DcMode>4443000000000000000000000000000044432d53796e6368726f6e0000000000000000000000000000000000000000000000000000000000983a0000000000070100000000000000000000000000000000000000000000000000000000000000</DcMode>
<DcMode>4443494e00000000000000000000000044432d53796e6368726f6e2028696e70757420626173656429000000000000000000000000000000983a0000000000070100000000000000000001000000000000000000000000000000000000000000</DcMode>
<MBoxUserCmdData>02000300090000000000000000000000000000000000000000000000000000002082f001010000000000</MBoxUserCmdData>
<Pdo Name="SSI Inputs Channel 1" Index="#x1a00" Flags="#x0010" SyncMan="3">
<Entry Name="Status__Data error" BitLen="1" Index="#x6000" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Frame error" BitLen="1" Index="#x6000" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Power failure" BitLen="1" Index="#x6000" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Data mismatch" BitLen="1" Index="#x6000" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="9">
<Type GUID="{18071995-0000-0000-0000-002000000009}">ARRAY [0..8] OF BIT</Type>
</Entry>
<Entry Name="Status__Sync error" BitLen="1" Index="#x6000" Sub="#x0e">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__TxPDO State" BitLen="1" Index="#x6000" Sub="#x0f">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__TxPDO Toggle" BitLen="1" Index="#x6000" Sub="#x10">
<Type>BIT</Type>
</Entry>
<Entry Name="Counter value" BitLen="32" Index="#x6000" Sub="#x11">
<Type>UDINT</Type>
</Entry>
</Pdo>
<Pdo Name="SSI Inputs Channel 2" Index="#x1a01" Flags="#x0010" SyncMan="3">
<Entry Name="Status__Data error" BitLen="1" Index="#x6010" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Frame error" BitLen="1" Index="#x6010" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Power failure" BitLen="1" Index="#x6010" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Data mismatch" BitLen="1" Index="#x6010" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="9">
<Type GUID="{18071995-0000-0000-0000-002000000009}">ARRAY [0..8] OF BIT</Type>
</Entry>
<Entry Name="Status__Sync error" BitLen="1" Index="#x6010" Sub="#x0e">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__TxPDO State" BitLen="1" Index="#x6010" Sub="#x0f">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__TxPDO Toggle" BitLen="1" Index="#x6010" Sub="#x10">
<Type>BIT</Type>
</Entry>
<Entry Name="Counter value" BitLen="32" Index="#x6010" Sub="#x11">
<Type>UDINT</Type>
</Entry>
</Pdo>
<CoeProfile ProfileNo="32838537"/>
<CoeProfile ProfileNo="32838537"/>
</EtherCAT>
</Box>
</TcSmItem>
@@ -1,102 +0,0 @@
<?xml version="1.0"?>
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4024.11" ClassName="CFlbTermDef" SubType="9099">
<ImageDatas>
<ImageData Id="1000">424dd6020000000000003600000028000000100000000e0000000100180000000000a0020000120b0000120b00000000000000000000ff00ffff00ffff00ffff00ffff00ffff00ff808080808080808080808080808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c000ffffc0c0c000ffff808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0ff0000c0c0c0ff0000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff0000ff0000ff0000ff0000ff0000ff0000ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ff0000ff0000ff0000ff0000ff0000ff0000ffc0c0c00000ffc0c0c00000ff808080ff00ffff00ffff00ffff00ffff00ff0000ff0000ff0000ff0000ff0000ff0000ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff0000ff0000ff0000ff0000ff0000ff0000ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ff0000ff0000ff0000ff0000ff0000ff0000ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff0000ff0000ff0000ff0000ff0000ff0000ffc0c0c0008000c0c0c0008000808080ff00ffff00ffff00ffff00ffff00ff0000ff0000ff0000ff0000ff0000ff0000ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff</ImageData>
</ImageDatas>
<Box Id="5" BoxType="9099" BoxFlags="#x00000020">
<Name>__FILENAME__</Name>
<ImageId>1000</ImageId>
<EtherCAT SlaveType="2" PdiType="#x0005" MboxDataLinkLayer="true" StateMBoxPolling="true" CycleMBoxPollingTime="0" CoeType="7" FoeType="1" VendorId="#x00000002" ProductCode="#x07de3052" RevisionNo="#x00110000" InfoDataAddr="true" TimeoutMailbox2="2000" CheckRevisionNoType="3" PortPhys="51" MaxSlotCount="256" MaxSlotGroupCount="1" SlotPdoIncrement="1" SlotIndexIncrement="16" Type="EL2014 4Ch. Dig. Output 24V, 0,5A, Diagnostic" Desc="EL2014">
<SyncMan>001080002600010001000000800080008000001026010000</SyncMan>
<SyncMan>801080002200010002000000800080008000801022010000</SyncMan>
<SyncMan>001101002400010003000000000000000100001124010000</SyncMan>
<SyncMan>801103002000010004000000000000000300801120010000</SyncMan>
<Fmmu>0000000000000000001100020100000001000000000000000000000000000000</Fmmu>
<Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu>
<Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu>
<BootStrapData>0010f400f410f400</BootStrapData>
<Pdo Name="DIG Diag Inputs" Index="#x1a00" Flags="#x0010" SyncMan="3">
<Entry Name="Channel 1__Overtemperature" BitLen="1" Index="#x6001" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 1__Open Load" BitLen="1" Index="#x6001" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 1__Overcurrent" BitLen="1" Index="#x6001" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 1__Short Circuit to 24V" BitLen="1" Index="#x6001" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 2__Overtemperature" BitLen="1" Index="#x6011" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 2__Open Load" BitLen="1" Index="#x6011" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 2__Overcurrent" BitLen="1" Index="#x6011" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 2__Short Circuit to 24V" BitLen="1" Index="#x6011" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 3__Overtemperature" BitLen="1" Index="#x6021" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 3__Open Load" BitLen="1" Index="#x6021" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 3__Overcurrent" BitLen="1" Index="#x6021" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 3__Short Circuit to 24V" BitLen="1" Index="#x6021" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 4__Overtemperature" BitLen="1" Index="#x6031" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 4__Open Load" BitLen="1" Index="#x6031" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 4__Overcurrent" BitLen="1" Index="#x6031" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 4__Short Circuit to 24V" BitLen="1" Index="#x6031" Sub="#x04">
<Type>BIT</Type>
</Entry>
</Pdo>
<Pdo Name="DIG Inputs Device" Index="#x1a02" Flags="#x0010" SyncMan="3">
<Entry Name="Common Fault" BitLen="1" Index="#xf600" Sub="#x11">
<Type>BIT</Type>
</Entry>
<Entry Name="Overtemperature Device" BitLen="1" Index="#xf600" Sub="#x12">
<Type>BIT</Type>
</Entry>
<Entry Name="Undervoltage" BitLen="1" Index="#xf600" Sub="#x13">
<Type>BIT</Type>
</Entry>
<Entry Name="Missing Voltage" BitLen="1" Index="#xf600" Sub="#x14">
<Type>BIT</Type>
</Entry>
</Pdo>
<Pdo Name="DIG Outputs" Index="#x1600" InOut="1" Flags="#x0010" SyncMan="2">
<Entry Name="Channel 1__Output" BitLen="1" Index="#x7000" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 2__Output" BitLen="1" Index="#x7010" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 3__Output" BitLen="1" Index="#x7020" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Channel 4__Output" BitLen="1" Index="#x7030" Sub="#x01">
<Type>BIT</Type>
</Entry>
</Pdo>
<CoeProfile ProfileNo="18355081"/>
<CoeProfile ProfileNo="18355081"/>
<CoeProfile ProfileNo="18355081"/>
<CoeProfile ProfileNo="18355081"/>
</EtherCAT>
</Box>
</TcSmItem>
@@ -1,486 +0,0 @@
<?xml version="1.0"?>
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4024.11" ClassName="CFlbTermDef" SubType="9099">
<DataTypes>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000001}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..0] OF BIT</Name>
<BitSize>1</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
<LBound>0</LBound>
<Elements>1</Elements>
</ArrayInfo>
</DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000003}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..2] OF BIT</Name>
<BitSize>3</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
<LBound>0</LBound>
<Elements>3</Elements>
</ArrayInfo>
</DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000004}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..3] OF BIT</Name>
<BitSize>4</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
<LBound>0</LBound>
<Elements>4</Elements>
</ArrayInfo>
</DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000008}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..0] OF BYTE</Name>
<BitSize>8</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000001}">BYTE</BaseType>
<ArrayInfo>
<LBound>0</LBound>
<Elements>1</Elements>
</ArrayInfo>
</DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000005}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..4] OF BIT</Name>
<BitSize>5</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
<LBound>0</LBound>
<Elements>5</Elements>
</ArrayInfo>
</DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000006}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..5] OF BIT</Name>
<BitSize>6</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
<LBound>0</LBound>
<Elements>6</Elements>
</ArrayInfo>
</DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000002}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..1] OF BIT</Name>
<BitSize>2</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
<LBound>0</LBound>
<Elements>2</Elements>
</ArrayInfo>
</DataType>
</DataTypes>
<ImageDatas>
<ImageData Id="1000">424dd6020000000000003600000028000000100000000e0000000100180000000000a0020000c40e0000c40e00000000000000000000ff00ffff00ffff00ffff00ff808080808080808080808080808080808080808080808080808080808080808080808080ff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0000000c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffc0c0c0c0c0c0000000000000000000000000000000000000000000c0c0c0c0c0c0808080007fff007fff007fff007fffc0c0c0c0c0c00000000000000000000000000000000000000000000000ffc0c0c0808080007fff007fff007fff007fffc0c0c0c0c0c0000000000000000000000000000000000000000000c0c0c0c0c0c0808080007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0808080007fff007fff007fff007fffc0c0c0c0c0c0000000000000000000000000c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080</ImageData>
</ImageDatas>
<Box Id="6" BoxType="9099" BoxFlags="#x00000020">
<Name>__FILENAME__</Name>
<ImageId>1000</ImageId>
<EtherCAT SlaveType="2" PdiType="#x0405" MboxDataLinkLayer="true" StateMBoxPolling="true" CycleMBoxPollingTime="0" CoeType="39" FoeType="1" VendorId="#x00000002" ProductCode="#x1b813052" RevisionNo="#x00100034" InfoDataAddr="true" InfoDataSoeDS401="true" TimeoutMailbox2="2000" CheckRevisionNoType="3" PortPhys="51" MaxSlotCount="256" MaxSlotGroupCount="1" SlotPdoIncrement="1" SlotIndexIncrement="16" Type="EL7041-0052 1Ch. Stepper motor output stage (50V, 5A)" Desc="EL7041-0052">
<SyncMan>001080002600010001000000400080008000001026010000</SyncMan>
<SyncMan>801080002200010002000000400080008000801022010000</SyncMan>
<SyncMan>00110a002400010003000000000000000800001124010000</SyncMan>
<SyncMan>80110c002000010004000000000000000800801120010000</SyncMan>
<Fmmu>0000000000000000001100020100000001000000000000000000000000000000</Fmmu>
<Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu>
<Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu>
<BootStrapData>0010f400f410f400</BootStrapData>
<DcMode>53796e6368726f6e00000000000000004672656552756e2f534d2d53796e6368726f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</DcMode>
<DcMode>4443000000000000000000000000000044432d53796e6368726f6e000000000000000000000000000000000000000000000000000000000000000000000000030100000000000000000000000000000000000000000000000000000000000000</DcMode>
<MBoxUserCmdData>004003000c0000000000000000000000000000000000000000000000000000002081f001040000003400100000</MBoxUserCmdData>
<MBoxUserCmdData>004003000a00000000000000000000000000000000000000000000000000000020f3100502000000010000</MBoxUserCmdData>
<MBoxUserCmdData>020003000a0000000f00000000000000000000000000000000000000000000002010800102000000dc054d6178696d616c2063757272656e7400</MBoxUserCmdData>
<MBoxUserCmdData>020003000a0000000f00000000000000000000000000000000000000000000002010800202000000f401526564756365642063757272656e7400</MBoxUserCmdData>
<MBoxUserCmdData>020003000a0000000f00000000000000000000000000000000000000000000002010800302000000c05d4e6f6d696e616c20766f6c7461676500</MBoxUserCmdData>
<MBoxUserCmdData>02000300090000000b000000000000000000000000000000000000000000000020128005010000000153706565642072616e676500</MBoxUserCmdData>
<Pdo Name="ENC Status compact" Index="#x1a00" Flags="#x0010">
<ExcludePdo>#x1a01</ExcludePdo>
<Entry Name="Status__" BitLen="1">
<Type GUID="{18071995-0000-0000-0000-002000000001}">ARRAY [0..0] OF BIT</Type>
</Entry>
<Entry Name="Status__Latch extern valid" BitLen="1" Index="#x6000" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Set counter done" BitLen="1" Index="#x6000" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Counter underflow" BitLen="1" Index="#x6000" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Counter overflow" BitLen="1" Index="#x6000" Sub="#x05">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="3">
<Type GUID="{18071995-0000-0000-0000-002000000003}">ARRAY [0..2] OF BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="4">
<Type GUID="{18071995-0000-0000-0000-002000000004}">ARRAY [0..3] OF BIT</Type>
</Entry>
<Entry Name="Status__Status of extern latch" BitLen="1" Index="#x6000" Sub="#x0d">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Sync error" BitLen="1" Index="#x6000" Sub="#x0e">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="1">
<Type GUID="{18071995-0000-0000-0000-002000000001}">ARRAY [0..0] OF BIT</Type>
</Entry>
<Entry Name="Status__TxPDO Toggle" BitLen="1" Index="#x6000" Sub="#x10">
<Type>BIT</Type>
</Entry>
<Entry Name="Counter value" BitLen="16" Index="#x6000" Sub="#x11">
<Type>UINT</Type>
</Entry>
<Entry Name="Latch value" BitLen="16" Index="#x6000" Sub="#x12">
<Type>UINT</Type>
</Entry>
</Pdo>
<Pdo Name="ENC Status" Index="#x1a01" Flags="#x0010" SyncMan="3">
<ExcludePdo>#x1a00</ExcludePdo>
<Entry Name="Status__" BitLen="1">
<Type GUID="{18071995-0000-0000-0000-002000000001}">ARRAY [0..0] OF BIT</Type>
</Entry>
<Entry Name="Status__Latch extern valid" BitLen="1" Index="#x6000" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Set counter done" BitLen="1" Index="#x6000" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Counter underflow" BitLen="1" Index="#x6000" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Counter overflow" BitLen="1" Index="#x6000" Sub="#x05">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="3">
<Type GUID="{18071995-0000-0000-0000-002000000003}">ARRAY [0..2] OF BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="4">
<Type GUID="{18071995-0000-0000-0000-002000000004}">ARRAY [0..3] OF BIT</Type>
</Entry>
<Entry Name="Status__Status of extern latch" BitLen="1" Index="#x6000" Sub="#x0d">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Sync error" BitLen="1" Index="#x6000" Sub="#x0e">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="1">
<Type GUID="{18071995-0000-0000-0000-002000000001}">ARRAY [0..0] OF BIT</Type>
</Entry>
<Entry Name="Status__TxPDO Toggle" BitLen="1" Index="#x6000" Sub="#x10">
<Type>BIT</Type>
</Entry>
<Entry Name="Counter value" BitLen="32" Index="#x6000" Sub="#x11">
<Type>UDINT</Type>
</Entry>
<Entry Name="Latch value" BitLen="32" Index="#x6000" Sub="#x12">
<Type>UDINT</Type>
</Entry>
</Pdo>
<Pdo Name="ENC Timest. compact" Index="#x1a02" Flags="#x0010">
<Entry Name="Timestamp" BitLen="32" Index="#x6000" Sub="#x16">
<Type>UDINT</Type>
</Entry>
</Pdo>
<Pdo Name="STM Status" Index="#x1a03" Flags="#x0010" SyncMan="3">
<Entry Name="Status__Ready to enable" BitLen="1" Index="#x6010" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Ready" BitLen="1" Index="#x6010" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Warning" BitLen="1" Index="#x6010" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Error" BitLen="1" Index="#x6010" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Moving positive" BitLen="1" Index="#x6010" Sub="#x05">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Moving negative" BitLen="1" Index="#x6010" Sub="#x06">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Torque reduced" BitLen="1" Index="#x6010" Sub="#x07">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="1">
<Type GUID="{18071995-0000-0000-0000-002000000001}">ARRAY [0..0] OF BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="3">
<Type GUID="{18071995-0000-0000-0000-002000000003}">ARRAY [0..2] OF BIT</Type>
</Entry>
<Entry Name="Status__Digital input 1" BitLen="1" Index="#x6010" Sub="#x0c">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Digital input 2" BitLen="1" Index="#x6010" Sub="#x0d">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Sync error" BitLen="1" Index="#x6010" Sub="#x0e">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="1">
<Type GUID="{18071995-0000-0000-0000-002000000001}">ARRAY [0..0] OF BIT</Type>
</Entry>
<Entry Name="Status__TxPDO Toggle" BitLen="1" Index="#x6010" Sub="#x10">
<Type>BIT</Type>
</Entry>
</Pdo>
<Pdo Name="STM Synchron info data" Index="#x1a04" Flags="#x0010">
<Entry Name="Info data 1" BitLen="16" Index="#x6010" Sub="#x11">
<Type>UINT</Type>
</Entry>
<Entry Name="Info data 2" BitLen="16" Index="#x6010" Sub="#x12">
<Type>UINT</Type>
</Entry>
</Pdo>
<Pdo Name="POS Status compact" Index="#x1a05" Flags="#x0010">
<ExcludePdo>#x1a06</ExcludePdo>
<Entry Name="Status__Busy" BitLen="1" Index="#x6020" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__In-Target" BitLen="1" Index="#x6020" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Warning" BitLen="1" Index="#x6020" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Error" BitLen="1" Index="#x6020" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Calibrated" BitLen="1" Index="#x6020" Sub="#x05">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Accelerate" BitLen="1" Index="#x6020" Sub="#x06">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Decelerate" BitLen="1" Index="#x6020" Sub="#x07">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Ready to execute" BitLen="1" Index="#x6020" Sub="#x08">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="8">
<Type GUID="{18071995-0000-0000-0000-002000000008}">ARRAY [0..0] OF BYTE</Type>
</Entry>
</Pdo>
<Pdo Name="POS Status" Index="#x1a06" Flags="#x0010">
<ExcludePdo>#x1a05</ExcludePdo>
<Entry Name="Status__Busy" BitLen="1" Index="#x6020" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__In-Target" BitLen="1" Index="#x6020" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Warning" BitLen="1" Index="#x6020" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Error" BitLen="1" Index="#x6020" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Calibrated" BitLen="1" Index="#x6020" Sub="#x05">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Accelerate" BitLen="1" Index="#x6020" Sub="#x06">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Decelerate" BitLen="1" Index="#x6020" Sub="#x07">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Ready to execute" BitLen="1" Index="#x6020" Sub="#x08">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="8">
<Type GUID="{18071995-0000-0000-0000-002000000008}">ARRAY [0..0] OF BYTE</Type>
</Entry>
<Entry Name="Actual position" BitLen="32" Index="#x6020" Sub="#x11">
<Type>UDINT</Type>
</Entry>
<Entry Name="Actual velocity" BitLen="16" Index="#x6020" Sub="#x21">
<Type>INT</Type>
</Entry>
<Entry Name="Actual drive time" BitLen="32" Index="#x6020" Sub="#x22">
<Type>UDINT</Type>
</Entry>
</Pdo>
<Pdo Name="STM Internal position" Index="#x1a07" Flags="#x0010">
<Entry Name="Internal position" BitLen="32" Index="#x6010" Sub="#x14">
<Type>UDINT</Type>
</Entry>
</Pdo>
<Pdo Name="STM External position" Index="#x1a08" Flags="#x0010">
<Entry Name="External position" BitLen="32" Index="#x6010" Sub="#x15">
<Type>UDINT</Type>
</Entry>
</Pdo>
<Pdo Name="POS Actual position lag" Index="#x1a09" Flags="#x0010">
<Entry Name="Actual position lag" BitLen="32" Index="#x6020" Sub="#x23">
<Type>DINT</Type>
</Entry>
</Pdo>
<Pdo Name="ENC Control compact" Index="#x1600" InOut="1" Flags="#x0010">
<ExcludePdo>#x1601</ExcludePdo>
<Entry Name="Control__" BitLen="1">
<Type GUID="{18071995-0000-0000-0000-002000000001}">ARRAY [0..0] OF BIT</Type>
</Entry>
<Entry Name="Control__Enable latch extern on positive edge" BitLen="1" Index="#x7000" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__Set counter" BitLen="1" Index="#x7000" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__Enable latch extern on negative edge" BitLen="1" Index="#x7000" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="4">
<Type GUID="{18071995-0000-0000-0000-002000000004}">ARRAY [0..3] OF BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="8">
<Type GUID="{18071995-0000-0000-0000-002000000008}">ARRAY [0..0] OF BYTE</Type>
</Entry>
<Entry Name="Set counter value" BitLen="16" Index="#x7000" Sub="#x11">
<Type>UINT</Type>
</Entry>
</Pdo>
<Pdo Name="ENC Control" Index="#x1601" InOut="1" Flags="#x0010" SyncMan="2">
<ExcludePdo>#x1600</ExcludePdo>
<Entry Name="Control__" BitLen="1">
<Type GUID="{18071995-0000-0000-0000-002000000001}">ARRAY [0..0] OF BIT</Type>
</Entry>
<Entry Name="Control__Enable latch extern on positive edge" BitLen="1" Index="#x7000" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__Set counter" BitLen="1" Index="#x7000" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__Enable latch extern on negative edge" BitLen="1" Index="#x7000" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="4">
<Type GUID="{18071995-0000-0000-0000-002000000004}">ARRAY [0..3] OF BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="8">
<Type GUID="{18071995-0000-0000-0000-002000000008}">ARRAY [0..0] OF BYTE</Type>
</Entry>
<Entry Name="Set counter value" BitLen="32" Index="#x7000" Sub="#x11">
<Type>UDINT</Type>
</Entry>
</Pdo>
<Pdo Name="STM Control" Index="#x1602" InOut="1" Flags="#x0010" SyncMan="2">
<Entry Name="Control__Enable" BitLen="1" Index="#x7010" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__Reset" BitLen="1" Index="#x7010" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__Reduce torque" BitLen="1" Index="#x7010" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="5">
<Type GUID="{18071995-0000-0000-0000-002000000005}">ARRAY [0..4] OF BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="8">
<Type GUID="{18071995-0000-0000-0000-002000000008}">ARRAY [0..0] OF BYTE</Type>
</Entry>
</Pdo>
<Pdo Name="STM Position" Index="#x1603" InOut="1" Flags="#x0010">
<ExcludePdo>#x1604</ExcludePdo>
<ExcludePdo>#x1605</ExcludePdo>
<ExcludePdo>#x1606</ExcludePdo>
<Entry Name="Position" BitLen="32" Index="#x7010" Sub="#x11">
<Type>UDINT</Type>
</Entry>
</Pdo>
<Pdo Name="STM Velocity" Index="#x1604" InOut="1" Flags="#x0010" SyncMan="2">
<ExcludePdo>#x1603</ExcludePdo>
<ExcludePdo>#x1605</ExcludePdo>
<ExcludePdo>#x1606</ExcludePdo>
<Entry Name="Velocity" BitLen="16" Index="#x7010" Sub="#x21">
<Type>INT</Type>
</Entry>
</Pdo>
<Pdo Name="POS Control compact" Index="#x1605" InOut="1" Flags="#x0010">
<ExcludePdo>#x1603</ExcludePdo>
<ExcludePdo>#x1604</ExcludePdo>
<ExcludePdo>#x1606</ExcludePdo>
<Entry Name="Control__Execute" BitLen="1" Index="#x7020" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__Emergency stop" BitLen="1" Index="#x7020" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="6">
<Type GUID="{18071995-0000-0000-0000-002000000006}">ARRAY [0..5] OF BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="8">
<Type GUID="{18071995-0000-0000-0000-002000000008}">ARRAY [0..0] OF BYTE</Type>
</Entry>
<Entry Name="Target position" BitLen="32" Index="#x7020" Sub="#x11">
<Type>UDINT</Type>
</Entry>
</Pdo>
<Pdo Name="POS Control" Index="#x1606" InOut="1" Flags="#x0010">
<ExcludePdo>#x1603</ExcludePdo>
<ExcludePdo>#x1604</ExcludePdo>
<ExcludePdo>#x1605</ExcludePdo>
<Entry Name="Control__Execute" BitLen="1" Index="#x7020" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__Emergency stop" BitLen="1" Index="#x7020" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="6">
<Type GUID="{18071995-0000-0000-0000-002000000006}">ARRAY [0..5] OF BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="8">
<Type GUID="{18071995-0000-0000-0000-002000000008}">ARRAY [0..0] OF BYTE</Type>
</Entry>
<Entry Name="Target position" BitLen="32" Index="#x7020" Sub="#x11">
<Type>UDINT</Type>
</Entry>
<Entry Name="Velocity" BitLen="16" Index="#x7020" Sub="#x21">
<Type>INT</Type>
</Entry>
<Entry Name="Start type" BitLen="16" Index="#x7020" Sub="#x22">
<Type>UINT</Type>
</Entry>
<Entry Name="Acceleration" BitLen="16" Index="#x7020" Sub="#x23">
<Type>UINT</Type>
</Entry>
<Entry Name="Deceleration" BitLen="16" Index="#x7020" Sub="#x24">
<Type>UINT</Type>
</Entry>
</Pdo>
<Pdo Name="POS Control 2" Index="#x1607" InOut="1" Flags="#x0010">
<ExcludePdo>#x1603</ExcludePdo>
<ExcludePdo>#x1604</ExcludePdo>
<ExcludePdo>#x1605</ExcludePdo>
<Entry Name="Control__" BitLen="2">
<Type GUID="{18071995-0000-0000-0000-002000000002}">ARRAY [0..1] OF BIT</Type>
</Entry>
<Entry Name="Control__Enable auto start" BitLen="1" Index="#x7021" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="5">
<Type GUID="{18071995-0000-0000-0000-002000000005}">ARRAY [0..4] OF BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="8">
<Type GUID="{18071995-0000-0000-0000-002000000008}">ARRAY [0..0] OF BYTE</Type>
</Entry>
<Entry Name="Target position" BitLen="32" Index="#x7021" Sub="#x11">
<Type>UDINT</Type>
</Entry>
<Entry Name="Velocity" BitLen="16" Index="#x7021" Sub="#x21">
<Type>INT</Type>
</Entry>
<Entry Name="Start type" BitLen="16" Index="#x7021" Sub="#x22">
<Type>UINT</Type>
</Entry>
<Entry Name="Acceleration" BitLen="16" Index="#x7021" Sub="#x23">
<Type>UINT</Type>
</Entry>
<Entry Name="Deceleration" BitLen="16" Index="#x7021" Sub="#x24">
<Type>UINT</Type>
</Entry>
</Pdo>
<CoeProfile ProfileNo="33493897" DisplayName="Stepper interface"/>
<CoeProfile ProfileNo="46076809" DisplayName="Stepper interface"/>
<CoeProfile ProfileNo="46142345" DisplayName="Positioning interfa"/>
</EtherCAT>
</Box>
</TcSmItem>
@@ -1,486 +0,0 @@
<?xml version="1.0"?>
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4024.11" ClassName="CFlbTermDef" SubType="9099">
<DataTypes>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000001}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..0] OF BIT</Name>
<BitSize>1</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
<LBound>0</LBound>
<Elements>1</Elements>
</ArrayInfo>
</DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000003}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..2] OF BIT</Name>
<BitSize>3</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
<LBound>0</LBound>
<Elements>3</Elements>
</ArrayInfo>
</DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000004}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..3] OF BIT</Name>
<BitSize>4</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
<LBound>0</LBound>
<Elements>4</Elements>
</ArrayInfo>
</DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000008}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..0] OF BYTE</Name>
<BitSize>8</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000001}">BYTE</BaseType>
<ArrayInfo>
<LBound>0</LBound>
<Elements>1</Elements>
</ArrayInfo>
</DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000005}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..4] OF BIT</Name>
<BitSize>5</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
<LBound>0</LBound>
<Elements>5</Elements>
</ArrayInfo>
</DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000006}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..5] OF BIT</Name>
<BitSize>6</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
<LBound>0</LBound>
<Elements>6</Elements>
</ArrayInfo>
</DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000002}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..1] OF BIT</Name>
<BitSize>2</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
<LBound>0</LBound>
<Elements>2</Elements>
</ArrayInfo>
</DataType>
</DataTypes>
<ImageDatas>
<ImageData Id="1000">424dd6020000000000003600000028000000100000000e0000000100180000000000a0020000c40e0000c40e00000000000000000000ff00ffff00ffff00ffff00ff808080808080808080808080808080808080808080808080808080808080808080808080ff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0000000c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffc0c0c0c0c0c0000000000000000000000000000000000000000000c0c0c0c0c0c0808080007fff007fff007fff007fffc0c0c0c0c0c00000000000000000000000000000000000000000000000ffc0c0c0808080007fff007fff007fff007fffc0c0c0c0c0c0000000000000000000000000000000000000000000c0c0c0c0c0c0808080007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0000000c0c0c0c0c0c0000000c0c0c0c0c0c0808080007fff007fff007fff007fffc0c0c0c0c0c0000000000000000000000000c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0808080</ImageData>
</ImageDatas>
<Box Id="7" BoxType="9099" BoxFlags="#x00000020">
<Name>__FILENAME__</Name>
<ImageId>1000</ImageId>
<EtherCAT SlaveType="2" PdiType="#x0405" MboxDataLinkLayer="true" StateMBoxPolling="true" CycleMBoxPollingTime="0" CoeType="39" FoeType="1" VendorId="#x00000002" ProductCode="#x1b813052" RevisionNo="#x00100034" InfoDataAddr="true" InfoDataSoeDS401="true" TimeoutMailbox2="2000" CheckRevisionNoType="3" PortPhys="51" MaxSlotCount="256" MaxSlotGroupCount="1" SlotPdoIncrement="1" SlotIndexIncrement="16" Type="EL7041-0052 1Ch. Stepper motor output stage (50V, 5A)" Desc="EL7041-0052">
<SyncMan>001080002600010001000000400080008000001026010000</SyncMan>
<SyncMan>801080002200010002000000400080008000801022010000</SyncMan>
<SyncMan>00110a002400010003000000000000000800001124010000</SyncMan>
<SyncMan>80110c002000010004000000000000000800801120010000</SyncMan>
<Fmmu>0000000000000000001100020100000001000000000000000000000000000000</Fmmu>
<Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu>
<Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu>
<BootStrapData>0010f400f410f400</BootStrapData>
<DcMode>53796e6368726f6e00000000000000004672656552756e2f534d2d53796e6368726f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</DcMode>
<DcMode>4443000000000000000000000000000044432d53796e6368726f6e000000000000000000000000000000000000000000000000000000000000000000000000030100000000000000000000000000000000000000000000000000000000000000</DcMode>
<MBoxUserCmdData>004003000c0000000000000000000000000000000000000000000000000000002081f001040000003400100000</MBoxUserCmdData>
<MBoxUserCmdData>004003000a00000000000000000000000000000000000000000000000000000020f3100502000000010000</MBoxUserCmdData>
<MBoxUserCmdData>020003000a0000000f00000000000000000000000000000000000000000000002010800102000000dc054d6178696d616c2063757272656e7400</MBoxUserCmdData>
<MBoxUserCmdData>020003000a0000000f00000000000000000000000000000000000000000000002010800202000000f401526564756365642063757272656e7400</MBoxUserCmdData>
<MBoxUserCmdData>020003000a0000000f00000000000000000000000000000000000000000000002010800302000000c05d4e6f6d696e616c20766f6c7461676500</MBoxUserCmdData>
<MBoxUserCmdData>02000300090000000b000000000000000000000000000000000000000000000020128005010000000153706565642072616e676500</MBoxUserCmdData>
<Pdo Name="ENC Status compact" Index="#x1a00" Flags="#x0010">
<ExcludePdo>#x1a01</ExcludePdo>
<Entry Name="Status__" BitLen="1">
<Type GUID="{18071995-0000-0000-0000-002000000001}">ARRAY [0..0] OF BIT</Type>
</Entry>
<Entry Name="Status__Latch extern valid" BitLen="1" Index="#x6000" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Set counter done" BitLen="1" Index="#x6000" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Counter underflow" BitLen="1" Index="#x6000" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Counter overflow" BitLen="1" Index="#x6000" Sub="#x05">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="3">
<Type GUID="{18071995-0000-0000-0000-002000000003}">ARRAY [0..2] OF BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="4">
<Type GUID="{18071995-0000-0000-0000-002000000004}">ARRAY [0..3] OF BIT</Type>
</Entry>
<Entry Name="Status__Status of extern latch" BitLen="1" Index="#x6000" Sub="#x0d">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Sync error" BitLen="1" Index="#x6000" Sub="#x0e">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="1">
<Type GUID="{18071995-0000-0000-0000-002000000001}">ARRAY [0..0] OF BIT</Type>
</Entry>
<Entry Name="Status__TxPDO Toggle" BitLen="1" Index="#x6000" Sub="#x10">
<Type>BIT</Type>
</Entry>
<Entry Name="Counter value" BitLen="16" Index="#x6000" Sub="#x11">
<Type>UINT</Type>
</Entry>
<Entry Name="Latch value" BitLen="16" Index="#x6000" Sub="#x12">
<Type>UINT</Type>
</Entry>
</Pdo>
<Pdo Name="ENC Status" Index="#x1a01" Flags="#x0010" SyncMan="3">
<ExcludePdo>#x1a00</ExcludePdo>
<Entry Name="Status__" BitLen="1">
<Type GUID="{18071995-0000-0000-0000-002000000001}">ARRAY [0..0] OF BIT</Type>
</Entry>
<Entry Name="Status__Latch extern valid" BitLen="1" Index="#x6000" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Set counter done" BitLen="1" Index="#x6000" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Counter underflow" BitLen="1" Index="#x6000" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Counter overflow" BitLen="1" Index="#x6000" Sub="#x05">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="3">
<Type GUID="{18071995-0000-0000-0000-002000000003}">ARRAY [0..2] OF BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="4">
<Type GUID="{18071995-0000-0000-0000-002000000004}">ARRAY [0..3] OF BIT</Type>
</Entry>
<Entry Name="Status__Status of extern latch" BitLen="1" Index="#x6000" Sub="#x0d">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Sync error" BitLen="1" Index="#x6000" Sub="#x0e">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="1">
<Type GUID="{18071995-0000-0000-0000-002000000001}">ARRAY [0..0] OF BIT</Type>
</Entry>
<Entry Name="Status__TxPDO Toggle" BitLen="1" Index="#x6000" Sub="#x10">
<Type>BIT</Type>
</Entry>
<Entry Name="Counter value" BitLen="32" Index="#x6000" Sub="#x11">
<Type>UDINT</Type>
</Entry>
<Entry Name="Latch value" BitLen="32" Index="#x6000" Sub="#x12">
<Type>UDINT</Type>
</Entry>
</Pdo>
<Pdo Name="ENC Timest. compact" Index="#x1a02" Flags="#x0010">
<Entry Name="Timestamp" BitLen="32" Index="#x6000" Sub="#x16">
<Type>UDINT</Type>
</Entry>
</Pdo>
<Pdo Name="STM Status" Index="#x1a03" Flags="#x0010" SyncMan="3">
<Entry Name="Status__Ready to enable" BitLen="1" Index="#x6010" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Ready" BitLen="1" Index="#x6010" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Warning" BitLen="1" Index="#x6010" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Error" BitLen="1" Index="#x6010" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Moving positive" BitLen="1" Index="#x6010" Sub="#x05">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Moving negative" BitLen="1" Index="#x6010" Sub="#x06">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Torque reduced" BitLen="1" Index="#x6010" Sub="#x07">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="1">
<Type GUID="{18071995-0000-0000-0000-002000000001}">ARRAY [0..0] OF BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="3">
<Type GUID="{18071995-0000-0000-0000-002000000003}">ARRAY [0..2] OF BIT</Type>
</Entry>
<Entry Name="Status__Digital input 1" BitLen="1" Index="#x6010" Sub="#x0c">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Digital input 2" BitLen="1" Index="#x6010" Sub="#x0d">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Sync error" BitLen="1" Index="#x6010" Sub="#x0e">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="1">
<Type GUID="{18071995-0000-0000-0000-002000000001}">ARRAY [0..0] OF BIT</Type>
</Entry>
<Entry Name="Status__TxPDO Toggle" BitLen="1" Index="#x6010" Sub="#x10">
<Type>BIT</Type>
</Entry>
</Pdo>
<Pdo Name="STM Synchron info data" Index="#x1a04" Flags="#x0010">
<Entry Name="Info data 1" BitLen="16" Index="#x6010" Sub="#x11">
<Type>UINT</Type>
</Entry>
<Entry Name="Info data 2" BitLen="16" Index="#x6010" Sub="#x12">
<Type>UINT</Type>
</Entry>
</Pdo>
<Pdo Name="POS Status compact" Index="#x1a05" Flags="#x0010">
<ExcludePdo>#x1a06</ExcludePdo>
<Entry Name="Status__Busy" BitLen="1" Index="#x6020" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__In-Target" BitLen="1" Index="#x6020" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Warning" BitLen="1" Index="#x6020" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Error" BitLen="1" Index="#x6020" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Calibrated" BitLen="1" Index="#x6020" Sub="#x05">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Accelerate" BitLen="1" Index="#x6020" Sub="#x06">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Decelerate" BitLen="1" Index="#x6020" Sub="#x07">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Ready to execute" BitLen="1" Index="#x6020" Sub="#x08">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="8">
<Type GUID="{18071995-0000-0000-0000-002000000008}">ARRAY [0..0] OF BYTE</Type>
</Entry>
</Pdo>
<Pdo Name="POS Status" Index="#x1a06" Flags="#x0010">
<ExcludePdo>#x1a05</ExcludePdo>
<Entry Name="Status__Busy" BitLen="1" Index="#x6020" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__In-Target" BitLen="1" Index="#x6020" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Warning" BitLen="1" Index="#x6020" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Error" BitLen="1" Index="#x6020" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Calibrated" BitLen="1" Index="#x6020" Sub="#x05">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Accelerate" BitLen="1" Index="#x6020" Sub="#x06">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Decelerate" BitLen="1" Index="#x6020" Sub="#x07">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__Ready to execute" BitLen="1" Index="#x6020" Sub="#x08">
<Type>BIT</Type>
</Entry>
<Entry Name="Status__" BitLen="8">
<Type GUID="{18071995-0000-0000-0000-002000000008}">ARRAY [0..0] OF BYTE</Type>
</Entry>
<Entry Name="Actual position" BitLen="32" Index="#x6020" Sub="#x11">
<Type>UDINT</Type>
</Entry>
<Entry Name="Actual velocity" BitLen="16" Index="#x6020" Sub="#x21">
<Type>INT</Type>
</Entry>
<Entry Name="Actual drive time" BitLen="32" Index="#x6020" Sub="#x22">
<Type>UDINT</Type>
</Entry>
</Pdo>
<Pdo Name="STM Internal position" Index="#x1a07" Flags="#x0010">
<Entry Name="Internal position" BitLen="32" Index="#x6010" Sub="#x14">
<Type>UDINT</Type>
</Entry>
</Pdo>
<Pdo Name="STM External position" Index="#x1a08" Flags="#x0010">
<Entry Name="External position" BitLen="32" Index="#x6010" Sub="#x15">
<Type>UDINT</Type>
</Entry>
</Pdo>
<Pdo Name="POS Actual position lag" Index="#x1a09" Flags="#x0010">
<Entry Name="Actual position lag" BitLen="32" Index="#x6020" Sub="#x23">
<Type>DINT</Type>
</Entry>
</Pdo>
<Pdo Name="ENC Control compact" Index="#x1600" InOut="1" Flags="#x0010">
<ExcludePdo>#x1601</ExcludePdo>
<Entry Name="Control__" BitLen="1">
<Type GUID="{18071995-0000-0000-0000-002000000001}">ARRAY [0..0] OF BIT</Type>
</Entry>
<Entry Name="Control__Enable latch extern on positive edge" BitLen="1" Index="#x7000" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__Set counter" BitLen="1" Index="#x7000" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__Enable latch extern on negative edge" BitLen="1" Index="#x7000" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="4">
<Type GUID="{18071995-0000-0000-0000-002000000004}">ARRAY [0..3] OF BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="8">
<Type GUID="{18071995-0000-0000-0000-002000000008}">ARRAY [0..0] OF BYTE</Type>
</Entry>
<Entry Name="Set counter value" BitLen="16" Index="#x7000" Sub="#x11">
<Type>UINT</Type>
</Entry>
</Pdo>
<Pdo Name="ENC Control" Index="#x1601" InOut="1" Flags="#x0010" SyncMan="2">
<ExcludePdo>#x1600</ExcludePdo>
<Entry Name="Control__" BitLen="1">
<Type GUID="{18071995-0000-0000-0000-002000000001}">ARRAY [0..0] OF BIT</Type>
</Entry>
<Entry Name="Control__Enable latch extern on positive edge" BitLen="1" Index="#x7000" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__Set counter" BitLen="1" Index="#x7000" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__Enable latch extern on negative edge" BitLen="1" Index="#x7000" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="4">
<Type GUID="{18071995-0000-0000-0000-002000000004}">ARRAY [0..3] OF BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="8">
<Type GUID="{18071995-0000-0000-0000-002000000008}">ARRAY [0..0] OF BYTE</Type>
</Entry>
<Entry Name="Set counter value" BitLen="32" Index="#x7000" Sub="#x11">
<Type>UDINT</Type>
</Entry>
</Pdo>
<Pdo Name="STM Control" Index="#x1602" InOut="1" Flags="#x0010" SyncMan="2">
<Entry Name="Control__Enable" BitLen="1" Index="#x7010" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__Reset" BitLen="1" Index="#x7010" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__Reduce torque" BitLen="1" Index="#x7010" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="5">
<Type GUID="{18071995-0000-0000-0000-002000000005}">ARRAY [0..4] OF BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="8">
<Type GUID="{18071995-0000-0000-0000-002000000008}">ARRAY [0..0] OF BYTE</Type>
</Entry>
</Pdo>
<Pdo Name="STM Position" Index="#x1603" InOut="1" Flags="#x0010">
<ExcludePdo>#x1604</ExcludePdo>
<ExcludePdo>#x1605</ExcludePdo>
<ExcludePdo>#x1606</ExcludePdo>
<Entry Name="Position" BitLen="32" Index="#x7010" Sub="#x11">
<Type>UDINT</Type>
</Entry>
</Pdo>
<Pdo Name="STM Velocity" Index="#x1604" InOut="1" Flags="#x0010" SyncMan="2">
<ExcludePdo>#x1603</ExcludePdo>
<ExcludePdo>#x1605</ExcludePdo>
<ExcludePdo>#x1606</ExcludePdo>
<Entry Name="Velocity" BitLen="16" Index="#x7010" Sub="#x21">
<Type>INT</Type>
</Entry>
</Pdo>
<Pdo Name="POS Control compact" Index="#x1605" InOut="1" Flags="#x0010">
<ExcludePdo>#x1603</ExcludePdo>
<ExcludePdo>#x1604</ExcludePdo>
<ExcludePdo>#x1606</ExcludePdo>
<Entry Name="Control__Execute" BitLen="1" Index="#x7020" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__Emergency stop" BitLen="1" Index="#x7020" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="6">
<Type GUID="{18071995-0000-0000-0000-002000000006}">ARRAY [0..5] OF BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="8">
<Type GUID="{18071995-0000-0000-0000-002000000008}">ARRAY [0..0] OF BYTE</Type>
</Entry>
<Entry Name="Target position" BitLen="32" Index="#x7020" Sub="#x11">
<Type>UDINT</Type>
</Entry>
</Pdo>
<Pdo Name="POS Control" Index="#x1606" InOut="1" Flags="#x0010">
<ExcludePdo>#x1603</ExcludePdo>
<ExcludePdo>#x1604</ExcludePdo>
<ExcludePdo>#x1605</ExcludePdo>
<Entry Name="Control__Execute" BitLen="1" Index="#x7020" Sub="#x01">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__Emergency stop" BitLen="1" Index="#x7020" Sub="#x02">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="6">
<Type GUID="{18071995-0000-0000-0000-002000000006}">ARRAY [0..5] OF BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="8">
<Type GUID="{18071995-0000-0000-0000-002000000008}">ARRAY [0..0] OF BYTE</Type>
</Entry>
<Entry Name="Target position" BitLen="32" Index="#x7020" Sub="#x11">
<Type>UDINT</Type>
</Entry>
<Entry Name="Velocity" BitLen="16" Index="#x7020" Sub="#x21">
<Type>INT</Type>
</Entry>
<Entry Name="Start type" BitLen="16" Index="#x7020" Sub="#x22">
<Type>UINT</Type>
</Entry>
<Entry Name="Acceleration" BitLen="16" Index="#x7020" Sub="#x23">
<Type>UINT</Type>
</Entry>
<Entry Name="Deceleration" BitLen="16" Index="#x7020" Sub="#x24">
<Type>UINT</Type>
</Entry>
</Pdo>
<Pdo Name="POS Control 2" Index="#x1607" InOut="1" Flags="#x0010">
<ExcludePdo>#x1603</ExcludePdo>
<ExcludePdo>#x1604</ExcludePdo>
<ExcludePdo>#x1605</ExcludePdo>
<Entry Name="Control__" BitLen="2">
<Type GUID="{18071995-0000-0000-0000-002000000002}">ARRAY [0..1] OF BIT</Type>
</Entry>
<Entry Name="Control__Enable auto start" BitLen="1" Index="#x7021" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="5">
<Type GUID="{18071995-0000-0000-0000-002000000005}">ARRAY [0..4] OF BIT</Type>
</Entry>
<Entry Name="Control__" BitLen="8">
<Type GUID="{18071995-0000-0000-0000-002000000008}">ARRAY [0..0] OF BYTE</Type>
</Entry>
<Entry Name="Target position" BitLen="32" Index="#x7021" Sub="#x11">
<Type>UDINT</Type>
</Entry>
<Entry Name="Velocity" BitLen="16" Index="#x7021" Sub="#x21">
<Type>INT</Type>
</Entry>
<Entry Name="Start type" BitLen="16" Index="#x7021" Sub="#x22">
<Type>UINT</Type>
</Entry>
<Entry Name="Acceleration" BitLen="16" Index="#x7021" Sub="#x23">
<Type>UINT</Type>
</Entry>
<Entry Name="Deceleration" BitLen="16" Index="#x7021" Sub="#x24">
<Type>UINT</Type>
</Entry>
</Pdo>
<CoeProfile ProfileNo="33493897" DisplayName="Stepper interface"/>
<CoeProfile ProfileNo="46076809" DisplayName="Stepper interface"/>
<CoeProfile ProfileNo="46142345" DisplayName="Positioning interfa"/>
</EtherCAT>
</Box>
</TcSmItem>
@@ -1,11 +0,0 @@
<?xml version="1.0"?>
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4024.11" ClassName="CFlbTermDef" SubType="9099">
<ImageDatas>
<ImageData Id="1000">424dd6020000000000003600000028000000100000000e0000000100180000000000a0020000c40e0000c40e00000000000000000000ff00ffff00ffff00ffff00ffff00ffff00ff808080808080808080808080808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ff00bfffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c080808000bfff00bfff00bfff00bfff00bfffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ff00bfffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff</ImageData>
</ImageDatas>
<Box Id="8" BoxType="9099">
<Name>__FILENAME__</Name>
<ImageId>1000</ImageId>
<EtherCAT SlaveType="1" PdiType="#x0100" CycleMBoxPollingTime="0" VendorId="#x00000002" ProductCode="#x04562c52" RevisionNo="#x00110000" PortPhys="19" MaxSlotCount="256" MaxSlotGroupCount="1" SlotPdoIncrement="1" SlotIndexIncrement="16" Type="EK1110 EtherCAT extension" Desc="EK1110"/>
</Box>
</TcSmItem>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-6
View File
@@ -16,11 +16,5 @@
<SvbTask Priority="8" CycleTime="100000" AmsPort="511">
<Name>NC-Task 1 SVB</Name>
</SvbTask>
<Axis File="North.xti" Id="1"/>
<Axis File="South.xti" Id="2"/>
<Axis File="VG.xti" Id="3"/>
<Axis File="VC.xti" Id="4"/>
<Axis File="North_Offset.xti" Id="5"/>
<Axis File="South_Offset.xti" Id="6"/>
</NC>
</TcSmItem>
+24 -70
View File
@@ -1070,6 +1070,30 @@ External Setpoint Generation:
</Vars>
<Vars VarGrpType="2" AreaNo="1">
<Name>PlcTask Outputs</Name>
<Var>
<Name>limitsPower.bEnableAxis1Limits</Name>
<Type>BOOL</Type>
</Var>
<Var>
<Name>limitsPower.bEnableAxis2Limits</Name>
<Type>BOOL</Type>
</Var>
<Var>
<Name>limitsPower.bEnableAxis1Enc</Name>
<Type>BOOL</Type>
</Var>
<Var>
<Name>limitsPower.bEnableAxis2Enc</Name>
<Type>BOOL</Type>
</Var>
<Var>
<Name>MAIN.slit1Vertical.GapSizeEncoder</Name>
<Type>UDINT</Type>
</Var>
<Var>
<Name>MAIN.slit1Vertical.GapCentreEncoder</Name>
<Type>UDINT</Type>
</Var>
<Var>
<Name>GVL.astAxes[1].Axis.PlcToNc</Name>
<Type GUID="{63A84524-72E3-41C8-BEAB-4CCE44690A13}" Namespace="MC">PLCTONC_AXIS_REF</Type>
@@ -1094,30 +1118,6 @@ External Setpoint Generation:
<Name>GVL.astAxes[6].Axis.PlcToNc</Name>
<Type GUID="{63A84524-72E3-41C8-BEAB-4CCE44690A13}" Namespace="MC">PLCTONC_AXIS_REF</Type>
</Var>
<Var>
<Name>MAIN.slit1Vertical.GapSizeEncoder</Name>
<Type>UDINT</Type>
</Var>
<Var>
<Name>MAIN.slit1Vertical.GapCentreEncoder</Name>
<Type>UDINT</Type>
</Var>
<Var>
<Name>limitsPower.bEnableAxis1Limits</Name>
<Type>BOOL</Type>
</Var>
<Var>
<Name>limitsPower.bEnableAxis2Limits</Name>
<Type>BOOL</Type>
</Var>
<Var>
<Name>limitsPower.bEnableAxis1Enc</Name>
<Type>BOOL</Type>
</Var>
<Var>
<Name>limitsPower.bEnableAxis2Enc</Name>
<Type>BOOL</Type>
</Var>
</Vars>
<Contexts>
<Context>
@@ -1135,50 +1135,4 @@ External Setpoint Generation:
</TaskPouOids>
</Instance>
</Project>
<Mappings>
<OwnerA Name="tc_project_app Instance">
<OwnerB Name="TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^Term 2 (EL1808)">
<Link VarA="PlcTask Inputs^GVL.astAxes[1].stInputs.bHomeSensor" VarB="Channel 3^Input" Size="1"/>
<Link VarA="PlcTask Inputs^GVL.astAxes[1].stInputs.bLimitBwd" VarB="Channel 2^Input" Size="1"/>
<Link VarA="PlcTask Inputs^GVL.astAxes[1].stInputs.bLimitFwd" VarB="Channel 1^Input" Size="1"/>
<Link VarA="PlcTask Inputs^GVL.astAxes[2].stInputs.bHomeSensor" VarB="Channel 7^Input" Size="1"/>
<Link VarA="PlcTask Inputs^GVL.astAxes[2].stInputs.bLimitBwd" VarB="Channel 5^Input" Size="1"/>
<Link VarA="PlcTask Inputs^GVL.astAxes[2].stInputs.bLimitFwd" VarB="Channel 6^Input" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^Term 3 (EL2819)">
<Link VarA="PlcTask Outputs^limitsPower.bEnableAxis1Limits" VarB="DIG Outputs^Channel 1^Output" Size="1"/>
<Link VarA="PlcTask Outputs^limitsPower.bEnableAxis2Limits" VarB="DIG Outputs^Channel 5^Output" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Term 1 (EK1200)^Term 5 (EL2014)">
<Link VarA="PlcTask Outputs^limitsPower.bEnableAxis1Enc" VarB="DIG Outputs^Channel 1^Output" Size="1"/>
<Link VarA="PlcTask Outputs^limitsPower.bEnableAxis2Enc" VarB="DIG Outputs^Channel 2^Output" Size="1"/>
</OwnerB>
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^North">
<Link VarA="PlcTask Inputs^GVL.astAxes[1].Axis.NcToPlc" VarB="Outputs^ToPlc"/>
<Link VarA="PlcTask Outputs^GVL.astAxes[1].Axis.PlcToNc" VarB="Inputs^FromPlc"/>
</OwnerB>
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^North_Offset">
<Link VarA="PlcTask Inputs^GVL.astAxes[5].Axis.NcToPlc" VarB="Outputs^ToPlc"/>
<Link VarA="PlcTask Outputs^GVL.astAxes[5].Axis.PlcToNc" VarB="Inputs^FromPlc"/>
</OwnerB>
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^South">
<Link VarA="PlcTask Inputs^GVL.astAxes[2].Axis.NcToPlc" VarB="Outputs^ToPlc"/>
<Link VarA="PlcTask Outputs^GVL.astAxes[2].Axis.PlcToNc" VarB="Inputs^FromPlc"/>
</OwnerB>
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^South_Offset">
<Link VarA="PlcTask Inputs^GVL.astAxes[6].Axis.NcToPlc" VarB="Outputs^ToPlc"/>
<Link VarA="PlcTask Outputs^GVL.astAxes[6].Axis.PlcToNc" VarB="Inputs^FromPlc"/>
</OwnerB>
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^VC">
<Link VarA="PlcTask Inputs^GVL.astAxes[4].Axis.NcToPlc" VarB="Outputs^ToPlc"/>
<Link VarA="PlcTask Outputs^GVL.astAxes[4].Axis.PlcToNc" VarB="Inputs^FromPlc"/>
<Link VarA="PlcTask Outputs^MAIN.slit1Vertical.GapCentreEncoder" VarB="Enc^Inputs^In^nDataIn1"/>
</OwnerB>
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^VG">
<Link VarA="PlcTask Inputs^GVL.astAxes[3].Axis.NcToPlc" VarB="Outputs^ToPlc"/>
<Link VarA="PlcTask Outputs^GVL.astAxes[3].Axis.PlcToNc" VarB="Inputs^FromPlc"/>
<Link VarA="PlcTask Outputs^MAIN.slit1Vertical.GapSizeEncoder" VarB="Enc^Inputs^In^nDataIn1"/>
</OwnerB>
</OwnerA>
</Mappings>
</TcSmItem>
+1 -9
View File
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<TcSmProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4024.11">
<Project ProjectGUID="{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}" TargetNetId="5.65.74.200.1.1" Target64Bit="true" ShowHideConfigurations="#x106">
<Project ProjectGUID="{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}" TargetNetId="5.63.196.234.1.1" Target64Bit="true" ShowHideConfigurations="#x106">
<System>
<Settings MaxCpus="2">
<Cpu CpuId="1"/>
@@ -18,13 +18,5 @@
<Plc>
<Project File="tc_project_app.xti"/>
</Plc>
<Io>
<Device File="Device 1 (EtherCAT).xti" Id="1"/>
</Io>
</Project>
<Mappings>
<MappingInfo Identifier="{00000000-0020-0304-1000-040320000403}" Id="#x02030010"/>
<MappingInfo Identifier="{00000000-2041-0850-4020-500831000403}" Id="#x02030020"/>
<MappingInfo Identifier="{05000010-2041-0850-1000-040340205008}" Id="#x02030030" Watchdog="14000000040000000400000004000000"/>
</Mappings>
</TcSmProject>
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.5">
<POU Name="Application_Template" Id="{4bdeebc0-15d8-4790-97d0-e9c4239d121c}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM Application_Template
VAR
//Define all necessary variables for your application
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[//Program any specific code or safety code for an specific application when it involves multiple axes
//Eg. Collision avoidance, interlocks, sequencing, etc.]]></ST>
</Implementation>
<LineIds Name="Application_Template">
<LineId Id="5" Count="0" />
<LineId Id="10" Count="0" />
</LineIds>
</POU>
</TcPlcObject>
@@ -1,485 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.5">
<POU Name="FB_SlitPairV2" Id="{ff4013b1-472a-4f42-a6c8-2711712ac06d}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_SlitPairV2
VAR_INPUT
ID_positiveAxis : UINT; //ID of axis for which positive motion increases gap size
ID_negativeAxis : UINT; //ID of axis for which negative motion increases gap size
ID_gapSizeAxis : UINT; //ID of virtual gap aperture size axis
ID_gapCentreAxis : UINT; //ID of virtual gap centre position axis
Enable : BOOL; //Enable slit pair logic functionality
Reset : BOOL; //Reset from error state
EncoderScaling : LREAL := 10000; //Virtual axis scaling denominator, default of 10000
END_VAR
VAR_OUTPUT
END_VAR
VAR
GapSizeEncoder AT %Q* : UDINT:=0;
GapCentreEncoder AT %Q* : UDINT:=0;
fGapSize : LREAL;
fGapCentre : LREAL;
setpointGenEnable_positiveAxis : MC_ExtSetPointGenEnable;
setpointGenEnable_negativeAxis : MC_ExtSetPointGenEnable;
setpointGenEnable_gapSizeAxis : MC_ExtSetPointGenEnable;
setpointGenEnable_gapCentreAxis : MC_ExtSetPointGenEnable;
setpointGenDisable_positiveAxis : MC_ExtSetPointGenDisable;
setpointGenDisable_negativeAxis : MC_ExtSetPointGenDisable;
setpointGenDisable_gapSizeAxis : MC_ExtSetPointGenDisable;
setpointGenDisable_gapCentreAxis : MC_ExtSetPointGenDisable;
posSetpoint_positiveAxis : LREAL;
posSetpoint_negativeAxis : LREAL;
posSetpoint_gapSizeAxis : LREAL;
posSetpoint_gapCentreAxis : LREAL;
veloSetpoint_positiveAxis : LREAL;
veloSetpoint_negativeAxis : LREAL;
veloSetpoint_gapSizeAxis : LREAL;
veloSetpoint_gapCentreAxis : LREAL;
dir_positiveAxis : DINT;
dir_negativeAxis : DINT;
dir_gapSizeAxis : DINT;
dir_gapCentreAxis : DINT;
iState : E_SlitPairStatesV2 := E_SlitPairStatesV2.INIT;
internalReset : BOOL;
homingReset : BOOL:= FALSE;
//stupid internal MCPOWER blocks because Beckhoff won't let you enable a setpoint generator on a limit....
mcPower_positiveAxis : MC_POWER;
mcPower_negativeAxis : MC_POWER;
mcPower_gapSizeAxis : MC_POWER;
mcPower_gapCentreAxis : MC_POWER;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[(*SETUP INSTRUCTIONS
Virtual axes:
Encoder type set to Universal
Encoder mask set to 0xFFFFFFFF
Encoder scaling set to match FB
Link nDataIn1 of encoder to FB encoders
Position lag monitoring can be left on
Dynamics of virtual axes must be configured considering coupled mechanicals (e.g. don't set velocities your real axes can't achieve)
*)
actVirtualAxisPositions();
//setup virtual axis homing routines
GVL.astAxes[ID_gapSizeAxis].stConfig.eHomeSeq:= E_HomingRoutines.eHomeDirect;
GVL.astAxes[ID_gapCentreAxis].stConfig.eHomeSeq:= E_HomingRoutines.eHomeDirect;
GVL.astAxes[ID_gapSizeAxis].stConfig.fHomePosition:= fGapSize;
GVL.astAxes[ID_gapCentreAxis].stConfig.fHomePosition:= fGapCentre;
//Limit logic
actVirtualAxisLimits();
//Enable Logic - Virtual axes automatically enable when real axes are enabled
actVirtualAxisEnable();
//Call spGenerator FBs
actGeneratorEnableDisable();
//Calculate position setpoints
actCalculateSetpointPositions();
//Calculate velocity setpoints
actCalculateSetpointVelocities();
//Calculate directions
actCalculateSetpointDirections();
//Error state handling - only handle errors that disable motion
IF GVL.astAxes[ID_positiveAxis].Axis.Status.ErrorStop OR GVL.astAxes[ID_negativeAxis].Axis.Status.ErrorStop OR GVL.astAxes[ID_gapSizeAxis].Axis.Status.ErrorStop OR GVL.astAxes[ID_gapCentreAxis].Axis.Status.ErrorStop THEN
iState:= E_SlitPairStatesV2.ERROR_INIT;
END_IF
//Internal Reset linked to any axis reset
internalReset := Reset OR GVL.astAxes[ID_positiveAxis].stControl.bReset OR GVL.astAxes[ID_negativeAxis].stControl.bReset OR GVL.astAxes[ID_gapSizeAxis].stControl.bReset OR GVL.astAxes[ID_gapCentreAxis].stControl.bReset;
//If real axis is homing, change state
IF GVL.astAxes[ID_positiveAxis].Axis.Status.Homing OR GVL.astAxes[ID_negativeAxis].Axis.Status.Homing THEN
iState:= E_SlitPairStatesV2.HOMING_INIT;
END_IF
//State machine
IF Enable THEN
CASE istate OF //HOMING LOOP ISSUE
E_SlitPairStatesV2.INIT:
//If real axes are calibrated, then home the virtual axes, else go Operatioanl
IF GVL.astAxes[ID_positiveAxis].stStatus.bHomed AND GVL.astAxes[ID_negativeAxis].stStatus.bHomed THEN
GVL.astAxes[ID_gapSizeAxis].stControl.eCommand:= E_MotionFunctions.eHome;
GVL.astAxes[ID_gapSizeAxis].stControl.bExecute:= TRUE;
GVL.astAxes[ID_gapcentreAxis].stControl.eCommand:= E_MotionFunctions.eHome;
GVL.astAxes[ID_gapcentreAxis].stControl.bExecute:= TRUE;
iState:=E_SlitPairStatesV2.WAIT_FOR_HOMED;
ELSE
iState:=E_SlitPairStatesV2.OPERATIONAL;
END_IF
E_SlitPairStatesV2.WAIT_FOR_HOMED:
//Wait for virtual axis homing to complete/
IF GVL.astAxes[ID_gapSizeAxis].stStatus.bHomed AND GVL.astAxes[ID_gapCentreAxis].stStatus.bHomed THEN
iState:=E_SlitPairStatesV2.OPERATIONAL;
END_IF
//IF NOT IN HOMING STATE
E_SlitPairStatesV2.OPERATIONAL:
//Detect whether real or virtual axes are moving
IF GVL.astAxes[ID_gapSizeAxis].stStatus.bMoving OR GVL.astAxes[ID_gapCentreAxis].stStatus.bMoving THEN
iState:=E_SlitPairStatesV2.ENABLE_REAL_GENERATORS;
END_IF
IF GVL.astAxes[ID_positiveAxis].stStatus.bMoving OR GVL.astAxes[ID_negativeAxis].stStatus.bMoving THEN
iState:=E_SlitPairStatesV2.ENABLE_VIRTUAL_GENERATORS;
END_IF
E_SlitPairStatesV2.ENABLE_REAL_GENERATORS:
//Hold MC_Power on until generators have enabled
mcPower_positiveAxis(Axis:=GVL.astAxes[ID_positiveAxis].Axis, Enable:=TRUE, Enable_Positive:=TRUE,Enable_Negative:=TRUE);
mcPower_negativeAxis(Axis:=GVL.astAxes[ID_negativeAxis].Axis, Enable:=TRUE, Enable_Positive:=TRUE,Enable_Negative:=TRUE);
setpointGenEnable_positiveAxis.Execute:=TRUE;
setpointGenEnable_negativeAxis.Execute:=TRUE;
iState:=E_SlitPairStatesV2.CHECK_REAL_AXIS_GENERATORS_ENABLED;
E_SlitPairStatesV2.CHECK_REAL_AXIS_GENERATORS_ENABLED:
//Hold MC_Power on until generators have enabled
mcPower_positiveAxis(Axis:=GVL.astAxes[ID_positiveAxis].Axis, Enable:=TRUE, Enable_Positive:=TRUE,Enable_Negative:=TRUE);
mcPower_negativeAxis(Axis:=GVL.astAxes[ID_negativeAxis].Axis, Enable:=TRUE, Enable_Positive:=TRUE,Enable_Negative:=TRUE);
IF setPointGenEnable_positiveAxis.Enabled AND setpointGenEnable_negativeAxis.Enabled THEN
iState:= E_SlitPairStatesV2.WAIT_FOR_VIRTUAL_MOVE_DONE;
END_IF
E_SlitPairStatesV2.WAIT_FOR_VIRTUAL_MOVE_DONE:
IF NOT(GVL.astAxes[ID_gapSizeAxis].stStatus.bMoving OR GVL.astAxes[ID_gapCentreAxis].stStatus.bMoving) THEN
iState:=E_SlitPairStatesV2.DISABLE_REAL_GENERATORS;
END_IF
E_SlitPairStatesV2.DISABLE_REAL_GENERATORS:
setpointGenDisable_positiveAxis.Execute:=TRUE;
setpointGenDisable_negativeAxis.Execute:=TRUE;
iState:=E_SlitPairStatesV2.OPERATIONAL;
E_SlitPairStatesV2.ENABLE_VIRTUAL_GENERATORS:
//Hold MC_Power on until generators have enabled
mcPower_gapSizeAxis(Axis:=GVL.astAxes[ID_gapSizeAxis].Axis, Enable:=TRUE, Enable_Positive:=TRUE,Enable_Negative:=TRUE);
mcPower_gapCentreAxis(Axis:=GVL.astAxes[ID_gapCentreAxis].Axis, Enable:=TRUE, Enable_Positive:=TRUE,Enable_Negative:=TRUE);
setpointGenEnable_gapSizeAxis.Execute :=TRUE;
setpointGenEnable_gapCentreAxis.Execute:=TRUE;
iState:=E_SlitPairStatesV2.CHECK_VIRTUAL_AXIS_GENERATORS_ENABLED;
E_SlitPairStatesV2.CHECK_VIRTUAL_AXIS_GENERATORS_ENABLED:
//Hold MC_Power on until generators have enabled
mcPower_gapSizeAxis(Axis:=GVL.astAxes[ID_gapSizeAxis].Axis, Enable:=TRUE, Enable_Positive:=TRUE,Enable_Negative:=TRUE);
mcPower_gapCentreAxis(Axis:=GVL.astAxes[ID_gapCentreAxis].Axis, Enable:=TRUE, Enable_Positive:=TRUE,Enable_Negative:=TRUE);
IF setPointGenEnable_gapSizeAxis.Enabled AND setpointGenEnable_gapCentreAxis.Enabled THEN
iState:= E_SlitPairStatesV2.WAIT_FOR_REAL_MOVE_DONE;
END_IF
E_SlitPairStatesV2.WAIT_FOR_REAL_MOVE_DONE:
IF NOT(GVL.astAxes[1].stStatus.bMoving OR GVL.astAxes[2].stStatus.bMoving) THEN
iState:=E_SlitPairStatesV2.DISABLE_VIRTUAL_GENERATORS;
END_IF
E_SlitPairStatesV2.DISABLE_VIRTUAL_GENERATORS:
setpointGenDisable_gapSizeAxis.Execute :=TRUE;
setpointGenDisable_gapCentreAxis.Execute:=TRUE;
iState:=E_SlitPairStatesV2.OPERATIONAL;
E_SlitPairStatesV2.ERROR_INIT:
IF homingReset THEN
internalReset:= TRUE;
homingReset:= FALSE;
END_IF
IF internalReset THEN
GVL.astAxes[ID_positiveAxis].stControl.bReset := TRUE;
GVL.astAxes[ID_negativeAxis].stControl.bReset := TRUE;
GVL.astAxes[ID_gapSizeAxis].stControl.bReset := TRUE;
GVL.astAxes[ID_gapCentreAxis].stControl.bReset := TRUE;
iState:= E_SlitPairStatesV2.INIT;
END_IF
E_SlitPairStatesV2.HOMING_INIT:
(*GVL.astAxes[ID_positiveAxis].stControl.eCommand:= E_MotionFunctions.eHome;
GVL.astAxes[ID_positiveAxis].stControl.bExecute:= TRUE;
GVL.astAxes[ID_negativeAxis].stControl.eCommand:= E_MotionFunctions.eHome;
GVL.astAxes[ID_negativeAxis].stControl.bExecute:= TRUE;*)
homingReset:= TRUE;
iState:= E_SlitPairStatesV2.HOMING_WAIT;
E_SlitPairStatesV2.HOMING_CHECK:
IF GVL.astAxes[ID_positiveAxis].Axis.Status.Homing OR GVL.astAxes[ID_negativeAxis].Axis.Status.Homing THEN
iState:= E_SlitPairStatesV2.HOMING_WAIT;
ELSE
iState:= E_SlitPairStatesV2.HOMING_INIT;
END_IF
E_SlitPairStatesV2.HOMING_WAIT:
homingReset:= TRUE;
IF NOT GVL.astAxes[ID_positiveAxis].Axis.Status.Homing AND NOT GVL.astAxes[ID_negativeAxis].Axis.Status.Homing THEN
iState:= E_SlitPairStatesV2.INIT;
END_IF
END_CASE
END_IF
//Feed externalsetpoint generators setpoint values - ignoring acceleration
MC_ExtSetPointGenFeed(Axis:= GVL.astAxes[ID_positiveAxis].Axis, Position:= posSetpoint_positiveAxis, Velocity:= veloSetpoint_positiveAxis, Acceleration:= 0, Direction:= dir_positiveAxis);
MC_ExtSetPointGenFeed(Axis:= GVL.astAxes[ID_negativeAxis].Axis, Position:= posSetpoint_negativeAxis, Velocity:= veloSetpoint_negativeAxis, Acceleration:= 0, Direction:= dir_negativeAxis);
MC_ExtSetPointGenFeed(Axis:= GVL.astAxes[ID_gapSizeAxis].Axis, Position:= posSetpoint_gapSizeAxis, Velocity:= veloSetpoint_gapSizeAxis, Acceleration:= 0, Direction:= dir_gapSizeAxis);
MC_ExtSetPointGenFeed(Axis:= GVL.astAxes[ID_gapCentreAxis].Axis, Position:= posSetpoint_gapCentreAxis, Velocity:= veloSetpoint_gapCentreAxis, Acceleration:= 0, Direction:= dir_gapCentreAxis);
Reset:= FALSE;]]></ST>
</Implementation>
<Action Name="actCalculateSetpointDirections" Id="{7783e346-7fab-40d5-bab7-fe46a8c2f785}">
<Implementation>
<ST><![CDATA[IF veloSetpoint_positiveAxis >0 THEN
dir_positiveAxis := 1; //moving forward
ELSIF veloSetpoint_positiveAxis <0 THEN
dir_positiveAxis := -1; //moving backward
ELSE
dir_positiveAxis := 0; //stationary
END_IF
IF veloSetpoint_negativeAxis >0 THEN
dir_negativeAxis := 1; //moving forward
ELSIF veloSetpoint_negativeAxis <0 THEN
dir_negativeAxis := -1; //moving backward
ELSE
dir_negativeAxis := 0; //stationary
END_IF
IF veloSetpoint_gapSizeAxis >0 THEN
dir_gapSizeAxis := 1; //moving forward
ELSIF veloSetpoint_gapSizeAxis <0 THEN
dir_gapSizeAxis := -1; //moving backward
ELSE
dir_gapSizeAxis := 0; //stationary
END_IF
IF veloSetpoint_gapCentreAxis >0 THEN
dir_gapCentreAxis := 1; //moving forward
ELSIF veloSetpoint_gapCentreAxis <0 THEN
dir_gapCentreAxis := -1; //moving backward
ELSE
dir_gapCentreAxis := 0; //stationary
END_IF]]></ST>
</Implementation>
</Action>
<Action Name="actCalculateSetpointPositions" Id="{08e35b97-914a-4ccc-a3af-6b7cd8e60439}">
<Implementation>
<ST><![CDATA[posSetpoint_positiveAxis := GVL.astAxes[ID_gapCentreAxis].Axis.NcToPlc.SetPos + (GVL.astAxes[ID_gapSizeAxis].Axis.NcToPlc.SetPos/2);
posSetpoint_negativeAxis := GVL.astAxes[ID_gapCentreAxis].Axis.NcToPlc.SetPos - (GVL.astAxes[ID_gapSizeAxis].Axis.NcToPlc.SetPos/2);
posSetpoint_gapSizeAxis := GVL.astAxes[ID_positiveAxis].Axis.NcToPlc.SetPos - GVL.astAxes[ID_negativeAxis].Axis.NcToPlc.SetPos;
posSetpoint_gapCentreAxis := (GVL.astAxes[ID_positiveAxis].Axis.NcToPlc.SetPos + GVL.astAxes[ID_negativeAxis].Axis.NcToPlc.SetPos) / 2;]]></ST>
</Implementation>
</Action>
<Action Name="actCalculateSetpointVelocities" Id="{59813eea-6905-4661-a8f3-10b16a472979}">
<Implementation>
<ST><![CDATA[veloSetpoint_positiveAxis := GVL.astAxes[ID_gapCentreAxis].Axis.NcToPlc.SetVelo +(GVL.astAxes[ID_gapSizeAxis].Axis.NcToPlc.SetVelo/2);
veloSetpoint_negativeAxis := GVL.astAxes[ID_gapCentreAxis].Axis.NcToPlc.SetVelo -(GVL.astAxes[ID_gapSizeAxis].Axis.NcToPlc.SetVelo/2);
veloSetpoint_gapSizeAxis := GVL.astAxes[ID_positiveAxis].Axis.NcToPlc.SetVelo - GVL.astAxes[ID_negativeAxis].Axis.NcToPlc.SetVelo;
veloSetpoint_gapCentreAxis := GVL.astAxes[ID_positiveAxis].Axis.NcToPlc.SetVelo + GVL.astAxes[ID_negativeAxis].Axis.NcToPlc.SetVelo;]]></ST>
</Implementation>
</Action>
<Action Name="actGeneratorEnableDisable" Id="{d59f6d39-50eb-4cb0-8d9d-b62df150c5a5}">
<Implementation>
<ST><![CDATA[setpointGenEnable_positiveAxis(Axis:= GVL.astAxes[ID_positiveAxis].Axis);
setpointGenEnable_positiveAxis.Execute:= FALSE;
setpointGenEnable_negativeAxis(Axis:= GVL.astAxes[ID_negativeAxis].Axis);
setpointGenEnable_negativeAxis.Execute:= FALSE;
setpointGenEnable_gapSizeAxis(Axis:= GVL.astAxes[ID_gapSizeAxis].Axis);
setpointGenEnable_gapSizeAxis.Execute:= FALSE;
setpointGenEnable_gapCentreAxis(Axis:= GVL.astAxes[ID_gapCentreAxis].Axis);
setpointGenEnable_gapCentreAxis.Execute:= FALSE;
setpointGenDisable_positiveAxis(Axis:= GVL.astAxes[ID_positiveAxis].Axis);
setpointGenDisable_positiveAxis.Execute:= FALSE;
setpointGenDisable_negativeAxis(Axis:= GVL.astAxes[ID_negativeAxis].Axis);
setpointGenDisable_negativeAxis.Execute:= FALSE;
setpointGenDisable_gapSizeAxis(Axis:= GVL.astAxes[ID_gapSizeAxis].Axis);
setpointGenDisable_gapSizeAxis.Execute:= FALSE;
setpointGenDisable_gapCentreAxis(Axis:= GVL.astAxes[ID_gapCentreAxis].Axis);
setpointGenDisable_gapCentreAxis.Execute:= FALSE;]]></ST>
</Implementation>
</Action>
<Action Name="actVirtualAxisEnable" Id="{d8729d12-361d-472b-8974-5b566dad7d06}">
<Implementation>
<ST><![CDATA[GVL.astAxes[ID_gapSizeAxis].stControl.bEnable := GVL.astAxes[ID_positiveAxis].stStatus.bEnabled AND GVL.astAxes[ID_negativeAxis].stStatus.bEnabled;
GVL.astAxes[ID_gapCentreAxis].stControl.bEnable := GVL.astAxes[ID_positiveAxis].stStatus.bEnabled AND GVL.astAxes[ID_negativeAxis].stStatus.bEnabled;]]></ST>
</Implementation>
</Action>
<Action Name="actVirtualAxisLimits" Id="{436d835a-8846-47e9-922d-a1df63469a25}">
<Implementation>
<ST><![CDATA[GVL.astAxes[ID_gapSizeAxis].stInputs.bLimitFwd:= GVL.astAxes[ID_positiveAxis].stStatus.bFwEnabled AND GVL.astAxes[ID_negativeAxis].stStatus.bBwEnabled;
GVL.astAxes[ID_gapSizeAxis].stInputs.bLimitBwd:= GVL.astAxes[ID_positiveAxis].stStatus.bBwEnabled AND GVL.astAxes[ID_negativeAxis].stStatus.bFwEnabled;
GVL.astAxes[ID_gapCentreAxis].stInputs.bLimitFwd:= GVL.astAxes[ID_positiveAxis].stStatus.bFwEnabled AND GVL.astAxes[ID_negativeAxis].stStatus.bFwEnabled;
GVL.astAxes[ID_gapCentreAxis].stInputs.bLimitBwd:= GVL.astAxes[ID_positiveAxis].stStatus.bBwEnabled AND GVL.astAxes[ID_negativeAxis].stStatus.bBwEnabled;]]></ST>
</Implementation>
</Action>
<Action Name="actVirtualAxisPositions" Id="{4ef557a2-3171-4a03-98ba-14f2cd3ef5ec}">
<Implementation>
<ST><![CDATA[(*Calculate virtual axis positions and convert to UDINT.
Conversion to UDINT is prohibited if it would exceed UDINT max value of 4,294,967,295.
If this is not done, it can cause overflow when connected to the encoder input and hard-crash the PLC which will only recover with a power cycle.
To preserve decimal position data of the LREAL (i.e. anything <1mm) it is necessary to scale the value before converting to UDINT.
This can be reversed with the correct scaling at the NC encoder level.
*)
fGapSize := GVL.astAxes[ID_positiveAxis].stStatus.fActPosition - GVL.astAxes[ID_negativeAxis].stStatus.fActPosition;
fGapCentre := (GVL.astAxes[ID_positiveAxis].stStatus.fActPosition + GVL.astAxes[ID_negativeAxis].stStatus.fActPosition) / 2;
IF ABS(fGapSize) < 100000 THEN
GapSizeEncoder := LREAL_TO_UDINT(fGapSize*EncoderScaling);
END_IF
IF ABS(fGapCentre) < 100000 THEN
GapCentreEncoder := LREAL_TO_UDINT(fGapCentre*EncoderScaling);
END_IF]]></ST>
</Implementation>
</Action>
<LineIds Name="FB_SlitPairV2">
<LineId Id="231" Count="0" />
<LineId Id="369" Count="2" />
<LineId Id="374" Count="0" />
<LineId Id="372" Count="1" />
<LineId Id="375" Count="0" />
<LineId Id="367" Count="0" />
<LineId Id="366" Count="0" />
<LineId Id="9" Count="0" />
<LineId Id="365" Count="0" />
<LineId Id="364" Count="0" />
<LineId Id="245" Count="1" />
<LineId Id="259" Count="1" />
<LineId Id="59" Count="0" />
<LineId Id="58" Count="0" />
<LineId Id="78" Count="0" />
<LineId Id="60" Count="0" />
<LineId Id="80" Count="0" />
<LineId Id="62" Count="0" />
<LineId Id="92" Count="0" />
<LineId Id="64" Count="0" />
<LineId Id="106" Count="0" />
<LineId Id="66" Count="0" />
<LineId Id="112" Count="0" />
<LineId Id="68" Count="0" />
<LineId Id="118" Count="0" />
<LineId Id="170" Count="4" />
<LineId Id="219" Count="2" />
<LineId Id="387" Count="0" />
<LineId Id="376" Count="0" />
<LineId Id="311" Count="0" />
<LineId Id="310" Count="0" />
<LineId Id="312" Count="1" />
<LineId Id="73" Count="0" />
<LineId Id="72" Count="0" />
<LineId Id="175" Count="0" />
<LineId Id="178" Count="1" />
<LineId Id="377" Count="0" />
<LineId Id="242" Count="1" />
<LineId Id="247" Count="3" />
<LineId Id="257" Count="1" />
<LineId Id="244" Count="0" />
<LineId Id="185" Count="0" />
<LineId Id="251" Count="0" />
<LineId Id="378" Count="0" />
<LineId Id="254" Count="2" />
<LineId Id="380" Count="0" />
<LineId Id="252" Count="0" />
<LineId Id="234" Count="0" />
<LineId Id="379" Count="0" />
<LineId Id="236" Count="4" />
<LineId Id="235" Count="0" />
<LineId Id="241" Count="0" />
<LineId Id="187" Count="0" />
<LineId Id="354" Count="0" />
<LineId Id="340" Count="1" />
<LineId Id="188" Count="2" />
<LineId Id="346" Count="1" />
<LineId Id="350" Count="0" />
<LineId Id="348" Count="1" />
<LineId Id="351" Count="2" />
<LineId Id="191" Count="4" />
<LineId Id="216" Count="0" />
<LineId Id="196" Count="5" />
<LineId Id="355" Count="0" />
<LineId Id="342" Count="1" />
<LineId Id="202" Count="2" />
<LineId Id="356" Count="1" />
<LineId Id="359" Count="1" />
<LineId Id="358" Count="0" />
<LineId Id="362" Count="1" />
<LineId Id="361" Count="0" />
<LineId Id="215" Count="0" />
<LineId Id="205" Count="3" />
<LineId Id="214" Count="0" />
<LineId Id="209" Count="3" />
<LineId Id="222" Count="1" />
<LineId Id="392" Count="2" />
<LineId Id="391" Count="0" />
<LineId Id="224" Count="1" />
<LineId Id="227" Count="3" />
<LineId Id="226" Count="0" />
<LineId Id="213" Count="0" />
<LineId Id="315" Count="0" />
<LineId Id="318" Count="2" />
<LineId Id="316" Count="0" />
<LineId Id="395" Count="0" />
<LineId Id="321" Count="3" />
<LineId Id="326" Count="0" />
<LineId Id="328" Count="1" />
<LineId Id="327" Count="0" />
<LineId Id="330" Count="2" />
<LineId Id="390" Count="0" />
<LineId Id="333" Count="0" />
<LineId Id="325" Count="0" />
<LineId Id="176" Count="1" />
<LineId Id="127" Count="1" />
<LineId Id="126" Count="0" />
<LineId Id="129" Count="2" />
<LineId Id="133" Count="0" />
<LineId Id="384" Count="0" />
<LineId Id="383" Count="0" />
</LineIds>
<LineIds Name="FB_SlitPairV2.actCalculateSetpointDirections">
<LineId Id="2" Count="5" />
<LineId Id="1" Count="0" />
<LineId Id="9" Count="6" />
<LineId Id="8" Count="0" />
<LineId Id="17" Count="6" />
<LineId Id="16" Count="0" />
<LineId Id="25" Count="6" />
<LineId Id="24" Count="0" />
</LineIds>
<LineIds Name="FB_SlitPairV2.actCalculateSetpointPositions">
<LineId Id="2" Count="2" />
<LineId Id="1" Count="0" />
</LineIds>
<LineIds Name="FB_SlitPairV2.actCalculateSetpointVelocities">
<LineId Id="2" Count="2" />
<LineId Id="1" Count="0" />
</LineIds>
<LineIds Name="FB_SlitPairV2.actGeneratorEnableDisable">
<LineId Id="2" Count="22" />
<LineId Id="1" Count="0" />
</LineIds>
<LineIds Name="FB_SlitPairV2.actVirtualAxisEnable">
<LineId Id="2" Count="1" />
</LineIds>
<LineIds Name="FB_SlitPairV2.actVirtualAxisLimits">
<LineId Id="2" Count="4" />
</LineIds>
<LineIds Name="FB_SlitPairV2.actVirtualAxisPositions">
<LineId Id="2" Count="14" />
<LineId Id="1" Count="0" />
</LineIds>
</POU>
</TcPlcObject>
@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.5">
<POU Name="limitsPower" Id="{7dcb7d67-8fc5-4c4f-a1c9-d3a3a11a9340}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM limitsPower
VAR
bEnableAxis1Limits AT %Q*: BOOL:=TRUE;
bEnableAxis2Limits AT %Q*: BOOL:=TRUE;
bEnableAxis1Enc AT %Q*: BOOL:=TRUE;
bEnableAxis2Enc AT %Q*: BOOL:=TRUE;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[]]></ST>
</Implementation>
<LineIds Name="limitsPower">
<LineId Id="5" Count="0" />
</LineIds>
</POU>
</TcPlcObject>
@@ -1,341 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.5">
<POU Name="testSlitApp" Id="{02dd3d5e-b93a-47d0-a30a-b16df70390e6}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM testSlitApp
VAR
southBlade_ID : UINT := 2;
northBlade_ID : UINT := 1;
VG_ID : UINT := 3;
VC_ID : UINT := 4;
bEnable : BOOL :=FALSE;
fGapSizePosition: LREAL;
iGapSizePosition AT %Q*: UDINT := 0;
fGapCentrePosition: LREAL;
iGapCentrePosition AT %Q*: UDINT := 0;
fEncoderScaling : LREAL := 10000;
northSpGenEnable : MC_ExtSetPointGenEnable;
northSpGenDisable : MC_ExtSetPointGenDisable;
southSpGenEnable : MC_ExtSetPointGenEnable;
southSpGenDisable : MC_ExtSetPointGenDisable;
vgSpGenEnable : MC_ExtSetPointGenEnable;
vgSpGenDisable : MC_ExtSetPointGenDisable;
vcSpGenEnable : MC_ExtSetPointGenEnable;
vcSpGenDisable : MC_ExtSetPointGenDisable;
fNorthSp : LREAL;
fSouthSp : LREAL;
fVgSp : LREAL;
fVcSp : LREAL;
fNorthVelSp : LREAL;
fSouthVelSp : LREAL;
fVgVelSp:LREAL;
fVcVelSp : LREAL;
northDir : DINT;
southDir : DINT;
vgDir : DINT;
vcDir : DINT;
lastCycleSP_North : LREAL;
lastCycleSP_South : LREAL;
lastCycleSP_VG : LREAL;
lastCycleSP_VC : LREAL;
iState : UINT := 0;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[actVirtualAxisPositions();
//IF bEnable THEN
GVL.astAxes[northBlade_ID].stControl.bEnable:=TRUE;
GVL.astAxes[southBlade_ID].stControl.bEnable:=TRUE;
GVL.astAxes[VG_ID].stControl.bEnable:=TRUE;
GVL.astAxes[VC_ID].stControl.bEnable:=TRUE;
GVL.astAxes[5].stControl.bEnable:=TRUE;
GVL.astAxes[6].stControl.bEnable:=TRUE;
GVL.astAxes[VG_ID].stInputs.bLimitBwd := TRUE;
GVL.astAxes[VG_ID].stInputs.bLimitFwd := TRUE;
GVL.astAxes[VC_ID].stInputs.bLimitBwd := TRUE;
GVL.astAxes[VC_ID].stInputs.bLimitFwd := TRUE;
GVL.astAxes[5].stInputs.bLimitBwd := TRUE;
GVL.astAxes[5].stInputs.bLimitFwd := TRUE;
GVL.astAxes[6].stInputs.bLimitBwd := TRUE;
GVL.astAxes[6].stInputs.bLimitFwd := TRUE;
northSpGenEnable(Axis:= GVL.astAxes[northBlade_ID].Axis);
northSpGenEnable.Execute:=FALSE;
southSpGenEnable(Axis:=GVL.astAxes[southBlade_ID].Axis);
southSpGenEnable.Execute:=FALSE;
northSpGenDisable(Axis:= GVL.astAxes[northBlade_ID].Axis);
northSpGenDisable.Execute:=FALSE;
southSpGenDisable(Axis:=GVL.astAxes[southBlade_ID].Axis);
southSpGenDisable.Execute:=FALSE;
vgSpGenEnable(Axis:= GVL.astAxes[3].Axis);
vgSpGenEnable.Execute:=FALSE;
vcSpGenEnable(Axis:=GVL.astAxes[4].Axis);
vcSpGenEnable.Execute:=FALSE;
vgSpGenDisable(Axis:= GVL.astAxes[3].Axis);
vgSpGenDisable.Execute:=FALSE;
vcSpGenDisable(Axis:=GVL.astAxes[4].Axis);
vcSpGenDisable.Execute:=FALSE;
fNorthSp := GVL.astAxes[VC_ID].Axis.NcToPlc.SetPos + (GVL.astAxes[VG_ID].Axis.NcToPlc.SetPos/2);
fSouthSp := GVL.astAxes[VC_ID].Axis.NcToPlc.SetPos - (GVL.astAxes[VG_ID].Axis.NcToPlc.SetPos/2);
fNorthVelSp := GVL.astAxes[VC_ID].Axis.NcToPlc.SetVelo +(GVL.astAxes[VG_ID].Axis.NcToPlc.SetVelo/2) + GVL.astAxes[5].Axis.NcToPlc.SetVelo;
fSouthVelSp := GVL.astAxes[VC_ID].Axis.NcToPlc.SetVelo -(GVL.astAxes[VG_ID].Axis.NcToPlc.SetVelo/2) + GVL.astAxes[6].Axis.NcToPlc.SetVelo;
IF fNorthVelSp>0 THEN
northDir := 1;
ELSIF fNorthVelSp<0 THEN
northDir:=-1;
ELSE
northDir:=0;
END_IF
IF fSouthVelSp>0 THEN
SouthDir := 1;
ELSIF fSouthVelSp<0 THEN
SouthDir:=-1;
ELSE
SouthDir:=0;
END_IF
fVgVelSp := GVL.astAxes[1].Axis.NcToPlc.SetVelo - GVL.astAxes[2].Axis.NcToPlc.SetVelo;
fVcVelSp := GVL.astAxes[1].Axis.NcToPlc.SetVelo + GVL.astAxes[2].Axis.NcToPlc.SetVelo;
IF fVgVelSp>0 THEN
vgDir := 1;
ELSIF fVgVelSp<0 THEN
vgDir:=-1;
ELSE
vgDir:=0;
END_IF
IF fVcVelSp>0 THEN
vcDir := 1;
ELSIF fVcVelSp<0 THEN
vcDir:=-1;
ELSE
vcDir:=0;
END_IF
fVgSp := GVL.astAxes[northBlade_ID].Axis.NcToPlc.SetPos - GVL.astAxes[southBlade_ID].Axis.NcToPlc.SetPos;
fVcSp := (GVL.astAxes[northBlade_ID].Axis.NcToPlc.SetPos + GVL.astAxes[southBlade_ID].Axis.NcToPlc.SetPos) / 2;
//IF northSpGenEnable.Enabled OR southSpGenEnable THEN
//
//END_IF
CASE istate OF
0:
IF GVL.astAxes[VG_ID].stStatus.bMoving OR GVL.astAxes[VC_ID].stStatus.bMoving THEN
iState:=1;
END_IF
IF GVL.astAxes[1].stStatus.bMoving OR GVL.astAxes[2].stStatus.bMoving THEN
iState:=10;
END_IF
1:
northSpGenEnable.Execute:=TRUE;
southSpGenEnable.Execute:=TRUE;
iState:=2;
2:
IF NOT(GVL.astAxes[VG_ID].stStatus.bMoving OR GVL.astAxes[VC_ID].stStatus.bMoving) THEN
iState:=3;
END_IF
3:
northSpGenDisable.Execute:=TRUE;
southSpGenDisable.Execute:=TRUE;
iState:=0;
10:
vgSpGenEnable.Execute :=TRUE;
vcSpGenEnable.Execute:=TRUE;
iState:=11;
11:
IF NOT(GVL.astAxes[1].stStatus.bMoving OR GVL.astAxes[2].stStatus.bMoving) THEN
iState:=12;
END_IF
12:
vgSpGenDisable.Execute :=TRUE;
vcSpGenDisable.Execute:=TRUE;
iState:=0;
END_CASE
(*IF (GVL.astAxes[VG_ID].stStatus.bMoving OR GVL.astAxes[VC_ID].stStatus.bMoving) AND NOT(vgSpGenEnable.Enabled OR vcSpGenEnable.Enabled) THEN
northSpGenEnable.Execute:=TRUE;
southSpGenEnable.Execute:=TRUE;
END_IF
IF NOT(GVL.astAxes[VG_ID].stStatus.bMoving) AND NOT(GVL.astAxes[VC_ID].stStatus.bMoving) THEN
northSpGenDisable.Execute:=TRUE;
southSpGenDisable.Execute:=TRUE;
END_IF
IF GVL.astAxes[1].stStatus.bMoving OR GVL.astAxes[2].stStatus.bMoving AND NOT(northSpGenEnable.Enabled OR southSpGenEnable.Enabled) AND NOT(northSpGenEnable.Execute) THEN
vgSpGenEnable.Execute :=TRUE;
vcSpGenEnable.Execute:=TRUE;
END_IF
IF NOT(GVL.astAxes[1].stStatus.bMoving) AND NOT(GVL.astAxes[2].stStatus.bMoving) THEN
vgSpGenDisable.Execute :=TRUE;
vcSpGenDisable.Execute:=TRUE;
END_IF*)
MC_ExtSetPointGenFeed(Axis:= GVL.astAxes[northBlade_ID].Axis, Position:= fNorthSp, Velocity:=fNorthVelSp, Acceleration:=0,Direction:=northDir);
MC_ExtSetPointGenFeed(Axis:= GVL.astAxes[southBlade_ID].Axis, Position:= fSouthSp, Velocity:=fSouthVelSp, Acceleration:=0,Direction:=southDir);
MC_ExtSetPointGenFeed(Axis:= GVL.astAxes[3].Axis, Position:= fVgSp, Velocity:=fVgVelSp, Acceleration:=0,Direction:=vgDir);
MC_ExtSetPointGenFeed(Axis:= GVL.astAxes[4].Axis, Position:= fVcSp, Velocity:=fVcVelSp, Acceleration:=0,Direction:=vcDir);
lastCycleSP_North := GVL.astAxes[1].Axis.NcToPlc.SetPos;
lastCycleSP_South := GVL.astAxes[2].Axis.NcToPlc.SetPos;
lastCycleSP_VG := GVL.astAxes[3].Axis.NcToPlc.SetPos;
lastCycleSP_VC := GVL.astAxes[4].Axis.NcToPlc.SetPos;
//END_IF]]></ST>
</Implementation>
<Action Name="actVirtualAxisPositions" Id="{84408ed0-12a9-4a20-9ee2-393320dd5a43}">
<Implementation>
<ST><![CDATA[(*Calculate virtual axis positions and convert to UDINT.
Conversion to UDINT is prohibited if it would exceed UDINT max value of 4,294,967,295.
If this is not done, it can cause overflow when connected to the encoder input and hard-crash the PLC which will only recover with a power cycle.
To preserve decimal position data of the LREAL (i.e. anything <1mm) it is necessary to scale the value before converting to UDINT.
This can be reversed with the correct scaling at the NC encoder level.
*)
fGapSizePosition := GVL.astAxes[northBlade_ID].stStatus.fActPosition - GVL.astAxes[southBlade_ID].stStatus.fActPosition;
fGapCentrePosition := (GVL.astAxes[northBlade_ID].stStatus.fActPosition + GVL.astAxes[southBlade_ID].stStatus.fActPosition) / 2;
IF ABS(fGapSizePosition) < 100000 THEN
iGapSizePosition := LREAL_TO_UDINT(fGapSizePosition*fEncoderScaling);
END_IF
IF ABS(fGapCentrePosition) < 100000 THEN
iGapCentrePosition := LREAL_TO_UDINT(fGapCentrePosition*fEncoderScaling);
END_IF]]></ST>
</Implementation>
</Action>
<LineIds Name="testSlitApp">
<LineId Id="40" Count="0" />
<LineId Id="5" Count="0" />
<LineId Id="54" Count="0" />
<LineId Id="53" Count="0" />
<LineId Id="55" Count="2" />
<LineId Id="68" Count="0" />
<LineId Id="67" Count="0" />
<LineId Id="58" Count="0" />
<LineId Id="11" Count="0" />
<LineId Id="61" Count="0" />
<LineId Id="60" Count="0" />
<LineId Id="70" Count="2" />
<LineId Id="69" Count="0" />
<LineId Id="59" Count="0" />
<LineId Id="14" Count="0" />
<LineId Id="98" Count="0" />
<LineId Id="41" Count="0" />
<LineId Id="99" Count="0" />
<LineId Id="42" Count="0" />
<LineId Id="100" Count="0" />
<LineId Id="15" Count="0" />
<LineId Id="46" Count="0" />
<LineId Id="108" Count="7" />
<LineId Id="107" Count="0" />
<LineId Id="101" Count="0" />
<LineId Id="47" Count="0" />
<LineId Id="50" Count="0" />
<LineId Id="64" Count="0" />
<LineId Id="66" Count="0" />
<LineId Id="143" Count="1" />
<LineId Id="146" Count="0" />
<LineId Id="148" Count="2" />
<LineId Id="145" Count="0" />
<LineId Id="152" Count="5" />
<LineId Id="151" Count="0" />
<LineId Id="158" Count="0" />
<LineId Id="44" Count="0" />
<LineId Id="159" Count="0" />
<LineId Id="175" Count="0" />
<LineId Id="162" Count="12" />
<LineId Id="160" Count="1" />
<LineId Id="88" Count="0" />
<LineId Id="141" Count="0" />
<LineId Id="90" Count="0" />
<LineId Id="177" Count="0" />
<LineId Id="176" Count="0" />
<LineId Id="179" Count="0" />
<LineId Id="142" Count="0" />
<LineId Id="180" Count="1" />
<LineId Id="184" Count="0" />
<LineId Id="78" Count="0" />
<LineId Id="185" Count="0" />
<LineId Id="187" Count="0" />
<LineId Id="190" Count="1" />
<LineId Id="193" Count="2" />
<LineId Id="192" Count="0" />
<LineId Id="188" Count="1" />
<LineId Id="196" Count="2" />
<LineId Id="200" Count="1" />
<LineId Id="199" Count="0" />
<LineId Id="202" Count="3" />
<LineId Id="207" Count="5" />
<LineId Id="214" Count="1" />
<LineId Id="213" Count="0" />
<LineId Id="216" Count="3" />
<LineId Id="206" Count="0" />
<LineId Id="186" Count="0" />
<LineId Id="79" Count="0" />
<LineId Id="96" Count="0" />
<LineId Id="102" Count="0" />
<LineId Id="97" Count="0" />
<LineId Id="104" Count="2" />
<LineId Id="103" Count="0" />
<LineId Id="121" Count="0" />
<LineId Id="123" Count="0" />
<LineId Id="125" Count="0" />
<LineId Id="124" Count="0" />
<LineId Id="128" Count="2" />
<LineId Id="127" Count="0" />
<LineId Id="126" Count="0" />
<LineId Id="122" Count="0" />
<LineId Id="80" Count="1" />
<LineId Id="43" Count="0" />
<LineId Id="16" Count="0" />
<LineId Id="131" Count="0" />
<LineId Id="17" Count="1" />
<LineId Id="92" Count="0" />
<LineId Id="91" Count="0" />
<LineId Id="19" Count="0" />
<LineId Id="93" Count="2" />
<LineId Id="20" Count="6" />
<LineId Id="13" Count="0" />
<LineId Id="12" Count="0" />
</LineIds>
<LineIds Name="testSlitApp.actVirtualAxisPositions">
<LineId Id="13" Count="0" />
<LineId Id="17" Count="0" />
<LineId Id="16" Count="0" />
<LineId Id="18" Count="1" />
<LineId Id="15" Count="0" />
<LineId Id="2" Count="1" />
<LineId Id="20" Count="0" />
<LineId Id="4" Count="6" />
</LineIds>
</POU>
</TcPlcObject>
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.5">
<POU Name="Axis_Template" Id="{1a43acb4-bd2e-4637-97fb-9976d47292b6}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM Axis_Template
VAR
//Outputs: Power for Limit switches, Home Sensors, etc.
//bPowerSwitchesAxis1 AT %Q*: BOOL:= TRUE;
//Hardware interlocks
//bInterlockFwdOK AT %I*: BOOL;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[//Initial parameters of an Axis
(*IF _TaskInfo[fbGetCurTaskIndex.index].FirstCycle THEN
//Initial default values:
GVL.astAxes[1].stConfig.eHomeSeq := 0;
GVL.astAxes[1].stConfig.fHomePosition := 0.0;
GVL.astAxes[1].stConfig.fHomeFinishDistance := 0.0;
END_IF*)
//Define ACTIONS() or write exclusive code for an specific axis.
(*Eg. Stop when temperature reaches certain values, reduce speed if a signal is activated, etc.
Eg. GVL.astAxes[x].stControl.bInterlockFwd := NOT bInterlockFwdOK;*)
]]></ST>
</Implementation>
<LineIds Name="Axis_Template">
<LineId Id="20" Count="0" />
<LineId Id="5" Count="0" />
<LineId Id="13" Count="0" />
<LineId Id="17" Count="2" />
<LineId Id="14" Count="0" />
<LineId Id="22" Count="0" />
<LineId Id="21" Count="0" />
<LineId Id="24" Count="0" />
<LineId Id="33" Count="0" />
<LineId Id="23" Count="0" />
</LineIds>
</POU>
</TcPlcObject>
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.5">
<POU Name="Pneumatics_Template" Id="{7bf401fb-a600-4741-a67b-36f20e194cfc}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM Pneumatics_Template
VAR
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[//Test the program to control pneumatic acutator through PneumaticsVisu.
//Currently implemented control of single solenoid through PLC and and manually, with two momentary push buttons.
]]></ST>
</Implementation>
<LineIds Name="Pneumatics_Template">
<LineId Id="8" Count="0" />
<LineId Id="89" Count="0" />
<LineId Id="33" Count="0" />
<LineId Id="32" Count="0" />
<LineId Id="9" Count="0" />
<LineId Id="31" Count="0" />
<LineId Id="13" Count="0" />
<LineId Id="27" Count="0" />
<LineId Id="17" Count="0" />
<LineId Id="30" Count="0" />
</LineIds>
</POU>
</TcPlcObject>
@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.5">
<POU Name="testProg" Id="{6b742e2c-3720-4a26-aa80-15486c69d838}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM testProg
VAR
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[]]></ST>
</Implementation>
<LineIds Name="testProg">
<LineId Id="5" Count="0" />
</LineIds>
</POU>
</TcPlcObject>
+2 -11
View File
@@ -20,8 +20,6 @@ VAR
afbReadEncRefSys: ARRAY [1..GVL_APP.nAXIS_NUM] OF MC_ReadParameter;
afbRestorePosition: ARRAY [1..GVL_APP.nAXIS_NUM] OF MC_SetPosition;
fbGetDeviceIdentification: FB_GetDeviceIdentification;
slit1Vertical : FB_SlitPairV2;
END_VAR
VAR PERSISTENT
@@ -30,10 +28,7 @@ END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[POSITION_RECOVERY();
AXES();
PROG();
slit1Vertical(ID_positiveAxis:=1, ID_negativeAxis:=2, ID_gapSizeAxis:=3, ID_gapCentreAxis:=4);
]]></ST>
PROG();]]></ST>
</Implementation>
<Folder Name="POSITION_RECOVERY" Id="{3561f6ef-e145-4ed3-9839-f17334bd2d97}" />
<Action Name="AXES" Id="{7eb32732-9b53-4934-8cd9-20ba971dd8ff}">
@@ -209,11 +204,7 @@ END_FOR]]></ST>
</Implementation>
</Action>
<LineIds Name="MAIN">
<LineId Id="505" Count="0" />
<LineId Id="81" Count="0" />
<LineId Id="538" Count="0" />
<LineId Id="589" Count="0" />
<LineId Id="586" Count="0" />
<LineId Id="640" Count="1" />
<LineId Id="585" Count="0" />
</LineIds>
<LineIds Name="MAIN.AXES">
@@ -28,16 +28,13 @@
<Compile Include="PlcTask.TcTTO">
<SubType>Code</SubType>
</Compile>
<Compile Include="POUs\Application_Specific\Applications\FB_SlitPairV2.TcPOU">
<Compile Include="POUs\Application_Specific\Applications\Application_Template.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="POUs\Application_Specific\Applications\limitsPower.TcPOU">
<Compile Include="POUs\Application_Specific\Axes\Axis_Template.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="POUs\Application_Specific\Applications\testSlitApp.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="POUs\Application_Specific\Axes\testProg.TcPOU">
<Compile Include="POUs\Application_Specific\Axes\Pneumatics_Template.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="POUs\MAIN.TcPOU">
@@ -133,6 +130,9 @@
<Compile Include="tc_mca_std_lib\POUs\Motion\FB_SlitPair.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="tc_mca_std_lib\POUs\Motion\FB_SlitPairV2.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_Homing.TcPOU">
<SubType>Code</SubType>
</Compile>