使用 IO-Link、MDP 或 CANopen 裝置

有了 EtherCAT,可使用其他協定來新增子網路,並非所有這些協定都可以掃描,因此可能需要透過 API 提供有關連接裝置的資訊,KINGSTAR 具有針對三種類型子網路的專用 ST 函式,這些函式應在 ksStart 設置為 TRUE 之前使用,因此我們建議在附加到 Init 任務的程式組織單元 (POU) 中呼叫,以下是這些函式的語法:

unsigned char KsConfigureIoLinkDevice(long Index, long Port, unsigned char Revision, unsigned char Spdu, unsigned short Control, long InputLength, long OutputLength);
unsigned char KsConfigureMdpDevice(long Index, long Id, long InputLength, long OutputLength, long CommandCount, KS_SDO_COMMAND* Commands);
unsigned char KsConfigureCanDevice(long SlaveId, long CanId, long RxPdoCount, KS_CAN_PDO* RxPdos, long TxPdoCount, KS_CAN_PDO* TxPdos, long CommandCount, KS_SDO_COMMAND* Commands);

這些 ST 函式改編自 KINGSTAR C 介面中的 AddModuleConfiguration 函式。前兩個參數分別對應 AddModuleConfiguration 中的 SlaveId ModuleId

Index, SlaveId:Index 指從站陣列的索引;而 SlaveId 指從站裝置在網路中的位置。當 EtherCAT 從站裝置啟動時,此索引具有與 SlaveId 相同的值,該值對應於從站裝置在網路中的位置。請注意,在 EtherCAT 進入運行 (Op) 狀態後,加入或移除網路上的任何從站裝置將改變各裝置在網路中的位置 (SlaveId)。儘管如此,從站的索引將保持不變。新增的裝置將排列在陣列的末端。對於更改後的所有從站,索引和 SlaveId 將不再匹配。上述行為模式僅適用於實體裝置;不適用於模擬裝置。詳細資訊請參閱 EnableHotConnect 中的使用案例。

Port, Id, CanId:模組(連接至耦合器的裝置)ID,此可以是插槽 ID、連接埠 ID 或從站 ID。

其他參數的說明請見 IOLINK_SETTINGECMDP_SETTINGCANOPEN_SETTING 結構。

欲使用這些函式:

  1. Project 面板中右鍵點擊 KINGSTAR Project(您的專案名稱)並選擇 Add > New program
  2. New program 對話框中的 Language 底下選擇 ST,在 Name 輸入框中輸入程式名稱(在此輸入 "ConfigDevice"),於 Task 底下的 Assign to 清單中選擇 Init,完成編輯後按 OK
  3. ConfigDevice 面板中的 Local variables 編輯器中右鍵點擊空白區域並點選 Insert
  4. 區域變數即建立,點擊其 Name 輸入欄位。
  5. 為此變數輸入一個有意義的名稱並按下 Enter,在此範例中我們輸入 "ksOutput"。
  6. Project 面板中右鍵點擊Global_vars(您的專案名稱)並點選 New variable > Automatic 以新增全域變數。
  7. New variable 對話框中的 Name 輸入框中輸入 "Commands",並於 Type 區域點擊 ... 以開啟 Object browser
  8. Object browser 中勾選 User types,並於 User types 清單中選擇 KS_SDO_COMMAND 然後點擊 OK
  9. New variable 對話框中的 Array 區域點擊 ... 以開啟 Size of variable,並點選 Array / Matrix,於 Dimension 1 中輸入 "19" 以使陣列大小為 20,可自訂陣列大小,完成編輯後點擊 OK
  10. New variable 對話框點擊 OK
  11. Project 面板中的 Global_vars 群組中, Commands 變數已新增,雙擊 Commands 以開啟 Global_vars 面板。
  12. Global_vars 面板中新增另外兩個名為 RxPdos TxPdos 的變數,類型為 KS_CAN_PDO 且陣列大小為 20。
  13. Project 面板中雙擊 ConfigDevice,並在原始碼編輯器中輸入代碼,下列為範例程式碼,您應選則可滿足您需求的函式,並根據您的裝置及其設定修改該程式碼。
  14. ksOutput := ksConfigureIoLinkDevice(0,0,17,0,3,16,0);

    ksOutput := ksConfigureMdpDevice(0,0,16,16,20,ADR(Commands));

    ksOutput := ksConfigureCanDevice(1,1,3,ADR(RxPdos),3,ADR(TxPdos),10,ADR(Commands));

  15. 編譯及執行程式。