(浙江工業大學 信息工程學院,杭州 310023)
隨著智能制造時代的來臨,在工業生產領域提出了工業物聯網[1]的概念,其目的是通過工業資源的網絡互聯、數據互通和系統相互操作,實現制造過程的合理優化和制造環境的快速適應,以達到資源的高效利用。同時,云平臺技術的提出使得互聯網真正進入了云計算時代,依托云平臺將本地軟、硬件資源虛擬化,可以改變工業生產的模式并提升效率。
皮革加工行業中,裁斷機作為一種被廣泛使用的傳統手工設備,加工企業主要依靠人工方式進行裁斷作業,該方式不僅需要大量勞動力,且對于沖裁料的利用率低下,難以達到理想的效果。為了在一個有限的沖裁區間內實現對沖裁樣片的充分排列,提高沖裁料的利用率,許繼影[2]等人提出基于兩階段排放算法的矩形排樣優化方法、Satoshi Fujita[3]等人研究了可旋轉物品在二維裝箱問題中的解。如今對于裁斷機等傳統工業設備的聯網研究多數只是對其運行數據進行監測[4],如孫愷廷[5]等人設計的工業機器人三維虛擬監控系統、胡曉軒[6]等人面向船舶制造車間的數據采集與監控系統,這些研究往往是依靠各種傳感器設備將設備運行數據進行采集,之后通過對采集的數據做進一步分析,得出設備是否運行正常等結論,但并未改變設備的控制模式。目前,裁斷機的控制系統大多采用客戶端/服務端模式搭建,并嵌入了排樣算法實現裁床對沖裁料的自動加工。該模式下,對于每個機床終端在本地均需要為其配備一套相關設備[7],并安裝客戶端軟件,當終端數量增加時,其配套設備的成本會十分巨大。
針對上述問題,本文在裁斷機原有的客戶端/服務端控制模式基礎上,結合云技術和WEB技術設計了一款基于阿里云的裁斷機監控系統,依靠云平臺減少了系統對本地硬件資源的需求。系統主要分為本地運動控制端和阿里云WEB監控端。其中,WEB監控端采用前后端分離的方式搭建,前端用戶操作界面基于VUE框架編寫,后端基于Django框架編寫。本地運動控制端的工作主要是在本地服務器搭建了上位機系統,采用OPC UA協議實現了與裁斷機設備控制器的信息交互,采用MQTT協議完成了與云端的信息交互。最終使得用戶可以通過訪問部署在阿里云的操作界面完成對本地裁斷機設備的監控。
系統硬件結構如圖1所示。本地運動控制端由服務器、控制器和裁斷機設備組成。服務器搭建有上位機系統,該上位機系統通過OPC UA協議[8]實現一臺服務器與多個控制器間的數據交互,控制器采用AM335X芯片并搭建CodeSys系統,通過EtherCAT總線實現對裁斷機設備的控制。WEB監控端則部署在阿里云服務器上,實現用戶能夠通過訪問相關的網站地址,對本地的設備完成監控。

圖1 系統硬件結構圖
整個監控系統以基于CoDeSys[9]開發的裁斷機控制系統為研究對象進行搭建,主要完成阿里云WEB監控端和本地上位機系統的開發,實現對裁斷機的監控,整體軟件設計框圖如圖2所示。

圖2 系統軟件結構圖
通過在本地服務器搭建上位機系統,實現云端與本地控制器的數據交互。上位機主要采用Winfom框架開發,通過嵌入MQTT客戶端[10]和MySQL客戶端[11]實現與云端的數據通訊;通過嵌入OPC UA客戶端實現與控制器的數據通訊。其中MQTT主要完成一些實時控制命令的下發;MySQL用于存儲設備的運行數據;OPC UA實現將裁斷機運行數據下發至設備控制器以及回傳設備當前的運行狀態信息。
阿里云WEB監控端分為前后端兩部分,前端采用VUE框架開發,用戶可以操作前端頁面生成相關控制命令并依靠嵌入的MQTT客戶端完成命令的下發;后端采用Django框架[12]搭建,編寫了排樣算法負責生成裁斷機設備的運行數據,并保存至數據庫。
系統整體的監控流程如下:用戶使用平板電腦等移動終端訪問部署在云服務器的WEB界面,生成合適的刀模排樣結果[13-14]并下發控制命令至本地服務器,本地服務器中的上位機監聽到云端的控制命令后,會去數據庫中讀取對應的沖裁數據并下發至目標裁斷機的控制器,控制器根據這些數據控制裁斷機完成對沖裁料的加工。在沖裁的過程中,本地服務器會實時返回沖裁過程中裁斷機的運行狀態,如當前正在沖裁的樣片序號、本次對沖裁料的加工是否完成等。
本地對于裁斷機設備的控制系統主要采用C/S(客戶端/服務器端)模式進行搭建,主要由服務器與設備控制器組成。在服務器搭建有上位機系統并嵌入了OPC UA、MQTT以及MySQL客戶端。其中,OPC UA客戶端用于和裁斷機控制器實現信息的交互;MQTT客戶端模塊實現與云端實時數據的傳輸;MySQL客戶端模塊實現對云端MySQL數據庫的存取操作。
傳統的工業自動化解決方案由于在設備間的通信上采用不兼容和不可互操作的差別化標準,因而存在數據交互的困難。OPC UA協議采用客戶端/服務器模式和發布者/訂閱者模式為不同設備間實現信息的交互提供了方法。通過在地址空間定義節點類并實例化,采用層次結構進行訪問簡化了客戶端的訪問。C#語言可以實現OPC UA的自動化接口,開放給用戶一些方便的接口,支持自動配置、過程控制和數據存取功能的開發。通過在窗口界面中搭建用戶輸入和響應事件模塊,實現了瀏覽OPC UA服務器、修改數據以及訂閱數據等功能,其流程圖如3所示,具體實現方式如下:

