■武漢重型機床集團有限公司 (湖北武漢 430205) 佟 冬
工業4.0意味著我國要在工業化與信息化同步發展的戰略中更快地促進兩者的融合,對促進經濟社會的發展有著重要價值。而工業物聯網,則是工業4.0實現的具體方式,因此要想實現智能制造,必須借助于工業物聯網。
在生產制造工作中,無論是數控機床還是自動化設備,發生PLC報警都在所難免。而不同的數控系統與自動化設備,其所使用的PLC語言通常是不同的,發那科數控系統的PLC程序的編寫所使用的是梯形圖語言(L D,Ladder Diagram),西門子828D數控系統的PLC程序的編寫使用的是功能塊圖(FBD,Function Block Diagram),西門子840D數控系統的PLC程序的編寫使用的是指令表(IL,Instruction List),倍福等自動化產品PLC程序的編寫使用的是結構文本(ST,Structure Text)。
盡管以上4種PLC語言都屬于IEC的標準PLC語言,然而這4種不同的PLC編程語言各有各的優勢,同時也代表著不同編寫思路及診斷思路。例如,梯形圖語言及功能塊圖語言編寫的PLC在診斷時最大的優勢就是直觀易懂,技術要求門檻相對較低;而指令表語言尤其是結構文本語言編寫的PLC,在診斷時則要求相應的技術人員有一定的英語基礎、良好的高級語言編程功底及調試功底,因此對應的技術門檻要求很高。不僅如此,即便是相同的PLC語言,不同的制造商也有其不同的指令。
因此如果要找到一個同時通曉上述4種PLC語言的工程師是很難的。為此,企業通常要招聘多個熟悉不同PLC語言的工程師,并為此付出不菲的人力成本。
有沒有一種方案或者技術手段能“繞開”這幾種PLC編程語言解決數控機床與自動化設備的PLC故障呢?答案是有的,其原理也非常簡單。對于PLC報警而言,報警信號與輸出信號一樣,受到輸入/輸出信號、PLC參數以及數控機床運行狀態的影響。因此,只要我們通過某些手段在線獲取到這些影響因素的數據,就相當于“繞過”PLC的內部邏輯,直接從根源處實現PLC遠程診斷。
想要獲取我們所需的數控機床的數據,需要從硬件及軟件兩個方面入手。
(1)硬件的搭建 在硬件上的搭建相對簡單(見圖1),只需要將數控系統設置IP等參數后,通過網線連接到以太網上即可。
(2)函數庫 不同的數控系統制造商都會為其用戶提供相應的API函數庫,幫助其開發相應的軟件工具。我們只要根據數控機床IP的設置,確定數控機床的數控系統類型,再調取不同數控系統制造商的函數庫,就能在線自動獲取數控機床的運行數據。
以發那科數控系統為例,其提供的函數庫為FOCAS,我們可以通過VB或者C++等高級語言對其進行調用,開發出對數控系統全部運行數據進行讀取與寫入的軟件功能。

圖1 硬件的搭建
(3) PLC診斷相關的API 由前文的論述可知,要實現PLC診斷需要通過相應的API獲取數據。以發那科系統為例,需要獲取的數控機床的數據有:報警信號(A信號),輸入輸出信號(X、Y信號),PLC參數(K參數、D參數)以及數控系統運行狀態信號(F信號、G信號以及位置坐標等)。讀取不同的數據,需要不同的函數功能。
1)讀取PLC信號。發那科提供了函數功能pmc_rdpmcrng用來讀取PLC有關的信號,其在VB中調用的過程如下。
Dim pmc As IODBPMC1
ret = pmc_rdpmcrng(ghandle,pmctype, 0, nstart, nend, 10, pmc)
根據讀取的PLC信號類型的不同指定不同的pmctype值,見表1。

表1 不同PLC信號類型的不同pmctype值
通過nstart與nend指定PLC信號讀取的范圍(不超過5個字節)。通過對函數pmc_rdpmcrng循環調用的方式,就能很容易地讀取出數控系統全部的PLC信號,我們可以將讀取的數據存放在表格中以便于觀察。通過函數pmc_rdpmcrng在線讀取的部分PLC信號如圖2所示。
2)讀取機床坐標。發那科提供了函數功能cnc_absolute用來讀取機床絕對坐標,其在VB中調用的過程如下。
Dim zhouzuobiao As ODBAXIS
ret=cnc_absolute(ghandle,ALL_AXES,4+4*MAX_AXIS,zhouzuobiao)
當我們獲取了數控機床的PLC信號以及機床坐標,我們就掌握了數控機床的運行狀態,通過對比故障數控機床的運行狀態與同等型號且正常運行的數控機床的運行狀態,就能很容易地找到機床的故障所在。
(4)PLC在線診斷 通過發那科的函數庫FOCAS獲取數控系統的PLC報警信息以及決定PLC報警的PLC信號、數控機床的坐標數據,再通過讀取一臺機床型號及機械動作完全一樣的數控機床的PLC數據,對兩者進行比較,就能找到造成PLC報警的因素。
1)讀取PLC信息。通過函數庫讀取數控系統的PLC型號,選取相同機床型號及相同版本的PLC作為診斷的依據。我們需要借助發那科的函數庫功能pmc_rdpmctitle來獲取PLC的版本信息,包括:制造商信息、機床名稱、PLC與NC名稱、PLC程序號、版本號、程序圖號、程序設計日期、程序設計者及ROM編寫等。
2)獲取正常運行數控機床的PLC信息。獲取了出現故障的數控機床的PLC信息,就可以通過在線查找與之相同的且正常運行的數控機床,來獲取該數控機床的PLC信息及機床坐標,并將其作為PLC在線診斷的依據,這樣就更接近實現PLC在線診斷的目的。

圖2 通過函數pmc_rdpmcrng在線讀取的部分PLC信號
3)PLC在線診斷。我們通過工業物聯網獲取了出現PLC報警的數控機床的運行信息,并獲取了相同型號、相同PLC版本且正常運行的數控機床的運行信息。但由于數控機床的PLC運行狀態不同,因此不能簡單地直接將兩臺數控機床的PLC信息及數控系統的運行狀態進行對比,例如正常運行的數控機床正在自動換刀,而出現PLC報警的數控機床正在自動換臺,也就是說存在大量的干擾因素,因此這就需要借助數控機床的PLC運行狀態的大數據進行模糊匹配,找到最相匹配的PLC運行狀態進行對比,這樣就能很容易找到造成PLC報警的原因,如圖3所示。由圖3運行狀態對比可知,造成A0.6報警的原因是X0.7信號為0。
當數控機床出現PLC故障,借助工業物聯網的在線智能診斷,并將診斷的結果發送到出現故障的數控機床中或者服務工程師的手機上,有助于服務工程師快速地解決故障。

圖3 PLC運行狀態對比
通過物聯網獲取數控機床的PLC運行狀態以及數控機床的位置狀態,就能很容易地實現PLC的在線診斷。再通過工業物聯網獲取數控機床的NC參數,就能實現數控機床故障的智能化在線診斷。我們不僅要借助工業物聯網獲取數控機床的運行信息做宏觀的數據分析,更要對其運行數據進行微觀的深入發掘,充分發揮工業物聯網的經濟效益。