王 佳 吉 華 岳 顯 樊 剛 夏 夫
(四川大學化學工程學院,成都 610065)
以PLC為核心的工控系統,一般皆由現場儀器儀表、PLC和PC機構成,三者之間需組成網絡實現相互間的信息交互,而且經常會遇到不同廠商生產的儀器儀表或PLC之間需要完成通信[1]。Modbus協議即為應此需求而開發出的主-從式通信協議,在無需進行通信編程的前提下,實現PC(主設備)對PLC(從設備)內部存儲區域的直接讀、寫操作。通過Modbus協議,PLC與PLC、PLC與其他設備之間,即可方便地實現數據通信。
現場儀器儀表多以兩種方式加入Modbus通信網絡:以PC為主設備,現場儀器儀表為從設備;以PLC為主設備,現場儀器儀表為從設備[2~5]。這兩種通信方式在硬件的要求、現場通信網絡的布線和通信程序的編寫方面都有明顯的區別,筆者通過在醇胺法高壓脫硫自控系統項目中,對4個SR93溫控儀表的通信方式的改變,分述PC和PLC分別作為儀器儀表Modbus通信主設備的優、缺點。
某醇胺法高壓脫硫自控系統采用兩極監控方式:上位機以標準工業控制計算機ARK5260作為主要人機界面,完成對下位機的監控及管理等功能;下位機以S7-300 PLC為控制核心,構成基礎測控層,完成現場的數據采集和過程控制。上位機和下位機構成可視化的人機交互控制系統,實現快速、可靠、精確和安全的控制。整個系統的現場儀器儀表包括調節閥、水泵、壓力傳感器、射頻導納儀及SR93溫控儀表等。
SR93溫控儀表設計有RS485通信接口,支持日本島電公司自定義的ASCII碼協議。為了節省費用,通過1個RS232/485轉換接口,以PC為主設備,4個SR93溫控儀表作為從設備,組成Modbus通信網絡,系統結構如圖1所示。

圖1 PC作為主設備的系統網絡結構
調試運行發現,上位機軟件經常需要等待10s左右才能讀出4個SR93溫控儀表檢測到的數據,并且檢測到的溫度有與SR93溫控儀表的示值不符的現象。因此PC與現場儀器儀表的通信相對于PLC作為主機設計通信雖然具有價格優勢,但也有不可避免的缺點:
a. 為PC購買的RS232/485轉換接口硬件質量參差不齊,即使采用有源轉換接口,其發送、接收能力和抗干擾能力也無法與PLC的通信接口相比;
b. 在工業現場,PC一般離操作車間較PLC遠,在與現場儀器儀表的通信上,就對通信速率和系統的穩定性提出了更高要求;
c. 現場儀器儀表的通信能力也不能與PLC相關設備相比,在一定程度上,對于通信硬件也提出了更高要求。
為了提高通信質量,改為以PLC作為與4個SR93溫控儀表通信的主設備,系統結構如圖2所示。相較于PC,雖然PLC有支持Modbus協議的通信接口,但一般都需要用來與PC通信,為了與現場儀器儀表組成Modbus通信網絡,就需要購買包含有多個支持Modbus通信接口的PLC或加入專門的通信模塊。S7-300 PLC支持現場總線技術,改變通信方式后,為了將4個SR93溫控儀表的參數讀入S7-300 PLC,需要加入點到點通信模塊CP341,通過集成在CP341中的ASCII通信協議[6],實現與4個SR93溫控儀表的通信。

圖2 PLC作為主設備的系統網絡結構
以PLC作為通信網絡的主設備,不但提高了通信質量,而且上位機軟件只需實現PC和PLC的通信協議,避免了多協議并存的現象。更重要的是,PLC只需要調用其內部通信命令就可以便捷地實現與現場儀器儀表的通信。
以PLC作為4個SR93溫控儀表Modbus通信的主設備,不但要改變通信硬件和現場通信網絡的布線,還需編寫PLC和SR93溫控儀表的通信程序,以及PC和PLC的通信程序,才能夠將4個SR93溫控儀表加入控制系統的通信網絡。
與4個SR93溫控儀表通信,PLC程序的設計是一個重要環節。根據控制要求,PLC程序包括讀取數據程序和寫數據程序。在PLC與多個現場儀器儀表的通信過程中,讀取現場儀器儀表數據的過程是連續的,而往現場儀器儀表中寫數據僅在需要時才進行。因此,寫數據程序采用一個脈沖調用,同時在執行寫數據程序時一定要屏蔽讀取數據程序。這就給相關程序編寫帶來了一定難度。由于PLC采用循環執行用戶程序的方式,在循環程序處理過程中可以被某些時間中斷,如果有中斷事件出現,當前正在執行的塊被暫停執行,并且自動調用分配給該事件的組織塊,該組織塊被執行完后,被暫停執行的塊從被中斷之處繼續執行[7]。為此,PLC程序在中斷事件內執行寫數據命令,并采取輪詢方式讀取儀器儀表的數據。
2.1.1讀取數據程序
在S7-300 PLC系統,調用 CP341的功能塊FB8和FB7,就能夠實現數據的發送和接收[8]。連續讀取4個SR93溫控儀表數據的程序需要設計符合SR93溫控儀表通信格式的讀取數據DB塊,調用FB8發送讀取數據DB塊實現讀取數據命令的發送。每個SR93溫控儀表的讀取數據DB塊僅有儀表地址和BCC校驗碼不同,因此所有的儀表采用一個相同的讀取數據DB塊,以讀取儀表地址為1的SR93溫控儀表的實際值為例,其數據的DB塊結構見表1。

