Category: EtherCAT
Hi there,
I made a new ethercat slave device, that you can connect any incremental encoder to ethercat network,
you can watch its video;
Everything is ok with Twincat, I can read A B Z pin situations, encoder puls register (s32), encoder rpm value (real)
But in HAL, I cant get ENC2RPM value correctly, it shows irrelevant numbers,
in xml file there is;
<pdoEntry idx="0006" subIdx="01" bitLen="32" halPin="ENC2RPM" halType="float" />
Main question;
what should be the halType for a variable that can read successfully in Twincat (REAL)
Slave devices ethercat xml command output is here;
<!-- Slave 3 -->
<Vendor>
<Id>1640067</Id>
</Vendor>
<Descriptions>
<Devices>
<Device>
<Type ProductCode="#x00000001" RevisionNo="#x00000002">ENCODER INTERFACE</Type>
<Name><![CDATA[ENCODER INTERFACE]]></Name>
<Sm Enable="1" StartAddress="#x1000" ControlByte="#x64" DefaultSize="0" />
<Sm Enable="1" StartAddress="#x1200" ControlByte="#x20" DefaultSize="0" />
<RxPdo Sm="0" Fixed="1" Mandatory="1">
<Index>#x1600</Index>
<Name>Outputs</Name>
<Entry>
<Index>#x0005</Index>
<SubIndex>1</SubIndex>
<BitLen>32</BitLen>
<Name>ENC1_PULS_PER_REV</Name>
<DataType>UINT32</DataType>
</Entry>
<Entry>
<Index>#x0005</Index>
<SubIndex>2</SubIndex>
<BitLen>32</BitLen>
<Name>ENC2_PULS_PER_REV</Name>
<DataType>UINT32</DataType>
</Entry>
</RxPdo>
<TxPdo Sm="1" Fixed="1" Mandatory="1">
<Index>#x1a00</Index>
<Name>Inputs</Name>
<Entry>
<Index>#x0006</Index>
<SubIndex>1</SubIndex>
<BitLen>32</BitLen>
<Name>ENC1RPM</Name>
<DataType>UINT32</DataType>
</Entry>
<Entry>
<Index>#x0006</Index>
<SubIndex>2</SubIndex>
<BitLen>32</BitLen>
<Name>REAL_ENC1_PULSE_PER_REV</Name>
<DataType>UINT32</DataType>
</Entry>
<Entry>
<Index>#x0006</Index>
<SubIndex>3</SubIndex>
<BitLen>32</BitLen>
<Name>ENC2RPM</Name>
<DataType>UINT32</DataType>
</Entry>
<Entry>
<Index>#x0006</Index>
<SubIndex>4</SubIndex>
<BitLen>32</BitLen>
<Name>REAL_ENC2_PULSE_PER_REV</Name>
<DataType>UINT32</DataType>
</Entry>
<Entry>
<Index>#x0006</Index>
<SubIndex>5</SubIndex>
<BitLen>16</BitLen>
<Name>ENC2POSITION</Name>
<DataType>UINT16</DataType>
</Entry>
<Entry>
<Index>#x0006</Index>
<SubIndex>6</SubIndex>
<BitLen>16</BitLen>
<Name>ENC1POSITION</Name>
<DataType>UINT16</DataType>
</Entry>
<Entry>
<Index>#x0006</Index>
<SubIndex>7</SubIndex>
<BitLen>8</BitLen>
<Name>ENC2A</Name>
<DataType>UINT8</DataType>
</Entry>
<Entry>
<Index>#x0006</Index>
<SubIndex>8</SubIndex>
<BitLen>8</BitLen>
<Name>ENC2B</Name>
<DataType>UINT8</DataType>
</Entry>
<Entry>
<Index>#x0006</Index>
<SubIndex>9</SubIndex>
<BitLen>8</BitLen>
<Name>ENC2Z</Name>
<DataType>UINT8</DataType>
</Entry>
<Entry>
<Index>#x0006</Index>
<SubIndex>10</SubIndex>
<BitLen>8</BitLen>
<Name>ENC1A</Name>
<DataType>UINT8</DataType>
</Entry>
<Entry>
<Index>#x0006</Index>
<SubIndex>11</SubIndex>
<BitLen>8</BitLen>
<Name>ENC1Z</Name>
<DataType>UINT8</DataType>
</Entry>
<Entry>
<Index>#x0006</Index>
<SubIndex>12</SubIndex>
<BitLen>8</BitLen>
<Name>ENC1B</Name>
<DataType>UINT8</DataType>
</Entry>
</TxPdo>
</Device>
</Devices>