工業大數據分析 | 淺談工業數據獲取與解析
2022-10-20 17:55:00
次
01 為什么關心工業數據的獲取與解析問題?
簡單來說,是由于工業數據的來源、分類、特性、數據結構以及通信協議等諸多方面都具有多樣性,且此類多樣性影響著工業數據的獲取,進而影響到后續圍繞工業數據管理與綜合利用的各類系統的規劃與構建。
智能制造技術體系中所需要的人工智能技術,以及基于數據驅動構建模型的理念等為包括柔性制造、精益制造以及故障預測與健康管理(PHM)等在內的多類工業應用軟件提供了新的發展方向,并產生了包括數字孿生(DT)、信息物理系統(CPS)等多種新興量化深度融合成果。但不難發現,以上應用均基于對工業現場信息的深度感知:通過與傳感器、PLC控制器以及嵌入式系統等實體通信,獲取設備的實時運行狀態,進而開展數據內涵的深度分析應用,從數字化應用角度講,這就是工業數據的獲取與解析過程。

從信息化角度,理想的工業數據來源是各種數據庫,包括結構化、非結構化、時序數據庫和消息服務器等,后者比如MQTT broker 或Kafka 服務器,乃至簡單的 Redis 服務器等。此類數據來源使得軟件開發可以從數據架構設計開始,可通過軟件API或者基于http的RPC協議實現對數據源的連接、訪問乃至事務處理(OLTP)或分析展現(OLAP)。
但工業制造現場實際狀況卻并非如此。在包括機加、鈑金、焊接、輥彎、裝配等制造過程以及伴生的質檢、型架定位、工裝輔助、物流配送、試驗驗證中使用了大量手動、半自動以及自動化生產設備,此類設備的生產廠家、采購時間、應用領域、遵循標準等往往并不相同,唯一相同的是各類設備的首要目標都是完成各種生產制造任務,從IT和數據的角度往往忽視了對此類設備中存在數據的獲取進行規范。基于這樣的工業生產實際,要求在特定的信息化任務中對其進行改造升級或替換并不現實,更常見的做法是基于數字化轉型提升訴求,適應生產實際調整軟件系統的數據接入能力。
綜合以上分析,在構建面向工業領域的智能化系統時,我們需要對工業數據的獲取具備以下認知:
?充分了解現場工業數據的多樣性,從而理解工業現場數據狀況與理想數據狀態之間的差距,并以此在方案設計時做出調整措施。
? 務必動手測試現場工業數據的連接與解析可行性,并查看實際數據情況,確保技術設計選型科學合理且落地可用。
?準確評估數據連接工作的難度,根據業務需求估算連接現場工業數據所需的準備工作難度與工作量,以供項目論證分析決策參考。
本文以下內容基于上述分析進一步展開說明。首先介紹工業數據的定義并討論其多樣性問題,然后介紹工業數據的連接與解析,最后討論在開發數據密集型工業系統時需考慮的核心方面。
02 什么是工業數據?
從概念上看,我們所討論的工業數據,是用于表達工業制造、試驗、運行過程中會隨時間、工況、操作條件等因素發生改變的,某種系統狀態的定量或定性數據。舉例來說,工業數據包括設備的溫度、壓力、流量、加速度等隨時間變化的物理參量,以及系統監控、告警、維護信息等。
既可以利用此類數據進行面向工業領域的數據深度分析、智能模型開發工作與決策可視展示,也可以將其提供給各類細分專業業務系統,對其進行進一步的利用。比如在數字物理系統中,采集到的外部載荷信息會通過仿真方法快速轉化為內部關鍵設備的應力分布、溫度場分布等結果,從而結合一定的優化匹配方法實現對設備內部運行狀態的自動控制、優化控制。
1.工業數據的多樣性:
依據工業數據的多樣性,在技術研究與應用場景中存在多種分類方法,下圖以工業信號數據為例給出示例,該示例同時給出了同樣的工業信號數據類型下,不同應用情景下的信號數據之間存在的巨大差異。

