徐長盛 楊土榮 李 偉
(上海寶信軟件股份有限公司湛江分公司 廣東 湛江:524000)
國內(nèi)外關(guān)于工業(yè)軟件的定義不盡相同,一般認(rèn)為工業(yè)軟件指專用于或主要用于工業(yè)領(lǐng)域,以提高工業(yè)企業(yè)研發(fā)、制造、管理水平和工業(yè)裝備性能的軟件[1]。工業(yè)軟件對實時性、可靠性和安全性有極高要求。鋼鐵業(yè)作為典型的流程制造業(yè),其工業(yè)軟件的應(yīng)用具有先進(jìn)性和典型性,寶鋼對工業(yè)軟件按功能層次進(jìn)行劃分[2]:L4企業(yè)資源計劃(ERP)、L3制造執(zhí)行系統(tǒng)(MES)、L2過程控制系統(tǒng)(PCS)、L1基礎(chǔ)自動化系統(tǒng)(BAS)等。
工業(yè)軟件一般都屬于定制化開發(fā)軟件,交付前必須進(jìn)行反復(fù)測試。傳統(tǒng)的工業(yè)軟件測試一般分離線測試(不帶設(shè)備)與現(xiàn)場聯(lián)調(diào)測試(與生產(chǎn)工藝和設(shè)備全部打通)。離線測試往往只能做單體功能測試和部分集成測試,雖可模擬一些外部生產(chǎn)設(shè)備信號,但由于不能完整模擬真實生產(chǎn)情況,測試不全面。軟件發(fā)布運(yùn)行后不能正常工作、發(fā)生錯誤的情況較多。
生產(chǎn)線正常投運(yùn)后還面臨持續(xù)的參數(shù)和流程優(yōu)化、加入新功能等情況;隨著工業(yè)4.0[3]、智能制造[4]的大力推進(jìn),對工業(yè)軟件交付更是提出了新的要求[5]:實時性要求更高、功能更加復(fù)雜,這樣出錯的機(jī)會和成本也大大提升。
自動化測試、敏捷開發(fā)、持續(xù)交付(Continuous delivery,CD)和開發(fā)運(yùn)維一體化(DevOps)[6-7]等軟件工程新技術(shù)在商業(yè)軟件開發(fā)、測試、發(fā)布中取得較好效果,但在工業(yè)軟件領(lǐng)域應(yīng)用較為困難,很少有相關(guān)研究成果,主要難點在于無法模擬、再現(xiàn)真實生產(chǎn)情況。
如何讓工業(yè)軟件在實際投用前盡可能地進(jìn)行與真實生產(chǎn)情況一致的充分測試?近年來興起的數(shù)字孿生技術(shù)(Digital Twin,DW)提供了可能[8]。對于什么是數(shù)字孿生有不同的認(rèn)識[9],本文認(rèn)為在冶金制造業(yè),數(shù)字孿生可將物理實體和系統(tǒng)的關(guān)鍵特征和行為映射到虛擬世界,這樣真實的物理工廠的生產(chǎn)過程將以數(shù)字化的方式在數(shù)字空間中展示出來,成為虛擬工廠[10]。這就為離線測試提供了好的基礎(chǔ),在虛擬工廠中經(jīng)過充分測試的工業(yè)軟件將可穩(wěn)定地投入到物理工廠中在線運(yùn)行。
本文基于數(shù)字孿生技術(shù)提出一種新的工業(yè)軟件持續(xù)交付方法,利用生產(chǎn)現(xiàn)場所產(chǎn)生的海量數(shù)據(jù),經(jīng)抽取數(shù)據(jù)構(gòu)建典型場景的數(shù)字孿生平臺,同時結(jié)合對部分關(guān)鍵設(shè)備的仿真,可獲得接近真實生產(chǎn)情況下的運(yùn)行環(huán)境,自動運(yùn)行更多典型或者代表性場景的測試用例,既可以覆蓋更多的情況,又可以加速測試過程,便于及時發(fā)現(xiàn)問題,降低故障、提升效率。下文所述工業(yè)軟件除非特別說明,都指冶金制造業(yè)對實時性要求較高的L2軟件或類似軟件。
單元測試、集成測試與軟件開發(fā)同步進(jìn)行,而軟件交付前需要做詳細(xì)的系統(tǒng)測試(包括功能測試、性能測試、用戶體驗等)、驗收測試(交付測試),除了工業(yè)軟件第一次正式部署運(yùn)行前需要分別作比較正式的系統(tǒng)測試和驗收測試,后續(xù)的功能升級或者優(yōu)化測試一般較簡單。對工業(yè)軟件來講,要求測試環(huán)境能基本重現(xiàn)真實的物理場景,測試數(shù)據(jù)(包括數(shù)據(jù)之間的關(guān)系)與真實情況一致。
建立與物理場景完全一致的數(shù)字孿生環(huán)境成本非常高,考慮到主要目的是建立與物理場景一致的測試環(huán)境,側(cè)重在獲取典型價值的數(shù)據(jù),因此可以簡化數(shù)字孿生系統(tǒng)的建立。基于DW技術(shù)構(gòu)建軟件持續(xù)發(fā)布的測試環(huán)境的總體框架如圖1所示。
圖1 DW環(huán)境的建立
圖1左側(cè)是真實的物理運(yùn)行環(huán)境,右側(cè)則是基于DW的測試環(huán)境(數(shù)據(jù)量遠(yuǎn)小于虛擬工廠數(shù)據(jù)量)。
考慮到生產(chǎn)的相對穩(wěn)定性,一段時間內(nèi)有大量實時數(shù)據(jù)是基本重復(fù)的,只有在更換新物料、生產(chǎn)新產(chǎn)品、采用新工藝,或者設(shè)備狀態(tài)不穩(wěn)定時,設(shè)備數(shù)據(jù)才會有明顯差異,因此需要構(gòu)建建模程序,抽取具備典型特征(開始、變化、結(jié)束等)的實時數(shù)據(jù)并保存到數(shù)據(jù)庫DB_B中,作為測試環(huán)境的測試基準(zhǔn)庫。在測試環(huán)境中也部署與真實環(huán)境類似的工業(yè)軟件,當(dāng)有新軟件待交付時,則開始模擬運(yùn)行,模擬運(yùn)行產(chǎn)生測試結(jié)果庫DB_T,分析程序?qū)Ρ然鶞?zhǔn)庫(DB_B)中的實際運(yùn)行(實績)數(shù)據(jù)和測試結(jié)果庫(DB_T)中的模擬運(yùn)行數(shù)據(jù),最終給出新軟件是否通過測試的結(jié)論。通過測試的工業(yè)軟件將擇機(jī)在物理環(huán)境中發(fā)布。持續(xù)的軟件發(fā)布只需要反復(fù)執(zhí)行上述過程即可。
數(shù)字孿生通過數(shù)字化的手段構(gòu)建一個數(shù)字世界中一模一樣的實體(虛擬工廠),離不開海量的實時數(shù)據(jù)支持,數(shù)據(jù)越多越能真實的反映物理世界。這些數(shù)據(jù)包括:生產(chǎn)計劃、工藝參數(shù)(含工業(yè)模型)、設(shè)備運(yùn)行狀態(tài)、物理環(huán)境等[11]。對設(shè)備運(yùn)行狀態(tài)的數(shù)據(jù)采集涉及較多專用網(wǎng)絡(luò)和儀器儀表,隨著更多智能傳感器、5G在工業(yè)中的大規(guī)模應(yīng)用,越來越多的設(shè)備數(shù)據(jù)被采集[12],如大電機(jī)的溫度、電壓、電流、震動等。
從流程角度來講,可將每一個業(yè)務(wù)流程抽象為:輸入數(shù)據(jù)、處理過程、輸出數(shù)據(jù)。輸入數(shù)據(jù)I和輸出數(shù)據(jù)O都包括多個數(shù)據(jù)項x0x1,x2,……,xk和y0,y1,y2,……,yn,本級輸出數(shù)據(jù)會成為下一級系統(tǒng)或者設(shè)備的輸入數(shù)據(jù),認(rèn)為處理過程是一種映射M,可定義:
M:I→O
(1)
I:x0,x1,x2……xk
O:y0,y1,y2……yn
如果不探究M的具體方法和意義,則根據(jù)大量的輸入、輸出數(shù)據(jù),通過一定方法如深度學(xué)習(xí)[13]等可以建立一定的學(xué)習(xí)、預(yù)測模型,根據(jù)新的輸入預(yù)測出新的輸出[14-15],即使用數(shù)據(jù)就可以模擬工業(yè)生產(chǎn)全過程。工業(yè)軟件的工作過程可以認(rèn)為是多層、多個M的組合:
M0(M10(M20(…I…)),M11(M21(…I…)),
……M1k(M2n(…I…)))→O0
(2)
原始的輸入數(shù)據(jù)I0是生產(chǎn)計劃(包括了原料信息、合同成品要求等)、初始設(shè)備狀態(tài)等,而最終的輸出O0應(yīng)該是成品實績(實際成品的參數(shù)信息,滿足合同成品參數(shù)要求)、設(shè)備狀態(tài)等。
建立采集程序,將生產(chǎn)過程中的輸入、輸出數(shù)據(jù)采集到實時數(shù)據(jù)庫DB_R中??紤]對現(xiàn)有工業(yè)軟件系統(tǒng)的影響和經(jīng)濟(jì)成本,采集程序的采集范圍、采集策略(頻率等)等需要認(rèn)真設(shè)計。以某一個冷軋生產(chǎn)線為例,如果有50000個數(shù)據(jù)采集點,每5ms采集一次,每次10個字節(jié),則每秒的數(shù)據(jù)量就是100M,如果某個鋼卷需要在產(chǎn)線上處理10分鐘,則一個鋼卷的采集數(shù)據(jù)就達(dá)到60G,這還不包括很多圖像數(shù)據(jù)、音頻數(shù)據(jù)等,無論是網(wǎng)絡(luò)還是存儲都是難以承受的。
將生產(chǎn)過程中的數(shù)據(jù)全部采集下來用于測試環(huán)境的建立既無必要,也不可行,因此需要有建模程序?qū)B_R中的實時數(shù)據(jù)做過濾、篩選,建立產(chǎn)品模型數(shù)據(jù)或者典型測試場景數(shù)據(jù),這些數(shù)據(jù)模型或者場景數(shù)據(jù)將作為測試環(huán)境下的參照基準(zhǔn)。
建模程序如何建立?這就涉及到具體生產(chǎn)過程的分析,以鋼鐵企業(yè)里冷軋?zhí)幚砭€生產(chǎn)過程為例,一個原料鋼卷大約4000m,當(dāng)鋼卷在入口被輸送到機(jī)組上,則由激光焊機(jī)與上一鋼卷進(jìn)行焊接,然后生產(chǎn)線各設(shè)備按照工藝要求進(jìn)行工作,約15min后本鋼卷處理完畢,機(jī)組出口剪切形成成品鋼卷,機(jī)組開始新的一卷生產(chǎn)(實際中由于機(jī)組距離較長,機(jī)組入口上料時間和出口出料時間并不一致)。分析上述過程就知道除了本次的典型數(shù)據(jù)需要保留,生產(chǎn)過程中長期穩(wěn)定的數(shù)據(jù)則可以進(jìn)行壓縮;考慮到是連續(xù)生產(chǎn)的上一輸入、下一次輸入的關(guān)鍵信息也必須保存。
經(jīng)過本步驟,將形成以下的場景模型數(shù)據(jù)Pk:
Pk{Ik0,Ik1…Ikm,…,Ok}
(3)
Ik0:Pk的初始輸入數(shù)據(jù),多個數(shù)據(jù)項組成Ikm:Pk的某個中間數(shù)據(jù),由上一級Ikm-1經(jīng)映射Mkm-1得到Okm-1,合并其他數(shù)據(jù)成為新的輸入數(shù)據(jù)Ikm
Ok:Pk的最終輸出數(shù)據(jù),多個數(shù)據(jù)項組成
需要按照一定的關(guān)鍵字(如產(chǎn)品規(guī)格、時間等)建立模型數(shù)據(jù),關(guān)鍵字的選擇應(yīng)該能體現(xiàn)生產(chǎn)的獨特性,其作用代表了一個獨立的測試場景。以湛江鋼鐵某冷軋廠鍍鋅機(jī)組為例,經(jīng)調(diào)查三個月內(nèi)的生產(chǎn)數(shù)據(jù)發(fā)現(xiàn),鋼種、寬度、厚度、鋅層厚度是決定因素,只需要針對上述關(guān)鍵字篩選有代表性的生產(chǎn)數(shù)據(jù),就無必要采集全部數(shù)據(jù),可以降低數(shù)據(jù)存儲80%以上。
數(shù)據(jù)采集程序和建模程序可以合并在一起,但考慮到建模程序的復(fù)雜性,還是分開建立較好。
測試環(huán)境中需要建立虛擬設(shè)備,其目的在于能夠仿真真實的物理設(shè)備工作:接收待測試工業(yè)軟件的輸出,經(jīng)模擬處理后輸出到工業(yè)軟件。如何構(gòu)建逼真的虛擬設(shè)備是難點,特別是當(dāng)生產(chǎn)線上有大量設(shè)備或者工作機(jī)理非常復(fù)雜的設(shè)備,這種工作幾乎是無法完成的。
按照公式(1)原理可以構(gòu)建虛擬設(shè)備,即將輸入數(shù)據(jù)與現(xiàn)有模型數(shù)據(jù)進(jìn)行對比,按照一定規(guī)則產(chǎn)生模擬輸出數(shù)據(jù),規(guī)則有物理公式(有固定邏輯)、查表法(存在歷史相同規(guī)格數(shù)據(jù))和插值方法(無歷史相同規(guī)格數(shù)據(jù)但有接近的數(shù)據(jù))。對于復(fù)雜設(shè)備如冷軋退火爐的虛擬設(shè)備構(gòu)建則比較復(fù)雜,也可以使用深度學(xué)習(xí)算法,本文不作詳細(xì)討論。
以某鋼鐵廠冷軋某鍍鋅機(jī)組為例,入口有鋼卷小車、開卷機(jī)、矯直機(jī)、剪刀、焊機(jī)、月牙剪、入口活套等設(shè)備;中央段有清洗槽、加熱爐、鋅鍋、鍍后冷卻塔等設(shè)備;平整段有中央活套、平整機(jī)、拉矯機(jī)、輥涂機(jī)、后處理塔等設(shè)備;出口段有出口活套、月牙剪、圓盤剪、測寬儀、測厚儀、涂油機(jī)、飛剪、卷取機(jī)、鋼卷小車等設(shè)備。當(dāng)然全生產(chǎn)線還有較多張緊輥和轉(zhuǎn)向輥等設(shè)備。容易出故障的設(shè)備有焊機(jī)、平整機(jī)、鋅鍋、輥涂機(jī)等。
在以上設(shè)備中機(jī)理相對簡單、便于構(gòu)建虛擬設(shè)備的有:鋼卷小車、剪刀、開卷機(jī)、活套、月牙剪、圓盤剪、測寬儀、測厚儀、涂油機(jī)、飛剪、卷取機(jī)、鋼卷小車等,根據(jù)輸入值使用物理公式或者查找基準(zhǔn)庫(DB_B)就可以構(gòu)建輸出值,使用編程語言如C#做成控件就可以直接使用,在做控件時需要將物理設(shè)備的參數(shù)允許范圍也記錄下來,便于及時校驗輸入值是否合理。
對于加熱爐、平整機(jī)、拉矯機(jī)等設(shè)備,機(jī)理復(fù)雜,要提升虛擬設(shè)備與物理設(shè)備的符合度,需要較多努力,考慮到當(dāng)前主要目的是測試,并不要求精確模擬生產(chǎn),因此采用簡單的方法即查表和線性插值法來構(gòu)建輸出數(shù)據(jù),若發(fā)現(xiàn)本級輸出與正常值有較大差異則強(qiáng)制清除偏差。同樣用編程語言做成控件方便使用。
為了讓虛擬設(shè)備工作,以及不修改原有軟件(通信接口部分),還需做一個接口轉(zhuǎn)換程序,如圖2所示。
圖2 虛擬設(shè)備的建立
L2系統(tǒng)一般通過TCP/IP通信或者OPC[16]方式從L1獲得數(shù)據(jù)或者下發(fā)數(shù)據(jù)給L1,接口轉(zhuǎn)換程序的作用可以起到這部分功能。
如果新程序的發(fā)布不涉及原計算規(guī)則變化,則理論上輸出應(yīng)不發(fā)生變化、不需要經(jīng)過虛擬設(shè)備而直接與原輸出進(jìn)行比較,但是從測試的真實性角度考慮,還是應(yīng)進(jìn)行完整的生產(chǎn)作業(yè)流程測試。
如果只針對新增加或修改的功能進(jìn)行測試,往往會導(dǎo)致測試不充分,理想情況應(yīng)是將原正常工作的測試用例全部運(yùn)行一次。每次測試用例的執(zhí)行都會涉及測試數(shù)據(jù)的準(zhǔn)備和測試結(jié)果的對比分析,測試輸入數(shù)據(jù)主要基于DB_B中的計劃數(shù)據(jù)。當(dāng)有新工業(yè)軟件待交付前,則在測試環(huán)境中開始模擬運(yùn)行,模擬運(yùn)行產(chǎn)生數(shù)據(jù)庫DB_T,新軟件是否正確需要有分析程序?qū)Ρ菵B_B的實績數(shù)據(jù)(與計劃數(shù)據(jù)對應(yīng)的輸出結(jié)果)和DB_T,最終給出新軟件是否通過測試的結(jié)論。
測試用例的建立應(yīng)具有廣泛的覆蓋性,包括各種情況,值得注意的是從真實環(huán)境中獲取的計劃數(shù)據(jù)往往都是符合要求的正常數(shù)據(jù)(一般生產(chǎn)過程中的異常數(shù)據(jù)會被清理掉),缺乏異常數(shù)據(jù)如邊緣數(shù)據(jù)和錯誤數(shù)據(jù),從提升工業(yè)軟件魯棒性角度來講,需要增加異常數(shù)據(jù)集做相關(guān)的測試。軟件新版本的測試與接受流程如圖3所示。
圖3 軟件新版本的測試與接受
考慮到軟件的持續(xù)發(fā)布,為提升效率,測試用例的運(yùn)行應(yīng)基于自動化原則,盡可能的減少人工干預(yù),在運(yùn)行每個測試用例之前,還需要做一定的清理工作。
軟件通過測試,經(jīng)評估認(rèn)為滿足正式發(fā)布條件的軟件可選擇合適的時機(jī)進(jìn)行發(fā)布,對連續(xù)生產(chǎn)的機(jī)組一般需要選擇停機(jī)時間如定修時間進(jìn)行。發(fā)布之前應(yīng)做好相關(guān)環(huán)境和程序的備份,用于緊急情況下的恢復(fù)。如果考慮軟件的持續(xù)發(fā)布,可以反復(fù)進(jìn)行上述過程,為進(jìn)一步提升效率則需要構(gòu)建自動發(fā)布機(jī)制。
本實驗數(shù)據(jù)來源于某鋼鐵企業(yè)的厚板生產(chǎn)廠的L2系統(tǒng)的現(xiàn)場交付與冷軋廠的無人化全自動行車系統(tǒng)中的庫區(qū)管理與控制軟件(Warehouse Manage System,WMS)的現(xiàn)場交付。
厚板生產(chǎn)線主要包括加熱爐、軋線、層冷、精整及熱處理等部分,工藝比較復(fù)雜,其L2系統(tǒng)如圖4所示。
圖4 厚板L2系統(tǒng)
因為厚板L2系統(tǒng)的復(fù)雜,直接在現(xiàn)場測試、發(fā)布很容易出現(xiàn)問題,某厚板廠2019年下半年工業(yè)軟件發(fā)布問題見表1。
表1 厚板L2系統(tǒng)2019年下半年更新發(fā)布情況
隨著厚板市場形勢轉(zhuǎn)好,產(chǎn)能逐年提高,以及新品種、新工藝的應(yīng)用,對L2系統(tǒng)的功能變更越來越頻繁。2019年下半年開始采取了基于數(shù)字孿生建設(shè)測試環(huán)境并測試、交付的方法(見表2)。
表2 2020上半年厚板L2發(fā)布情況
厚板L2是五個獨立部分,采用一臺物理服務(wù)器模擬五套虛擬系統(tǒng)的方式,實時采集L2有關(guān)數(shù)據(jù)并抽取、建模到測試環(huán)境中。
對表1和表2數(shù)據(jù)進(jìn)行對比可以發(fā)現(xiàn),基于DW的測試環(huán)境的建立提升了軟件測試的有效性,有助于工業(yè)軟件的持續(xù)發(fā)布,當(dāng)然也存在由于新品種的出現(xiàn)導(dǎo)致測試環(huán)境下場景數(shù)據(jù)不足、測試不充分的情況。
無人化全自動行車系統(tǒng)(Unmanned Automatic Crane System,UACS)采用三維定位、自動駕駛等技術(shù)代替人工駕駛倉庫里的行車(梁式軌道起重機(jī)),實現(xiàn)倉庫的自動化管理(見圖5),其核心是WMS[17]。
圖5 UACS系統(tǒng)
WMS程序常需要在現(xiàn)場及時更新,但是多臺行車運(yùn)行的各種場景組合太多,單純?nèi)斯y試能夠覆蓋到的場景不足30%,測試不足極易造成行車運(yùn)行故障,嚴(yán)重的造成安全事故,統(tǒng)計2019年上半年某冷軋廠成品庫10臺無人化行車(2018年已經(jīng)正常交付運(yùn)行)WMS更新發(fā)布情況見表3。
表3 2019年上半年冷軋WMS更新發(fā)布情況
在2019年下半年采用了上述方案后,在虛擬環(huán)境下進(jìn)行測試,提升了測試用例數(shù)量,大幅降低了測試時間(包括了測試發(fā)現(xiàn)問題重新修復(fù)、測試的情況)、現(xiàn)場發(fā)布時間和投運(yùn)后的故障,具體見表4。
表4 2019年下半年WMS更新發(fā)布情況
當(dāng)前工業(yè)軟件的持續(xù)交付還處在較低層次,存在較多問題;隨著云計算、大數(shù)據(jù)、5G等技術(shù)的發(fā)展,傳統(tǒng)制造逐步向智能制造轉(zhuǎn)變,對工業(yè)軟件的交付也提出了新的要求,同時也提供了新的可能。本文提出基于數(shù)字孿生的工業(yè)軟件持續(xù)交付方法,提取、建模出物理工廠下的典型生產(chǎn)場景數(shù)據(jù)作為測試基準(zhǔn)與模擬運(yùn)行結(jié)果進(jìn)行比較以判斷是否可以交付新的工業(yè)軟件。本方法在實際生產(chǎn)中進(jìn)行了應(yīng)用,驗證了該方法的有效性,該方案使工業(yè)軟件在交付之前能夠快速在多種典型場景下進(jìn)行驗證,大幅降低了正式發(fā)布后軟件出故障的機(jī)會,同時提升了軟件測試效率。
當(dāng)前研究存在的主要問題在于更多的是基于歷史正常數(shù)據(jù)所作出的測試,對新品種測試存在一定偏差,另外在壓力測試、異常數(shù)據(jù)與圖像音頻等采集方面考慮不多。未來研究將聚焦于上述不足,進(jìn)一步提升虛擬環(huán)境下測試的全面性和有效性。