

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