CoE Completed access [測試紀錄]
CoE Completed access test record
By Advan 2021 10/8
[前言] Try to use TCEherCAT.lib CoE SDO Completed access function to optimize CoE access efficiency in application layer.
Complete Access Support |
If this checkbox is checked, support for uploading or downloading the complete CanOpen object
is activated. The entire data area belonging to the main index with all its subindices is read or
written. |

https://infosys.beckhoff.com/english.php?content=../content/1033/tc3_io_intro/1357984011.html&id=
FB_EcCoeSdoReadEx.bCompleteAccess
要點整理
*回傳容器必須大於實際對象內容,FB似乎不會回傳讀取的實際大小資訊
*測試回傳格式紀錄
subIndex 0 , Number of subindex = int16 , 2 bytes
若內容出現bit 元素,即便不滿16 位元,但至少會occupied 1 word
eNum 為 int16 , 2 byte
測試情境OD 0x9010 STM info data Ch1
回傳長度24 bytes
測試環境EL7031-0000-0026 HW10 , SW12
測試情境OD 0xA010 STM Diag data Ch1
回傳長度6 bytes
測試環境EL7031-0000-0026 HW10 , SW12
測試情境OD 0x10F3 Diagnosis History --- 未成功
容器預備1409 byte
Error 1 2021/10/7 下午 05:21:14 720 ms | 'Term 4 (EL7031)' (1004): CoE ('InitUp' 0x10f3:00) - SDO Abort ('Unsupported access to an object.', 0x06010000).
嘗試容器預備2048 byte,也是一樣的錯誤,不確定是否有限制,及其門檻來源。
推估限制門檻應該和MailBox configuration 有關(目前測試情境都算符合此限制條件)
測試環境EL4134 HW07 , SW02
回傳長度18
bytes
經測試 格式拆解如下
stData[0~1] Number of sub index.
stData[2].0 Enable
user scale 8000:01 bit
stData[2].1~~3
Presentation 8000:02 enum
stData[2].4~5
Watchdog 8000:05 enum
stData[2].6
Enable user calibration 8000:07
bit
stData[3].7
Enable Vendor calibration 8000:08
bit
stData[4~5] Offset 8000:11 int16
stData[6~9] Gain 8000:12 int32
stData[10~11] Default output 8000:13 int16
stData[12~13] Default output ramp 8000:14 int16
stData[14~15] User calibration offset 8000:15 int16
stData[16~17] User calibration gain 8000:16 int16
!! 在這個情境, enum 似乎可以define 用bit 的個數一起呈現,必須確定對象的實際格式才能知道可以這樣拆。 以上 測試紀錄
2021 11/29 add note
格式之訊在ESI 檔中有敘述 符合測試結果
<DataType>
<Name>DT8000</Name>
<BitSize>144</BitSize>
<SubItem>
<SubIdx>0</SubIdx>
<Name>SubIndex 000</Name>
<Type>USINT</Type>
<BitSize>8</BitSize>
<BitOffs>0</BitOffs>
<Flags>
<Access>ro</Access>
<Category>o</Category>
</Flags>
</SubItem>
<SubItem>
<SubIdx>1</SubIdx>
<Name>Enable user scale</Name>
<Type>BOOL</Type>
<BitSize>1</BitSize>
<BitOffs>16</BitOffs>
<Flags>
<Access>rw</Access>
<Category>o</Category>
<Backup>1</Backup>
<Setting>1</Setting>
</Flags>
</SubItem>
<SubItem>
<SubIdx>2</SubIdx>
<Name>Presentation</Name>
<Type>DT0800EN03</Type>
<BitSize>3</BitSize>
<BitOffs>17</BitOffs>
<Flags>
<Access>rw</Access>
<Category>o</Category>
<Backup>1</Backup>
<Setting>1</Setting>
</Flags>
</SubItem>
<SubItem>
<SubIdx>5</SubIdx>
<Name>Watchdog</Name>
<Type>DT0801EN02</Type>
<BitSize>2</BitSize>
<BitOffs>20</BitOffs>
<Flags>
<Access>rw</Access>
<Category>o</Category>
<Backup>1</Backup>
<Setting>1</Setting>
</Flags>
</SubItem>
<SubItem>
<SubIdx>7</SubIdx>
<Name>Enable user calibration</Name>
<Type>BOOL</Type>
<BitSize>1</BitSize>
<BitOffs>22</BitOffs>
<Flags>
<Access>rw</Access>
<Category>o</Category>
<Backup>1</Backup>
<Setting>1</Setting>
</Flags>
</SubItem>
<SubItem>
<SubIdx>8</SubIdx>
<Name>Enable vendor calibration</Name>
<Type>BOOL</Type>
<BitSize>1</BitSize>
<BitOffs>23</BitOffs>
<Flags>
<Access>rw</Access>
<Category>o</Category>
<Backup>1</Backup>
<Setting>1</Setting>
</Flags>
</SubItem>
<SubItem>
<SubIdx>17</SubIdx>
<Name>Offset</Name>
<Type>INT</Type>
<BitSize>16</BitSize>
<BitOffs>32</BitOffs>
<Flags>
<Access>rw</Access>
<Category>o</Category>
<Backup>1</Backup>
<Setting>1</Setting>
</Flags>
</SubItem>
<SubItem>
<SubIdx>18</SubIdx>
<Name>Gain</Name>
<Type>DINT</Type>
<BitSize>32</BitSize>
<BitOffs>48</BitOffs>
<Flags>
<Access>rw</Access>
<Category>o</Category>
<Backup>1</Backup>
<Setting>1</Setting>
</Flags>
</SubItem>
<SubItem>
<SubIdx>19</SubIdx>
<Name>Default output</Name>
<Type>INT</Type>
<BitSize>16</BitSize>
<BitOffs>80</BitOffs>
<Flags>
<Access>rw</Access>
<Category>o</Category>
<Backup>1</Backup>
<Setting>1</Setting>
</Flags>
</SubItem>
<SubItem>
<SubIdx>20</SubIdx>
<Name>Default output ramp</Name>
<Type>UINT</Type>
<BitSize>16</BitSize>
<BitOffs>96</BitOffs>
<Flags>
<Access>rw</Access>
<Category>o</Category>
<Backup>1</Backup>
<Setting>1</Setting>
</Flags>
</SubItem>
<SubItem>
<SubIdx>21</SubIdx>
<Name>User calibration offset</Name>
<Type>INT</Type>
<BitSize>16</BitSize>
<BitOffs>112</BitOffs>
<Flags>
<Access>rw</Access>
<Category>o</Category>
<Backup>1</Backup>
<Setting>1</Setting>
</Flags>
</SubItem>
<SubItem>
<SubIdx>22</SubIdx>
<Name>User calibration gain</Name>
<Type>UINT</Type>
<BitSize>16</BitSize>
<BitOffs>128</BitOffs>
<Flags>
<Access>rw</Access>
<Category>o</Category>
<Backup>1</Backup>
<Setting>1</Setting>
</Flags>
</SubItem>
</DataType>
留言
張貼留言