使用 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. 编译及执行程式。