Exempeluppgift i Logikstyrning Inledning Idén med detta papper är att ge en allmän beskrivning av labbutrustningen och tips för hur man kan lösa olika praktiska problem i samband med laborationen. Läs noggrannt igenom innan du börjar med labbuppgiften i Sekvensstyrning, så går arbetet lättare. Vi skall titta på exempel. i kompendiet. I detta transportörproblem skall en transportör styras mellan två stationer, A och B. Tre knappar används för att styra transportören vänster, höger och stopp. Vid stationerna finns lägessensorer och vagnen får inte passera dem. A B Styrsystemet skall implementeras på tågbanan vid Laboratoriet för reglerteknik (se Figur ). I exemplet i kompendiet styrs vagnen med hjälp av tre utsignaler: mot vänster, mot höger och stilla. I tågbanan, däremot, styrs tåget med hjälp av två signaler: och BYT_RIKTNING. Tåget kör då är. BYT_RIKTNING är en puls på circa millisekunder som signalerar åt tåget att det skall byta riktning. Då tåget får en -signal efter BYT_RIKTNING så kommer det att börja köra i motsatt riktning. Om både och BYT_RIKTNING är aktiva samtidigt kommer BYT_RIKTNING att vara signalen som går fram. Det finns alltså inget som håller reda på om tåget backar eller kör framåt. Det här är något som vi måste beakta vid design av styrsystemet. För att generera en puls av en bestämd längd behövs en timerfunktion. Timern finns beskriven i kurskompendiet. I praktiken betyder det att vi får en extra insignal, som är då timern har räknat färdigt, och en extra utsignal, som startar timern. Insignaler och utsignaler Vi skall nu bestämma vilka in- och utsignaler systemet kommer att ha. In- och utsignalerna för tågbanan finns listade i tabell, respektive. Vi väljer dem som är relevanta för denna tillämpning. Som insignaler har vi tre knappar, två ljussensorer och en timer done -signal. Som utsignaler har vi, BYT_RIKTNING och starta timern. Vi ser dessutom från Figur att det finns en växel mellan stationerna A och B (växel 3). Den måste vara svängd till vänster för att tåget skall köra till B. Det kan enkelt åstadkommas genom att sätta utsignalen för växel 3 till. För nöjes skull kan vi Visserligen kommer tåget fram till B även då det kör den andra vägen, men då måste de övriga växlarna ställas om för att tåget skall kunna backa från B till A.
Figur : Tågbanan även ta med lamporna i knapparna som utsignaler. De kan användas så att lampan i STOP-knappen lyser då tåget står stilla och lamporna i de två övriga knapparna lyser då tåget rör sig i någondera riktningen. Vi definierar knapp A som och knapp C som. Knapp B blir STOP-knapp. Insignalerna betecknas med u i och utsignalerna med y i. Adresserna är inte viktiga i det här skedet. Vi har då följande insignaler till systemet: Beteckning Betyder I tabell u A-sensor Ljusensor u B-sensor Ljusensor u 3 Knapp A u Knapp C u STOP Knapp B u 6 TMR och följande utsignaler: Beteckning Betyder y y BYT_RIKTNING y 3 Starta timern y Lampa i knapp A y Lampa i knapp B y 6 Lampa i knapp C y 7 Växel 3
Insignal Ljussensor Ljussensor Ljussensor 3 Ljussensor Ljussensor Ljussensor 6 Ljussensor 7 Knapp A Knapp B Knapp C Knapp D Knapp E Adress / / /3 / / /6 /7 / / /3 / / Tabell : Insignalerna från tågbanan Utsignal Adress Värden Kör O:/ = Stilla = Kör Byt riktning O:/ = Ge riktningsbytessignal a Ljus i knapp A O:/ = Av = På Ljus i knapp B O:/ = Av = På Ljus i knapp C O:/6 = Av = På Ljus i knapp D O:/7 = Av = På Ljus i knapp E O:/8 = Av = På Växel O:/ = Rakt = Åt sidan Växel O:/ = Rakt = Åt sidan Växel 3 O:/3 = Rakt = Åt sidan Växel O:/ = Rakt = Åt sidan a ms Tabell : Utsignalerna till tågbanan Observera dessutom att knappsignalerna är momentana; knapparna ger en logisk etta bara så länge de är intryckta. 3 Tillståndsgraf Under normal drift uppstår följande situationer Tåget står stilla vid A Tåget står stilla vid B Tåget kör mot höger 3
Tåget kör mot vänster Tåget står stilla mellan A och B Tåget byter riktning Dessa situationer motsvarar olika tillstånd. Då tåget stoppas mellan stationerna måste systemet hålla reda på tågets riktning, så att tåget börjar köra i rätt riktning då det startas på nytt. Därför behövs det två stopp-tillstånd ett för vardera riktningen. Vi gör här antagandet att knapparna hålls nedtryckta längre än de ms som riktningsbytessignalen ges ut. Då räcker det med ett riktningsbytestillstånd. Följande tillstånd efter riktningsbytet bestäms av vilken knapp som är nedtryckt. Timerfunktionen tas med så att knapptryckningarna registreras först efter riktningsbytet. Det behövs dessutom ett initialiseringstillstånd, som hjälper tåget att få rätt utgångsläge då man startar upp systemet. Vi antar för enkelhetens skull att tåget befinner sig mellan stationerna A och B. Om vi låter tåget köra kommer det förr eller senare att nå någondera stationen. Då vet man genast tågets läge och riktning och kan gå till följande tillstånd. Systemet måste naturligtvis starta upp i initialiseringstillståndet. Hur det kan åstadkommas visas i stycke 6. En tillståndsgraf kan nu ritas. Tillstånden representeras av noder och tillståndsövergångarna av riktade länkar. Tillståndsgrafen visas i Figur. A B Init TMR A B 3 Vid A, riktning Mot A TMR Byt riktning STOP BYT_RIKTNING Mot B STOP Vid B, riktning 6 7 Stillastående, riktning Stillastående, riktning Figur : Tillståndsgraf. Av utsignalerna är endast och BYT_RIKTNING givna.
Tillståndgrafen är även till stor nytta vid debuggning av programmet, eftersom den tydligt åskådliggör programmets funktion. Tillståndstabell Utgående från tillståndsgrafen kan vi ställa upp en tillståndstabell. Vi behöver inte ta med alla insignalkombinationer. Det skulle i så fall bli 6 = 6 stycken. Från tillståndsgrafen ser vi emellertid att det vanligtvis bara är en insignal som orsakar en tillståndsförändring. På sin höjd måste tre samtidiga insignaler beaktas. Vi antar att Då vi trycker på stoppknappen ignorerar vi alla andra insignaler. Timern kan enbart vara hög då vi håller på och byter riktning, varvid vi enbart är intresserade och A och B sensorerna inte kan vara höga samtidigt. och kan inte vara samtidigt höga. Då inga insignaler är höga så gör vi ingenting. Det att vi ignorerar andra insignaler betecknas genom att lämna det tomt eller med ett. y y y 3 y y y 6 y 7 u A u B u 3 u u STOP u 6 TMR 3 3 3 3 6 7 3 6 3 3 6 6 7 7 7 I tillståndstabellen ovan finns det tillstånd som kan kombineras. Vi ser att tillstånd och 6 samt och 7 kan kombineras. I tillstånd står tåget stilla vid station A och i tillstånd 6 är tåget stoppat mellan A och B. Tåget har samma riktning i bägge tillstånden. För tillstånd och 7 kan man göra motsvarande konstaterande. Tillstånden 3 och kan ser nästan ut som om de kan kombineras med tillstånden /6 respektive /7, men man kan enbart kombinera stabila tillstånd med olika nummer då man har lika insignaler. Så får vi sammanlagt 6 tillstånd, som betecknas med x,..., x BYT_RIKTNING TMR_SET Lampa i A Lampa i B Lampa i C Växel 3
u A u B u 3 u u STOP u 6 TMR x,6 3 3 6 x,7 7 x 3 3 3 3 6 x 3 7 x 3 x Vi kunde visserligen ha gjort ovanstående förenkling redan då vi ställde upp tillståndsgrafen, men det är vanligen svårt att från grafen se vilka tillstånd som kan kombineras och det bästa sättet att göra det på. På basen av förenklingen kan vi rita en ny tillståndsgraf (Figur 3). Observera att man man måste beakta ifall tåget befinner sig vid en station, då användaren trycker på eller. Annars kan tåget köra förbi stationerna. A B Init A TMR B+STOP 3 A+STOP Stillastående, riktning Mot A TMR Byt riktning BYT_RIKTNING Mot B B Stillastående, riktning Figur 3: Tillståndsgraf. Av utsignalerna är endast och BYT_RIKTNING utritade. Booleska uttryck Från tillståndstabellen går det enkelt att härleda de booleska uttryck som beskriver systemet. Det som behövs är programmering av alla oinringade siffror i tillståndstabellen, som motsvarar tillståndsövergångar. Att använda Karnaugh-diagram eller QMC-metoden med beaktande av alla insignaler och tillstånd blir väl klumpigt här, för vi har 6 insignaler och 6 tillstånd. Vid konstruktionen av minimala uttryck för Set-funktioner så kan man typiskt betrakta övergångar från ett tillstånd åt gången, för eliminering av tillstånd så innebär att man skulle ha samma övergång vid icke-tillståndet, det vill säga vid alla andra tillstånd. Vilket är högst osannolikt, och det går dessutom lätt att upptäcka detta specialfall. Reset-funktionerna behöver typiskt inte bero på tillstånd, eftersom reset enbart har betydelse 6
om man är vid det givna tillståndet, vilket även gäller här. Och angåend insignaler så räcker det att plocka ut de som hör ihop med den aktuella tillståndsövergången (irrelevanta insignaler betecknades med eller tomt i tillståndstabellen). Set-funktionerna betecknas med S i och reset-funktionerna med R i. För S behövs en speciell funktion, systemet skall starta vid tillståndet, och efter det aldrig komma tillbaks. I vårt system åstadkoms detta med en funktion med namnet OSR (One Shot Rising), som är vid första exekveringen av programmet, och därefter. För Set är det övergångar till ifrågavarande tillstånd som gäller, och för Reset är det övergångar bort från det ifrågavarande tillstånd. R beror på u, u, u 3 och u, vilket leder till följande Karnaugh-diagram. u u u 3 u - - - - - - - Don t care strecken kommer av att tåget inte kan vara vid båda stationerna samtidigt, och av att vi antar att man inte får trycka på pil-knapparna samtidigt. De boolska uttrycken blir följande: S = OSR R = u + u Vi har övergångar till x från x och x 3, som beror på i nedanstående Karnaugh-diagram insatta variabler: u 3 u u 3 u - - u u - u - Övergångar från x Övergångar från x 3 Observera att u saknades i tidigare version, och även in kontaktdiagrammet givet senare. Inget fel uppstår på grund av detta, vilket beror på att R nollställer x då u =. Korrekt uttryck för S ges nedan: S = u x + u u x 3 + u x 3 = u x + (u u + u )x 3 R beror på u, u, u 3 och u, vilket leder till följande Karnough-diagram. 7
u u u 3 u - - - - - - - Detta ger den minimala formen R = u + u 3 u. Konstruktionen av S och R är analog med föregående: S = u x + u x + u x = u x + (u + u )x R = u 3 + u u För S 3 har vi en övergång u 3 u 6 x från x, medan övergångarna från x beror på u, u och u 3 : u 3 u u - - Vilket ger följande minimala form: S 3 = u u 3 x + u 3 u 6 x = u 3 (u x + u 6 x ) R 3 så skall vara hög för stop-knappen u, oberoende av alla andra insignaler. Förutom detta så beror R 3 också på u, u, u 3 och u, vilket leder till följande Karnough-diagram och minimala form: u 3 u - - u u - - - - - 8
R 3 = u + u + u Konstruktionen av S och R är analog med föregående: S = u u x + u u 6 x = u (u x + u 6 x ) R = u + u 3 + u Vi har övergångar från tillståndet - till tillståndet, och vi får en term från varje tillstånd i S. Konstruktionen av dessa blir liknande i alla fyra fallen: u u u u u - - u 3 - - Vilket ger följande minimala form: Övergångar från x och x 3 Övergångar från x och x S = u x + u 3 x + u x 3 + u 3 x = u (x + x 3 ) + u 3 (x + x ) R = u 3 u 6 + u u 6 = u 6 (u 3 + u ) För R så har vi enbart två övergångar, som enbart kan kombineras enligt nedanstående: R = u 3 u 6 + u u 6 = u 6 (u 3 + u ) Utsignalerna är i detta fall funktioner av tillstånden. y = x + x 3 + x y = x y 3 = x y = x 3 y = x + x y 6 = x y 7 = Ett kontaktdiagram kan enkelt konstrueras utgående från de booleska uttryckena. 9
6 SLC /3 och RSLogix Tågbanan styrs av en programmerbar logik (PLC) av typen SLC, tillverkad av Allen-Bradley. Den har en SLC /3 OS 3 processormodul med kb programminne (totalt 6 kb), en digital inputmodul med 6 ingångar, en digital outputmodul med 6 utgångar, två analoga inputmoduler med ingångar var och en analog outputmodul med utgångar. I denna tillämpning används endast de digitala modulerna. Minnet i SLC /3 är indelat i ett antal minnesregister för olika ändamål, t.ex. B3: (bit data), T: (timer), C: (counter), I: (input), O: (output). En digital input-enhet i PLC:n fungerar så att den lagrar en bit (/) i minnet beroende på om en input-kanal är utsatt för en bestämd spänning ( V) eller inte. För programmering av PLC:n används programmeringsverktyget RSLogix. Programmet skrivs i form av ett kontaktdiagram. I det här skedet bestämmer vi vilka adresser vi kommer att använda. Adresserna för in- och utsignalerna finns givna i tabell, respektive. Det finns en färdig timer-funktion som heter Timer On-delay (TON). Varje timer utnyttjar sitt eget timer-register. I det här fallet använder vi timer-registret T:. Har vi flera timer-funktioner kan vi använda T:, T:, o.s.v. Timern har två tidbaser,. sekund och sekund. Väntetiden är en heltalsmultipel gånger tidbasen. Vi väljer tidbasen. sekunder och väntetiden.s = ms. Timern har tre utsignaler: Timer enable, timer timing och timer done. Timer done sätts till av timern då den har räknat upp till väntetiden. Den har adressen T:/DN. Det finns ett bitregister, kallat B3:, som man kan spara enskilda bitar i. Registret är uppdelat i 6 bitars ord, med adresserna, B3:,..., B3:. Bitarna är numrerade från till och varje bit har en egen adress B3:w/b. Vi använder för att lagra tillstånden och B3: för andra bitar. För enkelhetens skull väljs tillståndens adresser så att tillstånd har adressen /, tillstånd adressen / o.s.v. Funktionerna i RSLogix har lite andra namn men är i övrigt identiska med dem i kompendiet. Set-funktionerna motsvaras av Output Latch (OTL) och reset-funktionerna av Output Unlatch (OTU). Utsignalerna ges med funktionen Output Energize (OTE). För initialisering finns en behändig funktion som heter One-shot Rising (OSR). Den utförs endast en gång under programmets körning. Genom att lägga en set-funktion för tillstånd x efter OSR kan man få systemet att starta upp i initialiseringstillståndet. One-shot rising behöver en unik minnesbit som argument; denna bit visar om OSR har utförts eller inte. B3:/ är lämplig att använda. De olika adresserna som används av styrsystemet finns givna i tabell 3. Det är nu dags att skriva själva programmet. Man kan strukturera kontaktdiagrammet som man vill men det är nödvändigt att placera set-funtionerna efter varandra och därefter reset-funktionerna. Programmet exekveras uppifrån ner och om set- och reset-funktioner kommer huller om buller finns det risk för att det nuvarande tillståndet nollställs innan följande tillstånd har satts.
Beteckning Förklaring Adress u A-sensor / u B-sensor / u 3 /3 u / u STOP / u 6 TMR T:/DN x Tillstånd / x Tillstånd /... x Tillstånd / y O:/ y BYT_RIKTNING O:/ y Lampa i A O:/ y Lampa i B O:/ y 6 Lampa i C O:/6 y 7 Växel 3 O:/3 OSR-bit B3:/ Tabell 3: Minnesadresser 7 Kontaktdiagram Här följer en utskrift från RSLogix. Observera att alla in- och utsignaler har namngetts för att det skall vara enklare att följa med programmets funktion. Här skulle även en förklaring av vad de olika tillstånden innebär vara praktisk, men i det här fallet har den utelämnats då antalet tillstånd är ganska litet.
Exempel.RSS Ladder Files --- Total Rungs in File = Timer för riktningsbyte. X TON Timer On Delay Timer T: Time Base. Preset < Accum < EN DN SET-funktioner OSR-BIT B3: OSR X L A-SENSOR A-SENSOR X X3 X L STOP 3 3 B-SENSOR X B-SENSOR X X L STOP VÄNSTER A-SENSOR TMR X T: X X3 L 3 DN HÖGER 3 B-SENSOR TMR X T: X X L DN Page
Exempel.RSS Ladder Files --- Total Rungs in File = Page 6 3 HÖGER X 3 X3 VÄNSTER X X L X RESET-funktioner 7 A-SENSOR B-SENSOR U X 8 3 HÖGER VÄNSTER A-SENSOR U X 9 3 HÖGER B-SENSOR VÄNSTER U X A-SENSOR 3 HÖGER STOP U 3 X3 3
Exempel.RSS Ladder Files --- Total Rungs in File = 3 6 7 B-SENSOR VÄNSTER STOP TMR HÖGER T: DN 3 VÄNSTER Utsignalfunktioner X X3 3 X X X3 3 X X X O: X U X U 76-OB6 BYT_RIKTNING O: 76-OB6 LAMPA_A O: 76-OB6 LAMPA_B O: 76-OB6 LAMPA_C O: 6 76-OB6 Page 3
Exempel.RSS Ladder Files --- Total Rungs in File = 8 VÄXEL_3 O: 3 76-OB6 9 END Page