Układ sterowania dla manipulatora badawczego

Transkrypt

Układ sterowania dla manipulatora badawczego
Politechnika Wrocławska
Układ sterowania dla manipulatora
badawczego
Krzysztof Jarzabek
˛
Promotor: dr inż. Marek Wnuk
— Wrocław 1999 —
Spis treści
1
Wst˛ep
1.1 Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Cel pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Opis zawartości pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
6
6
7
2
Manipulator
2.1 Konstrukcja mechaniczna . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Układ elektryczny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
8
9
3
Koncepcja układu sterowania
12
4
Dokumentacja układu sterowania
4.1 System uruchomieniowy z magistrala˛ VME . . . . . . . . . . . . . . . .
4.2 Sterownik VFMC - strona sygnałowa . . . . . . . . . . . . . . . . . . . .
4.2.1 Jednostka centralna . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.2 Interfejs magistrali VME . . . . . . . . . . . . . . . . . . . . . .
4.3 Sterownik VFMC - strona obiektowa . . . . . . . . . . . . . . . . . . . .
4.3.1 Układ przetwornika analogowo-cyfrowego. . . . . . . . . . . . .
4.3.2 Pomiar sygnału napi˛eciowego z pradnicy
˛
tachometrycznej. . . . .
4.3.3 Pomiar sygnału napi˛eciowego pradu
˛ płynacego
˛
w obwodzie silnika.
4.3.4 Układ wzmacniacza z zabezpieczeniem dla sygnału gotowości
sterownika (CONTROL READY). . . . . . . . . . . . . . . . . .
4.3.5 Układ sterowania wzmacniaczem mocy PWM. . . . . . . . . . .
4.3.6 Interfejs kodera. . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.7 Konstrukcja mechaniczna. . . . . . . . . . . . . . . . . . . . . .
4.4 Wzmacniacz mocy PWM . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.1 Wejściowy układ formowania sygnałów PWM i DIR . . . . . . .
4.4.2 Układ wyzwalania mostka H . . . . . . . . . . . . . . . . . . . .
4.4.3 Mostek mocy typu H . . . . . . . . . . . . . . . . . . . . . . . .
4.4.4 Układ pomiaru pradu
˛ . . . . . . . . . . . . . . . . . . . . . . . .
4.4.5 Układ zabezpieczajacy
˛ przed przeciażeniem
˛
wyjścia . . . . . . .
4.4.6 Układ sygnalizacji pracy . . . . . . . . . . . . . . . . . . . . . .
4.4.7 Pomiar temeperatury . . . . . . . . . . . . . . . . . . . . . . . .
4.4.8 Konstrukacja mechaniczna. . . . . . . . . . . . . . . . . . . . .
4.5 Rozdzielacz sygnałów . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6 Zasilacz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6.1 Zasilacze niskonapi˛eciowe. . . . . . . . . . . . . . . . . . . . . .
4.6.2 Zasilacz silników. . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6.3 Konstrukcja mechaniczna. . . . . . . . . . . . . . . . . . . . . .
15
17
17
19
22
24
26
28
28
29
30
31
33
34
36
37
37
38
38
38
39
39
41
44
45
46
47
SPIS TREŚCI
5
3
Oprogramowanie sterownika.
5.1 Oprogramowanie sterownika VFMC . . . . . . . . . . . . . . . . . . . .
5.1.1 Inicjacja jednostki centralnej . . . . . . . . . . . . . . . . . . . .
5.1.2 Inicjacja interfejsu magistrali VME . . . . . . . . . . . . . . . .
5.1.3 Programowanie pamieci FLASH ROM . . . . . . . . . . . . . .
5.1.4 Ładowanie programu do VFMC. . . . . . . . . . . . . . . . . . .
5.2 Oprogramowanie jednostki nadrz˛ednej. . . . . . . . . . . . . . . . . . .
5.2.1 Program do wysyłania S-rekordów (vfmcload) . . . . . . . . . .
5.2.2 Sterownik niskiego poziomu (troper). . . . . . . . . . . . . . . .
5.2.3 Programy pomocnicze. . . . . . . . . . . . . . . . . . . . . . . .
5.3 Metody przygotowywania i uruchamiania programów. . . . . . . . . . .
5.3.1 Transmisja i ładowanie programów do pami˛eci RAM sterownika
VFMC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3.2 Użycie programu bootload do programowania pami˛eci FLASH
ROM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
49
49
51
53
53
56
57
57
58
58
6
Podsumowanie
60
7
Dodatki
7.1 Sterownik VFMC. . . . . .
7.2 Wzmacniacz mocy PWM.
7.3 Rozdzielacz sygnałów. . .
7.4 boot code. . . . . . . . . .
7.5 flash.h. . . . . . . . . . . .
7.6 flash.c. . . . . . . . . . . .
7.7 bootload.c. . . . . . . . .
7.8 buser.c. . . . . . . . . . .
7.9 treset.c. . . . . . . . . . .
7.10 vfmcload.c. . . . . . . . .
7.11 troper.a. . . . . . . . . . .
7.12 troptest.c. . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
58
59
62
63
74
80
86
90
91
95
99
100
101
104
108
Spis rysunków
2.1
2.2
Dwuwahadło. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Schemat połaczeń
˛
elektrycznych manipulatora. . . . . . . . . . . . . . .
8
10
3.1
Ogólny schemat blokowy układu sterowania manipulatorem. . . . . . . .
13
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
Schemat blokowy sterownika manipulatora. . . . . . . . . . .
Schemat blokowy VFMC. . . . . . . . . . . . . . . . . . . .
Schemat blokowy VFMC - strona obiektowa . . . . . . . . .
Płytka sterownika VFMC. Widok z góry. . . . . . . . . . . . .
Schemat blokowy wzmacniacza mocy PWM. . . . . . . . . .
Płytka wzmacniacza mocy PWM. Widok z boku. . . . . . . .
Rozdzielacz sygnałów. Widok z boku. . . . . . . . . . . . . .
Schemat blokowy zasilacza. . . . . . . . . . . . . . . . . . .
Kasetka zasilaczy niskonapi˛eciowych. . . . . . . . . . . . . .
Widok ogólny kaset z zasilaczem i sterwonikiem manipulatora.
.
.
.
.
.
.
.
.
.
.
16
18
25
33
35
40
43
44
46
48
5.1
5.2
5.3
5.4
Pami˛eć sterownika VFMC po resecie. . . . . . . . . . . .
Pami˛eć sterownika VFMC po inicjacji dekoderów adresów.
Przepisywanie programu z FLASH ROM do RAM. . . . .
Zawartość pami˛eci po wykonaniu operacji przepisywania
mi˛eci RAM. . . . . . . . . . . . . . . . . . . . . . . . . .
. .
. .
. .
do
. .
. . .
. . .
. . .
pa. . .
54
54
55
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
64
65
66
67
68
69
70
71
75
76
77
78
81
82
83
84
7.1
7.2
7.3
7.4
7.5
7.6
7.7
7.8
7.9
7.10
7.11
7.12
7.13
7.14
7.15
7.16
.
.
.
.
.
.
.
.
.
.
. . .
. . .
. . .
kodu
. . .
VFMC - strona obiektowa. Schemat. . . . . . . . . . . . . . . .
VFMC - strona sygnałowa. Schemat. . . . . . . . . . . . . . . .
VFMC. Obwód drukowany M1. . . . . . . . . . . . . . . . . .
VFMC. Obwód drukowany M2. . . . . . . . . . . . . . . . . .
VFMC. Obwód drukowany M3. . . . . . . . . . . . . . . . . .
VFMC. Obwód drukowany M4. . . . . . . . . . . . . . . . . .
VFMC. Rozmieszczenie elementów na płytce. Góra. . . . . . .
VFMC. Rozmieszczenie elementów na płytce. Spód. . . . . . .
Wzmacniacz mocy PWM. Schemat. . . . . . . . . . . . . . . .
Wzmacniacz mocy PWM. Obwód drukowany M1. . . . . . . .
Wzmacniacz mocy PWM. Obwód drukowany M2. . . . . . . .
Wzmacniacz mocy PWM. Rozmieszczenie elementów na płytce.
Rozdzielacz sygnałów. Schemat. . . . . . . . . . . . . . . . . .
Rozdzielacz sygnałów. Obwód drukowany M1. . . . . . . . . .
Rozdzielacz sygnałów. Obwód drukowany M2. . . . . . . . . .
Rozdzielacz sygnałów. Rozmieszczenie elementów na płytce. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
56
Spis tablic
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
4.11
4.12
4.13
4.14
4.15
4.16
4.17
4.18
4.19
4.20
4.21
20
21
21
22
22
23
24
27
27
30
31
31
31
32
34
36
37
39
41
41
4.23
4.24
4.25
Sygnały sterujace
˛ blokiem pami˛eci VFMC . . . . . . . . . . . . . . . . .
CON402. Interfejs QSPI. Opis wyprowadzeń . . . . . . . . . . . . . . .
CON403. Interfejs BDM. Opis wyprowadzeń . . . . . . . . . . . . . . .
CON404. Interfejs transmisji pomi˛edzy sterownikami. Opis wyprowadzeń
CON405. Interfejs łacza
˛ RS232. Opis wyprowadzeń . . . . . . . . . . .
CON401.VFMC - magistala VME.Opis wyprowadzeń . . . . . . . . . .
Przełaczanie
˛
magistrali danych TROOPER’a. Opis sygnałów . . . . . . .
Przetwornik A/C. Wykorzystane wejścia . . . . . . . . . . . . . . . . . .
CON303. Wejścia przetwornika A/C. Opis wyprowadzeń. . . . . . . . .
CON301.Interfejs VFMC-Wzmacniacz mocy PWM. Opis wyprowadzeń .
CON302. Łacze
˛ kodera, I/O i tachometru. Opis wyprowadzeń . . . . . .
J301. Konfiguracja kodera. Opis wyprowadzeń . . . . . . . . . . . . . .
J302. Konfiguracja kodera. Opis wyprowadzeń . . . . . . . . . . . . . .
J303. Konfiguracja kodera. Opis wyprowadzeń . . . . . . . . . . . . . .
CON201. Gniazdo dla przewodu VH we wzmacniaczu mocy PWM . . .
CON204. Gniazdo wyjściowo-zasilajace
˛ wzmacniacza mocy PWM . . .
Logiczny układ formowania sygnału PWM i DIR . . . . . . . . . . . . .
CON202, CON203. Łacze
˛ układu pomiaru temperatury . . . . . . . . . .
CON503. Rozdzielacz sygnałów. Łacze
˛ manipulatora. Opis wyprowadzeń.
CON504. Rozdzielacz sygnałów. Łacze
˛ zasilacza. Opis wyprowadzeń. . .
CON501. Rozdzielacz sygnałów. Łacze
˛
sterownika VFMCP . Opis wyprowadzeń. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CON502. Rozdzielacz sygnałów. Łacze
˛
sterownika VFMCQ . Opis wyprowadzeń. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
J501, J502, J503. Rozdzielacz sygnałów. Blokowanie sygnału gotowości.
Łacze
˛ H11 zespołu zasilaczy. Opis wyprowadzeń. . . . . . . . . . . . . .
Łacze
˛ H15 zespołu zasilaczy. Opis wyprowadzeń. . . . . . . . . . . . . .
5.1
Połaczenie
˛
TROOPER II - jednostka centralna sterownika VFMC. . . . .
51
7.1
7.2
7.3
7.4
VFMC-strona sygnałowa. Spis elementów
VFMC-strona obiektowa. Spis elementów
Wzmacniacz mocy PWM. Spis elementów
Rozdzielacz sygnałów. Spis elementów .
72
73
79
85
4.22
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
42
42
43
45
45
Rozdział 1
Wst˛ep
1.1
Wprowadzenie
W trakcie prac badawczych zwiazanych
˛
ze sterowaniem robotami konieczne jest testowanie opracowywanych algorytmów. Zazwyczaj pierwszym etapem testowania jest symulacja komputerowa. Metoda ta, poza niezaprzeczalnymi zaletami, ma poważne wady.
Model symulacyjny nie uwzgl˛ednia wszystkich zjawisk wyst˛epujacych
˛
w rzeczywistym
obiekcie. Istotnym problemem staje si˛e dost˛ep do odpowiednio elastycznego stanowiska
badawczego, które pozwoliłoby implementować nowe algorytmy w warunkach rzeczywistych bez nadmiernego zagł˛ebiania si˛e w szczegóły techniczne. Niestety, dost˛epne
roboty posiadaja˛ zamkni˛ete, trudne do zmodyfikowania układy sterowania, do których
zazwyczaj brak jest odpowiednio dokładnej dokumentacji, aby można było dokonać pożadanych
˛
zmian.
1.2
Cel pracy
Celem pracy jest opracowanie i zrealizowanie sterownika dla manipulatora typu ”podwójne wahadło” nap˛edzanego silnikami pradu
˛ stałego. W zakres pracy wchodzi przygotowanie oprogramowania sterownika umożliwiajacego
˛
implementacj˛e przykładowych
algorytmów sterowania manipulatora.
Sterownik manipulatora powinien pracować w systemie otwartym, czasu rzeczywistego. Poszczególne elementy sterownika powinny stanowić odr˛ebne samodzielne moduły. Cały układ sterownika powinien posiadać mechaniczny standard eurokarty.
Oprogramowanie sterowników VFMC jak i jednostki nadrz˛ednej powinno być tworzone także w j˛ezykach wyższego rz˛edu (nie zagł˛ebiajac
˛ si˛e w szczegóły techniczne)
korzystajac
˛ ze sterowników niskiego poziomu. Tworzenie oprogramowania na niskim
poziomie, wraz z przesyłaniem go do sterownika powinno być elastyczne.
Cały układ sterownika powinien spełniać ogólne przepisy BHP odnośnie, wyłaczni˛
ków awaryjnych (na sterowniku i przy manipulatorze) i uziemienia. Powinien posiadać
także czujniki termiczne na elementach wydzielajacych
˛
ciepło i zabezpieczenia przecia˛
żeniowe.
1.3 Opis zawartości pracy
1.3
7
Opis zawartości pracy
W trakcie prac projektowych i konstrukcyjnych wykorzystano wcześniejsze opracowania
[15], [11]. Praca zawiera opis konstrukcji oraz dokumentacj˛e wykonanego i uruchomionego sterownika. Obejmuje zarówno cz˛eść sprz˛etowa:
˛
dwa sterowniki VFMC,
dwa wzmacniacze mocy PWM,
rozdzielacz sygnałów,
zasilacz,
jak i programowa:
˛
inicjacja sterownika VFMC,
przesyłanie i uruchamianie programów na sterowniku VFMC,
driver w systemie OS-9.
W trakcie tworzenia sterownika konieczne było wykonanie szerokiego zakresu prac o
różnym charakterze:
budowa modelu,
testowanie modelu,
projekt obwodów drukowanych,
montaż prototypów,
uruchomienie i montaż prototypów,
oprogramowanie sterownika VFMC (j˛ezyk C, asembler),
oprogramowanie jednostki nadrz˛ednej (OS-9).
Uzyskany wynik to sterownik dwuwahadła umożliwiajacy
˛ programowanie algorytmów sterowania na różnych poziomach (w tym na najniższym - jednokrokowy algorytm
sterowania silnikiem w VFMC). Ze wzgl˛edu na możliwości systemu nadrz˛ednego i systemu OS-9, praca z manipulatorem możliwa jest także poprzez sieć ethernet.
Rozdział 2
Manipulator
2.1
Konstrukcja mechaniczna
Manipulator mechaniczny typu ”podwójne wahadło” został wykonany w Zakładach Automatyki Przemysłowej w Ostrowie Wielkopolskim na zlecenie Politechniki Wrocławskiej. Jest on umieszczony na podstawie, która nadaje całej konstrukcji odpowiednia˛
stabilność, ustawiajac
˛ jednocześnie przestrzeń robocza˛ w położeniu pionowym [14]. Za
kresy katów
˛
ruchu ramion wynosza˛ 360 i n 360 , odpowiednio dla osi P i Q [16].
Rysunek 2.1: Dwuwahadło.
W manipulatorze możemy wyróżnić nast˛epujace
˛ elementy składowe (rysunek 2.1):
2.2 Układ elektryczny
9
1. kolumna obrotu głównego,
2. nap˛ed ramienia I (oś P),
3. nap˛ed ramienia II (oś Q),
4. rami˛e I,
5. rami˛e II,
6. przekładnia ramienia II,
7. obciażniki,
˛
8. puszka wyprowadzeń elektrycznych.
Silnik osi P jest umocowany na kolumnie obrotu głównego i za pomoca˛ przekładni
harmonicznej o przełożeniu 158:1 nadaje ruch pierwszemu ramieniu (l=557.2mm) z maksymalna˛ pr˛edkościa˛ 31 [s 1 ]. Silnik osi Q jest umieszczony na ramieniu pierwszym i poprzez przekładni˛e planetarna˛ 35:1 porusza ramieniem drugim (l=400mm) manipulatora
z maksymalna˛ pr˛edkościa˛ 23 [s 1 ]. Zastosowanie profili aluminiowych, a także zastosowanie przekładni pasowej umożliwiajacej
˛ umieszczenie obu silników współosiowo powoduje, że cała konstrukcja może być uznawana za sztywna.˛ Obciażniki
˛
zamocowane na
obu ramionach daja˛ możliwość zmiany rozkładu mas, a zatem łatwych zmian parametrów
dynamicznych manipulatora.
2.2
Układ elektryczny
Manipulator jest nap˛edzany za pomoca˛ dwóch silników pradu
˛ stałego PZTK 88-35 TRR.
Podstawowe parametry silnika:
Maksymalne napi˛ecie pracy 35 [V],
Maksymalny prad
˛ w impulsie 18 [A],
Maksymalna pr˛edkość 53 13 [s 1 ].
W osi wału silnika została umieszczona pradnica
˛
tachometryczna PATO 62-07R, oraz
koder impulsowo-przyrostowy incremental encoder MOZ30. Rozdzielczość kodera wynosi 1024 cykle na obrót, co przy wykorzystaniu czterech zboczy sygnałów A i B daje
ziarno odczytu 0.088 stopnia (5’17”). Uwzgl˛edniajac
˛ przełożenia przekładni ziarno odczytu wynosi 2” i 9” odpowiednio dla osi P i Q.
Przewody sterujace
˛ manipulatorem, oraz przewody z czujników sa˛ wyprowadzone do
puszki znajdujacej
˛ si˛e na podstawie robota (rysunek 2.1). Wyprowadzenia te wraz puszka˛
zostały wykonane w ramach pracy.
2.2 Układ elektryczny
10
fhg i jPg kml
n
qYr s
tYu v
wyx8z$‚{}ƒ „†|…‡~ƒ „8€ ˆ$‰†ƒ
¢‡£ ¤†¥§¦Y¨‡¦N© ª8«+¬­®
‡ž Ÿ† ¡
èRé ê
åRæ ç
ëNì
!"#$ %!& '(" ) (*%+&,
ô8õ½ö§÷§ø§ù ú
û8ü½ý§þ§ÿ
í8î½ï§ð§ñò ó
-./012 34/65 780 9 8*3:5<;
^]_P`badc]e
@'ABC+D E
F'GHI+J K
%'&()+* ,
-'./0+1 2
3'45'687 9
:';<'=8> ?
LNMPORQRSUTWVYX[Z]\
=
o
¯}°±"²³ ²´§µ·¶°§¸+¹
º'»½¼ ¾ ¿
À8Á Âà čÅÆ
Ç$È ÉÊ½È É½Ë§Ì[È
ÍyÎ ÏÐ Ñ
Ò8Ó§ÔÕ Ö
E*FHG
PRQ6SUTV
I6JK
LMN6O
× Ø§ÙÚ Û[Ü
‡
Ý$Þßà áâãä
"!$#
Š‡‹ŒNŽ$y
‘†’ “†”•"–‡•N— ˜8™š›'œ
>@?A
B6CD
p
W@XZY\[^]`_bacWed
qor s
tvuxwzy\u {
mon p
fhg`iZjlk
Rysunek 2.2: Schemat połaczeń
˛
elektrycznych manipulatora.
2.2 Układ elektryczny
11
Do puszki manipulatora jest doprowadzona wiazka
˛
trzech kabli:
1. sterowanie silnikami - 4 żyły,
2. pomiarowy - 25 żył,
3. zerujacy
˛ - 1 żyła.
W puszce sygnały rozdzielaja˛ si˛e w kierunku osi P i Q. Przewody wprowadzone do
puszki można łatwo odłaczyć
˛
od robota:
przewód 4 żyłowy jest przykr˛ecany do kostki zaciskowej,
przewód 25 żyłowy jest połaczony
˛
w puszce za pomoca˛ łacza
˛
szufladowego typu
DB25,
przewód 1 żyłowy przykr˛ecany jest poza puszka˛ do podstawy robota.
Okablowanie zostało zaprojektowane i wykonane tak, aby maksymalnie uprościć sposób doprowadzenie sygnałów do elementów sterownika.
Rozdział 3
Koncepcja układu sterowania
Zgodnie z założeniami pracy dotyczacymi
˛
modułowości jak i pracy w czasie rzeczywistym układ sterowania manipulatora oparto o system modułowy z magistrala˛ VME [13].
Jest to jeden ze standardów określajacych
˛
budow˛e komputera modułowego. Sens modularności polega na tym, że w ramach danego standardu komputera modułowego użytkownik ma dost˛ep do wzajemnie zgodnych pod wzgl˛edem mechanicznym, elektrycznym
i funkcjonalnym podzespołów, które może indywidualnie dobierać. Wybór tego typu systemu wiaże
˛ si˛e nast˛epujacymi
˛
korzyściami typowymi dla systemów otwartych:
elastyczność w konfigurowaniu sprz˛etu i oprogramowania,
dynamiczny rozwój dost˛epnych na rynku modułów,
szeroka oferta rynkowa najróżniejszych typów sprz˛etu oraz oprogramowania,
dost˛ep do standardów w dziedzinie oprogramowania takich jak system operacyjny
UNIX, OS-9, rodzina protokołów sieciowych TCP/IP.
VMEbus implementuje architektur˛e komputerowa˛ typu master-slave. Jednostka centralna
pracuje w wielozadaniowym systemie czasu rzeczywistego OS-9, który oparty jest na
koncepcji modułów pami˛eci. Został tak zaprojektowany, by każdy moduł realizował określone funkcje. Modularność ta umożliwia właczanie
˛
lub usuwanie poszczególnych modułów w trakcie konfigurowania OS-9 dla potrzeb konkretnego systemu komputerowego.
W skład cz˛eści sprz˛etowej układu sterowania wchodza:
˛
jednostka centralna VM662 wraz ze sterownikiem dysków CXM-SCSI,
sterownik nap˛edu VFMC (dla każdej z osi),
wzmacniacz mocy PWM (dla każdej z osi),
zasilacz.
Pakiet VM662 zawiera:
jednostk˛e centralna˛ MC68060 @50MHz (3.3V),
sterownik komunikacyjny - MC68EN360 @33MHz,
13
¥
«<¬
ª
‰
`¡
­¯®°
¦
±²¯³´
§¨©
µ›¶·
¥¦
¸¹›º
‡ˆ
¼
½ ¼¾
»¼
†
…
ÅÆ
‘’
ê
à
æèé4
î ðñ ê òóô
ß áâ ãäåçï
àß ïî
ï
à
Û
ëìí
ÜÝÞ
à Û ï
ØÙÚ4Û
|~}v€ƒ‚
„
¢¤£
ê
¿À
Â
à ÂÄ
ÁÂ
Š~‹vŒŽ
Ô ÒÑ
Ô
ÑÓ
Õ×Ö
ÊË
Ç*È^
É Ç ÊÍÌ
ÎÐÏ
“”•zŸ – —<˜™›š›”zŸ – œž›™›š Ÿ
õö÷ù ø ú<ûü›ý›öþ ø ÿ ü›ý Rysunek 3.1: Ogólny schemat blokowy układu sterowania manipulatorem.
pami˛eć - 16MB DRAM (32bit), 1MB FLASH, 1MB DPRAM,
interfejs VME,
sterownik dysków CXM-SCSI,
Sterownik nap˛edu VFMC [15] (VMEbus Free Programmable Motion Controller) zbudowany jest w oparciu o 32-bitowy mikrokontroler MC68332 [4] jako moduł slave i interrupter magistrali VME. Komunikacja z jednostka˛ centralna˛ odbywa si˛e przy pomocy
interfejsu VME (TROOPER II). Sterownik ma możliwość wykonywania pomiaru parametrów takich jak:
położenie ramienia (koder),
pr˛edkość ramienia (koder, pradnica
˛
tachometryczna),
temperatura radiatorów we wzmacniaczu mocy PWM
prad
˛ płynacy
˛ w obwodzie silnika
a także posiada wyjścia sterujace:
˛
wzmacniaczem mocy PWM (PWM-wypełnienie, DIR-kierunek),
sygnałem gotowości Control Ready dla zasilacza.
14
Sterownik nap˛edu osi VFMC jest pomostem łacz
˛ acym
˛
jednostk˛e centralna˛ ze wzmacniaczem mocy PWM. Jednostka nadrz˛edna komunikuje si˛e poprzez magistral˛e VME przy
pomocy 16-sto 16-bitowych dwustronnie dost˛epnych rejestrów (mailbox)wbudowanych
w interfejs TROOPER II.
Wzmacniacz mocy PWM ma za zadanie sterować nap˛edem osi robota, na podstawie
sygnałów PWM i DIR. Posiada wbudowane zabezpieczenie pradowe
˛
oraz czujniki temperatury na obu radiatorach. Sterowanie nap˛edem odbywa si˛e w układzie mostka typu
H, w skład którego wchodza˛ tranzystory mocy typu MOSFET. Załaczaniem
˛
tranzystorów
steruje układ logiki poddajacy
˛ obróbce sygnały sterujace.
˛
Zasilacz dostarcza napi˛ecia obiektowe +5V, +12V, 12V, +24V, oraz napi˛ecie +50V,
które może zostać właczone
˛
dopiero po pojawieniu si˛e sygnału gotowości.
Oprogramowanie sterownika manipulatora można podzielić na dwie cz˛eści:
oprogramowanie sterowników VFMC,
programy sterujace
˛ z magistrali VME.
Oprogramowanie sterowników jest przesyłane w postaci S-rekordów z jednostki nadrz˛ednej poprzez magisral˛e VME do sterowników VFMC. Przesyłanie to umożliwia program bootload, który umieszczony jest w pami˛eci typu FLASH ROM w sterowniku
VFMC. Umieszczenie innego programu startowego w pami˛eci FLASH ROM jest możliwe poprzez interfejs BDM jednostki centralnej sterownika VFMC. Programem wysyłajacym
˛
S-rekordy od strony magistrali VME jest vfmcload. Do wysyłania programów, do
jednostki nadrz˛ednej dla sterownika VFMC można posłużyć si˛e programem kermit.
Programem sterujacym
˛
niskiego poziomu (driver) jest troper. Posiada on funkcje
umożliwiajace
˛ odczyt/zapis danych z/do sterownika VFMC.
W celach testowych zostały napisane programy sterujace
˛ z magistrali VME:
buser - testujacy
˛ obecność sterownika na magistrali adresowej,
treset - resetujacy
˛ sterownik VFMC,
troptest - testujacy
˛ sterownik niskiego poziomu.
Rozdział 4
Dokumentacja układu sterowania
W układzie starowania manipulatora można wyróżnić cz˛eść obiektowa˛ i sygnałowa˛ (rysunek 4.1).Po stronie sygnałowej sterownika znajduje si˛e:
1. system uruchomieniowy z magistrala˛ VME,
2. dwa sterowniki VFMC - strony sygnałowe.
Jednostka nadrz˛edna ze sterownikiem dysku osadzone sa˛ w kasecie 6U magistrali
VME. Całość została wykonana przez firm˛e PEP Modular Computers. Sterownik VFMC
został zaprojektowany, wykonany (wraz z obwodem drukowanym) i przetestowany w
ramach tej pracy na podstawie [15] i [11]. W cz˛eści obiektowej możemy wyróżnić:
1. dwa sterowniki VFMC - strony obiektowe,
2. dwa wzmacniacze mocy PWM,
3. rozdzielacz sygnałów,
4. zasilacz,
Wzmacniacz mocy PWM, rozdzielacz sygnałów oraz zasilacz zastał zaprojektowany,
wykonany (wraz z obwodem drukowanym) i przetestowany w ramach pracy (wzmacniacz mocy PWM na podstawie [11]) Obie cz˛eści posiadaja˛ osobne masy i sa˛ galwanicznie odseparowane od siebie za pomoca˛ transoptorów. Zabezpiecza to całkowicie układ
nadrz˛edny przed skutkami awarii układu wykonawczego.
16
ÌÎÍÐÏÑÌÐҚÓÑÌÎÍ
ÊË
Å
ï
Æ
Ê
ÄÂÃÄ
íîïð
É
ÆÇÈ
ì
ê
ëì
éê
‡
ˆ
¾
‰
ÀÁ
Š
¾¿
¼½
º»
ÔÐÕÐÖ
q
op
v
’“ –— š ž ¡ ¤ § ª ­ ° ³´
‘ ”• ˜™ ›œ Ÿ ¢£ ¥¦ ©¨ «¬ ®¯ ²±
mn
tu
rs
‘“’•” –—‘˜š™œ›žš™
Ÿ‘ “¡Ÿ•¢ £—Ÿ‘¤š¥œ¦ž§š¥
mn qr u yx |  ‚ … ˆ ‹ Ž
kl op st wv z{ ~} € „ƒ †‡ ‰Š Œ
%& )* - 10 4 7 : = @ C FG
#$ '( +, /. 23 65 89 <; >? AB ED
þÿ
ý
%'
$ & ,- 243 9: ?4@ EF K'L Z[ ab i j
"# *+ 01 78 => CD IJ X YW _ `^ ed
! ( ) . / 5 6 ; < A B G H U V \ ] c hg f
ST O'P QR MN ¸¹
JK NO R VU Y \ _ b e h kl
HI LM PQ ST XW Z[ ]^ a` cd fg ji
¸ ¼
à Ê
¶· ¹º» ÌÍ ¾¿ ÀÁ ÅÆ ÇÈÉ
Ë ½ Ä
µ
µ¶·
´
ÓÕÔ Û'Ü áâ ç'è íî ó'ô ùú ÿ ÒÎ ÏÐÑ Ú Ù ßà åæ ëì ñò ÷ø ýþ Ö ×Ø Ý Þ ã ä é ê ï ð õ ö û ü ­³
²
! "
°±
­®¯
Ù
Ü ÚÛ
×Ø
]_b ^`a
~{
€
xy
z{
Z[\

› œžŸ
»¸¼
j k r
l
t s u dfc e ghi mfn opq
v
¿
µ¶
w
}
º
y€
z{|
¾
·¸
EFGI
D KL HJ
wxy
ß ÝÞ
ab hi no tu ˆ‰ Ž ”• šœ› {,| ‚,ƒ
ãä ßà ` ^_ g ef lm rs †‡ Œ ’“ ˜™ y zx €  çæ ë ì
áâ ÝÞ \ ] c d j k p q „ … Š ‹  ‘ – — v w } ~ å êé è
§ ¨ °
©
² ± ³ ¢f¡ £ ¤¥¦ ª¬« ­®¯
v
´
¶½
·¸¹
OPR
Q TWY VUX
SU
NM
˜™š
´µ¶
ƒ„…‡
‚ ‰Š †ˆ
â
PO TSR XWV Y ŽŒ
N Q U ‹ Z[
Ì Ë Í ÓUÔ Î
œ
Ù Ú ðUñ Î
ö ÷ üUý Ä ÆÎ
àvÞ ß á vç å æ è
ÑÒ Ø× îï õô úû
Ï
Ð
Õ
Ö
ì
í
ò
ó
ø ù þ ÿ Û ÜÝ â ãä
À ÁÂÃ Ç ÈÉÊ
Ž
 ’•— ”U–
‘“
Œ‹
¢£ ©ª
ÕÖ ÛÜ ¼,½ Ã,Ä
óô ïð ¡ Ÿ ¨ ¦§ ¯­® ° µœ³´ ¶ ÉÇÈ Ê ÏÍÎ Ð ÓÔ ÙÚ º »¹ Á ÂÀ ÷ö û ü
ñò íî  ž ¤ ¥ « ¬ ± ² Å Æ Ë Ì Ñ Ò × Ø · ¸ ¾ ¿ õ úù ø
#$ 89 >? DE JK *,+ 2,3
!" 67 <= BC HI ( ) 0 1
4 5 : ; @ A F G % '& - /. LM
ãä
åæ
!&
(-
/5
!" ()* '
/01 .
#!%$
,+
7;
çè
<=
:
23%4
789
6
C
>@AB
>?
Rysunek 4.1: Schemat blokowy sterownika manipulatora.
ë
êé
àá
«¬
¨©ª
y †
~ …
|} ~„
y{
yz ‚ƒ
wx €
4.1 System uruchomieniowy z magistrala˛ VME
4.1
17
System uruchomieniowy z magistrala˛ VME
System uruchomieniowy z magistrala˛ VME produkcji PEP Modular Computers został zakupiony ze środków grantu aparaturowego KBN w 1998 roku. W skład systemu wchodzi:
1. system operacyjny OS-9,
2. jednostka nadrz˛edna VM662 wraz z:
pami˛ecia˛ RAM 16MB,
pami˛ecia˛ FLASH 1MB,
karta˛ sieciowa˛ Ethernet 10B2,
3. sterownik dysku CXM-SCSI,
4. dysk twardy,
5. nap˛ed dyskietek 1.4 MB,
6. zasilacz,
7. 15 slotowa magistrala VME ze złaczami
˛
J1,J2,
8. kaseta 6U.
Jednostka nadrz˛edna jest zbudowana w oparciu o procesor MC68060 50MHz, MC68EN360
33MHz. Posiada 256 KB pami˛eci SRAM, 6 portów szeregowych (w tym pi˛eć dost˛epnych
na płycie czołowej jako RS232 (RJ45)), interfejs CXC i oprogramowanie firmowe PEPbug. Sterownik dysku CXM-SCSI, jest kompatybilny ze standardem SCSI1 i SCSI2.
Maksymalna pr˛edkość transmisji dla tego sterownika wynosi 5MB/s zarówno dla transmisji synchronicznej jak i niesynchronicznej.
4.2
Sterownik VFMC - strona sygnałowa
Cz˛eść sygnałowa sterownika VFMC oparta jest na mikrokontrolerze Motoroli MC68332
i interfejsie magistrali VME firmy TUNDRA (TROOPER II). Mikrokontroler wraz z
pami˛eciami RAM i FLASH ROM, zegarem i interfejsem RS232 stanowi samodzielna˛
jednostk˛e obliczeniowo - sterujac
˛ a.˛ W połaczeniu
˛
z interfejsem TROOPER II staje si˛e
całkowicie funkcjonalnym modułem typu slave magistrali VME.
4.2 Sterownik VFMC - strona sygnałowa
18
~
›
œ
™
–—n˜
”•
v
xyz
ª
ghi
jk
ef
b
cd
_`a
]^
[\
YZ
PQR
JKL
STU
P
HI
G
VWX
M
@A
«
89
BF
MO
DE
>?
BC
<=
67
45
:;
MN
°±²
§¨
¾¿nÁ À
¼½
s rt
u
pqnr
‘’n“
­®¯
o
lnm
wq
{|n}
š›

 Ž
n
Ÿ
¤¥¦
‹Œ
žŸ
¢£
¡
Š
…
‚ƒn„
€
‰
†‡ˆ
øùúû ñô
üýþÿ õö÷ ñòó
¹ºn»
¬
©
¶·¸
³´µ
ÎÏ
ËÌnÍ
ÓÔ
ÐÑnÒ
23
+,
ÂÃnÄ
01
)*
-./
'(
&
ÅÆ
!"
%$
#$
)(
'(
%&
ØÙ
ÕÖn×
ò
ðñ
îï
ìí
!
"#$
àâ
ßà á
n
Ê
ù
ÇÈnÉ
÷ø
õö
óô
äæ
ãä å
n
ÝÞ
ÚÛnÜ
þÿ
üý
úû
êë
çèné
Rysunek 4.2: Schemat blokowy VFMC.
*+,
4.2 Sterownik VFMC - strona sygnałowa
4.2.1
19
Jednostka centralna
W skład jednostki centralnej wchodzi:
1. mikrokontroler MC68332 wraz z układem zegara,
2. 2 pami˛eci SRAM 128k 8,
3. pami˛eć FLASH ROM 128k 8,
4. interfejs łacza
˛ transmisji szeregowej RS232 (MAX232ACWE),
5. łacza
˛ QSPI, TPU, SCI i BDM.
Mikrokontroler w obudowie PQFP 132pin wraz z układem zegara jest umieszczony
na górnej warstwie druku (rysunek 7.7). Na sygnałach wejściowych mikrokontrolera:
PF1 . . . PF6,
T ST ME,
HALT ,
BERR,
DSACK0 - DSACK1,
AV EC,
BKPT ,
T2CLK.
wymuszony został stan wysoki poprzez drabink˛e rezystorów 4.7kΩ RP401 i RP402 oraz
rezystor R404 820Ω (RESET ).
Linie danych D0, D3 i D9 podłaczone
˛
sa˛ poprzez rezystory R401..R403 i diody
D401..D403 do sygnału RESET. Powoduje to wymuszenie stanu niskiego na tych liniach
podczas resetu mikrokontrolera (na pozostałych liniach jest wymuszany stan wysoki wewnatrz
˛ mikrokontrolera). Wymuszenie stanu niskiego na liniach powoduje ustwanienie
portów dwufunkcyjnych na:
CSBOOT - 8bit (D0),
ADDR19 (D3),
PORTF (D9).
Do adresownia pami˛eci SRAM wykorzystuje si˛e linie A01-A17. Pierwsza pami˛eć,
U403, podłaczona
˛
jest do górnej cz˛eści magistrali danych (D08-D15), druga zaś U404,
do dolnej (D00-D07). Podłaczenie
˛
to zapewnia dost˛ep do 16 bitowej pami˛eci SRAM w
obszarze 128k 16. Pami˛eć FLASH ROM adresowana jest liniami A00-A16 magistrali
adresowej a jej linie danych przyłaczone
˛
sa˛ do górnej cz˛eści magistrali (D08-D15). Blok
pami˛eci sterowany jest za pomoca˛ 6 linii wyboru (chip select) mikrokontrolera. Sygnały
sterujace
˛ zawarte sa˛ w tabeli 4.1.
4.2 Sterownik VFMC - strona sygnałowa
20
Tablica 4.1: Sygnały sterujace
˛ blokiem pami˛eci VFMC
chip select
CSBOOT
CS0
CS1
CS2
CS2
CS6
CS7
pami˛eć
sygnał
FLASH ROM U405 E
SRAM U403
W
SRAM U404
W
SRAM U403
E1
SRAM U404
E1
FLASH ROM U405 G
FLASH ROM U405 W
Mikrokontroler
Mikrokontroler Motoroli MC68332 [4] wykonany jest w technice HCMOS w obudowie
132 wyprowadzeń. W jego skład wchodza:
˛
jednostka centralna CPU32 - 32 bitowy procesor pracujacy
˛ z zegarem maks. 25MHz,
mikroprogramowalny układ czasowy TPU o 16 kanałach pracujacych
˛
w wielu trybach,
podsystemy do komunikacji szeregowej - synchronicznej (QSPI) i asynchronicznej
(SCI),
2kB pami˛eci statycznej RAM,
programowalny układ dekodera adresów (chip select),
wbudowany emulator BDM (Background Debugging Mode).
Mikroprogramowalny układ czasowy TPU jest wykorzystywany do sterowania wzmacniacza mocy PWM sygnałem PWM (funkcja QOM Queued Output Match). Funkcje TPU
FQD (Fast Quadrature Decode) oraz NITC (New Input Transition Counter) służa˛ w sterowniku do odczytu pozycji z koderów. TPU wykorzystuje si˛e także do komunikacji
pomi˛edzy sterownikami.
Podsystem komunikacji szeregowej synchronicznej QSPI (Queued Serial Peripheral
Interface) wykorzystuje si˛e do odczytu pomiarów z przetwornika A/C. Podsystem SCI
(Serial Communication Interface), jest wyprowadzony poprzez interfejs MAX232 w postaci łacza
˛ pomocniczego.
Pami˛eć SRAM
M628188 firmy SGS Thomson [6] jest asynchroniczna˛ pami˛ecia˛ statyczna RAM 1M bitowa˛ z sygnałem output enable. Została wykonana w obudowie SOJ 400 mils. Cykl
pojedynczego kroku wynosi 20ns, zaś dost˛ep do pami˛eci trwa 15ns. Podczas pracy pami˛eć pobiera 175mA, a w trybie oszcz˛edzania energii (standby) 4mA. Zasilanie układu
wynosi 5V.
4.2 Sterownik VFMC - strona sygnałowa
21
Pami˛eć ta jest wykorzystywana przez sterownik VFMC do przechowywania danych
oraprogramu użytkownika. Ze wzgl˛edu na krótki czas dost˛epu (który jest 5 krotnie krótszy od FLASH ROM), Program umieszczony we FLASH ROM po uruchomieniu przekopiowuje si˛e do pami˛eci SRAM i tam si˛e uruchamia.
Pami˛eć FLASH ROM
29F010 firmy AMD [9] jest 5V 1M bitowa˛ pami˛ecia˛ FLASH ROM o 70ns dost˛epie.
Pobór pradu
˛ przez układ wynosi 30mA podczas odczytu i 50mA podczas cyku zapisu lub
kasowania. W stanie oszcz˛edzania energi pami˛eć pobiera <25µA. Zastosowany układ jest
w obudowie TSOP 32pin typu Reverse. Ilość cyklów kasowania wynosi 100 000. Pami˛eć
FLASH ROM służy do przechowywania kodu programu użytkownika.
Interfejs łacza
˛
szeregowego RS232
MAX232ACWE firmy MAXIM [8] jest dwukanałowym driverem linii RS232 o maksymalne pr˛edkości 200kbps. Zasilany jest napi˛eciem 5V a do pracy układ potrzebuje tylko
czterech zewn˛etrznych kondensatorów. Zastosowany interfejs jest w obudowie 16pin typu
SO. Omawiany interfejs stanowi cz˛eść składowa˛ pomocniczego łacza
˛ SCI.
Tablica 4.2: CON402. Interfejs QSPI. Opis wyprowadzeń
sygnał
GND
PCS0
PCS2
SCK
MOSI
pin
1
3
5
7
9
pin
2
4
6
8
10
sygnał
VCC
PCS1
PCS3
MISO
GND
Tablica 4.3: CON403. Interfejs BDM. Opis wyprowadzeń
sygnał
DS
GND
GND
RESET
VCC
pin
1
3
5
7
9
pin
2
4
6
8
10
sygnał
BERR
BKPT
FREEZE
IFETCH
IPIPE
4.2 Sterownik VFMC - strona sygnałowa
22
Opis łacz
˛
Cz˛eść sygnałowa sterownika posiada wyprowadzone sygnały za pomoca˛ łaczówek
˛
typu
m˛eskiego. Wyprowadzone złacza
˛ to:
CON402 (tabela 4.2)- 5 2 pin - interfejs QSPI
CON403 (tabela 4.3)- 4 2 pin - interfejs BDM
CON404 (tabela 4.4)- 7 2 pin - interfejs do komunikacji pomi˛edzy sterownikami
VFMC
CON405 (tabela 4.5)- 2 5 pin - interfejs łacza
˛ RS232
Tablica 4.4: CON404. Interfejs transmisji pomi˛edzy sterownikami. Opis wyprowadzeń
sygnał
NC
TP5
TP7
TP9
TP11
TP13
VCC
pin
1
3
5
7
9
11
13
pin
2
4
6
8
10
12
14
sygnał
T2CLK
TP6
TP8
TP10
TP12
TP14
GND
Tablica 4.5: CON405. Interfejs łacza
˛ RS232. Opis wyprowadzeń
sygnał
NC
TP5
TP7
TP9
TP11
TP13
VCC
4.2.2
pin
1
3
5
7
9
11
13
pin
2
4
6
8
10
12
14
sygnał
T2CLK
TP6
TP8
TP10
TP12
TP14
GND
Interfejs magistrali VME
Interfejs magistrali VME oparty jest o układ TROOPER II firmy Tundra. Wraz z czterema
8-bitowymi dwukierunkowymi buforami trójstanowymi tworzy układ wymiany danych
pomi˛edzy jednostka˛ centralna˛ (MC68332) a nadrz˛edna˛ (VM662).
4.2 Sterownik VFMC - strona sygnałowa
23
Tablica 4.6: CON401.VFMC - magistala VME.Opis wyprowadzeń
wyprowadzenie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
kolumna a
D00
D01
D02
D03
D04
D05
D06
D07
GND
NC
GND
DS1*
DS0*
WRITE*
GND
DTACK*
GND
AS*
GND
IACK*
IACKIN*
IACKOUT*
AM4
NC
NC
A05
A04
A03
A02
A01
NC
VCC
kolumna b
NC
NC
NC
NC
NC
NC
NC
NC
NC
NC
NC
NC
NC
NC
NC
AM0
AM1
AM2
AM3
GND
NC
NC
GND
IRQ7*
IRQ6*
IRQ5*
IRQ4*
IRQ3*
IRQ2*
IRQ1*
NC
VCC
kolumna c
D08
D09
D10
D11
D12
D13
D14
D15
GND
NC
NC
SYSRESET*
LWORD*
AM5
A23
A22
A21
A20
A19
A18
A17
A16
A15
A14
A13
A12
A11
A10
A09
NC
NC
VCC
TROOPER II jest pojedynczym układem typu slave magistrali VME. Komunikuje si˛e
za pomoca˛ 16 wewn˛etrznych rejestrów mailbox dost˛epnych zarówno od magistrali VME
jak i od strony sterownika. Posiada możliwość generacji przerwań na magistrali VME
na siedmiu poziomach priorytetowych. Układ może być adresowany z magistrali VME
w trybach A32, A24 i A16 i obsługuje dane w trybie D16 i D8. Od strony sterownika
(lokalnej) układ jest kompatybilny z rodzina˛ 68K, oraz zgłasza przerwania na czterech
poziomach. TROOPER II ma wbudowany dekoder adresowy dla magistrali VME, który
umożliwia programowanie (od strony lokalnej) adresu (slave address) i modyfikatorów
(address modifiers).
Magistrala danych TROOPER-a (LD0..LD15) jest podłaczona
˛
pomi˛edzy cztery bufory U406..U409 pozwalajace
˛ na przełaczanie
˛
linii danch. Połaczenie
˛
magistrali danych
4.3 Sterownik VFMC - strona obiektowa
24
.
do jednostki centralnej lub do magistrali VME zależne jest od sygnałów BW R BRD (Data
Buffer Direction Control), LBENB (Local Data Buffer Enable Control) i V BENB (VMEBus Data Buffer Enable Control) (tabela 4.7)
Tablica 4.7: Przełaczanie
˛
magistrali danych TROOPER’a. Opis sygnałów
operacja
TROOPER -> VME
VME -> TROOPER
TROOPER -> MC68332
MC68332 -> TROOPER
.
BW R BRD LBENB V BENB
H
H
L
L
H
L
H
L
H
L
L
H
Sygnały V IRQ1. . . V IRQ7 połaczone
˛
zostały do magistrali VME poprzez inwertery
U410 i U411 do sygnałów IRQ1*. . . IRQ7*. Do sygnału SYSRESET* został podłaczony
˛
rezystor R407 w celu wymuszenia stanu wysokiego, jednakże o rezystancji na tyle dużej,
by pozwolić na reset linii.
Interfejs magistrali VME nie wykorzystuje wszyskich sygnałów dost˛epnych na ła˛
czówce P1. Sygnały doprowadzone do sterownika VFMC poprzez złacze
˛ CON401 znajduja˛ si˛e w tabeli 4.6
4.3
Sterownik VFMC - strona obiektowa
Cz˛eść obiektowa sterownika VFMC ma za zadanie galwaniczne odseparowanie sygnałów
obiektowych z cz˛eści sygnałowej, zebranie pomiarów z obiektu i wzmocnienie sygnału
CONTROL READY (rysunek 7.1). W cz˛eści obiektowej można wyróżnić nast˛epujace
˛
bloki funkcjonalne:
1. Układ przetwornika analogowo - cyfrowego,
2. Prostownik sygnału napi˛eciowego z tachometru,
3. Filtr sygnału napi˛eciowego z pomiaru pradu
˛ pobieranego przez silnik,
4. Układ wzmacniacza z zabezpieczeniem sygnału gotowości sterownika CONTROL
READY,
5. Układ sterowania wzmacniaczem mocy PWM,
6. Interfejs kodera,
7. Wejście sygnału synchronizacji (PF7).
4.3 Sterownik VFMC - strona obiektowa
25
±@²´³
oqpsrft
02143 5 687:9<;81:=
/
¬f­†®Ž¯[°
¨@© ª «
>@?8A B4C
D2E4F GIHKJ
L2M4N OQP8R
SUTWVYX[Z]\ ^
uwvyxhz[{m| }
~m
_a`cb@d2ef`cgheaikjml2n
€‚[ƒ[„†…ˆ‡:‰kƒˆŠ ‹†Œˆ„IŽŒ
‚[‘“’“”
•—–™˜ˆšœ›
‚žcŸ] —¡ ¢
£—¤™¥ˆ¦œ§
Rysunek 4.3: Schemat blokowy VFMC - strona obiektowa
4.3 Sterownik VFMC - strona obiektowa
4.3.1
26
Układ przetwornika analogowo-cyfrowego.
Układ przetwornika analogowo-cyfrowego składa si˛e z:
przetwornika A/C TLC2543,
złacza
˛ dodatkowych wejść pomiarowych,
źródła napi˛ecia odniesienia Ref02,
trzech transoptorów HCPL2631.
Przetwornik AD TLC2543
Zastosowany przetwornik TLC2543 U309 firmy Texas Instruments [5] do pomiaru napi˛eć
pochodzacych
˛
ze wzmacniacza mocy PWM ma nast˛epujace
˛ własności:
rozdzielczość 12 bitów,
czas konwersji 10µs,
11 wejść analogowych,
3 tryby testowe (Ref+, Ref-, (Ref+ - Ref- )/2),
próbkowane wejścia sample-and-hold,
bład
˛ liniowości 1 LSB,
wewn˛etrzny zegar max 4.1 MHz,
wyjście sygnalizacji końca przetwarzania End Of Conversion,
programowalna kolejność bitów MSB lub LSB
programowalna funkcja oszcz˛edzania energi Power Down,
programowalna długość słowa danych
interfejs SPI
obudowa PSOP
Przetwornik jest połaczony
˛
z jednostka˛ centralna˛ za pomoca˛ interfejsu QSPI. Sygnały
DINP (Data Input), I/O Clock oraz CS sa˛ wejściami połaczonymi
˛
odpowiednio do sygnałów MOSI (Master Out Slave In), SCK, PCS0 poprzez transoptory U301, U302 i U303.
W sterowniku przewidziano możliwość pomiaru dodatkowych zew˛etrznych napi˛eć
doprowadzanych przez łacze
˛ CON303 (tabela 4.9)
4.3 Sterownik VFMC - strona obiektowa
27
Tablica 4.8: Przetwornik A/C. Wykorzystane wejścia
sygnał
VI
Vtemp1
Vtemp2
Vtacho
wejście
AIN0
AIN1
AIN2
AIN3
Tablica 4.9: CON303. Wejścia przetwornika A/C. Opis wyprowadzeń.
wyprowadzenie
1
2
3
4
5
6
7
8
9
10
sygnał
+5V
wejście AIN10
wejście AIN9
wejście AIN8
wejście AIN7
wejście AIN6
wejście AIN5
wejście AIN4
REF+
GND obiektowe
Napi˛ecie odniesienia Ref02
Układ Ref02 dostarcza napi˛ecia +5V i GND dla wejść Ref+ i Ref- układu przetwornika
[10]. Ref02 jest zasilany napi˛eciem 12V. Kondensatory C303..C305 stanowia˛ układ filtracji napi˛ecia odniesienia. Podstawowe parametry układu:
napi˛ecie zasilania +8V. . . +40V,
pobór pradu
˛ 1.4mA,
napi˛ecie wyjściowe +5V 15V, 15mV,
zakres temepratur -40 C. . . 85 C.
Transoptor HCPL2631
Układ HCPL261 firmy Texas Instruments jest podwójnym transoptorem o izolacji galwanicznej min 3 kV [2]. Maksymalna pr˛edkość przełaczania
˛
wynosi 75ns. Pozostałe
parametry to:
max napi˛ecie zasilania 7V
max prad
˛ wyściowy 16mA
max prad
˛ wejściowy 15mA
4.3 Sterownik VFMC - strona obiektowa
28
W sterowniku VFMC transoptory typu HCPL 2631 sa˛ zasilone napi˛eciem 5V. Służa˛
one do transmisji danych w standardzie TTL. W celu dopasowania wejść i wyjść transoptora zastosowano rezystory ograniczajace
˛ podłaczone
˛
szeregowo. I tak, dla wejść pod1 µ 6V
łaczano
˛
rezystor 560Ω, który ograniczał prad
˛ diody nadawczej do 5V560Ω
˛
¶ 6mA. Prad
6mA jest wystarczajacy,
˛ by załaczyć
˛
klucz transoptora, a jednocześnie na tyle mały, aby
mogło go wymusić dowolne wyjście TTL lub port wyjściowy MC68332. W szereg z
tranzystorem wyjściowym właczano
˛
rezystor 330Ω, który ograniczał prad
˛ w kolektorze
5V 0 µ 6V
˛ ten jest wystarczajacy
˛ do zapewnienia wystarczajacej
˛
klucza do 330Ω ¶ 13mA. Prad
szybkości narastania zboczy sygnału przy sterowaniu dowolnego wejścia typu TTL, czy
HCMOS.
4.3.2
Pomiar sygnału napi˛eciowego z pradnicy
˛
tachometrycznej.
Sygnał napi˛eciowy z pradnicy
˛
tachometrycznej umieszczonej na osi silnika manipulatora
może wynosić maksymalnie ok 80V. W zależności od kierunku obrotów silnika, napi˛ecie
to może si˛e równać +80V lub -80V.
Pierwszym etapem dostosowania napi˛ecia z tachometru do standardu przetwornika
TLC2543 jest układ dzielnika napi˛ecia z układem całkujacym.
˛
Napi˛ecie z pradnicy
˛
tachometrycznej jest dzielone w dzielniku napi˛ecia R317, R318 i R319 w stosunku 1:16.4
(1kΩ:16.4kΩ). Maksymalne napi˛ecie za dzielnikiem napi˛ecia może wynieść około +4V
lub -4V. Rezystor wejściowy dzielnika został podzielony na dwie cz˛eści po 8.2kΩ tworzac
˛ z kondensatorem 10nF układ całkujacy
˛ o stałej całkowania 4.1kΩ 10 nF = 410µs.
Diody D302 i D303 zabezpieczaja˛ lini˛e przed pojawieniem si˛e wyższego napi˛ecia niż
+12V lub -12V. Tak ograniczony sygnał trafia na układ prostownika. Za prostownikiem
otrzymujemy nieujemne napi˛ecie, które poprzez układ zabezpieczajacy
˛ (0. . . 5V) D304,
D305 trafia do przetwornika A/C do wejścia AIN3.
Prostownik składa si˛e z dwóch wzmacniaczy operacynych pracujacych
˛
w układach
wzmacniaczy z ujemnym sprz˛eżeniem zwrotnym [12].
W przypadku, gdy napi˛ecie z pradnicy
˛
tachometrycznej jest dodatnie, na obu wejściach wzmacniacza operacyjnego U312 pojawia si˛e ten sam potencjał. Ten dodatni potencjał blokuje wyjście wzmacniacza U311. Układ U312 pracuje teraz jako wzmacniacz
10kΩ
sygnału ze sprz˛eżeniem zwrotnym o wzmocnieniu 10kΩ
¶ 1. Natomiast, gdy napi˛ecie z
pradnicy
˛
tachometrycznej jest ujemne układ U311 dzi˛eki ujemnemu sprz˛eżeniu zwrotnemu wymusza prad
˛ płynacy
˛ przez R320. Prad
˛ ten wymusza podniesienie potencjału
wejścia dodatniego układu U312 do poziomu 0V. U312 pracuje wtedy jako wzmacniacz
odwracajacy
˛ o wzmocnieniu -1.
4.3.3
Pomiar sygnału napi˛eciowego pradu
˛ płynacego
˛
w obwodzie silnika.
Prad
˛ jest mierzony metoda˛ pośrednia.˛ Spadek napi˛ecia na rezystorach pomiarowych w
obwodzie silnika we wzmacniaczu mocy PWM jest wzmacniany i filtrowany przez filtr
4.3 Sterownik VFMC - strona obiektowa
29
typu T. Filtr ten złożony z rezystorów R324 i R325 oraz z kondensatora C311 stabilizuje napi˛ecie pomiarowe. Stała czasowa filtru wynosi 1.95kΩ 10µF = 195 ms. Sygnał
jest zabezpieczony przed przepi˛eciem za pomoca˛ diod D306 i D307 i jest połaczony
˛
do
wejścia AIN0 przetwornika A/C.
4.3.4
Układ wzmacniacza z zabezpieczeniem dla sygnału gotowości
sterownika (CONTROL READY).
Sygnał gotowości sterownika CONTROL READY zezwala na załaczenie
˛
napi˛ecia 50V/30A
zasilajacego
˛
mostkek mocy we wzmacniaczu mocy PWM. Sygnał ten jest połaczony
˛
łańcuchowo przez oba sterowniki VFMC oraz przez manipulator. Sterowanie tym sygnałem
polega zatem na zamkni˛eciu łańcucha pradowego,
˛
którego poczatkiem
˛
jest napi˛ecie +24V,
a końcem przekaźnik na napi˛ecie 24V.
Sygnał sterujacy
˛ CONTROL READY (PF0) jest podwójnie odwracany przez inwentery z wejściami Schmitt’a i załacza
˛ poprzez rezystor R313 transoptor U305. Po załacze˛
niu układu, port PF0 jest ustawiony jako wejście. Powoduje to pojawienie si˛e logicznego
zera na wyjściu bramki U308E, a zatem zablokowaniu poprzez bramk˛e U308C i transoptor U305 sygnału CONTROL READY.
Transoptor MCT2E.
Układ MCT2E firmy Texas Instruments jest pojedynczym transoptorem o izolacji galwanicznej min 3.55 kV [2]. Maksymalna pr˛edkość przełaczania
˛
wynosi 5µs. Pozostałe
parametry to:
· maksymalne napi˛ecie U 70V,
CB
· maksymalne napi˛ecie U 30V,
CE
· typowy prad
˛ wyściowy 5mA,
· maksymalny prad
˛ wejściowy 20mA.
W sterowniku VFMC zastosowano jeden transoptor typu MCT2E [2], gdyż sygnał
CONTROL READY wymaga klucza pracujacego
˛
przy napi˛eciu 24V. Nie wymaga natomiast krótkiego czasu przełaczania,
˛
który w przypadku tego transoptora wynosi aż 5
us.
¸ 1 µ 5V
Rezystor R313 powoduje ograniczenie pradu
˛ do 5V300Ω
¶ 12mA. Wyjście transoptora steruje tranzystorem T301 w układzie Darlingtona. Dioda D312 zabezpiecza układ
przed pojawieniem si˛e w łańcuchu sygnałowym napi˛ecia wi˛ekszego niż 30V.
Układ zabezpieczajacy
˛ przed zwarciem linii CONTROL READY do masy składa si˛e
z tranzystora T302 i rezystorów R229 i R230. Zwarcie linii do masy, spowoduje wzrost
napi˛ecia na rezystorze R229 (1Ω), które po przekroczeniu ok 0.6V załaczy
˛
tranzystor
T302. Załaczenie
˛
T302 spowoduje zwarcie bazy tranzystora wyjściowego transoptora
U305 do wymuszonej masy (CR ¸ ) i wyłaczenie
˛
tranzystora sterujacego
˛
T301.
4.3 Sterownik VFMC - strona obiektowa
4.3.5
30
Układ sterowania wzmacniaczem mocy PWM.
Wzmacniacz mocy PWM narzuca na sygnały PWM i DIR standard CMOS +12V. Z tego
powodu do sterowania tymi sygnałami użyto transoptora HCPL2531, którego wyjścia
moga˛ pracować przy napi˛eciu do 15V. Zrezygnowano z transoptora MCT2E ze wzgl˛edu
na dość mała˛ szybkość, a także z konieczności użycia dwóch układów zamiast jednego
podwójnego (w modelu testowano takie wobec chwilowego braku HCPL2531; z powodzeniem przetestowano takie rozwiazanie).
˛
Transoptor HCPL2531
Układ HCPL2531 firmy Texas Instruments jest podwójnym transoptorem o izolacji galwanicznej min 3 kV [2]. Maksymalna pr˛edkość przełaczania
˛
wynosi 800ns. Pozostałe
parametry to:
· max napi˛ecie zasilania 15V,
· max prad
˛ wyściowy 8mA,
· max prad
˛ wejściowy 25mA.
Rezystor R310 powoduje wymuszenie jedynki logicznej, przy braku sygnału TP15,
na wejściu bramki U308B, która blokuje poprzez U308A sygnał PWM (TP15). Sygnał
sterujacy
˛ DIR (PF1) jest zanegowany przez bramk˛e U308D. Rezystory R311 i R312 ogra¸ 1 µ 6V 11mA. Klucze wyjściowe transniczaja˛ prad
˛ diody wejściowej transoptora do 5V300Ω
¶
optora wyprowadzone sa˛ na łaczówk˛
˛
e CON301 (tabela 4.10).
Tablica 4.10: CON301.Interfejs VFMC-Wzmacniacz mocy PWM. Opis wyprowadzeń
sygnał
PWM
DIR0
GND
GND
GND
pin
1
3
5
7
9
pin
2
4
6
8
10
sygnał
GND
GND
VI
Vtemp1
Vtemp2
4.3 Sterownik VFMC - strona obiektowa
4.3.6
31
Interfejs kodera.
Koder przyrostowo-impulsowy (incremental encoder) służy do odczytu położenia osi sil˛ ponika. Wytwarza on dwa sygnały A i B przesuni˛ete w fazie o 14 okresu. Bieżace
łożenie uzyskuje si˛e poprzez zliczanie zboczy tych sygnałów w liczniku rewersyjnym.
Bezwzgl˛edne położenie osi silnika uzyskuje si˛e poprzez wykorzystanie sygnału indeksowego. Na wyjściu C kodera pojawia si˛e jeden impuls na jeden obrót silnika.
Tablica 4.11: CON302. Łacze
˛ kodera, I/O i tachometru. Opis wyprowadzeń
sygnał
CRSynchKodAKodBKodCTachoB
GND
-12Vs
pin
1
3
5
7
9
11
13
15
pin
2
4
6
8
10
12
14
16
sygnał
CR+
Synch+
KodA+
KodB+
KodC+
TachoA
+5V
+12Vs
Wyjścia kodera można skonfigurawać jako różnicowe (wykorzystujac
˛ oba sygnały +
i –) oraz jako pojedyncze pobierajac
˛ sygnał tylko z cz˛eści dodatnich. Sygnał różnicowy
jest bardziej odporny na zakłócenia, jednakże wymaga dodatkowych trzech połaczeń
˛
z
kodera.
Do konfiguracji trybu pracy kodera służa˛ zwory J301, J302 i J303.
Tablica 4.12: J301. Konfiguracja kodera. Opis wyprowadzeń
sygnał
A+
B+
C+
pin
1
2
3
Tablica 4.13: J302. Konfiguracja kodera. Opis wyprowadzeń
sygnał
wejście transoptora A+
wejście transoptora B+
wejście transoptora C+
pin
1
2
3
4.3 Sterownik VFMC - strona obiektowa
32
Tablica 4.14: J303. Konfiguracja kodera. Opis wyprowadzeń
sygnał
+5V
+5V
+5V
pin
1
2
3
Sygnały dodatnie z kodera (A+, B+ i C+) sa˛ doprowadzone na łaczówk˛
˛
e J302. Połaczenie
˛
ich 1:1 z łaczówk
˛
a˛ J301 spowoduje, że na diodach nadawczych transoptorów
U306 i U307, b˛edzie pojawiało si˛e napi˛ecie mierzone w stosunku do katody:
· 1.6V, gdy dioda jest spolaryzowan w kierunku przewodzenia (prad
˛ płynacy
˛ przez
5V ¸ 1 µ 6V
diod˛e wynosi 300Ω ¶ 11mA)
· -5V, gdy dioda jest spolaryzowana w kierunku zaporowym.
Połaczenie
˛
łaczówki
˛
J302 z J303 1:1, spowoduje, że napi˛ecie mierzone w ten sam sposób
b˛edzie wynosiło:
· 1.6V, gdy dioda jest spolaryzowan w kierunku przewodzenia (prad
˛ płynacy
˛ przez
5V ¸ 1 µ 6V
diod˛e wynosi 300Ω ¶ 11mA)
· 0V, gdy dioda jest spolaryzowana w kierunku zaporowym.
Aby wyjście kodera pracowało w trybie różnicowym, należy zewrzeć styki:
· J301.1 z J302.1,
· J301.2 z J302.2,
· J301.3 z J302.3,
gdzie J302.3 oznacza końcówk˛e numer 3 łaczówki
˛
J302.
W przypadku pracy pojedynczej, należy zewrzeć:
· J302.1 z J303.1
· J302.2 z J303.2
· J302.3 z J303.3
W opisywanym sterowniku manipulatora wykorzystano sygnał różnicowy kodera.
Sygnały z kodera sa˛ połaczone poprzez transoptory do wejść TP0, TP1 i TP2 mikrokontrolera MC68332. Rezystory R314, R315 i R316 dopasowuja˛ wyjścia tranoptorów
do wejść TPU (podobnie jak w przypadku łacza
˛
QSPI). W celu zmniejszenia zakłóceń
zastosowano kondensatory blokujace
˛ 10nF na każdym z wejść TP0..TP3.
4.3 Sterownik VFMC - strona obiektowa
4.3.7
33
Konstrukcja mechaniczna.
Płytka drukowana sterownika VFMC została zaprojektowana na czterech warstwach druku
o powierzchni 1.6 dm2 . Warstwy wewn˛etrzne zawieraja˛ powierzchnie VCC i GND z
punktami termicznymi oraz izolacyjnymi (7.3). Płytka drukowana sterownika VFMC ma
wymiary Eurokarty 3U i jest zamontowana w kasetce z płyta˛ czołowa˛ 6U 4TE do gniazda
J1 (Rysunek 4.10). Na czole płyty umieszczone sa˛ łacza
˛
CON301 i CON302 oraz diody
sygnalizacyjne LED. Z tyłu płytki znajduje si˛e łacze
˛
P1 (CON401) do magistrali VME
(Rysunek 4.4).
»
¼
¾
º
¹
½¿
Rysunek 4.4: Płytka sterownika VFMC. Widok z góry.
Opis rysunku płytki drukowanej sterownika VFMC 4.4
1. CON301 - łaczówka
˛
przewodu VH do wzmacniacza mocy PWM,
2. CON302 - łaczówka
˛
przewodu VR do rozdzielacza sygnałów,
3. przetwornik A/C,
4. pami˛eci RAM,
5. CON401 - łaczówka
˛
P1 magistrali VME
6. mikrokontroler M68332,
7. interfejs magistrali VME - TROOPER II.
À
4.4 Wzmacniacz mocy PWM
4.4
34
Wzmacniacz mocy PWM
Wzmacniacz mocy PWM na podstawie wypełnienia sygnału PWM i oraz sygnału kierunku DIR, steruje silnikiem nap˛edu osi. Sygnał wejściowy PWM oraz DIR powinien
być nieujemnym sygnałem o amplitudzie 12V wzgl˛edem masy. Sygnały te, poddawane
sa˛ obróbce cyfrowej i trafiaja˛ do układów wyzwalania tranzystorów mocy w mostku typu
H. Wyjściem wzmacniacza mocy PWM jest sygnał PWM o napi˛eciu 50V i maksymalnym
obciażeniu
˛
30A zależny od wejść PWM i DIR. Wzmacniacz mocy PWM został tak zaprojektowany, by mógł wysterować silnik PZTK 88-35 TRR osi robota. Dodatkowo wzmacniacz został wyposażony w układ pomiaru pradu
˛ płynacego
˛
przez silnik, a także układ zabezpieczajacy
˛ przed przeciażeniem
˛
wyjścia. Na radiatorach z tranzystorami mocy zastały
zamontowane układy pomiaru temperatury. Wejścia, oraz wyjścia pomiarowe połaczone
˛
sa˛ ze sterownikiem VFMC za pomoca˛ przewodu 10-żyłowego VH.
Tablica 4.15: CON201. Gniazdo dla przewodu VH we wzmacniaczu mocy PWM
sygnał
PWM
DIR
GND
GND
GND
pin
1
3
5
7
9
pin
2
4
6
8
10
sygnał
GND
GND
Vi
Vtemp2
Vtemp1
Zasilanie wzmacniacza mocy PWM, oraz sygnały sterujace
˛ silnikiem wyprowadzone
sa˛ na tylnej ściance kasetki poprzez łacze
˛ typu H15.
We wzmacniaczu mocy PWM można wydzielić nast˛epujace
˛ bloki funkcjonalne:
1. Wejściowy układ formowania sygnałów PWM i DIR,
2. Układ wyzwalania mostka H,
3. Mostek mocy typu H (W1. . . W4),
4. Układ pomiaru pradu,
˛
5. Układ zabezpieczajacy
˛ przed przeciażeniem
˛
wyjścia,
6. Układ sygnalizacji pracy (LED),
7. Układ pomiaru temperatury.
4.4 Wzmacniacz mocy PWM
35
!" #!$
A>BCDFE
ÁÃÂÅÄ
<>=?=5@
%&(' )*,+ -.0/1-23)546 )879:4)' ;2
ÆÈÇÊÉ
G>HIHJ
K>LMONP
QRSOT
UË ÌÎÍ ÏÑÐ
҂ÓÕÔQ҂ÖØ× Ö†ÙÑÚ Ö
ikj
oqp
Uë ìÎí îáï
ðäñÕòQð‚óèô óèõÑö ó
ÛUÜÞÝ ßáà
âäãÕåQâ‚æèç æèéáê æ
lnm
UVXW
rts
÷UøÎù úÑû
üäýÕþQü‚ÿ ÿ ÿ
xzy { |~}f
€z ‚ ƒ…„ †
Y>Z[F\]^ _`ba_5c8d e`f_Ogh\
Rysunek 4.5: Schemat blokowy wzmacniacza mocy PWM.
uwv
4.4 Wzmacniacz mocy PWM
36
Tablica 4.16: CON204. Gniazdo wyjściowo-zasilajace
˛ wzmacniacza mocy PWM
sygnał
pin
pin
z4
sygnał
NC
z8
+12Vs
z12
-12Vs
z16
+50V
z20
M1
z24
M2
z28
GND
z32
GND
NC d6
+12V d10
+50V d14
+50V d18
M1 d22
M2 d26
GND d30
4.4.1
Wejściowy układ formowania sygnałów PWM i DIR
Wejściowy układ formowania zapewnia właczenie
˛
układu wyzwalania:
· W2 i W4 - stop
· W1 i W4 - obrót w prawo
· W2 i W3 - obrót w lewo
Posiada również układ zabezpieczajacy
˛ przed skutkami opóźnień przy wyłaczaniu
˛
kluczy w mostku mocy.
Sygnał PWM jest wymuszany poprzez wyjście transoptora U304 (VFMC - strona
obiektowa) połaczone
˛
szeregowo z rezystorem R201 6.8kΩ. W momencie właczenia
˛
klu¸ 0 µ 5V
cza prad
˛ płynacy
˛ przez R201 wynosi 12V6 µ 8kΩ
1
7mA.
Dodatkowo
przez
klucz
płynie
‡
¶
niewielki prad
˛ wymuszajacy
˛ stan 0 na wejściu bramki U202A. Wyłaczenie
˛
klucza powoduje, że poprzez rezystor R201 i R202 wymuszany jest stan wysoki na wejściu bramki
¸ 0 µ 5V 1 ‡ 7mA do masy.
U201A. Powoduje to doprowadzenie poprzez wejście bramki 12V6 µ 9kΩ
¶
Dobór wartości rezystancji rezystora R201 jest optymalny i został potwierdzony pomiarami oscyloskopem sygnału na wejściu U202A.
Sygnałem aktywnym wejścia PWM jest 0 logiczne. Odłaczenie
˛
przewodu łacz
˛ acego
˛
sterownik VFMC i wzmacniacz mocy PWM (rezystor R201 wymusza stan wysoki) spowoduje automatyczne wyłaczenie
˛
silnika (zerowe wypełnienie).
Rezystory wejściowe R205 i R206 dla sygnału DIR zostały dobrane w ten sam sposób.
Układ logiczny ma na celu uaktywnienie odpowiednich układów wyzwalania mostka
na podstawie dwóch sygnałów PWM i DIR.
Zatrzymanie silnika (stop) nast˛epuje poprzez zwarcie wyprowadzeń silnika do masy.
Jest to typowe rozwiazanie
˛
hamowania silnika elektrycznego.
4.4 Wzmacniacz mocy PWM
37
Tablica 4.17: Logiczny układ formowania sygnału PWM i DIR
PWM
1
0
1
0
1
0
1
0
DIR
1
1
0
0
1
1
0
0
U206[7]
1
1
1
1
0
0
0
0
U202C
1
0
1
1
1
1
1
1
UU204A
1
0
1
1
1
1
1
1
U202D
1
1
1
0
1
1
1
1
U205A
1
1
1
0
1
1
1
1
opis
stop
prawo
stop
lewo
stop
stop
stop
stop
Układ złożony z bramek U201B, U201C oraz z kondensatora C201 820pF i rezystora
R204 4.7kΩ stanowi opóźnienie dla sygnału PWM o stałej czasowej 820pF ˆ 4.7kΩ =
3.9µs. Z opóźnienia tego korzystaja˛ bramki U203A i U202B, które powoduja˛ wcześniejsze wyłaczenie
˛
przed właczeniem
˛
w innej konfiguracji kluczy.
4.4.2
Układ wyzwalania mostka H
We wzmacniaczu mocy PWM sa˛ dwa rodzaje wyzwalaczy tranzystorów MOSFET - dla
tranzystorów typu N i typu P.
Układ wyzwalania dla tranzystorów typu N nie potrzebuje specjalnych mechanizmów
wyłaczania
˛
tranzystorów. Składa si˛e on z 6 inwerterów połaczonych
˛
równolegle. Sygnał
sterujacy
˛ z wyjścia inwerterów jest wystarczajacy,
˛ aby właczyć
˛
i wyłaczyć
˛
tranzystory.
Sygnał logiczny 1 pojawiajacy
˛ si˛e na zrównoleglonych wyjściach inwerterów powoduje
właczenie
˛
tranzystorów MOSFET.
Układy wyzwalania tranzystora typu P składaja˛ si˛e z cz˛eści załaczajacej
˛ i wyłacza˛
jacej
˛ tranzystor. Rozważmy układ sterownia tranzystorem T208,T209. W stanie, gdy
na wejściu układu wyzwalania jest stan wysoki, tranzystor T214 jest zamkni˛ety. Dioda
Zenere D202 i rezystor R221 powoduja˛ przewodzenie tranzystora T212, a tym samym
blokad˛e tranzystora mocy. Pojawienie si˛e sygnału niskiego spowoduje włacznie
˛
tranzystora T214. Tranzystor T212 zostanie zatkany, natomiat T213 spowoduje właczenie
˛
sie
tranzystora mocy poprzez zwarcie jego bramki z masa.˛ Wyłaczenie
˛
klucza typu P nast˛epuje po zdj˛eciu sygnału niskiego z wejścia.
Układ wyzwalania tranzystorów T204 i T205 jest identyczny.
4.4.3
Mostek mocy typu H
Stopień końcowy wzmacniacza mocy został wykonany jako wzmacniacz z czterema kluczami. Klucze przełaczaj
˛
a˛ obciażenie
˛
(silnik) pomi˛edzy +50V a masa˛ poprzez rezystor
pomiarowy.
4.4 Wzmacniacz mocy PWM
38
Zastosowane tranzystory maja˛ nast˛epujace
˛ parametry [7]:
· maksymalny prad
˛ przewodzenia ID 30A
· dopuszczalne napi˛ecie pracy U
DSS 60V
· rezystancja wejściowa R
DSON
– typ N 50mΩ
– typ P 80mΩ
Zostały one połaczone
˛
po dwa równolegle w celu zwi˛ekszenie maksymalnego pradu
˛
szczytowego
4.4.4
Układ pomiaru pradu
˛
Pomiar pradu
˛ dokonuje si˛e pośrednio poprzez pomiar napi˛ecia na rezystorach R214. . . R217.
Rezystory te połaczone
˛
równolegle daja˛ wypadkowa˛ rezystancj˛e 0.025 Ω.
Wzmocnienie napi˛ecia z pomiaru dokonuje si˛e w układzie ze wzmacniaczem U208.
Jest to wzmacniacz z ujemnym sprz˛eżeniem zwrotnym o wzmocnieniu 10. Wzmocniony
sygnał jest dostarczany do łacza
˛
CON201, a także do układu zabezpieczaj˛ecego przed
nadmiernym obciażeniem.
˛
4.4.5
Układ zabezpieczajacy
˛ przed przeciażeniem
˛
wyjścia
Sygnał napi˛eciowy po dziesi˛eciokrotnym wzmocnieniu podawany jest na wejście - komapartora U206. Porównywany jest tam z napi˛eciem z dzielnika R228 i R229. Napi˛ecie na
390Ω ‰ 12V
dzielniku wynosi: 390Ω
ecie jest niższe od 4.9V (co odpowiada
Š 560Ω ¶ 4 ‡ 9V . Jeżeli napi˛
pradowi
˛
< 20A) na wyjściu komparatora pojawia si˛e sygnał wysoki, który steruje bramka˛
U202A. W przypadku, gdy prad
˛ przekroczy 20A, napi˛ecie na wejściu komparatora wzrośnie. Spowoduje to wymuszenie logicznego 0 na wejściu bramki U202A. Sygnał ten
spowoduje wyłaczenie
˛
kluczy (tabela 4.17)
4.4.6
Układ sygnalizacji pracy
Układ sygnalizacji pracy silnika zbudowano w celu kontroli sygnału sterujacego
˛
silnikiem
(M Š iM ¸ ). Aby sygnalizacja była widoczna już dla ruchów o niewielkich pr˛edkościach
zastosowano układ pseudo-logarytmiczny. Przy napi˛eciu poniżej 12V prad
˛ diody jest
12V ¸ 1 µ 6V
ograniczony rezystancja˛ 330Ω i 1kΩ 1 µ 33kΩ ¶ 8mA. Gdy napi˛ecie pomi˛edzy M Š i
M ¸ wzrośnie powyżej 12V właczy
˛
si˛e układ stabilizatora opartego na diodach D203 i
D204, oraz rezystorach R223 i R224.Układ stabilizatora utrzymuje stałe napi˛ecie 12V
4.4 Wzmacniacz mocy PWM
39
na diodach (gdy napi˛ecie jest wi˛eksze od 12V).Moc rezystorów została tak dobrana, aby
38V ‰ 38V
spadek napi˛ecia na nich mógł wynosić 38V 330Ω
Š 330Ω ¶ 2 ‡ 2W – czyli każdy po 1.1W).
Układ sygnalizacji jest symetryczny wzgl˛edem obu linii M Š i M ¸ .
4.4.7
Pomiar temeperatury
Pomiar temperatury na radiatorach realizowany jest przez układ LM35 firmy National
Semiconductors [1]. Napi˛ecie wyjściowe układu wzrasta o 10mV na każdy stopień od
poziomu 0 stopni = 0V. Podstawowe parametry układu:
· zakres temepratur -40 ‹ C. . . +110 ‹ C
· napi˛ecie zasilania 4V. . . 20V
· dokładnośc Œ 0 ‡ 4 ‹ C przy 25 ‹ C
Układy pomiarowe połaczone
˛
sa˛ z płyta˛ wzmacniacza mocy PWM za pomoca˛ łacz
˛
CON202 i CON203.
Tablica 4.18: CON202, CON203. Łacze
˛ układu pomiaru temperatury
sygnał
+12V
GND
Utemp
4.4.8
pin
1
2
3
Konstrukacja mechaniczna.
Obwód drukowany na płytce wzmacniacza mocy PWM został zaprojektowany i wykonanany na dwóch warstwach. Wymiary płytki odpowiadaja˛ standardowi Eurokarty 3U.
Na pierwszej warstwie płytki przewidziano miejsce na dwa radiatory dla stopni mocy
mostka. Na czole płyty 3U 12T wyprowadzone zostały dwie diody sygnalizacyjne oraz
łacze
˛
10pin CON201 do sterownika VFMC (rysunek 4.6. Dwie kasetki ze wzmacniaczami mocy PWM sa˛ umieszczone w kasecie z zasilaczem (rysunek 4.10).
4.4 Wzmacniacz mocy PWM
40
Ž



Rysunek 4.6: Płytka wzmacniacza mocy PWM. Widok z boku.
Opis zdj˛ecia 4.6 wzmacniacza mocy PWM.
1. CON204 - łacze
˛ typu H15 z sygnałami do/z manipulatora i zasilacza,
2. rezystory pomiarowe R214. . . R217,
3. tranzystory stopnia końcowego,
4. CON201 - łacze
˛ 10pin do sterownika VFMC.
4.5 Rozdzielacz sygnałów
4.5
41
Rozdzielacz sygnałów
Rodzielacz sygnałów służy do dekompozycji sygnałów z manipulatora oraz zasilacza na
sygnały dla sterownika VFMC. Przewód połaczony
˛
z manipulatorem jest podłaczony
˛
do
gniazda żeńskiego CON503 typu DB25.
Tablica 4.19: CON503. Rozdzielacz sygnałów. Łacze
˛ manipulatora. Opis wyprowadzeń.
sygnał
KodAPŠ
KodBPŠ
KodCPŠ
GND
TachoPA
SynchP¸
+24V
SynchQ¸
TachoQ
B
GND
KodCQ
Š
KodBQ
Š
KodAQ
Š
pin
1
2
3
4
5
6
7
8
9
10
11
12
13
pin
14
15
16
17
18
19
20
21
22
23
24
25
sygnał
KodAP¸
KodBP¸
KodCP¸
TachoPA
SynchPŠ
+5V
Control Ready
SynchQ
Š
TachoQ
A
KodCQ¸
KodBQ¸
KodAQ¸
Przewód ZR łacz
˛ acy
˛ zasilacz z rozdzielaczem jest połaczony
˛
do gniazda m˛eskiego
CON504 typu BD15.
Tablica 4.20: CON504. Rozdzielacz sygnałów. Łacze
˛ zasilacza. Opis wyprowadzeń.
sygnał
CONTROL READY
+24V
+24V
+12V
+5V
+5V
-12Vs
+12Vs
pin
1
2
3
4
5
6
7
8
pin
9
10
11
12
13
14
15
sygnał
GND
GND
GND
GND
GND
GND
GND
Sygnały z tych dwóch łaczy
˛
sa˛ rozprowadzone do gniazd CON501 i CON502 skad
˛
P
Q
przewodami VR i VR przesyłane sa˛ do sterowników VFMC.
4.5 Rozdzielacz sygnałów
42
Tablica 4.21: CON501. Rozdzielacz sygnałów. Łacze
˛ sterownika VFMCP . Opis wyprowadzeń.
sygnał
CRP¸
SynchP¸
KodAP¸
KodBP¸
KodCP¸
TachoPA
GND
-12Vs
pin
1
3
5
7
9
11
13
15
pin
2
4
6
8
10
12
14
16
sygnał
CRPŠ
SynchPŠ
KodAPŠ
KodBPŠ
KodCPŠ
TachoPB
+5V
+12Vs
Tablica 4.22: CON502. Rozdzielacz sygnałów. Łacze
˛ sterownika VFMCQ . Opis wyprowadzeń.
sygnał
Q
CR ¸
SynchQ¸
KodAQ¸
KodBQ¸
KodCQ¸
TachoQ
A
GND
-12Vs
pin
pin sygnał
1
3
5
7
9
11
13
15
2
4
6
8
10
12
14
16
CRQ
Š
SynchQ
Š
Q
KodA Š
KodBQ
Š
Q
KodCŠ
TachoQ
B
+5V
+12Vs
4.5 Rozdzielacz sygnałów
43
Sygnał CONTROL READY jest połaczony
˛
w łańcuch pradowy
˛
z zasilacza, poprzez
sterowniki VFMC, manipulator z powrotem do zasilacza. Łańcuch ten, można zablokować, dla każdego ze sterowników VFMC oraz dla manipulatora odłaczaj
˛
ac
˛ w ten sposób
kontrol˛e nad sygnałem gotowości. Łańcuch pradowy
˛
sygnału gotowości można zablokować poprzez zamkni˛ecie wybranej łaczówki
˛
J501, J502 i J503.
Tablica 4.23: J501, J502, J503. Rozdzielacz sygnałów. Blokowanie sygnału gotowości.
łaczówka
˛
J501
J502
J503
blokada sygnału gotowości dla urzadzenia
˛
manipulator
sterownik VFMCP
sterownik VFMCQ
”
“
’
‘
Rysunek 4.7: Rozdzielacz sygnałów. Widok z boku.
Rozdzielacz sygnałów wykonano na dwuwarstwowej płytce drukowanej o długości
6U. Na czole płyty znajduja˛ si˛e złacza
˛ (rysunek 4.7):
1. CON501 16pin - łacze
˛ do sterownika P VFMC,
2. CON502 16pin - łacze
˛ do sterownika Q VFMC,
3. CON504 DB15F - łacze
˛ do zasilacza.
4. CON503 DB25M - łacze
˛ do manipulatora,
Płytka jest zamontowana na płytce czołowej 6U 4TE (rysunek 4.7).
4.6 Zasilacz
4.6
44
Zasilacz
Zasilacz został wykonany jako zespół zasilajacy
˛ dla sterownika manipulatora. W skład
zespołu zasilajacego
˛
wchodzi:
· układ zasilaczy niskonapi˛eciowych,
– +5V/7A,
– +12V/2.2A,
– +12V/1A,
– +24V/1.2A,
· zasilacz silników z układami:
– stopu awaryjnego,
– gotowości.
•—–—˜5™
©—ª5«3¬®­bª¯
,ž Ÿ¢¡h£1ž ¤
£¥X¦8§h¨
°²±
³z´µ
œ
š
š›
¶¸·O¹º
Ä ÅÆÇÈ5É
ÄËÊÆÌ ÍÎÊ5ÏÄËÐ
¿¸ÀOÁ¢Ã
»b¼½—¾
Rysunek 4.8: Schemat blokowy zasilacza.
4.6 Zasilacz
4.6.1
45
Zasilacze niskonapi˛eciowe.
Układ zasilaczy niskonapi˛eciowych został zmontowany w kasetce 6U z wyprowadzonymi
łaczami
˛
typu H11 i typu H15 (rysunek 4.9). Napi˛ecia wyjściowe sa˛ sygnalizowane poprzez diody LED na panelu zasilacza.
Wyjścia zasilaczy, a także zasilania zostały wyprowadzone na łaczówki
˛
typu H15 i
H11 na tylnej ściance kasetki.
Tablica 4.24: Łacze
˛ H11 zespołu zasilaczy. Opis wyprowadzeń.
sygnał
+5V
+5V
GND
GND
NC
+12V
GND
+12V
220V
0
ziemia
pin
1
2
3
4
5
6
7
8
9
10
11
Tablica 4.25: Łacze
˛ H15 zespołu zasilaczy. Opis wyprowadzeń.
sygnał
pin
GND
d6
+24V
d10
pin
z4
sygnał
+12V
z8
GND
z12 NC
NC d14
z16 NC
NC d18
z20 NC
NC d22
z24 NC
NC d26
z28 220V
0
d30
z32 ziemia
4.6 Zasilacz
46
Do budowy układu zostały użyte fabryczne zasilacze (rysunek 4.9):
1. NT85 ( Π12V/1A, 5V/7A) firmy Intron.
2. USPS 25 (24V/1.2A) firmy Elplast,
3. USPS 25 (12V/2.2A)firmy Elplast,
Ñ
Ò
Ó
Rysunek 4.9: Kasetka zasilaczy niskonapi˛eciowych.
4.6.2
Zasilacz silników.
Zasilacz silników zasilany jest z sieci trójfazowej 3 Ô 380V. Obudowa zasilacza jest uziemiona do przewodu uziemiajacego
˛
sieci. W zasilaczu silników możemy wyróżnić dwa
moduły:
Õ
Õ
zasilacz główny 50V/30A,
układ sterujacy
˛ sygnałem gotowości (CONTROL READY).
Napi˛ecie z sieci 380V jest obniżane do wartości 34V dla każdej fazy na transformatorze 1.6 kVA. Nast˛epnie zamieniany jest na napi˛ecie stałe poprzez prostownik trójfazowy
złożony z diod D101. . . D103. Poddawany jest filtarcji przez kondensatory o pojemności
14.1 mF i jest wyprowadzony dla urzadzeń
˛
zewn˛etrznych.
4.6 Zasilacz
47
Układ gotowości składa si˛e z układu załaczania
˛
napi˛ecia dla silników, oraz z włacz˛
nika zasilania i stopu awaryjnego. Zasilanie +50V/30A dla silników zostanie właczone
˛
dopiero po pojawieniu si˛e sygnału gotowości (CONTROL READY) ze sterowników oraz
z manipulatora. Stan ten jest sygnalizowany kontrolka˛ w przycisku właczenia
˛
gotowości.
Właczenie
˛
przycisku stop awaryjny powoduje przerwanie łańcucha pradowego
˛
sygnału
gotowości i wyłaczenie
˛
napi˛ecia 50V. Ponowne właczenie
˛
jest możliwe po wyciśni˛eciu
przycisku i ponownym właczeniu
˛
gotowości. Napi˛ecie wyjściowe jest zabezpieczone
bezpiecznikiem 63A, oraz po stronie pierwotnej transformatora 3 ˆ 4A (zwłoczne).
4.6.3
Konstrukcja mechaniczna.
Zasilacz silników jest zmontowany w kasecie znajdujacej
˛ si˛e nad kaseta˛ ze sterownikiem.
W kasecie tej znajduje si˛e także kastetka ze wzmacniaczami mocy PWM, oraz ze zasilaczami niskonapi˛eciowymi (rysunek 4.10):
1. przycisk gotowości zasilacza,
2. przycisk stopu awaryjnego,
3. kontrolka napi˛ecia +50V za kondensatorami filtrujacymi,
˛
4. wyłacznik
˛
główny zasilaczy,
5. przewód ZR do rozdzielacza sygnałów,
6. kontrolka napi˛ecia dla silników,
7. bezpiecznik dla napi˛ecia silników,
8. +50V
9. GND,
10. kontrolka +5V,
11. kontrolka +12V,
12. kontrolka -12V,
13. przewód VHQ,
14. kontrolka +24V,
15. kontrolka +12V,
16. przewód VHP,
17. przewód sieci ethernet,
18. przewód RM,
19. przewód VRQ,
20. przewód VRP.
4.6 Zasilacz
48
Ö
ßwà
×
Ø
áwá
Ù
æ>ç
è>é
âwã
êìë
Ý
Ú
Û
Þ
äzå
Ü
íìî
ówô
ïwð
ñ1ò
Rysunek 4.10: Widok ogólny kaset z zasilaczem i sterwonikiem manipulatora.
Rozdział 5
Oprogramowanie sterownika.
Tworzenie oprogramowania (zgodnie z założeniami) powinno być jak najprostsze. W tym
celu przygotowano oprogramowanie dla sterowników VFMC jak i dla jednostki nadrz˛ednej pracujacej
˛ w systemie OS-9.
5.1
Oprogramowanie sterownika VFMC
Jednostk˛e centralna˛ sterownika VFMC stanowi mikrokontroler z procesorem CPU32.
Oprogramowanie dla tej jednostki może być napisane w j˛ezyku C lub w j˛ezyku niższego
poziomu - asemblerze. Do kompilacji programów dla CPU32 służa˛ kompilatory skrośne
dla środowiska DOS lub Windows. Możliwe jest również wykorzystanie kompilatora C
w systemie OS-9.
5.1.1
Inicjacja jednostki centralnej
Inicjacja jednostki centralnej polega na skonfigurowaniu dekoderów adresu dla dwóch
pami˛eci RAM i jednej pami˛eci FLASH ROM.
Ustawienie dekodera adresu CS0 dla sygnału W RIT E pami˛eci RAM U403:
· CSBAR0 = 0000000000000 101 (adres 000000, 256k)
· CSOR0 = 0 10 10 1 0000 11 000 0 (asynchroniczny, górny bajt danych, zapis, DS,
0 ws, przestrzeń adresowa S/U, wszystkie poziomy przerwania,autowektor wyła˛
czony)
5.1 Oprogramowanie sterownika VFMC
50
Ustawienie dekodera adresu CS1 dla sygnału W RIT E pami˛eci RAM U404:
· CSBAR1 = 000000000000 101 (adres 000000, 256k)
· CSOR1 = 0 10 10 0 1100 11 000 0 (asynchroniczny, dolny bajt danych, zapis, DS,
0 ws, przestrzeń adresowa S/U, wszystkie poziomy przerwania,autowektor wyła˛
czony)
Ustawienie dekodera adresu CS2 dla sygnału ENABLE obu pami˛eci RAM:
· CSBAR2 = 0000000000000 101 (adres 000000, 256k)
· CSOR2 = 0 11 11 0 0000 11 000 0 (asynchroniczny, słowo danych, zapis/odczyt,
AS, 0 ws, przestrzeń adresowa S/U, wszystkie poziomy przerwania,autowektor wyłaczony)
˛
Ustawienie dekodera adresu CSBOOT dla sygnału ENABLE FLASH ROM:
· CSBOOT = 0000010000000 100 (adres 040000, 128k)
· CSORBT = 0 10 11 0 0010 11 000 0 (asynchroniczny, górny bajt, zapis/odczyt,AS,
2 ws, przestrzeń adresowa S/U, wszystkie poziomy przerwania,autowektor wyła˛
czony)
Ustawienie dekodera adresu CS6 dla sygnału G FLASH ROM:
· CSBAR6 = 0000010000000 100 (adres 040000, 128k)
· CSOR6 = 0 10 01 0001 01 100 00 (asynchroniczny, górny bajt, odczyt,AS, 2 ws,
przestrzeń adresowa S/U, wszystkie poziomy przerwania,autowektor wyłaczony)
˛
Ustawienie dekodera adresu CS7 dla sygnału W RIT E FLASH ROM:
· CSBAR7 = 0000010000000 100 (adres 040000, 128k)
· CSOR7 = 0 10 10 0001 01 100 00 (asynchroniczny, górny bajt, odczyt,AS, 2 ws,
przestrzeń adresowa S/U, wszystkie poziomy przerwania,autowektor wyłaczony)
˛
Po wykonaniu powyższych instrukcji pami˛eć RAM 128k ˆ 16bit jest dost˛epna od adresu 0x000000, natomiast pami˛eć FLASH ROM 128k ˆ 8bit od adresu 0x040000 rysunek
5.4.
5.1 Oprogramowanie sterownika VFMC
5.1.2
51
Inicjacja interfejsu magistrali VME
Inicjacja interfejsu magistrali VME TROOPER II składa si˛e z dwóch etapów. W pierwszym etapie jednostka VFMC inicjuje dekoder adresu, aby TROOPER II był dost˛epny
na lokalnej magistrali adresowej. Odblokowuje także linie przerwań i inicjuje dekodery
adresów do generacji autowektorów. Drugi etap, to inicjacja wewn˛etrznych rejestrów interfejsu VME. Po wykonaniu tych czynności 16 dwudost˛epnych rejestrów mailbox może
służyć do przekazywania danych pomi˛edzy jednostka˛ nadrz˛edna˛ a centralna˛ sterownika
VFMC.
Interfejs magistrali VME jest połaczony
˛
lokalnie (od strony jednostki centralnej sterownika VFMC) za pomoca˛ linii:
Tablica 5.1: Połaczenie
˛
TROOPER II - jednostka centralna sterownika VFMC.
TROOPER II
LA1. . . LA5
LCE
LIRQ0 ‡‡—‡ LIRQ2
LDTACK
LRESET
LLDS õ LU DS
LR ö W
LAS
CLOCK
Jednostka centralna
A01. . . A05
CS8
IRQ0 ‡—‡—‡ IRQ2
DSACK
RESET
DS
Rö W
AS
CLKOUT
opis
linie magistrali adresowej
chip select 8
linie przerwań
sygnał potwierdzenia odebrania danych
reset jednostki centralnej
sygnał prawidłowych danych
sygnał odczytu/zapisu danych
sygnał prawidłowego adresu
zegar zewn˛etrzny
Ustawienie dekodera adresu CS8 dla układu TROOPER II:
· CSPAR1 = 00 00 00 00 00 11 00 00 (16 bitowy port)
· CSBAR8 = 1110000000000 000 (adres poczatku
˛ rejestrów = 0xe00000)
· CSOR8 = 0 11 11 1 1111 11 100 0 (asynchroniczny,16 bitowy, zapis/odczyt, DS,
DSACK zewn˛etrzny, przestrzeń adresowa użytkownika i nadzorcy, wszystkie poziomy przerwań, autowektor wyłaczony)
˛
Ustawienie PF2, PF3, PF4 jako linii przerwań IRQ2 õ IRQ3 õ IRQ4:
· PORTF1 |= 7 ÷ø÷ 2;
Do generacji autowektorów dla przerwań IRQ2 õ IRQ3 õ IRQ4 zostały wykorzystane odpowiednio dekodery adresu numer 9, 5, 4. Ustawienie dekodera adresu CS9 do generacji
autowektora dla IRQ2:
5.1 Oprogramowanie sterownika VFMC
52
· CSBAR9 = 1111111111111 000 (generacja autowektora)
· CSOR9 = 0 11 11 0 0000 00 010 1 (asynchroniczny,16 bitowy, zapis/odczyt, AS, o
ws, przestrzeń adresowa CPU, 2 poziom przerwania, generacja autowektora)
Ustawienie dekodera adresu CS5 do generacji autowektora dla IRQ3:
· CSBAR5 = 1111111111111 000 (generacja autowektora)
· CSOR5 = 0 11 11 0 0000 00 011 1 (asynchroniczny,16 bitowy, zapis/odczyt, AS, 0
ws, przestrzeń adresowa CPU, 3 poziom przerwania, generacja autowektora)
Ustawienie dekodera adresu CS4 do generacji autowektora dla IRQ4:
· CSBAR4 = 1111111111111 000 (generacja autowektora)
· CSOR4 = 0 11 11 0 0000 00 100 1 (asynchroniczny,16 bitowy, zapis/odczyt, AS, 0
ws, przestrzeń adresowa CPU, 4 poziom przerwania, generacja autowektora)
Wykonanie powyższych instrukcji spowoduje, że pod adresem 0xC00000 na magistrali jednostki centralnej znajdzie si˛e pierwszy rejestr układu TROOPER II. Można teraz
ustawić rejestry konfiguracyjne interfejsu magistrali VME.
Kofiguracja interfejsu TROOPER II dotyczy zezwolenia na przerwania od rejestrów
mailbox, rozdzielenia sygnalizacji tych przerwań na liniach lokalnych przerwań, ustawienia dekodera adresu modułu slave.
· MODE = 1000 0000 (wybór wyjścia dwufunkcyjnego na AU X ADD
· MBIEP0 = 0000 0001 (właczenie
˛
przerwania od rejestru mailbox 0)
· MBIEP1 = 0000 0000 (wyłaczenie
˛
przerwań od pozostałych rejestrów mailbox
· MBIP0 = 0000 0000 (uaktywnienie linii LIRQ0 poprzez przerwanie od rejestrów
mailbox)
· SADDMD = 1001 0100 (tryb A24, właczenie
˛
AM, dane, S/U)
· SADDC1 = 1100 0000
· SADDC2 = 0000 0000 (adres = 0x87C00000)
· VIRPL = 0000 0000 (wyłaczone
˛
przerwania od strony VME)
Po wykonaniu tego fragmentu programu interfejs magistrali VME jest skonfigurowany prawidłowo, jest zatem dost˛epny od strony VME jak i VFMC.
5.1 Oprogramowanie sterownika VFMC
5.1.3
53
Programowanie pamieci FLASH ROM
Do programowania pami˛eci FLASH ROM służy funkcja FlashProg(int). Aby przepisać zawartość pami˛eci RAM od adresu 030000 do 050000 FLASH ROM należy użyć
funkcji FlashProg z parametrem równym 1.
Funkcja FlashProg korzysta z nast˛epujacych
˛
funkcji pomocniczych:
· FlReset - sprowadzenie FLASH ROM do stanu poczatkowego,
˛
· FlPollData - testowanie zaprogramowania komórki FLASH ROM,
· FlUnlock - odblokowanie możliwości zapisu do FLASH ROM,
· FlAuto - odczyt parametrów FLASH ROM w trybie autoselect,
· FlChipErase - kasowanie FLASH ROM,
· FlSectErase - kasowanie sektora FLASH ROM,
· FlProgram - programowanie 1 bajtu we FLASH ROM.
Znajduja˛ si˛e one w pliku flash.h oraz flash.c.
5.1.4
Ładowanie programu do VFMC.
Program bootload (7.7) służy do uruchamiania aplikacji na sterowniku VFMC. Aplikacja,
która ma zostać uruchomiona przesyłana jest z jednostki nadrz˛ednej poprzez magistral˛e
VME w postaci S-rekordów.
Program bootload składa si˛e z dwóch cz˛eści. Pierwsza z nich (segment boot_code)
napisana w asemblerze, inicjuje pami˛eci sterownika VFMC, przepisuje kod głównego
programu do pami˛eci RAM i tam go uruchamia. Druga cz˛eść programu inicjuje interfejs
magistrali VME i oczekuje na odpowiedź programu wysyłajacego
˛
aplikacj˛e pracujacego
˛
w systemie OS-9. Jeżeli odpowiedź programu wysyłajacego
˛
jest prawidłowa, nast˛epuje
przesłanie kodu aplikacji do sterownika VFMC i uruchomienie od adresu podanego w
S-rekordach..
Podłaczenie
˛
pami˛eci FLASH ROM do dekodera adresu CSBOOT powoduje, że po resecie jednostki centralnej (dzi˛eki wymuszeniu stanu niskiego na linii D00 podczas resetu)
pami˛eć FLASH ROM jest widoczna w pierwszym 1M ˆ 8bit obszarze pami˛eci (rysunek
5.1). W przestrzeni adresowej 000000. . . 0FFFFF znajduje si˛e 7 kopii 128k ˆ 8bit-owej
pami˛eci FLASH ROM. Wektor startu PC ustwiony został na adres 040008, czyli na start
programu z drugiej kopii.
Segment boot_code inicjuje wskaźnik stosu oraz dekodery adresu CS0, CS1 i CS2
(RAM), oraz przeprogramowuje CSBOOT ustawiajac
˛ także sygnały CS6 i CS7 (jak opisano poprzednio). Po wykonaniu tych operacji obszary pami˛eci zajmowane przez RAM i
FLASH ROM sa˛ jednoznacznie określone (rysunek 5.2).
5.1 Oprogramowanie sterownika VFMC
54
ù3ú¢ú¢ú¢ú¢ú
'
û3üýûìûìûìû
&
þÿ þwþìþìþ
%
$
#
"
!
Rysunek 5.1: Pami˛eć sterownika VFMC po resecie.
()((((
897:3:3:3:
* +****
,
4576363636
-.---01,2323232
;7<>=@?ABCED
FHGJI
//////
Rysunek 5.2: Pami˛eć sterownika VFMC po inicjacji dekoderów adresów.
5.1 Oprogramowanie sterownika VFMC
55
Poczawszy
˛
od adresu 050000 powinien znajdować si˛e program użytkownika. Jeżeli
program użytkownika został wcześniej zaprogramowany do pami˛eci FLASH ROM, zostanie on przepisany do pami˛eci RAM od adresu 030000. Wektor startu zostanie ustawiony na 0x030000 i program rozpocznie prac˛e w pami˛eci RAM. Przepisywanie programu z pami˛eci FLASH ROM do pami˛eci RAM pozwala na znacznie szybsze działanie
aplikacji z dwóch powodów:
· RAM ma krótszy czas dost˛epu niż FLASH ROM (20ns a nie 70ns),
· RAM jest dost˛epny w trybie 16-bitowym, a FLASH ROM w 8-bitowym.
Sposób przepisywania bloków pami˛eci został przedstawiony na rysunku 5.3
KMLNKNKNKMK
ONPNOMONONO
SQ RTQNQNQNQ
UNVNUMUNUNU
WYXMWMWNWNW
Z,[\ZNZNZMZ
~€
^_a`NbT_acTdfehghihjlkm`SnpoNq kmc
‚
rstsuwvyxzs|{t}
ƒ„
†‡
…
]N]M]N]N]N]
Rysunek 5.3: Przepisywanie programu z FLASH ROM do RAM.
Na rysunku 5.4 pakazana jest zawartość obu pami˛eci po wykonaniu operacji kopiowania programu do pami˛eci RAM.
segment boot_code (7.4) jest uniwersalny i może pracować z każdym innym programem użytkownika, który został odpowiednio skompilowany.
Protokół transmisji przesyłania kodów programów.
Kod programu jest przesyłany z jednostki nadrz˛ednej do sterownika poprzez dwudowst˛epny rejestr MBOX0. Po otrzymaniu S-rekordów program zostaje automatycznie uruchomiony na sterowniku.
5.2 Oprogramowanie jednostki nadrz˛ednej.
ˆ‰ˆˆˆˆ
Š‹ŠŠŠŠ
ŒŒŒŒŒ
ŽŽŽŽŽ
‘
·¸¹
56
¿pÀÂÁÚÀÂÄšÅžÆ ÇTÈ ÉwÊMÁËyÌÍ ÊNÄ
º» ¼
½¾
¨ª©«©­¬¯®±°²©´³¶µ
•z–˜—™š–˜›šœž ŸT¡T¢¤£N—,¥y¦§ £M›
ΪϫϭЯѱҲϴӶÔ
’“M’’’’
””””””
äæåèçå
Þàß3áãâ
Õ×֚ØSÙÂښÛÝÜ
Rysunek 5.4: Zawartość pami˛eci po wykonaniu operacji przepisywania kodu do pami˛eci
RAM.
Protokół transmisji (rejestr MBOX0):
Sterownik VFMC
0x5555
0x0000
...
0x0000
start przesłanego programu.
5.2
Jednostka nadrz˛edna VME
0xaaaa
start S-rekord
ostatni bajt S-rekordu
Oprogramowanie jednostki nadrz˛ednej.
W skład oprogramowania jednostki nadrz˛ednej wchodzi:
é
vfmcload - program do przesyłania S-rekordów (pracuje z programem bootload),
é
troper - sterownik niskiego poziomu (driver) dla OS-9,
é
treset, buser, troptest - programy pomocnicze.
5.2 Oprogramowanie jednostki nadrz˛ednej.
5.2.1
57
Program do wysyłania S-rekordów (vfmcload)
Program vfmcload (7.10) wysyła kod programu w postaci S-rekordów do sterownika
VFMC. Parametrami wejściowymi programu sa:
˛
é
- powoduje ładowanie kodu z wejścia standardowego stdin,
é
plik.s19 powoduje przesłanie pliku plik.s19,
é
brak powoduje przesłanie pliku default.s19.
Program po uruchomieniu czeka, aż TROOPER II b˛edzie zainicjowany od strony magistrali VME. Nast˛epnie używajac
˛ protokołu transmisji opisanego wcześniej, wysyła Srekordy do sterownika VFMC.
5.2.2
Sterownik niskiego poziomu (troper).
Sterownik niskiego poziomu troper (7.11) posiada standardowy dla systemu OS-9 format
modułu pami˛eci [3]. Funkcje dost˛epne w sterowniku to:
é
Init - funkcja inicjujaca
˛ urzadzenie,
˛
é
Read - funkcja odczytu z urzadzenia,
˛
é
Write - funkcja zapisu do urzadzenia,
˛
é
GetStat - funkcja odczytu parametrów z urzadzenia,
˛
é
SetStat - funkcja zapisu parametrów do urzadzenia,
˛
é
TrmNat - funkcja zamykajaca
˛ urzadzenie,
˛
é
Trap - funkcja nie używana.
Do operacji zapisu i odczytu z rejestrów mailbox TROOPER-a II , służy funkcja
SetStat sterownika niskiego poziomu.
Rodzaj operacji i liczba odczytanych/zapisanych rejestrów sa˛ wybierane poprzez słowo
sterujace:
˛
wr----bbbbeeee
gdzie pole wr oznacza:
é
wr=10 - zapis,
é
wr=01 - odczyt,
natomiast na polach bbbbeeee jest kodowany zakres rejestrów poddawanych danej operacji. Na polu bbbb jest wpisywany numer pierszego rejestru, na eeee ostatniego, z zakresu
który nas interesuje.
Zawartości rejestrów, które zamierzamy przesłać lub odebrać sa˛ wskazywane przez
wskaźnik Buf. W programie 7.11 znajduje si˛e przykład użycia sterownika niskiego poziomu.
5.3 Metody przygotowywania i uruchamiania programów.
5.2.3
58
Programy pomocnicze.
buser
Program buser (7.8) służy do sprawdzania, czy TROOPER II jest dost˛epny na magistrali
VME.
treset
Program treset (7.9) powoduje reset interfejsu magistrali VME poprzez ustawienie bitu w
rejestrze TROOPER II dost˛epnym od strony VME.
Po uruchomieniu program czeka, aż TROOPER II b˛edzie dost˛epny na magistrali
VME. Nast˛epnie wpisuje kod resetu do rejestru TROOPER II.
troptest
Program troptest (7.11) testuje sterownik niskiego poziomu. Praca programu polega na
cyklicznym odczycie i wyświetlaniu na ekran zawartościrejestrów MBOX0 – MBOX5.
Program używa funkcji SetStat sterownika niskiego poziomu do odczytu rejestrów TROOPERa II.
5.3
Metody przygotowywania i uruchamiania programów.
Program dla jednostki centralnej VFMC jest przesyłany z jednostki nadrz˛ednej (VM662/OS9)
poprzez rejestry dwudost˛epne mailbox. Jeżeli program dla jednostki VFMC został przygotowany poza systemem jednostki nadrz˛ednej (Dos/Windows), musi zostać przesłany
do VM662 np. przy pomocy protokołu kermit. Przesłany program jest umieszczany w
pami˛eci RAM jednostki centralnej VFMC i może zostać zaprogramowany do pami˛eci
FLASH ROM.
5.3.1
Transmisja i ładowanie programów do pami˛eci RAM sterownika VFMC.
Transmisja i ładowanie programów do pami˛eci RAM pakietu VFMC sa˛ możliwe za pośrednictwem łacza
˛ szeregowego przy pomocy protokołu kermit. W tym celu na komputerze przyłaczonym
˛
do portu szeregowego /term jednostki centralnej sterownika (VM662)
należy uruchomić emulator terminala wyposażony w protokół kermit do transmisji plików (np. PROCOMM) skonfigurowany do transmisji w trybie 9600 8N1. Po właczeniu
˛
si˛e do systemu OS–9 (login) należy:
5.3 Metody przygotowywania i uruchamiania programów.
59
1. uruchomić program kermit w trybie odbioru plików:
kermit -b 9600 -l /term -r;
2. wysłać plik z emulatora terminala (w PROCOMM-ie: PgUp 2);
3. zrestartować VFMC komenda treset;
4. załadować i uruchomić program komenda˛ vfmcload [nazwa_pliku].
Powyższe operacje można połaczyć
˛
w jednej linii komendy złożonej:
treset; kermit -b 9600 -l /term -k|vfmcload -.
W tym przypadku kermit wysyła odbierany plik na wyjście standardowe, a vfmcload
ładuje i uruchamia program odbierany w postaci S-rekordów z wejścia standardowego.
Dla unikni˛ecia wypisywania komunikatów diagnostycznych warto dodatkowo skierować
je na urzadzenie
˛
puste treset êëêªê /nil i vfmcload êªêëê /nil.
5.3.2
Użycie programu bootload do programowania pami˛eci FLASH
ROM.
Oprogramowanie dla sterownika VFMC jest przesyłane poprzez magistral˛e VME z jednostki nadrz˛ednej. Program bootload, który to umożliwia, musi być wcześniej zaprogramowany do pami˛eci FLASH ROM poprzez interfejs BDM.
Program bootload powinien być skompilowany od adresu 0x030000, natomiast segment boot_code od adresu 0x0200000. Po przesłaniu programu bootload i segmentu
boot_code umieszczone zostana˛ pod tymi właśnie adresami. Jest to istotne, ponieważ
funkcja programujaca
˛ pami˛eć przekopiowuje obszar 0x020000. . . 0x03FFFF do obszaru
0x040000. . . 0x05FFFF.
Aby uruchomić funkcj˛e programowania należy ustawić pułapk˛e (break point) w linii
sprawdzania zmiennej wejściowej flag w kodzie programu bootload. Nast˛epnie należy
skasować pułapk˛e, zmienić wartość zmiennej flag na wartość 1 i kontunuować prac˛e.
Takie rozwiazanie
˛
nadaje uniwersalność programowi bootload. Jeżeli zostanie on
uruchomiony, to przekopiuje si˛e do pami˛eci RAM i tam wykona. Jeżeli natomiast zostanie
uruchomiony przy pomocy BDM i zostanie ustawiona z zewnatrz
˛ wartość zmiennej flag
na 1, rozpocznie si˛e proces programowania pami˛eci FLASH ROM.
Rozdział 6
Podsumowanie
Wynikiem pracy jest kompletny sterownik dwuwahadła umożliwiajacy
˛ implementacj˛e
przykładowych algorytmów sterowania [11]. Został on zaprojektoawny, zrealizowany
w postaci sprz˛etowej i oprogramowany, a praca zawiera jego pełna˛ dokumentacj˛e.
Sterownik pracuje w systemie otwartym czasu rzeczywistego OS-9 na magistrali VME.
Sterowniki nap˛edu osi robota VFMC, wzmacniacze mocy PWM, rozdzielacz sygnałów,
zasilacz oraz okablowanie manipulatora, zostały zaprojektowane wraz z obwodami drukowanymi, wykonane i uruchomione w ramach pracy.
Sterownik posiada konstrukcj˛e modułowa,
˛ zamkni˛eta˛ w dwóch kasetach 6U (zasilacza i jednostki nadrz˛ednej). Standard eurokarty, według którego wykonano cz˛eść mechaniczna˛ zapewnia zwartość i stabilność konstrukcji sterownika. Obwód zabezpieczenia
obejmujacy
˛ wyprowadzony w łatwo dost˛epnym miejscu na zewnatrz
˛ kasety zasilacza stop
awaryjny, sterowniki nap˛edu osi VFMC i manipulator daje możliwość natychmiastowego
wyłaczenia
˛
zasilania silników robota. Sprawia to, że sterownik jest bezpieczny w użyciu
i nadaje si˛e do prac projektowo-badawczych w laboratorium.
Tworzenie oprogramowania dla sterownika manipulatora (zarówno dla VFMC jak i
jednostki nadrz˛ednej) jest możliwe zarówno na wysokim jak i na niskim poziomie.
Oprogramowanie VFMC może być tworzone na jednostce nadrz˛ednej sterownika
(VM662/OS-9) przy użyciu kompilatora C (lub w j˛ezyku niskiego poziomu - asemblerze).
Istnieje także możliwość napisania i skompilowania programu w środowisku Dos/Windows.
Przesłanie programu do jednostki nadrz˛ednej jest możliwe za pomoca˛ terminala poprzez
łacze
˛
RS232 używajac
˛ protokołu transmisji kermit. Przesłanie oprogramowania z jednostki nadrz˛ednej poprzez magistral˛e VME do sterowników nap˛edu osi realizowane jest
przez programy vfmcload (na jednostce nadrz˛ednej) i bootload (na sterowniku VFMC).
Program bootload umożliwia ponadto zaprogramowanie przesłanego kodu do pami˛eci
FLASH ROM sterownika osi VFMC.
Do komunikacji ze sterownikami VFMC z poziomu aplikacji systemu OS-9 służy sterownik niskiego poziomu (device driver) - troper. Każdy ze sterowników osi jest dost˛eny
jako urzadzenie
˛
wejścia/wyjścia. Umożliwia to zapis i odczyt danych z dwudost˛epnych
rejestrów przy pomocy standardowych funkcji systemowych.
Konstrukcja i oprogramowanie sterowników umożliwia odczyt danych pomiarowych
z obiektu (położenie, pr˛edkość, prad
˛ pobierany przez silnik) oraz zadawanie pr˛edkości i
kierunku obrotów w postaci PWM. Użytkownik może wykorzystać te dane do sterowania
manipulatorem przy pomocy samodzielnie zaimplementowanego algorytmu.
Uniwersalność wykonanych modułów sprawia, że sterownik można przystosować do
innych typów manipulatorów o podobnych nap˛edach. W przypadku wi˛ekszej liczby
stopni swobody wystarczy dołożyć do kasety VME układu sterowania dodatkowe mo-
61
duły sterowników VFMC i wzmacniacze mocy PWM.
Modułowa konstrukcja sterownika umożliwia rozbudow˛e systemu sterowania o dodatkowe podsystemy sensoryczne (system wizyjny, czujniki siły i przyśpieszeń).
Sterownik jest wyposażony w interfejs sieciowy TCP/IP. Jednostka nadrz˛edna jest
dost˛epna w lokalnej sieci laboratorium. Umożliwia to zaimplementoawnie sieciowego
serwera manipulatora i komunikacj˛e z innymi robotami oraz komputerami w labolatorium.
Rozdział 7
Dodatki
7.1 Sterownik VFMC.
7.1
Sterownik VFMC.
63
7.1 Sterownik VFMC.
64
÷
ó
ìòî íó
ìóî íó
íî÷ òìôõ
ìí #
ñ
ìî" ìòï
ìí #
î í
íì #
ñ
íì #
ð #
ìí"î
ñ
(ì
îóö ì ìîö ì
òöî þ í îö þ í R íì
íì
ì ì #
ð îö íì
í
òì
îî
ó
î î
ò
î ï í ì
î ï í ì
íð%
íî
$
ö
ý
ý
í÷îì
ö
&'
ö
ö
ö
:
÷
ö
ï"î
:
íì #
JI
KI
G HC
ð
íñî òíî óíî î
î î
î
íó%
î ð ö
Jì ì ì
ý
DE
ìí
; BC
FL JL KL
L ->L
H G HC G HC G HC
î ï í ì
ìî î í ïì
ôó ï'ò
"î
ö
ì
îì ï ìï
ï
ó"î ìòï'
óõ"î ï'ò
î
ìí
ìî ïò
O
ò - >HN
ìðø *+
)
ò
ìðø
ö
ñ ð ï
îìíð
ý
:
íîì î
ö ó ò ñ ð ÷/
öö íî ñ
ð
ìî î
:
K.
F
DE
; BC
ð # íì #
G HC
í H ï ñ ó ì íì ïì ñì
FI
G HC
-I >
ö ì î ð ò
ò
îíø îöõ
ð ñ ò ó
îìíñ
îî ñð
ý
=>
$
ï
ö îî"
&'
ñ
;<
I
K.
,-.
)
îìíñ
ö íî"
&'
î ðñ
PQ
ý *+
ý
íAî ì í î îö
ìîø îñöõ î î í ì
î
-
ö ì î ð ò
íîî ìñ
ì í ï î
ð ñ ò ó
îìíñ
îð î
ï
)
?
=>
;<
í ï ñ ó ì
ìî
M [
î
îîA ì í î ö
ð #
-
îì
ð ñ ò ó
ì"î
ì
@
ïîí î þ
ð #
îî
îñ î
ð #
ôôö
ý
ìAî ì í î îö
ðîí î ì (ñì
öî # ì
ý
÷î õô
òî÷ ìòôõ
ì
ö ì í î ï ð ñ ò ó ì ö
ð #
í
ñî÷ ìòôõ
ð #
îî
ý
ü ìô ûùóöú ü ò
óí ö
ûùøú ü ùý üþÿ ôî ÷ú þü
ùû ü
ò
ì÷î ìôõ
ò
ì ì
ð # ÷î õô
ð÷î òìõô
ïî ô
ð # ÷ õ
M
ìò
÷î ôõò
ó ì
íì ì ó ò ñ ð ï î í ì
ì ó ò ñ ð ï î í ì M ø ö ô ô ô ô ô ô ô ô ô ô ô î
ï
î" ö "÷ ÷ (ö' öM ý ý ý ý ý ý ý ý öý ý ÷/ý íðö'ø
ðì ñì òì ý óì ì
í ì ý ñ
íîö (ì
# ì
îìö þ íì î
íì í
î ì
BH
KL
+
ST
A
ù ü ù þ / ó
ú ü :
ÿ õ ú ü ÷ OVEU
!
ñ
E
ìí î í ìïò
ñì
#
ï
WX <
(
#
îì" í î ï
: ÷
ø
Mø /:
"
ø
ý
ý
ñ îï (ìñ ð
ö # ì
îöî þ í ì
ïì
ð
BZ
Y OE
íî ì íìî ì
îì÷ ôõ
!
ì îî÷ òìôõ
õ
ûù ú \
ñöî
ìî ì
ìò
ò
ô
ö
ó ìï
ó÷"î ï'ò
ì
,-.
ì
ö
&'
ì í ï î
ð"î
ì í î
îìî î ñ
öö
ïì
öîó
òï'
" ð
ì
ïì
Mó
"î
òï'
ì
íMöø
îìíñ
ñ"î
:
öö
ö&'
ö ó ò ñ ð ÷/ îîìö ì ö ó ò ñ ð ÷/
ïìîö ñìî î ÷ ì ÷ý
íöîì ý /
/
ì ý
îìð î
ý
ïîì î
7 89
56
34
îìíñ
ò"î
ö
&'
0
K.
î
ì í ï î
1
ìø íø
ìø íø
õ
Rysunek 7.1: VFMC - strona obiektowa. Schemat.
2
í
ø
ì
ø
ô
7.1 Sterownik VFMC.
]
†i
^
†i
65
†i
h
g
]
š
nh …ge
– i
a] hb]
e e
^
] h
n`
d
`
_
h
h
h
h
h
ec
`
_
h
h
eb
ea
^
]
h
c
h
e`
e_
h
nh
b
a
h
e^
]
g„ e
ed
b
a
h
h
–
c
h
–
d
c
h]
`]
_]
h
h
h
h
h
c b a ` _ ^ ] 
h h h h h h h h
]d ]c ]b ]a ]` ]_ ]^ ]]
]d ]c ]b ]a ]` ]_ ]^ ]]
 c
]
]^ w g`
g
–
x—
š
a] ]` ]_ ]^ ]] ] d
hi hi hi hi hi hi ~hi hi
]~
]^ w g`
‘
]~ ]hs
Žfs
hc bh ah
a i i i
^`
b ^ _ ` a b c d ~ ~] ] e’x d ^ _ `
`•
c` •`
e ]e ^e _e `e ae be ce ‘ sh
e ]e
f‘ ƒf
’
gg
^ _ `
 ] s” ”s ”s a b
† †    † †
_
^
]
‡
gg
a] 
g` ^] w

]`` ^ w
g ]
_] 
g` ]^ w
^] 
g` ^] w
]]` ^ w
g ]

]
g` ]^ w
~` ^ w
g ]
d 
`g ]^ w
c 
g` ^] w
b 
g` ]^ w
a 
g` ^] w
` 
g` ]^ w
_ 
g` ^] w
^ 
`g ]^ w
] 
g` h ]^ w
n
–
‡
^
_
^
^
]
]
’
`s ]
’
_h
`s ]
h
s` ]
h~
`
g„
’
~ d c b a ` _ ^
 ]
‘ˆxi e’i ss eg…x eg…x g †i g’…
i “ f‘ h h e‡‘ f… ^i
œ]
]
gg
gg
‡
‡
c]
``g
f
_~`
†e‡
`h
e
g
c] i
†e‡ x
f ‘s‘
‡
a]
hi
f‘ ƒf
’

c
a
†i
†i
b
`
‡ ‡
b] b^
] ]
^~g ~^f
š^
e~ s”
x‘
hi
’
c
xh
g…e
s‘
x‘
i
†i
d
~
_
]
hn
a
c
~
†i
†~i
†i
c
a
†i
ss
‘
i
†f…
f‘
^
a] `] _] ^] ]] ] ~ b a ` _ ^_
]
a b c d ~ ] ]] ^]
] ^
†i †i
†i †i †i †i †i †i †i †i
a
c
–
gg ]
‡ gx
x‘
_x
`
b
x„ˆ
_
]
hn
hx
–
†
†i
g
†
^
^
a˜
g„
g„
n¬«
a
c
g
g…x
_
]
^x
gx
†
]
–
n`
–
] ^
s” s”
 
