王文輝
(中國南方電網調峰調頻發電公司檢修試驗中心,廣東 廣州 511400)
基于OPC的Labview仿真軟件與PLC通訊實現
王文輝
(中國南方電網調峰調頻發電公司檢修試驗中心,廣東 廣州 511400)
介紹了基于Labview的抽水蓄能機組運行信號仿真軟件特點,并描述了仿真軟件通過NI OPC Sever與西門子S7-400PLC通信實現的過程。
Labview;OPC Sever;PLC;OPC Client
抽水蓄能機組是同時具有抽水與發電功能的機組,是電網穩定調節的重要手段,相比一般發電機組運行工況更復雜。為模擬抽水蓄能機組現實運行情況,采用Labview軟件編寫了抽水蓄能機組運行仿真軟件,模擬機組正常運行過程中所涉及設備的運行信號。仿真軟件與運行機組控制程序的PLC通訊就能模擬抽水蓄能機組在正常運行過程中各工況流程。因抽水蓄能機組工況復雜,運行過程中涉及設備較多,對運行信號進行模擬的仿真軟件中變量數量十分龐大,仿真軟件與PLC通訊需交換大量數據。仿真軟件與PLC不能直接通訊,需選擇合適的方法實現Labview仿真軟件與PLC的實時通訊。
OPC(OLE for Pmcess Contml)是基于Windows NT技術的OLE,COM/DOOM接口的擴展,其本質是OPC Client用一種開放的、標準化的通訊方式與OPC Server進行通訊[1]。OPC規范定義的標準接口,系統能夠以OPC Server(服務器)/OPC Client(客戶端)標準方式從服務器獲取數據并傳遞給客戶應用程序,利用NI OPC server可實現Labview仿真軟件與S7-400PLC實時通訊[2]。
仿真軟件安裝于PC機上,與PLC連接方式如圖1所示,通過Ethernet經交換機與PLC連接。PLC通過網線與交換機相連,PC可以通過網線,亦可通過無線方式與交換機連接。在以上硬件條件下,因PLC與Labview通訊有不同的接口和規范,PLC無法直接通過Ethernet與Labview仿真軟件進行實時通訊,關鍵在于選擇標準化、通用規范的接口實現硬件與軟件的數據交互[3]。通過此標準、規范的通用接口,安裝有Labview仿真軟件的PC才能通過Ethernet從PLC地址塊中讀出數據或向地址塊中寫入數據。NI公司有自己的OPC Server,已得到廣泛使用,穩定性及可靠性都得到證明,因此選用NI OPC服務器作為仿真軟件與PLC的通訊接口交互數據。

圖1 PC與PLC連接圖
PLC程序中的I/O點(輸入/輸出點)必須經輸入/輸出端與外部硬點連接交換數據。本項目中Labview仿真軟件與PLC通訊過程中沒有硬點連接,因此無法直接實現仿真軟件中模擬信號與PLC中I/O點的通訊。因模擬程序可以通過PLC中的DB塊(數據塊)向PLC讀/寫數據,因此在PLC程序中建立新的DB塊(數據塊),使程序中I/O點與數據塊中的點映射。如建立數據塊DB3000作為輸入數據塊,使數據塊中點DB3000.DBX0.0對應I0.0,使數據塊中點DB3000.DBX0.1對應I0.1,如此可將所有I點(輸入點)與數據塊DB3000中的點對應,同樣也可以建立輸出數據塊與O點(輸出點)對應。Labview仿真軟件通過與數據塊中點的通訊實現與I/O點通訊。
先創建一個新的OPC文件,輸入通道名(channel name),再選擇合適的設備驅動程序,本方案選擇Siemens TCP/IP Ethernet(如圖2)。選擇驅動程序后,根據驅動的不同,將彈出不同的參數配置對話框,根據設備情況配置不同參數。

圖2 設備驅動程序選擇
通過OPC控制外部設備,需要計算機寫入到外部設備寄存器,這要求比較高的實時性,有3種寫入方式供選擇。①Write all values for all tags方式,所有的OPC客戶端,都會將需要寫入的數據保存在OPC的內部隊列里;OPC以最快的速度不斷寫入外部設備,直至隊列為空;該模式寫入的數據有嚴格的次序,即使寫入的數據相同,也必須按照內部隊列的次序逐個寫入。②Write only latest values for non_boolean方式,通常情況下,客戶端某段時間內寫入的數據是相同的,由于絕大多數外部設備的寄存器具有保持功能,因此沒有必要連續寫入相同的數據;使用這種模式,不會寫入相同的數據,避免浪費通信的帶寬;該模式除了布爾類型外,其他的類型數據只有更新后才寫入。因為一般布爾控件要求瞬間效應,所以需要立即寫入更新。③Write only latest values for all tags方式,與“Write only latest values for non_boolean”模式基本相同,區別在于對布爾值的處理;如果對布爾值的實時性要求不高,可以選擇在所有值發生變化時才寫入外部設備[4]。
抽水蓄能機組控制程序中參與控制的信號多數是數字信號,對信號實時性要求較高。在機組正常運行過程中參與控制的模擬量一般都會在一定范圍內變化,但不是每次變化都產生控制信號。只有當數值變化超過設定值時才能發出控制信號。因此在仿真軟件中對模擬量仿真可以采用在特定階段給定數值的方法,簡化仿真過程但不會影響控制要求。此時選擇Write only latest values for non_boolean模式,可以避免不斷向PLC寫入模擬量數據,浪費通信的帶寬,數字信號也能實時讀寫不影響控制,提高通訊效率。
Duty cycle(占空比)項設置寫次數與讀次數的比率,在仿真軟件與PLC通訊過程中,仿真軟件實時讀取PLC信號然后執行相應的模擬仿真程序,再向PLC寫入控制命令。讀/寫時間要求一樣,因此將占空比設置為1(圖3),也就是每寫1次讀1次,如果長時間內沒有寫入數據,讀數據將按照固定的周期進行[5]。

