使用 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_SETTING、ECMDP_SETTING 及 CANOPEN_SETTING 结构。
欲使用这些函式:
- 于 Project 面板中右键点击 KINGSTAR Project(您的专案名称)并选择 Add > New program。
- 在 New program 对话框中的 Language 底下选择 ST,在 Name 输入框中输入程式名称(在此输入 "ConfigDevice"),于 Task 底下的 Assign to 清单中选择 Init,完成编辑后按 OK。
- 于 ConfigDevice 面板中的 Local variables 编辑器中右键点击空白区域并点选 Insert。
- 区域变数即建立,点击其 Name 输入栏位。
- 为此变数输入一个有意义的名称并按下 Enter,在此范例中我们输入 "ksOutput"。
- 于 Project 面板中右键点击Global_vars(您的专案名称)并点选 New variable > Automatic 以新增全域变数。
- 在 New variable 对话框中的 Name 输入框中输入 "Commands",并于 Type 区域点击 ... 以开启 Object browser。
- 在 Object browser 中勾选 User types,并于 User types 清单中选择 KS_SDO_COMMAND 然后点击 OK。
- 于 New variable 对话框中的 Array 区域点击 ... 以开启 Size of variable,并点选 Array / Matrix,于 Dimension 1 中输入 "19" 以使阵列大小为 20,可自订阵列大小,完成编辑后点击 OK。
- 于 New variable 对话框点击 OK。
- 于 Project 面板中的 Global_vars 群组中, Commands 变数已新增,双击 Commands 以开启 Global_vars 面板。
- 于 Global_vars 面板中新增另外两个名为 RxPdos 与 TxPdos 的变数,类型为 KS_CAN_PDO 且阵列大小为 20。
- 于 Project 面板中双击 ConfigDevice,并在原始码编辑器中输入代码,下列为范例程式码,您应选则可满足您需求的函式,并根据您的装置及其设定修改该程式码。
- 编译及执行程式。
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));