7. Realizacja programowa nadzoru systemu bezprzerwowego zasilania.
7.1 Algorytm główny programu
Poniższy algorytm
przedstawia zasadę działania oprogramowania. Po uruchomieniu układu lub jego restarcie ustawiane są parametry początkowe. Są to parametry założone przez programistę i tylko część z nich może zostać zmieniona przez obsługę urządzenia. Szczegółowy opis zostanie przedstawiony w dalszej części opracowania. Następnie z pamięci EEPROM pobrane zostają wartości parametrów elektrycznych. Dane te zmieniane są przy użyciu klawiatury umieszczonej na przednim panelu obudowy systemu bezprzerwowego zasilania. Następną operacją jest sprawdzenie klawiatury lokalnej. W przypadku stwierdzenia wciśniętego przycisku program przechodzi do wykonania przypisanej operacji. Wszystkie wielkości analogowe, które definiowane są przez obsługę, sprawdzane są cyklicznie. W przypadku stwierdzenia przekroczenia założonej wartości maksymalnej danego parametru, procesor wysyła sygnał sterujący wyłączeniem zagrożonego układu, zapala diodę LED informującą o awarii urządzenia, a na wyświetlaczu pokazywany jest kod uszkodzenia. Algorytm główny programu przedstawiony jest na rys. 7.1-1.
Rys. 7.1-1 Algorytm główny programu
7.2 Kod źródłowy programu i opis zasady działania.
7.2.1. Deklaracja stałych i zmiennych występujących w programie.
Poniżej przedstawiono deklarację stałych i zmiennych wewnętrznej pamięci RAM.
org 0h
org 0bh
kursor equ 08h
bufor equ 09h ;bufor wykorzystywaby w obliczeniach
tryb equ 10h ;bajt wskazujacy tryb normal/serwis
stanr equ 11h ;bufor przetwornika AC
ress equ 14h ;wynik konwersji A/A - setki
rest equ 13h ;wynik konwersji A/C - dziesiątki
wejac equ 15h ;numer wejścia analogowego
buf2 equ 16h ;bufor ress
npar equ 28h ;numer parametru przy zapisie i
;odczycie z EEPROM
val equ 20h ;wartosc wpisywana do EEPROM
pkl equ 25h ;mnoznik powtorzen petli przy
;odczycie klawiatury
wmax equ 26h ;wartosc max wyswietlacza
opozk2 equ 27h ;mnoznik2 opoznienia wyswietlania
opozk equ 29h ;opoznienie klawiatury
wys1 equ 54h ;wartość wyświetlacza nr 1
wys2 equ 2ch ;wartość wyświetlacza nr 2
wys equ 2dh ;cal liczba wyswietlona
hbajtad equ 2eh ;starsze bity konwersji A/C
lbajtad equ 2fh ;młodsze nity konwersji A/C
wys3 equ 31h ;jednosci
wys4 equ 32h ;dziesiatki
nrwys equ 35h ;nr wyswietlacza
wynik equ 34h ;<100
wys5 equ 33h ;setki
przen equ 36h ;przeniesienie
wyniks equ 37h ;setki
wyniksmax equ 38h ;max ilosc setek
powt equ 39h ;powtorzenia przy odzczycie z
;klawiatury
numbyt equ 3ah ;numer bitu zapisywanego i
;odzczytywanego z EEPROM
subadres equ 3bh ;subadres EEPROM
wmin equ 3dh ;min wartosc wyniku
opozw equ 3fh ;opoznienie wyswietlania
i2 equ 40h ;wartość zadana
ims equ 42h ;wartość mierzona (setki)
imd equ 43h ;wartość mierzona (dziesiątki)
izs equ 4ah ;wartość zadana (setki)
izd equ 4bh ;wartość mierzona (dziesiątki)
iz equ 4ch ;wartość zadana
im equ 4dh ;wartość mierzona
znake1 equ 24h ;bajt pomocniczy znak różnicy iz -im
zne equ znake1.0;bit pomocniczy znaku różnicy iż - im
spo equ 23h ;sposób obliczenia
spo equ sposob.0;bit pomocniczy
eset equ 4eh ;wartość uchybu (setki)
ed equ 4dh ;wartość uchybu (dziesiątki)
tc equ 4fh ;stała całkowania
de equ 50h ;przyrost wartości uchybu wielk.
;mierzonej
eold equ 51h ;poprzednia wart. uchybu
znakde equ 21h ;znak przyrostu wart. uchybu
znde equ znakde.1 ;bit pomocniczy
;rejestr ADC
adcon equ 0c5h
adch equ 0c6h
;rejestry I2C
s1adr equ 0dbh ;rej. adresu (slave)
s1dat equ 0dah ;rej. danych
s1sta equ 0d9h ;rej. stanu
s1con equ 0d8h
;rejestry PWM
pwmp equ 0feh
pwm0 equ 0fch
pwm1 equ 0fdh
;bity I2C
aa equ s1con.2
si equ s1con.3
sto equ s1con.4
sta equ s1con.5
;rejestry timera
ien0 equ 0a8h
ien1 equ 0e8h
ip0 equ 0b8h
ip1 equ 0f8h
p4 equ 0c0h
7.2.2 Ustawienie parametrów początkowych
Po każdym włączeniu lub restarcie procesora, program ustawia parametry początkowe. Następnie pobiera dane zapisane w pamięci EEPROM.
ljmp restart
org 100h
restart:
mov wys,#00h ;ustawianie parametrow poczatkowych
mov kursor,#07h
mov tryb,#0 ;ustawienie trybu pracy
mov wyniks,#00h ;zeruj liczbę dziesiątek
mov wejac,#1 ;zacznij konwersję od wej ADC1
mov opozk,#02h ;ustawienie czasu opóźnienia klawiatury
mov opozw,#005h ;ustawienie czasu opóźnienia wyświetlacza
mov wynik,#00h ;ustawienie wartości pocz. „wyniku” = 0
mov wmin,#00h ;wartość minimalna = 0
mov wys1,#00h ;wyświetlacz nr 1 - wstaw 0
mov wys10,#00
mov opozk2,#01h ;mnożnik opóźnienia klawiatury
mov wmax,#064h ;wartość max młodszego bajtu liczby = 100
mov wyniksmax,#0Ah ;wartość max starszego bajtu liczby = 10
mov wyniksmin,#00h ;wartość minimalna starszego bajtu = 0
mov pkl,#03h
setb p1.6 ;ustaw wyjścia IIC
setb p1.7
mov s1con,#0c1h ;ustaw rejestry IIC
mov s1adr,#00h
mov numbyt,#02h
mov subadres,#10h ;adres początkowy odczytu z EEPROM
call odczyt ;odczytanie danych z pamięci EEPROM
mov izs,5ah
mov izd,5bh
mov pwm1,05fh ;ustawienie początkowe PWM
mov pwmp,#0ffh
mov de,#0 ;uchyb początkowy = 0
mov eold,#0 ;uchyb n-1 początkowy = 0
mov tl1,#37h ;ustawienie licznika
mov th1,#50h
mov tl0,#37h
mov th0,#50h
setb et0
setb tr0
setb ea
mov ien0,#10001010b
mov ien1,#00h
mov ip0,#00000010b
mov tmod,#00010001b
:
7.2.3 Blok dekodowania numeru wyświetlacza oraz liczby (informacji podawanej na wyświetlaczu).
Poszczególne segmenty wyświetlacza załączane są sekwencyjnie tzn w danej chwili świeci tylko jeden z nich. Aby uniknąć efektu migotania każdy wyświetlaczy załączany jest powtórnie w czasie krótszym niż 20ms.
Podprogram sterujący wyświetlaczami zamieszczono poniżej.
w1:
mov nrwys,r1 ;wpisanie numeru wyświetlacza
mov a,nrwys
swap a
add a,wys1
mov wys,a
mov a,#12h
mov r0,a
mov a,wys
movx @r0,a ;wysłanie informacji do
;wyświtetlacza
djnz opozw,w1 ;zliczanie - wprowadzenie
;opóźnienia
mov opozw,#005h
inc r1
mov a,#6
cjne r1,a,w1 ;opuszczenie pętli gdy r1>5
7.2.4 Blok obsługi klawiatury
Klawiatura sprawdzana jest sekwencyjnie. W momencie wciśnięcia przycisku dane wyjście portu P4 zwierane jest do masy co powoduje wystąpienie na nim logicznego 0. Fakt ten wykrywany jest przez procesor. Następnie procesor powtarza czynność sprawdzenia kilkakrotnie, aby upewnić się, że nie wystąpiło zakłócenie. Następnie występuje skok do instrukcji przypisanej do danego przycisku. Podprogram „klawp” sterujący klawiaturą umieszczono poniżej.
klawp:
setb p4.7 ;ustawia stan wysoki portu 4.7
nop
djnz opozk,klawp
mov opozk,#0ffh
djnz opozk2,klawp ;opóźnienie
mov opozk,#02h
mov opozk2,#05h
jb p4.7,klzmn ;jeśli p4.7 = 0 skocz „klzmn”
jnb p4.5,trserw ;jeśli p4.5 = 1 skocz „trserw”
inc wys10 ;zwiększ wartość wys10
mov a,wys10
mov b,#0ah
div ab
mov wys1,a
cjne a,#0ah,skok1 ;wartość max. „wys1” = 09
mov wys1,#00h
mov wys10,#00h
ljmp start
skok1:
ljmp start
trserw:
setb p1.1 ;zmiana trybu serwis/praca
mov a,tryb
cpl a
mov tryb,a
trserw1:
mov p4,#0ffh
nop
mov a,p4
jnb acc.5,trserw1
klzmn:
setb p4.3
nop
djnz opozk2,klzmn
jb p4.3,klaw ;jeśli p4.3 = 0 skok do „klaw”
mov opozk,#0ffh
ljmp zmniejsz
klaw:
;sprawdza wcisniecie klawisza
;zwiekszania wyniku o jeden
mov a,#0ffh
djnz 027h,klaw
jb p4.4,klaw2
ljmp powieksz ;jezeli klawisz wcisniety to skok
;do zwiekszenia wartosci o jeden
klaw2:
setb p4.6 ;przycisk zapisu do pamieci EEPROM jb p4.6,klaw3
djnz powt,klaw2
mov powt,#0fh
klawzap:
mov a,wys1 ;ustalenie subadresu zapisu
mov b,#02h
mul ab
mov subadres,a
mov val,wynik
acall zapis
inc subadres
mov val,wyniks
acall zapis
klaw3:
setb p4.5 ;przycisk odczytu z pamieci EEPROM
jb p4.5,powrot
djnz powt,klaw3
mov powt,#0fh
call odczyt
mov a,tryb
cjne a,#00h,kl1
sjmp powrot
kl1:
mov b,#02h
mov a,wys1
mul ab
add a,#05ah
mov r0,a
mov wynik,@r0
inc r0
mov wyniks,@r0
powrot:
mov a,tryb
cjne a,#00h,powrot1
ljmp przetworniki
powrot1:
powrot3:
powrot2:
ljmp start
zmniejsz:
djnz opozk,zmniejsz ;zmniejszenie wartości o 1
nop
mov a,wynik
cjne a,#00h,zmniejsz1
mov wynik,#063h
mov a,wyniks
cjne a,#00h,zmniejsz2
mov wyniks,#09h
sjmp skok
zmniejsz1:
dec wynik
sjmp skok
zmniejsz2:
dec wyniks
sjmp skok
powieksz: ;zwieksza liczbe o jeden
nop
djnz opozk,powieksz
mov opozk,#0ffh
inc wynik
mov a,wynik
cjne a,wmax,skok ;zeruje liczbe jesli
;przekroczy 99
mov wynik,#00h
inc wyniks
mov a,wyniks
cjne a,wyniksmax,skok
mov wyniks,#00h
7.2.5 Protokół komunikacji procesora z pamięcią EEPROM przy
zapisie i odczycie danych
Protokół komunikacji mikroprocesora z pamięcią EEPROM wykorzystuje interfejs, w jaki wyposażony jest procesor 80552. Ten format wymiany informacji z otoczeniem stosowany jest przez wiele specjalizowanych układów scalonych. Zastosowanie ich do współpracy z procesorem nie wyposażonym w taki interfejs wymaga pisania specjalnych procedur obsługi IIC. W przypadku tego typu mikrokontrolera problem ten jest znacznie uproszczony. Może on być zaprogramowany bardzo elastycznie. Pełni rolę nadrzędną (w komunikacji z pamięcią) i podrzędną (w przypadku wywołania przez komputer zewnętrzny).
Podprogram zapisu do pamięci zaczyna się od wywołania instrukcji „zapis” po wciśnięciu przycisku dostępnym na przednim panelu sterownia.
zapis: ;protokol zapisu do EEPROMeep: mov s1con,#0c1h ;wpisanie adresu EEPROMeeprom: setb sta ;ustawienie bitu startueep0: jnb si,eep0 mov a,s1sta cjne a,#10h,eep8 ;jeśli błąd #10 to skok do „eep8”
sjmp eep7
eep8:
cjne a,#08h,eerr
eep7:
mov s1dat,#0a0h
clr sto
clr si
eep1:
jnb si,eep1
mov a,s1sta
cjne a,#18h,eep
mov a,subadres ;subadres
mov s1dat,a
clr sta
clr sto
clr si
eep2:
jnb si,eep2
mov a,s1sta
cjne a,#28h,eep
mov s1dat,val
clr si
clr sto
clr sta
eep3:
jnb si,eep3
mov a,s1sta
cjne a,#28h,eerr
eee:
clr sta
clr si
setb sto
sjmp eepkon
eerr:
clr sta
clr si
setb sto
eepkon:
ret
Program jest zabezpieczony na wypadek wystąpienia zakłócenia podczas transmisji danych. W momencie wystąpienia przerwania wykonywana jest instrukcja zależna od stanu. Tabela poniżej przedstawia kody stanu i sterowania interfejsem IIC w trybie nadawania.
Tabela 7.2-1 Kody stanu interfejsu i szyny w trybie zapisu
odczyt: ;protokół odczytu z EEPROM
readee:
nop
read:
mov s1con,#0c1h
mov s1adr,#00h
setb p1.6
setb p1.7
mov r0,#5ah
setb sta
read9:
jnb si,read9
mov a,s1sta
cjne a,#08h,rerr1
mov s1dat,#0a0h
clr sto
clr si
read5:
jnb si,read5
mov a,s1sta
cjne a,#18h,rerr1
mov s1dat,#00h
clr sta
clr sto
clr si
sjmp read6
rerr1:
ljmp rerr
read6:
jnb si,read6
mov a,s1sta
cjne a,#28h,rerr
clr sto
clr si
setb sta
read7:
jnb si,read7
mov a,s1sta
cjne a,#10h,rerr
mov s1dat,#0a1h
clr sto
clr si
read1:
jnb si,read1
mov a,s1sta
cjne a,#40h,rerr
clr si
clr sto
clr sta
setb aa
read2:
jnb si,read2
mov a,s1sta
cjne a,#50h,rerr
mov @r0,s1dat
inc r0
read8:
clr si
clr sto
clr sta
setb aa
read3:
jnb si,read3
mov a,s1sta
cjne a,#50h,rerr
mov @r0,s1dat
inc r0
cjne r0,#7dh,read8
clr si
clr sto
clr sta
clr aa
read4:
jnb si,read4
mov a,s1sta
cjne a,#58h,rerr
mov @r0,s1dat
clr sta
clr si
setb sto
sjmp readk
rerr:
clr sta
clr si
setb sto
sjmp readk
readp:
ljmp read
readk:
ret
Kody stanu i sterowanie interfejsem IIC w trybie odbioru przedstwaiono w tabeli 7.2-2
Tabela 7.2-2 Kody stanu interfejsu IIC w trybie odbioru
7.2.6 Podprogram odczytujący sygnały z wejść analogowych.
Procesor 80552 wyposażony jest w przetwornik analogowo-cyfrowy o 10 bitowej rozdzielczości. Zakres konwersji określa dodatnie i ujemne napięcie odniesienia, ich wartości muszą mieścić się w zakresie +5V- 0V. Konwersja trwa 50 cykli co przy użytym zegarze 12MHz daje czas 50ms. Dzięki multiplekserowi analogowemu na wejście przetwornika można podać wybrane wejście portu 5.
W poniższym programie korzystanie z przetwornika przebiega w sposób następujący. Najpierw zerowane są bity b4 i b3 rejestru ADCON. Następnie poprzez ustawienie bitów b2, b1, b0 wybierane jest wejście, z którego sygnał poddany zostanie konwersji. Przy pomocy przesunięcia bitów w lewo formuje się 10 bitową liczbę złożoną bitów ADCH i pozostałych 2 bitów ADCON. Na koniec zerowany jest bit b4 co powoduje, że przetwornik gotowy jest do następnej konwersji. Program przechodzi do przetworzenia sygnału pochodzącego z następnego wejścia.
przetworniki:
adc:
adc1:
mov r0,wejac ;numer wejścia analogowego z ;którego sygnał poddany zostanie ;konwersji
anl adcon,#11111000b
ad1:
inc adcon
djnz r0,ad1
anl adcon,#11011111b
konw1:
anl adcon,#11101111b
orl adcon,#00001000b
konw2:
clr c
mov a,adcon
jnb acc.4,konw2
mov hbajtad,#0
mov lbajtad,adch
mov r1,#2
konw3:
clr c
mov a,lbajtad
rlc a
mov lbajtad,a
mov a,hbajtad
rlc a
mov hbajtad,a
djnz r1,konw3
mov a,lbajtad
mov a,adcon
anl a,#11000000b
rl a
rl a
orl a,lbajtad
mov lbajtad,a
mov r1,#0ffh
konw4:
clr c
inc r1
mov a,lbajtad
subb a,#100
mov lbajtad,a
mov a,hbajtad
subb a,#0
mov hbajtad,a
jnc konw4 ;wykonuje petle do moment wyzerowania
mov a,lbajtad ;wskaznika przeniesienia
add a,#100
mov lbajtad,a
mov a,r1 ;r1 = ilosc petli = ilosci setek
konw5:
mov ress,a ;wynik konwersji (setki)
konw6:
mov rest,lbajtad ;wynik konwersji (dziesiątki)
zabezpiecz:
mov a,adcon
clr acc.4
mov adcon,a
mov a,wejac
mov b,#2
mul ab
add a,#5ah
mov r0,a
mov a,@r0
mov bufor,a
clr c
inc r0
mov a,@r0
subb a,ress ;czy wielkość mierzona przekracza
;max.
jc wlzab
cjne a,#00h,zab1
clr c
mov a,bufor ;jeśli wielkość mierz. > max to
;włącz zabezpieczenie
subb a,rest
jc wlzab
zab1:
clr c
mov a,wejac
cjne a,wys1,zab2
cjne a,#07h,zab3
mov wejac,#01h
sjmp zab4
zab3:
inc wejac
zab4:
cjne a,#2,zab41
setb p1.5
sjmp zab42
zab41:
clr p1.5
zab42:
mov wyniks,ress
mov wynik,rest
ljmp powrot1
zab2:
mov a,wejac
cjne a,#7,zab5
mov wejac,#1
ljmp powrot1
zab5:
inc wejac
ljmp powrot1
wlzab:
clr c
mov wynik,#0
mov wyniks,#0
mov tryb,#0ffh
mov wys1,wejac
clr P1.1
7.2.7 Algorytm ładowania baterii akumulatorów
Do ładowania stosuje się tylko prąd stały. Normalnym sposobem ładowania jest ładowanie prądem o stałym (niezmiennym) natężeniu. Normalne natężenie prądu ładowania akumulatorów Centra wynosi C/4 dla normalnooporowych i C/5 dla niskooporowych. W czase ładowania wzrasta napięcie poszczególnych ogniw od wartości ok. 1,4V do ok. 1,8V. Przy ładowaniu na mrozie napięcie ogniw dochodzi do wartości 2,2V.
Ogniwa do ładowania łączy się szeregowo, tzn. dodatni biegun jednego ogniwa łączy się z ujemnym biegunem następnego ogniwa. Zewnętrzne zaciski tak utworzonej baterii łączy się z zaciskami źródła prądu.
Liczba ogniw szeregowo połączonych do ładowania wynika z podzielenia napięcia źródła prądu przez napięcie końcowe ładowania pojedynczego ogniwa.
Współpraca między źródłem ładowania, baterią akumulatorową i odbiornikami energii elektrycznej stanowi o rodzajach pracy baterii. Rozróżniamy zasadnicze rodzaje:
praca pojemnościowa: polega na łasowaniu baterii do oznak pełnego naładowania przy odłączonych odbiornikach, a następnie wyładowaniu baterii do dolnej granicy napięcia przy odłączonym prostowniku. Dalej występuje ponownie ładowanie,
praca rezerwowa: stosowana w układach awaryjnych polega na ciągłym doładowywaniu prądem (konserwującym) pokrywającym straty samowyładowania. W momencie awarii przerwany jest dopływ prądu z prostownika do baterii, a sama bateria zostaje obciążona wszystkimi odbiornikami przewidzianymi do zasilania. Po usunięciu awarii zostaje przywrócony pierwotny stan połączeń, przy czym prostownik powinien w możliwie najkrótszym czasie przywrócić pełną zdolność energetyczną baterii,
praca buforowa: stosowana przy zmieniającym się w dużym zakresie obciążeni baterii, polega na jednoczesnym ładowaniu baterii z prostownika i wyładowaniu jej przez odbiornik prądu stałego. W pracy buforowej należy utrzymać stałą wartość 1,40 - 1,45 V/ogniwo.
Rys.7.2- 2 Przykładowa charakterystyka ładowania akumulatorów
kwasowych i zasadowych. Wartości w nawiasach dla
kwasowych.
Poniżej przedstawiono algorytm ładowania baterii.
Rys 7.2.- 3 Algorytm ładowania baterii kwasowych i zasadowych
7.2.8 Regulator PI w procesie ładowania baterii kondensatorów
W procesie ładowania akumulatorów wykorzystano program odpowiadający regulatorowi proporcjonalno -całkującemu. Sygnał wyjściowy
tego typu regulatora jest proporcjonalny do sumy sygnału uchybu i całki tego sygnału. Zadaniem regulatora PI jest zapewnienie stabilizacji wielkości regulowanej, osiągnięcie wysokiej dobroci stanów dynamicznych i korekcji w układzie regulacji prądu.
W rozwiązaniu tym zastosowano algorytm opisany zależnością:
ΔY = ΔRP + ΔRI
gdzie: ΔY - przyrost wartości sygnału nastawiającego
ΔRP - przyrost wartości składowej proporcjonalnej
ΔRI - przyrost wartości składowej całkowej
Składowa RP jest proporcjonalna do przyrostu uchybu. Człon ten zapewnia szybką (skokową) zmianę sygnału nastawiającego przy każdej zmianie uchybu dzięki czemu skraca się czas regulacji. Składowa całkowa sygnału wyjściowego regulatora PI jest natomiast proporcjonalna do całki uchybu, dzięki czemu jej wartość zależy nie tylko od wartości uchybu, ale także od kształtu jego przebiegu. Człon całkujący regulatora PI zapewnia dużą dokładność regulacji (sprowadza uchyb do zera). Przez zmianę parametrów regulatora można dopasować go do współpracy z określonym układem regulacji. Regulator typu PI jest regulatorem standardowym stosowanym w wielu układach regulacji.
Wynikiem obliczeń jest ciąg przyrostów wartości sygnału nastawiającego w kolejnych przedziałach czasu. Bieżącą wartość sygnału otrzymuje się przez sumowanie bieżącego przyrostu z poprzednią wartością bezwzględną. Algorytm prędkościowy przeznaczony jest do sterowania procesów o dużych stałych czasowych.
START
KONIEC
Rys. 7.2-4 Algorytm regulatora PI
Zmienne występujące w opisie procedury „regulator”:
Kp - wzmocnienie części proporcjonalnej,
Kc - wzmocnienie części całkującej,
Tc - stała całkowania,
To - okres próbkowania,
RP - wartość składowej proporcjonalnej,
ΔRP - przyrost wartości składowej proporcjonalnej,
RI - wartość składowej całkującej,
ΔRI - przyrost wartości składowej całkującej,
e - wrtość uchybu wielkości mierzonej,
Δe - przyrost wartości uchybu wielkości mierzonej,
e n-1 - poprzednia wartość uchybu wielkości mierzonej.
regulacja:
regc:
inc tc
mov a,tc
cjne a,#03fh,we
mov tc,#1
sjmp we16
push acc
mov tl0,#37h
mov tl1,#50h
we:
clr spo ;obliczenie uchybu
mov a,izs
clr c
subb a,ims
cjne a,#0,we1
setb spo
mov a,izd
subb a,imd
jc we15
mov ed,a
sjmp we1
we15:
clr c
mov a,imd
subb a,izd
mov ed,a
setb c
we1:
jc we2
clr zne
sjmp we3
we2:
setb zne
we3:
jb spo,we4
we5:
mov a,izs
mov b,#10
mul ab
mov r0,a
mov a,izd
mov b,#10
div ab
add a,r0
mov r0,a
mov a,ims
mov b,#10
mul ab
mov r1,a
mov a,imd
mov b,#10
div ab
add a,r1
mov r1,a
mov a,r0
clr c
subb a,r1
jc we51
mov r0,a
cjne a,#0,we52
sjmp konreg
we52:
sjmp we20
we51:
xrl a,#0ffh
mov r0,a
setb zne
sjmp we10
we11:
setb zne
sjmp we10
we16:
ljmp konreg
we4:
mov a,ed
mov b,#03h
div ab
mov r0,a
mov a,b
mov b,#1
div ab
add a,r0
mov r0,a
cjne a,#0,we10
sjmp konreg
we10:
mov a,ed
clr c
subb a,eold
jc we35
mov de,a
mov a,r0
add a,de
mov r0,a
mov eold,ed
sjmp we20
we35:
mov a,eold
subb a,ed
clr c
setb znde
mov de,a
mov a,r0
subb a,de
mov r0,a
mov eold,ed
clr c
we20:
jb zne,we8
we6:
mov a,pwm1
cjne a,#0,we7
sjmp konreg
we7:
dec pwm1
djnz r0,we6
sjmp konreg
we8:
we18:
mov a,pwm1
cjne a,#0ffh,we9
sjmp konreg
we9:
inc pwm1
mov a,r0 ;nowa wartość zadana
cjne a,#0,we91
sjmp konreg
we91:
djnz r0,we18
sjmp konreg
konreg:
pop acc
setb tr0
reti
end
8. Badanie układu
8.1 Badanie parametrów statycznych przetworników I/U
W niniejszej pracy dyplomowej zastosowano przetworniki prądowe zbudowane na bazie transformatora TS2/15M. Usunięto z nich uzwojenie pierwotne, zastępując 3-ma zwojami drutu o przekroju 1mm2.
W zakresie badań sprawdzono liniowość przekładnika co pokazane jest na rysunku 8.1-1
Rys. 8.1-1 Wykres U = f(Ip) - zależność napięcia przetwornika w
funkcji prądu pierwotnego przetwornika
Wynika z niego, że w zakresie małych wartości prądu płynącego przez przetwornik wartość napięcia podawanego jako sygnał wejściowy procesora zmienia się liniowo. Wraz ze wzrostem prądu po stronie pierwotnej sygnał zaczyna być przekształcany nieliniowo.
Rys. 8.1-2 Wykres Ik = f(Ip) - prąd konwersji A/C procesora w funkcji
prądu pierwotnego przetwornika
Rys. 8.1-3 Przebieg napięcia przetwornika prąd napięcie (1 - wartość
wyprostowana 2 - przebieg napięcia na uzwojeniu wtórnym
przetwornika)
Rys.8.1-4 Przebieg napięcia na wyjściu przetwornika prąd/napięcie
( układ z kondensatorem filtrującym 22μF)
Rys. 8.1-3 Przebieg napięcia przetwornika prąd/napięcie
(kondensator filtrujący 47μF).
9. Wnioski:
Obecnie bardzo wiele urządzeń wykorzystuje nadzór mikroprocesorowy. W dalszym ciągu widać dynamiczny wzrost w tej dziedzinie. Konstruktorzy coraz częściej zastępują skomplikowane układy analogowe, zwłaszcza automatyki przemysłowej, układami mikroprocesorowymi. Wynika to przede wszystkim z możliwości jakie dają te układy. Za ich pomocą można realizować nawet najbardziej skomplikowane algorytmy regulacji.
Mikroprocesory zaczynają być niezastąpione w wielu dziedzinach przemysłu. W wyniku budowania coraz to bardziej złożonych systemów, sterujących i monitorujących licznymi podprocesami, koniecznością wydaje się archiwizacja stanów alarmowych. Ma na to na celu przede wszystkim przyspieszenie lokalizacji zakłócenia procesu, co z kolei wpływa na czas eliminacji uszkodzenia.
Systemy takie można spotkać w bardzo skomplikowanych procesach wytwórczych. Również coraz częściej występują one w urządzeniach powszechnego użytku jak samochody czy telewizory. W momencie awarii, serwisant po uprzednim podłączeniu komputera nadrzędnego, otrzymuje informację co uległo uszkodzeniu. Przyspiesza to w znacznym stopniu czas naprawy.
W niniejszym opracowaniu zajmowano się nadzorem mikroprocesorowym do sytemu bezprzerwowego zasilania. Nadzór polegał na monitorowaniu wybranych parametrów urządzenia, reakcji w przypadku przekroczenia założonych wartości maksymalnych oraz regulacji ładowania baterii akumulatorów.
W przypadku użycia mikroprocesora do sterowania zabezpieczeniami urządzeń, należy uwzględnić jego czas reakcji na zakłócenie, który to nie może być zbyt długi. Zazwyczaj układy te monitorują i przetwarzają kilka parametrów w sposób cykliczny. Procesory posiadające wbudowane przetworniki A/C potrzebują pewnego czasu na przetworzenie sygnału analogowego na cyfrowy. Czas ten nazywamy czasem konwersji. Przy użyciu generatora kwarcowego 12MHz czas pojedynczej konwersji wynosi 50ms. Spowodowało to, że w niniejszym opracowaniu czas reakcji na zakłócenie w wyniku cyklicznego sprawdzania sześciu parametrów, przy najbardziej niekorzystnych warunkach, początkowo wynosił 300ms. Po wymianie generatora kwarcowego czas ten udało się zredukować do 150ms. Drugim sposobem przyspieszenia reakcji jest skrócenie czasu konwersji poprzez zmniejszenie jej dokładności z 10-bitowej na 8-bitową. W przypadku zabezpieczeń szybkość jest bardziej istotna niż dokładność.
Ważną rolę w procesie monitorowania odgrywają sprzęgi. Jako przetworniki prądu przemiennego wykorzystano zmodyfikowane transformatory sieciowe typu TS2/15. Usunięto z nich uzwojenie pierwotne, które zastąpiono trzema zwojami drutu. Przetwornik ten charakteryzuje dobra liniowość.
Gdy procesor wykorzystywany jest do skomplikowanych obliczeń o wymaganej duże precyzji, należy używać jednostek 16- to lub 32-bitowych.
Niniejszą pracę zbudowano w oparciu o układ 8-bitowy, co powodowało znaczne utrudnienie obliczeń i skomplikowało algorytm regulatora PI.
Układ nadzoru i archiwizacji wykonany został w sposób umożliwiający ustawienie parametrów krytycznych monitorowanego urządzenia w zależności od rodzaju użytych baterii oraz obciążenia. Obsługa ma możliwość zmiany nastaw po uprzednim wprowadzeniu kodu dostępu. Ograniczony dostęp wynika z konieczności ochrony sprzętu przed osobami niepowołanymi co mogłoby spowodować uszkodzenie w wyniku ustawienia zbyt dużych wartości maksymalnych.
Układ daje możliwość ładowania wszystkich rodzajów baterii według zmiennych parametrów, ustalanych za pomocą klawiatury. Biorąc pod uwagę dynamikę procesu jakim jest ładowanie akumulatorów, właściwości regulatora PI zrealizowanego w ramach pracy są dobre. Przy odpowiedzi na skok jednostkowy przeregulowanie wynosi 3%, natomiast czas regulacji 2,5s. W dużej mierze wynika to z dużej pojemności kondensatora użytego jako filtr sygnału pochodzącego z wyjścia PWM, wykorzystywanego jako zadajnik.
10. Wykaz literatury
[1] Barlik R., Nowak M.”Poradnik inżyniera energoelektronika” WNT
Warszawa 1998
[2] Dmowski A. „Energoelektroniczne układy zasilania prądem stałym”
WNT Warszawa 1998
[3] Gałka P. „Podstawy programowania mikrokontrolerów 80C51”
Wydawnictwo MIKOM Warszawa 2000
[4] Korcz K. „Pomiary prądów i napięć elektrycznych w urządzeniach
energoelektroniki” Materiały konferencyjne (referat)
[5] Marusak A. „Urządzenia elektroniki” WSiP Warszawa 1994
[6] Nadachowski Z. Kulka A. „Analogowe układy scalone” WNT
Warszawa 1994
[7] Pułaczewski J. „Podstawy automatycznej regulacji” WSiP Warszawa
1988
[8] Rydzewski A. „Mikrokomputery jednoukładowe rodziny MCS-51”
WNT Warszawa 1992
[9] Starecki S. „Mikrokontrolery jednoukładowe rodziny 51”
Wydawnictwo NOZOMI Warszawa 1996
[10] „Komputery w technice”
[11] „Poradnik inżyniera elektryka” część II
[12] „Nadzór systemów zasilających, baterii, i innych urządzeń
przemysłowych” dokumentacja techniczna SAN produkcji APS
Bydgoszcz
[13] „80C51- based 8-bit microcontrollers” katalog firmy Philips
Semiconductors
[14] http//www.avis.com.pl
Układ nadzoru i archiwizacji stanów alarmowych systemu bezprzerwowego zasilania
64
Str.
START
Ustawienie parametrów początkowych
Pobranie wartości początkowych z pamięci EEPROM
Włączenie wyświetlacza
Sprawdzenie klawiatury
T
Przycisk
wciśnięty
Wykonaj przypisaną operację
N
STOP
Sprawdzenie wielkości analogowych
Wykryto zakłócenie
ie
T
Zabezpiecz
+
informacja
N
Ładowanie baterii akumulatorów
KONIEC
START
Sprawdzenie temp ogniwa
Ładowanie stałym prądem
KONIEC
Ibat<
C/4
Pomiar prądu baterii
Ładowanie stałym napięciem 1,74V
Tbat<
35°C
Ubat < 1,74V
Wstrzymaj ładowanie
Tbat <
35°
Sprawdzenie napięcia baterii
Ładowanie stałym napięciem 1,4V
Wyliczenie uchybu
E = I2 - I
Wyliczenie ΔRI
(część calkująca)
Wyliczenie przyrostu uchybu Δe
I
Wyliczenie ΔRP
(część proporcjonalna)
ΔRP = Kp * Δe
Wyliczenie wartości zadanej
F = F+ΔRI+ΔRP