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