王 飛,於雙月,朱金輝,李柳姮,陳 艷
(上汽通用五菱汽車股份有限公司,廣西 柳州545007)
隨著工業自動化和信息化程度的不斷提高,制造過程涉及到越來越多的制造設備和加工工藝,為了進一步提高設備運行的自動化程度和監控設備運行狀態,設備的數據采集和實時監控就顯得尤為重要。只有及時、準確、詳細地獲取到設備運行的各項信息,并在此基礎上對設備信息進行分析和管理,才能充分利用制造資源、增強設備柔性、提高設備故障處理能力,最終實現降本增效提供有力支撐。
當前傳統制造行業對設備和數控機床的管理水平較低,設備的故障處理還依靠故障發生后人工上報、人工控制處理等手段,對于設備運行過程中的潛在風險,故障隱患不能及時預警和排除,導致設備和數控機床運行效率低下。隨著技術的發展和智能制造的興起,開始出現使用遠程監控技術來統一管理和監控所有設備,但目前市面上的已有解決方案往往需要增加額外的硬件設備,或者監控軟件運行環境單一,無法隨時隨地進行設備和數控機床的信息查看與管理。此外,當前的解決方案往往針對特定設備或者數控系統,無法實現多種類、多系統的集中整合,增加成本的同時,也提高了使用的復雜性。
本文基于非標設備常用的PLC(可編程邏輯控制器)和數控機床常用的FANUC數控系統,提出了一套集成式數據采集解決方案。該方案通過OPC和FOCAS規范分別對PLC和FANUC數控系統的數據進行采集,使用C#對采集信息進行實時管理、分析、存儲、顯示等一系列工作,實現了多種類、多臺設備的信息的集中處理。與此同時,該解決方案通過工業控制普遍使用的以太網絡進行通訊,可直接與互聯網進行連接,實現遠程云端實時監控與管理。本方案解決了傳統方案無法多類設備數據集成和遠程實時監控的問題,且沒有特殊需求的前提下,無需增加額外硬件設備,通過運維人員編寫程序代碼即可實現采集信息的二次處理和相關定制化開發,極大地增強了設備數據采集的靈活性和可控性,將運維人員從大量繁瑣的工作中解放了出來,最終達到降本增效的目的。
制造過程主要涉及到兩類控制系統,分別是基于PLC控制的自動化工業控制設備和基于數控系統和PMC協同控制的數控機床。本文針對以上兩類設備分別采用OPC和FOCAS規范作為數據采集過程中的通訊協議,這兩類協議均可以通過工業以太網絡實現PC機與設備之間的連接與通信,從而實現了工廠及制造設備的數據采集及整合。
OPC即用于過程控制領域中的對象鏈接與嵌入。它是由OPC基金會制定的一套基于COM/DCOM技術,以服務器/客戶端為基礎架構的工業控制領域的開放式標準[1]。OPC技術可實現工業控制設備與應用軟件開發之間解耦,即基于此標準,客戶端開發人員無需過度關注工業控制設備的控制原理與硬件結構,僅僅通過提供的設備數據地址進行OPC服務器的配置,便可以實現制造設備數據的實時采集。
OPC技術所采用的服務器/客戶端架構如圖1所示。通過單個OPC服務器即可對多種類、多臺工業控制設備的數據信息進行讀取與轉存。OPC客戶端程序通過OPC標準提供的訪問接口,可實現對服務器的連接、注冊、通信等一系列功能,從而獲取到不同種類、不同數量的設備的數據采集。

圖1 OPC技術服務器/客戶端結構圖
需要說明的是,OPC技術也提供針對數控機床控制系統的設備數據采集功能,但對于數控系統數據支持有限,本文通過使用FOCAS對數控系統進行采集解決了此問題。
FOCAS可以通過HSSB高速通道或者以太網(TCP/IP)接口實現客戶機與數控機床設備內部的信息交換與共享,除常規I/O信息讀寫外,其還可以實現對CNC主軸信息讀寫、刀具信息管理、診斷等一系列CNC設備其它數據的交互,具體如圖2所示[2]。本文將結合生產實際使用的FANUC 31iA數控系統,實現對數控機床設備的數據采集。

