蔚晟楠 ,趙圓圓 ,張 帆 *,譚躍剛,方 濤
(1.武漢理工大學機電工程學院,武漢430070;2.湖北嘉一三維高科股份有限公司,武漢430070)
區別于傳統的加工方式,3D打印是一種將材料進行累加制造的技術,十分適合于單件或小批量的快速制造[1],在醫學、建筑、制造業等領域得到較為廣泛的應用[2],因而3D打印設備的保有量迅速上升。物聯網技術可以通過泛在物聯的方式為3D打印行業賦能,其通過傳感器采集數據并將數據統一到云端進行分析和計算,從而組建若干相互聯系的映射網絡,這不僅方便了3D打印智能車間大量設備節點的遠程管理,還為企業加工任務變更、加工路徑規劃等問題提供即時解決策略,有效降低了3D打印生產過程中的故障造成的經濟損失,促使設備之間進行信息交互,進而完成設備制造信息的集成管控[3]。
但是在當前物聯網環境下,由于不同3D打印設備所使用的固件種類不同,如Sprinter、Reprap和Marlin等,其解碼方案各不相同,導致通信協議不能完全統一[4],這使得3D打印設備傳來的數據很難通過統一的方式進行處理和解析;同時,設備實時狀態的有效的遠程監控需要可靠的應用層傳輸協議。因而,需要設計一種物聯網環境下的3D打印設備通信協議適配策略來實現3D打印設備有效的物聯網接入。
針對上述問題,國內外學者開展了不少研究。陳文藝和田創[5]提出了設計不同模塊控制協議解析的集成化策略,在協議適配層,它使用node.js中的net模塊構建TCP客戶端并對設備模型數據進行封裝。葉青[6]設計出一種面向配置的協議解析方法,但對于超出調研范圍的協議無法處理,需要人工自行配置。趙凱和張景峰[7]提出了面向接口的通過三種XML配置文件進行協議適配的方法,對于一類協議無需重復編寫配置文件。王永娜和趙奎等人[8]與趙凱均使用XML文件表現協議格式和內容,但有所區別的是,王永娜等人創新性地基于狀態機原理通過自定義協議解析規則完成對應功能,最終形成標準協議。石榮和蔡樂等人[9]提出了基于關聯規則挖掘進行識別的方法,通過提取特征庫中的頻繁集、對匹配字符串的位置進行記錄,將關聯關系作為協議識別的另一個特征,最終達到識別協議的目的。但其局限性體現在:這些適配策略未充分利用3D打印設備通信協議的特點,適配過程復雜。基于上述局限性不難看出,它們無法滿足針對3D打印領域的物聯接入系統協議自動化適配的需求。
因此,為滿足不同3D打印設備適配接入的需求,本文提出一種基于字符串分割排序與二分查找的3D打印通信協議適配策略,該策略通過字符串分割、排序、二分查找及計算相似度等操作,能夠有效地對不同的通信協議進行識別、匹配與解析。同時,制定了一套用于3D打印設備物聯接入的可靠通信協議,并進行了軟硬件設計及測試。經實際環境測試所設計的系統能夠正常運行,安全可靠。
3D打印物聯接入系統由3D打印設備、3D打印物聯接入裝置和云端服務器組成,系統連接圖如圖1所示。3D打印物聯接入裝置通過串口接收設備運行狀態信息和向打印設備發送控制指令,通過網口和Wi-Fi接收云端發送的控制指令、將各項數據發送到平臺及接受和發送心跳包。用戶可以登錄物聯云服務平臺進行監控、管理和數據分析等操作。在這一工作流程中,網絡通信部分需要可靠性協議的支撐,而物聯接入的全過程均需通過協議適配操作來實現其不同階段的功能。

圖13 D打印物聯接入系統連接圖
數據協議是指通信過程中規定的數據格式和交互過程。通過研究許多3D打印數據協議后可以將3D打印數據協議如表1進行表示。標識符在每個協議中都有不同的體現,代表該協議的特殊性,數據開始標志則從一定程度上體現了數據的類型,如溫度、擠料和位置數據等。