cc bc ac
] ^s” _s”
†  
hn
]
d
†
_ `
s” s”
 
`c
`
s”

a b
s” s”
 
_c ^c
a b
† †
c
s”

]c
c
†
†
c
~
x
~ d c
`e ae be
’ ’ ’
]^ ]] ]
]e ^e _e
’ ’ ’
ˆ
„
]
g…e …ge
x x
g“i ‘ ˆ‘
‘s xi
‘ ‘ i
aa ad ac
…g’ xh
x Ž
Žhi †‘†
†f… 
x] •i xg
Žh Ž i
g“i Ž”„ ˆ‘
‘ xi
‘ s‘‘ i
e‡‘
d~ dd d] d db dc
g… ]…g x ]x gˆ g
s e‡‘
ex ex
h h
i
ss ’ei x‘
f‘ “ s‘
cs b~i dbi
s e’ x‘
‘f “ s‘ `
h h
s ™ i™
_a ^a
a`
˜hs h˜i
`s d^
~
gg
xx
gg
g…x
‡
x x
xg… ˆ„ ˆ„
_` `` b`
x„ˆ xˆ gx
„ †
x
g…x x„ˆ ˆ
„
x
Žxx ]x
g g
† †
c`
]x
g
†
_^ ]^ ^~
]] ^] _]
e e e
’ ’ ’
‡
­
q mr
n op
nh
]b
gg
`g
›
a` 
`g ^] w
xf„„g xg ]xg
^] _] `]
] ] ]
b‡
Ž]
] o