圖2 FOCAS技術架構
本文采用C#語言基于MVC框架進行集成式數據采集系統的開發,利用該系統對設備數據進行實時采集與持久化存儲。為方便使用,采用B/S(瀏覽器/服務器)架構實現設備數據的可視化展示。具體架構如圖3所示。分別通過OPC與FOCAS對不同種類的多種數據采集并匯總到應用服務器,由應用服務器對數據進行二次處理。

圖3 集成式數據采集架構
對于采集到的制造設備數據,根據需求進行二次處理,或本地持久化存儲。設備當前開啟狀態、設備數字量I/O信號等數據,將直接實時存儲至服務器靜態存儲區,客戶端可實時請求查看;設備循環節拍等數據,通過數據庫進行本地持久化存儲,根據需要進行可視化。以下以設備循環節拍為例,說明集成式數據采集系統的搭建過程。
使用Visual Studio 2017進行采集系統的開發工作,使用SQL Server數據庫進行采集數據的本地持久化存儲工作。
本集成式數據采集系統通過OPC、FOCAS通訊途徑,實現對設備加工過程中的各類數據實時采集,按需進行可視化展示,或對數據進行持久化存儲,為現場生產提供數據支持。系統功能結構圖如圖4所示。

圖4 系統總體功能結構圖
3.1.1 OPC配置
OPC設備數據采集涉及到OPC服務器搭建與OPC客戶端實現。安裝獲取到的OPC服務器軟件到服務器并按照OPC服務器軟件商提供的配置說明進行簡單配置即可。需要注意的是,如果OPC服務器與部署的OPC客戶端不在同一臺設備上,則需要使用COM/DCOM分布式技術實現OPC服務器與OPC客戶端的通信[3]。
OPC客戶端的實現過程本質上就是聲明、調用、訪問OPC服務器接口的過程,OPC客戶端可通過客戶化接口(Custom Interface)和自動化接口(Automation Interface)進行OPC服務器的連接訪問,開發人員可自行選擇適合自己的接口進行客戶端開發,本文采用自動化接口進行OPC客戶端開發[4]。
3.1.2 FOCAS配置
為了調用FOCAS庫函數,在程序開發前,需要將軟件商提供的所有DLL動態鏈接庫文件復制到項目文件夾bin/debug目錄下,同時在編程界面導入fwlib32.cs文件。完成以上所述配置后即可正常使用FOCAS函數庫各項功能[5]。
FOCAS函數庫的正常使用需要提前對數控機床進行配置。在FANUC 31iA數控機床面板/內藏口頁面,將設備有效參數設置為內置板,同時按下FOCAS2鍵,確認TCP設定為8193即可。
OPC自動化接口共定義6類對象,其結構如圖5所示[6]。OPC客戶端與OPC服務器交互過程主要分為:創建和連接OPC服務器對象,添加對應的組對象、項對象并設置屬性,進行數據讀寫操作,釋放資源、斷開連接[7]。

圖5 OPC自動化接口對象
其中,OPC客戶端與OPC服務器之間的數據通信方式分為三種:同步通信、異步通信、數據訂閱。此處針對本文采用的數據訂閱方式給予說明。數據訂閱,即OPC客戶端與服務器建立連接后,客戶端向服務器注冊需要采集的數據信息,隨后服務器檢測到OPC組內數據發生變化時,通知并發送數據給OPC客戶端。為了使數據訂閱正常工作,OPC組和OPC項的“IsActive”屬性需要設置為True。OPC客戶端核心代碼邏輯如圖6所示。其中,如果通過COM/DCOM方式訪問遠程服務器,則需要添加遠程服務器信息(IP地址或計算機名稱)。

圖6 OPC客戶端邏輯結構
FOCAS采集過程主要包含目標CNC設備的連接句柄獲取,根據返回句柄調用對應的庫函數實現相應的功能,邏輯流程如圖7所示,利用Timer循環定時讀取數據并進行二次處理。

