Programy ćwiczeń laboratoryjnych:

Transkrypt

Programy ćwiczeń laboratoryjnych:
SYSTEMY POMIAROWE WIELKOŚCI FIZYCZNYCH - LABORATORIUM
Ćw. 11 Układy normalizacji sygnałów w przemysłowych systemach
pomiarowych
Modułowy system kontrolno-pomiarowy (μMAC-1060)
Problemy teoretyczne:




Kondycjonowanie sygnałów analogowych (na przykładzie modułów serii 5B f-my
ANALOG-DEVICES)
Próbkowanie i kwantowanie sygnałów analogowych,
Przetwornik A/C typu U/f,
Własności mikroprocesorów serii I80186/188
Program ćwiczenia:
1. Zapoznać się z mikrokontrolerem MAC-1060 na podstawie skróconej dokumentacji
technicznej.
 architektura systemu, organizacja pamięci RAM, ROM,
 przetwornik A/C i C/A
 zapoznać się z podstawowymi dyrektywami systemu
 zapoznać się z podstawowymi funkcjami programowymi systemu
 zapoznać się z przykładowym programem demonstracyjnym wz.c.
2. Włączyć zasilanie mikrokomputera IBM PC-386DX40. Wybrać opcję startową systemu
operacyjnego AZTEC - uMAC1060. Po uruchomieniu zgłasza się program NortonComander
v5. Zweryfikować zmienne systemowe poleceniem SET (CLIB, INCLUDE i PATCH –
niezbędne do poprawnego działania cross-compilatora C).
3. Włączyć zasilanie mikrokontrolera MAC-1060.
4. Jako katalog roboczy wybrać katalog: C:\AZTEC\ROBOCZY. Utworzyć poleceniem md
nowy unikalny katalog dla grupy laboratoryjnej. Z katalogu WZORC skopiować do swojego
katalogu pliki: wz.c, docc.bat, doram.bat. Poleceniem attrib dokonać modyfikacji atrybutu
READ_ONLY na wyłączony, co umożliwi edycję w/w pliku.
5. Uruchomić program komunikacyjny: TED.EXE oraz wywołać funkcję RESET systemu
MAC-1060 specjalnym przyciskiem.
6. Zapoznać się z podstawowymi funkcjami programu TED.EXE ( F10, ALT-F, ALT-O, ... )
7. Zapoznać się z podstawowymi funkcjami bezpośredniego sterowania systemu MAC-1060
(LOAD, RUN, CLEAR, DEBUG, SETUP, CONSOLE, AUX1, AUX2, TIME, DATE,RAM,
REV, HELP, QUIT)
8. Przeprowadzić podstawowe testy systemu w oparciu o wybrane funkcje jądra systemu
(autokalibracja przetworników A/C i C/A, kontrola napięć zasilających, test komunikacji)
9. Uruchomić przykładową aplikację programową (program wz.c). W oparciu o ten program
dokonać jego modyfikacji zgodnie ze wskazówkami prowadzącego zajęcia. Program powinien
zawierać:
 część nagłówkową definiującą przy pomocy dyrektyw #define unikalne numery/nazwy
kanałów pomiarowych, oraz specyficzne zmienne dla programu,
 część wykonawczą inicjującą działanie programowanych kanałów pomiarowych
uwzględniająca analizę błędów konfiguracyjnych kanałów pomiarowych (sygnalizacja
błędów oraz awaryjne zatrzymanie systemu),
 część pomiarową wywołującą procesy samo-kalibracji systemu dla co najmniej jednego
kanału pomiarowego,
 część pomiarową, realizującą pomiary w wybranych kanałach pomiarowych w jednostkach
fizycznych mierzonych wielkości,
1
SYSTEMY POMIAROWE WIELKOŚCI FIZYCZNYCH - LABORATORIUM

część pomiarową, realizującą pomiary w wybranych kanałach pomiarowych bez procesu
skalowania (wyniki bitowe),
 część rejestrującą wyniki pomiarów pogrupowane w rekordy danych jednakowego typu w
nieulotnej pamięci RAM systemu,
 część pomiarową rejestrującą czas (interwały czasu),
 zaproponować programowy model wyzwalania pomiaru w równych interwałach czasu przy