圖3 數據寫入方式及占空比選擇
完成通道配置后添加硬件設備,一個通道可以對應多個設備,通道下所擁有設備使用相同的驅動程序。本項目中因為仿真軟件與S7-400PLC通訊,所以在配置設備對話框中,選擇S7-400PLC(圖4),之后設置PLC所在網絡IP地址,IP地址設定后仿真軟件可以在網絡上通過訪問該IP地址與PLC進行通訊。PLC中包含大量的輸入/輸出點、計數器、定時器等,這些都對應著PLC的內部寄存器。通過配置標簽(tag),使OPC的標簽與PLC內部的寄存器一一對應,讀寫OPC項目如同直接讀寫PLC內部的寄存器一樣方便,中間的通信與轉換完全由驅動程序自動完成。

圖4 硬件模塊選擇
OPC是一種使用變量進行通訊的方法。在通訊過程中,通訊變量與通訊變量之間地位是相等的,即一個布爾量與一個幾十或上百字節的數組在讀寫時通訊時間基本相當。壓縮通訊變量個數的方法可提高PC與PLC之間的通訊速率[5]。抽水蓄能機組運行工況復雜,運行過程中涉及設備較多,對運行信號進行模擬的仿真軟件中變量數量十分龐大。為了提高通訊效率、節省通訊時間,把類型相同的數據組合成一個數組,減少變量以加快PC與PLC之間的通訊。本方案中將PLC控制程序中同一數據塊中同一類型的點組合成一個數組,可將數千個變量縮減為幾十個變量,大大提高通訊效率、減少通訊時間。在設備上右鍵選擇New Tag Group,定義數組名稱,然后在數組里選擇New Tag定義數組,設置數組數據類型和地址(圖5)。OPC中變量地址設置與PLC中相應變量地址相同,這樣OPC變量可以通過訪問該地址與PLC變量通訊。

圖5 數組定義
OPC Server通過Ethernet以數組的形式統一讀取PLC變量,仿真軟件通過OPC Server讀/寫變量時需查找出對應變量,因此需要編寫變量讀寫子程序,從數組中讀取相應變量或向相應變量內寫值[6]。對不同類型變量的讀/寫需要不同的讀/寫子程序,圖6和圖7是對數字量讀寫子程序,通過索引數組查找變量在數組中位置,然后讀取或寫入變量值。在Labview仿真軟件中調用該讀/寫程序就可以完成對OPC Server中相應變量的讀寫。OPC Server再與PLC通訊讀出或寫入變量便完成了仿真軟件到PLC的變量傳遞,從而實現Labview仿真軟件與PLC的通訊。

圖6 讀取BOOL型變量子程序

圖7 寫BOOL型變量子程序
隨著OPC的發展,越來越多的軟硬件通過OPC通訊。基于OPC的Labview軟件與PLC的通訊方法效率高、速度快,適用于存在大量變量的數據通訊。該方案已成功運用于基于Labview的抽水蓄能機組控制程序測試平臺項目,應用此通訊方法,系統運行穩定、可靠,效果良好。
[1]張俊彪,王鴻輝,何長安.基于OPCServer的PLC與S7-300/400的通信,[J].水電站機電技術,2007,30(1):4-5.
[2]陳 欣,王浩宇,郎 朗.基于OPC技術的上位機與西門子PLC 的通信,[J].自動化與儀器儀表,2008(1):70-73.
[3]石靈丹,華 斌,吳 明.基于OPC技術的LabView與西門子PLC的實時通訊[J].船電技術,2011,31(1):9-12.
[4]曾珞亞.基于OPC技術的PLC與LabView通信實現[J].微機計算機信息,2009,25(6):52-54.
[5]李紅梁.基于OPC的PC與PLC實時通訊的LabView實現[J].計算機應用研究,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-),男,工程師,從事抽水蓄能電站自動化技術研究工作。