`_` ^ w
g ]
`
``g
` ^d _
]_e ]`e ]ae
’ ’ ’
^
ƒ ‘ ‘ – bˆ
~^ ^^ _ ^` nh
x]g x^g g
–
g
‡
’ ’
–
d
]^d
xx xx xx
‡ ‡ ‡
` ]a a~
_
g`
^^ 
œ“d y
cb^
_
]
˜`
b
œ
s`
^^
hn

^d` ^ w
g ]
–
n —f g e’ ’e
hx—h xi ˜ ˜i ˜i
‡ ‡ ‘
xx
‡
cb _d
xx xx xx
‡ ‡ ‡
a ]
~ ]
xx
‡
b c]
] ]
b
] a 
`^g ] w
gg
‡
†
e
^
c^ 
g` ] w
b 
`^g ] w
xx xx ^__
‡ ‡ ˆg
]
`
c^
]
nh ’
–
gx
_
Š
a ˆ
`s ]
b] ]~ b` b^ b
i x ]x ^x _x `x ax •i g…
g g g g g g
f„ Žs Ž Ž Žg Ž]g Ž^g h
gx„ f f– g…e    g’…„ ˆ„
f–
Rysunek 7.2: VFMC - strona sygnałowa. Schemat.
–
^^ 
^
ƒ ‘ ‘ – bˆ
~^ ^^ _ ^` hn
^
–
gx gx gg
‡

†

] ^
f
hn
nh
]be c]e
xx xx xx
‡ ‡ ‡
^~ `_
`
‡
^~
„…g’
†
a] d] ]~ ^ b d
] ] ] ] b c
xx xx
‡ ‡
^ d c]
›
gg
g`
_] ^
x^g
d
]^d
] ^
•i
a
b‡
Ž]
] o
b`
‡
^b ^_ a^
]e ]]e ]^e
’ ’ ’
hn
–
xx
‡
b
‡
s|
]

‘ – ƒ ^~
_ ] ^b
i
f„„x xb xc
g g g
]^  –
`g ^] w
_^
_
jx my e h k m{z jl  m{
gg
^d]
^d ^^ _^
`] a] b]
e e e
’ ’ ’
i
x^g _xg
† †
d` ~`
^x _x
g g
† †
gg
`]
g
‡
‡
b a c^
ce de e~
’ ’ ’
i
†f… ‘†
†
ab a`
g
h h
ex xh Žƒs
‡ ^a
_ e ]e ^e _e `e ae be ce de e ]e ]]e ^]e _]e `]e a]e b]e
~
•`
–
xe xh Žƒs
d^ da c~
gg
^b ^_ a^ ` d^ _ ]_ ^
] ^ _ ` a b c
e] e] e] e] ]e e] ]e ]e
’ ’ ’ ’ ’ ’ ’ ’
hn
gg
– ^ 
‡ _^ ]b
`g ^] w
^
`
b
c
_
a
g
]
g xx
h” h” ”h h” ”h h” ”h h”
‡ ‡
‡
†
xx xx xx
‡ ‡ ‡
bc cc b` ab
c b a c^
eb ec ed e~
’ ’ ’ ’
]_h ]`h ]ah
’ ’ ’
]~ ^ ^]
]^ ]] ] ~ d
e] e^ e_ `e ae
’ ’ ’ ’ ’
dh h~ ]h ]]h ]^h
’ ’ ’ ’ ’
]_ ]` ]a ]c ]d
gg
s‘
g
^
g„
i
‡
` e e] e^ e_ e` ea eb ec ed e e] ]e] ]^e e]_ e]` e]a e]b
~
`•
˜^a
~
nh
hh hh hh
‡ ‡ ‡
` _a d~
]~ ^ _ ]_ ^
eb ec ed ~e e]
’ ’ ’ ’ ’
ha hb hc g
’ ’ ’] g
]~ ^ ^ ‡
b] c] d]
e_ e` ea
’ ’ ’
h^ h_ h`
’a ’c ’d
] ] ]
__
š
šc g…e
s” hi

^ ` b d ] ^]
gg
`]
`~s
__
^ ` b g
ˆ ] ]— — _— — a— — ‡hn ˆ
c `] e] ^e _e `e ae eb c
– c`
c` •
lm
hn ] _ a ~ ]] ]_ c hn j ik
–
–
c c] c_ b^
a b
† †
d_ 
` a b c g…
`g ]^ w
s” s” ”s s” ei
c_ 
‡ ‡ ‡ ‡ h
`g ^] w
‡
b 
`_g ]^ w
s
a_ 
g` ]^ w
xx xx xx xx xx g… †‘