wykorzystaniu procedury WAIT lub procedur obsługi zegarów systemowych i obsługi
wewnętrznych przerwań.
 zaproponować moduł programowy analizy danych pomiarowych (wartość minimalna,
maksymalna, średnia, średnia ruchoma z N-wyników pomiarowych, bufor cykliczny danych
pomiarowych).
8. Przeprowadzić kompilację programu poleceniem: docc wz (komunikaty przebiegu procesu
kompilacji na konsoli)
9. Przeprowadzić konsolidację programu poleceniem doram wz 377 (komunikaty przebiegu
procesu konsolidacji na konsoli)
10. Uruchomić program ted i pod jego kontrolą poleceniem LOAD wz.exe przepisać program do
systemu uMAC-1060 (podczas transmisji przełączyć tryb pracy mikrokomputera terminala –
przycisk TURBO w stan Lo).
11. Poleceniem RUN uruchomić załadowany program. Podczas obserwacji wyników działania
programu należy dokonać rejestracji wybranych fragmentów uzyskiwanych danych do pliku
ted.log (ALT-F1).
12. Przeprowadzić w programie konfigurację kanałów analogowych pakietu jednostki centralnej
μMAC-1060: REF_POS, GND_POS, TEMP_POS, IN5B_POS, PWR_POS, DAC0_POS,
DAC1_POS, OUT5B_POS oraz kanałów analogowych znajdujących się na module
rozszerzającym pnl=1 współpracującymi z modułami kondycjonującymi typu 5B: 5B47-J-01 i
5B34-N. Moduł typu 5B47-J-01 współpracuje z termoparą typu J, moduł 5B34_N współpracuje
z rezystorem dekadowym, który symuluje rezystor termometryczny 120 Ω nikiel RTD.
13. W każdym kanale pomiarowym dokonać skalowanego przetwarzania A/C przy pomocy
procedury ain oraz przetwarzania binarnego iain, porównać wyniki przetwarzania A/C tymi
procedurami.
14. Wykorzystać aktywnie w programie funkcję adccal tak, aby przed każdym skalowalnym
pomiarem wartości analogowej realizowana była funkcja samo-kalibracji.
15. Zapoznać się z działaniem bufora cyklicznego. Dokonać modyfikacji współczynników filtru
cyfrowego – zgodnie z poleceniem prowadzącego zajęcia. Dokonać oceny działania filtru na
przykładzie przetwarzania A/C w wybranym kanale pomiarowym (zwrócić uwagę na warunki
początkowe – pierwsze kroki realizacji filtru cyfrowego),
16. Zapoznać się z obsługą przetwornika C/A, podstawowymi parametrami konfigurowania
kanałów przetwarzania C/A (w szczególności parametr slew rate). Zaobserwować działanie
przetwornika C/A dla parametrów:
 period=1, du=1.5, slew=NO_SLEW
 period=1, du=1.5, slew=1.0
 period=1, du=1.5, slew=2.0
17. Źródłową wersję programu zamieścić w sprawozdaniu (wraz z komentarzami) oraz dołączyć
fragment uzyskanych wyników (funkcja log programu ted.exe).
Literatura:
1. Z.Kulka, A.Libura, M.Nadachowski: Przetworniki analogowo-cyfrowe i cyfrowo-analogowe.
WkiŁ, Warszawa 1987
2
SYSTEMY POMIAROWE WIELKOŚCI FIZYCZNYCH - LABORATORIUM
Przykładowy program:
#include <stdio.h>
#include <signal.h>
#include <math.h>
#include <umac1060.h>
#define N 10
#define _C_RTD
#define _C_TPR
#define _C_OUT
/* rozmiar bufora cyklicznego */
5
6
0
char linia[]={"===================================================="};
int ib=0; /* wskaznik zapisu buf. cykl */
float buf_c[N];
float Uz=0.0, du=1.5, slew=1.6;
/* wspolczynniki filtru */
float wsp_a[N]={ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 };
main()
{
char tydz;
int err, mies, dzien, rok, i;
int godz, min, sek;
float period;
char kern[81];
void periodservis();
for (i=0; i<N; i++) buf_c[i]=0.0;
printf("\n%s", linia);
krev(kern);
printf("\nSYSTEM: %s", kern);
gdate(&tydz, &mies, &dzien, &rok);
gtime(&godz, &min, &sek);
printf("\n%c 20%02d:%02d:%02d %02d:%02d:%02d",
tydz, rok, mies, dzien, godz, min, sek);
printf("\n%s", linia);
wait(2);
if (err=intype(_C_RTD,1,2,_5B34_N,_20ms))
printf("\n INTYPE err %d\n",err);
if (err=intype(_C_TPR,0,TEMP_POS,uMAC1060_TEMP_IN,_20ms))
printf("\n INTYPE err %d\n",err);
if (err=outype(_C_OUT,0,0,uMAC1060_10V_OUT, -5.0, slew))
printf("\n OUTYPE err %d\n",err);
/* NO_SLEW = -1.0 */
adccal(OFF,_50HZ);
period=1.0;
setint(SIG_PER0, &period, 3);
signal(SIG_PER0, periodservis);
while (1);
} /*end main*/
void periodservis()
{
int i;
float x, y;
adccal(FORCE, _50HZ);
printf("\n%6.2fs RTD=%6.2f T.pr=%5.1f", timer(), x=ain(_C_RTD), ain(_C_TPR));
buf_c[ib]=x;
/* filtr */
for (i=0, y=0; i<N; i++) y+=buf_c[(ib-i+N)%N]*wsp_a[i];
printf(" y=%6.2f", y);
ib++; ib%=N;
printf(" | Uzad= %6.2f Uwy=%6.2f", Uz, aotr(_C_OUT));
if (fabs(Uz)>=9.0) du=-du;
aot(_C_OUT, Uz+=du);
}
3

Podobne dokumenty