układ sterowania dla manipulatora badawczegorab.ict.pwr.wroc.pl/~mw/stud/dypl/krzys/praca.pdf ·...

110
Politechnika Wroclawska Uklad sterowania dla manipulatora badawczego Krzysztof Jarz ˛ abek Promotor: dr in˙ z. Marek Wnuk — Wroclaw 1999 —

Upload: phamdat

Post on 01-Mar-2019

222 views

Category:

Documents


0 download

TRANSCRIPT

PolitechnikaWrocławska

Układ sterowania dla manipulatorabadawczego

KrzysztofJarzabek

Promotor:dr inz. MarekWnuk

— Wrocław 1999—

Spistr esci

1 Wstep 61.1 Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.2 Celpracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3 Opiszawartoscipracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2 Manipulator 82.1 Konstrukcjamechaniczna. . . . . . . . . . . . . . . . . . . . . . . . . . 82.2 Układelektryczny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3 Koncepcjaukładu sterowania 12

4 Dokumentacjaukładu sterowania 154.1 Systemuruchomieniowy z magistralaVME . . . . . . . . . . . . . . . . 174.2 Sterownik VFMC - stronasygnałowa . . . . . . . . . . . . . . . . . . . . 17

4.2.1 Jednostkacentralna. . . . . . . . . . . . . . . . . . . . . . . . . 194.2.2 InterfejsmagistraliVME . . . . . . . . . . . . . . . . . . . . . . 22

4.3 Sterownik VFMC - stronaobiektowa . . . . . . . . . . . . . . . . . . . . 244.3.1 Układ przetwornikaanalogowo-cyfrowego. . . . . . . . . . . . . 264.3.2 Pomiarsygnałunapieciowegoz pradnicy tachometrycznej.. . . . 284.3.3 Pomiarsygnałunapieciowegopradupłynacegow obwodziesilnika. 284.3.4 Układ wzmacniaczaz zabezpieczeniemdla sygnaługotowosci

sterownika (CONTROL READY). . . . . . . . . . . . . . . . . . 294.3.5 Układ sterowaniawzmacniaczemmocy PWM. . . . . . . . . . . 304.3.6 Interfejskodera. . . . . . . . . . . . . . . . . . . . . . . . . . . 314.3.7 Konstrukcjamechaniczna.. . . . . . . . . . . . . . . . . . . . . 33

4.4 Wzmacniaczmocy PWM . . . . . . . . . . . . . . . . . . . . . . . . . . 344.4.1 Wejsciowy układformowaniasygnałówPWM i DIR . . . . . . . 364.4.2 Układ wyzwalaniamostkaH . . . . . . . . . . . . . . . . . . . . 374.4.3 Mostekmocy typuH . . . . . . . . . . . . . . . . . . . . . . . . 374.4.4 Układ pomiarupradu . . . . . . . . . . . . . . . . . . . . . . . . 384.4.5 Układ zabezpieczajacy przedprzeciazeniemwyjscia . . . . . . . 384.4.6 Układ sygnalizacjipracy . . . . . . . . . . . . . . . . . . . . . . 384.4.7 Pomiartemeperatury. . . . . . . . . . . . . . . . . . . . . . . . 394.4.8 Konstrukacjamechaniczna. . . . . . . . . . . . . . . . . . . . . 39

4.5 Rozdzielaczsygnałów . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.6 Zasilacz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4.6.1 Zasilaczeniskonapieciowe. . . . . . . . . . . . . . . . . . . . . . 454.6.2 Zasilaczsilników. . . . . . . . . . . . . . . . . . . . . . . . . . . 464.6.3 Konstrukcjamechaniczna.. . . . . . . . . . . . . . . . . . . . . 47

SPISTRESCI 3

5 Oprogramowaniesterownika. 495.1 OprogramowaniesterownikaVFMC . . . . . . . . . . . . . . . . . . . . 49

5.1.1 Inicjacjajednostkicentralnej. . . . . . . . . . . . . . . . . . . . 495.1.2 InicjacjainterfejsumagistraliVME . . . . . . . . . . . . . . . . 515.1.3 ProgramowaniepamieciFLASH ROM . . . . . . . . . . . . . . 535.1.4 ŁadowanieprogramudoVFMC. . . . . . . . . . . . . . . . . . . 53

5.2 Oprogramowaniejednostkinadrzednej. . . . . . . . . . . . . . . . . . . 565.2.1 Programdo wysyłaniaS-rekordów(vfmcload) . . . . . . . . . . 575.2.2 Sterownik niskiegopoziomu(troper). . . . . . . . . . . . . . . . 575.2.3 Programypomocnicze.. . . . . . . . . . . . . . . . . . . . . . . 58

5.3 Metodyprzygotowywaniai uruchamianiaprogramów. . . . . . . . . . . 585.3.1 Transmisjai ładowanieprogramówdo pamieci RAM sterownika

VFMC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.3.2 Uzycie programubootloaddo programowaniapamieci FLASH

ROM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

6 Podsumowanie 60

7 Dodatki 627.1 Sterownik VFMC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637.2 Wzmacniaczmocy PWM. . . . . . . . . . . . . . . . . . . . . . . . . . 747.3 Rozdzielaczsygnałów. . . . . . . . . . . . . . . . . . . . . . . . . . . . 807.4 bootcode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867.5 flash.h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907.6 flash.c. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 917.7 bootload.c. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957.8 buser.c. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997.9 treset.c. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1007.10 vfmcload.c. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017.11 troper.a. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1047.12 troptest.c. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

Spisrysunków

2.1 Dwuwahadło. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2 Schematpołaczen elektrycznychmanipulatora. . . . . . . . . . . . . . . 10

3.1 Ogólny schematblokowy układusterowaniamanipulatorem.. . . . . . . 13

4.1 Schematblokowy sterownikamanipulatora. . . . . . . . . . . . . . . . . 164.2 Schematblokowy VFMC. . . . . . . . . . . . . . . . . . . . . . . . . . 184.3 Schematblokowy VFMC - stronaobiektowa . . . . . . . . . . . . . . . 254.4 PłytkasterownikaVFMC. Widok z góry. . . . . . . . . . . . . . . . . . . 334.5 Schematblokowy wzmacniaczamocy PWM. . . . . . . . . . . . . . . . 354.6 Płytkawzmacniaczamocy PWM. Widok z boku. . . . . . . . . . . . . . 404.7 Rozdzielaczsygnałów. Widok z boku. . . . . . . . . . . . . . . . . . . . 434.8 Schematblokowy zasilacza. . . . . . . . . . . . . . . . . . . . . . . . . 444.9 Kasetkazasilaczyniskonapieciowych. . . . . . . . . . . . . . . . . . . . 464.10 Widok ogólny kasetz zasilaczemi sterwonikiemmanipulatora.. . . . . . 48

5.1 Pamiec sterownikaVFMC po resecie. . . . . . . . . . . . . . . . . . . . 545.2 Pamiec sterownikaVFMC po inicjacji dekoderówadresów. . . . . . . . . 545.3 Przepisywanieprogramuz FLASH ROM do RAM. . . . . . . . . . . . . 555.4 Zawartosc pamieci po wykonaniuoperacjiprzepisywania kodu do pa-

mieciRAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

7.1 VFMC - stronaobiektowa. Schemat.. . . . . . . . . . . . . . . . . . . . 647.2 VFMC - stronasygnałowa. Schemat.. . . . . . . . . . . . . . . . . . . . 657.3 VFMC. Obwóddrukowany M1. . . . . . . . . . . . . . . . . . . . . . . 667.4 VFMC. Obwóddrukowany M2. . . . . . . . . . . . . . . . . . . . . . . 677.5 VFMC. Obwóddrukowany M3. . . . . . . . . . . . . . . . . . . . . . . 687.6 VFMC. Obwóddrukowany M4. . . . . . . . . . . . . . . . . . . . . . . 697.7 VFMC. Rozmieszczenieelementównapłytce.Góra. . . . . . . . . . . . 707.8 VFMC. Rozmieszczenieelementównapłytce.Spód. . . . . . . . . . . . 717.9 Wzmacniaczmocy PWM. Schemat. . . . . . . . . . . . . . . . . . . . . 757.10 Wzmacniaczmocy PWM. Obwóddrukowany M1. . . . . . . . . . . . . 767.11 Wzmacniaczmocy PWM. Obwóddrukowany M2. . . . . . . . . . . . . 777.12 Wzmacniaczmocy PWM. Rozmieszczenieelementównapłytce. . . . . . 787.13 Rozdzielaczsygnałów. Schemat.. . . . . . . . . . . . . . . . . . . . . . 817.14 Rozdzielaczsygnałów. Obwóddrukowany M1. . . . . . . . . . . . . . . 827.15 Rozdzielaczsygnałów. Obwóddrukowany M2. . . . . . . . . . . . . . . 837.16 Rozdzielaczsygnałów. Rozmieszczenieelementównapłytce. . . . . . . 84

Spistablic

4.1 SygnałysterujaceblokiempamieciVFMC . . . . . . . . . . . . . . . . . 204.2 CON402.InterfejsQSPI.Opiswyprowadzen . . . . . . . . . . . . . . . 214.3 CON403.InterfejsBDM. Opiswyprowadzen . . . . . . . . . . . . . . . 214.4 CON404.Interfejstransmisjipomiedzysterownikami. Opiswyprowadzen 224.5 CON405.InterfejsłaczaRS232.Opiswyprowadzen . . . . . . . . . . . 224.6 CON401.VFMC- magistalaVME.Opiswyprowadzen . . . . . . . . . . 234.7 PrzełaczaniemagistralidanychTROOPER’a.Opissygnałów. . . . . . . 244.8 Przetwornik A/C. Wykorzystanewejscia . . . . . . . . . . . . . . . . . . 274.9 CON303.WejsciaprzetwornikaA/C. Opiswyprowadzen. . . . . . . . . 274.10 CON301.InterfejsVFMC-Wzmacniaczmocy PWM. Opiswyprowadzen . 304.11 CON302.Łaczekodera,I/O i tachometru.Opiswyprowadzen . . . . . . 314.12 J301.Konfiguracjakodera.Opiswyprowadzen . . . . . . . . . . . . . . 314.13 J302.Konfiguracjakodera.Opiswyprowadzen . . . . . . . . . . . . . . 314.14 J303.Konfiguracjakodera.Opiswyprowadzen . . . . . . . . . . . . . . 324.15 CON201.GniazdodlaprzewoduVH wewzmacniaczumocy PWM . . . 344.16 CON204.Gniazdowyjsciowo-zasilajacewzmacniaczamocy PWM . . . 364.17 Logiczny układformowaniasygnałuPWM i DIR . . . . . . . . . . . . . 374.18 CON202,CON203.Łaczeukładupomiarutemperatury. . . . . . . . . . 394.19 CON503.Rozdzielaczsygnałów. Łaczemanipulatora.Opiswyprowadzen. 414.20 CON504.Rozdzielaczsygnałów. Łaczezasilacza.Opiswyprowadzen. . . 414.21 CON501. Rozdzielaczsygnałów. Łaczesterownika VFMCP. Opiswy-

prowadzen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424.22 CON502. Rozdzielaczsygnałów. Łaczesterownika VFMCQ. Opiswy-

prowadzen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424.23 J501,J502,J503.Rozdzielaczsygnałów. Blokowaniesygnaługotowosci. 434.24 ŁaczeH11 zespołuzasilaczy. Opiswyprowadzen. . . . . . . . . . . . . . 454.25 ŁaczeH15 zespołuzasilaczy. Opiswyprowadzen. . . . . . . . . . . . . . 45

5.1 PołaczenieTROOPERII - jednostkacentralnasterownikaVFMC. . . . . 51

7.1 VFMC-stronasygnałowa. Spiselementów. . . . . . . . . . . . . . . . . 727.2 VFMC-stronaobiektowa. Spiselementów. . . . . . . . . . . . . . . . . 737.3 Wzmacniaczmocy PWM. Spiselementów. . . . . . . . . . . . . . . . . 797.4 Rozdzielaczsygnałów. Spiselementów . . . . . . . . . . . . . . . . . . 85

Rozdział 1

Wstep

1.1 Wpr owadzenie

W trakciepracbadawczychzwiazanych ze sterowaniemrobotamikoniecznejest testo-wanieopracowywanych algorytmów. Zazwyczajpierwszymetapemtestowaniajest sy-mulacjakomputerowa. Metodata, pozaniezaprzeczalnymi zaletami,mapowaznewady.Model symulacyjny nie uwzgledniawszystkichzjawisk wystepujacych w rzeczywistymobiekcie.Istotnym problememstajesie dostepdo odpowiednioelastycznego stanowiskabadawczego, które pozwoliłoby implementowac nowe algorytmyw warunkachrzeczy-wistych bez nadmiernego zagłebianiasie w szczegóły techniczne. Niestety, dostepneroboty posiadaja zamkniete, trudnedo zmodyfikowaniaukłady sterowania,do którychzazwyczajbrak jestodpowiedniodokładnejdokumentacji,abymoznabyło dokonac po-zadanych zmian.

1.2 Cel pracy

Celempracy jest opracowanie i zrealizowanie sterownika dla manipulatoratypu ”po-dwójnewahadło”napedzanego silnikami pradustałego. W zakrespracy wchodziprzy-gotowanieoprogramowaniasterownika umozliwiajacego implementacje przykładowychalgorytmówsterowaniamanipulatora.

Sterownik manipulatorapowinien pracowac w systemieotwartym, czasurzeczywi-stego. Poszczególneelementysterownika powinny stanowic odrebnesamodzielnemo-duły. Całyukładsterownikapowinienposiadac mechaniczny standardeurokarty.

Oprogramowaniesterowników VFMC jak i jednostkinadrzednejpowinno byc two-rzonetakze w jezykachwyzszego rzedu (nie zagłebiajac sie w szczegóły techniczne)korzystajac ze sterowników niskiego poziomu. Tworzenieoprogramowaniana niskimpoziomie,wrazz przesyłaniemgo dosterownikapowinnobyc elastyczne.

Cały układsterownika powinien spełniac ogólneprzepisyBHP odnosnie,wyłaczni-ków awaryjnych (nasterowniku i przy manipulatorze)i uziemienia.Powinien posiadactakzeczujniki termicznenaelementachwydzielajacych ciepło i zabezpieczeniaprzecia-zeniowe.

1.3Opis zawartosci pracy 7

1.3 Opis zawartoscipracy

W trakciepracprojektowychi konstrukcyjnychwykorzystanowczesniejszeopracowania[15], [11]. Pracazawieraopiskonstrukcjiorazdokumentacje wykonanego i uruchomio-negosterownika. Obejmujezarównoczesc sprzetowa:

dwasterowniki VFMC,

dwawzmacniaczemocy PWM,

rozdzielaczsygnałów,

zasilacz,

jak i programowa:

inicjacjasterownikaVFMC,

przesyłaniei uruchamianieprogramównasterowniku VFMC,

driver w systemieOS-9.

W trakcietworzeniasterownikakoniecznebyło wykonanieszerokiegozakresupracoróznym charakterze:

budowamodelu,

testowaniemodelu,

projektobwodówdrukowanych,

montaz prototypów,

uruchomieniei montaz prototypów,

oprogramowaniesterownikaVFMC (jezykC, asembler),

oprogramowaniejednostkinadrzednej(OS-9).

Uzyskany wynik to sterownik dwuwahadłaumozliwiajacy programowaniealgoryt-mów sterowanianaróznych poziomach(w tym nanajnizszym- jednokrokowy algorytmsterowaniasilnikiem w VFMC). Ze wzgledunamozliwosci systemunadrzednego i sys-temuOS-9,pracaz manipulatoremmozliwa jesttakzepoprzezsiec ethernet.

Rozdział 2

Manipulator

2.1 Konstrukcja mechaniczna

Manipulatormechaniczny typu ”podwójnewahadło”zostałwykonany w ZakładachAu-tomatyki Przemysłowej w Ostrowie Wielkopolskimna zleceniePolitechniki Wrocław-skiej. Jeston umieszczony na podstawie, która nadajecałej konstrukcji odpowiedniastabilnosc, ustawiajacjednoczesnieprzestrzen robocza w połozeniupionowym [14]. Za-kresykatówruchuramionwynosza360

i n 360

, odpowiedniodlaosiP i Q [16].

Rysunek2.1: Dwuwahadło.

W manipulatorzemozemywyróznic nastepujaceelementyskładowe(rysunek2.1):

2.2Układ elektryczny 9

1. kolumnaobrotugłównego,

2. napedramieniaI (os P),

3. napedramieniaII (osQ),

4. ramie I,

5. ramie II,

6. przekładniaramieniaII,

7. obciazniki,

8. puszkawyprowadzen elektrycznych.

Silnik osi P jest umocowany na kolumnieobrotugłównego i za pomoca przekładniharmonicznejo przełozeniu158:1nadajeruchpierwszemuramieniu(l=557.2mm)z mak-symalna predkoscia 1

3 [s 1]. Silnik osi Q jestumieszczony naramieniupierwszymi po-przezprzekładnie planetarna 35:1 poruszaramieniemdrugim (l=400mm)manipulatoraz maksymalna predkoscia 3

2 [s 1]. Zastosowanieprofili aluminiowych, a takzezastoso-wanieprzekładnipasowej umozliwiajacejumieszczenieobu silników współosiowo po-woduje,zecałakonstrukcjamozebyc uznawanazasztywna. Obciazniki zamocowanenaobu ramionachdajamozliwosc zmiany rozkładumas,azatemłatwychzmianparametrówdynamicznychmanipulatora.

2.2 Układ elektryczny

Manipulatorjestnapedzany zapomocadwóchsilników pradustałegoPZTK 88-35TRR.Podstawoweparametrysilnika:

Maksymalnenapieciepracy 35 [V],

Maksymalny pradw impulsie18 [A],

Maksymalnapredkosc 5313 [s 1].

W osiwałusilnikazostałaumieszczonapradnicatachometrycznaPATO 62-07R,orazkoderimpulsowo-przyrostowy incrementalencoderMOZ30. Rozdzielczosc koderawy-nosi 1024cykle na obrót, co przy wykorzystaniuczterechzboczysygnałówA i B dajeziarnoodczytu0.088stopnia(5’17”). Uwzgledniajacprzełozeniaprzekładniziarnood-czytuwynosi2” i 9” odpowiedniodlaosiP i Q.

Przewodysterujacemanipulatorem,orazprzewodyz czujnikówsawyprowadzonedopuszkiznajdujacejsienapodstawie robota(rysunek2.1).Wyprowadzeniatewrazpuszkazostaływykonanew ramachpracy.

2.2Układ elektryczny 10

"!$#

%'&()+* ,-'./0+1 23'45'687 9:';<'=8> ?

@'ABC+D EF'GHI+J K

LNMPORQRSUTWVYX[Z]\

