Listato del software utilizzato
Il controllo a microprocessore del motore in corrente continua a magnete permanente viene gestito via software dal seguente programma, dedicato appositamente per gestire il sistema in questione:
Nome del programma oggetto: CONTR2.OBJ
Nome del programma eseguibile: CONTR2.TSK
******************************************************
TILTLE: CONTROLLO DEL MOTORE IN C.C.
******************************************************
; ** PROGRAMMA PER IL CONTROLLO DI UN MOTORE D.C. **
; ** IL TRASDUTTORE E’ UNA DINAMO TACHIMETRICA **
; ** IL CONTROLLO E DI TIPO PID **
; NOTE OPERATIVE
; A) Bisogna fissare via SW il valore di velocità desiderato
; B) Bisogna determinare sperimentalmente il valore della tensione di armatura
; corrispondente a tale velocità
; C) Valutare inoltre il valore della tensione di reazione fornita dalla dinamo (REAZ)
; D) I valori determinati devono essere memorizzati al lancio del programma delle celle
; sezione DATA
; E) Si memorizza anche il valore della costante (KAPPA)
; F) Se si pone KAPPA=0 si ignora la reazione e si realizza un controlllo ad
; anello aperto (COMANDO)
; G) Prima del lancio bisogna inserire in RAM (tramite monitor)
; - Valore CONTRO: valore hex del segnale di controllo al set-point
; indirizzo di riferimento: 1220h
; - Valore REAZ: valore hex del segnale di reazione al set-point
; indirizzo di rigerimento: 1201h
; - Valore KAPPA: valore hex della costante di proporzionalità
; indirizzzo di riferimento: 1202h
; N.B.: Gli indirizzi sono rilocabili e dipendono dalla sezione DATA
; ---- UTILIZZO REGISTRI ----
; B: CONTRO (Valore segnale di controllo al set-point)
; C: REAZ (Valore segnale di reazione al set-point)
; D: KAPPA (Valore costante proporzionale)
; H: Viene utilizzato come bit di segno nel calcolo dell’errore
; E: Viene utilizzato per il modulo dell’errore
CODE
; **** SEZIONE EQUATE ****
MONIT: EQU 0000H ;Indirizzo MONITOR
START: EQU 00H ;Indirizzo seganale STARTA CONVERSION
ADC: EQU 01H ;Indirizzo ADC
TIME: EQU 156 ;Tempo di ritardo (1 msec)
DAC: EQU 02H ;Indirizzo DAC
; **** CONTROLLO AD ANELLO APERTO ****
LD A,(KAPPA) ;Si valuta Kappa
CP 00H
JR NZ,AVVIO ;K<>0 : Controllo
LD A,(CONTRO) ;K=0 : Comando
OUT (DAC),A ;Si invia il segnale su DAC
HALT ;Si sospende
; ------------------------------------------- CONTROLLO PROPORZIONALE ---------------------------------------------------
; **** INIZIALIZZAZIONE DEI VALORI DI RIFERIMENTO ****
AVVIO: LD A,(CONTRO) ;valore del segnale di controllo
LD B,A ;in B
LD A,(REAZ) ;segnale di reazione al set-point
LD C,A ;in C
LD A,(KAPPA) ;costante di proporzionalità
LD D,A ;in D
LD H,00H ;H bit di segno si inizializza a 0
PARTI: LA A,B
OUT (DAC),A ;si invia il segnale di controllo
; **** SEZIONE ADC ****
ACQUIS: IN A,(START) ;impulso start conversion
CALL DELAY
LEGGO: IN A,(ADC) ;legge valore analogico
; **** ELABORAZIONE DEL SEGNALE ****
ERR: SUB C ;ADC - REAZ in A
JR NC,CALCO ;CARRY=0 : il dato è positivo
; Se il segnale è negativo viene complementato e sommato a 1 per trattarlo in valore assoluto
CP L
ADD A,01H
LD H,01H ;si pone a 1 il bit di segno
; **** SI ESEGUE IL CALCOLO DEL VALORE DA INVIARE ****
; ---- PRIMA FASE: si calcola il prodotto ----
CALCO: LD L,A ;Modulo errore in L
SUB A ;Si azzera Acc.
MUX: ADD A,L ;Si esegue la somma
JR C,OVFW ;OVERFLOW
DEC D
JR NZ,MUX ;Si ripete la somma
JR SALVA
OVFW: LD A,FFH
; ---- SECONDA FASE: si calcola la correzione (con segno) ----
SALVA: LD E,A ;in E modulo del risultato
LD A,H
CP 00H
JR NZ,NEGAT ;il segno è negativo
; ---- SEGNO POSITIVO: il valore di controllo deve essere diminuito ----
POSIT: LD A,B ;CONTRO in A
SUB E ;si diminuisce il valore di controllo
JR NC,ESCE ;dato da inviare
SUB A ;caso di overflow : si azzera
JR ESCE ;dato da inviare
; ---- SEGNO NEGATIVO: il valore di controllo deve essere aumentato ----
NEGAT: LD A,B ;CONTRO in A
ADD A,E ;si aumenta il valore di controllo
JR NC,ESCE ;dato da inviare
LD A,FFH ;caso di overflow : si massimizza
; ---- SI INVIA IL NUOVO SEGNALE DI CONTROLLO ----
ESCE: LD H,00H ;rispristina il bit di segno per il prossimo segno
OUT (DAC),A ;si invia il segnale di controllo
RIPRIS: LD A,(KAPPA) ;ripristina il valore di K
LD D,A ;per il nuovo giro
JP ACQUIS ;si torna ad acquisire
; **** ROUTINE DI RITARDO ****
DELAY: PUSH BC
LD C,TIME
UNO: DEC C
JR NZ,UNO
POP BC
RET
;---------------------------------------------- SEZIONE DATI --------------------------------------------------------------------
DATA
CONTRO: DS 1 ;valore del controllo al set-point
REAZ: DS 1 ;valore della reazione al set-point
KAPPA: DS 1 ;valore (intero) costante proporzionale
END