△信號數據的分類
從IT角度,我們將工業數據分為實時數據流與靜態數據文件兩類。其中實時數據流直接來自工業現場,靜態數據文件是對不方便直接獲取的工業數據,以及過往數據的歷史記錄,兩類數據的獲取與解析分別存在需要重點關注的問題。
2.工業實時數據流的獲取
工業實時數據獲取是對工業設備運行狀態的實時感知,是PHM與數字孿生等系統構建的基礎。如果制造側并未實現工業數據的獲取與匯總,則面向工業數據分析的信息化系統側就必須考慮該問題,尋求將工業現場的數據實時有效采集至數據庫/消息服務器/緩存服務器。一般而言,需要充分識別待采集對象特征,以判別數據的獲取方式。
1)待采集數據對象
無論實際設備的功能是什么,在數據采集環節通常需要連接以下設備:
PLC(可編程邏輯控制器):PLC具有高實時性,并具有類似繼電器能力的物理作動能力,PLC應用于大量制造業自動化設備,是制造業自動化設備中最常用的控制單元。

△PLC是工業自動化設備的核心控制元件
PLC設備通常提供RS232\RS485\RJ45等物理接口,并提供包括Modbus,ProfiBus等通信協議支持,但是由于PLC本身的架構限制,對其數據的訪問通常只能通過物理地址(寄存器地址)訪問與解碼。
嵌入式系統:嵌入式系統包括微控制單位(MCU),數字控制系統(DCS)等多種形式,可視為與機械、電氣設備整合的PC機。與PLC相比,嵌入式系統具有完整的圖靈機架構,自帶操作系統,能提供良好人機交互界面,可以開發出復雜度較高的應用軟件系統,并可以在很多領域替代PLC使用(如倍福系列產品)。
嵌入式系統本質是PC設備,因此理論上可以使用常規的PC通信方式如HTTP/FTP協議獲取其內部數據。但是在實際應用中,嵌入式系統軟件以設備正確運作為優先任務,基于安全與商業的考量并不開放數據訪問權限,因此往往需要通過購買專門的軟件API接口獲取數據。
SCADA(數據采集與監視控制系統):SCADA是基于信息化側要求所構建的專用工業數據采集系統,既包括安裝于工控機的專用設備數據采集軟件,也包括通用的基于開放協議標準的各類邊緣盒子。
由于SCADA系統的構建目標就是為信息化系統采集工業數據,因此通常具有便利的數據獲取接口。新興的工業邊緣采集設備還能支持包括MQTT等物聯網協議和Restful API等遠程調用服務。
然而,這類系統存在以下局限性:
→基于開放技術協議的數據采集設備要求工業設備原生支持OPC等開發協議,現實中的設備通常不能保證這一點;
→面向特定設備群及應用場景開發的SCADA系統造價昂貴,常用于核電系統等專業領域,難以推廣普及。
2)基于各類通信協議的數據獲取方式
在實際工業場景中存在多種通信協議,并且分布在計算機網絡架構中的多個層級。比如在物理層,一般的設備會以 RS232/485 接口和各種帶寬的以太網接口為主,其它類型如光纖、雙絞線或者無線連接也可能存在。此類差異需要在相應的開發工作中予以注意,但通常并不影響到軟件本身的設計。從軟件開發可行性與架構設計的立場考量,可以將多種通信協議簡要區分為三種模式。
→基于物理地址的主動訪問
該訪問方式主要用于PLC等較基礎的控制設備,其代表協議為Modbus。由于設備運行程序較為簡單,并沒有提供友好的通信協議,只能通過指定物理地址獲取設備上的相關控制量與物理量,這種物理地址可能是若干字節,也可能是某個字節中的一位。由于這種情形下無法借助設備將變量數值與具體的物理量關聯,必須借助被稱為“點表”的文件構建關聯。點表來自設備提供方,下圖是一個點表的示例,為簡單起見僅選取其中21個狀態量進行表示,實際設備所含狀態量可能達到數百個。
該表給出了每個狀態量對應的Modbus寄存器地址,因此可以通過該協議訪問這些地址,以獲得相應的狀態信息。表中前16個狀態數據為布爾量,在寄存器中,每個量只占有一個bit,后五個狀態數據為實數,即浮點數(f16),在寄存器中這五個狀態量每個狀態量占有兩個byte,以上信息可由點表中的地址信息獲取。