‡ ‡ ‡ ‡ ‡ g’„ „s„i
_`` ^ w
g ]
_ ]` ]a ^c `]

i•
__` ^ w
g ]
nh
…„g’
^_ 
`g ^] w
–
hn
^^` ^ w

g ]
_]` ^ w
–
g ]
] ^ _
s” s” ”s
‡ ‡ ‡

] ^ _ ` a b c
h” h” ”h h” h” h” h” h”
†‘†

]
‘
d
b
n¬«
g„
nh
]a
‡
n`
•i •i ^g › ^g |
]„i ^„i
ªb]
]_ _ ^~
_]] `]] a]]
†i †i †i
gg
_
Ÿ ž gƒ‘©e ¢ ¡
^_
n n ›
^
]i ^i g] g] | e˜ˆ
_
]
]
`]` 
g w
]
_] `] a]
e e] e^
’ ’ ’
h h]
’_ ’`
] ]
g„
]_
g“i
‘s‘
`
ˆ
db
d
`s
–
ša šb
s” s”
 
] ^]
ac a~ b b~
š šn š i
g…e  •
 eg… …„g
 e
ši
x‘
s‘x
x—
_
s”
nh
a e e] e^ e_ e` ea eb ec ed e~ e] ]e] ^e] _e] `e] ae] be]
•`
˜^c
†i
š
š n
g…e g…e
 