表1 數據協議的一般表示形式
(1)不同固件的數據協議
當向Marlin固件類型的3D打印設備發送M105指令時,設備返回數據協議如下:
Ok T:15.00/25.00 B:20.00/30.00@:0.00 B@:0.00數據,其中Ok就是該固件特有的標識符,T表示噴頭溫度數據開始的標志,15.00即為所需要的數據,B:20.00亦然。而向Reprap固件類型的3D打印設備發送M105指令時,設備返回數據協議如下:
Ok T:15 B:20
數據。其他固件與之類似,均采用相同的表達方式。
(2)同一固件的不同數據協議
當請求Marlin固件類型的3D打印設備溫度數據時,設備將返回
Ok T:15.00/25.00 B:20.00/30.00@:0.00 B@:0.00
數據,而當向該固件類型的3D打印設備位置數據時,設備將返回
X:100.00 Y:0.00 Z:0.00 E:0.00 Count X:8000 Y:0 Z:0
數據,在這一回顯內容中,無標識符,直接以數據開始標志開頭并加以數據表示,其他固件亦然。
由此可見,不同固件類型的協議及請求不同數據的協議所返回的信息均不同。因此,論文擬將上述區別作為解決不同固件或同固件不同數據識別適配問題的出發點,進而完成不同數據協議的適配。
(1)固件適配
協議適配策略包括固件類型匹配和協議內容匹配兩方面,其業務邏輯如圖2所示。

圖2 固件類型適配流程
固件類型適配可以分為已知協議適配及人工干預層組成,已知協議的適配環節由消息接收層、適配決策層和協議封裝層構成,人工干預層主要包括不同的接口及封裝操作組成。對于不同協議,其基本結構類似,不同主要體現在標識符的不同和數據開始的標志不同。因此,當串口獲取到某一條通信協議后,系統將按照統一的方式把該信息送至消息接收層,該層將對長字符串進行分割并按照英文字母順序進行排序,這樣能夠有效減少數據匹配過程所花費的時間,提高了匹配的效率。二分查找算法在一定程度上能夠加快數據查找的速度,但其查找條件為不可變字符,同時庫中協議信息也可能因為時效性較差而有一定偏差或大小寫拼寫有錯誤,因此需要在保證一定可信度的前提下,根據協議字符數的多少按80%比例確定二分查找的完成條件。基于此,還要對剩下的字符計算相似程度,取最大者為匹配確定的協議。隨后將通過數據協議的適配過程考量其符合程度,若無法正確解析,將返回協議適配階段重新匹配或進行人工干預。
在物聯接入系統中,協議以

形式存在。任何對協議內容的操作完成后都需將該協議置于字典頂,進而減少適配時間。
(2)數據協議適配
除不同固件類型外,適配問題仍然要處理同一設備不同類型數據協議異構的問題。針對這一問題,采取如下適配方法,工作流程為:物聯接入裝置向3D打印設備請求溫度和位置數據,隨后將從串口處獲取打印設備發來的狀態信息,之后接入裝置將通過特定字符串正則的方法將數據信息提取,同時檢查提取的信息是否為數據或合理字符,若檢查成功則將所有數據放進數組并加以運用,若不成功則會反復正則多次,直至超時后返回協議適配環節,具體實現流程圖如圖3所示。

圖3 數據協議適配流程圖
為了有效地進行3D打印設備在線上平臺的接入,在3D打印物聯接入系統中設計了4種通信協議:3D打印設備平臺認證通信協議、3D打印設備狀態數據封裝協議、3D打印平臺遠程控制指令協議和心跳檢測通信檢測協議。在3D打印物聯接入系統中,為了實現3D打印物聯服務平臺的設備認證,本文設計了3D打印設備平臺認證通信協議。在數據通訊的過程中,心跳檢測通信協議可以用于保證長連接的存活與可靠性,而3D打印設備狀態數據封裝協議和3D打印平臺遠程控制指令協議則分別用于數據上傳平臺和向設備發送指令的通信場景。
(1)3D打印設備平臺認證通信協議
該協議用于授權的3D打印設備接入線上平臺的認證過程。其認證流程如圖4所示。

