LOGIKSTYRNING/18/2: Laboration Figur 1: Tågbanan 1 Uppgiften En programmerbar logik (PLC) skall programmeras för ett transportör-problem med en transportör (tåg) och ett antal stationer (se figur 1). Vid varje station finns en ljussensor och tåget styrs genom två signaler: KÖR och BYT RIKTNING. Det finns åtta versioner av uppgiften, givna i tabell 1. Tåget skall köra en bestämd rutt (t.ex. A B C( A o.s.v.) i version 1) och stanna vid varje station i 2 s. Förutom dessa tre stationer finns det en fjärde station (station D i version 1), som tåget skall köra till efter en knapptryckning (exempelvis knapp D). Tåget skall sedan vänta vid denna specialstation tills användaren trycker på en startknapp. Efter det skall tåget först köra till station A och sedan börja köra sin normala rutt. Dessutom skall lampan i specialknappen tändas då användaren trycker på knappen och den skall lysa ända tills tåget når specialstationen. Praktiskt tips: Hantering av specialknappen görs enklast genom att definiera ett skilt tillstånd som kommer ihåg att vi har tryckt på knappen. Detta tillstånd behöver inte komma med i tillståndsgrafen, utan det hanteras som en insignal, i stället för knappens insignal. Man kan och får då skjuta upp hanteringen av specialknappen tills det är mest 1
Version Sekvens Specialstation 1 A B C D 2 A C B D 3 A B D C 4 A D B C 5 A B E D 6 A E B D 7 A B D E 8 A D B E Tabell 1: Versionerna ändamålsenligt och enkelt att hantera, man måste inte genast rusa till specialstationen (utan att bry sig om passagerarna/godset som man för tillfället transporterar). Bonus: De som vill ha extra utmaning kan låta systemet kontrollera om spåret mellan stationerna B och D är blockerat (d.v.s. ljussensor 7 ger signal) innan tåget kör den vägen. Ifall spåret är blockerat skall tåget köra via station A. Uppgiften utförs i grupper av 1-2 personer. För att göra arbetet smidigare är labbuppgiften uppdelad i en teoretisk och en praktisk del. Gruppen lämnar in en gemensam lösning till den teoretiska delen. När denna har godkänts av assistenten får gruppen börja med den praktiska delen, d.v.s. att programmera PLCn. Assistenten ger vid behov närmare anvisningar. Individuella labbrapporter fordras efter slutförd laboration. Labbrapporten skall innehålla en utförlig beskrivning av programmets funktion, inklusive det som behandlats i den teoretiska delen med ändringar och tillägg. Teoretisk del: a. Planera ett styrsystem för processen. Konstruera en tillståndsgraf och en primitiv tillståndstabell från vilken alla omöjliga insignalkombinationer har lämnats bort. Reducera tillståndstabellen om det är möjligt. b. Bestäm de booleska uttryck som beskriver systemet. c. Konstruera ett kontaktdiagram för systemet. Praktisk del: d. Programmera PLCn vid Laboratoriet för reglerteknik enligt den erhållna tillståndsgrafen. Då programmet fungerar enligt de uppställda specifikationerna demonstreras programmets funktion för assistenten. 2
2 Översikt av en programmerbar logik-enhet Laboratoriet för reglerteknik har en SLC 500 programmerbar logik av märket Allen- Bradley. Den har en SLC 5/03 OS 302 processormodul med 12 kb programminne (totalt 16 kb), en digital inputmodul med 16 ingångar, en digital outputmodul med 16 utgångar, två analoga inputmoduler med 4 ingångar var och en analog outputmodul med 4 utgångar. I denna tillämpning används endast de digitala modulerna. Minnet i SLC 5/03 har delats in i ett antal minnesregister för olika ändamål, t.ex. B3: (bit data), T4: (timer), C5: (counter), I: (input), O: (output). En digital input-enhet i PLCn fungerar så att den lagrar en bit (0/1) i minnet beroende på om en input-kanal är utsatt för en bestämd spänning (10 V) eller inte. Bitregistret B3: är indelat i 256 stycken 16 bitars ord. De enskilda bitarnas adresser ges enligt formen B3:o/b, där o anger ordets nummer (0 till 255) och b bitens nummer (0 till 15). PLCn är kopplad till en PC, som används för programmering. PLCn har tre lägen: PROGram, RUN och REMote. I Remote-läget kan PLCns operation styras från PCn, och man kan också följa med programmets exekvering i realtid från PCn. I detta arrangemang finns det 12 insignaler till PLCn och 11 utsignaler till tåget, växlarna och lamporna i knapparna. PLCn har 7 stycken modulportar, av vilka port 0 alltid är reserverad åt processormodulen. Outputmodulen är i detta fall satt i modulport 1 och inputmodulen i port 2. Intresserade kan hitta mera information på www.ab.com/programmablecontrol/plc/ slcsystem. Transformatorn som styr tåget är kopplad till PLCn via två releär, en för att köra / stanna och en för att ge riktningsbytessignal till tåget. Tåget byter riktning genom att ge en åtminstone 200 ms lång signal till O:1/2, och under den tiden kommer tåget även att stanna. Om båda reläerna är på, kommer BYT RIKTNING att vara signalen som vinner. Minnesadresser för in- och utsignalerna finns i tabellerna 2 och 3. Insignal Ljussensor 1 Ljussensor 2 Ljussensor 3 Ljussensor 4 Ljussensor 5 Ljussensor 6 Ljussensor 7 Knapp A Knapp B Knapp C Knapp D Knapp E Adress I:2/1 I:2/2 I:2/3 I:2/4 I:2/5 I:2/6 I:2/7 I:2/11 I:2/12 I:2/13 I:2/14 I:2/15 Tabell 2: Insignalerna 3
Utsignal Adress Värden Kör O:1/1 0 = Stå 1 = Kör Byt riktning O:1/2 1 = Ge riktningsbytessignal a Ljus i knapp A O:1/4 0 = Av 1 = På Ljus i knapp B O:1/5 0 = Av 1 = På Ljus i knapp C O:1/6 0 = Av 1 = På Ljus i knapp D O:1/7 0 = Av 1 = På Ljus i knapp E O:1/8 0 = Av 1 = På Växel 1 O:1/11 0 = Rakt 1 = Åt sidan Växel 2 O:1/12 0 = Rakt 1 = Åt sidan Växel 3 O:1/13 0 = Rakt 1 = Åt sidan Växel 4 O:1/14 0 = Rakt 1 = Åt sidan a Måste vara åtminstone 200 ms lång, helst längre. Tabell 3: Utsignalerna 3 Kort presentation av programmeringsspråket Den ovan beskrivna PLCn programmeras med hjälp av programmeringsverktyget RSLogix 500 för Windows. Programmet matas in som ett kontaktdiagram (e. ladder diagram). Ett kontaktdiagram är ett slags grafiskt programmeringsspråk med ett bibliotek av färdiga logiska rutiner, matematiska funktioner, samt input- och output-instruktioner. De logiska villkoren med vilka programmets funktionssätt beskrivs matas in i form av ett antal förgrenade vågräta linjer ( stegpinnar, e. rung) med de behövliga instruktionerna. Programmet har ett grafiskt användargränssnitt och normala editeringsfunktioner som Copy/Paste och drag-and-drop. I det följande genomgås endast de viktigaste instruktionerna som kan användas vid sekvensstyrningsproblemets lösning. Mera information om instruktionerna finns i manualen och online-hjälpen till RSLogix 500. Examine if Closed (XIC) Examine if Open (XIO) XIC-instruktionen undersöker om biten i argumentadressen är 1. XIC sätter utgången till 1 om villkoret är sant, och till 0 om villkoret är falskt. XIO-instruktionen undersöker om biten i argumentadressen är 0. XIO sätter utgången till 1 om villkoret är sant, och till 0 om villkoret är falskt. Less Than (LES) LES-instruktionen jämför de två aritmetiska värdena (A och B) i adresserna, som ges som dess input-argument. LES sätter utgången till 1 om villkoret A < B är sant, och till 0 om villkoret är falskt. 4
One-Shot Rising (OSR) Output Energize (OTE) Instruktionerna efter OSR-instruktionen exekveras en gång när instruktionerna före OSR går från falskt till sant. Kräver en unik minnesbit som argument. OTE är en output-instruktion som sätter biten i argumentadressen till 1 om input-värdet till modulen är 1. OTE sätter argumentadressen till 0 om input-värdet till modulen är 0. Output Latch (OTL) OTL-instruktionen motsvarar kontaktdiagrammets SET-funktion. OTL sätter biten i argumentadressen till 1 om input-värdet till modulen är 1, men i motsats till OTE sätter OTL inte argumentadressen till 0 om input-värdet till modulen blir 0. Output Unlatch (OTU) OTU-instruktionen motsvarar kontaktdiagrammets RESET-funktion. OTU sätter biten i argumentadressen till 0 om input-värdet till modulen är 1. En RS-vippa åstadkoms genom att låta en OTL och en OTU operera på samma bit. Timer On-Delay (TON) TON-instruktionen sätter Timer-Done-utgången (DN) till 1 efter att den har väntat en bestämd tid (PRE). Timern startar räknandet då input-värdet till modulen övergår från 0 till 1 och räknandet upphör om räknarens accumulerade värde (ACC) är lika med den totala väntetiden (PRE) eller om input-värdet till TON-modulen övergår till 0. Timer-Done blir noll efter att timerns ingång blir låg. Timer-Timing-biten (TT) är 1 alltid när TON räknar och inte har räknat upp till den totala väntetiden. Timer-Enable-biten (EN) är 1 alltid när TON räknar (oberoende om räknaren har räknat upp till totala väntetiden). Alla timer-funktionerna använder speciella register i minnet (t.ex. T4:0) för att lagra argument och räknarens mellanresultat. De enskilda bitarnas adresser är av formen T4:0/DN, T4:0/EN och T4:0/TT. 4 Anvisningar för programmering i praktiken 4.1 Att skapa ett nytt projekt: 1. Klicka på ikonen RSLogix 500. 2. Välj New från File-menyn. 3. Programmet frågar nu vilken typ av PLC du tänker programmera, som alltså var SLC 5/03 OS 302. 5
4. Tre fönster hoppar fram. Det vänstra visar projektträdet och det högra visar kontaktdiagrammet. Ovanför diagramfönstret finns en meny med alla instruktionsmodulerna. 5. Dubbelklicka på I/O Configuration i projektträdet och tryck på Read I/O Config så att PCn får veta vilka moduler PLCn har. 6. Placera ut symbolerna i diagramfönstret. 7. Välj Comms > Download från menyn eller klicka uppe till vänster där det står Offline. Ifall det finns fel i programmet öppnas ett nytt fönster som anger var felet finns och felets natur. Kill the bugs och tryck igen på Comms > Download. När programmet frågar Change to program mode?, svara Yes. När programmet frågar Change to run mode?, svara Yes. När programmet frågar Do you want to go online?, svara Yes. 8. PLCn börjar nu exekvera programmet. Registrenas värden kan observeras och vid behov modifieras från projektträdet. När du vill göra ändringar i programmet kan du göra det antingen i online-mode eller i offline-mode. För offline-editering, välj Comms > Offline. När du gjort ändringarna måste du ladda ner programmet på nytt. I online-mode kan du ändra på en koppling genom att välja Edit > Start Rung Edits. När editeringen är färdig välj Edit > Accept Rung. Kopplingen testas med Test Edits och läggs till med Assemble Edits. Kommandona är också tillgängliga genom ett höger-klick. 4.2 Några råd Win95 är mycket instabilt, så Save early, save often. Det lönar sig att hela tiden ha PLCns nyckel i REMote-positionen, så att man inte behöver vrida på nyckeln när man skriver och testar programmet. För att underlätta programmeringen kan man namnge de olika minnesplatserna. När du har ett instruktion med en adress kan du helt enkelt aktivera instruktionen (genom att klicka på den) och skriva in namnet som du vill att adressen skall ha. I fortsättningen behöver du bara skriva namnet och programmet sätter in adressen automatiskt. Namn/address-referenser kan också modifieras i Address/Symbolfönstret som kan öppnas från projektträdet. Man kan också sätta in kommentarer i kontaktdiagrammet, vilket gör det mer lättläst. I kontaktdiagrammet måste alla Output Latch-instruktioner komma efter varandra i en klunga, därefter alla Output Unlatch-instruktioner. Orsaken till detta är att det annars finns en risk för att det sker en övergång från det nuvarande tillståndet innan 6
en övergång till följande tillstånd. Resultatet är att systemet plötsligt inte befinner sig i något tillstånd alls. Det har då och då förekommit ett sådant fel i systemet, att Märklin-transformatorn inte ger tillräckligt med spänning för BYT RIKTNING-signalen, och att tåget istället för att byta riktning kör framåt hårdare är någonsin. Om sådant händer, lönar det sig att stänga av hela PLCn och vänta en stund. Orsaken till detta är okänd. Stäng av systemet (PLC och de två transformatorerna) när du slutar jobba genom att vrida på brytaren brevid PLCn. Viktigt: Eftersom systemet inte från början vet i vilken riktning tåget kommer att köra, behövs ett initialiseringstillstånd. Detta kan åstadkommas t.ex. genom att låta tåget köra ända tills det kommer till en ändstation. Då vet man både var tåget befinner sig, och vilken riktning den för tillfället kör. 7