^]_P`badc]e

fhg i jPg kml n

o

p

qYr stYu v wyx8z$|~ 8$

N$y "N 8'

¡¢£ ¤¥§¦Y¨¦N© ª8«+¬­®

¯°±"²³ ²´§µ·¶°§¸+¹º'»½¼ ¾ ¿À8Á Âà ÄÅÆÇ$È ÉÊ½È É½Ë§Ì[ÈÍyÎ ÏÐ ÑÒ8Ó§ÔÕ Ö×اÙÚ Û[ÜÝ$Þßà áâãä

åRæ çèRé ê

ëNì

í8î½ï§ð§ñò óô8õ½ö§÷§ø§ù úû8ü½ý§þ§ÿ !"#$ %!& '(" ) (*%+&,-./012 34/65 780 9 8*3:5<; =

>@?AB6CDE*FHGI6JKLMN6O PRQ6SUTV

W@XZY\[^]`_bacWedfhg`iZjlk

mon pqor stvuxwzy\u

Rysunek2.2: Schematpołaczen elektrycznychmanipulatora.

2.2Układ elektryczny 11

Do puszkimanipulatorajestdoprowadzonawiazkatrzechkabli:

1. sterowaniesilnikami - 4 zyły,

2. pomiarowy - 25 zył,

3. zerujacy - 1 zyła.

W puszcesygnałyrozdzielaja sie w kierunkuosi P i Q. Przewody wprowadzonedopuszkimoznałatwo odłaczyc od robota:

przewód4 zyłowy jestprzykrecany dokostki zaciskowej,

przewód 25 zyłowy jest połaczony w puszceza pomoca łaczaszufladowego typuDB25,

przewód1 zyłowy przykrecany jestpozapuszkado podstawy robota.

Okablowaniezostałozaprojektowanei wykonanetak,abymaksymalnieuproscic spo-sóbdoprowadzeniesygnałówdo elementówsterownika.

Rozdział 3

Koncepcjaukładu sterowania

Zgodniez załozeniamipracy dotyczacymi modułowosci jak i pracy w czasierzeczywi-stymukładsterowaniamanipulatoraopartoo systemmodułowy z magistrala VME [13].Jestto jedenze standardówokreslajacych budowe komputeramodułowego. Sensmo-dularnosci poleganatym, zew ramachdanego standardukomputeramodułowego uzyt-kownik madostepdowzajemniezgodnychpodwzgledemmechanicznym, elektrycznymi funkcjonalnym podzespołów, któremozeindywidualniedobierac. Wybór tegotypusys-temuwiazesie nastepujacymi korzysciamitypowymi dla systemówotwartych:

elastycznosc w konfigurowaniusprzetui oprogramowania,

dynamiczny rozwój dostepnychnarynkumodułów,

szerokaofertarynkowanajrózniejszychtypówsprzetuorazoprogramowania,

dostepdo standardóww dziedzinieoprogramowaniatakich jak systemoperacyjnyUNIX, OS-9,rodzinaprotokołów sieciowychTCP/IP.

VMEbusimplementujearchitekturekomputerowatypumaster-slave. Jednostkacentralnapracujew wielozadaniowym systemieczasurzeczywistego OS-9, który oparty jest nakoncepcjimodułówpamieci. Zostałtakzaprojektowany, by kazdymodułrealizowałokre-slonefunkcje. Modularnosc ta umozliwia właczanielub usuwanieposzczególnych mo-dułóww trakciekonfigurowaniaOS-9dlapotrzebkonkretnegosystemukomputerowego.W składczesci sprzetowej układusterowaniawchodza:

jednostkacentralnaVM662 wrazzesterownikiemdyskówCXM-SCSI,

sterownik napeduVFMC (dla kazdejz osi),

wzmacniaczmocy PWM (dla kazdejz osi),

zasilacz.

Pakiet VM662 zawiera:

jednostkecentralnaMC68060@50MHz(3.3V),

sterownik komunikacyjny - MC68EN360@33MHz,

13

|~v

~vz <z

`¡¢¤£¥¦§ ¨©¦ª

¥ «<¬­¯®°±²¯³´µ¶·¸¹º»¼½ ¼ ¾¼¿ÀÁÂà  ÄÂÅÆ

Ç*È^É ÇÊËÊÍÌÎÐÏÑÓÒ ÑÔ ÔÕ×ÖØÙÚ4ÛÜÝÞ Ûß Ûßààààáâ ãäåçæèé4êëìí

êî êîïïïïðñ òóô

õö÷ùø ú<ûüýöþø ÿüý

Rysunek3.1: Ogólny schematblokowy układusterowaniamanipulatorem.

pamiec - 16MB DRAM (32bit),1MB FLASH, 1MB DPRAM,

interfejsVME,

sterownik dyskówCXM-SCSI,

Sterownik napedu VFMC [15] (VMEbusFreeProgrammableMotion Controller) zbu-dowany jestw oparciuo 32-bitowy mikrokontrolerMC68332[4] jako modułslavei in-terrupter magistraliVME. Komunikacjaz jednostka centralna odbywa sie przy pomocyinterfejsuVME (TROOPERII) . Sterownik ma mozliwosc wykonywaniapomiarupara-metrówtakichjak:

połozenieramienia(koder),

predkosc ramienia(koder, pradnicatachometryczna),

temperaturaradiatorówwewzmacniaczumocy PWM

pradpłynacy w obwodziesilnika

a takzeposiadawyjsciasterujace:

wzmacniaczemmocy PWM (PWM-wypełnienie,DIR-kierunek),

sygnałemgotowosciControl Readydla zasilacza.

14

Sterownik napeduosiVFMC jestpomostemłaczacym jednostkecentralnazewzmacnia-czemmocy PWM. Jednostkanadrzednakomunikujesie poprzezmagistrale VME przypomocy 16-sto16-bitowych dwustronniedostepnych rejestrów(mailbox)wbudowanychw interfejsTROOPERII.

Wzmacniacz mocy PWM ma za zadaniesterowac napedemosi robota,na podstawiesygnałówPWM i DIR. Posiadawbudowanezabezpieczeniepradowe orazczujniki tem-peraturyna obu radiatorach.Sterowanienapedemodbywa sie w układziemostkatypuH, w składktóregowchodza tranzystorymocy typuMOSFET. Załaczaniemtranzystorówsterujeukładlogiki poddajacy obróbcesygnałysterujace.

Zasilacz dostarczanapiecia obiektowe +5V, +12V, 12V, +24V, oraz napiecie +50V,któremozezostac właczonedopieropopojawieniusie sygnaługotowosci.

Oprogramowaniesterownikamanipulatoramoznapodzielic nadwieczesci:

oprogramowaniesterowników VFMC,

programysterujacez magistraliVME.

Oprogramowaniesterowników jestprzesyłanew postaciS-rekordówz jednostkinad-rzednejpoprzezmagisrale VME do sterowników VFMC. Przesyłanieto umozliwia pro-gram bootload, który umieszczony jest w pamieci typu FLASH ROM w sterownikuVFMC. Umieszczenieinnego programustartowego w pamieci FLASH ROM jest moz-liwe poprzezinterfejsBDM jednostkicentralnejsterownikaVFMC. Programemwysyła-jacym S-rekordyodstrony magistraliVME jestvfmcload. Do wysyłaniaprogramów, dojednostkinadrzednejdla sterownikaVFMC moznaposłuzyc sie programemkermit.

Programemsterujacym niskiego poziomu(driver) jest troper. Posiadaon funkcjeumozliwiajaceodczyt/zapisdanychz/dosterownikaVFMC.

W celachtestowychzostałynapisaneprogramysterujacez magistraliVME:

buser - testujacy obecnosc sterownikanamagistraliadresowej,

treset - resetujacy sterownik VFMC,

troptest - testujacy sterownik niskiegopoziomu.

Rozdział 4

Dokumentacjaukładu sterowania

W układziestarowaniamanipulatoramoznawyróznic czesc obiektowa i sygnałowa (ry-sunek4.1).Postroniesygnałowej sterownikaznajdujesie:

1. systemuruchomieniowy z magistralaVME,

2. dwasterowniki VFMC - strony sygnałowe.

Jednostkanadrzednaze sterownikiem dysku osadzonesa w kasecie6U magistraliVME. Całosc zostaławykonanaprzezfirmePEPModularComputers.Sterownik VFMCzostałzaprojektowany, wykonany (wraz z obwodemdrukowanym) i przetestowany wramachtej pracy napodstawie [15] i [11]. W czesci obiektowej mozemywyróznic:

1. dwasterowniki VFMC - strony obiektowe,

2. dwawzmacniaczemocy PWM,

3. rozdzielaczsygnałów,

4. zasilacz,

Wzmacniaczmocy PWM, rozdzielaczsygnałóworazzasilaczzastałzaprojektowany,wykonany (wraz z obwodemdrukowanym) i przetestowany w ramachpracy (wzmac-niaczmocy PWM napodstawie [11]) Obieczesci posiadajaosobnemasyi sagalwanicz-nie odseparowaneod siebieza pomoca transoptorów. Zabezpieczato całkowicie układnadrzedny przedskutkamiawarii układuwykonawczego.

16

!"#!%$!& '()*+,(-./0123%4/56789:7; <=

> ?>@ABC

DEFGIHJKL MNOPRQSUTWVUXYZ[\]_^`ab cdfe ghijlkmfn opqrstvu

wxyz|zxy~

wy

U ¡¢f£ ¤¥¦§©¨ª¬« ­®¯°±²v³

´µ¶·¸¹º·¸µ¶»¸¼

½´¶¾¿

À ÁÂÃÄÅÆÇ ÈÉÊËÌÎÍÏ ÐÑÒÓUÔ Õ Ö×ØÙÎÚ Û ÜÝÞ ß

àváâ ãäå æçvè

éêëì íîïðUñ ò óôõöÎ÷ ø ùúûüUý þ ÿ

!"#$

% &'( )*,+

- ./0 12,3

4 56789

: ;<=>?

@ ABCDE

F GHIJK

LMNOPQRST

UVWX Y

Z[

\ ]^_`ab

c defghi

j klmno

p qrstu

v wxy z,|

~ ,

¡¢£

¤ ¥¦§¨©ª

« ¬­®¯°

± ²³´µ¶

· ¸¹º »¼,½

¾ ¿ÀÁ ÂÃ,Ä

Å ÆÇÈÉÊ

Ë ÌÍÎÏÐ

Ñ ÒÓÔÕÖ

× ØÙÚÛÜ

ÝÞßà

áâãä

åæçèéêë ì

íîïð

ñòóô

õö÷øùúû ü

ýþÿ

!"#$%'&( )*+,-. /012435 6789:; <=>?4@A BCDEFG HIJK'L

MNO'PQRST U VWX YZ[\ ]^_ `abcdefghi j

klmnopqr stuvwxyz|~

¡¢£¤ ¥¦§¨©ª«¬­ ®¯°±²³ ´

µ¶·¸¹º»¼

½¾¿ ÀÁÂÃÄÅÆ ÇÈÉÊ

ËÌÍ Î ÏÐÑÒÓÕÔÖ ×ØÙÚÛ'ÜÝ Þßàáâã äåæç'èé êëìíîï ðñòó'ôõ ö÷øùúû üýþÿ ! "

#$%& '()* +,- ./01 234 567 89 : ;<= >?@ ABC DEF G

HIJK LMNO PQR STUV WXY Z[\ ]^ _ `ab cde fgh ijk lmnopq

rstuv

wxyzy|~y~

¡¢ £¤¥¦§¥

¨©ª«¬­ ®¯°±²­ ³´

µ ¶·¸¹º »¼ ½¾¿À Á¾

ÂÃÄÄÅ

Æ ÇÈÉÊÆÊ Ë

ÌÎÍÐÏÑÌÐÒÓÑÌÎÍ

ÔÐÕÐÖ

×ØÙ ÚÛÜ ÝÞß àáâ

ãäåæ çè

éêê ëììíîïðï

Rysunek4.1: Schematblokowy sterownikamanipulatora.

4.1Systemuruchomieniowy z magistrala VME 17

4.1 Systemuruchomieniowy z magistrala VME

Systemuruchomieniowy z magistralaVME produkcjiPEPModularComputerszostałza-kupiony zesrodkówgrantuaparaturowegoKBN w 1998roku. W składsystemuwchodzi:

1. systemoperacyjny OS-9,

2. jednostkanadrzednaVM662 wrazz:

pamieciaRAM 16MB, pamieciaFLASH 1MB, karta sieciowaEthernet10B2,

3. sterownik dyskuCXM-SCSI,

4. dysktwardy,

5. napeddyskietek1.4MB,

6. zasilacz,

7. 15slotowamagistralaVME zezłaczamiJ1,J2,

8. kaseta6U.

Jednostkanadrzednajestzbudowanaw oparciuoprocesorMC6806050MHz,MC68EN36033MHz. Posiada256KB pamieciSRAM,6 portówszeregowych(w tym piec dostepnychnapłycie czołowej jako RS232(RJ45)),interfejsCXC i oprogramowaniefirmowe PEP-bug. Sterownik dysku CXM-SCSI, jest kompatybilny ze standardemSCSI1 i SCSI2.Maksymalnapredkosc transmisjidla tego sterownika wynosi5MB/s zarównodla trans-misji synchronicznejjak i niesynchronicznej.

4.2 Sterownik VFMC - stronasygnałowa

Czesc sygnałowasterownika VFMC opartajestnamikrokontrolerzeMotoroli MC68332i interfejsiemagistraliVME firmy TUNDRA (TROOPERII). Mikrokontroler wraz zpamieciami RAM i FLASH ROM, zegaremi interfejsemRS232stanowi samodzielnajednostke obliczeniowo - sterujaca. W połaczeniuz interfejsemTROOPERII stajesiecałkowicie funkcjonalnym modułemtypuslavemagistraliVME.

4.2Sterownik VFMC - strona sygnałowa 18

ñòóñôõö÷øùúû

üýþÿ

!"

#$%$&

'()*+,

-./0123

456789

:;<=>?@A

BCDEBFGHIJKL

MNMOPMPQRSTU

VWXYZ[\]^_`a

bcdefghijklnm

opqnrsutv rwqxyz

|n~

n

n

n n

¡

¢£¤¥¦§¨

©

ª «

¬

­®¯ °±²

³´µ¶·¸

¹ºn»¼ ½ ¾¿nÀÁ

ÂÃnÄÅ Æ

ÇÈnÉÊ

ËÌnÍÎ Ï

ÐÑnÒÓ Ô

ÕÖn×Ø Ù

ÚÛnÜÝ Þ

ßànáà â

ãänåä æ

çènéêë

ìíîïðñò

óôõö÷øù

úûüýþÿ

! "#$

%&'()(

*+,

Rysunek4.2: Schematblokowy VFMC.

4.2Sterownik VFMC - strona sygnałowa 19

4.2.1 Jednostkacentralna

W składjednostkicentralnejwchodzi:

1. mikrokontrolerMC68332wrazz układemzegara,

2. 2 pamieciSRAM 128k 8,

3. pamiec FLASH ROM 128k 8,

4. interfejsłaczatransmisjiszeregowej RS232(MAX232ACWE),

5. łaczaQSPI,TPU,SCI i BDM.

Mikrokontrolerw obudowie PQFP132pinwraz z układemzegarajest umieszczonynagórnejwarstwiedruku(rysunek7.7).Nasygnałachwejsciowychmikrokontrolera:

PF1 . . .PF6,

TSTME,

HALT,

BERR,

DSACK0 - DSACK1,

AVEC,

BKPT,

T2CLK.

wymuszony zostałstanwysoki poprzezdrabinke rezystorów4.7kΩ RP401i RP402orazrezystorR404820Ω (RESET).

Linie danych D0, D3 i D9 podłaczonesa poprzezrezystoryR401..R403i diodyD401..D403dosygnałuRESET. Powodujeto wymuszeniestanuniskiegonatych liniachpodczasresetumikrokontrolera(napozostałychliniach jestwymuszany stanwysoki we-wnatrz mikrokontrolera). Wymuszeniestanuniskiego na liniach powodujeustwanienieportówdwufunkcyjnychna:

CSBOOT - 8bit (D0),

ADDR19 (D3),

PORTF (D9).

Do adresownia pamieci SRAM wykorzystujesie linie A01-A17. Pierwszapamiec,U403, podłaczonajest do górnejczesci magistralidanych (D08-D15),drugazas U404,do dolnej (D00-D07). Podłaczenieto zapewnia dostepdo 16 bitowej pamieci SRAM wobszarze128k 16. Pamiec FLASH ROM adresowanajest liniami A00-A16 magistraliadresowej a jej linie danych przyłaczonesado górnejczesci magistrali(D08-D15).Blokpamieci sterowany jestzapomoca 6 linii wyboru(chip select)mikrokontrolera.Sygnałysterujacezawartesaw tabeli4.1.

4.2Sterownik VFMC - strona sygnałowa 20

Tablica4.1: SygnałysterujaceblokiempamieciVFMC

chipselect pamiec sygnał

CSBOOT FLASH ROM U405 ECS0 SRAM U403 WCS1 SRAM U404 WCS2 SRAM U403 E1CS2 SRAM U404 E1CS6 FLASH ROM U405 GCS7 FLASH ROM U405 W

Mikr okontroler

MikrokontrolerMotoroli MC68332[4] wykonany jestw techniceHCMOSw obudowie132wyprowadzen. W jegoskładwchodza:

jednostkacentralnaCPU32- 32bitowy procesorpracujacy zzegaremmaks.25MHz,

mikroprogramowalny układczasowy TPU o 16 kanałachpracujacych w wielu try-bach,

podsystemydokomunikacjiszeregowej - synchronicznej(QSPI)i asynchronicznej(SCI),

2kB pamiecistatycznejRAM,

programowalny układdekoderaadresów(chip select),

wbudowany emulatorBDM (BackgroundDebuggingMode).

Mikroprogramowalny układczasowy TPUjestwykorzystywany dosterowaniawzmac-niaczamocy PWM sygnałemPWM(funkcjaQOM QueuedOutputMatch). FunkcjeTPUFQD (FastQuadrature Decode) orazNITC (New Input TransitionCounter) słuza w ste-rowniku do odczytupozycji z koderów. TPU wykorzystujesie takze do komunikacjipomiedzysterownikami.

Podsystemkomunikacjiszeregowej synchronicznejQSPI(QueuedSerialPeripheralInterface) wykorzystujesie do odczytupomiarówz przetwornika A/C. PodsystemSCI(SerialCommunicationInterface), jestwyprowadzony poprzezinterfejsMAX232 w po-staciłaczapomocniczego.

Pamiec SRAM

M628188firmy SGSThomson[6] jestasynchroniczna pamiecia statycznaRAM 1M bi-towa z sygnałemoutput enable. Zostaławykonanaw obudowie SOJ400 mils. Cyklpojedynczego kroku wynosi20ns,zas dostepdo pamieci trwa 15ns. Podczaspracy pa-miec pobiera175mA,a w trybie oszczedzaniaenergii (standby) 4mA. Zasilanieukładuwynosi5V.

4.2Sterownik VFMC - strona sygnałowa 21

Pamiec ta jest wykorzystywanaprzezsterownik VFMC do przechowywaniadanychoraprogramuuzytkownika. Ze wzgledunakrótki czasdostepu(który jest5 krotniekrót-szy od FLASH ROM), Programumieszczony we FLASH ROM po uruchomieniuprze-kopiowujesie dopamieciSRAM i tamsieuruchamia.

Pamiec FLASH ROM

29F010firmy AMD [9] jest 5V 1M bitowa pamiecia FLASH ROM o 70nsdostepie.Pobórpraduprzezukładwynosi30mApodczasodczytui 50mApodczascyku zapisulubkasowania.W stanieoszczedzaniaenergi pamiec pobiera<25µA. Zastosowany układjestw obudowie TSOP32pintypuReverse. Ilosc cyklów kasowaniawynosi100000.PamiecFLASH ROM słuzy doprzechowywaniakoduprogramuuzytkownika.

Interfejs łaczaszeregowegoRS232

MAX232ACWE firmy MAXIM [8] jestdwukanałowym driveremlinii RS232o maksy-malnepredkosci 200kbps.Zasilany jestnapieciem5V a do pracy układpotrzebuje tylkoczterechzewnetrznychkondensatorów. Zastosowany interfejsjestw obudowie16pintypuSO.Omawiany interfejsstanowi czesc składowapomocniczego łaczaSCI.

Tablica4.2: CON402.InterfejsQSPI.Opiswyprowadzen

sygnał pin pin sygnał

GND 1 2 VCCPCS0 3 4 PCS1PCS2 5 6 PCS3SCK 7 8 MISO