圖43 D打印設備接入平臺認證過程
其主要包括設備平臺注冊、設備線下激活、設備平臺認證三個環節。在注冊環節中,用戶在平臺設置密碼,并生成設備的唯一標識碼,用戶在線下激活環節將密碼和標識碼導入物聯設備,最后在設備第一次接入平臺后進行認證比對。通過認證協議,平臺可以對設備進行授權管理。
(2)3D打印設備狀態數據封裝協議
該協議用于將不同型號的3D打印數據識別后進行統一的封裝,接入線上平臺后便于統一解析。封裝的格式采用了基于鍵值對的JSON格式。狀態數據主要包括設備的通用信息(設備標識碼和IP)、傳感器數據(溫度數據)、打印數據(X,Y,Z軸的位置數據以及擠料)、打印進度等實時數據。
(3)3D打印平臺遠程控制指令協議
該協議主要用于平臺遠程控制3D打印,發送控制指令。設計了多次交互流程,保證指令的正確發送和接收。
首先,用戶點擊按鈕將使云平臺向物聯接入裝置發送了數據格式 {EID:***,I:***}END的DATA2數據。然后,裝置接收到指令信息后將接收的數據以{EID:***,RI:***}END 的數據格式將 DATA22 回顯使平臺進行確認,若一致,平臺將發送{EID:***,IDE:OK}END的確認信息DATA222返回物聯接入裝置。接著,裝置收到確認消息后會控制串口給終端設備發送DATA3,設備執行完畢后將返回DATA33信息,其格式體現為{I:***,IS:***}。最后,物聯接入裝置將DATA33加入設備編號信息形成DATA333發送回平臺,至此一次通信完成。
(4)心跳檢測
心跳檢測通信協議主要完成空包“{}”的發送使通信另一方識別到該信號用以確認狀態。當平臺向物聯接入裝置發送“{}”數據時,數據接收模塊將識別到這一特定信息并將標志位置位,每隔1 min系統將查看一次標志位的狀態,若標志位置位,則將之前計數清零并復位標志位,否則計數增一。如圖5所示,當計數達到三時,認為平臺與物聯接入裝置通信已經斷開,則會重新啟動來建立新的 socket連接。

圖5 3D打印物聯接入系統數據交互過程及數據協議
如圖6所示,3D打印物聯服務平臺采用分布式存儲技術和MQTT協議相結合的方式完成多個節點的接入、大量實時狀態數據的處理與解析及控制指令的發送。

圖63 D打印物聯服務平臺
本文采用Orange Pi Zero硬件并基于Armbian系統搭建物聯接入系統。
圖7為本系統數據處理模塊的單元測試展示圖。網絡連接模塊基于flask框架完成網絡接入功能。本物聯接入系統在Armbian中移除了network manager并對interfaces文件進行修改,僅在文件中規定了IP的類型和標識符,通過編寫bash腳本控制系統網絡初始化過程和IP獲取邏輯,降低了初始化時間。

圖7 物聯接入系統軟件
終端連接模塊完成串口尋找和波特率的設置工作,其遍歷全部可用端口并開啟多線程,避免數據堵塞甚至工作流程的崩潰。數據處理模塊則首先向3D打印設備確認串口狀態,隨后即可按照收一條數據后再發一條數據的方式獲取3D打印設備運行狀態數據及發送設備控制指令。數據發送模塊主要是通過建立socket連接并依靠心跳檢測包保證通信鏈路的正常工作,增強了通信過程的可靠性與完整性。
本系統經過測試,能夠穩定完成既定功能,主要測試參數如表2所示。

表2 主要測試參數
圖8和圖9分別為兩種不同固件類型的3D打印設備接入實物展示及其物聯平臺接入數據展示界面。其中,圖8所示的3D打印設備內嵌Marlin類型的固件,圖9所示的3D打印設備內嵌Reprap類型的固件。圖8測試時間為15 min,分別顯示了熱床打印過程中實時噴頭溫度及XYZ三軸坐標數據。如圖所示,噴頭溫度無明顯波動,在打印過程中保持在40°上下,三軸坐標可以根據3D打印設備的運動及時顯示出來;圖9表示測試開始前10 s的噴頭溫度及XY軸坐標曲線,在打印過程開始時,3D打印接入裝置能夠迅速將傳感器獲取的數據傳輸至平臺,溫度保持200°左右,噴頭溫度無明顯數據缺失,右上角圖線平緩,表明此時X軸無運動。上述實驗都驗證了利用設計的接入協議,能夠通過物聯網平臺遠程有效地對不同固件的打印機進行監控。

圖8 物聯接入系統測試(a)

圖9 物聯接入系統測試(b)
針對目前3D打印設備物聯接入系統仍存在通信協議不統一導致無法實現不同3D打印設備有效接入的問題,本文提出了一種基于知識庫的3D打印設備物聯適配接入策略,通過長字符串分割排序、二分查找和相似度計算、協議重排等操作極大地減少了協議匹配的時間;制定了用于可靠數據傳輸和狀態檢測的通信協議。分別將Marlin固件類型、Reprap固件類型的3D打印設備分別接入3D打印物聯服務平臺,證實了方案的可行性。本文所作工作解決了不同固件類型的3D打印設備的適配接入問題,方便了3D打印設備資源的調度,同時通過物聯網將數據發送至物聯服務平臺可以為數字孿生等上層應用提供便利。