圖3 OPC UA協議數據交互流程圖
(1)訪問OPC UA服務器節點:在主程序中引用“OpcUaHelper.Forms”庫,使用庫中的FormBrowseServer()函數實例化一個MyForm對象,該對象能夠以結構層次的方式對OPC UA服務器中的節點進行訪問。在訪問過程中,能夠游覽服務器所開放的相關節點信息。
(2)訂閱節點數據:使用“OpcUaHelper.Forms”庫中的OpcUaClient()函數實例化一個OPC UA客戶端對象,該對象內部包含了一系列對于服務器節點信息操作的方法。本系統采用其中的ConnectServer()方法實現對OPC UA服務器的連接,采用ReadNode()方法實現對OPC UA服務器的設備運行數據的采集,將所采集的數據轉成字符串形式并用C#語言中的String變量進行保存,用于后續與云端MQTT服務器進行數據交互。
(3)修改節點數據:采用“OpcUaHelper.Forms”庫中的WriteNode()方法實現對OPC UA服務器相關數據的修改,該函數均是通過訪問OPC UA服務器中節點的各個層次結構,在TCP/IP通訊協議的基礎上完成對裁斷機設備運行參數的修改。
為了實現本地與云端的數據交互,在上位機中嵌入了MQTT客戶端模塊和MySQL客戶端模塊。其中,MQTT主要用于和云端的實時數據交互,比如接收下發的運行設備編號和回傳設備運行狀態信息等,MySQL主要存放生成的排樣方案所對應的裁斷機運行數據。
(1)MySQL客戶端模塊:MySQL是一個關系型數據庫管理系統,關系型數據庫會將數據保存在不同的表中以增加存取速度并提高靈活性。如今,MySQL已經為各種編程語言提供了API接口,同時能夠作為一個庫嵌入其他的軟件中,使嵌入客戶端的方式實現數據的存儲得以實現,不僅提高了數據交互的實時性,也降低了本地客戶端的內存空間消耗。本系統的數據讀取模塊采用C#語言進行搭建并嵌入到本地上位機系統,在功能上實現對設備運行數據的讀取和解析。
(2)MQTT客戶端模塊:目前基于HTTP協議的物聯網系統開發的方式被頻繁采用,但在一些嵌入式系統或網絡帶寬昂貴的開發情況下,HTTP協議并不適用。MQTT作為一種低開銷、低帶寬占用的即時通訊協議,在工業物聯網、小型設備等方面有廣泛的應用。因此本客戶端選擇采用MQTT協議搭建數據交互模塊,實現對設備沖裁指令的下發和沖裁狀態信息的回傳。
阿里云WEB監控端基于B/S(瀏覽器/服務器)架構進行搭建,采用前后端分離的方式開發并部署至阿里云服務器。其中,前端WEB操作界面基于VUE框架編輯,開發了用戶操作界面和排樣結果可視化區域。后端采用Django框架搭建,主要編寫了刀模樣片排樣算法,可以根據刀模圖形的DXF文件信息[15]生成裁斷機設備的控制參數。在此基礎上,通過嵌入MQTT客戶端模塊實現和本地服務器的信息交互,監控端功能框圖如圖4所示。

圖4 WEB監控端功能框圖
為了實現對沖裁料的充分利用,需要對刀模樣片進行排樣。排樣的目標是在特定區域的矩形沖裁料內放置盡可能多的樣片,且樣片之間不能互相重合。本文根據實際沖裁情況設計了針對單一刀模樣片的排樣算法,算法將沖裁方案主要分為水平垂直正排、水平對頭單排垂直正排、水平正排垂直對頭單排3種。
如圖5所示,將圖中沖裁料坐標系記為{B},沖裁料第i行、j列刀模樣片的坐標系記為{Bij},{Bij}的原點相對于坐標系{B}的坐標值為xij、yij,其旋轉角度為θij。令dij(θij,θj(j+1))為沖裁料上排列的第i行、j列樣片與第i行、j+1列樣片的水平步距,d01為{B11}坐標原點到沖裁料Y軸的水平距離,dN(N+1)為第1行、N列樣片坐標系{B1N}的坐標原點到該樣片右側邊緣切線的水平距離。hij(θij,θ(i+1)j)為在沖裁料排列的第i行、j列樣片與第i+1行、j列樣片的垂直步距,h01為{B11}坐標原點到沖裁料X軸邊界的水平步距,h34為第3行、1列樣片坐標系{B31}坐標原點到該樣片上方邊緣切線的垂直距離。
水平垂直正排方案的排列情況如圖5所示,在該方案下,沖裁料上排列的樣片旋轉角度均一致。

