使用 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

SlaveId:從站索引 (Slave Index)。此索引是 KINGSTAR 主站於 EtherCAT 網路啟動時,根據實體連接順序自動指派的。直接連線到主站的第一個裝置會被指派為索引 0 (Index 0),接著是索引 1、索引 2,依此類推。即使新增、移除或重新連線裝置,這些索引在從站陣列中也會保持一致。請參閱 熱插拔 (HotConnect)、修復與重啟 中的使用案例以了解更多詳細資訊。

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. 編譯及執行程式。