李金普 韓佳起 胡長霆
(江蘇中煙工業有限責任公司徐州卷煙廠,江蘇 徐州221000)
隨著網絡科技的發展,傳統工業對網絡化、智能化提出了更高的要求。為了將機械設備和電腦端可視化、手機端實時監測、客戶端遠程控制相結合,本程序對PLC、OPC UA[1]協議、窗體客戶端的設計編寫進行了深入研究。目前在我廠的生產活動中,設備的運行狀況可通過生產現場的觸摸屏程序獲取、顯示和控制。當設備出現故障,觸摸屏程序會顯示故障信息,并發出報警,這時要求現場操作人員或維修人員在第一時間發現并處理設備報警和故障。但由于生產區域空間跨度大、情況復雜,有些設備的報警信息不能及實地被發現和查看,另外,生產區域中也存在部分設備信息未被中控系統監測的情況,例如配方庫堆垛機具體故障無法報送,需要操作人員進入庫區確認。類似情況會導致中控人員無法快速找到設備故障癥結,難以實施在線調整、快速復位等操作。針對以上問題,本文開發了一套設備故障監測系統,經測試后,該系統縮短了故障處理的時間,提高了生產管理效率,降低了生產事故發生的風險。
設備故障監測系統是一款基于C#語言的WINDOWS 窗體應用程序。可在裝有WINDOWS 操作系統和.NET Framework[2]的計算機內運行。該系統遵循OPC UA 協議將西門子S7-400PLC和程序連接。程序通過訂閱的方式接收PLC 的故障報警信息,經過判斷和處理后在可視化區域顯示故障圖標記,并通過釘釘群機器人實現手機和電腦端的消息推送。相關操作人員在手機安裝釘釘并打開系統通知,可以在第一時間接收到設備故障報警。
本系統將PLC 信息點(PLC 中間變量、輸入點、輸出點)用MySQL 數據庫進行管理,將每個信息點的標簽,NodeId[3],地址,描述,所在區域串聯,并根據設備、區域進行分組。采取訂閱[4]的方式,由OPC 服務器(KEPServer[5])對PLC 循環掃描,減輕了前端的運算壓力。管理方式高效,代碼優化程度高。
本系統模型結構如圖1 所示,PLC 通過西門子TCP/IP Ethernet 驅動和KEPServer(OPC 服務器)連接,建立Tag 標簽與PLC 上的故障指示I/O 和中間變量匹配,并進行分組。建立數據庫,將Tag 標簽的NodeId 和相應設備故障信息錄入數據庫。完成服務器和數據庫的部署工作后,軟件可直接運行,并且每次使用前不需要重新部署。
點擊建立連接,軟件通過OPCUA 協議和OPC 服務器建立連接,同時建立與數據庫的連接。
點擊開始服務,從數據庫表中獲取所有NodeId 并向OPC服務器請求訂閱。當PLC 監測點的值發生改變,OPC 服務器通過掃描獲得該變化,并向軟件發送相應的NodeId 和值。軟件判斷該值是否為故障,通過數據庫取出該故障點的對應的故障信息,顯示在軟件內。同時將故障設備在區域圖上標紅。
對故障信息通過REA 算法加簽、加時間戳的方式進行加密,并轉化為哈希值發送到釘釘群服務器所在的OPI[6]接口。利用釘釘群機器人實現將故障位置、類型、地址等信息實時發送到釘釘群的功能。
點擊停止服務,系統取消對OPC 服務器的訂閱并斷開和OPC 服務器、數據庫的連接。

圖1 系統模型結構圖
利用Visual Studio2019 發開工具編寫基于C#的窗體程序,完成OPC 服務器和數據庫的部署工作。根據程序主界面獲取用戶輸入的OPC 服務器地址建立連接,查詢獲取數據庫表中獲取所有NodeId 并向OPC 服務器請求訂閱。
當PLC 監測點的值發生改變,OPC 服務器通過掃描獲得該變化,并向軟件發送相應的NodeId 和值。當該值為TRUE 時,軟件判斷該點為故障,將故障點的NodeId 返回數據庫查詢其相關信息。將故障點在設備運行情況示意圖上的對應位置標紅(如圖2 所示)同時生成故障提醒,通過RSA 算法加簽、加時間戳的方式進行加密,并轉化為哈希值發送到釘釘群服務器所在的OPI 接口。利用釘釘群機器人實現將故障信息事實發送到釘釘群的功能。