圖5 水平垂直正排示意圖
水平對頭單排垂直正排方案的排列情況如圖6所示,在該方案下,沖裁料上排列的樣片奇數列和偶數列的旋轉角度差180°。

圖6 水平對頭單排垂直正排示意圖
水平正排垂直對頭單排方案的排列情況如圖7所示,在該方案下,沖裁料上排列的樣片奇數行和偶數行的旋轉角度差180°。

圖7 水平正排垂直對頭單排示意圖
記沖裁料一行能夠排列的樣片個數為N,m為一行樣片的總寬度,M為沖裁料的寬度,有m=d01+…+d(N-1)N,m 圖8 排樣方案生成流程圖 為了能夠實現云端對本地設備進行實時的數據交互,本系統依靠MQTT協議在阿里云服務器搭建了實時監控平臺,實現了與MQTT服務器的數據交互、裁斷機沖裁命令的下發以及沖裁過程狀態信息回傳等功能,具體實現方式如下: (1)與MQTT服務器交互:在前端VUE項目中引入Paho功能包,實現MQTT客戶端功能,生成MQTT客戶端前先編輯用于連接MQTT服務器的參數列表,如服務器IP地址、端口號等,具體如下ServerUri=′mq.tongxinmao.com′ServerPort=18832;TimeOut=5;KeepAlive=100;CleanSession=false;SSL=false;在此基礎上調用new Paho.MQTT.Client函數,創建MQTT Client實例,編寫onConnect()函數和onConnectionLost()函數用于登錄和斷開MQTT服務器;編寫WriteToStatus()函數,用于描述MQTT狀態;編寫onMessageArrived()函數,用于接收MQTT服務器的消息,實現與MQTT服務器數據交互功能。 (2)沖裁命令的下發:在前端VUE項目中編寫MQTT客戶端函數,當用戶點擊發送按鈕時,將待運行的裁斷機編號傳至MQTT服務器中特定的主題文件,本地服務器監聽到該主題有數據會將主題中的數據讀至本地并去云端數據庫中取得運行數據,完成下發。 (3)沖裁過程狀態信息實時回傳:當裁斷機設備在運行時,搭建在本地服務器會通過MQTT協議以一定的時間間隔將運行數據上傳至云端,該數據會被搭建在前端界面的MQTT客戶端訂閱并在可視化區域進行標記,實現了沖裁過程中對裁斷機運行狀態的實時監控。 對于本文設計的控制系統,通過實驗驗證其可行性。在WEB游覽器中輸入云端IP地址訪問操作界面,在界面中選用具有明顯大小頭的且形狀不規則1號刀模,點擊3種排樣方式最優解按鈕,在可視化區域可觀察到1號刀模樣片在一張寬為1 400 mm沖裁料上的排樣結果,如圖9所示。 圖9 排樣結果顯示 當確定最優排樣方案后,選擇待運行的裁斷機編號并點擊下發裁斷任務按鈕,系統會將排樣區域中第i行、j列樣片旋轉中心相對沖裁料原點的二維坐標值xij、yij以及自身旋轉角θij存入后端數據庫中,并發送裁斷機編號至本地服務器,數據庫中第一行沖裁樣片的排樣數據如表1所示。 表1 第一行沖裁樣片的排樣數據 本地服務器收到裁斷命令后,會讀取云端數據庫中的運行數據,并下發至裁斷機控制器,控制器界面顯示了裁斷機的運行狀態,并支持用戶對裁斷機做一些簡單的手動操作,控制器界面如圖10所示。 圖10 裁斷機控制器界面 綜上,測試結果表明本文所設計的系統能夠很好的對裁斷機進行監控。由表1可知,系統所設計的排樣算法能夠生成裁斷機所需的運行數據,并且依靠相應的傳輸協議可以將數據發送至設備控制器,實現對沖裁料的加工。 本文設計了一種基于云平臺的裁斷機監控系統,在本地服務器基于Winform框架搭建了上位機系統,通過OPC UA協議實現了與裁斷機控制器的數據交互。在阿里云服務器基于VUE框架設計了前端用戶操作界面,并通過Canvas標簽搭建了排樣結果可視化區域。基于Django框架設計了后端,主要編寫了刀模排樣算法用于生成單一刀模樣片在從材料上的排樣方案。同時,通過搭建MQTT數據交互模塊實現了裁斷機控制命令的下發和運行數據的回傳。通過該系統,用戶可以完成對裁斷機設備的監控。本文下一步研究工作的重點是將裁斷機設備的運行數據進行采集并根據數據對設備進行故障分析。
3.2 數據實時監控
4 實驗結果與分析



5 結束語