RTX64 中的 EtherCAT COM 埠

EtherCAT COM 埠是 EtherCAT 裝置上的虛擬COM 埠,可供應用程式使用,就如同使用電腦上的 COM 埠一樣。某些 EtherCAT 從屬裝置有可連接至其他 COM 埠裝置的 COM 埠。透過 EtherCAT 連接 COM 埠,應用程式可使用 KINGSTAR COM 埠 API 來控制這些裝置,這些功能皆支援 RTX64KINGSTAR 應用程式使用。而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。

欲執行此範例程式:

  1. 連接您的 EtherCAT 耦合器至 COM 埠裝置。此範例中使用 Beckhoff EK1100 為 EtherCAT 耦合器;Beckhoff EL-6021 為 COM 埠裝置。
  2. 連接您的 EtherCAT 耦合器至 KINGSTAR 總線網路。
  3. 連接您的 COM 埠裝置至您的電腦。
  4. 在工作列點選 Start > KINGSTAR Runtime > KINGSTAR Configuration Tool
  5. KINGSTAR Configuration Tool 開啟後,點選 Connect。若連接成功,硬體將會顯示於 Project Configuration 中。
  6. EtherCAT 連結建立完成後,打開位在 C:\Users\Public\Public Documents\IntervalZero\KINGSTAR SDK\<Version Number>\Samples\ComSample\ComSample.sln 的 COM 埠範例 Visual Studio 專案檔。
  7. 注意:檔案總管 (File Explorer) 有兩個路徑:階層路徑 (hierarchy) 與完整路徑 (full path)。階層路徑顯示在地址欄中;完整路徑顯示在檔案總管上方。右鍵點擊 ComSample.sln 後點選 屬性 (Properties) ,將可看見位置 (Location) C:\Users\Public\Documents\IntervalZero\KINGSTAR SDK\<Version Number>\Samples\ComSample\,此即為完整路徑;而注意階層路徑為 Public Documents。若使用非英文的 Windows 系統,而需要複製貼上路徑至地址欄中以加快查找範例速度,則請務必使用完整路徑;若想要透過點擊瀏覽範例檔案夾,則請使用階層路徑。對於英文版 Windows,檔案夾重新導向是自動完成的,因此即使貼上階層路徑,檔案總管也可以將您導至所查詢的範例。

  8. 在 Visual Studio 中的 方案總管 (Solution Explorer),雙擊 ComSample.cppModbus.cpp
  9. 啟動 ModSim。
  10. 在 ModSim 中的檔案 (File) 選單中點選新增 (New)。
  11. 連接 (Connection) 選單中點選連接 (Connect) > Port 6
  12. Comm Port 6 設定 對話框中,確保設定與 Modbus.cpp 中的 HANDLE RtModbusOpen 塊設置相同。
  13. 鮑率: 9600

    資料位元:8

    停止位元:1

    同位:奇同位

  14. Comm Port 6 設定 對話框中的硬體流程控制區,將 Delay ms after RTS before transmitting first character Delay ms after last character before releasing RTS 設置為 100,點選 OK
  15. 在 Visual Studio 中的工具列點選英特蒙即時除錯 (IntervalZero Real-time Debugger),或按 F5 鍵以執行範例。
  16. 範例啟動後,開啟 RtxServer 視窗並點擊讀取結果 (Read Result)。由左至右共有三個值:讀取結果、錯誤碼、值。

 

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