摘 要:本設(shè)計(jì)包括智能工業(yè)控制器下位機(jī)和應(yīng)用組態(tài)王6.51軟件編制的上位機(jī)監(jiān)控程序,兩者通過(guò)目前流行的Modbus協(xié)議通訊。前者應(yīng)用智能專(zhuān)家PID控制算法,完成對(duì)溫度,壓力,液位等物理量的控制,后者用于對(duì)下位機(jī)參數(shù)讀寫(xiě),顯示,報(bào)警,報(bào)表打印等,從而實(shí)現(xiàn)了一套完整可靠的工業(yè)監(jiān)控系統(tǒng)。經(jīng)廠家使用效果比較理想,有廣闊的應(yīng)用前景。
關(guān)鍵詞:智能工業(yè)控制器;組態(tài)王6.51;Modbus協(xié)議;智能專(zhuān)家PID;工業(yè)監(jiān)控系統(tǒng)
引言
隨著現(xiàn)代工業(yè)的發(fā)展,對(duì)工業(yè)設(shè)備的控制逐步從單一獨(dú)立系統(tǒng)向集散控制監(jiān)控系統(tǒng)發(fā)展,因此,筆者設(shè)計(jì)了基于Modbus協(xié)議的智能工業(yè)控制器監(jiān)控系統(tǒng),利用智能專(zhuān)家PID控制算法,可對(duì)工業(yè)現(xiàn)場(chǎng)的溫度,壓力,液位,濕度等參數(shù)進(jìn)行精確控制,并且可以利用上位組態(tài)軟件實(shí)現(xiàn)現(xiàn)場(chǎng)參數(shù)的讀寫(xiě),顯示,越限報(bào)警,打印報(bào)表等,實(shí)現(xiàn)了一個(gè)完整的工業(yè)監(jiān)控系統(tǒng)。
1 智能工業(yè)控制器的系統(tǒng)組成及工作原理
1.1 硬件系統(tǒng)
該智能工業(yè)控制器系統(tǒng)框圖如圖1所示,它采用了AT89C55WD單片機(jī)為CPU[1],以四位半的雙積分A/D轉(zhuǎn)換器ICL7135串行方式進(jìn)行數(shù)據(jù)采集,ICL7135的Busy信號(hào)上升沿觸發(fā)定時(shí)器T0開(kāi)始計(jì)脈沖數(shù),轉(zhuǎn)換完畢時(shí)Busy信號(hào)下降沿觸發(fā)INT0中斷讀取定時(shí)器T0的計(jì)數(shù)值,經(jīng)過(guò)簡(jiǎn)單的換算就可以得出A/D轉(zhuǎn)換值。模擬開(kāi)關(guān)4051控制8路通道的通斷狀態(tài),由CPU來(lái)配置信號(hào)處理電路和多路選擇開(kāi)關(guān)的選通情況。12級(jí)串行分頻器CD4040的基準(zhǔn)時(shí)鐘信號(hào)采用AT89C55WD單片機(jī)的ALE信號(hào),由于程序中沒(méi)有使用MOVX指令,所以ALE輸出頻率固定為fosc/6,經(jīng)過(guò)2級(jí)分頻(fosc/24=250KHz)和11級(jí)分頻(fosc/12288=500Hz)分別輸入到ICL7135的CLK端和單片機(jī)的INT1端,作為ICL7135的時(shí)鐘基準(zhǔn)和單片機(jī)外部2ms的定時(shí)中斷。P0,P2口及P1.3用于掃描4個(gè)按鍵和8個(gè)共陽(yáng)LED顯示。24C02是基于兩線制IIC總線的256字節(jié),非易失性的EEPROM存儲(chǔ)器,用來(lái)存放重要系統(tǒng)參數(shù)。TOP221P是一寬電壓輸入(85~260V),低功耗( 5W)的開(kāi)關(guān)電源管理芯片,所以控制器可以直接使用220V市電。
輸入模塊可選用:(1)熱電偶和熱電阻,如K、Pt100、Cu50等;(2)線性電壓/電流:0~5V、4~20 mA等;(3)其它:可由用戶根據(jù)實(shí)際需要指定的傳感器。
輸出模塊可選用:(1)繼電器觸點(diǎn)開(kāi)關(guān)輸出;(2)可控硅無(wú)觸點(diǎn)開(kāi)關(guān)輸出;(3)SSR電壓輸出;(4)可控硅觸發(fā)輸出;(5)線形電流輸出;(6)電流變送輸出。
報(bào)警模塊為:2路繼電器開(kāi)關(guān)輸出(AL1和AL2)。
[align=center]
圖 1 系統(tǒng)框圖[/align]
1.2 軟件系統(tǒng)
系統(tǒng)程序框圖如圖2所示。該工業(yè)控制器啟動(dòng)時(shí),先進(jìn)入初始化程序,對(duì)系統(tǒng)進(jìn)行自檢。然后從EEPROM中讀取相關(guān)系統(tǒng)設(shè)置參數(shù)到內(nèi)部RAM中,讀取輸入規(guī)格參數(shù)SN,判斷輸入是否為熱電偶或熱電阻,若是,則依據(jù)對(duì)應(yīng)的線形補(bǔ)償表進(jìn)行線形補(bǔ)償;否則輸入為線形電流或電壓,不需要補(bǔ)償。程序再讀取2ms外部定時(shí)中斷服務(wù)程序經(jīng)過(guò)去抖處理的鍵盤(pán)的鍵值,用狀態(tài)分析法判斷處理對(duì)應(yīng)的參數(shù)及LED顯示界面。讀取A/D采樣值,根據(jù)實(shí)際現(xiàn)場(chǎng)調(diào)節(jié)數(shù)字濾波設(shè)置參數(shù)DL,進(jìn)行相關(guān)濾波處理,這樣得出的測(cè)量數(shù)據(jù)PV比較平滑穩(wěn)定。再讀取設(shè)定值SV,與測(cè)量值PV值分別送LED顯示。讀取控制方式參數(shù)CTRL值,若為0則是基本的位式控制:通過(guò)判斷測(cè)量值PV與設(shè)定值SV的關(guān)系來(lái)決定輸出,回差DF用于避免測(cè)量輸入值波動(dòng)而導(dǎo)致位式調(diào)節(jié)頻繁通斷或報(bào)警頻繁產(chǎn)生/解除,當(dāng)SV-PV>DF時(shí),輸出為系統(tǒng)允許最大輸出OPH輸出,否則以系統(tǒng)允許最小輸出OPL輸出;若CTRL為1則為智能專(zhuān)家PID控制。
[align=center]
圖 2 系統(tǒng)程序框圖[/align]
1.3 智能專(zhuān)家PID控制
智能專(zhuān)家PID控制[2]是基于被控對(duì)象的控制規(guī)律的知識(shí),以智能的方式利用這些知識(shí)來(lái)設(shè)計(jì)PID控制器。智能專(zhuān)家PID控制原理如圖3所示。其中誤差額e(k)=SV-PV(k), 誤差變化
; U(k)為第k次控制器的輸出。
[align=center]
圖 3 智能專(zhuān)家PID控制框圖[/align]
依據(jù)e(k)及□e(k)制定的專(zhuān)家規(guī)則如下:(其中A,B為設(shè)定誤差界限,A>B; k[sub]1[/sub]為增益放大系數(shù), k[sub]1[/sub]>1; k[sub]2[/sub]為抑制系數(shù),0
當(dāng)|e(k)|>A時(shí),說(shuō)明誤差很大,要以系統(tǒng)允許的最大(或最小)輸出;當(dāng)e(k)□e(k)>0時(shí),說(shuō)明誤差絕對(duì)值在朝增大的方向變化,此時(shí)依據(jù)|e(k)|值調(diào)整PID控制參數(shù);當(dāng)e(k)□e(k)<0時(shí),在□e(k)□e(k-1)>0或e(k)=0時(shí),說(shuō)明誤差絕對(duì)值在朝減小的方向變化,此時(shí)可保持輸出不變,而在e(k)□e(k)<0時(shí),依據(jù)|e(k)|值調(diào)整PID微分參數(shù);當(dāng)|e(k)|<ε時(shí),說(shuō)明誤差絕對(duì)值很小,此時(shí)調(diào)整PID積分參數(shù),減小穩(wěn)態(tài)誤差。
該規(guī)則集中的各個(gè)常數(shù)均為正實(shí)數(shù),可由仿真及實(shí)驗(yàn)整定后在控制器設(shè)定機(jī)構(gòu)上設(shè)定好這些參數(shù)。另外,這些參數(shù)也可以通過(guò)上位機(jī)進(jìn)行讀寫(xiě)設(shè)定。在進(jìn)行控制時(shí),由控制器依據(jù)專(zhuān)家規(guī)則,完成對(duì)被控對(duì)象的智能控制。經(jīng)驗(yàn)證,此時(shí)控制精度較高,效果較好。
系統(tǒng)程序根據(jù)輸出模塊類(lèi)型,讀取其對(duì)應(yīng)的設(shè)置參數(shù),根據(jù)前面計(jì)算值,轉(zhuǎn)換成對(duì)應(yīng)輸出值,如電流,電壓等值送輸出模塊輸出。然后程序判斷上限、下限、正偏、負(fù)偏差、輸入越量程等報(bào)警參數(shù),若有,則送報(bào)警輸出模塊輸出,否則不作反應(yīng)。系統(tǒng)再根據(jù)Modbus通信協(xié)議,對(duì)接受數(shù)據(jù)進(jìn)行解析并作相應(yīng)處理,包括數(shù)據(jù)CRC校驗(yàn),數(shù)據(jù)打包,讀寫(xiě)相關(guān)參數(shù)等。
2 Modbus現(xiàn)場(chǎng)總線通信協(xié)議
一般基于Modbus現(xiàn)場(chǎng)總線[3]的監(jiān)控系統(tǒng)采用主從查詢-回應(yīng)的交互方式來(lái)實(shí)現(xiàn)。本系統(tǒng)使用RTU(遠(yuǎn)程終端設(shè)備)模式,消息發(fā)送以大于3.5個(gè)字符時(shí)間的停頓開(kāi)始,主機(jī)發(fā)出要訪問(wèn)的從機(jī)地址,每個(gè)從機(jī)設(shè)備都進(jìn)行解碼以判斷是否發(fā)往自己的。功能代碼告之被選中的從機(jī)要執(zhí)行何種功能,數(shù)據(jù)段包含了附加信息:從何寄存器開(kāi)始讀及要讀的寄存器數(shù)量。從機(jī)在回應(yīng)消息中的設(shè)備地址為本機(jī)地址,功能代碼是對(duì)主機(jī)查詢消息中的功能代碼的回應(yīng),數(shù)據(jù)段包括了從機(jī)的寄存器信息。如果有錯(cuò)誤發(fā)生,功能代碼和數(shù)據(jù)段包含了描述此錯(cuò)誤信息的代碼,錯(cuò)誤檢測(cè)域用于主機(jī)確認(rèn)從機(jī)的回應(yīng)消息是否可用。在最后一個(gè)傳輸字符之后,大于3.5個(gè)字符時(shí)間的停頓標(biāo)定了消息幀的結(jié)束。整個(gè)消息幀必須以連續(xù)的數(shù)據(jù)流轉(zhuǎn)輸,如果在幀完成之前有超過(guò)1.5個(gè)字符時(shí)間的停頓時(shí)間,接收設(shè)備將判數(shù)據(jù)超時(shí)不可用,刷新不完整的消息并假定下一字節(jié)是一個(gè)新消息的地址域。同樣地,如果一個(gè)新消息在小于3.5個(gè)字符時(shí)間內(nèi)接著前個(gè)消息開(kāi)始,接收的設(shè)備將認(rèn)為它是前一消息的延續(xù),這都將導(dǎo)致CRC校驗(yàn)錯(cuò)誤。
3 基于Modbus現(xiàn)場(chǎng)總線的監(jiān)控系統(tǒng)
3.1 智能工業(yè)控制器下位機(jī)通信模塊
3.1.1 硬件接口
Modbus協(xié)議的物理層一般都采用RS-485半雙工結(jié)構(gòu)作為通信接口標(biāo)準(zhǔn)。RS-485采用二線差分電平發(fā)送與接收,能有效克服共模干擾、抑制線路噪聲, 傳輸距離可長(zhǎng)達(dá)1.2km。由于要把單片機(jī)的邏輯電平經(jīng)過(guò)光耦6N137隔離后轉(zhuǎn)換成485差分信號(hào)在總線上傳輸,可采用TI公司的SN75LBC184 RS-485收發(fā)器,這是一種具有瞬變電壓抑制的收發(fā)器,可以防止因靜電放電(ESD)對(duì)收發(fā)器造成的損壞,另外SN75LBC184對(duì)傳輸信號(hào)變化沿限制斜率, 可減小電磁干擾,總線上至少可掛64個(gè)這樣的收發(fā)器,通信速率最高可達(dá)250kbps。Modbus通信模塊原理如圖4所示。
[align=center]
圖 4 通信模塊[/align]
3.1.2 軟件編程
Modbus通信數(shù)據(jù)解析處理程序[4]框圖如圖5所示,依據(jù)Modbus通信協(xié)議下位機(jī)程序檢測(cè)主機(jī)訪問(wèn)的從機(jī)地址,若是本機(jī)則進(jìn)行CRC校驗(yàn),若正確則進(jìn)行功能碼解析程序,依據(jù)功能碼轉(zhuǎn)入相應(yīng)子程序,進(jìn)行數(shù)據(jù)打包和相應(yīng)參數(shù)處理,然后發(fā)送Modbus數(shù)據(jù)包。
[align=center]
圖 5 Modbus通信數(shù)據(jù)解析處理程序[/align]
3.2 上位機(jī)監(jiān)控系統(tǒng)
由于組態(tài)王6.51軟件[5]中的Modicon Modbus(RTU)驅(qū)動(dòng)程序是基于Modbus通信協(xié)議編制的,因此應(yīng)用時(shí)只要參照組態(tài)王軟件的手冊(cè)進(jìn)行操作,通過(guò)編制監(jiān)控畫(huà)面,設(shè)置波特率,校驗(yàn)方式,通訊方式,下位機(jī)地址,進(jìn)行通訊用的I/O變量及類(lèi)型,變量寄存器以及采樣頻率等來(lái)實(shí)現(xiàn)與下位機(jī)的通信。圖6是用組態(tài)王6.51軟件編制的連接10臺(tái)工業(yè)控制器的監(jiān)控系統(tǒng)畫(huà)面。設(shè)置波特率為4800,無(wú)校驗(yàn),Modbus (RTU)unpack方式,地址1~10,數(shù)據(jù)采集頻率為400ms。由于實(shí)際監(jiān)控系統(tǒng)上只掛了第一臺(tái)工業(yè)控制器,其余的畫(huà)面上顯示出了“???”號(hào)。該上位機(jī)監(jiān)控系統(tǒng)可實(shí)現(xiàn)對(duì)下位機(jī)數(shù)據(jù)讀寫(xiě)顯示,歷史數(shù)據(jù)保存查詢,報(bào)警,報(bào)表打印等功能,從而實(shí)現(xiàn)了基于Modbus現(xiàn)場(chǎng)總線的智能工業(yè)控制器上位監(jiān)控系統(tǒng)的設(shè)計(jì)。
[align=center]
圖 6 監(jiān)控畫(huà)面[/align]
4 結(jié)束語(yǔ)
基于Modbus協(xié)議的智能工業(yè)控制器監(jiān)控系統(tǒng)至少可以連接64臺(tái)智能工業(yè)控制器下位機(jī),而組態(tài)王上位機(jī)監(jiān)控程序只要根據(jù)實(shí)際的需要作相應(yīng)的調(diào)整即可使用。而且該智能工業(yè)控制器程序經(jīng)過(guò)適當(dāng)?shù)母膭?dòng)還可以用來(lái)作為二十段可編程工藝曲線控制器,合理選擇傳感器輸入模塊即可滿足多種工業(yè)現(xiàn)場(chǎng)參數(shù)的控制要求。本監(jiān)控系統(tǒng)成本低,性能優(yōu),使用方便,經(jīng)過(guò)廠家實(shí)際使用驗(yàn)證效果比較理想,具有廣闊的應(yīng)用前景,預(yù)計(jì)經(jīng)濟(jì)效益100余萬(wàn)元。
參考文獻(xiàn)
1 趙德安.單片機(jī)原理及應(yīng)用.北京:機(jī)械工業(yè)出版社,2004
2 劉金琨.先進(jìn)PID控制及其MATLAB仿真.北京:電子工業(yè)出版社,2003.1
3 MODICON INC.Industrial Automation Systems《Modicon Modbus Protocol Reference Guide》,June 1996
4 朱懿,蔣念平.Modbus協(xié)議在工業(yè)控制系統(tǒng)中的應(yīng)用.微計(jì)算機(jī)信息,2006,10:118-120.
5 北京亞控科技發(fā)展有限公司.《組態(tài)王6.51使用手冊(cè)》,2006.
基于Modbus的智能工業(yè)控制器監(jiān)控系統(tǒng)的設(shè)計(jì)