基于PLC的實(shí)時(shí)測量技術(shù)在遠(yuǎn)程污水監(jiān)控系統(tǒng)中的應(yīng)用
該部分程序由3個(gè)子程序組成:CheckRealTimeData子程序、Ana_Alarm子程序和Dig_Alarm子程序。其中CheckRealTimeData子程序負(fù)責(zé)定時(shí)對數(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ù),分別表示所測模擬量數(shù)據(jù)、數(shù)據(jù)上限和數(shù)據(jù)下限;Dig_Alarm子程序設(shè)定Ddata、Status 2個(gè)入口參數(shù),分別表示所測數(shù)字量數(shù)據(jù)和報(bào)警狀態(tài)值。調(diào)用子程序時(shí)設(shè)置好正確的參數(shù)就可完成PLC的報(bào)警功能,模擬量報(bào)警子程序和數(shù)字量報(bào)警子程序的流程圖如圖4所示。本文引用地址:http://2s4d.com/article/195459.htm
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ā)送命令對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è)測量數(shù)據(jù)的寄存器地址;(3)KeepConnect子程序,負(fù)責(zé)定時(shí)發(fā)送保持連接信號(hào),確保嵌入式模塊和PLC通信正常,它有一個(gè)入口參數(shù)Time,表示定時(shí)時(shí)間;(4)CheckFlow子程序,負(fù)責(zé)按照HART協(xié)議命令格式向電磁流量計(jì)發(fā)送返回測量數(shù)據(jù)請求;(5)Port1CS子程序,在串行通信口1接收完成中斷程序中調(diào)用,負(fù)責(zé)對流量計(jì)返回的數(shù)據(jù)進(jìn)行異或檢校,如果檢校錯(cuò)誤,則丟棄數(shù)據(jù)包,如果檢校正確則進(jìn)行解包分析,將返回的流量計(jì)地址或測量數(shù)據(jù)分別存儲(chǔ)在不同的寄存器中,以便其他子程序也可調(diào)用;(6)Port0CS子程序,在串行通信口0接收完成中斷程序中調(diào)用,負(fù)責(zé)對串口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ì)返回測量數(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ù)返回請求后,再向嵌入式模塊發(fā)送數(shù)據(jù)。PLC接收完嵌入式模塊發(fā)送來的數(shù)據(jù)后,觸發(fā)端口0接收完成中斷對數(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為核心的測量方法。實(shí)驗(yàn)證明,文中所述方案可以準(zhǔn)確、可靠地測量惡劣環(huán)境下的現(xiàn)場數(shù)據(jù)。PLC的采用不僅增大了系統(tǒng)的穩(wěn)定性,而且還可以很方便地根據(jù)實(shí)際需要適當(dāng)?shù)卦黾踊蚋淖儽O(jiān)控對象,對系統(tǒng)功能進(jìn)行擴(kuò)展。由于PLC程序采用模塊化設(shè)計(jì),所以對系統(tǒng)進(jìn)行簡單修改后即可用于其他工業(yè)監(jiān)控應(yīng)用中。文中詳細(xì)給出了下層基本測量模塊的硬件和軟件設(shè)計(jì),以期為PLC用于測量、監(jiān)控領(lǐng)域提供一些參考。
評論