黃雙成,李志偉
(河南化工職業(yè)學(xué)院 機 械電子系,河南 鄭州 450000)
如何檢驗復(fù)雜先進的控制算法,并將其有效地應(yīng)用在生產(chǎn)現(xiàn)場一直是工業(yè)控制領(lǐng)域普遍關(guān)注的熱點問題。PLC+工控機模式是常見的分布式監(jiān)控系統(tǒng)結(jié)構(gòu),但是PLC編程語言簡單,無法實現(xiàn)復(fù)雜的控制算法,而傳統(tǒng)的PID算法已經(jīng)不能滿足實際控制的需要,神經(jīng)網(wǎng)絡(luò)、模糊控制等復(fù)雜算法取代PID算法成為工業(yè)控制的發(fā)展趨勢[1]。
MATLAB工程計算能力強大,程序設(shè)計流程靈活,可實現(xiàn)復(fù)雜的控制算法[2]。若將 MATLAB應(yīng)用到PLC控制系統(tǒng)中,將有利于故障診斷和過程控制復(fù)雜算法的設(shè)計與實現(xiàn)。但要實現(xiàn)上述目的,問題節(jié)點在于PLC和MATLAB之間的數(shù)據(jù)交換。本文介紹通過OPC技術(shù)實現(xiàn)MATLAB與PLC之間數(shù)據(jù)交換的方法,并通過一個實際的例子來說明PLC與MATLAB通訊的原理及過程。
OPC是以微軟公司COM和DCOM技術(shù)為基礎(chǔ)而創(chuàng)建的一種應(yīng)用于自動化領(lǐng)域的軟件接口標(biāo)準,具有傳輸可靠、速度快的特點,已廣泛應(yīng)用在工控行業(yè)的各個領(lǐng)域[3]。
OPC目標(biāo)是在客戶和服務(wù)器之間構(gòu)建一種通訊和數(shù)據(jù)交換的工業(yè)標(biāo)準機制,只要遵循OPC標(biāo)準,客戶和服務(wù)器間就能形成一定規(guī)范的鏈接關(guān)系,OPC服務(wù)器就可為客戶提供數(shù)據(jù)服務(wù)。通常情況下OPC服務(wù)器主要由服務(wù)器對象(Server)、組對象(Group)和數(shù)據(jù)項對象(Item)3類組成[4],具體層次關(guān)系如圖1所示。
圖1 OPC服務(wù)器層次關(guān)系圖
PLC采集現(xiàn)場的數(shù)據(jù),通過工業(yè)以太網(wǎng)傳給工控機,再通過工控機內(nèi)部的OPC協(xié)議分別傳給組態(tài)軟件和MATLAB的工作空間,組態(tài)軟件用來監(jiān)控系統(tǒng),而MATLAB通過算法取得最優(yōu)數(shù)據(jù),然后再通過OPC協(xié)議和以太網(wǎng)將數(shù)據(jù)返回到PLC內(nèi)。數(shù)據(jù)交換系統(tǒng)結(jié)構(gòu)如圖2所示。
打開MATLAB并在指令空間中輸入“opctool”,在OPC工具箱進行OPC的配置,將MATLAB設(shè)為本地服務(wù)器,然后把“Co DeSys.OPC.02”添加為客戶,點擊“connect”,連接之后,在客戶端添加一個組,重命名為“INPUT”,并且在該組中添加一個對象,畫面如圖3所示,可以看到,在PLC配置中設(shè)置的兩個變量都顯示在添加對象的對話框的左邊,選中“INPUT”變量,點擊“add”,則PLC的變量“INPUT”添加到了組“INPUT”中。用同樣的方法添加一個“OUTPUT”組,然后將PLC的變量“OUTPUT”添加到組“OUTPUT”中,這時在PLC的模擬量輸入端給一個5 V的信號,且看到在PLC編程軟件PLC配置中,模擬量輸入有了一個整型值,而在MATLAB的OPC工具箱中,選中“INPUT”變量,也顯示了一個整型值,它的值和PLC配置中模擬量端口顯示的整型值完全相等。
圖2 數(shù)據(jù)交換結(jié)構(gòu)圖
圖3 在MATLAB的OPC工具箱中添加對象的畫面
接著在MATLAB的Simulink中對這個模擬量輸入實時監(jiān)測,然后將此模擬量再送到模擬量輸出端子。首先在MATLAB的Si mulink工作空間中加入“OPC Configuration”、“OPC Read”、“OPC Write”三個模塊,并做好相應(yīng)的配置?!癘PC Read”模塊中加入變量“INPUT”作為對象,“OPC Write”模塊中加入變量“OUTPUT”作為對象,添加完畢后PLC的兩個變量名顯示在Simulink工作空間的“OPC Read”和“OPC Write”中,說明PLC的兩個變量都已經(jīng)導(dǎo)入到Simulink的工作空間。然后,將“OPC Read”的端子V和“OPC Write”的端子相連,再在中間加入一個“scope”,用來實時顯示從PLC讀過來的數(shù)據(jù),配置好的Simulink工作空間如圖4所示。設(shè)置完畢后開始仿真,雙擊“scope”,則隨著時間的推移數(shù)據(jù)也在實時顯示,通過調(diào)節(jié)模擬量輸入端的電壓值,可以看到顯示數(shù)據(jù)也在隨著調(diào)節(jié)而實時變化,如圖5所示。
這時PLC硬件配置中在線顯示的數(shù)據(jù)、模擬量輸入端口顯示的數(shù)據(jù)和模擬量輸出端口顯示的數(shù)據(jù)完全相等,與“scope”監(jiān)測到的數(shù)據(jù)以及opctool中組“INPUT”和組“OUTPUT”中的兩個變量的數(shù)據(jù)也完全相同,由此可得,模擬量輸入的值通過 MATLAB的Simulink中的OPC準確無誤地傳送到了模擬量輸出端口。
圖4 Simulink中OPC配置圖
圖5 Simulink中實時監(jiān)測畫面
(1)文獻[5]提出用 MATLAB和組態(tài)軟件通過OPC技術(shù)進行數(shù)據(jù)交換,實現(xiàn)了PLC與MATLAB之間的數(shù)據(jù)交換,但是要經(jīng)過兩層OPC協(xié)議,而本文提出的MATLAB和PLC直接用OPC協(xié)議進行數(shù)據(jù)之間的通訊,只經(jīng)過一層OPC協(xié)議,實時性強。
(2)本文驗證了模擬量輸入數(shù)據(jù)通過OPC協(xié)議,經(jīng)過MATLAB的Simulink空間傳送到模擬量輸出端子,有了這個基礎(chǔ),可以在“OPC Read”中添加任何現(xiàn)場的開關(guān)量或模擬量數(shù)據(jù),而在“OPC Write”中添加需要控制的開關(guān)量或模擬量輸出變量,然后在它們之間加入智能控制算法的工具箱以及控制系統(tǒng)的數(shù)學(xué)模型,就可以實現(xiàn)控制系統(tǒng)的精確控制。
(3)工業(yè)控制系統(tǒng)一般都是一直在運行的,平時用Simulink做仿真時都是設(shè)定一個仿真時間值,要想使Simulink能夠一直處于工作狀態(tài),可以將仿真值設(shè)為“inf”,這樣控制系統(tǒng)就可以一直運行,而不用擔(dān)心Simulink仿真時間結(jié)束導(dǎo)致系統(tǒng)癱瘓。
[1] 王樹東,畢作文,王紅波.OPC技術(shù)下PLC與 MATLAB相結(jié)合的實時模糊控制系統(tǒng)[J].電氣自動化,2011,33(5):11-14.
[2] 林寶全,陳沖.基于 MATLAB與PLC的實時控制系統(tǒng)[J].南昌大學(xué)學(xué)報(工科版),2011,33(3):298-302.
[3] 柴兆森.基于工業(yè)以太網(wǎng)和OPC技術(shù)的異構(gòu)系統(tǒng)集成研究[D].蘭州:蘭州理工大學(xué),2009:12-15.
[4] 唐立學(xué),梁偉平,楊維波.基于OPC的 MATLAB與i FIX數(shù)據(jù)通信實現(xiàn)的過程控制[J].電力科學(xué)與工程,2008,24(2):26-28.
[5] 徐聯(lián)貴,梁嵐珍,史穎.基于OPC技術(shù)的MATLAB與組態(tài)王通信模塊設(shè)計[J].工業(yè)控制計算機,2007,20(3):26-27.