MOSI 9 10 GND

Tablica4.3: CON403.InterfejsBDM. Opiswyprowadzen

sygnał pin pin sygnał

DS 1 2 BERRGND 3 4 BKPTGND 5 6 FREEZE

RESET 7 8 IFETCHVCC 9 10 IPIPE

4.2Sterownik VFMC - strona sygnałowa 22

Opis łacz

Czesc sygnałowa sterownika posiadawyprowadzonesygnałyzapomoca łaczówektypumeskiego. Wyprowadzonezłaczato:

CON402(tabela4.2)-5 2 pin - interfejsQSPI

CON403(tabela4.3)-4 2 pin - interfejsBDM

CON404(tabela4.4)- 7 2 pin - interfejsdo komunikacjipomiedzysterownikamiVFMC

CON405(tabela4.5)-2 5 pin - interfejsłaczaRS232

Tablica4.4: CON404.Interfejstransmisjipomiedzysterownikami. Opiswyprowadzen

sygnał pin pin sygnał

NC 1 2 T2CLKTP5 3 4 TP6TP7 5 6 TP8TP9 7 8 TP10

TP11 9 10 TP12TP13 11 12 TP14VCC 13 14 GND

Tablica4.5: CON405.InterfejsłaczaRS232.Opiswyprowadzen

sygnał pin pin sygnał

NC 1 2 T2CLKTP5 3 4 TP6TP7 5 6 TP8TP9 7 8 TP10

TP11 9 10 TP12TP13 11 12 TP14VCC 13 14 GND

4.2.2 Interfejs magistrali VME

InterfejsmagistraliVME opartyjesto układTROOPERII firmy Tundra.Wrazz czterema8-bitowymi dwukierunkowymi buforami trójstanowymi tworzy układ wymiany danychpomiedzyjednostkacentralna (MC68332)anadrzedna (VM662).

4.2Sterownik VFMC - strona sygnałowa 23

Tablica4.6: CON401.VFMC- magistalaVME.Opiswyprowadzen

wyprowadzenie kolumnaa kolumnab kolumnac

1 D00 NC D082 D01 NC D093 D02 NC D104 D03 NC D115 D04 NC D126 D05 NC D137 D06 NC D148 D07 NC D159 GND NC GND10 NC NC NC11 GND NC NC12 DS1* NC SYSRESET*13 DS0* NC LWORD*14 WRITE* NC AM515 GND NC A2316 DTACK* AM0 A2217 GND AM1 A2118 AS* AM2 A2019 GND AM3 A1920 IACK* GND A1821 IACKIN* NC A1722 IACKOUT* NC A1623 AM4 GND A1524 NC IRQ7* A1425 NC IRQ6* A1326 A05 IRQ5* A1227 A04 IRQ4* A1128 A03 IRQ3* A1029 A02 IRQ2* A0930 A01 IRQ1* NC31 NC NC NC32 VCC VCC VCC

TROOPERII jestpojedynczymukłademtypuslavemagistraliVME. Komunikujesiezapomoca16 wewnetrznych rejestrówmailboxdostepnychzarównood magistraliVMEjak i od strony sterownika. Posiadamozliwosc generacjiprzerwan na magistraliVMEna siedmiupoziomachpriorytetowych. Układ mozebyc adresowany z magistraliVMEw trybachA32, A24 i A16 i obsługujedanew trybie D16 i D8. Od strony sterownika(lokalnej) układ jest kompatybilny z rodzina 68K, orazzgłaszaprzerwaniana czterechpoziomach.TROOPERII mawbudowany dekoderadresowy dla magistraliVME, któryumozliwia programowanie(od strony lokalnej) adresu(slaveaddress) i modyfikatorów(addressmodifiers).

Magistraladanych TROOPER-a(LD0..LD15) jest podłaczonapomiedzyczterybu-fory U406..U409pozwalajacenaprzełaczanielinii danch.Połaczeniemagistralidanych

4.3Sterownik VFMC - strona obiektowa 24

dojednostkicentralnejlub domagistraliVME zaleznejestodsygnałówBWR.BRD(Data

Buffer DirectionControl), LBENB (LocalData Buffer EnableControl) i VBENB (VME-BusData Buffer EnableControl) (tabela4.7)

Tablica4.7: Przełaczaniemagistralidanych TROOPER’a.Opissygnałów

operacja BWR.BRD LBENB VBENB

TROOPER-> VME H H LVME -> TROOPER L H LTROOPER-> MC68332 H L HMC68332-> TROOPER L L H

SygnałyVIRQ1. . .VIRQ7 połaczonezostałydo magistraliVME poprzezinwerteryU410 i U411do sygnałówIRQ1*.. . IRQ7*. Do sygnałuSYSRESET*zostałpodłaczonyrezystorR407w celuwymuszeniastanuwysokiego,jednakzeo rezystancjinatyle duzej,by pozwolic naresetlinii.

Interfejs magistraliVME nie wykorzystujewszyskichsygnałówdostepnych na ła-czówceP1. Sygnałydoprowadzonedo sterownikaVFMC poprzezzłaczeCON401znaj-duja siew tabeli4.6

4.3 Sterownik VFMC - stronaobiektowa

Czesc obiektowasterownikaVFMC mazazadaniegalwaniczneodseparowaniesygnałówobiektowych z czesci sygnałowej, zebraniepomiarówz obiektui wzmocnieniesygnałuCONTROL READY (rysunek7.1). W czesci obiektowej mozna wyróznic nastepujacebloki funkcjonalne:

1. Układprzetwornikaanalogowo - cyfrowego,

2. Prostownik sygnałunapieciowegoz tachometru,

3. Filtr sygnałunapieciowegoz pomiarupradupobieranegoprzezsilnik,

4. Układ wzmacniaczaz zabezpieczeniemsygnaługotowosci sterownika CONTROLREADY,

5. Układsterowaniawzmacniaczemmocy PWM,

6. Interfejskodera,

7. Wejsciesygnałusynchronizacji(PF7).

4.3Sterownik VFMC - strona obiektowa 25

/

02143 5 687:9<;81:=

>@?8A B4CD2E4F GIHKJL2M4N OQP8R

SUTWVYX[Z]\ ^

_a`cb@d2ef`cgheaikjml2n

oqpsrft

