RTX64 中的 EtherCAT COM 埠
EtherCAT COM 埠是 EtherCAT 装置上的虚拟COM 埠,可供应用程式使用,就如同使用电脑上的 COM 埠一样。某些 EtherCAT 从属装置有可连接至其他 COM 埠装置的 COM 埠。透过 EtherCAT 连接 COM 埠,应用程式可使用 KINGSTAR COM 埠 API 来控制这些装置,这些功能皆支援 RTX64 及 KINGSTAR 应用程式使用。而KINGSTAR COM 埠 API 与 Windows COM API 相容。
欲使用 EtherCAT COM 埠,需具备含 EtherCAT 及 COM 埠的 EtherCAT 耦合器,此耦合器透过 EtherCAT 连接电脑,而透过 COM 埠连接 COM 埠装置。
以下使用 ModSim、KINGSTAR Demo 以及 KINGSTAR COM 埠范例展示 EtherCAT COM 埠功能。ModSim 为 WinTECH 用来与 COM 埠通讯的程式。KINGSTAR Demo 用以控制 EtherCAT 的连接,使用 KINGSTAR Demo 的原因为 KINGSTAR COM 埠范例程式不提供 EtherCAT 的连接,其仅提供 COM 埠的通讯,目的为使 COM 埠作为一独立介面,在没有 KINGSTAR API 时亦可被任何应用程式使用。此法的效益为,一旦 EtherCAT 连接上,任何应用程式皆可访问 COM 埠。当使用 COM 埠时可创建以下两种应用程式:一个给 EtherCAT 连接用;另一个给 COM 埠控制用,亦可根据需要将连接功能和 COM 埠控制合并到一个应用程式中。
注意:ModSim 为 WinTECH Software Design 的商标,正式官网请至: https://www.win-tech.com/
使用 KINGSTAR COM 埠范例程式
下例中的 KINGSTAR COM 埠范例为连接至 COM 埠装置的 COM6 埠。其从 ModSim 读取一个值并将其增加 1。
欲执行此范例程式:
- 连接您的 EtherCAT 耦合器至 COM 埠装置。此范例中使用 Beckhoff EK1100 为 EtherCAT 耦合器;Beckhoff EL-6021 为 COM 埠装置。
- 连接您的 EtherCAT 耦合器至 KINGSTAR 总线网路。
- 连接您的 COM 埠装置至您的电脑。
- 在工作列点选 Start
> KINGSTAR Runtime > KINGSTAR Configuration Tool。
- KINGSTAR Configuration Tool 开启后,点选 Connect。若连接成功,硬体将会显示于 Project Configuration 中。
- EtherCAT 连结建立完成后,打开位在
C:\Users\Public\Public Documents\IntervalZero\KINGSTAR SDK\<Version Number>\Samples\ComSample\ComSample.sln
的 COM 埠范例 Visual Studio 专案档。 - 在 Visual Studio 中的 方案总管 (Solution Explorer),双击
ComSample.cpp
与Modbus.cpp
。 - 启动 ModSim。
- 在 ModSim 中的档案 (File) 选单中点选新增 (New)。
- 在连接 (Connection) 选单中点选连接 (Connect) > Port 6。
- 在 Comm Port 6 设定 对话框中,确保设定与
Modbus.cpp
中的 HANDLE RtModbusOpen 块设置相同。 - 在 Comm Port 6 设定 对话框中的硬体流程控制区,将 Delay ms after RTS before transmitting first character 与 Delay ms after last character before releasing RTS 设置为 100,点选 OK。
- 在 Visual Studio 中的工具列点选英特蒙即时除错 (IntervalZero Real-time Debugger),或按 F5 键以执行范例。
- 范例启动后,开启 RtxServer 视窗并点击读取结果 (Read Result)。由左至右共有三个值:读取结果、错误码、值。
- 读取结果:检查数值是否成功读取 - 成功:1;失败:0。
- 错误码:使用 Windows 函式 GetLastError 返还 Windows 错误码。错误码列表可在微软网站的 System Error Codes 网页查找。
- 值:从 ModSim 中读取的值。在本范例中的值为零,读取后,COM 埠范例将此读取值增加 1。而下一次此读取值将为 1。
注意:档案总管 (File Explorer) 有两个路径:阶层路径 (hierarchy) 与完整路径 (full path)。阶层路径显示在地址栏中;完整路径显示在档案总管上方。右键点击 ComSample.sln
后点选 属性 (Properties) ,将可看见位置 (Location) 为 C:\Users\Public\Documents\IntervalZero\KINGSTAR SDK\<Version Number>\Samples\ComSample\
,此即为完整路径;而注意阶层路径为 Public Documents
。若使用非英文的 Windows 系统,而需要复制贴上路径至地址栏中以加快查找范例速度,则请务必使用完整路径;若想要透过点击浏览范例档案夹,则请使用阶层路径。对于英文版 Windows,档案夹重新导向是自动完成的,因此即使贴上阶层路径,档案总管也可以将您导至所查询的范例。
鲍率: 9600
资料位元:8
停止位元:1
同位:奇同位
COM 埠 API 函式
KINGSTAR COM 埠函式的运作方式与 RTX64 函式和微软 (Microsoft) 通讯函式相同。下表列出相对应的函式:
KINGSTAR COM 埠函式 | 对应函式 | 连接来源 |
---|---|---|
KsCreateComm | CreateFile | RTX64 |
KsCloseComm | CloseHandle | RTX64 |
KsReadFile | ReadFile | RTX64 |
KsWriteFile | WriteFile | RTX64 |
KsBuildCommDCB | BuildCommDCBA | Microsoft |
KsClearCommBreak | ClearCommBreak | Microsoft |
KsClearCommError | ClearCommError | Microsoft |
KsEscapeCommFunction | EscapeCommFunction | Microsoft |
KsGetCommMask | GetCommMask | Microsoft |
KsGetCommModemStatus | GetCommModemStatus | Microsoft |
KsGetCommProperties | GetCommProperties | Microsoft |
KsGetCommState | GetCommState | Microsoft |
KsGetCommTimeouts | GetCommTimeouts | Microsoft |
KsPurgeComm | PurgeComm | Microsoft |
KsSetCommBreak | SetCommBreak | Microsoft |
KsSetCommMask | SetCommMask | Microsoft |
KsSetCommState | SetCommState | Microsoft |
KsSetCommTimeouts | SetCommTimeouts | Microsoft |
KsSetupComm | SetupComm | Microsoft |
KsTransmitCommChar | TransmitCommChar | Microsoft |
KsWaitCommEvent | WaitCommEvent | Microsoft |
KsGetOverlappedResult | GetOverlappedResult | Microsoft |