圖7 FOCAS通訊流程
3.4.1 靜態存儲數據實時推送
目前瀏覽器客戶端與服務器之間數據實時通訊主要有Ajax輪詢、長連接、WebSocket等技術,其中WebSocket技術類似于OPC通訊數據訂閱功能,即服務端主動發送消息至客戶端。依靠這種技術可以實現客戶端和服務器端的長連接,雙向實時通信。本文使用Fleck組件實現該功能,服務端程序核心代碼如圖8所示,通過指定通訊監聽的IP和端口,實例化WebSocket服務器對象,當有客戶端連接請求到達時,將客戶端對象添加至集合(allSockets),反之移除該對象。客戶端通過編寫JavaScript代碼,實例化WebSocket對象并連接至指定服務器IP地址和端口號,然后調用WebSocket.onmessage()方法對接受到的數據進行處理即可。此處不再展示說明[8]。

圖8 C#服務端WebSocket實現
3.4.2 數據庫信息讀取
對于設備循環節拍時間的歷史數據,除了寫入靜態存儲區,還需要同步寫入到數據庫中。此處采用了EntityFramework框架進行數據庫的交互操作,該框架通過ORM映射,避免了開發人員拼接SQL字符串的過程,簡化了數據庫交互過程。此處以查詢為例進行介紹,具體如圖9,圖中分為直接查詢和分頁查詢,通過數據庫上下文“Db”和Lambda表達式即可快速實現數據庫查詢操作。

圖9 數據庫查詢操作
以下通過采集10臺RX3i PLC自動化控制設備和5臺Fanuc 31i-A數控機床節拍數據為例說明OPC和FOCAS采集過程和數據可視化頁面展示效果,其中數據庫存儲過程不再展開贅述,僅以更新至靜態存儲區為例進行說明。
以數據訂閱方式為例說明OPC服務器數據獲取過程。核心程序如圖10所示,當訂閱事件對應數據項值發生變化時,將觸發事件內代碼。其中,字典對象(OPCData.Item)用于存儲節拍歷史值,即靜態存儲區。當程序內部首先獲取節拍數據項時間戳(TimeS-tamp),對比上次節拍時間戳更新值,如不一致,則說明數據項值已變化,此時將采集到的節拍值(Item-Value)和節拍數據項時間戳賦值到字典對象進行數據更新。

圖10 訂閱事件
FOCAS未提供數據訂閱功能,此處使用Timer類進行定時循環讀取,并通過在循環中判斷中斷標志位狀態值。首先,調用庫函數cnc_allclibhndl3連接目標CNC。然后調用庫函數pmc_rdpmcrng,讀取對應PMC地址值。由于FOCAS采集后回傳數據為字節型數據,因此對于數據還需要額外進行二次轉換,核心程序如圖11所示。設備當前節拍值存儲在PMC地址“D4000”中,通過結合頁面實際值查看PMC地址位值數據可知,該值使用了連續存儲區“D4000-D4001”。對采集返回的數據,分別取字節區第1區數據(低8位)和第2區數據(高8位),將其轉換成二進制數據以備數據拼接。其中,低8位數據需要額外處理,即轉換成二進制數據時需要使用字符“0”在左端補足8位。然后將拼接好的字符串轉換成十進制,并將小數點左移一位。

圖11 FOCAS數據二次處理
基于上述第三方組件和Layui、jQuery技術以及Echart圖表開發了網頁端監控頁面,可以快速實現頁面監控顯示功能。采集到的設備節拍數據通過實時推送和數據庫交互得到的設備節拍信息顯示效果如圖12所示。實時節拍處展示最新節拍數據(靜態存儲區數據),下方表格處展示節拍記錄(持久化數據),并將歷史數據繪制成圖表展示于右上角。

圖12 集成式數據監控平臺頁面
為了實現車間設備的實時數據采集和遠程監控,方便設備的運行管理和故障排查,本研究基于OPC和FOCAS技術開發了一套面向多工業設備的數據采集自動化測試系統,基于B/S與MVC架構搭建了車間級集成式數據采集及可視化系統,進而實現了多設備數據采集、數據二次處理以及遠程實時監控等功能,加快了車間設備的高效運行并提高生產力。
伴隨著制造業轉型升級,對于工廠自動化率的要求進一步提高。通過實時采集設備數據,并對數據進行持久化存儲和可視化操作,一方面有利于車間狀態的實時掌握,另一方面,基于設備數據采集,為后續設備狀態的大數據預測性分析提供可靠支持。