uwvyxhz[m|

~m

[[:k I[

c] ¡ ¢ £¤¥¦§

¨@© ª «¬f­®¯[°

±@²´³

Rysunek4.3: Schematblokowy VFMC - stronaobiektowa

4.3Sterownik VFMC - strona obiektowa 26

4.3.1 Układ przetwornika analogowo-cyfrowego.

Układprzetwornikaanalogowo-cyfrowegoskładasie z:

przetwornikaA/C TLC2543,

złaczadodatkowychwejsc pomiarowych,

zródłanapieciaodniesieniaRef02,

trzechtransoptorówHCPL2631.

Przetwornik AD TLC2543

Zastosowany przetwornik TLC2543U309firmy TexasInstruments[5] dopomiarunapiecpochodzacychzewzmacniaczamocy PWM manastepujacewłasnosci:

rozdzielczosc 12 bitów,

czaskonwersji10µs,

11wejsc analogowych,

3 tryby testowe(Ref+,Ref-, (Ref+- Ref- )/2),

próbkowanewejsciasample-and-hold,

bładliniowosci1 LSB,

wewnetrzny zegarmax4.1MHz,

wyjsciesygnalizacjikoncaprzetwarzaniaEndOf Conversion,

programowalnakolejnosc bitów MSB lub LSB

programowalnafunkcjaoszczedzaniaenergi PowerDown,

programowalnadługosc słowadanych

interfejsSPI

obudowaPSOP

Przetwornik jestpołaczony z jednostkacentralnazapomoca interfejsuQSPI.SygnałyDINP (DataInput), I/O Clock orazCSsawejsciamipołaczonymi odpowiedniodosygna-łów MOSI (MasterOutSlaveIn), SCK, PCS0poprzeztransoptoryU301,U302i U303.

W sterowniku przewidziano mozliwosc pomiarudodatkowych zewetrznych napiecdoprowadzanychprzezłaczeCON303(tabela4.9)

4.3Sterownik VFMC - strona obiektowa 27

Tablica4.8: Przetwornik A/C. Wykorzystanewejscia

sygnał wejscie

VI AIN0Vtemp1 AIN1Vtemp2 AIN2Vtacho AIN3

Tablica4.9: CON303.WejsciaprzetwornikaA/C. Opiswyprowadzen.

wyprowadzenie sygnał

1 +5V2 wejscieAIN103 wejscieAIN94 wejscieAIN85 wejscieAIN76 wejscieAIN67 wejscieAIN58 wejscieAIN49 REF+10 GND obiektowe

NapiecieodniesieniaRef02

Układ Ref02dostarczanapiecia+5V i GND dla wejsc Ref+ i Ref- układuprzetwornika[10]. Ref02jest zasilany napieciem12V. KondensatoryC303..C305stanowia układfil-tracji napieciaodniesienia.Podstawoweparametryukładu:

napieciezasilania+8V.. .+40V,

pobórpradu1.4mA,

napieciewyjsciowe+5V 15V, 15mV,

zakrestemepratur-40 C.. .85

C.

Transoptor HCPL2631

Układ HCPL261firmy TexasInstrumentsjest podwójnym transoptoremo izolacji gal-wanicznejmin 3 kV [2]. Maksymalnapredkosc przełaczaniawynosi 75ns. Pozostałeparametryto:

maxnapieciezasilania7V

maxpradwysciowy 16mA

maxpradwejsciowy 15mA

4.3Sterownik VFMC - strona obiektowa 28

W sterowniku VFMC transoptorytypu HCPL 2631sa zasilonenapieciem5V. Słuzaonedo transmisjidanych w standardzieTTL. W celu dopasowaniawejsc i wyjsc trans-optorazastosowanorezystoryograniczajacepodłaczoneszeregowo. I tak,dlawejsc pod-łaczanorezystor560Ω, który ograniczałpraddiody nadawczejdo 5V 1 µ 6V

560Ω ¶ 6mA. Prad6mA jestwystarczajacy, by załaczyc klucz transoptora,a jednoczesnienatyle mały, abymogło go wymusic dowolne wyjscieTTL lub port wyjsciowy MC68332. W szereg ztranzystoremwyjsciowym właczanorezystor330Ω, który ograniczałprad w kolektorzekluczado 5V 0 µ 6V

330Ω ¶ 13mA. Prad ten jest wystarczajacy do zapewnieniawystarczajacejszybkosci narastaniazboczysygnałuprzy sterowaniudowolnego wejsciatypu TTL, czyHCMOS.

4.3.2 Pomiar sygnałunapieciowegoz pradnicy tachometrycznej.

Sygnałnapieciowy z pradnicy tachometrycznejumieszczonejnaosisilnikamanipulatoramozewynosic maksymalnieok 80V. W zaleznosciodkierunkuobrotówsilnika,napiecieto mozesie równac +80V lub -80V.

Pierwszymetapemdostosowanianapieciaz tachometrudo standarduprzetwornikaTLC2543jest układ dzielnikanapieciaz układemcałkujacym. Napieciez pradnicy ta-chometrycznejjestdzielonew dzielnikunapieciaR317,R318i R319w stosunku1:16.4(1kΩ:16.4kΩ). Maksymalnenapieciezadzielnikiemnapieciamozewyniesc około +4Vlub -4V. Rezystorwejsciowy dzielnikazostałpodzielony na dwie czesci po 8.2kΩ two-rzacz kondensatorem10nFukładcałkujacy o stałejcałkowania4.1kΩ 10 nF = 410µs.Diody D302 i D303 zabezpieczaja lini e przedpojawieniemsie wyzszego napiecia niz+12V lub -12V. Tak ograniczony sygnałtrafianaukładprostownika. Za prostownikiemotrzymujemynieujemnenapiecie,którepoprzezukładzabezpieczajacy (0.. .5V) D304,D305trafiado przetwornikaA/C do wejsciaAIN3.

Prostownik składasie z dwóchwzmacniaczyoperacynych pracujacych w układachwzmacniaczyz ujemnym sprzezeniemzwrotnym [12].

W przypadku,gdy napieciez pradnicy tachometrycznejjest dodatnie,na obu wej-sciachwzmacniaczaoperacyjnego U312pojawia sie tensampotencjał.Tendodatnipo-tencjałblokujewyjsciewzmacniaczaU311. Układ U312pracujeterazjako wzmacniaczsygnałuzesprzezeniemzwrotnym o wzmocnieniu10kΩ

10kΩ ¶ 1. Natomiast,gdy napieciezpradnicy tachometrycznejjest ujemneukład U311 dzieki ujemnemusprzezeniuzwrot-nemuwymuszaprad płynacy przezR320. Prad ten wymuszapodniesieniepotencjałuwejsciadodatniego układuU312do poziomu0V. U312pracujewtedyjako wzmacniaczodwracajacy o wzmocnieniu-1.

4.3.3 Pomiar sygnałunapieciowegopradu płynacegow obwodziesil-nika.

Prad jest mierzony metoda posrednia. Spadeknapieciana rezystorachpomiarowych wobwodziesilnika we wzmacniaczumocy PWM jest wzmacniany i filtrowany przezfiltr

4.3Sterownik VFMC - strona obiektowa 29

typu T. Filtr ten złozony z rezystorówR324 i R325orazz kondensatoraC311stabili-zujenapieciepomiarowe. Stałaczasowa filtru wynosi1.95kΩ 10µF = 195ms. Sygnałjestzabezpieczony przedprzepieciemzapomoca diod D306 i D307 i jestpołaczony dowejsciaAIN0 przetwornikaA/C.

4.3.4 Układ wzmacniaczaz zabezpieczeniemdla sygnału gotowoscisterownika (CONTROL READY).

SygnałgotowoscisterownikaCONTROL READY zezwalanazałaczenienapiecia50V/30Azasilajacegomostkekmocy wewzmacniaczumocy PWM. Sygnałtenjestpołaczony łan-cuchowo przezobasterowniki VFMC orazprzezmanipulator. Sterowanietym sygnałempolegazatemnazamknieciułancuchapradowego,któregopoczatkiemjestnapiecie+24V,akoncemprzekaznik nanapiecie24V.

Sygnałsterujacy CONTROL READY (PF0)jest podwójnieodwracany przezinwen-teryz wejsciamiSchmitt’ai załaczapoprzezrezystorR313transoptorU305.Pozałacze-niu układu,port PF0jestustawiony jako wejscie.Powodujeto pojawieniesie logicznegozeranawyjsciubramkiU308E,azatemzablokowaniupoprzezbramkeU308Ci transop-tor U305sygnałuCONTROL READY.

Transoptor MCT2E.

Układ MCT2E firmy Texas Instrumentsjest pojedynczymtransoptoremo izolacji gal-wanicznejmin 3.55kV [2]. Maksymalnapredkosc przełaczaniawynosi 5µs. Pozostałeparametryto:

· maksymalnenapiecieUCB 70V,

· maksymalnenapiecieUCE 30V,

· typowy pradwysciowy 5mA,

· maksymalny pradwejsciowy 20mA.

W sterowniku VFMC zastosowano jedentransoptortypu MCT2E [2], gdyz sygnałCONTROL READY wymagakluczapracujacego przy napieciu 24V. Nie wymagana-tomiastkrótkiego czasuprzełaczania,który w przypadkutego transoptorawynosi az 5us.

RezystorR313powodujeograniczeniepradudo 5V ¸ 1 µ 5V300Ω ¶ 12mA. Wyjscietransop-

torasterujetranzystoremT301 w układzieDarlingtona.DiodaD312zabezpieczaukładprzedpojawieniemsiew łancuchusygnałowym napieciawiekszegoniz 30V.

Układ zabezpieczajacy przedzwarciemlinii CONTROL READY do masyskładasiez tranzystoraT302i rezystorówR229i R230. Zwarcielinii do masy, spowodujewzrostnapiecia na rezystorzeR229 (1Ω), które po przekroczeniuok 0.6V załaczy tranzystorT302. ZałaczenieT302 spowoduje zwarcie bazy tranzystorawyjsciowego transoptoraU305do wymuszonejmasy(CR ) i wyłaczenietranzystorasterujacegoT301.

4.3Sterownik VFMC - strona obiektowa 30

4.3.5 Układ sterowania wzmacniaczemmocyPWM.

Wzmacniaczmocy PWM narzucanasygnałyPWM i DIR standardCMOS+12V. Z tegopowodu do sterowania tymi sygnałamiuzyto transoptoraHCPL2531,którego wyjsciamoga pracowac przy napieciudo 15V. Zrezygnowanoz transoptoraMCT2E zewzgleduna dosc mała szybkosc, a takzez koniecznosci uzycia dwóchukładówzamiastjednegopodwójnego (w modelutestowanotakiewobecchwilowego brakuHCPL2531;z powo-dzeniemprzetestowanotakierozwiazanie).

Transoptor HCPL2531

Układ HCPL2531firmy TexasInstrumentsjestpodwójnym transoptoremo izolacji gal-wanicznejmin 3 kV [2]. Maksymalnapredkosc przełaczaniawynosi 800ns. Pozostałeparametryto:

· maxnapieciezasilania15V,

· maxpradwysciowy 8mA,

· maxpradwejsciowy 25mA.

RezystorR310powodujewymuszeniejedynki logicznej,przy brakusygnałuTP15,na wejsciubramki U308B,która blokujepoprzezU308A sygnałPWM (TP15). Sygnałsterujacy DIR (PF1)jestzanegowany przezbramkeU308D.RezystoryR311i R312ogra-niczaja praddiody wejsciowej transoptorado 5V ¸ 1 µ 6V

300Ω ¶ 11mA. Kluczewyjsciowe trans-optorawyprowadzonesanałaczówkeCON301(tabela4.10).

Tablica4.10:CON301.InterfejsVFMC-Wzmacniaczmocy PWM. Opiswyprowadzen

sygnał pin pin sygnał

PWM 1 2 GNDDIR0 3 4 GNDGND 5 6 VIGND 7 8 Vtemp1GND 9 10 Vtemp2

4.3Sterownik VFMC - strona obiektowa 31

4.3.6 Interfejs kodera.

Koderprzyrostowo-impulsowy (incrementalencoder) słuzy doodczytupołozeniaosisil-nika. Wytwarzaon dwa sygnałyA i B przesuniete w fazie o 1

4 okresu. Biezacepo-łozenieuzyskujesie poprzezzliczaniezboczytych sygnałóww liczniku rewersyjnym.Bezwzglednepołozenieosi silnika uzyskujesiepoprzezwykorzystaniesygnałuindekso-wego. NawyjsciuC koderapojawia sie jedenimpulsnajedenobrótsilnika.

Tablica4.11:CON302.Łaczekodera,I/O i tachometru.Opiswyprowadzen

sygnał pin pin sygnał

CR- 1 2 CR+Synch- 3 4 Synch+KodA- 5 6 KodA+KodB- 7 8 KodB+KodC- 9 10 KodC+

TachoB 11 12 TachoAGND 13 14 +5V-12Vs 15 16 +12Vs

Wyjsciakoderamoznaskonfigurawac jako róznicowe (wykorzystujacobasygnały+i –) orazjako pojedynczepobierajacsygnałtylko z czesci dodatnich.Sygnałróznicowyjest bardziejodporny na zakłócenia,jednakze wymagadodatkowych trzechpołaczen zkodera.

Do konfiguracjitrybu pracy koderasłuza zwory J301,J302i J303.

Tablica4.12:J301.Konfiguracjakodera.Opiswyprowadzen

sygnał pin

A+ 1B+ 2C+ 3

Tablica4.13:J302.Konfiguracjakodera.Opiswyprowadzen

sygnał pin

wejscietransoptoraA+ 1wejscietransoptoraB+ 2wejscietransoptoraC+ 3

4.3Sterownik VFMC - strona obiektowa 32

Tablica4.14:J303.Konfiguracjakodera.Opiswyprowadzen

sygnał pin

+5V 1+5V 2+5V 3

Sygnałydodatniez kodera(A+, B+ i C+) sa doprowadzonena łaczówke J302. Po-łaczenieich 1:1 z łaczówka J301spowoduje, ze na diodachnadawczych transoptorówU306i U307,bedziepojawiało sie napieciemierzonew stosunkudo katody:

· 1.6V, gdy diodajest spolaryzowan w kierunkuprzewodzenia(prad płynacy przezdiodewynosi 5V ¸ 1 µ 6V

300Ω ¶ 11mA)

· -5V, gdydiodajestspolaryzowanaw kierunkuzaporowym.

PołaczeniełaczówkiJ302z J3031:1,spowoduje,zenapieciemierzonew tensamsposóbbedziewynosiło:

· 1.6V, gdy diodajest spolaryzowan w kierunkuprzewodzenia(prad płynacy przezdiodewynosi 5V ¸ 1 µ 6V

300Ω ¶ 11mA)

· 0V, gdydiodajestspolaryzowanaw kierunkuzaporowym.

Aby wyjsciekoderapracowałow trybie róznicowym, nalezy zewrzec styki:

· J301.1z J302.1,

· J301.2z J302.2,

· J301.3z J302.3,

gdzieJ302.3oznaczakoncówkenumer3 łaczówkiJ302.W przypadkupracy pojedynczej,nalezy zewrzec:

· J302.1z J303.1

· J302.2z J303.2

· J302.3z J303.3

W opisywanym sterowniku manipulatorawykorzystanosygnałróznicowy kodera.Sygnałyz koderasa połaczonepoprzeztransoptorydo wejsc TP0,TP1i TP2mikro-

kontroleraMC68332. RezystoryR314,R315 i R316dopasowuja wyjscia tranoptorówdo wejsc TPU (podobniejak w przypadkułaczaQSPI).W celu zmniejszeniazakłócenzastosowanokondensatoryblokujace10nFnakazdymz wejsc TP0..TP3.

4.3Sterownik VFMC - strona obiektowa 33

4.3.7 Konstrukcja mechaniczna.

PłytkadrukowanasterownikaVFMC zostałazaprojektowananaczterechwarstwachdrukuo powierzchni 1.6 dm2. Warstwy wewnetrznezawieraja powierzchnieVCC i GND zpunktamitermicznymi orazizolacyjnymi (7.3). PłytkadrukowanasterownikaVFMC mawymiaryEurokarty3U i jestzamontowanaw kasetcez płytaczołowa6U 4TEdogniazdaJ1(Rysunek4.10). Na czolepłyty umieszczonesa łaczaCON301i CON302orazdiodysygnalizacyjne LED. Z tyłu płytki znajdujesie łaczeP1 (CON401)do magistraliVME(Rysunek4.4).

¹

º» ¼

½

¾

¿ À

Rysunek4.4: PłytkasterownikaVFMC. Widok z góry.

Opisrysunkupłytki drukowanejsterownikaVFMC 4.4

1. CON301- łaczówkaprzewoduVH dowzmacniaczamocy PWM,

2. CON302- łaczówkaprzewoduVR do rozdzielaczasygnałów,

3. przetwornik A/C,

4. pamieciRAM,

5. CON401- łaczówkaP1magistraliVME

6. mikrokontrolerM68332,

7. interfejsmagistraliVME - TROOPERII.

4.4Wzmacniaczmocy PWM 34

4.4 WzmacniaczmocyPWM

Wzmacniaczmocy PWM na podstawie wypełnieniasygnałuPWM i orazsygnałukie-runku DIR, sterujesilnikiem napeduosi. Sygnałwejsciowy PWM orazDIR powinienbyc nieujemnym sygnałemo amplitudzie12V wzgledemmasy. Sygnałyte, poddawanesaobróbcecyfrowej i trafiajadoukładówwyzwalaniatranzystorówmocy w mostkutypuH. Wyjsciemwzmacniaczamocy PWM jestsygnałPWMo napieciu50V i maksymalnymobciazeniu30A zalezny odwejsc PWM i DIR. Wzmacniaczmocy PWM zostałtakzapro-jektowany, by mógłwysterowac silnik PZTK 88-35TRRosi robota.Dodatkowo wzmac-niaczzostałwyposazony w układpomiarupradupłynacegoprzezsilnik, atakzeukładza-bezpieczajacy przedprzeciazeniemwyjscia.Naradiatorachz tranzystoramimocy zastałyzamontowaneukładypomiarutemperatury. Wejscia,orazwyjsciapomiarowepołaczonesa zesterownikiemVFMC zapomocaprzewodu10-zyłowegoVH.

Tablica4.15:CON201.GniazdodlaprzewoduVH wewzmacniaczumocy PWM

sygnał pin pin sygnał

PWM 1 2 GNDDIR 3 4 GND

GND 5 6 ViGND 7 8 Vtemp2GND 9 10 Vtemp1

Zasilaniewzmacniaczamocy PWM, orazsygnałysterujacesilnikiem wyprowadzonesanatylnej sciancekasetkipoprzezłaczetypuH15.

We wzmacniaczumocy PWM moznawydzielic nastepujacebloki funkcjonalne:

1. Wejsciowy układformowaniasygnałówPWM i DIR,

2. UkładwyzwalaniamostkaH,

3. Mostekmocy typuH (W1.. .W4),

4. Układpomiarupradu,

5. Układzabezpieczajacy przedprzeciazeniemwyjscia,

6. Układsygnalizacjipracy (LED),

7. Układpomiarutemperatury.

4.4Wzmacniaczmocy PWM 35

ÁÃÂÅÄÆÈÇÊÉ

ËUÌÎÍ ÏÑÐÒÓÕÔQÒÖØ× ÖÙÑÚ ÖÛUÜÞÝ ßáàâäãÕåQâæèç æèéáê æ

ëUìÎí îáïðäñÕòQðóèô óèõÑö ó÷UøÎù úÑûüäýÕþQüÿ ÿ ÿ

!" #!$

%&(' )*,+ -.0/1-23)546 )879:4)' ;2<>=?=5@A>BCDFE

G>HIHJK>LMONP

QRSOT

UVXW

Y>Z[F\]^ _`ba_5c8d e`f_Ogh\

ikj

lnm

oqp

rts

uwvxzy |~fz

Rysunek4.5: Schematblokowy wzmacniaczamocy PWM.

4.4Wzmacniaczmocy PWM 36

Tablica4.16:CON204.Gniazdowyjsciowo-zasilajacewzmacniaczamocy PWM

sygnał pin pin sygnał

z4 NCNC d6

z8 +12Vs+12V d10

z12 -12Vs+50V d14

z16 +50V+50V d18

z20 M1M1 d22

z24 M2M2 d26

z28 GNDGND d30

z32 GND

4.4.1 Wejsciowy układ formowania sygnałówPWM i DIR

Wejsciowy układformowaniazapewniawłaczenieukładuwyzwalania:

· W2 i W4 - stop

· W1 i W4 - obrótw prawo

· W2 i W3 - obrótw lewo

Posiadarówniez układ zabezpieczajacy przedskutkamiopóznien przy wyłaczaniukluczy w mostkumocy.

SygnałPWM jest wymuszany poprzezwyjscie transoptoraU304 (VFMC - stronaobiektowa)połaczoneszeregowo z rezystoremR2016.8kΩ. W momenciewłaczeniaklu-czapradpłynacy przezR201wynosi 12V ¸ 0 µ 5V

6 µ 8kΩ ¶ 1 7mA. Dodatkowo przezklucz płynieniewielki pradwymuszajacy stan0 nawejsciubramkiU202A.Wyłaczeniekluczapowo-duje, ze poprzezrezystorR201i R202wymuszany jest stanwysoki na wejsciu bramkiU201A.Powodujeto doprowadzeniepoprzezwejsciebramki 12V ¸ 0 µ 5V

6 µ 9kΩ ¶ 1 7mAdomasy.Dobórwartosci rezystancjirezystoraR201jestoptymalny i zostałpotwierdzony pomia-rami oscyloskopemsygnałunawejsciuU202A.

Sygnałemaktywnym wejsciaPWM jest0 logiczne.Odłaczenieprzewodu łaczacegosterownik VFMC i wzmacniaczmocy PWM (rezystorR201wymuszastanwysoki) spo-wodujeautomatycznewyłaczeniesilnika (zerowewypełnienie).

RezystorywejscioweR205i R206dlasygnałuDIR zostałydobranew tensamsposób.Układ logiczny manaceluuaktywnienieodpowiednichukładówwyzwalaniamostka

napodstawie dwóchsygnałówPWM i DIR.Zatrzymaniesilnika (stop)nastepujepoprzezzwarciewyprowadzen silnika do masy.

Jestto typowerozwiazaniehamowaniasilnika elektrycznego.

4.4Wzmacniaczmocy PWM 37

Tablica4.17:Logiczny układformowaniasygnałuPWM i DIR

PWM DIR U206[7] U202C UU204A U202D U205A opis

1 1 1 1 1 1 1 stop0 1 1 0 0 1 1 prawo1 0 1 1 1 1 1 stop0 0 1 1 1 0 0 lewo1 1 0 1 1 1 1 stop0 1 0 1 1 1 1 stop1 0 0 1 1 1 1 stop0 0 0 1 1 1 1 stop

Układzłozony z bramekU201B,U201Corazz kondensatoraC201820pFi rezystoraR204 4.7kΩ stanowi opóznieniedla sygnałuPWM o stałej czasowej 820pF 4.7kΩ =3.9µs. Z opóznieniatego korzystajabramkiU203A i U202B,którepowodujawczesniej-szewyłaczenieprzedwłaczeniemw innej konfiguracjikluczy.

4.4.2 Układ wyzwalania mostkaH

We wzmacniaczumocy PWM sa dwa rodzajewyzwalaczytranzystorówMOSFET- dlatranzystorówtypuN i typuP.

UkładwyzwalaniadlatranzystorówtypuN niepotrzebujespecjalnychmechanizmówwyłaczaniatranzystorów. Składasie on z 6 inwerterówpołaczonych równolegle. Sygnałsterujacy z wyjsciainwerterówjest wystarczajacy, aby właczyc i wyłaczyc tranzystory.Sygnałlogiczny 1 pojawiajacy sie nazrównoleglonych wyjsciachinwerterówpowodujewłaczenietranzystorówMOSFET.

Układy wyzwalaniatranzystoratypu P składaja sie z czesci załaczajacej i wyłacza-jacej tranzystor. Rozwazmy układ sterownia tranzystoremT208,T209. W stanie,gdyna wejsciu układuwyzwalaniajest stanwysoki, tranzystorT214 jest zamkniety. DiodaZenereD202 i rezystorR221powoduja przewodzenietranzystoraT212, a tym samymblokade tranzystoramocy. Pojawieniesie sygnałuniskiego spowodujewłacznietranzy-storaT214. TranzystorT212 zostaniezatkany, natomiatT213 spowodujewłaczeniesietranzystoramocy poprzezzwarciejego bramkiz masa. Wyłaczeniekluczatypu P naste-pujepozdjeciusygnałuniskiegoz wejscia.

Układ wyzwalaniatranzystorówT204i T205jestidentyczny.

4.4.3 Mostek mocy typu H

Stopien koncowy wzmacniaczamocy zostałwykonany jako wzmacniaczz czteremaklu-czami. Klucze przełaczaja obciazenie(silnik) pomiedzy+50V a masa poprzezrezystorpomiarowy.

4.4Wzmacniaczmocy PWM 38

Zastosowanetranzystorymaja nastepujaceparametry[7]:

· maksymalny pradprzewodzeniaID 30A

· dopuszczalnenapieciepracy UDSS 60V

· rezystancjawejsciowaRDSON

– typ N 50mΩ

– typ P80mΩ

Zostały one połaczonepo dwa równolegle w celu zwiekszeniemaksymalnego praduszczytowego

4.4.4 Układ pomiaru pr adu

PomiarpradudokonujesieposredniopoprzezpomiarnapiecianarezystorachR214.. .R217.Rezystoryte połaczonerównolegledajawypadkowa rezystancje0.025Ω.

Wzmocnienienapieciaz pomiarudokonujesie w układziezewzmacniaczemU208.Jestto wzmacniaczz ujemnym sprzezeniemzwrotnym o wzmocnieniu10. Wzmocnionysygnałjest dostarczany do łaczaCON201,a takze do układuzabezpieczajecego przednadmiernym obciazeniem.

4.4.5 Układ zabezpieczajacy przed przeciazeniemwyj scia

Sygnałnapieciowy podziesieciokrotnym wzmocnieniupodawany jestnawejscie- koma-partoraU206. Porównywany jest tamz napieciemz dzielnikaR228i R229.Napiecienadzielnikuwynosi: 390Ω 12V

390Ω 560Ω ¶ 4 9V. Jezeli napieciejestnizszeod 4.9V (co odpowiadapradowi < 20A) nawyjsciukomparatorapojawia siesygnałwysoki,który sterujebramkaU202A.W przypadku,gdypradprzekroczy20A, napiecienawejsciukomparatorawzro-snie. Spowoduje to wymuszenielogicznego 0 na wejsciu bramki U202A. Sygnał tenspowodujewyłaczeniekluczy (tabela4.17)

4.4.6 Układ sygnalizacji pracy

Układsygnalizacjipracy silnikazbudowanow celukontroli sygnałusterujacegosilnikiem(M iM ¸ ). Aby sygnalizacjabyła widocznajuz dla ruchówo niewielkich predkosciachzastosowano układ pseudo-logarytmiczny. Przy napieciu ponizej 12V prad diody jestograniczony rezystancja 330Ω i 1kΩ 12V ¸ 1 µ 6V

1 µ 33kΩ ¶ 8mA. Gdy napiecie pomiedzy M iM ¸ wzrosniepowyzej 12V właczysie układ stabilizatoraopartego na diodachD203 iD204, oraz rezystorachR223 i R224.Układstabilizatorautrzymujestałenapiecie12V

4.4Wzmacniaczmocy PWM 39

nadiodach(gdy napieciejestwiekszeod 12V).Mocrezystorówzostałatak dobrana,abyspadeknapieciananich mógł wynosic 38V 38V 38V

330Ω 330Ω ¶ 2 2W – czyli kazdy po 1.1W).Układsygnalizacjijestsymetryczny wzgledemobu linii M i M ¸ .

4.4.7 Pomiar temeperatury

Pomiartemperaturyna radiatorachrealizowany jest przezukład LM35 firmy NationalSemiconductors[1]. Napieciewyjsciowe układuwzrastao 10mV na kazdy stopien odpoziomu0 stopni= 0V. Podstawoweparametryukładu:

· zakrestemepratur-40 C.. .+110 C· napieciezasilania4V. . .20V

· dokładnosc 0 4 C przy25 C

Układy pomiarowe połaczonesa z płyta wzmacniaczamocy PWM za pomoca łaczCON202i CON203.

Tablica4.18:CON202,CON203.Łaczeukładupomiarutemperatury

sygnał pin

+12V 1GND 2Utemp 3

4.4.8 Konstrukacja mechaniczna.

Obwóddrukowany na płytce wzmacniaczamocy PWM zostałzaprojektowany i wyko-nanany na dwóchwarstwach. Wymiary płytki odpowiadaja standardowi Eurokarty3U.Na pierwszejwarstwiepłytki przewidziano miejscena dwa radiatorydla stopni mocymostka.Na czolepłyty 3U 12T wyprowadzonezostałydwie diody sygnalizacyjne orazłacze10pin CON201do sterownika VFMC (rysunek4.6. Dwie kasetkize wzmacnia-czamimocy PWM saumieszczonew kaseciez zasilaczem(rysunek4.10).

4.4Wzmacniaczmocy PWM 40

Rysunek4.6: Płytkawzmacniaczamocy PWM. Widok z boku.

Opiszdjecia4.6wzmacniaczamocy PWM.

1. CON204- łaczetypuH15 z sygnałamido/zmanipulatorai zasilacza,

2. rezystorypomiaroweR214.. .R217,

3. tranzystorystopniakoncowego,

4. CON201- łacze10pindo sterownikaVFMC.

4.5Rozdzielaczsygnałów 41

4.5 Rozdzielaczsygnałów

Rodzielaczsygnałówsłuzy do dekompozycjisygnałówz manipulatoraorazzasilaczanasygnałydla sterownika VFMC. Przewód połaczony z manipulatoremjestpodłaczony dogniazdazenskiegoCON503typuDB25.

Tablica4.19:CON503.Rozdzielaczsygnałów. Łaczemanipulatora.Opiswyprowadzen.

sygnał pin pin sygnał

KodAP 1 14 KodAP¸KodBP 2 15 KodBP¸KodCP 3 16 KodCP¸

GND 4 17 TachoPATachoPA 5 18 SynchPSynchP¸ 6 19 +5V

+24V 7 20 ControlReadySynchQ¸ 8 21 SynchQTachoQB 9 22 TachoQA

GND 10 23 KodCQ¸KodCQ 11 24 KodBQ¸KodBQ 12 25 KodAQ¸KodAQ 13

Przewód ZR łaczacy zasilaczz rozdzielaczemjest połaczony do gniazdameskiegoCON504typuBD15.

Tablica4.20:CON504.Rozdzielaczsygnałów. Łaczezasilacza.Opiswyprowadzen.

sygnał pin pin sygnał

CONTROL READY 1 9 GND+24V 2 10 GND+24V 3 11 GND+12V 4 12 GND+5V 5 13 GND+5V 6 14 GND

-12Vs 7 15 GND+12Vs 8

Sygnałyz tych dwóchłaczysa rozprowadzonedo gniazdCON501i CON502skadprzewodamiVRP i VRQ przesyłanesadosterowników VFMC.

4.5Rozdzielaczsygnałów 42

Tablica4.21: CON501.Rozdzielaczsygnałów. Łaczesterownika VFMCP. Opiswypro-wadzen.

sygnał pin pin sygnał

CRP¸ 1 2 CRPSynchP¸ 3 4 SynchPKodAP¸ 5 6 KodAPKodBP¸ 7 8 KodBPKodCP¸ 9 10 KodCPTachoPA 11 12 TachoPB

GND 13 14 +5V-12Vs 15 16 +12Vs

Tablica4.22:CON502.Rozdzielaczsygnałów. Łaczesterownika VFMCQ. Opiswypro-wadzen.

sygnał pin pin sygnał

CRQ¸ 1 2 CRQSynchQ¸ 3 4 SynchQKodAQ¸ 5 6 KodAQKodBQ¸ 7 8 KodBQKodCQ¸ 9 10 KodCQTachoQA 11 12 TachoQB

GND 13 14 +5V-12Vs 15 16 +12Vs

4.5Rozdzielaczsygnałów 43

SygnałCONTROL READY jest połaczony w łancuchpradowy z zasilacza,poprzezsterowniki VFMC, manipulatorz powrotemdo zasilacza.Łancuchten,moznazabloko-wac, dla kazdego zesterowników VFMC orazdla manipulatoraodłaczajacw tensposóbkontrolenadsygnałemgotowosci. Łancuchpradowy sygnaługotowoscimoznazabloko-wac poprzezzamknieciewybranejłaczówkiJ501,J502i J503.

Tablica4.23:J501,J502,J503.Rozdzielaczsygnałów. Blokowaniesygnaługotowosci.

łaczówka blokadasygnaługotowoscidlaurzadzenia

J501 manipulatorJ502 sterownik VFMCP

J503 sterownik VFMCQ

Rysunek4.7: Rozdzielaczsygnałów. Widok z boku.

Rozdzielaczsygnałówwykonanona dwuwarstwowej płytce drukowanejo długosci6U. Naczolepłyty znajduja sie złacza(rysunek4.7):

1. CON50116pin- łaczedo sterownikaPVFMC,

2. CON50216pin- łaczedo sterownikaQ VFMC,

3. CON504DB15F- łaczedozasilacza.

4. CON503DB25M - łaczedomanipulatora,

Płytkajestzamontowananapłytceczołowej 6U 4TE(rysunek4.7).

4.6Zasilacz 44

4.6 Zasilacz

Zasilaczzostałwykonany jako zespółzasilajacy dla sterownika manipulatora.W składzespołuzasilajacego wchodzi:

· układzasilaczyniskonapieciowych,

– +5V/7A,

– +12V/2.2A,

– +12V/1A,

– +24V/1.2A,

· zasilaczsilników z układami:

– stopuawaryjnego,

– gotowosci.

5

, ¢¡h£1 ¤£¥X¦8§h¨

©ª5«3¬®­bª¯

°²±

³z´µ¶¸·O¹º»b¼½¾¿¸ÀOÁ¢ÃÄÅÆÇÈ5ÉÄËÊÆÌ ÍÎÊ5ÏÄËÐ

Rysunek4.8: Schematblokowy zasilacza.

4.6Zasilacz 45

4.6.1 Zasilaczeniskonapieciowe.

Układzasilaczyniskonapieciowychzostałzmontowany w kasetce6U z wyprowadzonymiłaczamitypu H11 i typu H15 (rysunek4.9). Napieciawyjsciowe sa sygnalizowanepo-przezdiodyLED napaneluzasilacza.

Wyjsciazasilaczy, a takze zasilaniazostaływyprowadzonena łaczówki typu H15 iH11 natylnej sciancekasetki.

Tablica4.24:ŁaczeH11zespołuzasilaczy. Opiswyprowadzen.

sygnał pin

+5V 1+5V 2GND 3GND 4NC 5+12V 6GND 7+12V 8220V 90 10ziemia 11

Tablica4.25:ŁaczeH15zespołuzasilaczy. Opiswyprowadzen.

sygnał pin pin sygnał

z4 +12VGND d6

z8 GND+24V d10

z12 NCNC d14

z16 NCNC d18

z20 NCNC d22

z24 NCNC d26

z28 220V0 d30

z32 ziemia

4.6Zasilacz 46

Do budowy układuzostałyuzytefabrycznezasilacze(rysunek4.9):

1. NT85 ( 12V/1A, 5V/7A) firmy Intron.

2. USPS25(24V/1.2A)firmy Elplast,

3. USPS25(12V/2.2A)firmyElplast,

Ñ Ò Ó

Rysunek4.9: Kasetkazasilaczyniskonapieciowych.

4.6.2 Zasilaczsilników.

Zasilaczsilników zasilany jestz sieci trójfazowej 3 Ô 380V. Obudowazasilaczajestuzie-mionado przewodu uziemiajacego sieci. W zasilaczusilników mozemywyróznic dwamoduły:

Õ zasilaczgłówny 50V/30A,

Õ układsterujacy sygnałemgotowosci (CONTROL READY).

Napieciez sieci380Vjestobnizanedowartosci34V dlakazdejfazynatransformato-rze1.6kVA. Nastepniezamieniany jestnanapieciestałepoprzezprostownik trójfazowyzłozony z diod D101.. .D103. Poddawany jestfiltarcji przezkondensatoryo pojemnosci14.1mF i jestwyprowadzony dla urzadzen zewnetrznych.

4.6Zasilacz 47

Układ gotowosci składasie z układuzałaczanianapieciadla silników, orazz włacz-nika zasilaniai stopuawaryjnego. Zasilanie+50V/30A dla silników zostaniewłaczonedopieropo pojawieniu sie sygnaługotowosci (CONTROL READY) zesterowników orazz manipulatora.Stantenjestsygnalizowany kontrolkaw przyciskuwłaczeniagotowosci.Właczenieprzyciskustopawaryjny powodujeprzerwanie łancuchapradowego sygnaługotowosci i wyłaczenienapiecia50V. Ponowne właczeniejest mozliwe po wycisnieciuprzycisku i ponownym właczeniugotowosci. Napiecie wyjsciowe jest zabezpieczonebezpiecznikiem63A, orazpostroniepierwotnejtransformatora3 4A (zwłoczne).

4.6.3 Konstrukcja mechaniczna.

Zasilaczsilników jestzmontowany w kasecieznajdujacejsienadkasetazesterownikiem.W kasecietej znajdujesie takzekastetkazewzmacniaczamimocy PWM, orazzezasila-czaminiskonapieciowymi (rysunek4.10):

1. przyciskgotowoscizasilacza,

2. przyciskstopuawaryjnego,

3. kontrolkanapiecia+50V zakondensatoramifiltruj acymi,

4. wyłacznikgłówny zasilaczy,

5. przewódZR dorozdzielaczasygnałów,

6. kontrolkanapieciadlasilników,

7. bezpiecznikdlanapieciasilników,

8. +50V

9. GND,

10. kontrolka+5V,

11. kontrolka+12V,

12. kontrolka-12V,

13. przewódVHQ,

14. kontrolka+24V,

15. kontrolka+12V,

16. przewódVHP,

17. przewódsieciethernet,

18. przewódRM,

19. przewódVRQ,

20. przewódVRP.

4.6Zasilacz 48

Ö× Ø

Ù

ÚÛ

Ü

Ý Þ

ßwàáwá

âwãäzå

æ>ç

è>é

êìë

íìî

ïwð

ñ1ò

ówô

Rysunek4.10:Widok ogólny kasetz zasilaczemi sterwonikiemmanipulatora.

Rozdział 5

Oprogramowaniesterownika.

Tworzenieoprogramowania(zgodniez załozeniami)powinnobyc jak najprostsze.W tymceluprzygotowanooprogramowaniedlasterowników VFMC jak i dla jednostkinadrzed-nej pracujacejw systemieOS-9.

5.1 Oprogramowaniesterownika VFMC

Jednostke centralna sterownika VFMC stanowi mikrokontroler z procesoremCPU32.Oprogramowaniedla tej jednostkimozebyc napisanew jezykuC lub w jezykunizszegopoziomu- asemblerze.Do kompilacji programówdla CPU32słuza kompilatoryskrosnedla srodowiskaDOSlub Windows. Mozliwe jest równiez wykorzystaniekompilatoraCw systemieOS-9.

5.1.1 Inicjacja jednostki centralnej

Inicjacja jednostkicentralnejpolega na skonfigurowaniu dekoderówadresudla dwóchpamieciRAM i jednejpamieciFLASH ROM.UstawieniedekoderaadresuCS0 dlasygnałuWRITE pamieciRAM U403:

· CSBAR0 = 0000000000000101(adres000000,256k)

· CSOR0= 0 10 10 1 000011 0000 (asynchroniczny, górny bajt danych,zapis,DS,0 ws, przestrzen adresowa S/U, wszystkiepoziomyprzerwania,autowektor wyła-czony)

5.1Oprogramowanie sterownika VFMC 50

UstawieniedekoderaadresuCS1 dla sygnałuWRITE pamieciRAM U404:

· CSBAR1 = 000000000000101(adres000000,256k)

· CSOR1= 0 10 10 0 110011 0000 (asynchroniczny, dolny bajt danych,zapis,DS,0 ws, przestrzen adresowa S/U, wszystkiepoziomyprzerwania,autowektor wyła-czony)

UstawieniedekoderaadresuCS2 dlasygnałuENABLE obu pamieciRAM:

· CSBAR2 = 0000000000000101(adres000000,256k)

· CSOR2= 0 11 11 0 000011 0000 (asynchroniczny, słowo danych, zapis/odczyt,AS,0 ws,przestrzen adresowaS/U,wszystkiepoziomyprzerwania,autowektorwy-łaczony)

UstawieniedekoderaadresuCSBOOT dlasygnałuENABLE FLASH ROM:

· CSBOOT = 0000010000000100(adres040000,128k)

· CSORBT= 0 10110 0010110000 (asynchroniczny, górny bajt,zapis/odczyt,AS,2 ws, przestrzen adresowa S/U, wszystkiepoziomyprzerwania,autowektor wyła-czony)

UstawieniedekoderaadresuCS6 dlasygnałuG FLASH ROM:

· CSBAR6 = 0000010000000100(adres040000,128k)

· CSOR6= 0 10 01 000101 10000 (asynchroniczny, górny bajt, odczyt,AS,2 ws,przestrzen adresowaS/U,wszystkiepoziomyprzerwania,autowektorwyłaczony)

UstawieniedekoderaadresuCS7 dlasygnałuWRITE FLASH ROM:

· CSBAR7 = 0000010000000100(adres040000,128k)

· CSOR7= 0 10 10 000101 10000 (asynchroniczny, górny bajt, odczyt,AS,2 ws,przestrzen adresowaS/U,wszystkiepoziomyprzerwania,autowektorwyłaczony)

Powykonaniupowyzszychinstrukcji pamiec RAM 128k 16bit jestdostepnaodad-resu0x000000,natomiastpamiec FLASH ROM 128k 8bit odadresu0x040000rysunek5.4.

5.1Oprogramowanie sterownika VFMC 51

5.1.2 Inicjacja interfejsu magistrali VME

Inicjacja interfejsumagistraliVME TROOPERII składasie z dwóchetapów. W pierw-szymetapiejednostkaVFMC inicjuje dekoderadresu,aby TROOPERII był dostepnyna lokalnejmagistraliadresowej. Odblokowuje takze linie przerwan i inicjuje dekoderyadresówdo generacjiautowektorów. Drugi etap,to inicjacjawewnetrznych rejestrówin-terfejsuVME. Powykonaniutych czynnosci16 dwudostepnychrejestrówmailboxmozesłuzyc do przekazywaniadanych pomiedzyjednostka nadrzedna a centralna sterownikaVFMC.

InterfejsmagistraliVME jestpołaczony lokalnie (od strony jednostkicentralnejste-rownikaVFMC) zapomoca linii:

Tablica5.1: PołaczenieTROOPERII - jednostkacentralnasterownikaVFMC.

TROOPERII Jednostkacentralna opis

LA1. . .LA5 A01.. .A05 linie magistraliadresowejLCE CS8 chip select8LIRQ0 LIRQ2 IRQ0 IRQ2 linie przerwanLDTACK DSACK sygnałpotwierdzeniaodebraniadanychLRESET RESET resetjednostkicentralnejLLDSõ LUDS DS sygnałprawidłowychdanychLRö W Rö W sygnałodczytu/zapisudanychLAS AS sygnałprawidłowegoadresuCLOCK CLKOUT zegarzewnetrzny

UstawieniedekoderaadresuCS8 dla układuTROOPERII:· CSPAR1 = 00 0000 0000 1100 00(16 bitowy port)

· CSBAR8 = 1110000000000000(adrespoczatkurejestrów= 0xe00000)· CSOR8= 0 11 11 1 111111 1000 (asynchroniczny,16 bitowy, zapis/odczyt,DS,DSACK zewnetrzny, przestrzen adresowa uzytkownika i nadzorcy, wszystkiepo-ziomy przerwan, autowektorwyłaczony)

UstawieniePF2,PF3,PF4jako linii przerwan IRQ2 õ IRQ3 õ IRQ4:· PORTF1 |= 7 ÷ø÷ 2;

Do generacjiautowektorówdlaprzerwan IRQ2 õ IRQ3 õ IRQ4 zostaływykorzystaneodpo-wiednio dekoderyadresunumer9, 5, 4. Ustawienie dekoderaadresuCS9 do generacji

autowektoradla IRQ2:

5.1Oprogramowanie sterownika VFMC 52

· CSBAR9 = 1111111111111000(generacjaautowektora)

· CSOR9= 0 11110 0000000101 (asynchroniczny,16bitowy, zapis/odczyt,AS, ows,przestrzen adresowaCPU,2 poziomprzerwania,generacjaautowektora)

UstawieniedekoderaadresuCS5 dogeneracjiautowektoradla IRQ3:

· CSBAR5 = 1111111111111000(generacjaautowektora)

· CSOR5= 0 11110 0000000111 (asynchroniczny,16bitowy, zapis/odczyt,AS, 0ws,przestrzen adresowaCPU,3 poziomprzerwania,generacjaautowektora)

UstawieniedekoderaadresuCS4 dogeneracjiautowektoradla IRQ4:

· CSBAR4 = 1111111111111000(generacjaautowektora)

· CSOR4= 0 11110 0000001001 (asynchroniczny,16bitowy, zapis/odczyt,AS, 0ws,przestrzen adresowaCPU,4 poziomprzerwania,generacjaautowektora)

Wykonaniepowyzszychinstrukcji spowoduje, ze pod adresem0xC00000na magi-strali jednostkicentralnejznajdziesiepierwszyrejestrukładuTROOPERII. Moznaterazustawic rejestrykonfiguracyjne interfejsumagistraliVME.

KofiguracjainterfejsuTROOPERII dotyczyzezwolenianaprzerwaniaod rejestrówmailbox, rozdzieleniasygnalizacjitychprzerwan naliniach lokalnychprzerwan, ustawie-nia dekoderaadresumodułuslave.

· MODE = 10000000(wybórwyjsciadwufunkcyjnegonaAUXADD

· MBIEP0= 00000001(właczenieprzerwaniaod rejestrumailbox0)

· MBIEP1= 00000000(wyłaczenieprzerwan od pozostałychrejestrówmailbox

· MBIP0 = 00000000(uaktywnienielinii LIRQ0 poprzezprzerwanieod rejestrówmailbox)

· SADDMD = 10010100(tryb A24, właczenieAM, dane,S/U)

· SADDC1= 11000000

· SADDC2= 00000000(adres= 0x87C00000)

· VIRPL = 00000000(wyłaczoneprzerwaniaodstrony VME)

Po wykonaniutego fragmentuprogramuinterfejs magistraliVME jest skonfiguro-wany prawidłowo, jestzatemdostepny od strony VME jak i VFMC.

5.1Oprogramowanie sterownika VFMC 53

5.1.3 ProgramowaniepamieciFLASH ROM

Do programowaniapamieci FLASH ROM słuzy funkcja FlashProg(int). Aby prze-pisac zawartosc pamieci RAM od adresu030000do 050000FLASH ROM nalezy uzycfunkcji FlashProg z parametremrównym 1.

FunkcjaFlashProg korzystaz nastepujacych funkcji pomocniczych:

· FlReset - sprowadzenieFLASH ROM do stanupoczatkowego,

· FlPollData - testowaniezaprogramowaniakomórkiFLASH ROM,

· FlUnlock - odblokowaniemozliwosci zapisudo FLASH ROM,

· FlAuto - odczytparametrówFLASH ROM w trybieautoselect,

· FlChipErase - kasowanieFLASH ROM,

· FlSectErase - kasowaniesektoraFLASH ROM,

· FlProgram - programowanie1 bajtuweFLASH ROM.

Znajduja sie onew pliku flash.horazflash.c.

5.1.4 Ładowanieprogramu do VFMC.

Programbootload(7.7)słuzy douruchamianiaaplikacjinasterowniku VFMC. Aplikacja,któramazostac uruchomionaprzesyłanajestz jednostkinadrzednejpoprzezmagistraleVME w postaciS-rekordów.

Programbootloadskładasie z dwóchczesci. Pierwszaz nich (segmentboot_code)napisanaw asemblerze,inicjuje pamieci sterownika VFMC, przepisujekod głównegoprogramudo pamieciRAM i tamgo uruchamia.Drugaczesc programuinicjuje interfejsmagistraliVME i oczekujenaodpowiedz programuwysyłajacego aplikacje pracujacegow systemieOS-9. Jezeli odpowiedz programuwysyłajacego jest prawidłowa, nastepujeprzesłaniekodu aplikacji do sterownika VFMC i uruchomienieod adresupodanego wS-rekordach..

PodłaczeniepamieciFLASH ROM dodekoderaadresuCSBOOT powoduje,zepore-seciejednostkicentralnej(dzieki wymuszeniustanuniskiegonalinii D00podczasresetu)pamiec FLASH ROM jestwidocznaw pierwszym1M 8bit obszarzepamieci (rysunek5.1). W przestrzeniadresowej 000000.. .0FFFFFznajdujesie 7 kopii 128k 8bit-owejpamieci FLASH ROM. WektorstartuPCustwiony zostałnaadres040008,czyli nastartprogramuz drugiejkopii.

Segmentboot_code inicjuje wskaznik stosuorazdekoderyadresuCS0,CS1i CS2(RAM), orazprzeprogramowuje CSBOOT ustawiajactakzesygnałyCS6i CS7(jak opi-sanopoprzednio).PowykonaniutychoperacjiobszarypamiecizajmowaneprzezRAM iFLASH ROM sa jednoznacznieokreslone(rysunek5.2).

5.1Oprogramowanie sterownika VFMC 54

ù3ú¢ú¢ú¢ú¢úû3üýûìûìûìûþÿ þwþìþìþ !"

#$ %&'

Rysunek5.1: Pamiec sterownikaVFMC poresecie.

()((((*,+ ****-.----//////01,23232324576363636897:3:3:3: ;7<>=@?ABCEDFHGJI

Rysunek5.2: Pamiec sterownikaVFMC po inicjacji dekoderówadresów.

5.1Oprogramowanie sterownika VFMC 55

Poczawszy od adresu050000powinien znajdowac sie programuzytkownika. Jezeliprogramuzytkownika zostałwczesniej zaprogramowany do pamieci FLASH ROM, zo-stanieon przepisany do pamieci RAM od adresu030000. Wektor startuzostanieusta-wiony na 0x030000i programrozpocznieprace w pamieci RAM. Przepisywaniepro-gramuz pamieciFLASH ROM do pamieciRAM pozwalanaznacznieszybszedziałanieaplikacji z dwóchpowodów:

· RAM makrótszyczasdostepuniz FLASH ROM (20nsanie 70ns),

· RAM jestdostepny w trybie16-bitowym, aFLASH ROM w 8-bitowym.

Sposóbprzepisywaniabloków pamiecizostałprzedstawiony narysunku5.3

KMLNKNKNKMKONPNOMONONOQSRTQNQNQNQUNVNUMUNUNUWYXMWMWNWNWZ,[\ZNZNZMZ]N]M]N]N]N]^_a`NbT_acTdfehghihjlkm`SnpoNq kmcrstsuwvyxzs|t~

Rysunek5.3: Przepisywanieprogramuz FLASH ROM do RAM.

Na rysunku5.4 pakazanajest zawartosc obu pamieci po wykonaniuoperacjikopio-waniaprogramudo pamieciRAM.

segmentboot_code (7.4) jestuniwersalny i mozepracowac z kazdyminnym progra-memuzytkownika,który zostałodpowiednioskompilowany.

Protokół transmisji przesyłaniakodówprogramów.

Kod programujest przesyłany z jednostkinadrzednejdo sterownika poprzezdwudow-stepny rejestrMBOX0. Po otrzymaniuS-rekordów programzostajeautomatycznieuru-chomiony nasterowniku.

5.2Oprogramowanie jednostki nadrzednej. 56

Mz T¡T¢¤£N,¥y¦§ £M¨ª©«©­¬¯®±°²©´³¶µ·¸¹º » ¼½¾¿pÀÂÁÃÀÂÄÅÆ ÇTÈ ÉwÊMÁËyÌÍ ÊNÄΪϫϭЯѱҲϴӶÔÕ×ÖØSÙÂÚÛÝÜÞàß3áãâäæåèç å

Rysunek5.4: Zawartosc pamieci po wykonaniuoperacjiprzepisywaniakodudo pamieciRAM.

Protokółtransmisji(rejestrMBOX0):

Sterownik VFMC JednostkanadrzednaVME

0x5555 0xaaaa0x0000 startS-rekord. . .0x0000 ostatnibajtS-rekordustartprzesłanegoprogramu.

5.2 Oprogramowanie jednostki nadrzednej.

W składoprogramowaniajednostkinadrzednejwchodzi:é vfmcload- programdo przesyłaniaS-rekordów(pracujez programembootload),é troper- sterownik niskiegopoziomu(driver) dlaOS-9,é treset,buser, troptest- programypomocnicze.

5.2Oprogramowanie jednostki nadrzednej. 57

5.2.1 Program do wysyłaniaS-rekordów (vfmcload)

Programvfmcload (7.10) wysyła kod programuw postaciS-rekordów do sterownikaVFMC. Parametramiwejsciowymi programusa:é - powodujeładowaniekoduz wejsciastandardowegostdin,é plik.s19powodujeprzesłaniepliku plik.s19,é brakpowodujeprzesłaniepliku default.s19.

Programpouruchomieniuczeka,az TROOPERII bedziezainicjowany odstrony ma-gistrali VME. Nastepnieuzywajacprotokołu transmisjiopisanego wczesniej,wysyła S-rekordy dosterownikaVFMC.

5.2.2 Sterownik niskiegopoziomu (troper).

Sterownik niskiegopoziomutroper(7.11)posiadastandardowy dlasystemuOS-9formatmodułupamieci [3]. Funkcjedostepnew sterowniku to:é Init - funkcjainicjujacaurzadzenie,é Read - funkcjaodczytuz urzadzenia,é Write - funkcjazapisudo urzadzenia,é GetStat - funkcjaodczytuparametrówz urzadzenia,é SetStat - funkcjazapisuparametrówdo urzadzenia,é TrmNat - funkcjazamykajacaurzadzenie,é Trap - funkcjanieuzywana.

Do operacji zapisui odczytuz rejestrówmailbox TROOPER-aII , słuzy funkcjaSetStat sterownikaniskiegopoziomu.

Rodzajoperacjii liczbaodczytanych/zapisanychrejestrówsawybieranepoprzezsłowosterujace:wr----bbbbeeeegdziepolewr oznacza:é wr=10 - zapis,é wr=01 - odczyt,

natomiastnapolachbbbbeeee jestkodowany zakresrejestrówpoddawanychdanejopera-cji. Napolubbbb jestwpisywany numerpierszegorejestru,naeeee ostatniego,z zakresuktóry nasinteresuje.

Zawartosci rejestrów, które zamierzamyprzesłac lub odebrac sa wskazywaneprzezwskaznik Buf. W programie7.11znajdujesie przykładuzyciasterownika niskiego po-ziomu.

5.3Metody przygotowywania i uruchamiania programów. 58

5.2.3 Programy pomocnicze.

buser

Programbuser(7.8)słuzy do sprawdzania,czy TROOPERII jestdostepny namagistraliVME.

treset

Programtreset(7.9)powodujeresetinterfejsumagistraliVME poprzezustawieniebitu wrejestrzeTROOPERII dostepnym od strony VME.

Po uruchomieniuprogramczeka,az TROOPERII bedzie dostepny na magistraliVME. Nastepniewpisujekod resetudo rejestruTROOPERII.

troptest

Programtroptest(7.11) testujesterownik niskiego poziomu. Pracaprogramupoleganacyklicznym odczyciei wyswietlaniuna ekranzawartoscirejestrówMBOX0 – MBOX5.Programuzywafunkcji SetStat sterownikaniskiegopoziomudoodczyturejestrówTROOPER-a II.

5.3 Metody przygotowywania i uruchamiania programów.

ProgramdlajednostkicentralnejVFMC jestprzesyłany z jednostkinadrzednej(VM662/OS9)poprzezrejestrydwudostepnemailbox. Jezeli programdla jednostkiVFMC zostałprzy-gotowany pozasystememjednostkinadrzednej(Dos/Windows), musi zostac przesłanydo VM662 np. przy pomocy protokołu kermit. Przesłany programjest umieszczany wpamieci RAM jednostkicentralnejVFMC i moze zostac zaprogramowany do pamieciFLASH ROM.

5.3.1 Transmisja i ładowanie programów do pamieci RAM sterow-nika VFMC.

Transmisjai ładowanieprogramówdo pamieci RAM pakietuVFMC sa mozliwe zapo-srednictwemłaczaszeregowegoprzypomocy protokołu kermit. W tym celunakompute-rzeprzyłaczonym do portuszeregowego /term jednostkicentralnejsterownika (VM662)nalezy uruchomic emulatorterminalawyposazony w protokół kermit do transmisjipli-ków (np. PROCOMM) skonfigurowany do transmisjiw trybie 96008N1. Powłaczeniusie dosystemuOS–9(login) nalezy:

5.3Metody przygotowywania i uruchamiania programów. 59

1. uruchomic programkermit w trybie odbioruplików:kermit -b 9600-l /term-r;

2. wysłac plik z emulatoraterminala(w PROCOMM-ie: PgUp2);

3. zrestartowac VFMC komendatreset;

4. załadowac i uruchomic programkomendavfmcload[nazwa_pliku].

Powyzszeoperacjemoznapołaczyc w jednejlinii komendyzłozonej:treset;kermit -b 9600-l /term-k|vfmcload-.W tym przypadkukermit wysyłaodbierany plik nawyjsciestandardowe,a vfmcload

ładujei uruchamiaprogramodbierany w postaciS-rekordów z wejsciastandardowego.Dla uniknieciawypisywaniakomunikatówdiagnostycznychwartododatkowo skierowacje naurzadzeniepustetresetêëêªê /nil i vfmcloadêªêëê /nil.

5.3.2 Uzycieprogramu bootloaddo programowania pamieciFLASHROM.

Oprogramowaniedla sterownika VFMC jestprzesyłanepoprzezmagistrale VME z jed-nostkinadrzednej.Programbootload, który to umozliwia, musibyc wczesniejzaprogra-mowany do pamieciFLASH ROM poprzezinterfejsBDM.

Programbootloadpowinien byc skompilowany od adresu0x030000,natomiastseg-mentboot_code od adresu0x0200000. Po przesłaniuprogramubootload i segmentuboot_code umieszczonezostana pod tymi własnieadresami.Jestto istotne,poniewazfunkcjaprogramujacapamiec przekopiowuje obszar0x020000.. .0x03FFFFdo obszaru0x040000.. .0x05FFFF.

Aby uruchomic funkcje programowanianalezy ustawic pułapke (breakpoint) w liniisprawdzaniazmiennejwejsciowej flag w kodzieprogramubootload. Nastepnienalezyskasowac pułapke,zmienic wartosc zmiennejflag nawartosc 1 i kontunuowac prace.

Takie rozwiazanienadajeuniwersalnosc programowi bootload. Jezeli zostanieonuruchomiony, to przekopiujesiedopamieciRAM i tamwykona.Jezeli natomiastzostanieuruchomiony przy pomocy BDM i zostanieustawionaz zewnatrzwartosc zmiennejflagna1, rozpoczniesieprocesprogramowaniapamieciFLASH ROM.

Rozdział 6

Podsumowanie

Wynikiem pracy jest kompletny sterownik dwuwahadłaumozliwiajacy implementacjeprzykładowych algorytmówsterowania [11]. Został on zaprojektoawny, zrealizowanyw postacisprzetowej i oprogramowany, apracazawierajegopełnadokumentacje.

Sterownik pracujew systemieotwartymczasurzeczywistegoOS-9namagistraliVME.Sterowniki napeduosi robotaVFMC, wzmacniaczemocy PWM, rozdzielaczsygnałów,zasilaczorazokablowaniemanipulatora,zostałyzaprojektowanewrazz obwodamidru-kowanymi, wykonanei uruchomionew ramachpracy.

Sterownik posiadakonstrukcje modułowa, zamknieta w dwóchkasetach6U (zasila-cza i jednostkinadrzednej). Standardeurokarty, wedługktórego wykonanoczesc me-chanicznazapewniazwartosc i stabilnosc konstrukcjisterownika. Obwódzabezpieczeniaobejmujacy wyprowadzony w łatwo dostepnymmiejscunazewnatrzkasetyzasilaczastopawaryjny, sterowniki napeduosiVFMC i manipulatordajemozliwosc natychmiastowegowyłaczeniazasilaniasilników robota.Sprawia to, zesterownik jestbezpieczny w uzyciui nadajesiedo pracprojektowo-badawczychw laboratorium.

Tworzenieoprogramowaniadla sterownika manipulatora(zarównodla VFMC jak ijednostkinadrzednej)jestmozliwe zarównonawysokimjak i naniskimpoziomie.

Oprogramowanie VFMC moze byc tworzonena jednostcenadrzednej sterownika(VM662/OS-9)przyuzyciukompilatoraC (lub w jezykuniskiegopoziomu- asemblerze).Istniejetakzemozliwoscnapisaniai skompilowaniaprogramuw srodowiskuDos/Windows.Przesłanieprogramudo jednostkinadrzednejjestmozliwe zapomoca terminalapoprzezłaczeRS232uzywajac protokołu transmisjikermit. Przesłanieoprogramowaniaz jed-nostkinadrzednejpoprzezmagistrale VME do sterowników napeduosi realizowanejestprzezprogramyvfmcload(na jednostcenadrzednej)i bootload(na sterowniku VFMC).Programbootloadumozliwia ponadtozaprogramowanie przesłanego kodu do pamieciFLASH ROM sterownikaosiVFMC.

Do komunikacjizesterownikamiVFMC z poziomuaplikacjisystemuOS-9słuzy ste-rownik niskiegopoziomu(devicedriver) - troper. Kazdyzesterowników osi jestdostenyjako urzadzeniewejscia/wyjscia. Umozliwia to zapisi odczytdanych z dwudostepnychrejestrówprzypomocy standardowych funkcji systemowych.

Konstrukcjai oprogramowaniesterowników umozliwia odczytdanych pomiarowychz obiektu(połozenie,predkosc, pradpobierany przezsilnik) orazzadawaniepredkosci ikierunkuobrotóww postaciPWM. Uzytkownik mozewykorzystac tedanedosterowaniamanipulatoremprzypomocy samodzielniezaimplementowanegoalgorytmu.

Uniwersalnosc wykonanychmodułówsprawia, zesterownik moznaprzystosowac doinnych typów manipulatorówo podobnych napedach. W przypadkuwiekszejliczbystopni swobodywystarczydołozyc do kasetyVME układusterowaniadodatkowe mo-

61

duły sterowników VFMC i wzmacniaczemocy PWM.Modułowa konstrukcjasterownika umozliwia rozbudowe systemusterowaniao do-

datkowepodsystemysensoryczne(systemwizyjny, czujniki siły i przyspieszen).Sterownik jest wyposazony w interfejs sieciowy TCP/IP. Jednostkanadrzednajest

dostepnaw lokalnej sieci laboratorium. Umozliwia to zaimplementoawnie sieciowegoserweramanipulatorai komunikacje z innymi robotamiorazkomputeramiw labolato-rium.

Rozdział 7

Dodatki

7.1Sterownik VFMC. 63

7.1 Sterownik VFMC.

7.1Sterownik VFMC. 64

ìíîïðñòóôõö÷ó

òñðïîíì ÷ ö õ ô

øù úû ü ý þÿ ü üù ù ù ü ôî ÷ ú üíó ô þ ì

üüú ùû üö öûù üú ó ôöô ÷ õ öîñ ì

÷îì õôìò ÷îî õôìòîí ì îíì ì

îíí ìîì ìîìó ó í÷îí õôìòîìò ó í

î íñ

!"îìì òïì î íñ

!"îìí òïì#ìí ìí

#ìí #ìí ìí

í ï ñ ó ì òðîìöýîì öý $ð%í

ìíïî óòñð"îï &ö'íðîììíïî óòñð

"îì &ö'íñîì ìíïî óòñð"îí &ö'íñîì ì í ï îó ò ñ ð"îî &ö'íñîì

îíï î îíð î #öîìì ì þ( ìñ

#ð îò îîî îîîó îî#ðîñ îî

#ìí ì í ï îó ò ñ ð"îñ &ö'íñîì ì í ï îó ò ñ ð"îò &ö'íñîìîíò î îíó îîíñ î

îï"îóõ òï'ìïìí"îóô òï'ìï ó

"îó÷ òï'ìï ðñ"îóö òï'ìïîì ï òîìì îîìí î

öö)*+ ,-.

/ý÷ /ý÷öö ööîìï îîîìñ îî îìð îîöö öîìî ì öîìí ì öîìï ì /ý÷ /ý÷

0 1 2

3 45 67 89øìð ì øì øí ø

îï ðñîî ðñîí ðñîì îîöö öö /ý÷

: ö ö :

; <=>?

; <=>@

-

)*+ ,-.

ì í îAîì öýîì í îAîí öýîì í îAîî öýî#ð; BCD EF

G HCF I

G HCJ I

G HCK I

G HCF L

G HCJ L

G HCK L

#ìí#ðìí

ñ ð ïì í î"îð :ö øíMììì"îóM òï'ìïìíìî"îó òï'ìï îìî îîð îî

öö ò

îíî ì ñí ï ñ ó ì ìí ìï ìñì î ð ò ìì ìî ìðöýîí öý $ó%í- H>I

- H> L

K . I

K . L

K .- H> NO

PQ )-

; BCD EJ÷îìí îöîì ìí

öîò ìí öî ìí

#öîí ì þ( ìñ

Röîì ì þ( ìñ#öîó ì þ( ìñ#ìí ìí

ô ýììí ô ý ìì ô ýó ô ýòó ô ýñò ô ýðñ ô ýïð ô ýîï ô ýíî ô ýìí ô ýìM #ìï

M ìîöìð ÷" øìñ ÷ ýìò ( ö'öìó Möì /ý÷ìööí"î ø'öíðïî

÷îñ õôìò ÷îò õôìò

#ð÷î õôìò ÷îìì õôìò÷îì õôìò÷îó õôìò#ð÷îï õôìò ÷îð õôìò#ð

" øñ ø :ð /ý÷ïøM:î ýí"îì M

í#ìí öîð ìí öîî ìí #öîï ì þ( ìñ

: ö ö : ò øìð ì øì øí ø

ì í î ï ð ñ ò ó ìöýîî öýì#ðøîì õöñî øîí õöîîò

îí ìîî îî

ST+K LUO VEHBEWX <Y O EZB

[

ú üù ÿù \þû ú :/A

Rysunek7.1: VFMC - stronaobiektowa. Schemat.

7.1Sterownik VFMC. 65

]

^

_

`

a

b

c

d

efgh

d

c

b

a

`

_

^

]

h g f e

ij kl mn opq mr

s mtj uj vw

xj ym e_ h zk m^d |e o|]~~~

x mmkv

jl mg glj mwk~d s sege g t puj u h rzwf

e~e]^e^^]e_^^e`^_ea^`eb^aec^bed^ce~_e]_]e]]_^e]^__e]__ae]`_be]a_ce]b_de]c`]e]d`^

e]~ gxb]^]

e^ gxc]^^

e^] gxd]^_

e^^ gx~]^`

