基于PLC的實(shí)時(shí)測(cè)量技術(shù)在遠(yuǎn)程污水監(jiān)控系統(tǒng)中的應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
本文介紹的分布式遠(yuǎn)程污水監(jiān)控系統(tǒng)采用分布式的構(gòu)建方案,利用基于西門子PLC的實(shí)時(shí)測(cè)量技術(shù)對(duì)各污水排放點(diǎn)的排污流量、管道壓力等參數(shù)進(jìn)行采集、監(jiān)測(cè),以達(dá)到分散連接、集中監(jiān)控的目的。西門子PLC的I/O接口多,兼具模擬量、數(shù)字量和串行通信這幾類接口,擴(kuò)展模塊豐富;能工作于惡劣環(huán)境,故障率低、壽命長(zhǎng),非常適合在工業(yè)環(huán)境下使用。所以系統(tǒng)以西門子S7-200 PLC、傳感器和智能檢測(cè)儀表作為下層基本測(cè)量單元,將各個(gè)污水監(jiān)控點(diǎn)的測(cè)量數(shù)據(jù)經(jīng)過PLC初步處理后,按照自由口通信方式打包傳送給基于ARM9的嵌入式數(shù)據(jù)采集模塊進(jìn)行匯總和存儲(chǔ),然后再通過以太網(wǎng)送給本地機(jī)上層應(yīng)用軟件進(jìn)行顯示。整個(gè)下層測(cè)量單元相當(dāng)于一個(gè)結(jié)構(gòu)靈活可變、功能多樣的智能儀表子系統(tǒng),PLC相當(dāng)于這個(gè)子系統(tǒng)的通信接口。可以根據(jù)不同的測(cè)量需要對(duì)下層測(cè)量單元的硬件結(jié)構(gòu)和測(cè)量功能進(jìn)行適當(dāng)改變,使整個(gè)系統(tǒng)具有很大的靈活性,稍作修改即可用于其他監(jiān)控系統(tǒng)。
1 分布式系統(tǒng)結(jié)構(gòu)
系統(tǒng)的分布式結(jié)構(gòu)示意圖如圖1所示。當(dāng)系統(tǒng)啟動(dòng)或復(fù)位后,各排污點(diǎn)的下層測(cè)量單元開始定時(shí)采樣、上傳數(shù)據(jù);嵌入式模塊接收到PLC傳來數(shù)據(jù)后,存入自身的數(shù)據(jù)庫(kù)中并判斷是否要觸發(fā)報(bào)警設(shè)備,同時(shí)將數(shù)據(jù)定時(shí)傳給上位機(jī)。這些實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)最后均匯總到網(wǎng)絡(luò)服務(wù)器上,從而使整個(gè)系統(tǒng)構(gòu)成了分布式的監(jiān)控結(jié)構(gòu)體系,主管部門只要通過應(yīng)用軟件的人機(jī)交互界面就可在各自辦公位置對(duì)排污點(diǎn)的各項(xiàng)指標(biāo)數(shù)據(jù)有一個(gè)準(zhǔn)確的了解,進(jìn)而達(dá)到對(duì)分布區(qū)域廣泛的各個(gè)排污點(diǎn)運(yùn)行情況進(jìn)行集中監(jiān)控的目的。
嵌入式數(shù)據(jù)采集模塊上的每個(gè)串口可連接多達(dá)253個(gè)不同速率和協(xié)議的設(shè)備,因此為了降低成本,將距離較近的排污點(diǎn)測(cè)量單元通過一個(gè)串口集中管理器后接在同一個(gè)嵌入式數(shù)據(jù)采集模塊上。在PLC程序中設(shè)置好與上位機(jī)通信時(shí)所需的PLC站號(hào)后,嵌入式數(shù)據(jù)采集模塊就可通過輪巡的檢測(cè)方式接收各測(cè)量單元傳來的數(shù)據(jù)。但是實(shí)際中同一嵌入式數(shù)據(jù)采集模塊上所接的下層測(cè)量單元不應(yīng)過多,因?yàn)檫@會(huì)造成輪巡一次的時(shí)間過長(zhǎng),影響報(bào)警的實(shí)時(shí)性。
2 PLC下層測(cè)量單元硬件設(shè)計(jì)
根據(jù)實(shí)際情況只需對(duì)各排污點(diǎn)的管道壓力、污水瞬時(shí)流量、污水總流量、紅外線人體探頭的開關(guān)狀態(tài)和供電的開關(guān)狀態(tài)進(jìn)行監(jiān)測(cè)。其中管道壓力由水壓傳感器測(cè)量,其測(cè)量數(shù)據(jù)為4~20 mA的模擬量;紅外線人體探頭的開關(guān)狀態(tài)和供電的開關(guān)狀態(tài)由PLC測(cè)量,其測(cè)量數(shù)據(jù)為數(shù)字量;污水瞬時(shí)流量和總流量由基于HART協(xié)議的智能電磁流量計(jì)測(cè)量,其測(cè)量數(shù)據(jù)通過串行通信傳送給PLC。由于PLC還要將處理后的數(shù)據(jù)傳送給嵌入式數(shù)據(jù)采集模塊,這需要占用一個(gè)串行通信口,所以系統(tǒng)選用帶有2個(gè)RS-485串行通信口的西門子S7-200 224XP型PLC。根據(jù)西門子224XP PLC的硬件資源,基于PLC的下層基本測(cè)量單元硬件連接圖如圖2所示。
如圖2所示,紅外線人體探頭和供電開關(guān)分別接到PLC的數(shù)字量輸入口I0.0和I0.1上;水壓傳感器接在PLC上的模擬量輸入口0(AIW0)上;PLC的通信口0通過屏蔽雙絞線與嵌入式數(shù)據(jù)采集模塊的RS-485接口相連;電磁流量計(jì)需要經(jīng)過基于HART協(xié)議的調(diào)制解調(diào)器后才能接到PLC的串口上。系統(tǒng)中采用的調(diào)制解調(diào)器一端帶有4~20 mA的模擬傳輸線路(如電話線)接口,一端帶有RS-232接口,因此還需在調(diào)制解調(diào)器串口端再接一個(gè)RS-232轉(zhuǎn)RS-485模塊后才能接到PLC的通信口1上。HART協(xié)議是半雙工協(xié)議,同一時(shí)間內(nèi)調(diào)制解調(diào)器只能處于調(diào)制或解調(diào)的工作狀態(tài),所以需要通過PLC產(chǎn)生高低電平來進(jìn)行控制,故將PLC的Q0.1口接到調(diào)制解調(diào)器的工作狀態(tài)控制端上。當(dāng)PLC輸出高電平時(shí),處于調(diào)制工作狀態(tài);當(dāng)輸出低電平時(shí),處于解調(diào)工作狀態(tài)。
3 PLC下層測(cè)量單元軟件設(shè)計(jì)
根據(jù)PLC在系統(tǒng)中的作用,PLC程序應(yīng)具有定時(shí)采集數(shù)據(jù)并通過自由口通信方式發(fā)送到上位機(jī)、自動(dòng)報(bào)警、自動(dòng)向上位機(jī)發(fā)送保持連接信號(hào)等功能。另外還要能響應(yīng)上位機(jī)的數(shù)據(jù)補(bǔ)調(diào)命令,返回相應(yīng)數(shù)值;響應(yīng)上位機(jī)的參數(shù)修改命令,修正PLC的系統(tǒng)時(shí)間等。
整個(gè)PLC程序采用模塊化設(shè)計(jì),將完成某一功能的代碼段編寫為子程序,設(shè)置入口參數(shù)和出口參數(shù),當(dāng)需要完成這項(xiàng)功能時(shí),只需設(shè)置合適的參數(shù)并在程序中直接調(diào)用即可。這樣可縮短程序的長(zhǎng)度,便于程序的修改和移植。整個(gè)PLC程序是由主程序、子程序和中斷程序3部分組成,每個(gè)功能模塊程序包含若干子程序和中斷程序,下面分別介紹。
3.1 PLC主程序
主程序主要是對(duì)自由口通信參數(shù)進(jìn)行設(shè)置以及對(duì)程序中用到的各計(jì)數(shù)器和標(biāo)志位寄存器進(jìn)行復(fù)位,以免PLC斷電重啟之后產(chǎn)生未知錯(cuò)誤。電磁流量計(jì)采用HART協(xié)議長(zhǎng)幀結(jié)構(gòu)命令,因此要先發(fā)送0#命令獲得生產(chǎn)廠家的代碼、設(shè)備型號(hào)碼和設(shè)備識(shí)別碼等總共38 bit的信息[4],用于填寫其他長(zhǎng)幀命令的地址。PLC每次重啟后,在主程序中調(diào)用一次0#命令子程序,并將流量計(jì)返回的地址存儲(chǔ)在固定的寄存器中。另外,PLC采集的壓力模擬量是一個(gè)緩慢變化的過程量,為了避免測(cè)量誤差,還需對(duì)壓力采集量進(jìn)行濾波;本文采用了平均值濾波法,每隔0.1 s觸發(fā)平均值濾波中斷程序?qū)毫y(cè)量數(shù)據(jù)進(jìn)行處理。主程序流程圖如圖3所示。
3.2 PLC數(shù)據(jù)采樣和報(bào)警部分程序
該部分程序由3個(gè)子程序組成:CheckRealTimeData子程序、Ana_Alarm子程序和Dig_Alarm子程序。其中CheckRealTimeData子程序負(fù)責(zé)定時(shí)對(duì)數(shù)據(jù)進(jìn)行采樣、存儲(chǔ);Ana_Alarm和Dig_Alarm子程序在CheckRealTimeData子程序中調(diào)用,負(fù)責(zé)判斷采集到的數(shù)據(jù)是否超過報(bào)警閾值。如果連續(xù)超過閾值的時(shí)間大于設(shè)定值,則置位報(bào)警標(biāo)志位,使PLC自發(fā)地向嵌入式數(shù)據(jù)采集模塊發(fā)送報(bào)警信息,觸發(fā)報(bào)警設(shè)備;如果采樣值恢復(fù)正常則將報(bào)警計(jì)時(shí)器清零,重新計(jì)時(shí)。Ana_Alarm子程序設(shè)定Adata、Uplevel和Lowlevel 3個(gè)入口參數(shù),分別表示所測(cè)模擬量數(shù)據(jù)、數(shù)據(jù)上限和數(shù)據(jù)下限;Dig_Alarm子程序設(shè)定Ddata、Status 2個(gè)入口參數(shù),分別表示所測(cè)數(shù)字量數(shù)據(jù)和報(bào)警狀態(tài)值。調(diào)用子程序時(shí)設(shè)置好正確的參數(shù)就可完成PLC的報(bào)警功能,模擬量報(bào)警子程序和數(shù)字量報(bào)警子程序的流程圖如圖4所示。
3.3 PLC數(shù)據(jù)存儲(chǔ)部分程序
PLC程序要有一定的數(shù)據(jù)存儲(chǔ)功能,防止因通信錯(cuò)誤而出現(xiàn)數(shù)據(jù)丟失的情況。因?yàn)?24XP PLC的數(shù)據(jù)存儲(chǔ)區(qū)僅為10 240 B,所以僅使PLC在每小時(shí)內(nèi)的15 min、30 min、45 min和60 min時(shí)各保存一次數(shù)據(jù),連續(xù)保存最近3天的數(shù)據(jù)。另外在電源掉電或內(nèi)存丟失后,PLC的系統(tǒng)時(shí)間會(huì)被初始化,這會(huì)使數(shù)據(jù)保存時(shí)間與實(shí)際時(shí)間不符,因此在建立了嵌入式通信采集模塊和PLC的通信聯(lián)系后,需發(fā)送命令對(duì)PLC的系統(tǒng)時(shí)間進(jìn)行設(shè)置。
3.4 PLC通信部分程序
通信部分程序是整個(gè)PLC程序的核心。它包含4個(gè)中斷程序(串行通信口0發(fā)送、接收完成中斷和串行通信口1發(fā)送、接收完成中斷)及6個(gè)子程序:(1)Precheck子程序,負(fù)責(zé)按照HART協(xié)議格式向電磁流量計(jì)發(fā)送0#命令,獲得流量計(jì)地址;(2)PackandSend子程序,負(fù)責(zé)按照通信協(xié)議格式向嵌入式數(shù)據(jù)采集模塊發(fā)送報(bào)警數(shù)據(jù)、巡檢數(shù)據(jù)和補(bǔ)調(diào)數(shù)據(jù)3種不同的數(shù)據(jù)包,它有6個(gè)入口參數(shù),分別為CW、Data1Address~Data5Address,表示返回?cái)?shù)據(jù)的命令字和5個(gè)測(cè)量數(shù)據(jù)的寄存器地址;(3)KeepConnect子程序,負(fù)責(zé)定時(shí)發(fā)送保持連接信號(hào),確保嵌入式模塊和PLC通信正常,它有一個(gè)入口參數(shù)Time,表示定時(shí)時(shí)間;(4)CheckFlow子程序,負(fù)責(zé)按照HART協(xié)議命令格式向電磁流量計(jì)發(fā)送返回測(cè)量數(shù)據(jù)請(qǐng)求;(5)Port1CS子程序,在串行通信口1接收完成中斷程序中調(diào)用,負(fù)責(zé)對(duì)流量計(jì)返回的數(shù)據(jù)進(jìn)行異或檢校,如果檢校錯(cuò)誤,則丟棄數(shù)據(jù)包,如果檢校正確則進(jìn)行解包分析,將返回的流量計(jì)地址或測(cè)量數(shù)據(jù)分別存儲(chǔ)在不同的寄存器中,以便其他子程序也可調(diào)用;(6)Port0CS子程序,在串行通信口0接收完成中斷程序中調(diào)用,負(fù)責(zé)對(duì)串口0接收的數(shù)據(jù)進(jìn)行異或檢校。
因?yàn)镠ART協(xié)議是主/從式協(xié)議,故PLC與流量計(jì)進(jìn)行通信時(shí)需先向流量計(jì)發(fā)送命令,才能獲得相應(yīng)的返回?cái)?shù)據(jù)。系統(tǒng)中PLC向流量計(jì)發(fā)送的命令有兩種:一種是要求流量計(jì)返回地址的0#命令,另一種是要求流量計(jì)返回測(cè)量數(shù)據(jù)的33#命令。0#命令在每次PLC重啟時(shí)發(fā)送一次,33#命令定時(shí)成每隔6 s發(fā)送一次。發(fā)送前要先拉高Q0.1的電平,使調(diào)制解調(diào)器處于調(diào)制工作狀態(tài);發(fā)送完成后,觸發(fā)端口1發(fā)送完成中斷使Q0.1輸出低電平,調(diào)制解調(diào)器工作在解調(diào)狀態(tài),接收來自流量計(jì)的數(shù)據(jù)。當(dāng)接收完成后觸發(fā)端口1接收完成中斷,調(diào)用Port1CS子程序?qū)邮盏降臄?shù)據(jù)包進(jìn)行分析。串口1的通信程序流程圖如圖5所示。
PLC和嵌入式模塊進(jìn)行通信時(shí),PLC相當(dāng)于從站,嵌入式模塊相當(dāng)于主站。除了自發(fā)向嵌入式模塊發(fā)送報(bào)警信息和連接保持信息外,一般都是接收到數(shù)據(jù)返回請(qǐng)求后,再向嵌入式模塊發(fā)送數(shù)據(jù)。PLC接收完嵌入式模塊發(fā)送來的數(shù)據(jù)后,觸發(fā)端口0接收完成中斷對(duì)數(shù)據(jù)包進(jìn)行分析。如果是系統(tǒng)時(shí)間設(shè)置命令,則按照數(shù)據(jù)包里的時(shí)間設(shè)置值修改PLC的系統(tǒng)時(shí)間。如果是補(bǔ)調(diào)命令,則按照查詢時(shí)間讀取歷史數(shù)據(jù)并存儲(chǔ)到補(bǔ)調(diào)數(shù)據(jù)寄存器中,如果是巡檢命令,則將實(shí)時(shí)采樣數(shù)據(jù)存儲(chǔ)到巡檢數(shù)據(jù)寄存器中,然后調(diào)用PackandSend子程序,設(shè)置好寄存器地址即可按照上位機(jī)命令返回相應(yīng)數(shù)據(jù)。PLC發(fā)送完成后觸發(fā)端口0發(fā)送完成中斷,將各標(biāo)志位寄存器復(fù)位,為下一次通信做準(zhǔn)備。串口0的通信程序流程圖如圖6所示。
本文以一種分布式污水遠(yuǎn)程監(jiān)控系統(tǒng)為例,提出了一種以西門子PLC為核心的測(cè)量方法。實(shí)驗(yàn)證明,文中所述方案可以準(zhǔn)確、可靠地測(cè)量惡劣環(huán)境下的現(xiàn)場(chǎng)數(shù)據(jù)。PLC的采用不僅增大了系統(tǒng)的穩(wěn)定性,而且還可以很方便地根據(jù)實(shí)際需要適當(dāng)?shù)卦黾踊蚋淖儽O(jiān)控對(duì)象,對(duì)系統(tǒng)功能進(jìn)行擴(kuò)展。由于PLC程序采用模塊化設(shè)計(jì),所以對(duì)系統(tǒng)進(jìn)行簡(jiǎn)單修改后即可用于其他工業(yè)監(jiān)控應(yīng)用中。文中詳細(xì)給出了下層基本測(cè)量模塊的硬件和軟件設(shè)計(jì),以期為PLC用于測(cè)量、監(jiān)控領(lǐng)域提供一些參考。