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