工業(yè)生產(chǎn)中過程控制是流量測(cè)量與儀表應(yīng)用的一大領(lǐng)域,流量與溫度、壓力和物位一起統(tǒng)稱為過程控制中的四大參數(shù),人們通過這些參數(shù)對(duì)生產(chǎn)過程進(jìn)行監(jiān)視與控制。對(duì)流體流量進(jìn)行正確測(cè)量和調(diào)節(jié)是保證生產(chǎn)過程安全經(jīng)濟(jì)運(yùn)行、提高產(chǎn)品質(zhì)量、降低物質(zhì)消耗、提高經(jīng)濟(jì)效益、實(shí)現(xiàn)科學(xué)管理的基礎(chǔ)。流量的檢測(cè)和控制在化工、能源電力、冶金、石油等領(lǐng)域應(yīng)用廣泛。
系統(tǒng)工作原理
系統(tǒng)的工作原理是流量傳感器采集到流量信息,通過變換器,轉(zhuǎn)化為電信號(hào),AD轉(zhuǎn)換器將模擬電信號(hào)轉(zhuǎn)化為離散信號(hào),傳給單片機(jī)。單片機(jī)軟件系統(tǒng)根據(jù)事先的設(shè)定值對(duì)采集的信息進(jìn)行處理,輸出離散的控制信號(hào)。DA轉(zhuǎn)換器將離散的控制信號(hào)轉(zhuǎn)化為模擬電量。通過模擬電量來控制閥門的動(dòng)作,從而調(diào)節(jié)流量,實(shí)現(xiàn)流量的精確控制。
硬件構(gòu)成
本系統(tǒng)主要由水泵、流量傳感器、電動(dòng)閥門和MCS-51單片機(jī)控制系統(tǒng)以及液體管線和控制線、監(jiān)視線等組成。
系統(tǒng)結(jié)構(gòu)框圖如下所示:
流量是指單位時(shí)間內(nèi)通過管道某一截面的物料數(shù)量。本控制系統(tǒng)的任務(wù)是對(duì)通過某一管道截面的物料數(shù)量即降粘劑流量進(jìn)行控制。本系統(tǒng)采用單片機(jī)控制,通過流量計(jì)采集流量信息,傳給單片機(jī)。單片機(jī)通過預(yù)先設(shè)定值和系統(tǒng)軟件進(jìn)行分析,發(fā)出相應(yīng)的控制信號(hào),驅(qū)動(dòng)調(diào)節(jié)閥動(dòng)作,從而確定降粘劑的配比與耗量,實(shí)現(xiàn)生產(chǎn)過程自動(dòng)化。
系統(tǒng)硬件結(jié)構(gòu)圖如圖所示:
其中,電磁流量計(jì)作為流量傳感器,采集流量信息,經(jīng)放大器放大后送到AD轉(zhuǎn)換器。AD轉(zhuǎn)換器將連續(xù)的模擬量轉(zhuǎn)化為單片機(jī)能接受的離散的數(shù)字量。單片機(jī)收到流量信號(hào)后,在控制系統(tǒng)軟件的作用下,發(fā)出相應(yīng)的執(zhí)行命令給執(zhí)行機(jī)構(gòu)——步進(jìn)電機(jī)。步進(jìn)電機(jī)帶動(dòng)閥門動(dòng)作,對(duì)流體流量進(jìn)行控制。軟件設(shè)計(jì)
軟件設(shè)計(jì)思路
該控制系統(tǒng)的軟件設(shè)計(jì)可以分為三部分:
1.主程序部分:該部分完成存儲(chǔ)器分區(qū)、數(shù)據(jù)定義和系統(tǒng)的初始化等,以及調(diào)用各個(gè)子程序,完成主要的控制功能。
2.流量控制程序:通過PID控制算法,編寫出相應(yīng)的流量控制子程序,實(shí)現(xiàn)對(duì)流量的控制,達(dá)到預(yù)期的控制要求;
3.各子程序:各個(gè)子程序完成具體的實(shí)現(xiàn)方法,主要包括:設(shè)定值輸入、數(shù)碼管顯示、步進(jìn)電機(jī)控制、AD轉(zhuǎn)換中斷、T0定時(shí)器中斷、采樣中斷等。 軟件流程圖如下
主程序設(shè)計(jì)
主程序部分,主要完成存儲(chǔ)器分配、系統(tǒng)初始化和系統(tǒng)整體控制等,并通過調(diào)用各子程序段,實(shí)現(xiàn)軟件的總體設(shè)計(jì)功能。
初始化:系統(tǒng)初始化程序的功能是對(duì)8155和89C51進(jìn)行初始化,使D/A輸出為0,步進(jìn)電機(jī)處于停機(jī)狀態(tài),將RAM中的標(biāo)志位和工作單元置為初始狀態(tài),提示符CPUREADY寫入緩沖器。更新顯示器子程序的功能是將顯示緩沖器的內(nèi)容,分別轉(zhuǎn)化為段數(shù)據(jù),輸出到8155。顯示器0~12的顯示數(shù)據(jù)緩沖器分別為73H~7FH單元。當(dāng)系統(tǒng)處于停機(jī)狀態(tài)時(shí),顯示器0~4顯示參數(shù),顯示器5~7顯示參數(shù)地址,所以73H~77H作為數(shù)據(jù)緩沖器,78H~7AH作為地址緩沖器,在運(yùn)行狀態(tài)時(shí),73H~77H作為瞬時(shí)流量緩沖器,78H~7FH作為累計(jì)流量緩沖器。 初始化程序的流程如圖所示:
流量控制子程序
在流量測(cè)試的基礎(chǔ)上,把流量設(shè)定值和實(shí)際測(cè)試得到的瞬時(shí)流量進(jìn)行比較計(jì)算出誤差,采用數(shù)字PID調(diào)節(jié)算法,計(jì)算輸出到AD0809的變量Uio增量式PID控制算法的計(jì)算公式為
式中:ei為本次實(shí)際測(cè)得的流量和設(shè)定值之差;
P為比例系數(shù);I為積分系數(shù);D為微分系數(shù);輸出控制變量表達(dá)式為:
程序的入口參數(shù):偏差ek、ek-1、ek-2、測(cè)量值y、給定值r。這5個(gè)參數(shù)均為3字節(jié)的浮點(diǎn)數(shù),分別將它們存放在RAM單元中。低字節(jié)存放浮點(diǎn)數(shù)的階數(shù)和符號(hào),其中符號(hào)存放在最高位,階數(shù)以補(bǔ)碼的形式存放在另7位中。尾數(shù)以原碼的形式存放在另2個(gè)字節(jié)中。
中斷服務(wù)子程序
設(shè)定值輸入程序
本程序?qū)?位BCD碼按千、百、十、個(gè)依次存放在89C51片內(nèi)RAM的30H~33H單元中,每個(gè)地址單元的高4位為0,低4位為BCD碼。 程序代碼如下:
RDS:MOV R0,#30H;初始化,存放單元首址
MOV R2,#7FH;P1口高4位置控制字及低4位置輸入方式
MOV R3,#04H;讀入4個(gè)BCD碼 MOV A,R2
LOOP:MOV P1,A;P1口送控制字及低4位置輸入方式
MOV A,P1;讀如BCD碼 ANL A,
#0FH;屏蔽高4位
MOV @R0,A;送入存儲(chǔ)單元
INC R0;指向下個(gè)存儲(chǔ)單元
MOV A,R2;準(zhǔn)備下一片撥盤的控制端置0
RR A;
MOV R2,A;
DJNZ R3,LOOP;未讀完返回
RET;讀完結(jié)束
A/D中斷子程序
A/D中斷子程序流程圖如下所示:
程序代碼如下:
INT0:PUSH ACC ;保護(hù)現(xiàn)場(chǎng)
PUSH DPH
PUSH DPL
PUSH PSW
SETB PSW.3 ;選工作寄存器區(qū)1
MOV DPTR,#0DF01H;讀取8155A口數(shù)據(jù)
MOVX A,@DPTR MOV R2, A
ANL A, #0F0H ;屏蔽低4位 JNZ ND5 ;
MOV A,R2
JNB 02H, D51 ;判斷是否采樣零信號(hào)
MOV C, ACC.0 ;
MOV 30H, C MOV C, ACC.7
MOV 37H,C AJMP D14
D51: MOV C,ACC.0 ;萬位和標(biāo)志位→荷重信號(hào)緩沖器
MOV 48H,C
MOV C,ACC.7
MOV 4FH,C
AJMP D14
ND5: MOV A,R2 ;判斷是否讀出千位
JNB ACC.7,ND4
JNB 02H,D41 ;判斷是否采樣零信號(hào)
ANL A, #0FH ;千位→零信號(hào)緩沖器
SWAP A
MOV 25H,A
AJMP D14
D41: ANL A,#0FH
SWAP A
MOV 28H, A
AJMP D14
ND4: JNB ACC.6, ND3 ;判斷是否讀出百位
JNB 02H,D31 ;判斷是否采樣零信號(hào)
MOV R1, #25H ;百位→零信號(hào)緩沖器
ANL A,#0FH
XCHP A,@R1
AJMP D14
D31: MOV R1, #28H
ANL A,#0FH
XCHD A,@R1
AJMP D14
ND3: JNB ACC.5, ND2 ;判斷是否讀出十位
JNB 02H, D21 ;判斷是否采樣信號(hào)
ANL A, #0FH ;十位→零信號(hào)緩沖器
SWAP A
MOV 24H, A
AJMP D14
D21: ANL A, #0FH
SWAP A MOV 24H,A
AJMP D14
ND2: JNB 02H,D11 ;判斷是否采樣零信號(hào)
ANL A,#0FH ;個(gè)位→零信號(hào)緩沖器
MOV R,#24H
XCHD A,@R1 CLR 02H
MOV DPTR,#0DFF3H ;啟動(dòng)A/D轉(zhuǎn)換
MOV A, #30H
MOVX @DPTR,
A ADS1:SETB P1.6
NOP
NOP
CLR P1.6
AJMP D14
D11: ANL A,#0FH
MOV R1,#27H
XCHD A,@R1
MOV 2AH,24H ; 采樣數(shù)據(jù)送處理緩沖器
MOV 2BH,25H
MOV 2CH,26H
MOV 2DH,27H
MOV 2EH,28H
MOV 2FH,29H
SETB 03H ;置一次A/D采樣結(jié)束標(biāo)志
D14: POP PSW ;恢復(fù)現(xiàn)場(chǎng)
POP DPL
POP DPH
POP ACC
RETI
定時(shí)器中斷子程序
定時(shí)器T0中斷程序流程圖如下圖所示。
程序代碼如下
PIT0: PUSH PSW ;保護(hù)現(xiàn)場(chǎng)
PUSH ACC
PUSH DPH
PUSH DPL
JNB 00H, T01 ;允許采樣否?
DJNZ 10H, T02 ;采樣周期計(jì)數(shù)器減1,不為1轉(zhuǎn)T02
DJNZ 11H,T02
MOV 10H,#0A0H ;恢復(fù)采樣周期計(jì)數(shù)器初值
MOV 11H, #0FH
SETB 0FH
CLR 0DH
CLR P3.4
MOV DPTR, #0DFF3H ; 對(duì)零點(diǎn)采樣
MOV A, #00H
MOVX @DPTR, A
SETB 04H
SETB 04H
T02: JB 01H, T05
T01 SETB P1.7
NOP
CLR P1.7
T05:CLR P1.6
DJNZ 16H, T06 ;調(diào)試用脈沖周期計(jì)數(shù)器減1
CPL P1.4 ;使P1.4產(chǎn)生方波
MOV 16H,17H
T06: POP DPL ;恢復(fù)現(xiàn)場(chǎng)
POP DPH
POP ACC
POP PSW
ERTI
數(shù)碼管顯示子程序
程序流程圖如下所示:
15
在單片機(jī)內(nèi)部RAM的20H和21H單元中有四位十六進(jìn)制數(shù)(20H中為高兩位),以下是將其自左到右顯示出來的程序。 程序代碼如下:
ORG 2000H
SDIAPLAY:MOV A,20H ;20H中數(shù)送A
ANL A,#0F0H ;截取高4位
MOV P1,A ;送1#MC14495
MOV A,20H ;20H中數(shù)送A
SWAP A ;低4位送高4位
ANL A,#0F0H ;去掉低4位
INC A ;A1A0指向2#MC14495
MOV P1,A ;送2#MC14495
MOV A,21H ;21H中數(shù)送A
ANL A,#0F0H ;截取高4位
ADD A,#02H ;A1A0指向3#MC14495
MOV P1,A ;送3#MC14495
MOV A,21H ;21H中數(shù)送A
SWAP A ;低4位送高4位
ANL A,#0F0H ;去掉低4位
ADD A,#03 ;A1A0指向4#MC14495
MOV P1,A ;送4#MC14495
RET
步進(jìn)電機(jī)控制程序
程序代碼如下: ORG 2100H
PUSH ACC ;保護(hù)現(xiàn)場(chǎng)
MOV R4,#N ;步進(jìn)馬達(dá)步進(jìn)數(shù)送R4
CLR C ;Cy清零
ORL C,PSW.5 ;轉(zhuǎn)向標(biāo)志狀態(tài)送Cy
JC ROTE ;若為反轉(zhuǎn),則轉(zhuǎn)ROTE
MOV R0,#20H ;正轉(zhuǎn)模型始址送R0
AJMP NEXT ; 轉(zhuǎn)入NEXT
ROTE:MOV R0,#27H ;反轉(zhuǎn)模型始址送R0
NEXT:MOV A,@R0 ;輸出控制模型的值
MOV P1,A ;輸出控制脈沖 ACALL DELA
Y ;延時(shí)(形成脈寬) INC R
0 ;準(zhǔn)備下個(gè)模型指針 MOV A,#00
H ;判斷送完一遍模型值
ORL A,@R0 JZ TP
L ;若模型結(jié)束,則TPL LOOP:DJNZ R4,NEXT ;若步進(jìn)數(shù)未走完,則N
EXT
POP AC
C ;恢復(fù)現(xiàn)場(chǎng)
RE
T :返回
TPL:MOV A,R0 CLR C
SUBB A,#06H MOV R0,A ;恢復(fù)模型始址
AJMP LOOP ;判斷步進(jìn)馬達(dá)步數(shù)走完?
DELAY:MOV R2,#M1 ;延時(shí)
DELAY1:MOV R2,#M2
DELAY2:DEC A JNZ
DELAY2 DJNZ R2,DELAY1
RET
END
上述控制程序是利用程序延時(shí)來控制電機(jī)的通電時(shí)間(即形成控制脈沖)以達(dá)到正轉(zhuǎn)、反轉(zhuǎn)、啟動(dòng)和停止的。這種控制的缺點(diǎn)是CPU因執(zhí)行延時(shí)程序而降低了效率。為了提高CPU的使用效率,常常也可采用單片機(jī)內(nèi)部定時(shí)/計(jì)數(shù)器編制上述程序。
評(píng)論