△用于關聯物理地址與對應狀態量的點表
→基于變量名稱的主動訪問
具有類PC架構的設備通常提供較為高級的接口服務。例如 OPC-UA 或 ADS 協議,新的嵌入式設備可能提供包括Restful API 在內的網絡通信能力。這些協議或者通過專用API,或者通過通用接口協議(如HTTP),提供了多種設備狀態信息訪問的能力。一般的,此類設備也可能提供基于物理地址的訪問方式,其中OPC-UA基本屬于行業標準,是工業領域最常用的通信協議之一。
→基于推送機制的被動訪問
新的自動化設備與工業數據采集盒子會提供面向MQTT broker 甚至 Kafka 消息服務器的推送服務,因此只需要訂閱相關事件即可。此類數據獲取方式在目前的IOT領域中較為常用,其基于事件的推送方式結合物聯網環境下的云邊協同技術能夠滿足很多物聯網應用場景。但如PHM等工業應用如果要基于等間隔采樣原始數據展開工作,則此種方式存在效率不高的限制。

上述三類數據獲取策略各有利弊,并且在每種數據獲取類型中,不同的通信協議往往具有不同的通信性能,需要基于工業現場實際和業務需求進一步明確和分析選型。
基于經驗,如果構建基于工業數據分析的應用,可以首先考慮基于物理尋址的方式。因為工業數據分析應用往往要求采集全量數據,在此方式下使用寄存器首位地址結合數組類型,可簡化數據傳遞的計算復雜度,并減少數據查詢次數。其代價是需要將獲取的查詢結果重新轉碼解析后分解到各參量,相當于用計算資源換取網絡性能。
如果構建基于事務型、決策看板型的應用,可以優先考慮基于變量名通信的方式,此類方式可以按需求獲取指定的數據內容,并且易于配置、變更。選型應優先考慮行業常用協議如OPCUA等。
如果應用具有云邊協同架構,則推送機制是連接邊緣側設備與云平臺的可選策略,其工業應用偏向事件驅動模式。
2. 靜態數據文件中數據的獲取
除實時數據外,工業領域還存在大量的靜態文件需要被解析,主要是由于以下原因:
1)歷史數據
大型制造企業建立初期往往缺少現代信息化系統所提供的數據服務支持,但其完善的質量管理體系和較好的制造控制能力使其在過往的制造過程中留存了大量數據,此類歷史數據通常以文件的形式保留。
2)高采樣數據
對非平穩運行狀態的監視需要使用非常高的采樣率。如對某類發動機點火階段震顫狀態的觀測,需要用到每秒數萬次的采樣測量。如此采樣率會在短時間內產生大量數據,遠程直接連接采集數據會造成網絡堵塞或數據丟失。因此常用方式是直接在測試端設備上留存數據,然后以文件形式傳遞。

3)第三方數據
當設備的使用方與設備的生產方、運維方不是同一實體時無法直接獲取數據。比如列車運行數據或風電場運行數據可供設備生產方用以分析其產品質量,這種數據轉移需要通過數據交易、權限管理等,目前使用文件的形式傳遞居多。
在數據密集型工業應用系統構建時,對靜態數據文件的解析主要面臨多種文件類型問題,實際存在的靜態數據文件類型包括并不限于:txt, csv, dat, xls(x), mat, wav, d7d(dxd), zd, arrow, parquet等。其中,部分文件類型中數據存儲方式還存在多樣化情形。
從IT數據結構角度,可將以上文件類型區分為以下幾類:
→明碼文件
txt,csv 以及 部分 dat 文件。此類文件可以使用所有文本編輯軟件打開直接查看其數據,其數據結構 (schema) 可以直接觀察 , 數據的類型也可直接了解,文件的析取方式較為簡單,但其數據儲存效率較低,被手動改變的風險較高,并且在讀取時需要注意文檔內非數據部分信息的處理,以及進行文本到數值的轉碼。

