湯日升 張前進
關(guān)鍵詞:Laravel;Workerman;過程控制;數(shù)據(jù)采集;不銹鋼
中圖分類號:TP311.1 文獻標(biāo)識碼:A
文章編號:1009-3044(2024)03-0103-04
0 引言
隨著“十四五”智能制造發(fā)展規(guī)劃和信息化和工業(yè)化深度融合發(fā)展規(guī)劃的貫徹實施,傳統(tǒng)制造業(yè)的工業(yè)互聯(lián)網(wǎng)平臺體系構(gòu)建不斷加快,數(shù)字化轉(zhuǎn)型意識不斷提高。在實際信息化建設(shè)中,許多成熟商用軟件和通訊協(xié)議存在授權(quán)費用較高和效果未達到預(yù)期等問題,如何降低生產(chǎn)線信息化建設(shè)成本受到廣泛關(guān)注[1]。
“數(shù)據(jù)采集與過程控制系統(tǒng)”位于國內(nèi)冶金企業(yè)多級計算機系統(tǒng)的第二級,也被俗稱為“二級系統(tǒng)”[2]。該類系統(tǒng)主要功能為數(shù)據(jù)采集和局部生產(chǎn)作業(yè)管控,解決第一級設(shè)備控制系統(tǒng)和第三層制造執(zhí)行系統(tǒng)(Manufacturing Execution System, MES) 數(shù)據(jù)不互通的問題,實現(xiàn)產(chǎn)品質(zhì)量跟蹤,提高生產(chǎn)管控和生產(chǎn)效率。
本文針對不銹鋼整卷磨生產(chǎn)線,提出一種基于PHP (PHP: Hypertext Preprocessor) 編程語言的數(shù)據(jù)采集與過程控制系統(tǒng),下文均寫作“本文系統(tǒng)”。本文系統(tǒng)充分發(fā)揮 Laravel 框架和 Workerman 應(yīng)用容器等開源技術(shù)優(yōu)勢,實現(xiàn)了數(shù)據(jù)互聯(lián)互通,有效降低了不銹鋼整卷磨生產(chǎn)線的信息化建設(shè)的成本,具有一定的遷移價值和借鑒意義。
1 系統(tǒng)總體設(shè)計
1.1 設(shè)計思路
本文系統(tǒng)采用前后端分離的網(wǎng)頁與服務(wù)器結(jié)構(gòu),節(jié)省了維護客戶端的成本,分為四個模塊進行設(shè)計,分別為業(yè)務(wù)功能、通訊、前端和數(shù)據(jù)采集模塊,模塊之間相互獨立,系統(tǒng)的耦合度較低。
前端模塊是用戶與系統(tǒng)的交互界面。業(yè)務(wù)功能模塊是系統(tǒng)的主體,包含報文的解析和封裝、響應(yīng)前端數(shù)據(jù)請求等業(yè)務(wù)功能。數(shù)據(jù)采集模塊負責(zé)可編程邏輯控制器(Programmable Logic Controller, PLC)的數(shù)據(jù)采集和存儲。通訊模塊負責(zé)建立和維持?jǐn)?shù)據(jù)鏈路,選取 PLC 支持的通訊協(xié)議搭建系統(tǒng)與 PLC 的通訊,依據(jù) MES 的通訊協(xié)議構(gòu)建系統(tǒng)與 MES 的通訊。
1.2 系統(tǒng)架構(gòu)設(shè)計
本文系統(tǒng)硬件主要包含一臺戴爾 T340 塔式服務(wù)器和一臺工控機,通訊依托光纖局域網(wǎng)。數(shù)據(jù)采集與過程控制系統(tǒng)服務(wù)器承載本文系統(tǒng)的軟件程序主體。工控機是用戶操作本文系統(tǒng)的實體終端,負責(zé)采集和存儲生產(chǎn)實績數(shù)據(jù),部署有 KEPServerEX 工業(yè)連接平臺。
實際生產(chǎn)中,本文系統(tǒng)接收 MES 下發(fā)的生產(chǎn)計劃報文,解析報文中的不銹鋼卷號和生產(chǎn)工藝等參數(shù),在用戶選擇計劃開始生產(chǎn)后,參數(shù)寫入 PLC 數(shù)據(jù)塊,用戶也可以在人機界面(Human Machine Interface,HMI) 中修改參數(shù)。生產(chǎn)結(jié)束后,生產(chǎn)實績數(shù)據(jù)上傳服務(wù)器,新的參數(shù)寫入 PLC 數(shù)據(jù)塊,開始生產(chǎn)。圖1 為系統(tǒng)網(wǎng)絡(luò)架構(gòu)圖。
本文系統(tǒng)使用 MySQL 數(shù)據(jù)庫進行數(shù)據(jù)存儲,基于 Laravel 框架的業(yè)務(wù)功能模塊、基于 Workerman 應(yīng)用容器的通訊模塊、基于 Vue-element-admin 框架的前端模塊和基于KEPServerEX 工業(yè)連接平臺的數(shù)據(jù)采集模塊相互獨立部署,圖2為系統(tǒng)功能設(shè)計圖。
1.3 開發(fā)與生產(chǎn)環(huán)境
本文系統(tǒng)在 Windows 平臺進行開發(fā),使用 Php?Study 進行集成環(huán)境的配置和管理,使用 Git 進行開發(fā)版本的控制。服務(wù)器的生產(chǎn)環(huán)境為基于 Linux 的Ubuntu 系統(tǒng),搭載了高性能的HTTP和反向代理網(wǎng)絡(luò)服務(wù)器Nginx。工控機的生產(chǎn)環(huán)境為 Windows 系統(tǒng),搭載 Siemens TIA Portal 軟件和 KEPServerEX 工業(yè)連接平臺。生產(chǎn)線的 PLC 型號是西門子S7 15系列。
2 系統(tǒng)模塊設(shè)計
2.1 業(yè)務(wù)功能模塊設(shè)計
Laravel 框架是世界知名度較高的開源框架之一,應(yīng)用于不銹鋼整卷磨生產(chǎn)線的主要優(yōu)點是其成熟的案例模板和龐大的社區(qū)支持可快速解決編程問題,有效提高開發(fā)效率,節(jié)省開發(fā)成本[3-4]。
業(yè)務(wù)功能模塊在 Laravel 框架的基礎(chǔ)模型-視圖- 控制(Model-View-Controller, MVC) 架構(gòu)中,添加了服務(wù)層(Service) 。服務(wù)層位于控制器和模型層中間,所有業(yè)務(wù)邏輯都封裝到相應(yīng)服務(wù)層中,由控制器調(diào)用。該設(shè)計基于 Slim Model 理念,模型層只負責(zé)業(yè)務(wù)數(shù)據(jù)的表達,服務(wù)層的添加增強了模型層的細粒度,方便了后期本文系統(tǒng)的維護和升級。圖3為業(yè)務(wù)功能模塊接收請求流程圖。
在不銹鋼整卷磨生產(chǎn)線中,需要進行不間斷生產(chǎn)。不間斷生產(chǎn)是一種生產(chǎn)模式,生產(chǎn)過程中將后一卷鋼卷的頭部人工焊接到前一卷鋼卷的尾部,生產(chǎn)結(jié)束時進行裁切。不間斷生產(chǎn)的目的是節(jié)省重新穿鋼卷的時間,提高生產(chǎn)效率。在數(shù)據(jù)層面,某一時刻的生產(chǎn)線中存在兩條計劃數(shù)據(jù),分別為開卷臺和收卷臺的計劃數(shù)據(jù),使用收卷臺電機編碼器的轉(zhuǎn)速和鋼卷厚度換算生產(chǎn)的長度,以此進行生產(chǎn)跟蹤。收卷臺計劃生產(chǎn)結(jié)束的標(biāo)志是鋼卷裁剪成功,該標(biāo)志觸發(fā)時,收卷臺的數(shù)據(jù)上傳,開卷臺的數(shù)據(jù)寫入收卷臺,計劃緩存區(qū)的數(shù)據(jù)寫入開卷臺。
在不銹鋼整卷磨生產(chǎn)線中,需要按照計劃對鋼卷進行裁剪分卷。裁剪分卷需要修改鋼卷的特征標(biāo)識,在數(shù)據(jù)層面需要把原計劃分解成多條獨立計劃連續(xù)下發(fā),當(dāng)?shù)谝粭l分卷計劃開始生產(chǎn)時,后續(xù)分卷計劃寫入計劃緩存區(qū),等待裁剪成功信號。圖4為計劃管理服務(wù)開卷流程圖。
2.2 通訊模塊設(shè)計
通訊模塊基于多進程的開源 PHP 應(yīng)用容器Workerman 進行開發(fā),包含服務(wù)端和客戶端,其運行均不依賴 Nginx 服務(wù)器,進程常駐后臺。通訊模塊與MES 服務(wù)器通過建立 Socket 長連接方式進行報文通訊,與 PLC 通過 Modbus TCP 協(xié)議進行通訊。
Workerman 基于 Master-Worker 模型架構(gòu),主要包含 Master 和 Worker 兩種進程。Master 進程是主進程,只負責(zé)監(jiān)控子進程,不負責(zé)接收數(shù)據(jù)也不做任何業(yè)務(wù)邏輯。監(jiān)控子進程包括監(jiān)控 Worker 子進程的退出、監(jiān)控服務(wù)器的停止和平滑重啟等。Worker 進程是 Master 進程派生的子進程,繼承了父進程的監(jiān)聽端口,可以實現(xiàn)業(yè)務(wù)處理,每個Worker 進程相互獨立。為了防止進程的意外關(guān)閉,安裝了 Supervisor 實現(xiàn)自動重啟隊列進程,Supervisor 是 Linux 系統(tǒng)中常用的進程守護程序。
服務(wù)端的設(shè)計在 Master-Worker 模型基礎(chǔ)上加入了 Gateway 進程,為Master-Worker-Gatewa 模型,主要包含三種進程,分別為 Gateway、Register 和 Busi?nessWorker。表1為進程功能明細表。
上述三類進程均受 Master 進程監(jiān)控,關(guān)系如圖5 模型進程關(guān)系圖所示。當(dāng) MES 發(fā)起長連接時,Gate?way 進程監(jiān)聽到端口信息并將信息傳遞給 Business?Worker 進程,BusinessWorker 進程調(diào)用業(yè)務(wù)邏輯函數(shù)進行業(yè)務(wù)處理。此外,針對常駐內(nèi)存的進程在使用MySQL 數(shù)據(jù)庫時經(jīng)常會遇到“ mysql gone away ”錯誤的問題,本項目使用 WorkermanMySQL 類保持連接的穩(wěn)定性,避免 MySQL 數(shù)據(jù)庫服務(wù)端中斷靜置時間過長的連接[5]。
客戶端與服務(wù)端相比,主要區(qū)別為客戶端中Worker 進程啟動時,需要先借助AsyncTcpConnection 類異步建立一個到 MES 的連接對象,主動發(fā)送數(shù)據(jù)發(fā)起連接。客戶端的建立基于 Worker 進程,Worker 進程啟動時,異步連接到 MES 的IP 地址及端口,創(chuàng)建一個 TcpConnection 連接。
在本文系統(tǒng)與 MES 通訊中,本文系統(tǒng)是客戶端也是服務(wù)端,建立基于 Socket 的雙線長連接通訊鏈路,提高數(shù)據(jù)收發(fā)的效率。通訊邏輯由心跳報文、數(shù)據(jù)報文和自動應(yīng)答報文三者構(gòu)成。心跳報文由客戶端向服務(wù)端周期性發(fā)送,用于周期性檢測過程控制級系統(tǒng)與 MES 間的長連接通信狀態(tài)。數(shù)據(jù)報文由客戶端向服務(wù)端發(fā)送,包含數(shù)據(jù)內(nèi)容。服務(wù)端收到數(shù)據(jù)報文后,自動應(yīng)答報文由服務(wù)端向客戶端原路發(fā)送,作用是告知客戶端數(shù)據(jù)報文是否被成功接收和內(nèi)容是否有效。服務(wù)端可以根據(jù)心跳報文的接收與否判斷連接狀態(tài),客戶端可以根據(jù)數(shù)據(jù)報文發(fā)送后自動應(yīng)答報文的接收情況判斷連接狀態(tài)。
本文系統(tǒng)共協(xié)定九條數(shù)據(jù)報文。六條發(fā)送報文分別為:生產(chǎn)開始報文、計劃刪除報文、產(chǎn)出實績報文、停機實績報文、工藝實績報文和操作應(yīng)答報文。三條接收報文分別為:計劃信息報文、計劃撤銷報文和操作應(yīng)答報文。其中,自動應(yīng)答報文回應(yīng)的是接收信息成功與否,操作應(yīng)答報文回應(yīng)的是接收信息后處理信息的操作成功與否。
在本文系統(tǒng)與 PLC 通訊中,本文系統(tǒng)只作為服務(wù)端。使用 Siemens TIA Portal 軟件對 PLC 進行編程,調(diào)用 TSEND_C 模塊建立客戶端發(fā)送數(shù)據(jù)。PLC 發(fā)送數(shù)據(jù)的格式與計算機中的存儲格式不同,十六位數(shù)據(jù)需要進行高八位和低八位對調(diào)循環(huán)讀取。
2.3 前端模塊設(shè)計
前端模塊使用Vue-element-admin 前端框架。該模塊為基于 Vue 系列技術(shù)和 Element-UI 開源庫的單頁面架構(gòu)。Vue 是目前生產(chǎn)環(huán)境中使用最廣泛的 Ja?vaScript 框架之一,Element-UI 是一個桌面端用戶界面(User Interface, UI) 庫。圖6為前端模塊界面組件架構(gòu)圖。
工藝實績數(shù)據(jù)的顯示存在數(shù)據(jù)量巨大的困難,本系統(tǒng)使用 ECharts 組件的異步請求加載、降采樣渲染和分段渲染進行解決。在不銹鋼整卷磨生產(chǎn)線中,一卷鋼卷生產(chǎn)時間可長達六小時,一個參數(shù)的完整生產(chǎn)周期數(shù)據(jù)達到十萬級別。前端模塊進行異步請求加載數(shù)據(jù),結(jié)合 ECharts 組件的大數(shù)據(jù)加載方式 Ap?pendData 進行分片加載數(shù)據(jù),使用散點圖方式渲染,禁用動畫效果,開啟 Sampling 降采樣渲染模式,更改Datazoom 的 startValue 和 endValue,進行分段渲染。圖7為實績顯示效果圖。
數(shù)據(jù)報表的導(dǎo)出使用 SheetJS 組件,其優(yōu)點是可以直接把 JSON 數(shù)據(jù)寫入 Excel 表格,方便快捷。
2.4 數(shù)據(jù)采集模塊設(shè)計
數(shù)據(jù)采集模塊借助 KEPServerEX 工業(yè)連接平臺進行實現(xiàn)。在 KEPServerEX平臺中,使用 Siemens TCP/IP Ethernet 協(xié)議與西門子 S7 系列 PLC 建立連接,使用開放數(shù)據(jù)庫互連(Open Database Connectivity, ODBC) 協(xié)議與數(shù)據(jù)庫建立連接。
在不銹鋼整卷磨生產(chǎn)線中,使用了KEPServerEX 平臺的數(shù)據(jù)采集與數(shù)據(jù)映射功能。前者每間隔 250 毫秒采集PLC 數(shù)據(jù)直接寫入 MySQL 的數(shù)據(jù)表,后者分別把 PLC 中的數(shù)據(jù)與MySQL 中的數(shù)據(jù)建立標(biāo)簽,通過標(biāo)簽進行數(shù)據(jù)映射,實現(xiàn)數(shù)據(jù)源的數(shù)據(jù)變動時對應(yīng)的標(biāo)簽數(shù)據(jù)實時變動的效果。在數(shù)據(jù)庫設(shè)置讀取表與寫入表進行數(shù)據(jù)交互。圖8為數(shù)據(jù)映射原理圖。
3 測試與應(yīng)用
本文系統(tǒng)的測試使用了 Wireshark 軟件監(jiān)聽報文信息,使用了 Apifox 軟件管理接口文檔和調(diào)試服務(wù)器請求接口。測試后響應(yīng)用戶需求,把部分登錄賬號的令牌(Token) 有效時限延長到一周,避免了生產(chǎn)中煩瑣的登錄行為。
本文系統(tǒng)實際運行界面如圖9系統(tǒng)實際運行圖所示,已成功于廣東省某不銹鋼整卷磨生產(chǎn)線試運行三個月。運行結(jié)果表明,本文系統(tǒng)穩(wěn)定性較高,能以較低成本有效解決質(zhì)量跟蹤與局部生產(chǎn)管控問題,提高生產(chǎn)效率,該系統(tǒng)方案是一種有效的信息化建設(shè)方案。
4 結(jié)束語
本文提出了一種應(yīng)用于不銹鋼整卷磨生產(chǎn)線的數(shù)據(jù)采集與過程控制系統(tǒng),并以總分結(jié)構(gòu)對系統(tǒng)的主要設(shè)計進行了闡述。詳細闡述了基于Laravel 框架的業(yè)務(wù)功能模塊設(shè)計和基于 Workerman 應(yīng)用容器的通訊模塊設(shè)計,簡單闡述了基于 Vue-element-admin 框架的前端模塊設(shè)計和基于KEPServerEX 工業(yè)連接平臺的數(shù)據(jù)采集模塊設(shè)計。
本文系統(tǒng)能有效解決不銹鋼整卷磨生產(chǎn)線的工業(yè)信息化建設(shè)成本較高的問題,解決質(zhì)量跟蹤與局部生產(chǎn)管控問題,提高生產(chǎn)效率和信息化程度,可推廣應(yīng)用于相似生產(chǎn)線,具有一定工程遷移價值和借鑒意義。后續(xù)的研究方向是使用開源協(xié)議編程升級數(shù)據(jù)采集模塊,避免 KEPServerEX 工業(yè)連接平臺的費用支出,進一步降低工業(yè)信息化建設(shè)成本。
【通聯(lián)編輯:梁書】