d` dc
‡
] ^ _ ` a b g
— — — — — — h‡n
`]• e] ^e _e `e ae be –
] _ a ~ ]] ]_ c
ši
•
g…„e

b_
h” ]h” ^h” _h” `h” ah” bh” ch”
]`
]]
]_
]]
ši
x‘
sx‘
x—
dd
Ž’h
he
˜• hh hh
e ‡ ‡
`^ ~ ^ d^
s”

g
_] `] a] g
h h h ‡
’ ’ ’
b a `
Žƒs ex
] ^
hd h~ ]h ]h ]h
’^ ’] ’ ’ ’
] ] ] d c
–
†i
]^
]
‡
š] š^ š_ š`
s” s” ”s s”
   
^ ` b d
^
s”
Ž’
g’…
’x„
s
’
gg
`
‡
Ž’g
Žƒs
œc
ši
x‘
sx‘
x—
gg
ex
da
h
s`
‡a ›
šx š š] šh š
e hx hx s ‘i
s
’ƒ„ ƒ
’ ’
] ]a
~x
hn
]`
†i
c
hg
…®
x– d
ˆƒ
€ f {Œ
v

x k mm h z‹wru
j }‰u Š
€ p‰
‚g t
ˆ

‚‡e
ge
s
‚†
s…
~~ ‚ƒ„d
]~ | ~ k c
e o} lj‚g mw
^d | g {
jj vwu
s mt
gg
`^ 
`g ^] w
_ 
`^g ]^ w
‡
šh š
s
šx šx šx] ‘si
e h h ’ƒ„ ƒ
_` d_ _~ c^ ``
hx xh•
’
s‘
’
]
]b
gg
a‡ ›
]^‡ |
g f—h
š] h xi gh
”s de s” ^‡] › ‡a › ‡a ›
 
