王華強(qiáng),龍 灝
(合肥工業(yè)大學(xué)電氣與自動化工程學(xué)院,安徽合肥 230009)
在配料控制系統(tǒng)中,反應(yīng)釜及原料罐的液位是控制系統(tǒng)開泵、開閥的重要依據(jù)之一。液位智能儀表大多數(shù)都是直接安裝在現(xiàn)場,在監(jiān)控室獲得每個測量點(diǎn)的液位十分困難。實(shí)現(xiàn)液位溫度等模擬信號的監(jiān)控主要有以下幾種途徑:
(1)智能儀表4~20 mA標(biāo)準(zhǔn)信號經(jīng)過安全柵,直接送入PLC,該方法需使用相應(yīng)的AI、AO模塊,但該方法硬件復(fù)雜、接線繁瑣且造價昂貴,未充分利用智能儀表的通訊功能。
(2)智能儀表直接和上位機(jī)通訊,利用VC等程序編寫通訊軟件,未使用相應(yīng)的控制器,通用性差,功能單一。
(3)基于CP341的ModBus通訊,西門子公司推薦使用ModBus slave模式,但購買相關(guān)驅(qū)動的價格昂貴[1]。
故在保證通訊穩(wěn)定與功能實(shí)現(xiàn)的前提下,提出了基于CP341的ASCII通訊方式,并利用WinCC實(shí)現(xiàn)了液位的監(jiān)控與歸檔。
反應(yīng)釜配料控制系統(tǒng)共有10種物料與6種溶劑,依據(jù)配方,物料與物料、物料與溶劑按照配方經(jīng)由各自管道下入釜中,經(jīng)攪拌電機(jī)攪拌,經(jīng)過一系列可控的化學(xué)反應(yīng)之后形成所需的合成革材料。限于篇幅,只介紹液位監(jiān)控系統(tǒng)的設(shè)計(jì)。
液位監(jiān)控系統(tǒng)采用S7-300 PLC,CPU314,機(jī)架上有PS模塊、CP343-1以太網(wǎng)通訊模塊、CP341串行通訊處理模塊,及I/O模塊。支持MODBUS-RTU協(xié)議的16個超聲波液位計(jì)通過CP341與PLC-300通訊。S7-300通過CP343-1,經(jīng)由交換機(jī)與5臺上位機(jī)IPC通訊,上位機(jī)的監(jiān)控由WinCC實(shí)現(xiàn)。系統(tǒng)結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
2.1ModBus通信與通訊幀定義
ModBus定義了2種串行傳輸模式:RTU模式和ASCII模式,各互聯(lián)的ModBus設(shè)備只有處于同一通訊模式下才能進(jìn)行相互操作。RTU模式在支持ModBus的智能儀器儀表和PLC等設(shè)備中得到廣泛的應(yīng)用,系統(tǒng)基于CP341的ASCII通訊形式實(shí)現(xiàn)ModBus-RTU通訊[2]。
不同廠商所提供的ModBus協(xié)議數(shù)據(jù)格式略有不同,該項(xiàng)目使用S7-300與特力聲UTG21-PS型超聲波液位計(jì),S7-300作為主站,超聲波液位計(jì)作為從站。通信信息組成:地址碼、功能碼、數(shù)據(jù)段、CRC校驗(yàn)碼[3]。超聲波液位計(jì)保持寄存器如表1所示。
表1 UTG21-PS型超聲波液位計(jì)寄存器
超聲波液位計(jì)中液位測量值所在保持寄存器的地址為0002H,每個測量值占用4個字節(jié),數(shù)據(jù)類型為IEEE754浮點(diǎn)型。通訊數(shù)據(jù)格式采用無奇偶校驗(yàn)幀格式,1位起始位,8位字長,1位停止位[3]。實(shí)際通訊S7-300與超聲波液位計(jì)通訊幀格式定義如表2、表3所示。
表2 讀寄存器幀
表3 讀寄存器返回幀
例如,讀取1號液位計(jì)液位計(jì)信號(共4個字節(jié))。命令代碼為:01H,03H,00H,02H,00H,02H,C9H,15H。根據(jù)ModBus幀格式定義:01H為地址碼,03H為功能碼讀取多個寄存器的值,0002H為保持寄存器起始地址,0002H為保持讀取寄存器數(shù),C915H為CRC碼。儀表回傳:01H,03H,04H,00H,00H,C8H,42H,A5H,01H。按照ModBus幀格式定義:01H為地址碼,03H為功能碼,04H為返回字節(jié)個數(shù),0000C842H即為返回的浮點(diǎn)型液位瞬時數(shù)據(jù)(轉(zhuǎn)換為十進(jìn)制為100),A501H即為CRC碼。
2.2S7-300CRC校驗(yàn)程序設(shè)計(jì)
CRC校驗(yàn)即循環(huán)冗余校驗(yàn),是數(shù)據(jù)通訊領(lǐng)域中最常見的一種差錯校驗(yàn)方法,也是通訊成功與否的關(guān)鍵之一[4]??紤]到校驗(yàn)程序要經(jīng)常調(diào)用,在Step7中建立函數(shù)FC1實(shí)現(xiàn)CRC校驗(yàn)算法。使用語句表編程語言。定義FC1輸入為DB-No(INT)、DBB-Start(INT);DBB-Counts(INT)。輸出變量定義為CRC-H(BYTE),CRC-L(BYTE)。程序算法步驟如下:
(1)設(shè)置CRC寄存器,并給其賦值FFFF(hex)。
(2)將待校驗(yàn)數(shù)據(jù)(起始位、停止位位不參加計(jì)算)的第一個8-bit字節(jié)與16位CRC寄存器的低8位進(jìn)行異或,并把結(jié)果存入CRC寄存器。
(3)CRC寄存器向右移一位,MSB補(bǔ)零,移出并檢查LSB。
(4)如果LSB為0,重復(fù)第三步;若LSB為1,CRC寄存器與A001H相異或。
(5)重復(fù)第三與第四步直到8次移位全部完成。此時該字節(jié)數(shù)據(jù)處理完畢。
(6)重復(fù)第二至第五步直到所有數(shù)據(jù)全部處理完成。
(7)最終CRC寄存器的內(nèi)容即為CRC值。
2.3PLC與超聲波液位計(jì)通訊程序設(shè)計(jì)
PLC與液位計(jì)的通訊實(shí)現(xiàn)采用輪循的方式。在程序中一個智能從站對應(yīng)一個DB發(fā)送數(shù)據(jù)塊和一個DB接收數(shù)據(jù)塊。在Step7中提供系統(tǒng)功能塊:FB7 “P_RCV_RK”用于接收功能塊、FB8 “P_SEND_RK”用于發(fā)送功能塊,可實(shí)現(xiàn)對不同液位計(jì)的輪循。主站程序輪詢流程圖如圖2所示。
圖2 主站程序輪詢流程圖
首先進(jìn)行初始化,初始化階段主要完成CP341模塊的參數(shù)化設(shè)置,復(fù)位接收緩沖區(qū)等工作。在Step7中的HW config 中設(shè)置CP341的屬性,填入需要設(shè)置的CP341的CPU地址,“Protocol”處選擇ASCII形式,并在彈出的“Protocol”窗口內(nèi)設(shè)置CP341的波特率9 600 bit/s、奇偶校驗(yàn)方式(無)、數(shù)據(jù)格式(1位開始位,8位數(shù)據(jù)位,1位停止位)、字符延遲時間設(shè)定為4 ms[4]。接口類型為RS485半雙工。為了實(shí)現(xiàn)S7-300對多個從站的輪循,程序構(gòu)造了一個輪詢計(jì)數(shù)器,通過修改輪詢計(jì)數(shù)器的值來修改主站發(fā)送數(shù)據(jù)幀的站地址。
初始化完成后,按照通訊定義的幀格式,生成1#從站讀數(shù)據(jù),包括從站地址、功能碼、讀取寄存器的首地址、寄存器的個數(shù)、調(diào)用FC1生成的CRC校驗(yàn)碼。啟動發(fā)送功能,調(diào)用FB8 “P_SND_RK”發(fā)送數(shù)據(jù)到從站,F(xiàn)B8將返回狀態(tài)信息,判斷是否發(fā)送完成,如果發(fā)送錯誤,則重新啟動發(fā)送[5]。發(fā)送完成后,置位發(fā)送標(biāo)志位M9.0,構(gòu)造上升沿脈沖使FB7“REQ”始能有效,準(zhǔn)備接收從站返回數(shù)據(jù)。同時啟動超時定時器T9,如果超時定時時間到,還沒有接收到數(shù)據(jù),則放棄等待,開始輪詢下一從站。接收完成后,做如下幾方面處理:
(1)根據(jù)接收數(shù)據(jù)的地址標(biāo)識符判斷是來自哪個從站的數(shù)據(jù),調(diào)用FC1進(jìn)行CRC校驗(yàn),如接收正確完成,復(fù)位發(fā)送成功標(biāo)志位,將接收的數(shù)據(jù)4~7字節(jié)轉(zhuǎn)移到指定的從站數(shù)據(jù)塊中,同時清空數(shù)據(jù)接收緩沖區(qū)。
(2)復(fù)位接收完成標(biāo)志位,同時修改輪循計(jì)數(shù)器的值,準(zhǔn)備輪詢下一個從站,復(fù)位超時定時器,啟動一個100 ms延時定時器,延時時間到后開始輪詢下一從站。確保程序高效正確的運(yùn)行,避免由于通訊故障導(dǎo)致PLC程序死鎖。
程序設(shè)計(jì)需要注意的問題:
(1)ModBus通訊中,數(shù)據(jù)傳輸時先低字節(jié),后高字節(jié),需要對接收過的數(shù)據(jù)高低字節(jié)進(jìn)行交換方可寫入相應(yīng)的接收DB塊中。
(2)通過控制接收發(fā)送標(biāo)志位,可以有效保證程序正確執(zhí)行,使程序結(jié)構(gòu)更加清晰完整。
通過上述操作,即可實(shí)現(xiàn)S7-300對10個液位傳感器的輪循、數(shù)據(jù)查詢、解析功能,保證程序運(yùn)行正常。重要DB塊定義及參數(shù)地址如表4所示。
表4 重要參數(shù)地址
3.1上位機(jī)與WinCC的配置
配備CP343-1模塊的S7-300與多臺上位機(jī)通過交換機(jī)即可構(gòu)成以太網(wǎng)網(wǎng)絡(luò),通訊介質(zhì)為雙絞線。配置以太網(wǎng)需要注意的問題:
(1)分別在HW config中設(shè)置CP343-1的IP地址,在Set PG/PC中設(shè)置上位機(jī)的IP地址。該項(xiàng)目中5臺工控機(jī)的IP地址為192.168.0.1~192.168.0.5,CP343-1的IP地址為192.168.0.11。
(2)在WinCC項(xiàng)目管理器窗口中添加SIMATIC S7 Protocol Suite驅(qū)動程序,在TCP/IP下建立相應(yīng)的連接。該TCP/IP連接的系統(tǒng)參數(shù)中邏輯設(shè)備名稱必須與本機(jī)的網(wǎng)絡(luò)適配器名一致。并在新建立連接的屬性里填寫相應(yīng)的IP地址、機(jī)架號、槽號[6]。
(3)在新建連接中建立相應(yīng)的外部變量,16個液位外部變量起始地址對應(yīng)為DB1.DD0~DB16.DD0,數(shù)據(jù)類型為浮點(diǎn)數(shù)32位IEEE754。
3.2WinCC畫面組態(tài)
WinCC是Windows Control Center的簡稱,集成了SCADA、組態(tài)、腳本語言和OPC等先進(jìn)技術(shù),為用戶提供了Windows操作系統(tǒng)下使用各種通用軟件的功能[7]。該項(xiàng)目使用WinCC版本為6.2。
打開圖形編輯器,添加相應(yīng)的文本、I/O域,修改I/O域?qū)傩?,將I/O域連接相應(yīng)的外部變量。在選項(xiàng)板中調(diào)用相應(yīng)的智能對象棒圖。修改棒圖的屬性:對象的工程驅(qū)動值同樣連接對應(yīng)的外部變量。在棒圖的顏色屬性中使用動態(tài)對話框。事件名稱為變量,表達(dá)式為對應(yīng)的外部變量,數(shù)據(jù)類型為模擬量,表達(dá)式數(shù)值范圍為0~0.2 m、4.8~5.0 m時棒圖顏色填充為紅色,其他范圍為綠色,即可實(shí)現(xiàn)當(dāng)液位過高或過低時警示。液位監(jiān)控主畫面如圖3所示。
圖3 液位監(jiān)控畫面
工業(yè)現(xiàn)場的安全至關(guān)重要,當(dāng)危險情況發(fā)生時,需利用各種方式第一時間通知監(jiān)控室人員,在WinCC中可直接調(diào)用Windows的API函數(shù),在棒圖的屬性中添加C動作,即可實(shí)現(xiàn)液位過高和過低時語音報警[8]。代碼如下:
long_main(char*lpszPictureName,char*
lpszObjectName,char*lpszPropertyName)
{#progma code(“Winmm.dll”)
void WINAPI PlaySoundA(char*pszSound,char*hmode,DWORD dwflay);
#progma code()
if((“l(fā)evel1”>4.8)&& (“l(fā)evel1”<0.2))
PlaySoundA(“D:WinCCmediaSound.wav”,
Null,8);
return 1020;
}
WinCC使用變量記錄來組態(tài)過程值的歸檔,首先組態(tài)外部變量過程值歸檔,定義采集和歸檔周期。然后在圖形編輯器中調(diào)用WinCC Online Table Control控件,即可在運(yùn)行系統(tǒng)顯示過程數(shù)據(jù)。液位歸檔如圖4所示。
圖4 液位歸檔畫面
論述了配料系統(tǒng)液位監(jiān)控系統(tǒng)設(shè)計(jì),基于ModBus與以太網(wǎng)通訊網(wǎng)絡(luò),并在上位機(jī)上使用WinCC監(jiān)控顯示。實(shí)現(xiàn)了液位信號的快速采集、處理、監(jiān)控、報警,保證了系統(tǒng)安全穩(wěn)定運(yùn)行。同時基于CP341的ASCII碼通訊程序設(shè)計(jì)也省去購買硬件狗及相應(yīng)驅(qū)動的費(fèi)用。系統(tǒng)具有實(shí)時性好、穩(wěn)定性高、經(jīng)濟(jì)等特點(diǎn),在工廠實(shí)際生產(chǎn)中運(yùn)行良好穩(wěn)定,值得在同類型的自動化企業(yè)中推廣。
參考文獻(xiàn):
[1]王海波.基于CP341的Modbus RTU通訊的設(shè)計(jì)與實(shí)現(xiàn).工礦自動化,2009(8):90-92.
[2]郎學(xué)政,許同樂,李中華.基于Modbus協(xié)議的PLC在自動供水監(jiān)控系統(tǒng)中的應(yīng)用.儀表技術(shù)與傳感器,2012(2):62-65.
[3]曹振國,許琳.智能化儀器儀表原理及應(yīng)用.北京:中國水利水電出版社,2011:268-274.
[4]王延年,陳紅,高霞.基于CP341模塊的MODBUS RTU從站協(xié)議免驅(qū)動通信.西安工程大學(xué)學(xué)報,2010,24(6):786-790.
[5]廖常初.S7-300/400 PLC 應(yīng)用技術(shù).北京:化學(xué)工業(yè)出版社,2008:210-217.
[6]劉華波,王雪,何文雪,等.組態(tài)王軟件WinCC及其應(yīng)用.北京:機(jī)械工業(yè)出版社,2009:72-78.
[7]西門子有限公司自動化與驅(qū)動集團(tuán).深入淺出西門子WinCC.北京:北京航天航空大學(xué)出版社,2004:1-5.
[8]楊路明,雷亞軍.組態(tài)軟件WinCC在自動監(jiān)控系統(tǒng)中的應(yīng)用.計(jì)算技術(shù)與自動化,2003,22(4):21-24.