

摘要:針對當前硬件設備控制軟件遠程調試存在的問題,文章結合Python語言的網絡、串口、藍牙等相關技術的研究分析,提出了硬件設備控制軟件開發調試的遠程調試平臺設想,并通過Python語言相關模塊應用,依據設計思路實現了遠程調試平臺的設計,為硬件設備生產廠商開發控制軟件提供了遠程調試的解決方案,提升了開發人員的工作效率,降低了企業的開發、維護成本。
關鍵詞:硬件設備;遠程控制;軟件調試;協議轉換;串口模擬
中圖分類號:TP319文獻標志碼:A
0 引言
隨著智能化制造的飛速發展,硬件設備開發的軟件控制系統將是硬件設備與用戶交互的重要手段。然而為了降低企業的開發成本,中小型企業往往采用臨時雇傭方式實現硬件設備的控制軟件開發。針對硬件控制軟件的遠程調試平臺既能夠降低開發人員的時間成本,又能夠達到無距離感的調試效果。通常功能齊全的開發環境自身攜帶了遠程調試工具,這也使得遠程在線調試技術發展得非常成熟[1],但實際使用較為復雜,且不適合非開發情況下的系統調試,其他調試工具存在使用復雜或不能滿足用戶需要的問題。
為了能夠對硬件的控制系統進行遠程測試和調試,簡化工具使用,提升工具效率,本文通過對Python語言網絡編程技術進行研究,采取TCP/IP協議通信實現控制系統與硬件設備遠程控制軟件的調試,為硬件控制系統開發的工程師提供便利的遠程快速設備鏈接服務,讓遠程開發硬件控制系統變得更加容易,有效地降低了中小企業硬件控制系統開發成本及效率。
1 平臺總體設計思路
硬件設備控制系統在現場開發時,通常直接通過開發計算機與硬件設備經串口、TCP/IP、UDP、藍牙等協議通信[2]。硬件控制系統調試在物聯網應用、智能控制開發中頻繁應用,開發人員能夠通過開發工具本身提供的遠程調試工具實現遠程調試或通過遠程桌面進行遠程操作。這些雖然解決了遠程調試的問題,但卻帶來了新的問題。首先,設備已被安裝到客戶場地,不得不將本地上位機安裝成為一臺系統開發機器,需要安裝不必要的開發工具,造成資源浪費。為了能夠更加方便地實現遠程系統調試,提供實時調試功能,保證數據傳輸的安全性等,調試平臺將整合軟硬件資源和網絡資源,為開發者提供實時的調試信息和強大的調試功能。平臺總體設計思路如圖1所示。
平臺采用TCP/IP協議進行網絡通信,控制系統開發PC端、云服務器以及工控機之間建立穩定的連接,通過自定義的通信協議傳輸調試命令和數據,自定義通信協議具有良好的可擴展性和兼容性,能很好地適應不同硬件設備和網絡環境。設計中的控制系統開發PC端既是開發者的工作機器,又是與工控機建立連接通信的終端機器,因此控制系統開發PC端具備協議數據轉換服務系統。協議數據轉換服務系統的作用是將非TCP/IP協議轉換成TCP/IP協議,從而將數據通過云服務傳送至工控機實現雙向遠程通信,工控機將TCP/IP協議轉換成非TCP/IP協議與硬件設備實現通信。
本設計充分考慮了平臺的穩定性,以確保系統在各種情況下都能穩定運行,提供可靠的遠程調試服務,保證調試信息的實時傳輸和處理,使開發者能夠及時了解硬件狀態。整個通信過程采用多種安全措施,確保調試數據和系統資源的安全。整體平臺采用分層架構,包括開發層、轉換層、服務層、硬件接口層和硬件層。各個層次負責不同的任務:
(1)開發層。
開發人員針對硬件控制系統的開發、調試,讓開發人員在工作過程中感受到無距離的差別感,及時掌握硬件的信息。
(2)轉換層。
轉換層負責將其他協議轉換成TCP/IP協議或將TCP/IP協議轉換成其他協議,使得平臺中間通信過程完全采用TCP/IP協議模式,解決如串口這樣不適合遠程通信協議的遠程通信問題。
(3)服務層。
服務層處理來自轉換層的請求和響應,轉發調試命令給硬件,并將調試結果返回給開發層。服務層還包括用戶管理、權限驗證等功能。
(4)工控層。
工控層負責接收來自服務層的命令以及發送給服務層的反饋信息,同時與轉換層實現信息交互。
(5)硬件接口層。
硬件接口層提供統一的硬件操作接口,封裝底層硬件操作指令,負責與硬件設備進行通信,執行調試命令,并返回執行結果。
(6)硬件層。
硬件層包括實際的硬件設備,如嵌入式系統、傳感器等,這些設備通過硬件接口層與工控機進行通信。
通信過程中為了保證數據的安全,對傳輸的調試數據進行加密處理,確保數據在傳輸過程中的安全性,同時,實現用戶身份認證機制,防止未經授權的用戶訪問系統,建立詳細的權限管理系統,對不同用戶分配不同的訪問和操作權限,記錄用戶的操作日志和系統運行日志,以便實行安全審計和故障排查。
2 平臺的功能模塊
根據平臺的總體設計思路,整個平臺所涉及的相關功能模塊如圖2所示。由于不同硬件設備連接所采取的協議有所不同,系統在設計時充分考慮了協議的差異,依據不同的連接硬件設備的方式,平臺提供了不同的通信模塊,每個模塊承擔了各自的任務,為整個調試平臺提供必要功能。
2.1 用戶管理及身份認證模塊
每個使用調試平臺的用戶必須擁有合法的身份,登錄后才能使用平臺實現遠程調試。用戶使用調試平臺首先需要注冊賬號,通過注冊賬號并在管理員審核通過后,用戶即擁有了使用調試平臺的合法身份。
2.2 數據加密解密模塊
數據在傳輸過程中采用了互聯網平臺,因此容易被攔截、破解以致硬件設備采用的協議、命令外泄,使設備安全出現問題。為了能夠確保數據在傳輸過程中的安全性,調試平臺采用了較為流行的AES雙向加密算法。
2.3 協議轉換模塊
實際項目中,通信協議的格式不統一,變量類型的定義方法各異[3]。硬件設備不僅采用TCP/IP協議與控制軟件通信,還能提供其他方式進行通信,如UDP協議、串口、藍牙等。為了使遠程調試時數據傳輸采用統一的傳輸協議,平臺使用協議轉換模塊對非TCP/IP協議進行協議轉換,同樣到達兩端時根據需要進行反轉換操作。在網絡傳輸過程中,數據能夠保持統一的傳輸協議,同時也解決了不能遠程連接的串口、藍牙等設備的遠程連接問題。
2.4 雙向通信模塊
當兩端進行數據通信時,控制軟件開發端與工控機之間需要相互發送請求或響應,這就必須保證兩端能夠互相收發數據。為了解決這個問題,平臺使用雙向通信模塊作為兩端通信的橋接,使不可直接訪問的兩端實現雙向通信的功能。
2.5 串口通信模塊
串口與其他網絡協議不同,是通過接口直接與硬件連接實現通信。為了能夠達到遠程連接效果,需要控制軟件開發的PC端模擬串口,從而實現向串口發送數據和接收來自串口的數據。控制軟件開發的PC端將命令發送給模擬串口,模擬串口轉換數據到TCP/IP協議再發送到工控機端,工控機端接收到數據后將TCP/IP協議傳輸的數據發送給串口,從而達到了串口遠程連接的效果。
2.6 藍牙通信模塊
藍牙連接硬件設備時也需要控制軟件開發的PC端模擬藍牙接口,讓控制軟件能夠連接藍牙,并發送和接收來自藍牙的數據。模擬藍牙接口收到數據后轉換成TCP/IP協議發送到工控機端,由工控機轉換TCP/IP協議傳輸的數據發送給藍牙接口,從而實現藍牙的遠程連接。
2.7 UDP協議通信模塊
UDP協議可以直接遠程連接實現遠程調試,但為了整個平臺的統一處理,依然在UDP協議通信過程中將數據轉換成TCP/IP協議以傳送協議。因此,UDP通信模塊負責模擬硬件設備的UDP服務器或客戶端,實現與控制軟件開發的PC端通信,從而使UDP協議遠程連接實現調試效果。
2.8 TCP/IP協議通信模塊
TCP/IP協議是最直接的通信方式,無需進行協議轉換,通過雙向通信模塊直接連接控制軟件開發的PC端和工控機,實現硬件設備的遠程連接。
2.9 日志模塊
日志模塊是對設備和平臺交互操作的各類信息進行細致記錄的功能,為運維和研發人員提供信息參考,便于查詢[4]。平臺記錄日志包括了開發者的操作行為、向硬件發送的命令以及硬件反饋的消息,方便開發者瀏覽調試歷史消息,也能夠分析開發者的調試問題的相關數據,如異常頻率、開發者調試時段、頻次等。
3 平臺相關核心實現
硬件設備控制軟件的遠程調試平臺實現主要采用Python語言,使用的相關模塊包括有Linux操作系統下模擬串口的PyVirtualSerialPort模塊,Windows操作系統下模擬串口的com0com,藍牙模塊中采用了Python語言的pybluez2模塊實現模擬藍牙,提供網絡訪問支持的socket、socketserver模塊以及多線程threading模塊,為了傳輸安全使用了加密解密模塊pycryptodome以提供AES算法支持。
在實現硬件控制軟件的遠程調試平臺時,由于平臺涉及多個組件和交互過程,不存在一個單一的實現算法,每個模塊都需要有不同的實現算法。模塊化能夠使整個平臺的各個功能獨立實現,再進行融合成為完整的硬件設備控制軟件系統遠程調試平臺。
3.1 自定義通信協議
根據開發PC端和工控機之間的遠程通信需要以及硬件設備接口相關協議定義平臺新的傳輸協議,其格式包括消息頭、消息體、校驗和等,還包括在建立連接時使用的握手算法協商通信參數,如加密方式、數據是否采用了壓縮格式等。一個簡單的協議定義參考如下。
消息頭:debug-data user client no encryption compress protocol。
消息體:發送給硬件設備的命令及命令相關參數。
校驗和:前面所有數據字節和作為整個消息的校驗數據。
其中,debug-data屬于消息固定內容,表示消息屬于調試數據;user指出當前消息來自哪個用戶;client表示消息來自哪個方向的客戶端,如是開發PC端還是工控機;no是客戶端的編號,這個編號需要開發PC端與對應的工控機必須完全相同;encryption指出此消息采取的壓縮算法,如DES、AES等;compress指出消息采用的壓縮算法;none表示無壓縮,若采用了壓縮格式需給出壓縮算法,如Huffman、LZW等;protocol表示與硬件通信采用的協議,如serial、udp、TCP/IP、bluetooth等。有了通信協議的定義,通過Python語言可以實現依據協議對傳輸信息的打包及解析。
3.2 數據加密和解密
Python語言提供了許多強大的內置函數和第三方庫,包括PyCrypto、Cryptography等加密解密庫,使得編寫和實現加密算法變得更加簡單和高效[5]。遠程調試平臺主要選擇了AES算法作為數據傳輸過程的加密算法,通過Python語言的pycryptodome模塊實現AES算法的加密和解密,其基本方法首先獲得算法對象:
aes = AES.new(key,AES.MODE_CBC,iv)
其中,key是隨機生成的128位加密密鑰,采用CBC(Cipher Block Chaining)塊加密模式;iv是隨機生成的AES初始化向量。
執行加密使用對象的encrypt()方法,解密使用對象的decrypt()方法,需要注意加密和解密時AES算法對象不能是同一個對象。
3.3 雙向通信模塊
在整個平臺中,硬件設備和工控機通常在一起,而控制軟件開發的PC距離較遠,這就必須解決遠程的雙向通信。具體實現采用了Python語言的socket、socketserver、threading模塊,構建一個基于TCP/IP協議的多線程服務系統。其實現的基本步驟如下:首先定義TCP/IP請求處理器和一個多線程網絡服務類;其次通過網絡服務類構造服務類對象;最后使用多線程啟動網絡服務,客戶端即可通過網絡連接服務。客戶端連接時根據其來向以及客戶端編號將開發PC端socket與工控機客戶端socket建立連接從而實現雙向通信。
3.4 串口通信模塊
由于硬件設備控制軟件的開發PC端遠程無法直接與硬件設備連接,串口通信在PC端需要借助協議轉換將串口連接轉變成TCP/IP連接,Python語言提供了基于Linux系統的PyVirtualSerialPort模塊及Windows系統的com0com模塊實現模擬串口,通過使用模擬串口讓控制軟件建立串口連接與數據的收發操作,而模擬串口在收到數據后通過TCP/IP協議傳輸給遠程工控機,工控機將TCP/IP傳輸得到的數據通過串口發送給硬件設備,獲得的響應消息再次通過TCP/IP協議傳輸給PC端的模擬串口,即到達控制軟件。
3.5 藍牙通信模塊
藍牙通信模塊與串口通信模塊類似,但藍牙連接硬件設備時采用無線方式,但其連接的距離非常有限,無法達到遠距離的硬件設備連接。藍牙通信采用Python語言的pybluez2模塊,通過pybluez2模塊藍牙設備,實現協議轉換并傳送數據,從而達到藍牙連接硬件設備的遠程調試。
4 結語
硬件設備的調試工作是硬件控制軟件開發工程師的經常性工作,遠程調試也是工程師的必備工具,對于硬件生產廠商尤為重要。遠程設備調試為企業解決了后期安裝調試、維護服務的遠程連接問題,在針對硬件設備開發控制軟件時,遠程控制軟件開發的PC端使開發人員產生無距離感,提高了軟件系統安裝調試、維護等工作效率,尤其對于生產硬件設備的中小企業,具有降低軟件開發、維護成本的優勢。在整個遠程調試平臺中,使用了至少3個獨立程序實現整個系統的融合,后續將重點研究如何使整個系統融合成一個獨立的系統。
參考文獻
[1]官劍,錢雪磊,韓留軍,等.基于以太網的FPGA遠程調試系統設計[J].電子技術應用,2023(2):115-120.
[2]任海旭.計算機網絡自動檢測控制系統軟件開發設計與實現[J].信息與電腦(理論版),2022(17):93-95.
[3]趙鵬,徐東超,劉明希,等.基于CODESYS平臺的城軌列車網絡控制系統軟件開發[J].智慧軌道交通,2023(6):40-44.
[4]俞曉誠.5G移動通信網絡下的岸橋電氣遠程調試平臺設計探析[J].機電信息,2023(5):10-14.
[5]吉強.Python在網絡安全加密解密領域中應用研究[J].網絡安全技術與應用,2023(12):27-29.
Design and implementation of remote debugging platform for hardware control system
Abstract: Aiming at the existing problems in remote debugging of hardware device control software, process of hardware device control software is studied. Combining the research and analysis of network, serial port, Bluetooth and other related technologies in Python language, a remote debugging platform for hardware device control software development and debugging is proposed. And through the application of Python language related modules, a remote debugging platform design has been implemented according to the design concept, which provides a remote debugging solution for hardware equipment manufacturers to develop control software, improves the work efficiency of developers, and reduces the development and maintenance costs of enterprises.
Key words: hardware devices; remote control; software debugging; protocol conversion; serial port simulation