左兆輝,孫耀杰,馬曉崢
(河北工業(yè)大學(xué)信息工程學(xué)院,天津 300401)
PLC(programmable logic controller),是可編程邏輯控制器。它是一種數(shù)字運(yùn)算操作的電子系統(tǒng),專(zhuān)為在工業(yè)環(huán)境應(yīng)用而設(shè)計(jì),以能適應(yīng)各種惡劣的運(yùn)行環(huán)境、抗干擾能力強(qiáng)、可靠性高等優(yōu)點(diǎn)得到廣泛的應(yīng)用。
當(dāng)前,隨著無(wú)線通信技術(shù)的不斷提高,利用無(wú)線網(wǎng)絡(luò)實(shí)現(xiàn)抽油機(jī)的遠(yuǎn)程監(jiān)控是抽油機(jī)監(jiān)控系統(tǒng)發(fā)展的重要方向。常見(jiàn)的抽油機(jī)無(wú)線遠(yuǎn)程監(jiān)控系統(tǒng)是以GPRS網(wǎng)絡(luò)為傳輸媒介,上位機(jī)以PC為核心,通過(guò)web方式監(jiān)控和管理抽油機(jī)系統(tǒng)。隨著ZigHee技術(shù)的發(fā)展,基于ZigBee無(wú)線組網(wǎng)技術(shù)的油田監(jiān)控系統(tǒng)也在快速發(fā)展中。上述兩類(lèi)監(jiān)控系統(tǒng)尤其適用于所需監(jiān)控的油井較多的情況,對(duì)于油井?dāng)?shù)量較少的情況,其監(jiān)控成本較高,不利于小區(qū)域油田的監(jiān)控。
文中所設(shè)計(jì)的無(wú)游梁式抽油機(jī)以S7-200 PLC為控制核心。由于PLC不具備鍵盤(pán)、顯示器等人機(jī)交互設(shè)備,不能實(shí)時(shí)地對(duì)控制參數(shù)進(jìn)行修改及顯示系統(tǒng)的運(yùn)行狀態(tài),而西門(mén)子公司的TD系列的文本顯示器價(jià)格昂貴且不適于在惡劣環(huán)境下工作,因此,該設(shè)計(jì)開(kāi)發(fā)了一款以廉價(jià)的單片機(jī)為控制核心的抽油機(jī)監(jiān)控系統(tǒng),監(jiān)控人員僅需一部手機(jī)便可完成抽油機(jī)的遠(yuǎn)程監(jiān)測(cè)與控制。通過(guò)該監(jiān)控系統(tǒng),可以對(duì)抽油機(jī)的運(yùn)行狀況進(jìn)行實(shí)時(shí)監(jiān)控,當(dāng)抽油機(jī)運(yùn)行出現(xiàn)異常時(shí),通過(guò)GSM模塊SIM900A進(jìn)行短信報(bào)警,同時(shí)實(shí)時(shí)接收工作人員的指示,并按照指示完成抽油機(jī)的遠(yuǎn)程控制。同時(shí),工作人員在現(xiàn)場(chǎng)可通過(guò)控制面板上的功能按鈕對(duì)抽油機(jī)的運(yùn)行參數(shù)進(jìn)行顯示與調(diào)整,完成抽油機(jī)的智能控制。
與其他無(wú)線監(jiān)控系統(tǒng)相比,系統(tǒng)具有功能可靠、成本低廉、操作簡(jiǎn)單等優(yōu)點(diǎn),適用于小區(qū)域油田的監(jiān)控。
1.1STC12C5A16S2單片機(jī)
STC12C5A16S2系列單片機(jī)是單時(shí)鐘/機(jī)器周期(1T)的單片機(jī),是高速、低功耗、超強(qiáng)抗干擾的新一代8051單片機(jī)。內(nèi)部集成MAX810專(zhuān)用復(fù)位電路,2路PWM,8路高速10位A/D轉(zhuǎn)換,36個(gè)通用I/O口,2個(gè)與傳統(tǒng)8051兼容的通用16位定時(shí)器T0和T1和一個(gè)獨(dú)立波特率發(fā)生器。具有ISP/IAP功能,無(wú)需專(zhuān)用編程器,可通過(guò)串口直接下載用戶程序。它具有16 K字節(jié)的Flash程序存儲(chǔ)空間,1 280字節(jié)的SRAM,適宜于小型應(yīng)用系統(tǒng)的開(kāi)發(fā)使用。其工業(yè)級(jí)標(biāo)準(zhǔn)的適宜工作溫度為-40~+85 ℃,能夠充分滿足惡劣工作環(huán)境下的要求。它具有雙串口結(jié)構(gòu),能夠同時(shí)滿足對(duì)PLC及SIM900A的串行通信需求,設(shè)計(jì)選用該處理器作為控制核心[1]。
1.2西門(mén)子PPI協(xié)議簡(jiǎn)介
S7-200 PLC具有豐富的網(wǎng)絡(luò)通訊方式,支持多種通信協(xié)議,如點(diǎn)對(duì)點(diǎn)接口協(xié)議(PPI協(xié)議)、多點(diǎn)接口協(xié)議(MPI協(xié)議)、PROFIBUS協(xié)議以及自由端口通信協(xié)議等。
在現(xiàn)場(chǎng)應(yīng)用中,普遍使用自由端口協(xié)議與上位機(jī)通信。此時(shí),需要編程者首先定義自己的自由通信格式,在PLC中編寫(xiě)代碼,利用中斷方式控制通信端口的數(shù)據(jù)收發(fā)。采用這種方式,PLC編程調(diào)試較為繁瑣,占用PLC的軟件中斷和代碼資源,而且當(dāng)PLC的通信口定義為自由通信口時(shí),PLC的編程軟件無(wú)法對(duì)PLC進(jìn)行監(jiān)控,給PLC的程序調(diào)試帶來(lái)不便[2]。
PPI協(xié)議是一個(gè)主站-從站協(xié)議:主站設(shè)備將請(qǐng)求發(fā)送至從站設(shè)備,然后從站設(shè)備進(jìn)行響應(yīng)。從站設(shè)備不發(fā)消息,只是等待主站的要求并對(duì)要求作出響應(yīng)。使用PPI協(xié)議進(jìn)行通信時(shí),PLC可以不用編程,而且可讀寫(xiě)所有數(shù)據(jù)區(qū),快捷方便[3]。
西門(mén)子PLC上的通信接口是RS485D型連接器,PLC輸出RS485信號(hào)。STC12C5A16S2單片機(jī)使用串行通信接口2,通過(guò)RS485芯片MAX485與PLC的通信口相連接,通過(guò)PPI協(xié)議與PLC進(jìn)行通信,通過(guò)讀取與寫(xiě)入特定的存儲(chǔ)單元,完成對(duì)抽油機(jī)的工作狀態(tài)的顯示與調(diào)整控制。單片機(jī)與PLC的連接方式如圖1所示。
圖1 STC12C5A16S2與PLC的連接
1.3GSM模塊SIM900A
SIM900A是SIMCom推出的緊湊型產(chǎn)品,它屬于雙頻GSM/GPRS模塊。SIM900A采用工業(yè)標(biāo)準(zhǔn)接口,工作頻率為GSM/GPRS 850/900/1 800/1 900 MHz,可以低功耗實(shí)現(xiàn)語(yǔ)音、SMS、數(shù)據(jù)和傳真信息的傳輸。SIM900A僅適用于國(guó)內(nèi)市場(chǎng),它具有性能穩(wěn)定、外觀精巧、性價(jià)比高等諸多優(yōu)點(diǎn)[4]。
較之TC35i,SIM900A具有更寬泛的工作溫度范圍,可達(dá)40~+85 ℃,有著更強(qiáng)的適應(yīng)能力,可用于抽油機(jī)工作的惡劣環(huán)境下。其與STC12C5A16S2單片機(jī)的串行通信接口1相連,完成抽油機(jī)的工作異常報(bào)警及遠(yuǎn)程監(jiān)控。連接原理如圖2所示。
圖2 STC12C5A16S2與SIM900A的連接
2.1STC12C5A16S2與PLC的通信程序設(shè)計(jì)
PPI協(xié)議中上位機(jī)與PLC使用主從方式進(jìn)行通信,上位機(jī)作為主設(shè)備,PLC作為從設(shè)備。上位機(jī)按照通信任務(wù),根據(jù)PPI協(xié)議向PLC發(fā)送一定格式的數(shù)據(jù)通信命令。PLC在接收到該命令后,首先判斷該通信命令格式是否正確,如果格式正確則PLC向上位機(jī)發(fā)出應(yīng)答信號(hào),這時(shí)上位機(jī)檢測(cè)到應(yīng)答信號(hào)之后,再向PLC發(fā)送確認(rèn)命令,PLC收到確認(rèn)命令后,開(kāi)始執(zhí)行命令,完成通信任務(wù)。
S7-200 PLC的PPI協(xié)議支持9.6、19.2或187.5 kHz的波特率,其數(shù)據(jù)字節(jié)結(jié)構(gòu)為:1個(gè)起始位,8個(gè)數(shù)據(jù)位,1個(gè)偶校驗(yàn)位,1個(gè)停止位。因此,配置STC12C5A16S2的串口2工作在方式3,使用波特率可變的9位UART,由BRT獨(dú)立波特率發(fā)生器作為其波特率發(fā)生器。具體配置如下:
void Init_Serial2(void)
{
IP2 |= 0x01;//串口2,最高優(yōu)先級(jí)
IP2H |= 0x01;
AUXR &= 0xf7;//波特率不倍速
S2CON = 0xd0;//9位數(shù)據(jù),可變波特率
BRT = 0xFD;//獨(dú)立波特率發(fā)生器重裝值
AUXR &= 0xfb;//獨(dú)立波特率發(fā)生器時(shí)鐘12T
AUXR |= 0x10;//啟動(dòng)獨(dú)立波特率發(fā)生器
IE2 &= 0xFE;//禁止串口2中斷
D_R = 0;//MAX485 in Driver Mode
}
文中將上下沖程值、沖次值、滾筒直徑及故障碼等抽油機(jī)的運(yùn)行狀態(tài)信息存儲(chǔ)到了固定的V存儲(chǔ)區(qū)單元地址之中,通過(guò)對(duì)相應(yīng)的VM存儲(chǔ)單元進(jìn)行讀寫(xiě),完成對(duì)抽油機(jī)的運(yùn)行狀況的監(jiān)視與調(diào)整。如故障信息存儲(chǔ)在VM2200單元地址中,可使用如下通信命令讀出該值:68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 04 00 01 00 01 84 00 44 C0 6E 16。當(dāng)異常發(fā)生時(shí),可通過(guò)單片機(jī)控制PLC的啟停,PLC的停止命令為:68 1D 1D 68 02 00 6C 32 01 00 00 DC DC 00 10 00 00 29 00 00 00 00 00 09 50 5F 50 52 4F 47 52 41 4D 62 16。通過(guò)PPI協(xié)議,可方便地實(shí)現(xiàn)對(duì)抽油機(jī)的監(jiān)控[5]。
2.2STC12C5A16S2與SIM900A的通信程序設(shè)計(jì)
STC12C5A16S2通過(guò)控制SIM900A的PWRKEY引腳,配合檢測(cè)STATUS引腳,可完成SIM900A的上電、下電及重啟控制。通過(guò)串口1控制SIM900A完成短信的收發(fā),完成抽油機(jī)的遠(yuǎn)程監(jiān)控。
SIM900A支持多種通信波特率,這里使用9 600 bit/s的波特率,單片機(jī)串口1初始化如下:
void Init_Serial1(void)
{
PCON &= 0x7f;//波特率不倍速
SCON |= 0x50;//8位數(shù)據(jù),可變波特率
AUXR &= 0xbf;//定時(shí)器1時(shí)鐘為12T
AUXR &= 0xfe;//定時(shí)器1為波特率發(fā)生器
TMOD &= 0x0f;//清除定時(shí)器1模式位
TMOD |= 0x20;//定時(shí)器1為8位自動(dòng)重裝
TL1 = 0xFD;//定時(shí)初值
TH1 = 0xFD;//定時(shí)器重裝值
ET1 = 0;//禁止定時(shí)器1中斷
TR1 = 1;//啟動(dòng)定時(shí)器1
ES = 1;//允許串口1中斷
EA = 1;//開(kāi)總中斷
}
發(fā)送AT指令后,如果SIM900A正確響應(yīng),那么將返回“OK”字符給STC12C5A16S2,STC12C5A16S2將接收的字符存入預(yù)先開(kāi)辟好的接收緩沖區(qū)中。這樣,通過(guò)C標(biāo)準(zhǔn)庫(kù)函數(shù)strstr來(lái)檢測(cè)接收緩沖區(qū)中是否有指定的字符,依此來(lái)判斷SIM900A是否正確接收到AT命令,確保通信的正確進(jìn)行。
通過(guò)檢測(cè)接收緩沖區(qū)中是否有“+CMTI”字符串來(lái)判斷是否接收到短信息。而后根據(jù)接收到的信息內(nèi)容,執(zhí)行相應(yīng)的操作[6]。
圖3 抽油機(jī)監(jiān)控系統(tǒng)工作流程
2.3系統(tǒng)整機(jī)設(shè)計(jì)實(shí)現(xiàn)
系統(tǒng)共配置有4個(gè)按鍵,由單片機(jī)的P2.4~P2.7驅(qū)動(dòng),分別為功能選擇鍵、數(shù)值調(diào)整鍵、數(shù)碼管移位鍵以及確認(rèn)鍵,工作人員通過(guò)這些按鍵完成對(duì)抽油機(jī)工作狀態(tài)的檢測(cè)及調(diào)整。通過(guò)數(shù)碼管來(lái)顯示上下沖程、沖次等信息,并幫助設(shè)定沖程值。為防止非工作人員進(jìn)行非法操作,系統(tǒng)設(shè)定了管理員密碼,在需要讀取或設(shè)定抽油機(jī)運(yùn)行參數(shù)時(shí),需要先輸入管理員密碼,只有驗(yàn)證密碼輸入正確時(shí),才能進(jìn)行讀寫(xiě)操作。系統(tǒng)框圖如圖3所示。
系統(tǒng)完成5個(gè)基本功能:默認(rèn)功能、上下沖程值的設(shè)定、沖次值的讀取、滾筒直徑的讀取以及故障碼的讀取,系統(tǒng)默認(rèn)工作在默認(rèn)功能下,每隔5 s檢測(cè)1次PLC的故障狀態(tài)及SIM900A的短信狀態(tài),如果PLC出現(xiàn)故障,則通過(guò)SIM900A進(jìn)行短信報(bào)警;如果收到新的短消息,則根據(jù)短消息的內(nèi)容完成相應(yīng)的控制操作。如果30 min內(nèi)未出現(xiàn)故障,則短信發(fā)送當(dāng)前的施工圖數(shù)據(jù)到工作人員手機(jī)上,便于工作人員了解抽油機(jī)的工作狀態(tài)信息。各功能下均有相應(yīng)的指示燈指示當(dāng)前處于哪個(gè)功能模式下。并且,考慮到可能出現(xiàn)工作人員操作中途離開(kāi)的情況,程序使用一個(gè)計(jì)時(shí)變量對(duì)處于任意一個(gè)模式下的時(shí)間進(jìn)行計(jì)時(shí),只要5 min內(nèi)沒(méi)有按鍵輸入操作,那么程序自動(dòng)返回到默認(rèn)功能,以防止非工作人員的非法操作,保障抽油機(jī)系統(tǒng)的正常工作。
STC12C5A16S2單片機(jī)與S7-200 PLC通過(guò)PPI協(xié)議進(jìn)行通信,充分發(fā)揮了PLC穩(wěn)定可靠、抗干擾能力強(qiáng)的優(yōu)勢(shì),省卻了PLC通訊程序的編寫(xiě),使PLC可完全投入到對(duì)抽油機(jī)的控制之中。通過(guò)GSM模塊SIM900A,可實(shí)現(xiàn)工作人員對(duì)抽油機(jī)的遠(yuǎn)程監(jiān)控,成本低,使用方便。
參考文獻(xiàn):
[1]南通國(guó)芯微電子有限公司.STC12C5A60S2系列單片機(jī)器件手冊(cè).南通:南通國(guó)芯微電子有限公司,2011.
[2]何德軍,朱冰宇.PPI協(xié)議的通信過(guò)程解析與應(yīng)用.電腦編程技巧與維護(hù),2009(7):87-89.
[3]Siemens Aktiengesellschaft.S7-200可編程序控制器系統(tǒng)手冊(cè).德國(guó):Siemens Aktiengesellschaft,2008.
[4]SIMCom Wireless Solutions Ltd.SIM900A_Hardware Design_V1.03.上海:SIMCom Wireless Solutions Ltd,2012.
[5]諶國(guó)森,馬洪霞.Siemens PLC的PPI通信協(xié)議的解析與應(yīng)用.冶金自動(dòng)化,2009(9):930-933.
[6]SIMCom Wireless Solutions Ltd.SIM900A模塊AT命令手冊(cè)_V1.05.上海:SIMCom Wireless Solutions Ltd,2011.