_g _f _]g _]f _^g _^f
š]
s”

~e
i
g…e
‡
gh
š^
n¬«
g„ g„
c ` a
g’…^  ] ^ _ ` a b c d ~ ] ]] ^] _] `] a]
i †i †i †i †i †i †i †i †i †i †i †i †i †i †i †i †i
d^ b]
]
…g’ †i
^i
e
]^
]
˜^a `
n¬« `n

] w
^
`
~ ]
•i •i
s]„ ^„s
¨¨£
§¡
£¦
§
¤£
¥
n n
]^` s] s^
•
_] d ]]

] w gg
 ‡
] w nh ˜h
– i
d
nh
hh hh
^]
e_ e` ae ‘g
’ ’ ’ ’
_c `^ ~ _^ ]^
^
e` ea dxg s” s”_
’ ’
 
b
i
^
d
``g
†i ]†i ^†i
h
s”
^bg
”s ]e ”s
 
^cf ^dg ^df
š` š_
s” e] s”
 
s” ]”s
’ ’
e] e^
’ ’
^ _ b_
~ ~
e] e^ e_
’ ’ ’
f‘ fƒ
’
]] ] ~ d a ` _ ^  d c ` _ ^ ]
] ] ] ] ] ] ] ] ] ~~ ~ ~ ~ ~ ~ ~
h h] h^ h_ h` ha hb hc hd h~ ]h ]]h ^]h _]h `]h a]h
hh hh hh
‡ ‡ ‡
`d b c
~ ]
^`f
šc
š_
e
c
^n `n
^n
g„ ] ^ g„ „g ] ^ „g
`n
ˆ‘
e
gh
e
š`
]^e s” ]]e

^bf ^cg
ša
s” ]e]

”s ]_e ”s
 
^ag ^af
š
_] bs”
e 
]
e
ša
e
^
_
e
b
‡
^_
]_
e_
ˆ ]ˆ ^ˆ _ˆ `ˆ aˆ
e e e e e e
] ^ _ ` a
~ ^ ^] ^^ ^_ ^` ^a ^b ^c _ _] _^ __ _a _b c_ d_ ]` `^ ]^ ^] ^] ^] ^]
e e] e^ e_ e` ea eb ec ed e~ ]e ]]e ]^e ]_e ]`e ]ae ]be ]ce ]de xbg xcg xdg x~g ]x
Ž]~ Ž^ Ž]^ Ž^^ Žg_
e e e e e^
hh hh hh
‡ ‡ ‡
a _b ab
^_g
e
] ^ _ ` a
h ]h ^h _h `h ah bh ch dh ~h ]h ]h ]h ]h ]h ]h
’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’
hh hh hh
‡ ‡ ‡
d] d^ _~
h
]ae n ]`e
–
^_f ^`g
hn
– `e]
šb
e
e^~
`
e
šc
e
e^
a
e
]
ed
e^
b
e
e
a]
] ^ _ ` a b c d
e ]e ^e _e `e ae be ce de ~e ]e ]e ]e ]e ]e ]e ]e ]e ]e bgx cgx dgx
’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’ ’
] hh hh
•` ‡ ‡
gg ] c
c
`ˆ
 š
i
hes
x‘
^^
f
ec
e^
e
gg
^
_
eb
a^
e
b]
bb hbds
nh Žfs
c~
]
b
_
]
^]
f
h`
g’…
]ce sx b]e
‘
^]f ^^g
–
†e‡
h`
a` dc
_] `]
hi hi
a
]c
_

sh
nf Žsf
`n
^
œ] `†s
e
g’…^
˜hs
~ d c b a ` _ ^ ]

`
a
`^
e^
a
`
s†
g…
^`
hc hb ah `h _h ^h ]h h
’ ’ ’ ’ ’ ’ ’ ’
`
–
e_
ši
•
g…„e
šn
g…e
ˆ`
] ^ _ ` a b c d
] ^ _
e~ e] e] ]e e] e] e] e] e] e] e]~ e^ e^ e^ e^
a b c d ~ ~] ] ’xe
`c
s
^e _e `e ae be ce
‘ h
]d ]c ]b ]a ]` ]_ ]^ ]]
]
–
h
š
hn
e
ˆa šs^ _^ šs_ ^^ ˆ ]^ ]ˆ ^ ^ˆ ~] _ˆ d] hn
e f e f e e e e e e e e e –
`] ]` ]a ]a ]b ]b ]c ]c ]d ]d ]~ ]~ ^ ^ ]^
g f g f g f g f g f g f g f g
h
ˆa _^ ^^ ˆ ]^ ˆ] ^ ˆ^ ]~ ˆ_ d] n– c]
e e e e e e e e e e e e
f ]f ^f _f `f af bf cf
]d ]c b] a] `] _] ^] ]]
a ` _ ^ ]
h] h] h] ]h ]h ]h ~h dh
’ ’ ’ ’ ’ ’ ’ ’
šx
g…e
]^
e

e^
e]~
hn
eg…i
] ]] ]^ _] b] c] d] ~] ] ` b^ ~^ a^
] ^
hi h]i h^i h_i `hi ahi bhi chi hdi ~hi ]hi h]i ]hi
sh
nh Žfs
h`i _hi ^hi ]hi hi
f‘ ƒf
’
– …ge
e]
^ h h] h^ h_ h` ha hb hc hd h~ h] ]h] ]^h h]_ h]` h]a
`•
fƒ
]^ –g w
g
‡
sh
nh Žfs
f ]f ^f _f `f af bf cf
s ’xe
h c`
 hn