e^_ gx]]^a

h]]]h]]]h^]~h_]dh`]aha]`hb]_hc]^hd]h~~~h]~dh]]~ch]^~`h]_~_h]`~^h]a~]

exd^hxdas c~

hxegd~

hxeg]ddx d]x ]dsgdb

egdc

f i hxgab

hxa`

ig hx]aa

s iad

ix i ixgac

gxfi]]^

fs gx]]_

f gx]]]`

feg gx^]]a

g gx_]]d

g] gx`]]~

g^ gxa]^

g ibb

hgcd

hhxnb]

gb`

ieb^

ieb

hh]hhchh]dhh^dhh_~hhahhb_hhbahhd`hh

~bhh

]chh

]]bhh

]^bi]bi]]ai^]`i_]_i`]^ia]]ib]ic~idbi~ai]`i]]_i]^

]_^i]_

]_]i]`

]_i]a

]^~s]ccs^cbs_cas`c`sac_sbc^scc]

fss

cei

b~sxi

bdxx]^cxx]]cxx]bxx]]xx~axxd_xxbcxxa~xxa]xx`xx_`xx^~xx]cxxdxx^

gx_`~gx^`dgx]`cgx xx

`bx `` x`_xg`a

s ha_i ha^

x if]~

i^g

]^d`] g__