表1 DB塊結構
為了實現連續讀取4個SR93溫控儀表的數據,設計輪詢程序不斷修改讀取數據DB塊中的儀表地址和BCC校驗碼,輪詢方法為:構造一個計數器C1,系統程序每掃描一次執行一次(C1+1)%4,儀表地址就等于余數加1,把計算出來的儀表地址送入讀取數據DB塊中,就實現了對4個SR93溫控儀表的連續讀取的任務。
執行完FB8后,調用FB7接收SR93溫控儀表的應答命令,根據儀表地址為4個SR93溫控儀表分別分配DB1、DB2、DB3和DB4存儲應答命令。PLC和SR93溫控儀表通信過程中,數據以ASCII碼傳輸,為方便上位機的顯示和輸入,需要對數據進行轉換,如實際數據為45時,數據傳輸格式如圖3所示。

圖3 數據傳輸格式
讀取數據的最高一位的處理方法為:將讀取到的ASCII碼數據減去30,得到的結果與9比較,如果結果大于9則說明為A~F中的數值,再將結果減去1,然后左移12位,與F000進行按位與運算,得到高位的數據。其他位的數據處理與此類似,只是左移位數和按位與運算不同,將所得到的4個數值相加后得到最終讀取的數值。將分解出來的數據存儲在分配好的數據緩沖區后,上位機程序便可以讀取到這些數據。讀取數據程序流程如圖4所示。

圖4 數據讀取流程
2.1.2寫數據程序
在循環中斷組織塊OB35中編寫寫數據程序,就可以在寫數據程序運行時屏蔽讀取數據程序。寫數據程序也通過FB8和FB7實現,根據日本島電公司的通信協議,寫入數據前需要把SR93溫控儀表的通信模式改為COM模式,寫數據成功后再恢復通信模式為LOC模式。因此,一次脈沖調用寫數據程序,就要按順序發送3條寫數據命令。寫數據程序需要設計符合SR93溫控儀表通信格式的COM DB塊、寫數據DB塊和LOC DB塊,每個SR93溫控儀表的COM DB塊和LOC DB塊僅是儀表地址和BCC校驗碼不同,而寫數據DB塊僅是儀表地址、寫入的數據和BCC校驗碼不同,因此所有儀表采用相同的COM DB塊、寫數據DB塊和LOC DB塊,通過脈沖調用修改相應的儀表地址、寫入的數據和BCC校驗碼。寫入的數據也需要轉換成ASCII碼,以便SR93溫控儀表識別,轉換方式與讀取數據程序中的數據處理類似。調用FB8按順序發送3個DB塊,就可以實現寫數據任務。寫數據流程如圖5所示。

圖5 寫數據流程
S7-300 PLC支持PPI、MPI、Profibus及Profinet等通信協議。醇胺法高壓脫硫自控系統選用的S7-300 PLC設有DP接口,采用Profinet通信方式與PC通信。上位機軟件采用WinCC進行硬件組態并設計相應的變量后,WinCC的存儲區域就可以映射到PLC的存儲區域。系統運行時,PLC就可以向WinCC的變量提供過程值,實現了二者間的數據交換。
PLC作為SR93溫控儀表Modbus通信的主設備,不需要在WinCC軟件中實現PC和SR93溫控儀表的通信協議,SR93溫控儀表的通信程序集成在PLC中,通信數據也都在PLC中處理、存儲,為上位機軟件節省了存儲空間,提高了其運行效率,PC通過控制PLC實現了對SR93溫控儀表的控制。
在另一例醇胺-砜胺-水溶液平衡溶解度測量裝置控制系統中,直接采用PLC作為與現場儀器儀表通信的主設備,不僅為設計人員節省了大量的編程工作量,而且系統穩定,通信質量高。因此在與現場儀器儀表的通信中,PLC比PC更具優勢,主要體現在:大多PLC和現場儀器儀表都支持Modbus通信協議,避免了多協議并存的狀況;PLC都集成有Modbus通信命令,可以便捷地實現與現場儀器儀表的通信,省去了通信編程,為設計人員節省了大量的編程工作量;PLC的通信接口的穩定性和通信能力優于PC,更適合作為Modbus通信的主機。
PLC強大的通信功能,使其穩定性高,抗干擾能力強,特別是編程簡單,不需要進行通信編程,而且不需要RS232/485轉換器,降低了系統對硬件、軟件方面的要求。對比分析的結論是:在以PLC為控制核心的工業控制系統中,與現場儀器儀表的Modbus通信上具有更多優勢。
在醇胺法高壓脫硫自控系統中采用PLC取代PC作為與現場儀器儀表通信的主設備,就近與現場儀器儀表連接,實現了基于Modbus協議的主-從通信,并通過PLC的高速實時網絡實現對現場儀器儀表的遠程監控,很好地克服了PC直接與現場儀器儀表通信的缺點,顯著增強了系統的穩定性,同時通信速率和成功率明顯提高。