Kandidatarbetesförslag VT 2012
Civilingenjör D / E / F / Z
Många tillämpningar av styr- och robotteknik I industrin kräver koordinering och synkronisering mellan av varandra oberoende aktörer; det kan röra sig om säkerhets- eller effektivitetsproblem som skall lösas, exempelvis med industrirobotar inom en produktionscell. I det här projektet undersöker vi hur kan man använda hårdvara, sensorer och (parallell) mjukvara för att göra detta. Resultatet blir en modelljärnväg som traffikeras av två eller flera lok, samordnade och kontrollerade av en dator (microcontroller) för att undvika kollisioner och skapa ett bra trafikflöde på banan.
Projektet går ut på att bygga en automatiserad modelljärnväg där beräkningar I realtid sker på en centralenhet (baserad på en microcontroller). Projektidén bygger på en av laborationerna från kursen “Concurrent Programming”, där uppgiften är att med hjälp av s.k. Semaforer kontrollera två av varandra oberoende tåg (I en “tågsimulator”) och undvika kollisioner. Tanken för kandidatarbetet är alltså nu att realisera en liknande situation: Med hjälp av hårdvara och mjukvara ska två eller fler tåg kontrolleras på en modelljärnväg enligt ett visst mönster (för att undvika kollisioner), och enligt en uppsättning regler. Arbetet som utförs I projektet blir alltså konstruktion av
-
Hårdvara - Sensorer, tågstyrning (motorer/servon) och kommunikationsinfrastruktur
-
Nätverk - Kommunikation mellan tåg, sensorer och “basstation”
-
Mjukvara - Programmering av logik och synkronisering av styrsignaler för tågen.
Programmering sker I C / C++ och programmen körs på microcontrollers. Det finns även utrymme för att expandera något eller några av fälten, exempelvis med sensorer på loken för att upptäcka hinder på spåren eller liknande modifieringar av grundidén.
D, E, F, Z
Projektet vänder sig främst till teknologer från D, E, F och Z-programmen. I gruppen finns det behov av kunskaper inom automation, C-programmering, elektriska kretsar, sensorer, microcontrollers och till viss del nätverkskommunikation. Minst en person I gruppen bör ha läst kursen “Concurrent Programming” eller motsvarande. Gärna en blandad grupp.
4-6 personer
C-programmering, Parallellprogrammering, Microcontrollers, Sensorer, Elektriska Kretsar, Datakommunikation. Kunskaperna kan vara uppdelade mellan gruppmedlemmarna.
Fredrik Brosser, D3
Grundfrågeställningen I projektet går ut på att gruppen ska undersöka hur man kan samordna två eller fler aktörer till att arbeta tillsammans. Ett exempel på en verklighetstillämpning är två stycken industrirobotar som arbetar tillsammans I en produktionscell, och utför två olika arbetsuppgifter, men där de måste koordineras för att få ett bra arbetsflöde (och undvika olyckor eller “dödlägen”). I det här projektet arbetar man med tågbanor och lok, eftersom det är ett intressant, engagerande och lättbegripligt sätt att illustrera problemet, men ändå inte alltför långt ifrån en verklig tillämpning av tekniken. Tanken är alltså att loken skall kunna traffikera banan “för alltid” utan att kollisioner eller dödlägen uppstår.
En fysisk tågbana kommer att konstrueras med modelljärnvägskomponenter, I en vanlig, kommersiellt tillgänglig skala såsom H0. Banan skall byggas upp på ett sådan sätt att den presenterar ett intressant problem, det vill säga att banan ska vara konstruerad så att en situation uppstår där systemet måste lösa ett synkroniseringsproblem, och där ett “dumt” system skulle misslyckats och orsakat en kollision eller dödläge. Banan skall idealt bestå av några “stationer”, och en sträcka mellan dessa där det är växelvis enkel- och växelvis dubbelspårigt. Sektionerna med enkel spårbredd kan alltså endast traffikeras av ett tåg åt gången, vilket systemet måste ta hänsyn till, och via en banswitch dirigera det mötande tåget in på en annan bana, om sådan finns, annars måste det mötande tåget vänta.
Mjukvaran kommer att byggas I programspråket C och köras på en microcontroller- plattform. Det uppkommer en del spännande utmaningar I att skriva “parallell” kod för en microcontroller-plattform, och I att skriva ett fungerande styrsystem I C. Mycket av mjukvaran kommer att behöva skrivas “från grunden”, såsom implementeringar av semaforer och kommunikationen med sensorer och switchar.
Hårdvaran består av ett antal delar (moduler) :
- Lok
Loken kan antingen vara färdiga, kommersiellt tillgängliga lok anpassade för det aktuella banformatet, eller egenhändigt gjorda. I det första fallet måste loken anpassas för kontroll från basstationen, I form av signaler för köra/stanna. I det andra fallet måste motorer och motorstyrning, samt någon form av bromssystem konstrueras, samt även kontrollmöjlighet från basstationen.
- Banswitchar
Switchar I banan som styr riktning I bankorsningar (2 → 1-spårigt eller tvärt om) ska kunna styras från basstationen, exempelvis via någon form av servo.
- Sensorer
Sensorer ska vara utplacerade på strategiska ställen längs banan, och fungera som “Checkpoints”. Basstationen ska kunna läsa av värdet på en sensor. Lämpligen implementeras sensorer med IR (IR-diod och mottagare), och med en utsignal som går hög alternativt låg då ett tåg passerar.
- Basstation
Huvudmodulen, sköter all logik, där programmet I huvudsak körs. Baserad runt en lämplig microcontroller, exempelvis en AVR ATMega328. Skickar ut styrsignaler till lok och switchar, samt läser värden från sensorerna längs banan.
- Kommunikation
Basstationen behöver kunna kommunicera med sensorer, lok och switchar. Detta kan ska via enkla signalkablar, eftersom det med stor sannolikhet skulle bli ett för stort projekt att implementera ett riktigt nätverksprotokoll, såsom fältbuss eller ethernet.
- Ev. övriga “smarta moduler”
Det kan finnas behov för andra moduler med “intelligens”; dessa skulle isåfall sannolikht baseras på microcontrollers, snarare än små FPGA/CPLD-kretsar, eftersom konstruktionen av dessa isåfall skulle bli ett projekt I sig, och alltså en tidskrävande uppgift som ligger lite utanför ramen för projektet.
Projektet redovisas dels I form av en skriftlig rapport, dels I form av en praktisk demonstration av det system som konstrueras. Rapporten består av ingående beskrivningar av designval (ex. - “Varför Microcontrollers över FPGA?”), systemuppbyggnad och moduler. Slutprodukten av projektet är tänkt att bli en fungerande tågbanerigg med två eller fler lok, där en dator I realtid beräknar och löser de synkroniseringsproblem som tas upp I frågeställningen.
- Programming and Customizing the Avr Microcontroller, Dhananjay V. Gadre, Gadre Dhananjay, ISBN 9780071346665
- Principles of Concurrent and Distributed Programming, M. Ben-Ari, ISBN 9780321312839
- Embedded C Programming and the Atmel AVR, Richard Barnett, Larry O'Cull, Sarah Cox, ISBN 9781418039592
Utöver detta tillkommer artiklar på internet och material från Chalmers. Ovanstående exempel utgår ifrån att man väljer AVR-plattformen, men det finns motsvarande litteratur för andra varianter av microcontrollers, såsom PIC eller ARM.