^

h]h]]]h^]^h_]_h`]bha]chb]dhc]~hd]h~`

h]]^~h]^b

h]^a^h]_a`h]`cdh]ac~

fnf

bbfsfsh

bde]~^e^~_e__be`_cea`^

g~

s^_ s]

^]h ieg

b]sx i

chx

~]hx

a]s da

sg ex

dbxg s^

^eehh s_

~

e]~`e^~ae_~be`~cea~d

e~~~e]]e]]ae]^be]_de]`^^e]a^`e]b^ae]c_e]d_]e]~_^e^__e^]_`e^^_ae^_`ae^``be^a`ce^b`de^c`~e^dae^~aae_abe_]ad

fnfbc

ec`e]cae^de_d]e`d^ead_

ex`_hx_dhx]_~

shc^

s i``

xxsx idd

egd`

egndc

eg ib_

s]ac

s^a~

s_b

s`b~

sac

sbc]

scc_

h iegb^

gg

`]hh^

xx_xx]`xx]axx^c

hh^dhh`hha_

xxbaxxb`

xxcbxxcc

hhd~

`^ iss

e^e]_e^`e_ae`beacebdec~

f]df]]cf^]bf_]af`]`fa]_fb]^fc]]

]~h s]`b c`e

x^`a

e^e]_e^`e_ae`beacebdec~

f]df]]cf^]bf_]af`]`fa]_fb]^fc]]

]~h s]`d c`e

x^`a

e^e]_e^`e_ae`beacebdec~

f]df]]cf^]bf_]af`]`fa]_fb]^fc]]

]~h s]

`c c`ex^`a e^e]_e^`e_ae`beacebdec~

f]df]]cf^]bf_]af`]`fa]_fb]^fc]]

]~h s]

`~ c`ex^`a

hdg]

h~g^

he]

h]e^

h^e_

fgs

f^

h_e`

h`ea

haeb

hbec

hced

nhe~

xxge]

nhe]]

hx]e]^

hxe]_

s ie]`

nhe]a

h iege]b

nhe]c

exe]d

nhe]~

ege^

egne^]

eg ie^^

e`e^_

ece^`

ebe^a

eae^b

e`e^c

e_e^d

e^e^~

e]e_

|]^hge_]

ahge_^

ffx

f]h]g_eg e

f_h]]g`f]n

f`h]^gaf i

fah]_gbf] n

fbh]`gcf] i

fch]agdf^ n

fdnhg~f^ i

f~xx e

g]f_ n

f]fss

g]]f_ i

f]]xxsx i

g]^fs

f]^sh

g]_fs]

f]_ea

g]`fs^

f]`e^_g]afs_

f]ae^^g]bef]be^]g]ce]

f]ce^g]de^

f]de]~g]~e_

f]~e]dg^nh

f^e]cg^]xsg

f^]e]bg^^xshe i

f^^e]ag^_nh

f^_e]`g^`sc

f^`e]_g^asb

f^ae]^g^bsa

f^be]]g^cs`

f^ce]g^ds_

f^de~g^~s^

f^~edg_s]

f_]^hg

g_]axihf

f_]ahg

g_^ahg

f_^

gn`]

]^^`_b`da]b]^g]`

e]]e^_e_ae`~ea]]eb]_nhc

`] c`c ]^^`_b`da]b]^g]`

e]]e^_e_ae`~ea]]eb]_nhc

`]] c`c

nh

nh

s]s^s_s`sasb gg s

c h ieg

h ieg

sc

sb