△某種明碼數據示例:數據的schema與類型可觀測
→序列化緩沖 (serialized buffer) 文件
此類文件內含數據以二進制字節表示,可以用UE或其它支持16進制數據析取展示的工具進行查看。文件的后綴名可能是dat, zd, tdms 等多種名稱。數據經由內存中數據的表直接留存,空間占用率不高,存儲與導入速度很快,并且兼容幾乎所有環境。
但這種數據文件常常不包含任何對該數據的描述,包括數據結構、數據類型以及數據起始解析地址等,所有信息均需另外告知;或者此類信息與數據一同編碼至該文件內,需要另外告知上述信息在文件中所在的相對地址位以便解析。
前一數據文件的序列化緩沖數據,該數據描述信息需額外告知或通過給定文件內地址析取。
→特定軟件專用文件
工業領域存在大量專用軟件,這些軟件常常通過自定義數據文件格式對其數據進行存儲與管理。對這些文件的析取需要使用匹配的專用解析庫文件或支持模塊。
比如MATLAB 的 mat 文件 和 Excel 的 xls/xlsx 文件,以及德維創數據采集專用的 d7d/dxd 等,這類數據通常解析后可以直接獲取數據結構信息,以及數據類型信息。難點在于解析器的獲取。其中常見文件類型通常具有公開的第三方解析工具,專用類型則需要軟件方提供相應解析支持工具包。
前述數據以mat格式存儲時被解析的形式,這種形式保持了數據的結構與類型信息。
03 工業數據解析
前述內容對工業數據的多樣性進行了闡述分析,并站在信息化建設的立場將工業實時數據的接入、靜態數據文件的讀取分別歸為了三種類型。這其中除兩類簡單的靜態文件解析不需要考慮數據類型問題外,其它接入數據還需要處理按照正確的數據類型解析數據的問題。本節我們討論相關問題,同時介紹一個用以測試數據解析方案的node-red,該工具同時支持在工作前期快速洞察數據。
1. 序列數據解析
在許多工業應用場景中數據傳輸是基于較底層協議進行的,意味著獲取的工業數據不會以明確的數據類型傳遞,而只是表示為單純的字節序列。如下圖所示。
以字節串序列傳遞的工業時序數據,需要通過指定的數據類型對其進行解析。
對這類數據序列的解析涉及兩個方面,即數據類型與數據存儲方式:
→數據類型
同一個字節序列在指定不同的數據類型時可以被解析為多種數據序列,以上述字節序列為例,在將數據指定為int8, int16, int32, float16, float32, float64 等格式可以獲得不同的解析結果。并且,在實際工作中一個字節序列中可能包含多種數據類型的多個數據的組合。因此必須在解析前首先了解待解析數據的實際類型。

△不同的類型假定會把同一的數據序列解析為不同的結果
→數據存儲方式
數據的存儲方式主要指數據序列化時的大端和小端選擇。
" 大端模式,是指數據的高字節保存在內存的低地址中,而數據的低字節保存在內存的高地址中,這樣的存儲模式有點兒類似于把數據當作字符串順序處理:地址由小向大增加,數據從高位往低位放;小端模式,是指數據的高字節保存在內存的高地址中,而數據的低字節保存在內存的低地址中,這種存儲模式將地址的高低和數據位權有效地結合起來,高地址部分權值高,低地址部分權值低。--- 定義來自百度百科
通常信息化系統中的數據都以小端形式存儲,但在很多工業設備上數據以大端形式存儲。因此在數據的解析中還必須注意數據的存儲形式。下圖展示了同一種數據類型以不同存儲形式假設進行解析時得到的不同結果:

