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 |