袁亞峰,楊 濤
(1.西南科技大學(xué) 信息工程學(xué)院,綿陽(yáng) 621010;2.特殊環(huán)境機(jī)器人技術(shù)四川重點(diǎn)實(shí)驗(yàn)室,綿陽(yáng) 621010)
隨著工業(yè)4.0戰(zhàn)略和“中國(guó)制造2025”的深入推進(jìn),由各類機(jī)器人與工業(yè)設(shè)備組成的自動(dòng)化生產(chǎn)線成為我國(guó)制造業(yè)變革的重要目標(biāo),也對(duì)生產(chǎn)線人員的操作技術(shù)提出了更高的要求,因此需采用高效、高質(zhì)量的培訓(xùn)方式來(lái)提高操作人員的熟練度[1]。然而傳統(tǒng)的生產(chǎn)線培訓(xùn)主要采用視頻教學(xué)與現(xiàn)場(chǎng)操作的方式,該方法學(xué)習(xí)效率低下,而且存在諸多安全隱患、影響正常的生產(chǎn)作業(yè)等問(wèn)題[2]。
目前,虛擬仿真技術(shù)為生產(chǎn)線培訓(xùn)系統(tǒng)提供了重要的技術(shù)支撐[3,4]。虛擬PLC技術(shù)是以傳統(tǒng)操作系統(tǒng)和計(jì)算機(jī)為軟件平臺(tái),實(shí)現(xiàn)PLC程序調(diào)試與仿真功能的PLC編輯器,具有編程語(yǔ)言標(biāo)準(zhǔn)化、豐富的I/O開(kāi)放接口及可仿真運(yùn)行的特點(diǎn)[5]。但各PLC生產(chǎn)廠商的產(chǎn)品存在軟件互不兼容、體系結(jié)構(gòu)封閉等缺陷,導(dǎo)致學(xué)員只能進(jìn)行簡(jiǎn)單的調(diào)試實(shí)驗(yàn),沒(méi)有控制對(duì)象與連接平臺(tái),不利于對(duì)PLC編程的學(xué)習(xí)[6]。虛擬仿真技術(shù)充分利用三維動(dòng)畫引擎以及Maya等建模、渲染軟件,逼真的還原生產(chǎn)線場(chǎng)景,加強(qiáng)學(xué)員對(duì)生產(chǎn)線控制系統(tǒng)的研究和生產(chǎn)線運(yùn)行流程的理解,降低培訓(xùn)系統(tǒng)的硬件投資,又顯著提高培訓(xùn)過(guò)程的安全性[7,8]。但傳統(tǒng)的虛擬仿真系統(tǒng)忽略了許多實(shí)際因素,沒(méi)有建立完善的工藝流程,降低了仿真逼真度;并且控制系統(tǒng)功能單一,不能實(shí)現(xiàn)全系統(tǒng)仿真,無(wú)法達(dá)到良好的培訓(xùn)效果[9]。
針對(duì)上述虛擬仿真系統(tǒng)中存在的問(wèn)題,本文提出一種基于虛擬PLC的生產(chǎn)線仿真系統(tǒng)。針對(duì)可編程控制器技術(shù)進(jìn)行了虛擬PLC結(jié)構(gòu)分析與邏輯處理算法設(shè)計(jì);采用模塊化設(shè)計(jì)方法,建立了一套將機(jī)械結(jié)構(gòu)、電氣控制技術(shù)、PLC控制技術(shù)充分融合的生產(chǎn)線仿真平臺(tái);利用Socket網(wǎng)絡(luò)通信協(xié)議實(shí)現(xiàn)虛擬PLC和生產(chǎn)線仿真平臺(tái)的數(shù)據(jù)通信。
如圖1所示,本文將生產(chǎn)線仿真系統(tǒng)分為虛擬PLC開(kāi)發(fā)系統(tǒng)和生產(chǎn)線仿真平臺(tái)。兩部分通過(guò)交換梯形圖信息和虛擬設(shè)備狀態(tài)形成閉環(huán)通信。
圖1 生產(chǎn)線仿真系統(tǒng)結(jié)構(gòu)
虛擬PLC是仿真系統(tǒng)的控制器,主要包括PLC編輯模塊和仿真模塊,控制物流生產(chǎn)線的工作流程。在虛擬PLC中編寫物流生產(chǎn)線的控制程序,經(jīng)過(guò)程序解析完成對(duì)PLC梯形圖程序的仿真運(yùn)算。將仿真結(jié)果提供給通信接口進(jìn)行傳輸,生產(chǎn)線仿真平臺(tái)接收程序的可執(zhí)行代碼后控制虛擬設(shè)備運(yùn)行。
生產(chǎn)線仿真平臺(tái)包括了現(xiàn)代工業(yè)系統(tǒng)中所涉及的PLC控制系統(tǒng)、電機(jī)驅(qū)動(dòng)、工業(yè)機(jī)器人等多種技術(shù),由各自獨(dú)立而又交互相連的不同工作站組成,每個(gè)工作站均由單獨(dú)的PLC程序控制,能夠?qū)W(xué)員進(jìn)行設(shè)計(jì)、編程和調(diào)試等一系列的訓(xùn)練。Unity3D作為生產(chǎn)線仿真平臺(tái)的開(kāi)發(fā)引擎,提供了高效的實(shí)時(shí)三維構(gòu)建技術(shù)與成熟的DirectX引擎,可以模擬真實(shí)設(shè)備行為[10],用Unity3D建立上述生產(chǎn)線仿真平臺(tái),配以動(dòng)畫的方式呈現(xiàn)出生產(chǎn)線設(shè)備的工作流程,完成生產(chǎn)線運(yùn)行仿真。編寫通信接口將虛擬PLC與生產(chǎn)線控制對(duì)象連接,實(shí)現(xiàn)數(shù)據(jù)交換。
圖2 生產(chǎn)線結(jié)構(gòu)示意圖
開(kāi)發(fā)系統(tǒng)由編輯模塊和仿真模塊組成。編輯模塊主要功能包括梯形圖編輯、梯形圖注釋、保存與讀取。仿真模塊進(jìn)行梯形圖的語(yǔ)法邏輯檢查、串并聯(lián)邏輯處理和狀態(tài)監(jiān)控。虛擬PLC結(jié)構(gòu)如圖3所示。
圖3 虛擬PLC結(jié)構(gòu)
依據(jù)IEC61131-3國(guó)際標(biāo)準(zhǔn)制定虛擬PLC梯形圖的編程規(guī)則與要求,利用Visual Studio 2017中Winform窗體應(yīng)用程序設(shè)計(jì)編輯界面,實(shí)現(xiàn)梯形圖的編輯、注釋等功能。梯形圖編輯區(qū)中左右兩端的粗線代表母線,編輯區(qū)被分割成多行多列的矩陣網(wǎng)絡(luò),行列數(shù)可由用戶設(shè)置。每個(gè)網(wǎng)絡(luò)表示一個(gè)PLC梯形圖單元,采用C#控件實(shí)現(xiàn),該控件包含有圖符、坐標(biāo)、大小等屬性,是輸入開(kāi)關(guān)、輸出負(fù)載等器件的抽象表示。隨著PLC控制對(duì)象的多元化及控制功能的具體化,梯形圖的控件類型越加豐富。因此,提取所有控件的相同特性,根據(jù)C#語(yǔ)言的多態(tài)性、繼承性和封裝性,設(shè)計(jì)一個(gè)控件的基類Control,包含控件所有的屬性與接口,通過(guò)類的擴(kuò)展創(chuàng)建具有不同特性的控件。
2.2.1 基于鄰接矩陣的邏輯處理算法
本文提出一種基于鄰接矩陣的轉(zhuǎn)換方法,利用矩陣化思想建立一個(gè)完整的有向圖,將梯形圖控件間串并聯(lián)邏輯關(guān)系轉(zhuǎn)化為數(shù)值關(guān)系,分析梯形圖的層次,從而精確地計(jì)算出各個(gè)控件間串并聯(lián)關(guān)系。
梯形圖邏輯關(guān)系的處理過(guò)程大體分為以下兩步:
1)梯形圖映射為鄰接矩陣表。梯形圖由多個(gè)梯級(jí)構(gòu)成,通過(guò)梯形圖存儲(chǔ)數(shù)據(jù)結(jié)構(gòu),標(biāo)明了各個(gè)控件所在的行與列,因此梯形圖本質(zhì)上是一個(gè)矩陣表。在梯形圖的轉(zhuǎn)換過(guò)程中,遵循自上而下、從左往右的原則,逐個(gè)梯級(jí)進(jìn)行掃描,得到梯形圖控件數(shù)量N,建立一個(gè)N*N的二維矩陣表,從左母線第一個(gè)控件開(kāi)始,依次找出并記錄當(dāng)前控件到后繼控件所有連接路徑,沿著指定路徑往右母線方向讀取,從中所經(jīng)過(guò)的控件與當(dāng)前控件的關(guān)系在鄰接矩陣中表示為1,未經(jīng)過(guò)的控件在鄰接矩陣中表示為0。
例如掃描圖4(a)中的梯形圖,從左母線第一個(gè)控件I0.0開(kāi)始,I0.0與I0.1相連,則矩陣表中I0.0與I0.1的連接關(guān)系為1。I0.3與I0.1相連,則連接關(guān)系為1。I0.1與I0.2和I0.4直接相連,則與之連接關(guān)系為1。則根據(jù)規(guī)則,梯形圖至鄰接矩陣的轉(zhuǎn)換如圖4(b)所示。
圖4 梯形圖至鄰接矩陣表的轉(zhuǎn)換
2)矩陣表轉(zhuǎn)換為有向圖。逐行掃描矩陣表,構(gòu)建一個(gè)以控件為頂點(diǎn)、連接關(guān)系為邊的有向圖。以圖5中鄰接矩陣表為例,I0.0和I0.3的右路徑都直接連接I0.1,因此是并聯(lián)關(guān)系,可以用并1表示;并1與I0.1是串聯(lián)關(guān)系,可以用串1表示;I0.2和I0.4的右路徑都連接Q0.0,因此是并聯(lián)關(guān)系,用并2表示。如此不斷掃描更新,最終建立一個(gè)有向圖如圖5所示。
圖5 串并聯(lián)掃描生成的有向圖
2.2.2 語(yǔ)法邏輯檢查
梯形圖的程序需要符合IEC61131-3國(guó)際標(biāo)準(zhǔn)規(guī)定,當(dāng)發(fā)現(xiàn)梯形圖存在錯(cuò)誤時(shí),軟件將彈出錯(cuò)誤提示窗口,向用戶指出錯(cuò)誤的位置和類型。針對(duì)梯形圖常見(jiàn)錯(cuò)誤進(jìn)行如下的分類:梯形圖中控件短接,被短接的控件無(wú)法正常工作;出現(xiàn)斷路的情況,控件之間沒(méi)有連接完整;控件的參數(shù)未進(jìn)行設(shè)置。圖6為語(yǔ)法檢查流程。
圖6 語(yǔ)法檢查流程圖
三維模型的建立是生產(chǎn)線仿真平臺(tái)的基礎(chǔ),按照實(shí)際現(xiàn)場(chǎng)設(shè)備,采用三維建模軟件Maya繪制出各個(gè)設(shè)備的模型,如環(huán)形輸送帶、機(jī)器人、直流電機(jī)、推料氣缸等,設(shè)備模型的尺寸需要按照比例與真實(shí)設(shè)備一致,建立的模型需要移除重復(fù)點(diǎn)和重復(fù)面,減少模型貼圖量,以降低硬件負(fù)擔(dān),提高系統(tǒng)運(yùn)行速度。
生產(chǎn)線仿真平臺(tái)模擬實(shí)際設(shè)備工作時(shí)的真實(shí)場(chǎng)景,通過(guò)現(xiàn)場(chǎng)調(diào)研對(duì)實(shí)際物流生產(chǎn)線的性能要求和工藝流程進(jìn)行分析,結(jié)合生產(chǎn)線培訓(xùn)的具體情況,平臺(tái)需要完成對(duì)物料的運(yùn)輸、檢測(cè)、移除、存放等復(fù)雜過(guò)程,因此對(duì)其進(jìn)行簡(jiǎn)化處理保留主干。工藝流程如下:環(huán)形輸送線運(yùn)行,井式供料裝置推動(dòng)物料至環(huán)形輸送線上,物料在輸送線上依次進(jìn)行掃碼檢測(cè)、顏色檢測(cè)和外形檢測(cè),不合格的物料由剔除裝置移除,合格的物料被推送至設(shè)備暫存臺(tái),機(jī)器人抓取物料將其放入鏈?zhǔn)捷斔蜋C(jī)的托盤中。當(dāng)托盤中的物料達(dá)到預(yù)定重量時(shí),搬運(yùn)機(jī)械手抓取托盤放入立體庫(kù)中。物流生產(chǎn)線工藝流程如圖7所示。
圖7 物流生產(chǎn)線工藝流程
本系統(tǒng)采用的數(shù)據(jù)類型主要是數(shù)字量。PLC數(shù)字量輸入有系統(tǒng)的啟動(dòng)按鈕、停止按鈕、設(shè)備的工作狀態(tài)等,數(shù)字量輸出有電機(jī)、指示燈、機(jī)器人部件電磁閥的開(kāi)關(guān)等。部分I/O端口分配如表1所示。
表1 I/O端口分配表
動(dòng)畫是仿真系統(tǒng)的主要內(nèi)容之一,它直觀地展現(xiàn)了設(shè)備的驅(qū)動(dòng)原理與生產(chǎn)線的工作流程。生產(chǎn)線仿真平臺(tái)涉及的運(yùn)動(dòng)有物料在生產(chǎn)線上的移動(dòng)、環(huán)形輸送帶的環(huán)繞運(yùn)動(dòng),機(jī)器人的抓取釋放,推料氣缸的推進(jìn)動(dòng)作等;不僅模型復(fù)雜,而且各設(shè)備的運(yùn)動(dòng)相互耦合,導(dǎo)致腳本驅(qū)動(dòng)的實(shí)現(xiàn)方法較為困難。此時(shí),可以采用Animation關(guān)鍵幀動(dòng)畫技術(shù)來(lái)實(shí)現(xiàn),采用模塊化的思想將系統(tǒng)進(jìn)行劃分,最終將各模塊的動(dòng)畫相組合完成整個(gè)生產(chǎn)線仿真平臺(tái)的動(dòng)畫制作
關(guān)鍵幀動(dòng)畫設(shè)計(jì)的核心方法是對(duì)設(shè)備的工作流程進(jìn)行逐幀分解,每一幀記錄設(shè)備模型的代表性位置,在每?jī)蓚€(gè)關(guān)鍵幀之間自動(dòng)生成設(shè)備的運(yùn)動(dòng)路徑,關(guān)鍵幀設(shè)置完成后,將每幀按先后順序與頻率進(jìn)行播放,其連續(xù)播放所形成的序列幀動(dòng)畫就能完整的演示生產(chǎn)線設(shè)備的工作流程,完成生產(chǎn)線運(yùn)行仿真。
Unity3D和虛擬PLC作為兩個(gè)獨(dú)立運(yùn)行的進(jìn)程,都有獨(dú)立的代碼和數(shù)據(jù)空間,因此它們的資源分配和調(diào)度也相互獨(dú)立,同時(shí)運(yùn)行多個(gè)進(jìn)程,能夠最大化利用CPU的資源,提高系統(tǒng)的運(yùn)行速度。
Socket網(wǎng)絡(luò)協(xié)議提供了豐富的接口,不同的進(jìn)程按照制定好的規(guī)則進(jìn)行數(shù)據(jù)的雙向傳輸。在生產(chǎn)線仿真系統(tǒng)中,采用Socket網(wǎng)絡(luò)協(xié)議搭建了連接虛擬PLC與Unity3D的通信接口,通過(guò)將PLC梯形圖信息和虛擬設(shè)備狀態(tài)互相傳輸給彼此,實(shí)現(xiàn)PLC仿真狀態(tài)與生產(chǎn)線設(shè)備運(yùn)動(dòng)狀態(tài)的一致性。
I/O分配確定了生產(chǎn)線上每個(gè)虛擬設(shè)備所對(duì)應(yīng)的PLC控制端口。通訊協(xié)議將PLC的輸出端與Unity3D的I/O端口對(duì)接,PLC的輸出信號(hào)會(huì)改變I/O端口的狀態(tài),Unity3D循環(huán)檢測(cè)設(shè)備端口的數(shù)字量信息(用0或1表示),實(shí)現(xiàn)對(duì)虛擬設(shè)備狀態(tài)的控制。Unity3D將虛擬設(shè)備的端口狀態(tài)發(fā)送給PLC的輸入端,改變PLC中對(duì)應(yīng)控件的開(kāi)閉狀態(tài),實(shí)現(xiàn)軟件在環(huán)調(diào)試。虛擬PLC與Unity3D通過(guò)交換輸入輸出信號(hào)形成閉合回路。
在虛擬PLC中新建梯形圖,根據(jù)物流生產(chǎn)線工作流程編輯如圖8所示PLC控制程序,按照對(duì)應(yīng)的I/O端口號(hào)將PLC與生產(chǎn)線平臺(tái)的設(shè)備端口配對(duì),點(diǎn)擊“開(kāi)始仿真”,此時(shí)虛擬PLC與生產(chǎn)線仿真平臺(tái)連接成功。
圖8 PLC控制程序
進(jìn)入生產(chǎn)線仿真平臺(tái),點(diǎn)擊“運(yùn)行”按鈕啟動(dòng)仿真程序,然后點(diǎn)擊“啟動(dòng)”按鈕,物流生產(chǎn)線控制系統(tǒng)開(kāi)始運(yùn)行。虛擬設(shè)備將按照PLC控制程序依次完成物料輸送、物料檢測(cè)、機(jī)器人碼垛、托盤輸送、托盤出入庫(kù)等操作。運(yùn)行效果如圖9所示。
圖9 運(yùn)行效果
測(cè)試結(jié)果表明,本文開(kāi)發(fā)的基于虛擬PLC的生產(chǎn)線仿真系統(tǒng)按照PLC程序設(shè)定正常運(yùn)行。可以實(shí)現(xiàn)運(yùn)輸、碼垛、搬運(yùn)和PLC綜合實(shí)訓(xùn)等功能要求,
本文分析了物流生產(chǎn)線的組成和工藝流程,結(jié)合工業(yè)培訓(xùn)的實(shí)際需求,采用模塊化的設(shè)計(jì)思想開(kāi)發(fā)了適用于技能培訓(xùn)的生產(chǎn)線仿真系統(tǒng),該系統(tǒng)層次分明、靈活度高,具備完善的工藝流程。虛擬PLC作為仿真系統(tǒng)的控制器,能準(zhǔn)確地完成梯形圖程序的編輯,采用鄰接矩陣算法實(shí)現(xiàn)梯形圖仿真功能,建立Socket通訊協(xié)議完成與生產(chǎn)線仿真平臺(tái)的數(shù)據(jù)交互,實(shí)現(xiàn)生產(chǎn)線智能控制。
虛擬調(diào)試與實(shí)驗(yàn)結(jié)果顯示,其仿真結(jié)果與模型運(yùn)行結(jié)果能實(shí)現(xiàn)PLC編程訓(xùn)練、生產(chǎn)線運(yùn)行演示和對(duì)生產(chǎn)線控制仿真的研究,為生產(chǎn)線操作人員的培訓(xùn)工作提供了有效方案。