圖2 軟件內設備運行情況示意圖
OPC 是用于在工業自動化領域和其他行業中安全可靠地交換數據的互操作性標準。它獨立于平臺,確保來自多個供應商的設備之間的信息的無縫流動。OPC 基金會負責開發和維護本標準。
OPC 標準是由行業供應商,最終用戶和軟件開發人員開發的一系列規范。這些規范定義了客戶端和服務器以及服務器和服務器之間的接口,包括訪問實時數據,監控報警和事件,訪問歷史數據和其他應用程序。
OPC UA 的技術優點主要有:(1)與平臺無關,支持跨平臺應用,可應用與任何系統上。(2)配置與維護更加方便。(3)通訊范圍更廣、通訊性能更強。(4)通訊更加安全。

圖3 Navicat 管理Mysql 數據庫
西門子PLC S7-400 通過西門子TCP/IP Ethernet 驅動與KEPServer(OPC 服務器)相連,將KEPServer5 軟件部署在內網虛擬機上,建立Tag 標簽與PLC 上的故障指示I/O 和中間變量匹配,并進行分組。
采用Mysql 數據庫服務,通過Navicat 數據庫管理工具導入Tag 相關的NodeId 和故障信息(如圖3 所示)。
為了實現將設備報警信息編碼向釘釘服務器提供的OPI接口發送,需部署TCP/IP 協議。用于實現軟件接口的網絡功能及數據傳輸功能。TCP/IP 將應用、表現、會談三層整合成一個應用層,在應用層上面可以實作的程序協議有HTTP, SMTP, DNS等等。傳送層則沒有變,不過依據傳送的可靠性又將封包格式分為連接導向的TCP 及非連接導向的UDP 封包格式。網絡層也沒有變,主要內容是提供了IP 封包,并可選擇最佳路由來到達目標IP 地址。使得軟件的網絡選擇更加穩定。
2.4.1 網絡接口
(1)OPCFoundation.NetStandard.Opc.Ua:用于介入OPCUA 協議與OPC 服務器的連接。(2)DingTalk OPI:用于向釘釘服務器發送推送消息,調用釘釘群機器人服務。
2.4.2 數據庫接口
MySql.Data:用于關聯數據庫和系統監測區域的實時更新。在數據封裝時,網絡分層中的每個層相互之間會用接口進行交互并提供服務,其中應用層與用戶之間的接口稱之為應用程序接口。API 實際上是一種功能集合,也可說是定義、協議的集合,無論是那種集合,它的實質都是通過抽象為用戶屏蔽實現上的細節和復雜性。
目前,設備故障監測系統已部署在配方庫的虛擬機上,實現了對配方庫A 線、B 線、C 線、配方庫出庫、托盤回收等區域的全面監控。收錄了配方庫PLC 上1235 個監測點,并實現了實時監控。本系統每100 毫秒對監測點進行實時掃描。設備故障監測系統的設備運行示意圖(如圖4 所示)能夠直觀地反映設備運行的狀態,故障發生的位置。改變了以往單調的文字描述,圖文并茂地展示故障信息,便于操作和維修人員迅速準確地進行判斷。軟件采集的故障信息生成完備的日志文件,詳細記錄設備故障歷時,為統計、溯源、分析設備故障癥結提供了依據。

圖4 設備故障監測系統界面
當設備出現故障時,本系統自動推送報警信息到釘釘群,手機釘釘客戶端收到了報警信息,如圖5 所示。本系統推送的故障信息歷史記錄將生成日志文件,可供后期查閱和整理。提高了生產管理效率,降低了生產事故發生的風險。

圖5 釘釘群消息推送頁面
設備故障監測系統的開發解決了現場操作人員由于工作區域大無法一直實時監控設備運行狀態的問題。使操作人員將更多的注意力放在對過程、工藝、產品質量上,間接提升產品品質,同時解決了現場操作人員與維修人員溝通時對設備故障描述不準確的問題。本系統有效地填補了中控系統對庫區設備的監測空白,使得一些原本只能在現場觸摸屏上的故障信息可以在虛擬機上遠程監測。提供可視化界面輔助辨識,同時向手機實時推送報警信息。這一功能有效地避免了現場操作人員由于復雜的生產現場情況而遺漏設備報警。
設備故障監測系統的開發和使用,提高了生產管理效率,降低了生產事故發生的風險,提高了故障判斷的準確性,縮短了故障處理的時間,為生產計劃、統計提供了翔實可靠的數據支持。也是徐州卷煙廠智能化、信息化的體現。