△不同的存儲方式假設會得到不同的解析結果
2. 工業數據解析測試
由于工業數據的獲取與解析存在各種情形,在系統構建前期快速測試接入數據,了解數據狀況就顯得十分必要。對數據的解析通常需要通過代碼開發的方法完成,以python為例,可以使用諸如 numpy.frombuffer, pandas.read_csv, scipy.io.loadmat 等方法,結合正確的參數實現對數據的正確解析。但此類方法并不便利,非開發人員在進行項目初期調研時難以直接使用。因此可以使用如 node-red 等軟件進行數據解析的測試。
node-red 的安裝:node-red 由IBM公司開發,BS架構,主要用于IOT環境中進行低代碼的數據接入與解析。可以在windows下用命令:
npm install -g --unsafe-perm node-red
安裝,安裝要求系統具備 node.js 環境。建議使用conda虛擬環境管理器構建node.js環境,在該環境下安裝node-red。安裝完成后在該虛擬環境下輸入node-red即可啟動該軟件服務,然后在瀏覽器輸入服務指定的訪問路徑即可進入node-red。
注意:請勿使用docker部署該軟件,否則本地文件析取測試在windows環境下難以實現。

△node-red 主界面環境
→使用node-red 連接工業實時數據
通過 node-red 可以調用多種工業數據接口協議進行數據獲取,如通用的 OPCUA,又或專用的倍福通信協議 ADS。

△拖曳式使用多種工業連接協議(需要程序內安裝)并配置連接參數
→使用node-red 解析文件數據
支持解析多種靜態文件。特別的,以序列化緩沖數據形式存儲的文件使用文本類軟件解析便利性較差,使用 node-red 可以簡化這一過程。在數據解析中可以指定待解析數據的起始地址,數據類型與數據長度等參數。

△對前述序列化緩沖數據文件進行解析
在完成數據的連接與解析后,node-red還支持對這些數據的部分可視化展現,具體請見該軟件文檔dashboard部分。
node-red 雖然提供了便利的工業數據連接與解析的工具,但在解析復雜的真實現場數據需要較多配置工作,并難以適應動態、柔性現場條件,因此在真實系統中仍然需要使用開發的方式構建數據獲取與解析能力。該工具適用于對工業數據的快速連接與解析方式的驗證。
為實現動態、大批量完成的工業數據獲取與解析工作,美林數據提供設備采集器模塊產品。設備采集器是一個可以進行多設備協議數據采集,并進行數據消息報送的采集軟件;可以通過靈活的配置文件進行點位采集業務的配置;可對采集點位進行分組,同組點位采用相同的頻率進行采集,并將數據按照特定格式組合后發送同一消息主題。

△設備采集器總體架構
采集器整體采用Spring Boot進行開發,方便進行其他組件的集成及管理工作。并包括有配置解析模塊,周期調度模塊,協議采集模塊,數據組裝模塊,數據報送模塊等。各模塊內配置參數通過yaml配置文件確定,方便靈活的處理業務。此外,調度任務支持Cron表達式,原生支持OPCUA協議,Json格式組裝,Kafka、MQTT報送等功能。是工業數據采集與解析的便利構件。
04 總結
將以上所述過程以流程圖的形式表示如下。其中藍色字體部分是一般工業軟件系統構建時需要動態配置的部分,需要在開發過程中予以關注。

△工業數據的獲取與采集過程
本文目的是簡要介紹工業數據獲取與解析的一般性知識,以便數據密集型工業應用系統構建的相關人員能夠了解自己面對的業務實際,并具備能力洞察實際數據形態,從而較準確地研判實現業務目標的可行性與時間成本耗費。希望上述介紹可以為您提供相關幫助。
也可來電與我們深入交流:400-608-2558