sa

s`

s_

s^

s]

h]a h]` h]_ h]^ h]] h] h~ hd hc hb ha h` h_ h^ h] h

hd h~ h]ah] h]] h]^ h]_ h]`

h hch] h^ h_ h` ha hb

ih]a ih]` ih]_ ih]^ ih]] ih] ih~ ihd fsfsh

ihb iha ih` ih_ ih^ihc ih] ih fsfsh

ih]a ih]` ih]_ ih]^ ih]] ih] ih~ ihd ihc ihb iha ih` ih_ ih^ ih] ihih ih] ih^ ih_ ih` iha ihb ihc ihd ih~ ih] ih]] ih]^ ih]_ ih]` ih]a

fnh fsfsh

fnh fsfsh

fnh fsfsh

e] e^ e_ e` ea e~ e] e]] e]^ e]_ e]` e]a e]b e]c e]d e]~ e^ e^] e^^ e^_

ea e` e_ e^ e]

e^_ e^^ e^] e^ e]~ e]d e]c e]b e]a e]` e]_ e]^ e]] e] e~

e e] e^ e_ e` ea

ea e e] e^ e_

e`

ex hx hx] sh

xxsx i

s i eg

egneg i

hx] hx s i ex eg

egn

eg i

xxsx i

sh

e]_e]]`e^]ae_]b

ea]de`]c

eb]~ec^ed_e~_]e]^e]]_^e]^^]e]_^~e]`^de]a^^e]b^_

_]^b

h]^h]]]h^]h_dh`chabhbahc`

gg^a

xx~

`a ^~ ]s |]^dg

e]^e]]]e^]e_~e`deacebbecaed^ce~^be]^_e]]^ae]^`e]_^de]`_e]a_]e]b^

h]_h]]`h^]ah_]ch`]dha]~hb^hc^]

gg_^

xx]b

^~]^^^_^`

`_ b^d]^d

e]^e]]]e^]e_~e`deacebbecaed^ce~^be]^_e]]^ae]^`e]_^de]`_e]a_]e]b^

h]_h]]`h^]ah_]ch`]dha]~hb^hc^]

gg_^

xx]b

^~]^^^_^`

`` b^d]^d

e e] e^ e_ e` ea eb ec ed e~ e] e]]e]^e]_e]`e]ae]be]ce]d

e] e^ e_ e` ea eb ec ed e~ e] e]]e]^e]_e]`e]ae]be]c

e] e^ e_ e` ea eb ec ed e~ e] e]]e]^e]_e]`e]ae]be]c

e] e^ e_ e` ea eb ec ed e~e e] e]]e]^e]_e]`e]ae]b

h h] h^ h_ h` ha hb hc hd h~ h] h]]h]^h]_h]`h]a

hd h~ h] h]]h]^h]_h]`h]a

h h] h^ h_ h` ha hb hc

hd h~ h] h]]h]^h]_h]`h]a

h]ah]`h]_h]^h]]h] h~ hd hc hb ha h` h_ h^ h] h

e] e^ e_ e` ea gxd

gxd

s^s_ s

`hxeg]

sxi s

g i

s^s_s`

hxeg]

sxi

hx s ex g i

a b

b a

s`d __ s`~ __gg

gg nh

gg nh

gg nh

gg nh

gxfi

gxfigxb gxc

gx]

gx]

gx^

gx^

gx^

nh

nh

gx

gx

] ci i] i^ i]a

xg x x gx

] s^s_s` a b

] c

ix i ei fss hxeghxeg]eg

hxeg

ix i

eifs

s

eg

s`b ^^s`a ]

`] ]b

g`^d ]^ w

g`^c ] w

g`^b ] w

g`_ ^^ g`^~ ^^

g`^a ] w

`] _^ cbd y

nh

nh

s] n

]_s^ ndi] n

]]i^ n

]

¡¢£¤¥ £¦§ £¨¨¡§s] i]^

s^ i~i] i]`

i^ ic

g] ]g] |_

g^ `g^ |a

`]^ e^_^eg©]bª

g``] ] w

g``^ ] w

nh

sh

ih

sh ih

^ ` b d ]

~ca_]gn`a g

n¬«a^

nh

^ ` b d ]

~ca_]gn`_ g

n¬«a^

hx sxin

hgg

f ifss s

f i ig s

f i

gg

ic i~ i]] i]_

id i] i]^ i]`

ic id i~ i] i]] i]^ i]_ i]`

nh

gg

ggnh

g`` ] w

g`_~ ] w gg

nhh`^ fe

]c

h`] fe]cs`^ ]

s`] ]hh_

sxi

i i] i^ i]aibias`` d^ gg

xg x x gx

s`_ ] h`_ fe]c

h~

gx]gx^gx_

i^g

nh

gg

gg

ex

] _ a c ~ ]] ]_

]`]^]d^ ` b

gn`` g

n¬«c^

ibi^g

ia

^ ` b d ]

~ca_]gn`^ g

n¬«a^

gx

gx]

gx_ x

x xggx

^

nh

ggnh

~ d c b a ` _ ^ ]s`] ]

~ d c b a ` _ ^ ]s`^ ]

gg i^g gg

gg

gg

s`c `c

xxsx i

gg

g`^ ]^ w

g`^] ]^ w

g`^^ ]^ w

g`^ ]^ wg`] ]^ w

g`^_ ]^ wg`^` ]^ w

gg nh

hx

gxb gxc

ig

g`_ ]^ wg`` ]^ wg`a ]^ wg`b ]^ wg`c ]^ wg`d ]^ wg`~ ]^ wg`] ]^ wg`]] ]^ wg`]^ ]^ wg`]_ ]^ w

nh

gg

g`]` ]^ wg`]a ]^ w

gg

nh

g`_d ]^ w

g`_c ]^ w

g`_b ]^ w

g`_a ]^ w

g`_` ]^ w

g`__ ]^ wg`_^ ]^ wg`_] ]^ w

ggnh

g`]b ]^ w g`]c ]^ w g`]d ]^ w g`]~ ]^ wggnh

nh

nh

nh

nh

nh

nh

nh

g``_ ]^ w

g```

] o ]b

g``b ] o

]b

g``a ]^ w

ggnh

] ^gn`b g

n^ ] ^gn`c g

n^

nh

i] i^ i

gg ­

Rysunek7.2: VFMC - stronasygnałowa. Schemat.

7.1Sterownik VFMC. 66

Rysunek7.3: VFMC. Obwóddrukowany M1.

7.1Sterownik VFMC. 67

Rysunek7.4: VFMC. Obwóddrukowany M2.

7.1Sterownik VFMC. 68

Rysunek7.5: VFMC. Obwóddrukowany M3.

7.1Sterownik VFMC. 69

Rysunek7.6: VFMC. Obwóddrukowany M4.

7.1Sterownik VFMC. 70

Rysunek7.7: VFMC. Rozmieszczenieelementównapłytce.Góra.

7.1Sterownik VFMC. 71

Rysunek7.8: VFMC. Rozmieszczenieelementównapłytce.Spód.

7.1Sterownik VFMC. 72

Tablica7.1: VFMC-stronasygnałowa. Spiselementów

Iloscsztuk

Typ Element Obudowa

1 29F010R-128FC U405 TSOP322 7407M U410,U411 SO-144 74F245 U406,U407,U408,U409 SOL-203 BAVP17 D401,D402,D403 DIODE0.42 M628128 U403,U404 SOJ32P4001 MAX232ACWE U412 SOP16(longpad)1 MC332 U401 MPLCC1321 TROOPER|| U402 QFP14X20-100N3 100Ω R401,R402,R403 08057 330Ω R408,R409 08051 820Ω R404 08052 4.7kΩ RP401,RP402 RESPACK1 47 kΩ R407 08051 220kΩ R406 08051 10 MΩ R405 08052 22 pF C429,C430 121042 100nF C401..C428, C431..C439,

C443,C4451210

2 100µF/16V C444,C446 RB.2/.41 106 L401 AXIAL0.61 32.768kHz X401 XTAL3 CON5x2 CON402,CON403,CON405 IDC10S1 CON7x2 CON404 IDC14P2 CON1x2 CON406,CON407 IDC2b1 VME CON401 VME96

7.1Sterownik VFMC. 73

Tablica7.2: VFMC-stronaobiektowa. Spiselementów

Iloscsztuk

Typ Element Obudowa

1 Zener30V D312 DIODE0.42 741 U311,U312 DIP81 74LS14 U308 SO1411 BAVP17 D301..D311 DIODE0.41 BC337 T302 TOk31 BC639 T301 TOk31 HCPL2531 U304 DIP85 HCPL2631 U301, U302, U303, U306,

U307DIP8

1 MCT2E U305 DIP61 REF02 U310 SO81 TLC2543 U309 SOL-201 1 Ω R329 08056 300Ω R311..R313,R326..R328 08059 330Ω R301, R305..R309,

R314..R3160805

3 560Ω R302..R304 08051 1 kΩ R319 08051 1.6kΩ R323 08052 3.9kΩ R324,R325 08051 4.7kΩ R310 08052 8.2kΩ R317,R318 08053 10kΩ R320..R322 08051 33kΩ R330 08054 10nF C306,C312..C314 12105 100nF C301,C303,C305,C307 12102 10µF/16V C304,C311 RB.2/.43 100µF/16V C302,C308,C310 RB.2/.41 CON5x2 CON301 IDC10bL1 CON8x2 CON302 IDC16bL1 CON1x10 CON303 IDC10P3 CON1x3 J301,J302,J303 IDC3b

7.2Wzmacniaczmocy PWM. 74

7.2 WzmacniaczmocyPWM.

7.2Wzmacniaczmocy PWM. 75

¯

°

±

²

³

´

µ

·¸¹º

µ

´

³

²

±

°

¯

º ¹ ¸ ·

»¼ ½¾ ¿À ÁÂÃ ¿Ä

Å ¿Æ¼ Ǽ ÈÉ

ʼ Ë¿ ·± º ̽ ¿Í°¶ η ÁÏίÐÐÐ

ÊÑ ¿¿½ÈÒ

Ó¼¾ ¿Í¹ ÍÔ ¹¾¼ ¿É½Ð¶Ô ÕÖÅ×Ô ØÅ·¹·Ô ÙÔ Ù ÚÇÛѺ ÄÌÜɸ ÝÍ

Å°Þ¯ ´ß ¶ Å°Þ° ¯ÞÞ

Å°Þ± ¯ß

Å°Þ³ ´ß ¶

¯ °

±

à°Þ°·

²Þ¯¯

¯

°à°Þ¯·

²³¶²

¯ °

±

à°Þ±·

²Þ¶¯

±

²à°Þ¯¸ ²³¶²

Å°Þ² ²ß µ¹°Þ¯ µ°Þ áÓ

⯰ã

⯰ã

³

´à°Þ¯¹ ²³¶²

Ðà°Þ¯º

²³¶²

³ ´

²

à°Þ°¸ ²Þ¯¯

Å°Þ´ ¯ÞÞ⯰ã

¯Þ

¯¯à°Þ¯ä ²³¶²

¶ Ð

¯Þ

à°Þ°¹ ²Þ¯¯¯° ¯±

¯¯

à°Þ°º

²Þ¯¯³ ´

²

à°Þ±¸ ²Þ¶¯ ¶ Ð

¯Þ

à°Þ±¹ ²Þ¶¯

±

°à°Þ²· ²Þ²Ð

³

²à°Þ²¸

²Þ²Ð

µ

´à°Þ²¹

²Þ²Ð

Ð

¯Þà°Þ²º ²Þ²Ð

¯¯

¯°à°Þ²ä

²Þ²Ð

¯²

¯³à°Þ² Ó

²Þ²Ð

±

°à°Þ³· ²Þ²Ð

³

²à°Þ³¸

²Þ²Ð

µ

´à°Þ³¹

²Þ²Ð

Ð

¯Þà°Þ³º ²Þ²Ð

¯¯

¯°à°Þ³ä

²Þ²Ð

¯²

¯³à°Þ³ Ó

²Þ²ÐÅ°Þµ ¯Þ Å°Þ¶ ¯Þ

»°Þµå »Ø±ÞÀÞ´

»°¯¯å »Ø±ÞÀÞ´

»°Þ³ å »Ø±ÞØÞ´

»°ÞÐ å »Ø±ÞØÞ´

º°Þ¯ ¯±ã³

º°Þ² ¯°ã

º°Þ° ¯±ã³

º°Þ± ¯°ã

»°Þ¯ ¸¹´±Ð

»°Þ° ¸¹´±Ð

»°¯° ¸¹´±Ð »°¯± ¸¹´²Þ

»°Þ± ¸¹´²ÞÅ°¯¯ °°Þ

Å°¯¶ ¯Þß

Å°ÞÐ ¯ß

Å°¯Ð ¯ß

Å°¯Þ ¯ß

Å°¯± ¯Þß

Å°°Þ °°Þ

Å°°¯ ¯ß

Å°¯° ±´Þ

Å°°° ±´Þ

Å°¯³ Þ Ú¯

»°¯²¸¹´±Ð

Å°¯² Þ Ú¯

Å°¯´ Þ Ú¯Å°¯µ Þ Ú¯

â¹°Þ° ²µ ÁÓæ¯ÞÞã

Å°°² ±±Þ¯ÕÅ°°± ±±Þ¯Õ

Å°°³ ¯ß

± °

´çè

é êà°Þ¶ µ²¯

° ±

µëè çì êà°Þ´ í屯

¯

Å°°´ ¯ß

Å°±Þ ±´Þ

Å°°Ð ±ÐÞ

Å°°µ ±±

Å°°¶ ³´Þ

Å°±² ¯Þß

Å°±° ¯ÞßÅ°±± ¯ß

Å°±¯ ¯ß

¹°Þ² ±± ÉÓ

â¹°Þ±

°° ÁÓ毴ã

ί°ãÇ

° ² ´ ¶ ¯Þ

е³±¯¹ÖÀ°Þ¯ ¹Ö

À¬î³ï°

¯ ° ±¹ÖÀ°Þ° ¹Ö

À± ¯ ° ±¹ÖÀ°Þ± ¹Ö

À±â¯°ã

˲ ˶ ˯° ˯´ Ë°Þ Ë°² Ë°¶ ˱°ð ´ ð ¯Þ 𠯲 𠯶 ð °° ð °´ ð ±Þ¹ÖÀ°Þ² Ù¯³

⯰ã

⯰ã Ç Î¯°ã Ç

â³Þã

â³Þã

â³Þã

⯰ã Ç

»°Þ²å »Ø±ÞØÞ´

»°Þ¶å »Ø±ÞØÞ´

»°Þ´ å »Ø±ÞÀÞ´

»°¯Þå »Ø±ÞÀÞ´

ñòó

ôõö

÷ ÷

÷

â¹°Þ³ ¯Þ ÁÓæ±³ã

Å°±³ ³ß ´Å°±´ ²ß µâ¯°ã

¹°Þµ ¯°Þ ÉÓ ¹°ÞÐ ¯°Þ ÉÓ

â¹°Þ´ ²µ ÁÓ毴ã

â¹°Þ¶ ²µ ÁÓ毴ã

⯰ã Ç Î¯°ã Ç

â¹°¯Þ ¯ÞÞ ÁÓæ ¯´ã

¹°¯¯ ¯°Þ ÉÓ⯰ã

¹°¯± ¯°Þ ÉÓ

â¹°¯° ¯ÞÞ ÁÓæ ¯´ã

⯰ã

ôø ùú û ü ùýþ ÿù ý

òýø ù ûñòó

Å°±µ ¯Þß Å°±¶ ¯Þß

º°Þ³ ÅääÀº°Þ´ Åäº

⯰ã

åÕÊ×

½ ¿Âá°

½ ¿Âá¯

å¯ å°

Rysunek7.9: Wzmacniaczmocy PWM. Schemat.

7.2Wzmacniaczmocy PWM. 76

Rysunek7.10:Wzmacniaczmocy PWM. Obwóddrukowany M1.

7.2Wzmacniaczmocy PWM. 77

Rysunek7.11:Wzmacniaczmocy PWM. Obwóddrukowany M2.

7.2Wzmacniaczmocy PWM. 78

Rysunek7.12:Wzmacniaczmocy PWM. Rozmieszczenieelementównapłytce.

7.2Wzmacniaczmocy PWM. 79

Tablica7.3: Wzmacniaczmocy PWM. Spiselementów

Iloscsztuk

Typ Element Obudowa

2 Zener12V/1W D203,D204 DIODE0.72 Zener13V/1W D201,D202 DIODE0.41 4011 U202 DIP142 4049 U204,U205 DIP161 4081 U203 DIP141 4584 U201 DIP141 741 U208 DIP84 BC639 T201,T202,T212,T214 TOk12 BC640 T203,T213 TOk11 GREEN D205 LED1 LM311 U206 DIP84 MTP30N06 T206,T208,T210,T211 TOk24 MTP30P06 T204,T205,T208,T209 TOk21 RED D206 LED4 0.1Ω/5W R214..R217 AXIAL1.22 10 Ω R207,R208 AXIAL0.51 33 Ω R227 AXIAL0.52 100Ω R202,R206 AXIAL0.54 220Ω R211,R220,R223,R224 AXIAL0.53 360Ω R212,R222,R230 AXIAL0.51 390Ω R229 AXIAL0.51 560Ω R228 AXIAL0.59 1 kΩ R203, R209, R210, R219,

R221, RR225, R226, R231,R233

AXIAL0.5

2 4.7kΩ R204,R236 AXIAL0.51 5.6kΩ R235 AXIAL0.52 6.8kΩ R201,R205 AXIAL0.56 10 kΩ R213, R218, R232, R234,

R237,R238AXIAL0.5

1 850pF C201 RAD0.21 33 nF C204 RAD0.24 120nF C207,C209,C211,C213 RAD0.21 10 µF/35V RB.2/.41 22 µF/16V C203 RAD.2/.42 47 µF/16V C206,C208 RB.2/.41 47 µF/100V C202 CAPlong2 100µF/16V C210,C212 RB.2/.41 CON5x2 CON201 IDC10b2 CON1x3 CON202,CON203 IDC3b1 H15 CON204 H15

7.3Rozdzielaczsygnałów. 80

7.3 Rozdzielaczsygnałów.

7.3Rozdzielaczsygnałów. 81

!

" #$% !&

' ! ( ) *+

, -! . !/

0 1 #2 1333

,4 !!*5

6 !/

/7 !+307 89 ':7 ;'7 <=":7 < +>@?)A4 &.B+ C/

D 0 E D

F G 3 F9"FE

9"IH0J

D 0 E D

F G 3 F9"FE

9"IH0J

F D G F 0 D 3 G E 0 3 E F 9"FE

F

3 E F D G F 09"FE

F

; H ' 1

; H= +K 1

; HL +A 1

; HL +A 1

; HL +A 1

; H .A4 *

; H ' M

; H= +KM

; HL +A M

; HL +A M

; HL +A M

; H .A4 *

N H' 1 N H= +

K 1 N HL +A 1

N HL +A 1

N HL +A 1

N H .A4 *

N H' M

N H= +KM

N HL +A M

N HL +A M

N HL +A M

N H .A4 *

1O,

MFO MO,

1O,

MO,

MFO

; HL +A M; HL +A 1; HL +A M; HL +A 1; HL +A M; HL +A 1

; H .A4 *

; H .A4 *

; H= +KM; H= +K 1 N H= +

K 1 N H= +KMN H .A4 *

N H .A4 *

N HL +A 1N HL +A MN HL +A 1N HL +A MN HL +A 1N HL +A M

MOMFO

MO

MO MFO M

O,1O,

PFE 9" PFE

9" PFE

9"

MO

; H ' M; H ' 1

N H' 1N H

' M

9 PL Q, *+ &* ' !.R C