–
ƒ
nh š
– šxe
d
e
š
hn
‘si
nh
c]
c d ~ ] a b d ^^ `^ a^ _ ]_ ^_ __ _` a_ a` b` c` d` ~` a aa ba ad cb `c ca d ]d ^d _d
~ ~ ~
_ ` a ~ ] ]] ^] _] `] a] b] c] d] ]~ ^ ]^ ^^ _^ `^ a^ b^ c^ d^ ^~ _ ]_ fn ˆ ]ˆ ^ˆ _ˆ `ˆ aˆ
e e e e e e e e e e e e e e e e e e e e e e e e e e
f‘ e e e e e e
‡
^
ch bh ah `h _h ^h ]h h
i i i i i i i i
fƒ
ši
•
_„
f–
’e šn šs
x _ s
x— f– ‘f
` a b
~ ~ ~
] ^
a` e e
^ _ ` a b c d ~
 d
]
]^ w g`
š
hx
] ^ _ ` a
e e e e e
a
^`
s ’xe ~
h c` •` e ]e ^e _e `e ae be ce
‘
]~ ]hs
Žfs
^ _ ` a b c d ~
]ah ]`h ]_h ]^h ]]h ]h h~ dh
i i i i i i i i
]b`
ši
•
^
„f–
f ]f ^f _f `f af bf cf
c e ]e ^e _e `e ae be ce
•`
a
a]
a ` _ ^ ]
d
h] h] h] h] h] h] h~ h
f ]f ^f _f `f af bf cf
b
^]
]]
h~
h
šn
’e
e
š
hx
i
s‘
ƒ`]
_]
e
š]
hn
xh
ši
x‘ šhs
s‘x š š]
x— sf ƒ„’ sf
f~ ]g ]f ]]g ]]f š]^gi ]^f ]_g ]_f
x‘ šsh
hn
xs‘
–
x— ’ƒ„
ši
• šn
]„ a] ^ hn
f– h –f –
g] f] g^ f^ g_ f_ g` f` ga fa gb fb cg cf gd fd g~
š
šs
e]
g’…x
š
š
– xh
^
e
hn
h
ši
• šn
d fx— ~ g’ ] g ]] ] ^] „ _] ] `]
h f h f h e h –f h f– h –f h
š
nh š
]
]]
e]
e~
e
f
ši
•
g…„e
^^
e
šn
–
hn
]
7.1 Sterownik VFMC.
66
Rysunek 7.3: VFMC. Obwód drukowany M1.
7.1 Sterownik VFMC.
67
Rysunek 7.4: VFMC. Obwód drukowany M2.
7.1 Sterownik VFMC.
68
Rysunek 7.5: VFMC. Obwód drukowany M3.
7.1 Sterownik VFMC.
69
Rysunek 7.6: VFMC. Obwód drukowany M4.
7.1 Sterownik VFMC.
Rysunek 7.7: VFMC. Rozmieszczenie elementów na płytce. Góra.
70
7.1 Sterownik VFMC.
Rysunek 7.8: VFMC. Rozmieszczenie elementów na płytce. Spód.
71
7.1 Sterownik VFMC.
72
Tablica 7.1: VFMC-strona sygnałowa. Spis elementów
Ilość
sztuk
1
2
4
3
2
1
1
1
3
7
1
2
1
1
1
2
42
Typ
Element
Obudowa
29F010R-128FC
7407M
74F245
BAVP17
M628128
MAX232ACWE
MC332
TROOPER ||
100 Ω
330 Ω
820 Ω
4.7 kΩ
47 kΩ
220 kΩ
10 MΩ
22 pF
100 nF
TSOP32
SO-14
SOL-20
DIODE0.4
SOJ32P400
SOP16 (long pad)
MPLCC132
QFP14X20-100N
0805
0805
0805
RESPACK
0805
0805
0805
1210
1210
2
1
1
3
1
2
1
100 µF/16V
106
32.768 kHz
CON 5x2
CON 7x2
CON 1x2
VME
U405
U410, U411
U406, U407, U408, U409
D401, D402, D403
U403, U404
U412
U401
U402
R401, R402, R403
R408, R409
R404
RP401, RP402
R407
R406
R405
C429, C430
C401..C428,
C431..C439,
C443, C445
C444, C446
L401
X401
CON402, CON403, CON405
CON404
CON406, CON407
CON401
RB.2/.4
AXIAL0.6
XTAL
IDC10S
IDC14P
IDC2b
VME96
7.1 Sterownik VFMC.
73
Tablica 7.2: VFMC-strona obiektowa. Spis elementów
Ilość
sztuk
1
2
1
11
1
1
1
5
1
1
1
1
6
9
3
1
1
2
1
2
3
1
4
5
2
3
1
1
1
3
Typ
Zener 30V
741
74LS14
BAVP17
BC337
BC639
HCPL 2531
HCPL2631
Element
D312
U311, U312
U308
D301..D311
T302
T301
U304
U301, U302, U303, U306,
U307
MCT2E
U305
REF02
U310
TLC2543
U309
1Ω
R329
300 Ω
R311..R313, R326..R328
330 Ω
R301,
R305..R309,
R314..R316
560 Ω
R302..R304
1 kΩ
R319
1.6 kΩ
R323
3.9 kΩ
R324, R325
4.7 kΩ
R310
8.2 kΩ
R317, R318
10 kΩ
R320..R322
33 kΩ
R330
10 nF
C306, C312..C314
100 nF
C301, C303, C305, C307
10 µF/16V C304, C311
100 µF/16V C302, C308, C310
CON 5x2
CON301
CON 8x2
CON302
CON 1x10 CON303
CON 1x3
J301, J302, J303
Obudowa
DIODE0.4
DIP8
SO14
DIODE0.4
TOk3
TOk3
DIP8
DIP8
DIP6
SO8
SOL-20
0805
0805
0805
0805
0805
0805
0805
0805
0805
0805
0805
1210
1210
RB.2/.4
RB.2/.4
IDC10b L
IDC16b L
IDC10P
IDC3b
7.2 Wzmacniacz mocy PWM.
7.2
Wzmacniacz mocy PWM.
74
7.2 Wzmacniacz mocy PWM.
75
º
·
¹
¸
û
Ê ¶
åÕ
Ò ¸ ÍÝ
È
ÑÊ ½ ¿¿ º ÌÜÉÄ
Ñ
ó
ñò
µ
Å°Þ ¯Þ
²Ð
°
² ²Þ²Ð
²Þ
²·
µ
à°Þ
²¸
´ ²Þ²Ð
à°Þ
²¹
±
Å°Þ ¯Þ
²Þ
à°Þ
¯³ ²Þ²Ð
²Ó
²ä
à°Þ
µ
³
°¯ ²Ð
¯Þ ²Þ²Ð
²º
à°Þ
°ã¯
¶
à°Þ
² ²Þ²Ð
³¸
à°Þ
´ ²Þ²Ð
³¹
à°Þ
¯²
°¯ ²Ð
¯Þ ²Þ²Ð
³º
à°Þ
±
¯¯
Ð
° ²Þ²Ð
³·
²Þ
à°Þ
µ
³
à°Þ
´
º°Þ
º
¯¯
²
¹°
¯¯
à°Þ
´
²Þ
¶
Ð
¸±
º°
¶¯
à°Þ
´
³
¹±
¯¯
à°Þ
²Þ
¯°
¯±
¶
äÅä
³
º°Þ
Ç
¯°ã Î
ø ³Þã â
ý
º°Þ ¯°ã
Ð
¹Ö
Ë ð´ ¶ Ë ð¯Þ °¯ Ë ð²¯ ´¯ Ë ð¶¯ Þ° Ë ð°° ²° Ë ð´° ¶° Ë ð±Þ °± Ë
à ¿Ä
À ÁÂ
³¯
Ù
¯°ã â
å°
å¯
³Þã â
ÐÐ
¯Ð Î
· ÁÏ
°¶ Î
ÇÛ
ÔÙ Ú
ÔÙ·
·¹Å
ÔØ
Å×
Ô¶ÕÖ
н µ
¾¼¹ ¿É
Ô¹
Í
±
¼Ê ¿Ë · º ½ ¿ÍÌ ¼¾ Ó ¿Í
¾¼ »½ ¿
²
±
²Þ
À°Þ
Ű ߯
À
ý
¶¯
à°Þ
²Þ
Ç
³°
Åä
þÿù
ü ùý
úû
øô ù
¯Þ
²
²
´ã
æ¯Ó
Þ¯° Þ Á
¹ ¯Þ
¯²
¯Þ
¯°ã â
ò
â
à°Þ
¯¯
Ð
¯¯ Ó
°¹ Þ°¯ É
¯³ ²Þ²Ð
³Ó
³ä
ù
â
×
¼¼ ÈÉÇ
Å ¿Æ
¶
º°Þ ¯°ã
´
°±° Õ¯Þ±
Å ±
°²° Õ¯Þ±
Å ±
¯°ã â
°°
´±
Å° ±´Þ
°¯° ß
Å ¯
Å°
° ³
¹¸
°Þº 㱯
³
²
±
·±
¶¯
à°Þ
²Þ
°
¯
¯Þ
¸°
¯ä
¯¯
à°Þ
¯°°
¶²³
°Þà
²Þ
´
³
²
´
²³
Øå»
¯¹
³
²
²
²
°ã¯
²
±
±
·°
à°Þ
·¯
â
ß
Å
²
¯
â
±µ°
°
¯ ¶
Å°Þ ß´
Å°Þ
ñò
¯
Å
°
Þ¯Þ
²
¶
¯¯°
»
¯
´
±Þ
°Þ»
¹Ö
±
³
µ
Ð
³
¯ ±Ð´¹
°Þ» ¸
Øå»
´ã
¶ æ¯Ó
°Þ¹ µ² Á
´
°Þ»
ØÞ±Þ
é
¯Þ
²
±°° ß
Å
±¯° ß
Å ¯
¯Þ
ÞÚ
¯²° ¯
Å
² Ó
¹°Þ ±± É
ÞÚ
´
Ç
¯°ã Î
±
°¯Å ¯
¯Þ
ç
°
±
°±Å ߯
¹°Þ
±
´ã
æ¯Ó
°° Á
±
°Þ»
â
°¶° Þ´
Å ³
± ²Þ´¹
°Þ» ¸
¯¯° Þ°
Å °
è
ê
ÞÚ
´¯
Øå»
µ
Øå»
²¯µ
à°Þ
²± ß
°Å
±Þ
¯Þ
À¬î
¯
´
Øå»
°Þ»
¯Þ° ß
Å ¯
°ÞЊ߯
´ã
´ æ¯Ó
°Þ¹ µ² Á
³
¯µ° ¯
Å
¯Þ
ÀÞ
±Þ
´
¯°ã â
¯ ³
³ï
¯±° ß
Å
ÀÞ
ÞØ
´ã
æ¯Ó
¯°° Þ Á
¹ ¯Þ
â
»
³
° ±Ð
°Þ» ¹´¸
°Þº ¯±ã
°
Øå»
±Þ
Å° ¯Þ
Ú
´
¯ °
á á
÷ ½ ¿Â ÷ ½ ¿
¯Þ
´
´ °
°Þà
µ°
Å° ±±
ë
°Ð° Þ
Å ±Ð
è
ì
±Þ° Þ´
Å ±
±
°´° ß
Å ¯
í
å
¯¯±
ê
°
ç
µ
¯°° Þ´
Å ±
¹Ö
¯°ã â
º
±°
Øå»
ÀÞ
° æÓ
¹°Þ µ² Á
â
â
÷
°ÞÀ
ó
ß
¯Þ ¶
´
¯¶° ß
Å
²
â
Å°Þ Þ¯Þ
ôõö
¶²³
°Þà
¯Þ°
Øå»
»
±¯ Ó
°¹ Þ°¯ É
´
³ ¶
Å°Þ ß´
°
°
°ã¯
²Þ
°
¯
Å°Þ ß¯
â
°ã¯
¯¯
±
°ã¯
â
³¶²
°Þà
â
°ã¯ Ç
â
´
±Þ
ØÞ±Þ
Þã¯Þ
ã³Þ
¸¯
аÞ
°Þ»
ßµ
Å°Þ
²Þ
°ã Ç
Ó ¯
Ð°Þ Þ° É Î
¹ ¯
µ Ó
¹°Þ °Þ¯ É
³ã
³ æ±Ó
¹°Þ ¯Þ Á
¹´¸
»
´
¶
²¶
³²
¯ Ó
¹°Þ µ°Þ á
à°Þ
â
»
ÀÞ
±Þ
´
¯²°
Ç
¶
ÞØ
Ð
²
±
¯±°
°Þ° Þ°
Å °
¯°ã â
³± ´
Å° ß³
¯Ð° ß
Å ¯
²¶
à°Þ
±Ð
¹´¸
»
¯¯
¶
¯º
ßµ²
±Ð´
˱
¯ ° ± ¹Ö
Ö¹
°
°ÞÀ
¹
±
°ÞÀ
¯
˱
¯ ° ± ¹Ö
¹Ö
¸
Rysunek 7.9: Wzmacniacz mocy PWM. Schemat.
·
7.2 Wzmacniacz mocy PWM.
Rysunek 7.10: Wzmacniacz mocy PWM. Obwód drukowany M1.
76
7.2 Wzmacniacz mocy PWM.
Rysunek 7.11: Wzmacniacz mocy PWM. Obwód drukowany M2.
77
7.2 Wzmacniacz mocy PWM.
Rysunek 7.12: Wzmacniacz mocy PWM. Rozmieszczenie elementów na płytce.
78
7.2 Wzmacniacz mocy PWM.
79
Tablica 7.3: Wzmacniacz mocy PWM. Spis elementów
Ilość
sztuk
2
2
1
2
1
1
1
4
2
1
1
4
4
1
4
2
1
2
4
3
1
1
9
Typ
Element
Obudowa
Zener 12V/1W
Zener 13V/1W
4011
4049
4081
4584
741
BC639
BC640
GREEN
LM311
MTP30N06
MTP30P06
RED
0.1 Ω/5W
10 Ω
33 Ω
100 Ω
220 Ω
360 Ω
390 Ω
560 Ω
1 kΩ
DIODE0.7
DIODE0.4
DIP14
DIP16
DIP14
DIP14
DIP8
TOk1
TOk1
LED
DIP8
TOk2
TOk2
LED
AXIAL1.2
AXIAL0.5
AXIAL0.5
AXIAL0.5
AXIAL0.5
AXIAL0.5
AXIAL0.5
AXIAL0.5
AXIAL0.5
2
1
2
6
4.7 kΩ
5.6 kΩ
6.8 kΩ
10 kΩ
1
1
4
1
1
2
1
2
1
2
1
850 pF
33 nF
120 nF
10 µF/35V
22 µF/16V
47 µF/16V
47 µF/100V
100 µF/16V
CON 5x2
CON 1x3
H15
D203, D204
D201, D202
U202
U204, U205
U203
U201
U208
T201, T202, T212, T214
T203, T213
D205
U206
T206, T208, T210, T211
T204, T205, T208, T209
D206
R214..R217
R207, R208
R227
R202, R206
R211, R220, R223, R224
R212, R222, R230
R229
R228
R203, R209, R210, R219,
R221, RR225, R226, R231,
R233
R204, R236
R235
R201, R205
R213, R218, R232, R234,
R237, R238
C201
C204
C207, C209, C211, C213
RB.2/.4
C203
C206, C208
C202
C210, C212
CON201
CON202, CON203
CON204
AXIAL0.5
AXIAL0.5
AXIAL0.5
AXIAL0.5
RAD0.2
RAD0.2
RAD0.2
RAD.2/.4
RB.2/.4
CAP long
RB.2/.4
IDC10b
IDC3b
H15
7.3 Rozdzielacz sygnałów.
7.3
Rozdzielacz sygnałów.
80
7.3 Rozdzielacz sygnałów.
81
P
*+
)
' !(
:
f8
5 /C
*
! +B
,4 ! &.
4
>@)A ?
+
7<
":
7<=
'
7;
':
9
bdc
`a
Z
^_
9
"FE
\]
F
9
"FE
M
L A+
;
1
LA
H ;+
M 1
LA LA
H ;+ H ;+
M
LA
H ;+
* *
K 1 MK 4 A 4 A
. .
N= + H N= + H N H N H
4 * 4 * M K K OF O
1
.A .A
+ + M M
; H ; H =; H =; H
1
LA
H ;+ H
W XU
V
3 E F D G F 0
1 M 1 M 1 M
LA LA LA LA LA LA
N+ H N+ H N+ H N+ H N+ H N+ H
YZ
F D G F 0 D 3 G E 0 3 E F O
O
M
M
O
M
,
ST
U
e
33
3
2
#1
0 1
O
% !&$
"#
1
!
!
, -
78
30 7 !+
/
!/
. 6 /!
RC
' !.
*&
*+
,Q
LP
%!
L .+
"1
L
9;
9
PFE
RC
' !.
%!
).
&
*+
<
;
9
%!
L .+
"1
L
9;
*
: 1
9
O
FO
M
,
U
[
F
Q,
"
RC
' !.
%!
).
9
*+
,
<
9
PFE
%!
L .+
"1
L
9;
*&
: 1
NQ
"
PFE
%!
).
9
: 1
<
9
"
M
'M '
1
; H; H
'M '
1
N HN H
'M
MK
+
;= H
; H
M
L A+
; H
M
L A+
D
; H
M
L A+
; H
,
4*
A.
; H
FO
M
E
0
O
N H
M
D
J
"FE
9
'
1
; H
F
K1
=; + H
1
L A+
; H
G
3
1
L A+
; H
1
L A+
; H
4*
.A
; H
MK
N= + H
9
'M
F
,
O
M
L A+
N H
M
L A+
N H
D
M
L A+
N H
4*
.A
,
FO
N H
M
E
0
O
M
D
J
0"IH
9
"FE
9
1
'
1
N H
F
G
3
N= + H
1
L A+
N H
1
L A+
N H
1
L A+
N H
K1
4*
.A
N H
F
,
O
0"IH
1
Rysunek 7.13: Rozdzielacz sygnałów. Schemat.
7.3 Rozdzielacz sygnałów.
Rysunek 7.14: Rozdzielacz sygnałów. Obwód drukowany M1.
82
7.3 Rozdzielacz sygnałów.
Rysunek 7.15: Rozdzielacz sygnałów. Obwód drukowany M2.
83
7.3 Rozdzielacz sygnałów.
Rysunek 7.16: Rozdzielacz sygnałów. Rozmieszczenie elementów na płytce.
84
7.3 Rozdzielacz sygnałów.
85
Tablica 7.4: Rozdzielacz sygnałów. Spis elementów
Ilość
sztuk
2
3
1
1
Typ
Element
Obudowa
CON 8x2
CON 1x2
DB15
DB25
CON501, CON502
J501, J502, J503
CON504
CON503
IDC16b
IDC2b
DB15RA/M
DB25RA/F
7.4 boot code.
7.4
rmain
86
boot code.
ttl
idnt
opt
boot
vfmcboot1.00
nop
*********************************************************************
*
* Plik:
boot.68k
*
* Autor:
Marek Wnuk
*
* Historia:
*-----------------------------------------------------------------* WERSJA UZYTKOWA
* M.WNUK (C) 1999
*
*********************************************************************
*
* System docelowy:
VFMC/68332
*
FPROM = $040000, 8-bit port
*
RAM
= $000000, 16-bit port
*
* Funkcja:
Inicjacja sprzetu i uruchomienie aplikacji.
*
* Opis:
Inicjacja sprzetu,
*
inicjacja wektorow,
*
przepisanie kodu do RAM @ $30000,
*
uruchomienie aplikacji od $30000.
*
* Psuedo-kod:
*
*
section boot_code
*
*
poczatkowa wartosc wskaznika stosu (SP)
*
adres startu (start:)
*
start:
*
tryb systemowy (SR.S = 1), blokada przerwan (SR.I = 7)
*
*
inicjacja sprzetu
*
*
ustawienie VBR na 0
*
skopiowanie SP na wektor 0
*
skopiowanie adresu startu na wektor 1
*
*
ustawienie innych wektorow na UNUSED
*
*
ustawienie wskaznika ramki stosu (A6) na 0
*
wyzerowanie wszystkich rejestrow
*
*
przepisanie ROM do RAM @ $30000
*
tryb systemowy (SR.S = 1), odblokowanie przerwan (SR.I = 0)
*
start aplikacji od $30000
*
*********************
LOWEND
equ $18000
section boot_code,,"code"
koniec dolnej (zerowanej) pamieci RAM + 1
*
*
ta sekcja jest zdefiniowana w pliku
opisu dla linkera (llrom.cmd)
i umieszczona na poczatku pamieci ROM
*********************
*
*
Wektory restartu
*
*
EXCEPT: dc.l
$007800
dc.l
$40008
*
Poczatkowa zawartosc wskaznika stosu
Adres startowy (ladowany do PC przy
restarcie)
7.4 boot code.
87
*********************
*
*
Inicjacja CPU
*
*
start:
*
*
Od tego miejsca rozpocznie sie praca
procesora po restarcie
move.w
#$2700,sr
SR.S = 1, SR.I = 7
*********************
*
*
Inicjacja sprzetu
*
move.w
move.w
move.w
#$6,($fffffa20)
#$7f00,($fffffa04)
#$424a,($fffffa00)
*
*
SYPCR bus monitor wlaczony na 16 taktow
SYNCR mnoznik zegara: 2
MCR pokazywanie cykli,
arbitraz zewnetrzny,
wlaczony arbitraz wewnetrzny
*********************
*
*
Inicjacja sygnalow CS
*
* RAM
move.l #$00055430,($fffffa4c)
move.l #$00053430,($fffffa50)
move.l #$00057830,($fffffa54)
; CSOR0 0 waits, upper byte, ds, wo
; CSOR1 0 waits, lower byte, ds, wo
; CSOR2 0 waits, both bytes, as, r/w
*********************
*
*
Ustawienie portu C
*
move.b #%01110111,($fffffa41)
move.l #$00fe0000,($fffffa44) CSPAR
*
* EPROM
move.l #$040458b0,($fffffa48)
move.l #$040448b0,($fffffa64)
move.l #$040450b0,($fffffa68)
; PORTC
LDAC HI
; CSORBT upper, r/w,
s/u 2 wait EPROM
; CSOR6 upper, read, s/u 2 wait EPROM
; CSOR7 upper, write, s/u 2 wait EPROM
*********************
* pin assignment
move.l #$02fe02aa,($fffffa44) CSPAR
*
* nu wdg lda lcd csr wrl wru csb nu nu nu rtw rtr rtc few fer
* -- -- -- 8b 16b 16b 16b 8b -- -- -8b 8b 8b 8b 8b
*
* xx cs5 cs4 cs3 cs2 cs1 cs0 csb xx xx xx cs10 cs9 cs8 cs7 cs6
* 00 00 00 10 11 11 11 10 00 00 00 10
10 10 10 10
* \--v--/ \--v--/ \--v--/ \--v--/ \--v--/ \--v--/ \--v--/ \--v--/
*
0
2
f
e
0
2
a
a
*********************
*
*
Ustawienie portu F
*
move.b #%11111111,($fffffa1b)
move.b #%11111111,($fffffa1d)
move.b #%00000000,($fffffa1f)
*
; PORTF
; PFDDR
; PFPAF
all outputs
all I/O
7.4 boot code.
88
*********************
*
*
Ustawienie portu Q
*
move.b #%01110000,($fffffc15)
move.w #$7ffe,($fffffc16)
*
; PORTQ
; PQPAR
*********************
*
*
Zerowanie dolnej pamieci RAM
*
move.l #$400,a1
move.l #LOWEND,a2
clr.l
d2
deselect all
all QSPI, PQDDR all but MISO - out
RAM_ptr = start roboczej pamieci RAM
end_ptr = koniec roboczej pamieci RAM
clr1:
move.l
cmpa.l
bhi
d2,(a1)+
a1,a2
clr1
zerowanie RAM_ptr -> lword
dopoki RAM_ptr < end_ptr
*
*********************
*
*
Ustawienie USP
*
move.l a7,a1
suba.l #$3000,a1
move
a1,usp
*
... o $3000 ponizej SSP
*********************
*
*
Inicjacja wektorow
*
movea.l #0,a0
adres VBR (=0) do A0
movec
a0,vbr
A0 do VBR
lea.l
EXCEPT(pc),a1
adres tablicy wektorow do A1
move.l (a1),(a0)+
wskaznik stosu do RAM
lea.l
start(pc),a1
adres startu do A1
move.l a1,(a0)+
adres startu do RAM
*
lea FATAL(pc),a1 zerowanie calej pamieci RAM
move.l a1,(a0)+ wektor BusError
move.l a1,(a0)+ wektor AddressError
move
#252,d0
licznik wektorow
lea.l
UNUSED(pc),a1
adres pustej procedury do A1
fill
move.l a1,(a0)+
inicjacja wektorow...
dbra
d0,fill
...do wyczerpania licznika
*********************
*
*
Zerowanie rejestrow
*
movea.l #0,a6
A6 jest uzywany jako wskaznik ramki stosu
*
musi byc zerowany dla XDB
movea.l a6,a5
movea.l a6,a4
movea.l a6,a3
movea.l a6,a2
movea.l a6,a1
movea.l a6,a0
clr.l
d7
clr.l
d6
clr.l
d5
clr.l
d4
clr.l
d3
clr.l
d2
clr.l
d1
clr.l
d0
*
7.4 boot code.
89
*********************
*
*
Warunkowe przepisanie kodu do RAM
*
cmp.w
#$ffff,$50000
ROM pusty?
beq
loop
jesli tak, to do martwej petli
lea.l
lea.l
move.w
$50000,a0
$30000,a1
#$3fff,d0
adres poczatku zrodla
adres poczatku przeznaczenia
licznik dlugich slow
move.l
dbra
(a0)+,(a1)+
d0,reloc
przepisanie dlugich slow...
...do wyczerpania licznika
clr.l
move.l
move.l
d0
d0,a0
d0,a1
zerowanie d0,
... a0
... i a1
move.w
#$2000,sr
Odblokowanie przerwan...
jmp
$30000
...i start aplikacji od $30000
reloc
*
*
*********************
*
FATAL
move.w #$2700,sr blokada przerwan (czekanie na reset)
*********************
*
*
Martwa petla
*
loop
*
bra.s
loop
... w ktorej nigdy nie zamierzamy
sie znalezc
*********************
*
*
Pusta obsluga zdarzen specjalnych
*
UNUSED
rte
*********************
end
* koniec pliku boot.68k
7.5 flash.h.
7.5
90
flash.h.
/***********************************************************************
*
* Plik:
flash.h
*
* Opis:
Deklaracje stalych i funkcji dla FlashROM AMD29f010
*
* Autor:
Marek Wnuk
*
* Historia:
*-----------------------------------------------------------------* WERSJA UZYTKOWA
* M. WNUK (C) 1999
*
***********************************************************************/
#ifndef _FLASH_P10_
#define _FLASH_P10_
#ifdef EXTERN
#undef EXTERN
#endif
#ifdef _DEFINE_
#define EXTERN
#else
#define EXTERN extern
#endif
#define FLBASE
0x040000
/* adres bazowy pamieci FLASHROM */
EXTERN int
EXTERN int
ProgMode;
FlashProgFlag;
EXTERN
EXTERN
EXTERN
EXTERN
EXTERN
EXTERN
EXTERN
EXTERN
FlReset();
FlPollData(long offset, char data);
FlUnlock();
FlAuto(long offset);
FlChipErase();
FlSectErase(int sector);
FlProgram(long offset, char data);
FlashProg(int flag);
void
int
void
int
int
int
int
int
#endif /* _FLASH_P10_ */
/* koniec pliku "flash.h" */
/* wynik programowania */
/* znacznik trybu programowania */
7.6 flash.c.
7.6
flash.c.
/***********************************************************************
*
* Plik:
flash.c
*
* Opis:
Obsluga pamieci FlashROM AMD29F010
*
* Autor:
Marek Wnuk
*
* Historia:
*-----------------------------------------------------------------* WERSJA UZYTKOWA
* M.WNUK (C) 1999
*
***********************************************************************/
#define _DEFINE_
#include "flash.h"
//
/***********************************************************************
*
* Nazwa:
FlReset
*
* Prototyp:
#include <plik.h>
*
*
void FlReset ( )
*
* Argumenty:
*
* Wynik:
*
* Funkcja:
Sprowadzenie FlashROM do stanu poczatkowego
*
***********************************************************************/
void FlReset()
{
*((char *)(FLBASE)) = 0xf0;
}
/***********************************************************************
*
* Nazwa:
FlPollData
*
* Prototyp:
#include <plik.h>
*
*
int FlPollData(long offset, char data)
*
* Argumenty:
long offset
-adres wzgledem poczatku FlashROMu
*
char data
*
* Wynik:
0 - poprawne zaprogramowanie
*
-1 - blad
*
* Funkcja:
Testowanie zaprogramowania komorki FlashROM
*
***********************************************************************/
int FlPollData(long offset, char data)
{
while (*((char *)(FLBASE+offset)) != data)
{
if((*((char *)(FLBASE+offset)) & (1<<5)))
if(*((char *)(FLBASE+offset)) != data)
{
FlReset();
return -1;
}
}
return 0;
}
91
7.6 flash.c.
//
/***********************************************************************
*
* Nazwa:
FlUnlock
*
* Prototyp:
#include <plik.h>
*
*
void FlUnlock ( )
*
* Argumenty:
*
* Wynik:
*
* Funkcja:
Odblokowanie mozliwosci zapisu do FlashROM
*
***********************************************************************/
void FlUnlock()
{
*((char *)(FLBASE+0x5555)) = 0xaa;
*((char *)(FLBASE+0x2aaa)) = 0x55;
}
//
/***********************************************************************
*
* Nazwa:
FlAuto
*
* Prototyp:
#include <plik.h>
*
*
int FlAuto (long offset)
*
* Argumenty:
long offset -adres wzgledem poczatku FlashROM
*
* Wynik:
w zaleznosci od offset:
*
xx00 - kod producenta
*
xx01 - kod urzadzenia
*
SA02 - 0 - sektor odbezpieczony
*
1 - sektor zabezpieczony
*
* Funkcja:
Odczyt parametrow FlashROM w trybie Autoselect
*
***********************************************************************/
int FlAuto(long offset)
{
int out;
FlUnlock();
*((char *)(FLBASE+0x5555)) = 0x90;
out = *((char *)(FLBASE+offset));
FlReset();
return(out);
}
//
/***********************************************************************
*
* Nazwa:
FlChipErase
*
* Prototyp:
#include <plik.h>
*
*
int FlChipErase()
*
* Argumenty:
*
* Wynik:
0 - poprawne skasowanie
*
-1 - blad
*
* Funkcja:
Kasowanie FlashROM
*
***********************************************************************/
92
7.6 flash.c.
int FlChipErase()
{
FlUnlock();
*((char *)(FLBASE+0x5555)) =
*((char *)(FLBASE+0x5555)) =
*((char *)(FLBASE+0x2aaa)) =
*((char *)(FLBASE+0x5555)) =
return FlPollData(0, 0xff);
}
93
0x80;
0xaa;
0x55;
0x10;
//
/***********************************************************************
*
* Nazwa:
FlSectErase
*
* Prototyp:
#include <plik.h>
*
*
int FlSectErase (int sector)
*
* Argumenty:
int sector -numer sektora FlashROM
*
* Wynik:
0 - poprawne skasowanie
*
-1 - blad
*
* Funkcja:
Kasowanie sektora FlashROM
*
***********************************************************************/
int FlSectErase(int sector)
{
FlUnlock();
*((char *)(FLBASE+0x5555)) = 0x80;
*((char *)(FLBASE+0x5555)) = 0xaa;
*((char *)(FLBASE+0x2aaa)) = 0x55;
*((char *)(FLBASE+(sector<<14))) = 0x30;
return FlPollData((sector<<14), 0xff);
}
/***********************************************************************
*
* Nazwa:
FlProgram
*
* Prototyp:
#include <plik.h>
*
*
int FlProgram (long offset, char data)
*
* Argumenty:
long offset -adres wzgledem poczatku FlashROM
*
char data
-dane do zapisania
*
* Wynik:
0 - poprawne zaprogramowanie
*
-1 - blad
*
* Funkcja:
Programowanie 1 bajtu we FlashROM
*
***********************************************************************/
int FlProgram(long offset, char data)
{
FlUnlock();
*((char *)(FLBASE+0x5555)) = 0xa0;
*((char *)(FLBASE+offset)) = data;
return FlPollData(offset, data);
}
//
/***********************************************************************
*
* Nazwa:
FlashProg
*
* Prototyp:
#include <plik.h>
*
*
int FlashProg (int flag)
*
* Argumenty:
int flag
-zezwolenie na programowanie
*
7.6 flash.c.
94
* Wynik:
1 - poprawne zaprogramowanie
*
0 - brak zezwolenia na programowanie
*
-1 - blad przy kasowaniu
*
-2 - blad przy programowaniu
*
* Funkcja:
Programator FlashROM
*
*
***********************************************************************/
int FlashProg(int flag)
{
char * dptr = (char *)0x20000;
long offset;
long i;
if(!flag) return (0);
/* tu nalezy ustawic pulapke */
if(FlChipErase()) return(-1);
for(i=0;i<16;i++)
{
for(offset=0; offset<0x2000; offset++)
{
if(FlProgram(offset+i*0x2000, *dptr++)) return(-2);
}
}
return(1);
}
/* koniec pliku "flash.c" */
7.7 bootload.c.
7.7
95
bootload.c.
/***********************************************************************
*
* Plik:
vfmc.c
*
* Opis:
Loader programow dla VFMC przez MBOX0
*
* Autor:
Krzysztof Jarzabek
*
* Historia:
*-----------------------------------------------------------------* PIERWSZA WERSJA TESTOWA
* K.JARZABEK (C) 1999
*
***********************************************************************/
#include <stdio.h>
#include <math.h>
#include "flash.h"
#include
#include
#include
#include
<ctype.h>
"trooper.h"
"vfmc.h"
"sim.h"
#define INIT_TRANSMISION (unsigned int) 0x5555
#define VME_INIT_TRANSMISION (unsigned int) 0xaaaa
#define HEX_VAL(c) ((unsigned long)(((’0’ <= (c)) && ((c)<= ’9’)) ?
(c) -’0’: (c) - ’7’))
static VMEbus_interface_T *VMEarg_pointer; /* pointer to VMEBus interface */
SIMREGS *_simptr_;
TROOPERREGS *_trooperptr_;
static void Init_PORTF(void)
{
SIMCR = 0x62cf;
/* init SIM Master Configuration Register */
PFPAR=0x0000;
/* all pins I/O */
DDRF=0x0060; /* PF5 - green diode, PF6 - yellow diode */
PORTF0 = 0;
/* Low state */
SetPortFBit(5);
/* turn off green diode */
SetPortFBit(6);
/* turn off yellow diode */
}
void Init_Trooper(VMEbus_interface_T *VMEarg)
{
SetPAR(8,0x3);
/* set Chip Select Pin Assignment Reg. */
SetBAR(8,TROOPERBASE,0);
/* set Base Address Register */
/* setings for Chip Select CS8 */
SetMODE(8,0);
SetBYTE(8,3);
SetRW(8,3);
SetSTRB(8,1);
SetDSACK(8,0xf);
SetSPACE(8,3);
SetIPL(8,0);
SetAVEC(8,0);
PORTF1 |= 7 << 2;
/* asynchronous
/* both
/* both
/* DS
/* external
/* S/U
/* all
/* off
*/
*/
*/
*/
*/
*/
*/
*/
/* set port F lines (2,3,4) as irq */
7.7 bootload.c.
96
/* set CS9 - Generatig Autovector for IRQ2 */
SetBAR(9,0xffffff,0);
/* set Base Address Register to 0xffff*/
/* setings */
SetMODE(9,0);
SetBYTE(9,3);
SetRW(9,3);
SetSTRB(9,0);
SetDSACK(9,0);
SetSPACE(9,0);
SetIPL(9,2);
SetAVEC(9,1);
/* asynchronous
/* both
/* both
/* AS
/* O ws
/* CPU
/* 2
/* on
*/
*/
*/
*/
*/
*/
*/
*/
/* Set CS5 - Generatig Autovector for IRQ3 */
SetBAR(5,0xffffff,0);
/* set Base Address Register to 0xffff*/
/* setings */
SetMODE(5,0);
SetBYTE(5,3);
SetRW(5,3);
SetSTRB(5,0);
SetDSACK(5,0);
SetSPACE(5,0);
SetIPL(5,3);
SetAVEC(5,1);
/* asynchronous
/* both
/* both
/* AS
/* 0 ws
/* CPU
/* 3
/* on
*/
*/
*/
*/
*/
*/
*/
*/
/* Set CS4 - Generatig Autovector for IRQ4 */
SetBAR(4,0xffffff,0);
/* set Base Address Register to 0xffff*/
/* setings */
SetMODE(4,0);
SetBYTE(4,3);
SetRW(4,3);
SetSTRB(4,0);
SetDSACK(4,0);
SetSPACE(4,0);
SetIPL(4,4);
SetAVEC(4,1);
/* asynchronous
/* both
/* both
/* AS
/* 0 ws
/* CPU
/* 4
/* on
*/
*/
*/
*/
*/
*/
*/
*/
/* Trooper initialization */
/* set pointers to user’s interrupt functions */
VMEarg_pointer = VMEarg;
*((byte *)0xe0003fl)=0x80;
*((byte *)0xe00021l)=0x01;
*((byte *)0xe00023l)=0x00;
*((byte *)0xe00025l)=0x00;
SADDMD =
|
|
|
(2
(0
(1
(3
<<
<<
<<
<<
6)
4)
2)
0);
SADDC[1] = 0xc0;
SADDC[2] = 0x00;
VIRPL = 0;
*((byte *)0xe0003dl)=0x60;
ClrPortFBit(5);
/* A24 mode
/* AM enable
/* data
/* Supervisor/User
*/
*/
*/
*/
/* slave address compare A23-16
/*
A15-09
/* !! from VME address 0x87c00000 !!
/* no interrupt asserted
*/
*/
*/
*/
/* turn on green diode */
}
int SRecordToMem(char *s_rec, int size, unsigned long *start_address)
{
int NBytes,
/* number of bytes in S-record */
sum,
/* count checksum */
numbers,
/* number of data fields */
i,
address_len;
unsigned long address;
7.7 bootload.c.
97
if((s_rec[1]<’0’)&&(s_rec[1]>’9’))
return(-3);
for(i=1;i<strlen(s_rec);i++)
if(!isxdigit(s_rec[i]))
return(-1);
/* include unlawful character */
NBytes=16*HEX_VAL(s_rec[2])+HEX_VAL(s_rec[3]);
/* number of bytes in */
if((s_rec[1]==’0’)||(s_rec[1]==’1’)||(s_rec[1]==’9’))
address_len=2;
else
if((s_rec[1]==’2’)||(s_rec[1]==’8’))
address_len=3;
else
if((s_rec[1]==’3’)||(s_rec[1]==’7’))
address_len=4;
numbers=(int)(NBytes-1-address_len); /* number of data fields
without: adress
checksum (1B)*/
sum=0;
for(i=1;i<=NBytes+1;i++)
* count checksum */
sum+=16*HEX_VAL(s_rec[2*i])+HEX_VAL(s_rec[2*i+1]);
if((sum&0xFF)!=0xFF)
return(-2); /* checksum error */
if(address_len==2)
address=(HEX_VAL(s_rec[4])<<12)+(HEX_VAL(s_rec[5])<<8)+
(HEX_VAL(s_rec[6])<<4)+HEX_VAL(s_rec[7]);
else
if(address_len==3)
address=(HEX_VAL(s_rec[4])<<20)+(HEX_VAL(s_rec[5])<<16)+
(HEX_VAL(s_rec[6])<<12)+(HEX_VAL(s_rec[7])<<8)+
(HEX_VAL(s_rec[8])<<4)+HEX_VAL(s_rec[9]);
else
if(address_len==3)
address=(HEX_VAL(s_rec[4])<<28)+(HEX_VAL(s_rec[5])<<24)+
(HEX_VAL(s_rec[6])<<20)+(HEX_VAL(s_rec[7])<<16)+
(HEX_VAL(s_rec[8])<<12)+(HEX_VAL(s_rec[9])<<8)+
(HEX_VAL(s_rec[10])<<4)+HEX_VAL(s_rec[11]);
if((s_rec[1]>’0’)&&(s_rec[1]<’4’))
{
for(i=0;i<numbers*size;i++)
*((char *)address+i)=16*HEX_VAL(s_rec[4+2*(i+address_len)])
/* write to memory */
+HEX_VAL(s_rec[5+2*(i+address_len)]);
start_address=0;
}
else
*start_address=address;
return(1);
}
//
/***********************************************************************
*
* Nazwa:
main
*
* Prototyp:
*
*
int main ( )
*
* Argumenty:
*
* Wynik:
*
* Funkcja:
Program glowny dla proby vfmc
7.7 bootload.c.
*
*
***********************************************************************/
void main()
{
VMEbus_interface_T VMEarg;
char run, s_record[100];
unsigned int mailbox, n_data;
unsigned long start_address;
int er;
unsigned int *mb0=(unsigned int*)0xe00000;
/* Programowanie pamieci FlashROM */
FlashProgFlag = 0;
ProgMode = FlashProg(FlashProgFlag);
_simptr_ = (SIMREGS *) SIMBASE; /* init pointer to SIM registers */
/* init pointer to trooper registers */
_trooperptr_ = (TROOPERREGS *)TROOPERBASE;
Init_PORTF();
Init_Trooper(&VMEarg);
/* Glowna petla programu */
while(1)
{
*((unsigned int*)0xe00000)=INIT_TRANSMISION;
while((er=*mb0)!=VME_INIT_TRANSMISION);
*((unsigned int*)0xe00000)=0x0000;
run=1;
n_data=0;
while(run)
{
mailbox=*((unsigned int*)0xe00000);
if(mailbox!=0x0000)
{
if(((mailbox==’S’)&&(!n_data))||(n_data>0))
s_record[n_data++]=(char)mailbox;
else
n_data=0;
if((n_data>0)&&(mailbox==0x0d))
{
s_record[--n_data]=0x00;
er=SRecordToMem(s_record, 1, &start_address);
if((er<0)||(start_address!=0x0000))
run=0;
n_data=0;
}
*((unsigned int*)0xe00000)=0x0000;
}
}
if(er>0)
((void (*) ())start_address)();
else
ClrPortFBit(5);
} /* while (1) */
}
/* koniec pliku bootload.c */
98
7.8 buser.c.
7.8
99
buser.c.
/*
* buser.c - test an address for bus error
* mw’99 from OS-9 GURU by Paul S. Dayan (p.218)
*/
#include
#include
#include
#include
<stdio.h>
<errno.h>
<types.h>
<MACHINE/reg.h>
#define ERROR (-1)
REGISTERS stack_frame; /* struct for stack freme */
int f_strap(), probe_byte();
/* asm func declarations */
main(argc,argv)
int argc;
char **argv;
{
char *check_addr;
if(argc!=2 || sscanf(argv[1], "%x", &check_addr)!=1)
exit(_errmsg(1,"Invalid address\n"));
if(f_strap(&stack_frame)==ERROR)
exit(_errmsg(errno,"Can’t install handler\n"));
if(probe_byte(check_addr)==-1)
_errmsg(1,"Address %08x not accessible\n",check_addr);
else
_errmsg(1,"Address %08x accessible\n",check_addr);
}
/* bus error handler installation */
#asm
f_strap:
movem.l
d1/a0-a1,-(a7)
lea
ExcpTbl(pc),a1
tst.l
d0
beq.s
f_strap10
addi.l
#R$Size-2,d0
f_strap10
movea.l
d0,a0
os9
F$STrap
bcs.s
f_strap20
moveq
#0,d0
bra
f_strap30
f_strap20
move.l
d1,errno(a6)
moveq
#-1,d0
f_strap30
movem.l
(a7)+,d1/a0-a1
rts
ExcpTbl
dc.w
T_BusErr,bus_hand-*-4
dc.w
-1
* Read a byte from address
probe_byte:
move.l
a0,-(a7)
move.l
d0,a0
move.b
(a0),d0
* here bus error may occure...
moveq
#0,d0
probe_byte10
movea.l
(a7)+,a0
rts
* Bus error handler
bus_hand:
movea.l
a1,a7
movem.l
(a5),d0-d7/a0-a4
movea.l
R$a5(a5),a5
moveq
#-1,d0
bra.s
probe_byte10
#endasm
/* end of buser.c */
any stack given?
top of stack
end marker
restore stack pointer
restore registers
restore a5
7.9 treset.c.
7.9
treset.c.
/*
* trooper - a simple test for TrooperII (VME side)
* mw’99
*/
#include <stdio.h>
#include <modes.h>
#include <errno.h>
#include <setsys.h>
#include "trooper.h"
#define BLKSIZE 0x1000 /* block size */
main(argc,argv)
int argc;
char *argv[];
{
setuid(0);
if(f_permit(BLKSIZE,S_IREAD | S_IWRITE,TROOPERBASE)==-1) exit (errno);
_errmsg(2,"Permission to %d bytes at 0x%x granted\n",BLKSIZE,TROOPERBASE);
*(((byte*)TROOPERBASE)+0x3d) = 0xaa;
_errmsg(2,"Reset sent\n");
return 0;
}
#asm
* f_permit(size,perms,address)
* d0.l - size of mem area
* d1.w - access permissions
* a2.l - start of mem area
*
f_permit:
move.l
a2,-(a7)
movea.l
8(a7),a2
os9
F$Permit
bcc f_permit10
moveq
#0,d0
move.w
d1,d0
move.l
d0,errno(a6)
moveq
#-1,d0
bra.s
f_permit20
f_permit10
moveq
#0,d0
f_permit20
movea.l
(a7)+,a2
rts
#endasm
/* end of treset.c */
100
7.10 vfmcload.c.
7.10
101
vfmcload.c.
/*
* vfmcload - S-records loader for VMFC
* mw’99
* vfmcload [file.name] ("-" to load from stdin)
*/
#include
#include
#include
#include
#include
#include
<stdio.h>
<modes.h>
<errno.h>
<setsys.h>
<types.h>
<MACHINE/reg.h>
#include "trooper.h"
#define ERROR (-1)
#define MBOX(x) *(((word*)TROOPERBASE)+(x))
REGISTERS stack_frame;
/* struct for stack freme */
int f_strap(), probe_byte();
/* asm func declarations */
#define BLKSIZE
/* block size */
0x1000
int mbrd(){
if(probe_byte(TROOPERBASE)==-1) return -1;
return MBOX(0);
}
int mbwr(x)
word x;
{
if(probe_byte(TROOPERBASE)==-1) return -1;
MBOX(0)=x;
return 0;
}
main(argc,argv)
int argc;
char *argv[];
{
char *fname = "default.s19";
FILE *fd;
int ch,a;
if(argc>1)
fname = argv[1];
/* open S-records file */
if(*fname == ’-’) {
fd = stdin;
fname = "stdin";
}
else{
if((fd=fopen(fname, "r"))==NULL)
exit(_errmsg(2,"Can’t open S-records file: %s\n",fname));
}
setuid(0);
if(f_permit(BLKSIZE,S_IREAD | S_IWRITE,TROOPERBASE)==-1) exit (errno);
_errmsg(2,"Permission to %d bytes at 0x%x granted\n",BLKSIZE,TROOPERBASE);
if(f_strap(&stack_frame)==ERROR)
exit(_errmsg(errno,"Can’t install bus error handler\n"));
/* wait for Trooper initialization */
while(probe_byte(TROOPERBASE)==-1){
_errmsg(2,"VFMC not ready\n");
sleep(1);
7.10 vfmcload.c.
102
}
_errmsg(2,"VFMC ready\n");
/* initial handshake */
while(mbrd() != 0x5555){
_errmsg(2,"Waiting for 5555\n");
sleep(1);
}
if(-1==mbwr(0xaaaa))
_errmsg(2,"Bus error\n");
else
_errmsg(2,"Marker (aaaa) sent\n");
while((ch=fgetc(fd))!=EOF && ch!=0x1a){
fprintf(stderr,"%c",ch);
fflush(stderr);
while((a=mbrd())!=0){
fprintf(stderr,"%s",a==-1?"*":".");
fflush(stderr);
tsleep(0x80000000|2);
}
if(-1==mbwr(ch))
_errmsg(2,"Bus error\n");
}
_errmsg(2,"End of %s\n",fname);
return 0;
}
#asm
* f_permit(size,perms,address)
*
d0.l - size of mem area
*
d1.w - access permissions
*
a2.l - start of mem area
*
f_permit:
move.l a2,-(a7)
movea.l 8(a7),a2
os9
F$Permit
bcc
f_permit10
moveq
#0,d0
move.w d1,d0
move.l d0,errno(a6)
moveq
#-1,d0
bra.s
f_permit20
f_permit10
moveq
#0,d0
f_permit20
movea.l (a7)+,a2
rts
* Bus error handler installation
f_strap:
f_strap10
f_strap20
f_strap30
ExcpTbl
movem.l
lea
tst.l
beq.s
addi.l
movea.l
os9
bcs.s
moveq
bra
move.l
moveq
movem.l
rts
d1/a0-a1,-(a7)
ExcpTbl(pc),a1
d0
f_strap10
#R$Size-2,d0
d0,a0
F$STrap
f_strap20
#0,d0
f_strap30
d1,errno(a6)
#-1,d0
(a7)+,d1/a0-a1
dc.w
dc.w
T_BusErr,bus_hand-*-4
-1
* Read a byte from address
probe_byte: move.l a0,-(a7)
move.l d0,a0
move.b (a0),d0
* here bus error may occure...
any stack given?
top of stack
end marker
7.10 vfmcload.c.
moveq
103
#0,d0
probe_byte10
movea.l (a7)+,a0
rts
* Bus error handler
bus_hand:
movea.l a1,a7
movem.l (a5),d0-d7/a0-a4
movea.l R$a5(a5),a5
moveq
#-1,d0
bra.s
probe_byte10
#endasm
/* end of vfmcload.c */
restore stack pointer
restore registers
restore a5
7.11 troper.a.
7.11
104
troper.a.
nam
troper
ttl
OS-9/68 TrooperII (VME slave interface) device driver
opt
l
********************************
* Edition History
* #
date
comments
by
* -- -------- ------------------------------------------------- --* 01 99/05/24 initial version
MW
*
***********************************************************************
Edition
Revision
Type_Lang
Attr_Rev
equ
equ
opt
use
opt
set
set
psect
7
0
-l
/dd/DEFS/oskdefs.d
l
(Drivr<<8)+Objct
((SupStat+ReEnt)<<8)+Revision
TROOPER,Type_Lang,Attr_Rev,Edition,0,TroopEntry
**************** TrooperII Register Layout ***********************
*
MBOX0
IRQ_REG
equ
equ
$00
$3C
*
MAGIC_SIG
equ
$5555
arbitrary signal number
1
default number of drives tables
*
vbf variables
N_Drives
*
mailbox 0
interrupt pending
equ
driver routines entry offsets table
TroopEntry
dc.w
dc.w
dc.w
dc.w
dc.w
dc.w
dc.w
Init
Read
Write
GetStat
SetStat
TermNat
0
**************** variable section ***************************
vsect
Vector_A
Bas_Ad
Sig_ID
Signal
ds.b
ds.l
ds.w
ds.w
1
1
1
1
IRQ-Vector for TrooperII Interrupts
Board address buffer
buffer process ID (interrupt mode)
buffer signal code (interrupt mode)
ends
**************************************************************
Init:
*
(a1)
addr of device descriptor module (M$)
*
(a2)
addr of device static storage (V_)
*
(a4)
addr of process descriptor
*
(a6)
system global data pointer
*
*
Description:
*
Initialization of Motion controllers ,
*
Installation of IRQ service routines
*
move.b
#N_Drives,V_Channels(a2)
init vbf var: ’number of drives’
7.11 troper.a.
move.l
move.l
move.w
move.w
move.b
move.b
move.b
lea.l
OS9
bcs.s
moveq
105
M$Port(a1),a3
a3,Bas_Ad(a2)
#MAGIC_SIG,Signal(a2)
P$ID(a4),Sig_ID(a2)
M$Vector(a1),d0
d0,Vector_A(a2)
M$Prior(a1),d1
Trooper_IRQ(pc),a0
F$IRQ
Init_Err
#0,d0
get trooper base addr and init a3 reg.
get irq-vector
store it in driver
get irq-priority
load irq-routine
put irq to os9
... error
* init the mailboxes(a3)
* enable trooper IRQ (?)
Init_Err
rts
***************************************************************
Read:
*
*
(a1)
addr of path descriptor (PD_)
*
(a2)
addr of device static storage (V_)
*
(a4)
addr of process descriptor
*
(a6)
system global data pointer
*
*
Description:
*
no readable device
*
move.w
ori.b
rts
#E$BMode,d1
#Carry,ccr
wrong access
***************************************************************
Write:
*
d0.b
char to write
*
(a1)
addr of path descriptor (PD_)
*
(a2)
addr of device static storage (V_)
*
(a4)
addr of process descriptor
*
(a6)
system global data pointer
*
*
Description:
*
no writable device
*
move.w
ori.b
rts
#E$BMode,d1
#Carry,ccr
wrong access
*****************************************************************
GetStat:
*
d0.w
status code:
*
*
(a1)
addr of path descriptor (PD_)
*
(a2)
addr of device static storage (V_)
*
(a4)
addr of process descriptor
*
(a6)
system global data pointer
*
*
No service
move.w
ori.b
rts
#E$BMode,d1
#Carry,ccr
wrong access
*****************************************************************
SetStat:
*
d0.w
status code:
*
wr------bbbbeeee
*
7.11 troper.a.
*
*
*
*
*
*
*
*
*
106
(bbbb)*16+(eeee) - beginning and end of mboxes queue
bit15 set - write
bit15 clr - read
(a1)
(a2)
(a4)
(a6)
cmp.w
bhs.s
move.w
ori.b
rts
SetStat0
move.l
move.l
move.l
addr of path descriptor (PD_)
addr of device static storage (V_)
addr of process descriptor
system global data pointer
#$4000,d0
SetStat0
#E$UnkSvc,d1
#Carry,ccr
unknown service
error exit
PD_RGS(a1),a0
R$a0(a0),a0
V_PORT(a2),a3
get callers register stack pointer
get command buffer addr
init board address register
* copy marked in d0.w words from command buffer (pointed to by a0)
* to appropriate mailboxes
moveq
move.b
lsr.l
and.w
cmp.b
bhi.s
tst.w
bpl.s
and.w
Write_Mbox
move.w
addq.l
cmp
bhs.s
Com_exe_Ok:
moveq.l
rts
#0,d1
d0,d1
#4,d1
#$c00f,d0
d0,d1
Com_exe_Err
d0
Read_Mbox0
#$f,d0
(a0,d1.w*2),MBOX0(a3,d1.w*2)
#1,d1
d1,d0
Write_Mbox
#0,d1
Com_exe_Err:
move.w #E$BMode,d1
ori.b
#Carry,ccr
rts
Read_Mbox0
and.w
Read_Mbox
move.w
addq.l
cmp
bhs.s
bra.s
exit without error
bad mode
error exit
#$f,d0
MBOX0(a3,d1.w*2),(a0,d1.w*2)
#1,d1
d1,d0
Read_Mbox
Com_exe_Ok
pag
**************************************************************
TermNat:
*
(a1)
addr of device descriptor module (M$)
*
(a2)
addr of device static storage (V_)
*
(a4)
addr of proces descriptor
*
(a6)
system globla data pointer
*
move.l
M$Port(a1),a3
get trooper base address and init a3 reg.
* disable trooper IRQ (?)
move.b
suba.l
OS9
rts
Vector_A(a2),d0
a0,a0
F$IRQ
get IRQ vector
remove TROOPER vector from OS9
7.11 troper.a.
107
pag
***************************************************************************
* Interrupt Service Routine
*
* Handles Interrupts from TrooperII
*
* Input:
*
(a2)
addr of device static storage
*
(a3)
port address
*
(a6)
system global data pointer
*
(a7)
system stack
*
* OS9 preserves only d0, d1, a0, a2, a3, a6. All others registers must be
* preserved by the driver if used.
*
* Description:
*
*
A signal: Signal(a2) is sent to the corresponding task
*
and irq status bits in the TrooperII are reset (?).
*
***************************************************************************
Trooper_IRQ:
*---> disable/flush CPU data cache
move.l
os9
#fldata+disdata,d0
F$CCtl
disable, flush data cache
*---> test if really Trooper IRQ
move.w
bne.s
IRQ_REG(a3),d0
IRQ_ok
trooper IRQ pending set? (?)
yes
*---> enable CPU data cache
NoIRQ:
move.l
os9
ori.b
rts
IRQ_ok:
move.w
move.w
OS9
#endata,d0
F$CCtl
#Carry,ccr
enable data cache
Signal(a2),d1
Sig_ID(a2),d0
F$Send
put signal code
receivers process ID
otherwise error
IRQ_clr:
* clear pending flags (?)
IRQ_End
move.l
os9
move.w
rts
ends
#endata,d0
F$CCtl
d0,d0
* end of "troper.a"
enable data cache
clear carry flag
7.12 troptest.c.
7.12
troptest.c.
/*
* Program testujacy TROOPER
* mw’99
*/
#include <stdio.h>
#include <modes.h>
#include <errno.h>
extern int errno;
unsigned short Buf[16];
int PathNo;
/****************************************************************/
/*
Test z uzyciem drivera
*/
/****************************************************************/
int SendMb (from,to)
int from;
int to;
{
return(ss_com(PathNo,16*(from%16)+(to%16)+0x8000,Buf));
}
int ReadMb (from,to)
int from;
int to;
{
return(ss_com(PathNo,16*(from%16)+(to%16)+0x4000,Buf));
}
/*******************************************************************/
/*
Program testujacy TROOPER_TEST
*/
/*******************************************************************/
main ()
{
char * DevNam = "/troq";
int i, res=2;
int f=0, t=5;
if ((PathNo = open (DevNam,S_IREAD | S_IWRITE)) == -1)
{
res = errno;
_errmsg(2,"Nie moge otworzyc %s - %d\n",DevNam,errno);
exit (errno);
}
_errmsg(2,"%s otwarte prawidlowo\n",DevNam);
fprintf(stderr,"\033[H\033[J");
while(1){
tsleep(0x80000000l+25);
fprintf(stderr,"\033[H");
if(-1==ReadMb(f,t)){
_errmsg(2,"Error: %d\n",errno);
exit(errno);
}
else
for(i=f;i<=t;i++){
fprintf(stderr,"MBOX%02d = %04x\n", i, Buf[i]);
}
}
return 0;
}
#asm
108
7.12 troptest.c.
109
ss_com:
ok
#endas
movea.l
OS9
bcc.s
moveq
rts
4(a7),a0
I$SetStt
ok
#-1,d1
moveq
rts
#0,d1
Literatura
[1] LM34/LM35 Precision Monolitic Temperature Sensors. Aplication Note 460. National Semiconductor, LM34/LM35, 1986.
[2] Optoelectronics and Image Sensors. Data Book. Texas Instruments, Linear Products,
1990.
[3] OS-9 TECHNICAL I/O MANUAL. Microware Systems Corporation, Des Molnes
Iowa, 1990.
[4] MC68332 User’s Manual. Motorola Inc., MC68332UM/AD, 1991.
[5] 12-Bit Analog To Digital Conveters with Serial Control and 11 analog inputs Data
sheet. Texas Instruments, TLC2543, 1993.
[6] M628128 1 Megabit (128k x8) very fast SRAM with output enable Data sheet. SGS
Thomson Microelectronics., M628128, 1996.
[7] Master Selection Guide. Motorola Semiconductor, SG73/D, 1997.
[8] MAXIM +5V Powered, Multichannel RS232 Drivers/Receivers Data sheet. MAXIM, MAX232, 1997.
[9] Mm 29F010 1 Megabit (128k x8bit) CMOS 5V only Uniform sector Flash Memory
Data sheet. AMD, 29F010, 1998.
[10] ELFA. Elfa Polska, Warszawa, 1999.
[11] Sławomir Gora. Implementacja algorytmów starowania osi robota. Politechnika
Wrocławska, Wrocław, 1998.
[12] Jan Zabrodzki Marian Łakomy. Liniowe układy scalone w technice cyfrowej. Państwowe Wydawnictwo Naukowe, Warszawa, 1987.
[13] Bogdan Marzec. Wprowadzenie do standardu magistrali VME. Wydawnictwo Naukowo Techniczne, Warszawa, 1994.
[14] Marek Wnuk Robert Muszyński. Stanowisko naukowo-badawcze do badania algorytmów sterowania manipulatorów. Politechnika Wrocławska, Instytut Cybernetyki
Technicznej, Wrocław, 1997.
[15] Marek Wnuk Sławomir Gora. VFMC - swobodnie programowalny sterownik nap˛edu robota. Politechnika Wrocławska,Instytut Cybernetyki Technicznej, Wrocław,
1997.
[16] ZAP. DTR Układ ramion manipulatora o nap˛edzie elektrycznym. Zakłady Automatyki Przemysłowej, Ostrów Wlkp.Wrocław, 1996.

Podobne dokumenty