王文輝
(中國(guó)南方電網(wǎng)調(diào)峰調(diào)頻發(fā)電公司檢修試驗(yàn)中心,廣東 廣州 511400)
基于OPC的Labview仿真軟件與PLC通訊實(shí)現(xiàn)
王文輝
(中國(guó)南方電網(wǎng)調(diào)峰調(diào)頻發(fā)電公司檢修試驗(yàn)中心,廣東 廣州 511400)
介紹了基于Labview的抽水蓄能機(jī)組運(yùn)行信號(hào)仿真軟件特點(diǎn),并描述了仿真軟件通過(guò)NI OPC Sever與西門子S7-400PLC通信實(shí)現(xiàn)的過(guò)程。
Labview;OPC Sever;PLC;OPC Client
抽水蓄能機(jī)組是同時(shí)具有抽水與發(fā)電功能的機(jī)組,是電網(wǎng)穩(wěn)定調(diào)節(jié)的重要手段,相比一般發(fā)電機(jī)組運(yùn)行工況更復(fù)雜。為模擬抽水蓄能機(jī)組現(xiàn)實(shí)運(yùn)行情況,采用Labview軟件編寫(xiě)了抽水蓄能機(jī)組運(yùn)行仿真軟件,模擬機(jī)組正常運(yùn)行過(guò)程中所涉及設(shè)備的運(yùn)行信號(hào)。仿真軟件與運(yùn)行機(jī)組控制程序的PLC通訊就能模擬抽水蓄能機(jī)組在正常運(yùn)行過(guò)程中各工況流程。因抽水蓄能機(jī)組工況復(fù)雜,運(yùn)行過(guò)程中涉及設(shè)備較多,對(duì)運(yùn)行信號(hào)進(jìn)行模擬的仿真軟件中變量數(shù)量十分龐大,仿真軟件與PLC通訊需交換大量數(shù)據(jù)。仿真軟件與PLC不能直接通訊,需選擇合適的方法實(shí)現(xiàn)Labview仿真軟件與PLC的實(shí)時(shí)通訊。
OPC(OLE for Pmcess Contml)是基于Windows NT技術(shù)的OLE,COM/DOOM接口的擴(kuò)展,其本質(zhì)是OPC Client用一種開(kāi)放的、標(biāo)準(zhǔn)化的通訊方式與OPC Server進(jìn)行通訊[1]。OPC規(guī)范定義的標(biāo)準(zhǔn)接口,系統(tǒng)能夠以O(shè)PC Server(服務(wù)器)/OPC Client(客戶端)標(biāo)準(zhǔn)方式從服務(wù)器獲取數(shù)據(jù)并傳遞給客戶應(yīng)用程序,利用NI OPC server可實(shí)現(xiàn)Labview仿真軟件與S7-400PLC實(shí)時(shí)通訊[2]。
仿真軟件安裝于PC機(jī)上,與PLC連接方式如圖1所示,通過(guò)Ethernet經(jīng)交換機(jī)與PLC連接。PLC通過(guò)網(wǎng)線與交換機(jī)相連,PC可以通過(guò)網(wǎng)線,亦可通過(guò)無(wú)線方式與交換機(jī)連接。在以上硬件條件下,因PLC與Labview通訊有不同的接口和規(guī)范,PLC無(wú)法直接通過(guò)Ethernet與Labview仿真軟件進(jìn)行實(shí)時(shí)通訊,關(guān)鍵在于選擇標(biāo)準(zhǔn)化、通用規(guī)范的接口實(shí)現(xiàn)硬件與軟件的數(shù)據(jù)交互[3]。通過(guò)此標(biāo)準(zhǔn)、規(guī)范的通用接口,安裝有Labview仿真軟件的PC才能通過(guò)Ethernet從PLC地址塊中讀出數(shù)據(jù)或向地址塊中寫(xiě)入數(shù)據(jù)。NI公司有自己的OPC Server,已得到廣泛使用,穩(wěn)定性及可靠性都得到證明,因此選用NI OPC服務(wù)器作為仿真軟件與PLC的通訊接口交互數(shù)據(jù)。
圖1 PC與PLC連接圖
PLC程序中的I/O點(diǎn)(輸入/輸出點(diǎn))必須經(jīng)輸入/輸出端與外部硬點(diǎn)連接交換數(shù)據(jù)。本項(xiàng)目中Labview仿真軟件與PLC通訊過(guò)程中沒(méi)有硬點(diǎn)連接,因此無(wú)法直接實(shí)現(xiàn)仿真軟件中模擬信號(hào)與PLC中I/O點(diǎn)的通訊。因模擬程序可以通過(guò)PLC中的DB塊(數(shù)據(jù)塊)向PLC讀/寫(xiě)數(shù)據(jù),因此在PLC程序中建立新的DB塊(數(shù)據(jù)塊),使程序中I/O點(diǎn)與數(shù)據(jù)塊中的點(diǎn)映射。如建立數(shù)據(jù)塊DB3000作為輸入數(shù)據(jù)塊,使數(shù)據(jù)塊中點(diǎn)DB3000.DBX0.0對(duì)應(yīng)I0.0,使數(shù)據(jù)塊中點(diǎn)DB3000.DBX0.1對(duì)應(yīng)I0.1,如此可將所有I點(diǎn)(輸入點(diǎn))與數(shù)據(jù)塊DB3000中的點(diǎn)對(duì)應(yīng),同樣也可以建立輸出數(shù)據(jù)塊與O點(diǎn)(輸出點(diǎn))對(duì)應(yīng)。Labview仿真軟件通過(guò)與數(shù)據(jù)塊中點(diǎn)的通訊實(shí)現(xiàn)與I/O點(diǎn)通訊。
先創(chuàng)建一個(gè)新的OPC文件,輸入通道名(channel name),再選擇合適的設(shè)備驅(qū)動(dòng)程序,本方案選擇Siemens TCP/IP Ethernet(如圖2)。選擇驅(qū)動(dòng)程序后,根據(jù)驅(qū)動(dòng)的不同,將彈出不同的參數(shù)配置對(duì)話框,根據(jù)設(shè)備情況配置不同參數(shù)。
圖2 設(shè)備驅(qū)動(dòng)程序選擇
通過(guò)OPC控制外部設(shè)備,需要計(jì)算機(jī)寫(xiě)入到外部設(shè)備寄存器,這要求比較高的實(shí)時(shí)性,有3種寫(xiě)入方式供選擇。①Write all values for all tags方式,所有的OPC客戶端,都會(huì)將需要寫(xiě)入的數(shù)據(jù)保存在OPC的內(nèi)部隊(duì)列里;OPC以最快的速度不斷寫(xiě)入外部設(shè)備,直至隊(duì)列為空;該模式寫(xiě)入的數(shù)據(jù)有嚴(yán)格的次序,即使寫(xiě)入的數(shù)據(jù)相同,也必須按照內(nèi)部隊(duì)列的次序逐個(gè)寫(xiě)入。②Write only latest values for non_boolean方式,通常情況下,客戶端某段時(shí)間內(nèi)寫(xiě)入的數(shù)據(jù)是相同的,由于絕大多數(shù)外部設(shè)備的寄存器具有保持功能,因此沒(méi)有必要連續(xù)寫(xiě)入相同的數(shù)據(jù);使用這種模式,不會(huì)寫(xiě)入相同的數(shù)據(jù),避免浪費(fèi)通信的帶寬;該模式除了布爾類型外,其他的類型數(shù)據(jù)只有更新后才寫(xiě)入。因?yàn)橐话悴紶柨丶笏查g效應(yīng),所以需要立即寫(xiě)入更新。③Write only latest values for all tags方式,與“Write only latest values for non_boolean”模式基本相同,區(qū)別在于對(duì)布爾值的處理;如果對(duì)布爾值的實(shí)時(shí)性要求不高,可以選擇在所有值發(fā)生變化時(shí)才寫(xiě)入外部設(shè)備[4]。
抽水蓄能機(jī)組控制程序中參與控制的信號(hào)多數(shù)是數(shù)字信號(hào),對(duì)信號(hào)實(shí)時(shí)性要求較高。在機(jī)組正常運(yùn)行過(guò)程中參與控制的模擬量一般都會(huì)在一定范圍內(nèi)變化,但不是每次變化都產(chǎn)生控制信號(hào)。只有當(dāng)數(shù)值變化超過(guò)設(shè)定值時(shí)才能發(fā)出控制信號(hào)。因此在仿真軟件中對(duì)模擬量仿真可以采用在特定階段給定數(shù)值的方法,簡(jiǎn)化仿真過(guò)程但不會(huì)影響控制要求。此時(shí)選擇Write only latest values for non_boolean模式,可以避免不斷向PLC寫(xiě)入模擬量數(shù)據(jù),浪費(fèi)通信的帶寬,數(shù)字信號(hào)也能實(shí)時(shí)讀寫(xiě)不影響控制,提高通訊效率。
Duty cycle(占空比)項(xiàng)設(shè)置寫(xiě)次數(shù)與讀次數(shù)的比率,在仿真軟件與PLC通訊過(guò)程中,仿真軟件實(shí)時(shí)讀取PLC信號(hào)然后執(zhí)行相應(yīng)的模擬仿真程序,再向PLC寫(xiě)入控制命令。讀/寫(xiě)時(shí)間要求一樣,因此將占空比設(shè)置為1(圖3),也就是每寫(xiě)1次讀1次,如果長(zhǎng)時(shí)間內(nèi)沒(méi)有寫(xiě)入數(shù)據(jù),讀數(shù)據(jù)將按照固定的周期進(jìn)行[5]。
圖3 數(shù)據(jù)寫(xiě)入方式及占空比選擇
完成通道配置后添加硬件設(shè)備,一個(gè)通道可以對(duì)應(yīng)多個(gè)設(shè)備,通道下所擁有設(shè)備使用相同的驅(qū)動(dòng)程序。本項(xiàng)目中因?yàn)榉抡孳浖cS7-400PLC通訊,所以在配置設(shè)備對(duì)話框中,選擇S7-400PLC(圖4),之后設(shè)置PLC所在網(wǎng)絡(luò)IP地址,IP地址設(shè)定后仿真軟件可以在網(wǎng)絡(luò)上通過(guò)訪問(wèn)該IP地址與PLC進(jìn)行通訊。PLC中包含大量的輸入/輸出點(diǎn)、計(jì)數(shù)器、定時(shí)器等,這些都對(duì)應(yīng)著PLC的內(nèi)部寄存器。通過(guò)配置標(biāo)簽(tag),使OPC的標(biāo)簽與PLC內(nèi)部的寄存器一一對(duì)應(yīng),讀寫(xiě)OPC項(xiàng)目如同直接讀寫(xiě)PLC內(nèi)部的寄存器一樣方便,中間的通信與轉(zhuǎn)換完全由驅(qū)動(dòng)程序自動(dòng)完成。
圖4 硬件模塊選擇
OPC是一種使用變量進(jìn)行通訊的方法。在通訊過(guò)程中,通訊變量與通訊變量之間地位是相等的,即一個(gè)布爾量與一個(gè)幾十或上百字節(jié)的數(shù)組在讀寫(xiě)時(shí)通訊時(shí)間基本相當(dāng)。壓縮通訊變量個(gè)數(shù)的方法可提高PC與PLC之間的通訊速率[5]。抽水蓄能機(jī)組運(yùn)行工況復(fù)雜,運(yùn)行過(guò)程中涉及設(shè)備較多,對(duì)運(yùn)行信號(hào)進(jìn)行模擬的仿真軟件中變量數(shù)量十分龐大。為了提高通訊效率、節(jié)省通訊時(shí)間,把類型相同的數(shù)據(jù)組合成一個(gè)數(shù)組,減少變量以加快PC與PLC之間的通訊。本方案中將PLC控制程序中同一數(shù)據(jù)塊中同一類型的點(diǎn)組合成一個(gè)數(shù)組,可將數(shù)千個(gè)變量縮減為幾十個(gè)變量,大大提高通訊效率、減少通訊時(shí)間。在設(shè)備上右鍵選擇New Tag Group,定義數(shù)組名稱,然后在數(shù)組里選擇New Tag定義數(shù)組,設(shè)置數(shù)組數(shù)據(jù)類型和地址(圖5)。OPC中變量地址設(shè)置與PLC中相應(yīng)變量地址相同,這樣OPC變量可以通過(guò)訪問(wèn)該地址與PLC變量通訊。
圖5 數(shù)組定義
OPC Server通過(guò)Ethernet以數(shù)組的形式統(tǒng)一讀取PLC變量,仿真軟件通過(guò)OPC Server讀/寫(xiě)變量時(shí)需查找出對(duì)應(yīng)變量,因此需要編寫(xiě)變量讀寫(xiě)子程序,從數(shù)組中讀取相應(yīng)變量或向相應(yīng)變量?jī)?nèi)寫(xiě)值[6]。對(duì)不同類型變量的讀/寫(xiě)需要不同的讀/寫(xiě)子程序,圖6和圖7是對(duì)數(shù)字量讀寫(xiě)子程序,通過(guò)索引數(shù)組查找變量在數(shù)組中位置,然后讀取或?qū)懭胱兞恐怠T贚abview仿真軟件中調(diào)用該讀/寫(xiě)程序就可以完成對(duì)OPC Server中相應(yīng)變量的讀寫(xiě)。OPC Server再與PLC通訊讀出或?qū)懭胱兞勘阃瓿闪朔抡孳浖絇LC的變量傳遞,從而實(shí)現(xiàn)Labview仿真軟件與PLC的通訊。
圖6 讀取BOOL型變量子程序
圖7 寫(xiě)B(tài)OOL型變量子程序
隨著OPC的發(fā)展,越來(lái)越多的軟硬件通過(guò)OPC通訊?;贠PC的Labview軟件與PLC的通訊方法效率高、速度快,適用于存在大量變量的數(shù)據(jù)通訊。該方案已成功運(yùn)用于基于Labview的抽水蓄能機(jī)組控制程序測(cè)試平臺(tái)項(xiàng)目,應(yīng)用此通訊方法,系統(tǒng)運(yùn)行穩(wěn)定、可靠,效果良好。
[1]張俊彪,王鴻輝,何長(zhǎng)安.基于OPCServer的PLC與S7-300/400的通信,[J].水電站機(jī)電技術(shù),2007,30(1):4-5.
[2]陳 欣,王浩宇,郎 朗.基于OPC技術(shù)的上位機(jī)與西門子PLC 的通信,[J].自動(dòng)化與儀器儀表,2008(1):70-73.
[3]石靈丹,華 斌,吳 明.基于OPC技術(shù)的LabView與西門子PLC的實(shí)時(shí)通訊[J].船電技術(shù),2011,31(1):9-12.
[4]曾珞亞.基于OPC技術(shù)的PLC與LabView通信實(shí)現(xiàn)[J].微機(jī)計(jì)算機(jī)信息,2009,25(6):52-54.
[5]李紅梁.基于OPC的PC與PLC實(shí)時(shí)通訊的LabView實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,2003(12):115-118.
[6]YANG Zhi,LU Wu-yi,XIONG Hong-yun.The Communi cation Between LabVIEW and PLC Based on OPC[J].Journal of Changsha Aeronautical Vocational and Technical College,2006,36(3):36-40.
TN919
A
1672-5387(2015)S-0063-03
10.13599/j.cnki.11-5130.2015.S.019
2015-10-26
王文輝(1985-),男,工程師,從事抽水蓄能電站自動(dòng)化技術(shù)研究工作。