9 ;L" 1L +.% !

<9 : 1 ).% !

;Q, *+ &* ' !.R C

9 ;L" 1L +.% !

<9 : 1 ).% !

NQ, *+ &* ' !.R C

9 ;L" 1L +.% !

<9 : 1 ).% !

S TUVUW XY Z[ U\ ]^_Z` abdc

e

f8:P

Rysunek7.13:Rozdzielaczsygnałów. Schemat.

7.3Rozdzielaczsygnałów. 82

Rysunek7.14:Rozdzielaczsygnałów. Obwóddrukowany M1.

7.3Rozdzielaczsygnałów. 83

Rysunek7.15:Rozdzielaczsygnałów. Obwóddrukowany M2.

7.3Rozdzielaczsygnałów. 84

Rysunek7.16:Rozdzielaczsygnałów. Rozmieszczenieelementównapłytce.

7.3Rozdzielaczsygnałów. 85

Tablica7.4: Rozdzielaczsygnałów. Spiselementów

Iloscsztuk

Typ Element Obudowa

2 CON8x2 CON501,CON502 IDC16b3 CON1x2 J501,J502,J503 IDC2b1 DB15 CON504 DB15RA/M1 DB25 CON503 DB25RA/F

7.4bootcode. 86

7.4 bootcode.ttl boot

rmain idnt vfmcboot1.00opt 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 koniec dolnej (zerowanej) pamieci RAM + 1

section boot_code,,"code" ta sekcja jest zdefiniowana w pliku* opisu dla linkera (llrom.cmd)* i umieszczona na poczatku pamieci ROM

*********************** Wektory restartu**EXCEPT: dc.l $007800 Poczatkowa zawartosc wskaznika stosu

dc.l $40008 Adres startowy (ladowany do PC przy* restarcie)

7.4bootcode. 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 #$6,($fffffa20) SYPCR bus monitor wlaczony na 16 taktowmove.w #$7f00,($fffffa04) SYNCR mnoznik zegara: 2move.w #$424a,($fffffa00) MCR pokazywanie cykli,

* arbitraz zewnetrzny,* wlaczony arbitraz wewnetrzny

*********************** Inicjacja sygnalow CS*

* RAMmove.l #$00055430,($fffffa4c) ; CSOR0 0 waits, upper byte, ds, womove.l #$00053430,($fffffa50) ; CSOR1 0 waits, lower byte, ds, womove.l #$00057830,($fffffa54) ; CSOR2 0 waits, both bytes, as, r/w

*********************** Ustawienie portu C*

move.b #%01110111,($fffffa41) ; PORTC LDAC HImove.l #$00fe0000,($fffffa44) CSPAR*

* EPROMmove.l #$040458b0,($fffffa48) ; CSORBT upper, r/w, s/u 2 wait EPROMmove.l #$040448b0,($fffffa64) ; CSOR6 upper, read, s/u 2 wait EPROMmove.l #$040450b0,($fffffa68) ; 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) ; PORTFmove.b #%11111111,($fffffa1d) ; PFDDR all outputsmove.b #%00000000,($fffffa1f) ; PFPAF all I/O

*

7.4bootcode. 88

*********************** Ustawienie portu Q*move.b #%01110000,($fffffc15) ; PORTQ deselect allmove.w #$7ffe,($fffffc16) ; PQPAR all QSPI, PQDDR all but MISO - out*

*********************** Zerowanie dolnej pamieci RAM*

move.l #$400,a1 RAM_ptr = start roboczej pamieci RAMmove.l #LOWEND,a2 end_ptr = koniec roboczej pamieci RAMclr.l d2

clr1:move.l d2,(a1)+ zerowanie RAM_ptr -> lwordcmpa.l a1,a2bhi clr1 dopoki RAM_ptr < end_ptr

*

*********************** Ustawienie USP*

move.l a7,a1suba.l #$3000,a1 ... o $3000 ponizej SSPmove a1,usp

*

*********************** Inicjacja wektorow*

movea.l #0,a0 adres VBR (=0) do A0movec a0,vbr A0 do VBRlea.l EXCEPT(pc),a1 adres tablicy wektorow do A1move.l (a1),(a0)+ wskaznik stosu do RAMlea.l start(pc),a1 adres startu do A1move.l a1,(a0)+ adres startu do RAM

*lea FATAL(pc),a1 zerowanie calej pamieci RAMmove.l a1,(a0)+ wektor BusErrormove.l a1,(a0)+ wektor AddressError

move #252,d0 licznik wektorowlea.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,a5movea.l a6,a4movea.l a6,a3movea.l a6,a2movea.l a6,a1movea.l a6,a0clr.l d7clr.l d6clr.l d5clr.l d4clr.l d3clr.l d2clr.l d1clr.l d0

*

7.4bootcode. 89

*********************** Warunkowe przepisanie kodu do RAM*

cmp.w #$ffff,$50000 ROM pusty?beq loop jesli tak, to do martwej petli

lea.l $50000,a0 adres poczatku zrodlalea.l $30000,a1 adres poczatku przeznaczeniamove.w #$3fff,d0 licznik dlugich slow

relocmove.l (a0)+,(a1)+ przepisanie dlugich slow...dbra d0,reloc ...do wyczerpania licznika

clr.l d0 zerowanie d0,move.l d0,a0 ... a0move.l d0,a1 ... i a1

move.w #$2000,sr Odblokowanie przerwan...*

jmp $30000 ...i start aplikacji od $30000*

**********************FATALmove.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.5flash.h. 90

7.5 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 ProgMode; /* wynik programowania */EXTERN int FlashProgFlag; /* znacznik trybu programowania */

EXTERN void FlReset();EXTERN int FlPollData(long offset, char data);EXTERN void FlUnlock();EXTERN int FlAuto(long offset);EXTERN int FlChipErase();EXTERN int FlSectErase(int sector);EXTERN int FlProgram(long offset, char data);EXTERN int FlashProg(int flag);

#endif /* _FLASH_P10_ */

/* koniec pliku "flash.h" */

7.6flash.c. 91

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;

7.6flash.c. 92

///************************************************************************* 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************************************************************************/

7.6flash.c. 93

int FlChipErase()

FlUnlock();*((char *)(FLBASE+0x5555)) = 0x80;*((char *)(FLBASE+0x5555)) = 0xaa;*((char *)(FLBASE+0x2aaa)) = 0x55;*((char *)(FLBASE+0x5555)) = 0x10;return FlPollData(0, 0xff);

///************************************************************************* 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.6flash.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.7bootload.c. 95

7.7 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 <ctype.h>#include "trooper.h"#include "vfmc.h"#include "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); /* asynchronous */SetBYTE(8,3); /* both */SetRW(8,3); /* both */SetSTRB(8,1); /* DS */SetDSACK(8,0xf); /* external */SetSPACE(8,3); /* S/U */SetIPL(8,0); /* all */SetAVEC(8,0); /* off */

PORTF1 |= 7 << 2; /* set port F lines (2,3,4) as irq */

7.7bootload.c. 96

/* set CS9 - Generatig Autovector for IRQ2 */SetBAR(9,0xffffff,0); /* set Base Address Register to 0xffff*/

/* setings */SetMODE(9,0); /* asynchronous */SetBYTE(9,3); /* both */SetRW(9,3); /* both */SetSTRB(9,0); /* AS */SetDSACK(9,0); /* O ws */SetSPACE(9,0); /* CPU */SetIPL(9,2); /* 2 */SetAVEC(9,1); /* on */

/* Set CS5 - Generatig Autovector for IRQ3 */SetBAR(5,0xffffff,0); /* set Base Address Register to 0xffff*/

/* setings */SetMODE(5,0); /* asynchronous */SetBYTE(5,3); /* both */SetRW(5,3); /* both */SetSTRB(5,0); /* AS */SetDSACK(5,0); /* 0 ws */SetSPACE(5,0); /* CPU */SetIPL(5,3); /* 3 */SetAVEC(5,1); /* on */

/* Set CS4 - Generatig Autovector for IRQ4 */SetBAR(4,0xffffff,0); /* set Base Address Register to 0xffff*/

/* setings */SetMODE(4,0); /* asynchronous */SetBYTE(4,3); /* both */SetRW(4,3); /* both */SetSTRB(4,0); /* AS */SetDSACK(4,0); /* 0 ws */SetSPACE(4,0); /* CPU */SetIPL(4,4); /* 4 */SetAVEC(4,1); /* 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 << 6) /* A24 mode */| (0 << 4) /* AM enable */| (1 << 2) /* data */| (3 << 0); /* Supervisor/User */

SADDC[1] = 0xc0; /* slave address compare A23-16 */SADDC[2] = 0x00; /* A15-09 */

/* !! from VME address 0x87c00000 !! */VIRPL = 0; /* no interrupt asserted */*((byte *)0xe0003dl)=0x60;ClrPortFBit(5); /* 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.7bootload.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;

elseif((s_rec[1]==’2’)||(s_rec[1]==’8’))address_len=3;

elseif((s_rec[1]==’3’)||(s_rec[1]==’7’))

address_len=4;

numbers=(int)(NBytes-1-address_len); /* number of data fieldswithout: 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]);

elseif(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.7bootload.c. 98

*************************************************************************/

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;

elsen_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)();

elseClrPortFBit(5);

/* while (1) */

/* koniec pliku bootload.c */

7.8buser.c. 99

7.8 buser.c./** buser.c - test an address for bus error* mw’99 from OS-9 GURU by Paul S. Dayan (p.218)*/

#include <stdio.h>#include <errno.h>#include <types.h>#include <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 */#asmf_strap:

movem.l d1/a0-a1,-(a7)lea ExcpTbl(pc),a1tst.l d0 any stack given?beq.s f_strap10addi.l #R$Size-2,d0 top of stack

f_strap10movea.l d0,a0os9 F$STrapbcs.s f_strap20moveq #0,d0bra f_strap30

f_strap20move.l d1,errno(a6)moveq #-1,d0

f_strap30movem.l (a7)+,d1/a0-a1rts

ExcpTbldc.w T_BusErr,bus_hand-*-4dc.w -1 end marker

* Read a byte from addressprobe_byte:

move.l a0,-(a7)move.l d0,a0move.b (a0),d0

* here bus error may occure...moveq #0,d0

probe_byte10 movea.l (a7)+,a0rts

* Bus error handlerbus_hand:

movea.l a1,a7 restore stack pointermovem.l (a5),d0-d7/a0-a4 restore registersmovea.l R$a5(a5),a5 restore a5moveq #-1,d0bra.s probe_byte10

#endasm/* end of buser.c */

7.9 treset.c. 100

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),a2os9 F$Permitbcc f_permit10moveq #0,d0move.w d1,d0move.l d0,errno(a6)moveq #-1,d0bra.s f_permit20

f_permit10moveq #0,d0

f_permit20movea.l (a7)+,a2

rts#endasm/* end of treset.c */

7.10vfmcload.c. 101

7.10 vfmcload.c./** vfmcload - S-records loader for VMFC* mw’99* vfmcload [file.name] ("-" to load from stdin)*/

#include <stdio.h>#include <modes.h>#include <errno.h>#include <setsys.h>#include <types.h>#include <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 0x1000 /* block size */

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.10vfmcload.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),a2os9 F$Permitbcc f_permit10moveq #0,d0move.w d1,d0move.l d0,errno(a6)moveq #-1,d0bra.s f_permit20

f_permit10moveq #0,d0

f_permit20movea.l (a7)+,a2rts

* Bus error handler installation

f_strap: movem.l d1/a0-a1,-(a7)lea ExcpTbl(pc),a1tst.l d0 any stack given?beq.s f_strap10addi.l #R$Size-2,d0 top of stack

f_strap10 movea.l d0,a0os9 F$STrapbcs.s f_strap20moveq #0,d0bra f_strap30

f_strap20 move.l d1,errno(a6)moveq #-1,d0

f_strap30 movem.l (a7)+,d1/a0-a1rts

ExcpTbl dc.w T_BusErr,bus_hand-*-4dc.w -1 end marker

* Read a byte from addressprobe_byte: move.l a0,-(a7)

move.l d0,a0move.b (a0),d0

* here bus error may occure...

7.10vfmcload.c. 103

moveq #0,d0probe_byte10

movea.l (a7)+,a0rts

* Bus error handlerbus_hand: movea.l a1,a7 restore stack pointer

movem.l (a5),d0-d7/a0-a4 restore registersmovea.l R$a5(a5),a5 restore a5moveq #-1,d0bra.s probe_byte10

#endasm

/* end of vfmcload.c */

7.11troper.a. 104

7.11 troper.a.nam troperttl OS-9/68 TrooperII (VME slave interface) device driveropt l

********************************* Edition History* # date comments by* -- -------- ------------------------------------------------- ---* 01 99/05/24 initial version MW************************************************************************

Edition equ 7Revision equ 0

opt -luse /dd/DEFS/oskdefs.dopt l

Type_Lang set (Drivr<<8)+ObjctAttr_Rev set ((SupStat+ReEnt)<<8)+Revision

psect TROOPER,Type_Lang,Attr_Rev,Edition,0,TroopEntry

**************** TrooperII Register Layout ************************

MBOX0 equ $00 mailbox 0IRQ_REG equ $3C interrupt pending

*MAGIC_SIG equ $5555 arbitrary signal number

* vbf variables

N_Drives equ 1 default number of drives tables

* driver routines entry offsets table

TroopEntrydc.w Initdc.w Readdc.w Writedc.w GetStatdc.w SetStatdc.w TermNatdc.w 0

**************** variable section ***************************

vsect

Vector_A ds.b 1 IRQ-Vector for TrooperII InterruptsBas_Ad ds.l 1 Board address bufferSig_ID ds.w 1 buffer process ID (interrupt mode)Signal ds.w 1 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.11troper.a. 105

move.l M$Port(a1),a3 get trooper base addr and init a3 reg.move.l a3,Bas_Ad(a2)move.w #MAGIC_SIG,Signal(a2)move.w P$ID(a4),Sig_ID(a2)move.b M$Vector(a1),d0 get irq-vectormove.b d0,Vector_A(a2) store it in drivermove.b M$Prior(a1),d1 get irq-prioritylea.l Trooper_IRQ(pc),a0 load irq-routineOS9 F$IRQ put irq to os9bcs.s Init_Err ... errormoveq #0,d0

* init the mailboxes(a3)* enable trooper IRQ (?)

Init_Errrts

***************************************************************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 #E$BMode,d1 wrong accessori.b #Carry,ccrrts

***************************************************************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 #E$BMode,d1 wrong accessori.b #Carry,ccrrts

*****************************************************************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 #E$BMode,d1 wrong accessori.b #Carry,ccrrts

*****************************************************************SetStat:* d0.w status code:* wr------bbbbeeee*

7.11troper.a. 106

* (bbbb)*16+(eeee) - beginning and end of mboxes queue* bit15 set - write* bit15 clr - read** (a1) addr of path descriptor (PD_)* (a2) addr of device static storage (V_)* (a4) addr of process descriptor* (a6) system global data pointer*

cmp.w #$4000,d0bhs.s SetStat0move.w #E$UnkSvc,d1 unknown serviceori.b #Carry,ccr error exitrts

SetStat0move.l PD_RGS(a1),a0 get callers register stack pointermove.l R$a0(a0),a0 get command buffer addrmove.l V_PORT(a2),a3 init board address register

* copy marked in d0.w words from command buffer (pointed to by a0)* to appropriate mailboxes

moveq #0,d1move.b d0,d1lsr.l #4,d1and.w #$c00f,d0cmp.b d0,d1bhi.s Com_exe_Errtst.w d0bpl.s Read_Mbox0and.w #$f,d0

Write_Mboxmove.w (a0,d1.w*2),MBOX0(a3,d1.w*2)addq.l #1,d1cmp d1,d0bhs.s Write_Mbox

Com_exe_Ok:moveq.l #0,d1 exit without errorrts

Com_exe_Err:move.w #E$BMode,d1 bad modeori.b #Carry,ccr error exitrts

Read_Mbox0and.w #$f,d0

Read_Mboxmove.w MBOX0(a3,d1.w*2),(a0,d1.w*2)addq.l #1,d1cmp d1,d0bhs.s Read_Mboxbra.s 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 Vector_A(a2),d0 get IRQ vectorsuba.l a0,a0 remove TROOPER vector from OS9OS9 F$IRQrts

7.11troper.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 #fldata+disdata,d0 disable, flush data cacheos9 F$CCtl

*---> test if really Trooper IRQ

move.w IRQ_REG(a3),d0 trooper IRQ pending set? (?)bne.s IRQ_ok yes

*---> enable CPU data cache

NoIRQ:move.l #endata,d0 enable data cacheos9 F$CCtlori.b #Carry,ccr otherwise errorrts

IRQ_ok:move.w Signal(a2),d1 put signal codemove.w Sig_ID(a2),d0 receivers process IDOS9 F$Send

IRQ_clr:

* clear pending flags (?)

IRQ_Endmove.l #endata,d0 enable data cacheos9 F$CCtlmove.w d0,d0 clear carry flagrtsends

* end of "troper.a"

7.12troptest.c. 108

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);

elsefor(i=f;i<=t;i++)

fprintf(stderr,"MBOX%02d = %04x\n", i, Buf[i]);

return 0;

#asm

7.12troptest.c. 109

ss_com:movea.l 4(a7),a0OS9 I$SetSttbcc.s okmoveq #-1,d1rts

ok moveq #0,d1rts

#endas

Literatura

[1] LM34/LM35PrecisionMonolitic TemperatureSensors.AplicationNote460. Natio-nalSemiconductor, LM34/LM35, 1986.

[2] OptoelectronicsandImageSensors.DataBook. TexasInstruments,LinearProducts,1990.

[3] OS-9TECHNICALI/O MANUAL. MicrowareSystemsCorporation,DesMolnesIowa,1990.

[4] MC68332User’s Manual. MotorolaInc.,MC68332UM/AD,1991.

[5] 12-Bit Analog To Digital Conveters with SerialControl and11 analog inputsDatasheet. TexasInstruments,TLC2543,1993.

[6] M6281281 Megabit (128kx8)veryfastSRAMwith outputenableData sheet. SGSThomsonMicroelectronics.,M628128,1996.

[7] MasterSelectionGuide. MotorolaSemiconductor, SG73/D,1997.

[8] MAXIM +5V Powered, MultichannelRS232Drivers/Receivers Data sheet. MA-XIM, MAX232, 1997.

[9] Mm 29F0101 Megabit (128kx8bit) CMOS5V only Uniform sectorFlashMemoryDatasheet. AMD, 29F010,1998.

[10] ELFA. ElfaPolska,Warszawa,1999.

[11] Sławomir Gora. Implementacjaalgorytmówstarowaniaosi robota. PolitechnikaWrocławska,Wrocław, 1998.

[12] JanZabrodzkiMarianŁakomy. Linioweukładyscalonew technicecyfrowej. Pan-stwoweWydawnictwo Naukowe,Warszawa,1987.

[13] BogdanMarzec.Wprowadzeniedo standardu magistrali VME. Wydawnictwo Na-ukowo Techniczne,Warszawa,1994.

[14] MarekWnuk RobertMuszynski. Stanowisko naukowo-badawczedo badaniaalgo-rytmówsterowaniamanipulatorów. PolitechnikaWrocławska,InstytutCybernetykiTechnicznej,Wrocław, 1997.

[15] Marek Wnuk Sławomir Gora. VFMC - swobodnieprogramowalnysterownik na-pedurobota. PolitechnikaWrocławska,InstytutCybernetykiTechnicznej,Wrocław,1997.

[16] ZAP. DTRUkładramionmanipulatora o napedzieelektrycznym. ZakładyAutoma-tyki Przemysłowej, OstrówWlkp.Wrocław, 1996.