李金普 韓佳起 胡長(zhǎng)霆
(江蘇中煙工業(yè)有限責(zé)任公司徐州卷煙廠,江蘇 徐州221000)
隨著網(wǎng)絡(luò)科技的發(fā)展,傳統(tǒng)工業(yè)對(duì)網(wǎng)絡(luò)化、智能化提出了更高的要求。為了將機(jī)械設(shè)備和電腦端可視化、手機(jī)端實(shí)時(shí)監(jiān)測(cè)、客戶(hù)端遠(yuǎn)程控制相結(jié)合,本程序?qū)LC、OPC UA[1]協(xié)議、窗體客戶(hù)端的設(shè)計(jì)編寫(xiě)進(jìn)行了深入研究。目前在我廠的生產(chǎn)活動(dòng)中,設(shè)備的運(yùn)行狀況可通過(guò)生產(chǎn)現(xiàn)場(chǎng)的觸摸屏程序獲取、顯示和控制。當(dāng)設(shè)備出現(xiàn)故障,觸摸屏程序會(huì)顯示故障信息,并發(fā)出報(bào)警,這時(shí)要求現(xiàn)場(chǎng)操作人員或維修人員在第一時(shí)間發(fā)現(xiàn)并處理設(shè)備報(bào)警和故障。但由于生產(chǎn)區(qū)域空間跨度大、情況復(fù)雜,有些設(shè)備的報(bào)警信息不能及實(shí)地被發(fā)現(xiàn)和查看,另外,生產(chǎn)區(qū)域中也存在部分設(shè)備信息未被中控系統(tǒng)監(jiān)測(cè)的情況,例如配方庫(kù)堆垛機(jī)具體故障無(wú)法報(bào)送,需要操作人員進(jìn)入庫(kù)區(qū)確認(rèn)。類(lèi)似情況會(huì)導(dǎo)致中控人員無(wú)法快速找到設(shè)備故障癥結(jié),難以實(shí)施在線調(diào)整、快速?gòu)?fù)位等操作。針對(duì)以上問(wèn)題,本文開(kāi)發(fā)了一套設(shè)備故障監(jiān)測(cè)系統(tǒng),經(jīng)測(cè)試后,該系統(tǒng)縮短了故障處理的時(shí)間,提高了生產(chǎn)管理效率,降低了生產(chǎn)事故發(fā)生的風(fēng)險(xiǎn)。
設(shè)備故障監(jiān)測(cè)系統(tǒng)是一款基于C#語(yǔ)言的WINDOWS 窗體應(yīng)用程序??稍谘b有WINDOWS 操作系統(tǒng)和.NET Framework[2]的計(jì)算機(jī)內(nèi)運(yùn)行。該系統(tǒng)遵循OPC UA 協(xié)議將西門(mén)子S7-400PLC和程序連接。程序通過(guò)訂閱的方式接收PLC 的故障報(bào)警信息,經(jīng)過(guò)判斷和處理后在可視化區(qū)域顯示故障圖標(biāo)記,并通過(guò)釘釘群機(jī)器人實(shí)現(xiàn)手機(jī)和電腦端的消息推送。相關(guān)操作人員在手機(jī)安裝釘釘并打開(kāi)系統(tǒng)通知,可以在第一時(shí)間接收到設(shè)備故障報(bào)警。
本系統(tǒng)將PLC 信息點(diǎn)(PLC 中間變量、輸入點(diǎn)、輸出點(diǎn))用MySQL 數(shù)據(jù)庫(kù)進(jìn)行管理,將每個(gè)信息點(diǎn)的標(biāo)簽,NodeId[3],地址,描述,所在區(qū)域串聯(lián),并根據(jù)設(shè)備、區(qū)域進(jìn)行分組。采取訂閱[4]的方式,由OPC 服務(wù)器(KEPServer[5])對(duì)PLC 循環(huán)掃描,減輕了前端的運(yùn)算壓力。管理方式高效,代碼優(yōu)化程度高。
本系統(tǒng)模型結(jié)構(gòu)如圖1 所示,PLC 通過(guò)西門(mén)子TCP/IP Ethernet 驅(qū)動(dòng)和KEPServer(OPC 服務(wù)器)連接,建立Tag 標(biāo)簽與PLC 上的故障指示I/O 和中間變量匹配,并進(jìn)行分組。建立數(shù)據(jù)庫(kù),將Tag 標(biāo)簽的NodeId 和相應(yīng)設(shè)備故障信息錄入數(shù)據(jù)庫(kù)。完成服務(wù)器和數(shù)據(jù)庫(kù)的部署工作后,軟件可直接運(yùn)行,并且每次使用前不需要重新部署。
點(diǎn)擊建立連接,軟件通過(guò)OPCUA 協(xié)議和OPC 服務(wù)器建立連接,同時(shí)建立與數(shù)據(jù)庫(kù)的連接。
點(diǎn)擊開(kāi)始服務(wù),從數(shù)據(jù)庫(kù)表中獲取所有NodeId 并向OPC服務(wù)器請(qǐng)求訂閱。當(dāng)PLC 監(jiān)測(cè)點(diǎn)的值發(fā)生改變,OPC 服務(wù)器通過(guò)掃描獲得該變化,并向軟件發(fā)送相應(yīng)的NodeId 和值。軟件判斷該值是否為故障,通過(guò)數(shù)據(jù)庫(kù)取出該故障點(diǎn)的對(duì)應(yīng)的故障信息,顯示在軟件內(nèi)。同時(shí)將故障設(shè)備在區(qū)域圖上標(biāo)紅。
對(duì)故障信息通過(guò)REA 算法加簽、加時(shí)間戳的方式進(jìn)行加密,并轉(zhuǎn)化為哈希值發(fā)送到釘釘群服務(wù)器所在的OPI[6]接口。利用釘釘群機(jī)器人實(shí)現(xiàn)將故障位置、類(lèi)型、地址等信息實(shí)時(shí)發(fā)送到釘釘群的功能。
點(diǎn)擊停止服務(wù),系統(tǒng)取消對(duì)OPC 服務(wù)器的訂閱并斷開(kāi)和OPC 服務(wù)器、數(shù)據(jù)庫(kù)的連接。
圖1 系統(tǒng)模型結(jié)構(gòu)圖
利用Visual Studio2019 發(fā)開(kāi)工具編寫(xiě)基于C#的窗體程序,完成OPC 服務(wù)器和數(shù)據(jù)庫(kù)的部署工作。根據(jù)程序主界面獲取用戶(hù)輸入的OPC 服務(wù)器地址建立連接,查詢(xún)獲取數(shù)據(jù)庫(kù)表中獲取所有NodeId 并向OPC 服務(wù)器請(qǐng)求訂閱。
當(dāng)PLC 監(jiān)測(cè)點(diǎn)的值發(fā)生改變,OPC 服務(wù)器通過(guò)掃描獲得該變化,并向軟件發(fā)送相應(yīng)的NodeId 和值。當(dāng)該值為T(mén)RUE 時(shí),軟件判斷該點(diǎn)為故障,將故障點(diǎn)的NodeId 返回?cái)?shù)據(jù)庫(kù)查詢(xún)其相關(guān)信息。將故障點(diǎn)在設(shè)備運(yùn)行情況示意圖上的對(duì)應(yīng)位置標(biāo)紅(如圖2 所示)同時(shí)生成故障提醒,通過(guò)RSA 算法加簽、加時(shí)間戳的方式進(jìn)行加密,并轉(zhuǎn)化為哈希值發(fā)送到釘釘群服務(wù)器所在的OPI 接口。利用釘釘群機(jī)器人實(shí)現(xiàn)將故障信息事實(shí)發(fā)送到釘釘群的功能。
圖2 軟件內(nèi)設(shè)備運(yùn)行情況示意圖
OPC 是用于在工業(yè)自動(dòng)化領(lǐng)域和其他行業(yè)中安全可靠地交換數(shù)據(jù)的互操作性標(biāo)準(zhǔn)。它獨(dú)立于平臺(tái),確保來(lái)自多個(gè)供應(yīng)商的設(shè)備之間的信息的無(wú)縫流動(dòng)。OPC 基金會(huì)負(fù)責(zé)開(kāi)發(fā)和維護(hù)本標(biāo)準(zhǔn)。
OPC 標(biāo)準(zhǔn)是由行業(yè)供應(yīng)商,最終用戶(hù)和軟件開(kāi)發(fā)人員開(kāi)發(fā)的一系列規(guī)范。這些規(guī)范定義了客戶(hù)端和服務(wù)器以及服務(wù)器和服務(wù)器之間的接口,包括訪問(wèn)實(shí)時(shí)數(shù)據(jù),監(jiān)控報(bào)警和事件,訪問(wèn)歷史數(shù)據(jù)和其他應(yīng)用程序。
OPC UA 的技術(shù)優(yōu)點(diǎn)主要有:(1)與平臺(tái)無(wú)關(guān),支持跨平臺(tái)應(yīng)用,可應(yīng)用與任何系統(tǒng)上。(2)配置與維護(hù)更加方便。(3)通訊范圍更廣、通訊性能更強(qiáng)。(4)通訊更加安全。
圖3 Navicat 管理Mysql 數(shù)據(jù)庫(kù)
西門(mén)子PLC S7-400 通過(guò)西門(mén)子TCP/IP Ethernet 驅(qū)動(dòng)與KEPServer(OPC 服務(wù)器)相連,將KEPServer5 軟件部署在內(nèi)網(wǎng)虛擬機(jī)上,建立Tag 標(biāo)簽與PLC 上的故障指示I/O 和中間變量匹配,并進(jìn)行分組。
采用Mysql 數(shù)據(jù)庫(kù)服務(wù),通過(guò)Navicat 數(shù)據(jù)庫(kù)管理工具導(dǎo)入Tag 相關(guān)的NodeId 和故障信息(如圖3 所示)。
為了實(shí)現(xiàn)將設(shè)備報(bào)警信息編碼向釘釘服務(wù)器提供的OPI接口發(fā)送,需部署TCP/IP 協(xié)議。用于實(shí)現(xiàn)軟件接口的網(wǎng)絡(luò)功能及數(shù)據(jù)傳輸功能。TCP/IP 將應(yīng)用、表現(xiàn)、會(huì)談三層整合成一個(gè)應(yīng)用層,在應(yīng)用層上面可以實(shí)作的程序協(xié)議有HTTP, SMTP, DNS等等。傳送層則沒(méi)有變,不過(guò)依據(jù)傳送的可靠性又將封包格式分為連接導(dǎo)向的TCP 及非連接導(dǎo)向的UDP 封包格式。網(wǎng)絡(luò)層也沒(méi)有變,主要內(nèi)容是提供了IP 封包,并可選擇最佳路由來(lái)到達(dá)目標(biāo)IP 地址。使得軟件的網(wǎng)絡(luò)選擇更加穩(wěn)定。
2.4.1 網(wǎng)絡(luò)接口
(1)OPCFoundation.NetStandard.Opc.Ua:用于介入OPCUA 協(xié)議與OPC 服務(wù)器的連接。(2)DingTalk OPI:用于向釘釘服務(wù)器發(fā)送推送消息,調(diào)用釘釘群機(jī)器人服務(wù)。
2.4.2 數(shù)據(jù)庫(kù)接口
MySql.Data:用于關(guān)聯(lián)數(shù)據(jù)庫(kù)和系統(tǒng)監(jiān)測(cè)區(qū)域的實(shí)時(shí)更新。在數(shù)據(jù)封裝時(shí),網(wǎng)絡(luò)分層中的每個(gè)層相互之間會(huì)用接口進(jìn)行交互并提供服務(wù),其中應(yīng)用層與用戶(hù)之間的接口稱(chēng)之為應(yīng)用程序接口。API 實(shí)際上是一種功能集合,也可說(shuō)是定義、協(xié)議的集合,無(wú)論是那種集合,它的實(shí)質(zhì)都是通過(guò)抽象為用戶(hù)屏蔽實(shí)現(xiàn)上的細(xì)節(jié)和復(fù)雜性。
目前,設(shè)備故障監(jiān)測(cè)系統(tǒng)已部署在配方庫(kù)的虛擬機(jī)上,實(shí)現(xiàn)了對(duì)配方庫(kù)A 線、B 線、C 線、配方庫(kù)出庫(kù)、托盤(pán)回收等區(qū)域的全面監(jiān)控。收錄了配方庫(kù)PLC 上1235 個(gè)監(jiān)測(cè)點(diǎn),并實(shí)現(xiàn)了實(shí)時(shí)監(jiān)控。本系統(tǒng)每100 毫秒對(duì)監(jiān)測(cè)點(diǎn)進(jìn)行實(shí)時(shí)掃描。設(shè)備故障監(jiān)測(cè)系統(tǒng)的設(shè)備運(yùn)行示意圖(如圖4 所示)能夠直觀地反映設(shè)備運(yùn)行的狀態(tài),故障發(fā)生的位置。改變了以往單調(diào)的文字描述,圖文并茂地展示故障信息,便于操作和維修人員迅速準(zhǔn)確地進(jìn)行判斷。軟件采集的故障信息生成完備的日志文件,詳細(xì)記錄設(shè)備故障歷時(shí),為統(tǒng)計(jì)、溯源、分析設(shè)備故障癥結(jié)提供了依據(jù)。
圖4 設(shè)備故障監(jiān)測(cè)系統(tǒng)界面
當(dāng)設(shè)備出現(xiàn)故障時(shí),本系統(tǒng)自動(dòng)推送報(bào)警信息到釘釘群,手機(jī)釘釘客戶(hù)端收到了報(bào)警信息,如圖5 所示。本系統(tǒng)推送的故障信息歷史記錄將生成日志文件,可供后期查閱和整理。提高了生產(chǎn)管理效率,降低了生產(chǎn)事故發(fā)生的風(fēng)險(xiǎn)。
圖5 釘釘群消息推送頁(yè)面
設(shè)備故障監(jiān)測(cè)系統(tǒng)的開(kāi)發(fā)解決了現(xiàn)場(chǎng)操作人員由于工作區(qū)域大無(wú)法一直實(shí)時(shí)監(jiān)控設(shè)備運(yùn)行狀態(tài)的問(wèn)題。使操作人員將更多的注意力放在對(duì)過(guò)程、工藝、產(chǎn)品質(zhì)量上,間接提升產(chǎn)品品質(zhì),同時(shí)解決了現(xiàn)場(chǎng)操作人員與維修人員溝通時(shí)對(duì)設(shè)備故障描述不準(zhǔn)確的問(wèn)題。本系統(tǒng)有效地填補(bǔ)了中控系統(tǒng)對(duì)庫(kù)區(qū)設(shè)備的監(jiān)測(cè)空白,使得一些原本只能在現(xiàn)場(chǎng)觸摸屏上的故障信息可以在虛擬機(jī)上遠(yuǎn)程監(jiān)測(cè)。提供可視化界面輔助辨識(shí),同時(shí)向手機(jī)實(shí)時(shí)推送報(bào)警信息。這一功能有效地避免了現(xiàn)場(chǎng)操作人員由于復(fù)雜的生產(chǎn)現(xiàn)場(chǎng)情況而遺漏設(shè)備報(bào)警。
設(shè)備故障監(jiān)測(cè)系統(tǒng)的開(kāi)發(fā)和使用,提高了生產(chǎn)管理效率,降低了生產(chǎn)事故發(fā)生的風(fēng)險(xiǎn),提高了故障判斷的準(zhǔn)確性,縮短了故障處理的時(shí)間,為生產(chǎn)計(jì)劃、統(tǒng)計(jì)提供了翔實(shí)可靠的數(shù)據(jù)支持。也是徐州卷煙廠智能化、信息化的體現(xiàn)。