16.07.2013 Views

LOGIKSTYRNING/11/2: Laboration 1 Uppgiften

LOGIKSTYRNING/11/2: Laboration 1 Uppgiften

LOGIKSTYRNING/11/2: Laboration 1 Uppgiften

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>LOGIKSTYRNING</strong>/<strong>11</strong>/2: <strong>Laboration</strong><br />

1 <strong>Uppgiften</strong><br />

Figur 1: T˚agbanan<br />

En programmerbar logik (PLC) skall programmeras för ett transportör-problem med en<br />

transportör (t˚ag) och ett antal stationer (se figur 1). Vid varje station finns en ljussensor<br />

och t˚aget styrs genom tv˚a signaler: KÖR och BYT RIKTNING.<br />

Det finns ˚atta versioner av uppgiften, givna i tabell 1. T˚aget skall köra en bestämd rutt<br />

(t.ex. A–B–C(–A o.s.v.) i version 1) och stanna vid varje station i 2 s. Förutom dessa tre<br />

stationer finns det en fjärde station (station D i version 1), som t˚aget skall köra till efter en<br />

knapptryckning (exempelvis knapp D). T˚aget skall sedan vänta vid denna specialstation<br />

tills användaren trycker p˚a en startknapp. Efter det skall t˚aget först köra till station A<br />

och sedan börja köra sin normala rutt. Dessutom skall lampan i specialknappen tändas d˚a<br />

användaren trycker p˚a knappen och den skall lysa ända tills t˚aget n˚ar specialstationen.<br />

Bonus: De som vill ha extra utmaning kan l˚ata systemet kontrollera om sp˚aret mellan<br />

stationerna B och D är blockerat (d.v.s. ljussensor 7 ger signal) innan t˚aget kör den vägen.<br />

Ifall sp˚aret är blockerat skall t˚aget köra via station A.<br />

<strong>Uppgiften</strong> utförs i grupper av 1-2 personer. För att göra arbetet smidigare är labbuppgiften<br />

uppdelad i en teoretisk och en praktisk del. Gruppen lämnar in en gemensam lösning<br />

1


Version Sekvens Specialstation<br />

1 A–B–C D<br />

2 A–C–B D<br />

3 A–B–D C<br />

4 A–D–B C<br />

5 A–B–E D<br />

6 A–E–B D<br />

7 A–B–D E<br />

8 A–D–B E<br />

Tabell 1: Versionerna<br />

till den teoretiska delen. När denna har godkänts av assistenten f˚ar gruppen börja med den<br />

praktiska delen, d.v.s. att programmera PLCn. Assistenten ger vid behov närmare anvisningar.<br />

Individuella labbrapporter fordras efter slutförd laboration. Labbrapporten skall<br />

inneh˚alla en utförlig beskrivning av programmets funktion, inklusive det som behandlats<br />

i den teoretiska delen med ändringar och tillägg.<br />

Teoretisk del:<br />

a. Planera ett styrsystem för processen. Konstruera en tillst˚andsgraf och en primitiv<br />

tillst˚andstabell fr˚an vilken alla omöjliga och illegala insignalkombinationer har lämnats<br />

bort (reducera om möjligt). Alla eventuella illegala insignalkombinationer skall<br />

hanteras genom att ignorera dem, d.v.s. de förorsakar inte n˚agon tillst˚andsförändring.<br />

b. Bestäm de booleska uttryck som beskriver systemet.<br />

c. Konstruera ett kontaktdiagram för systemet.<br />

Praktisk del:<br />

d. Programmera PLCn vid Laboratoriet för reglerteknik enligt den erh˚allna tillst˚andsgrafen.<br />

D˚a programmet fungerar enligt de uppställda specifikationerna demonstreras<br />

programmets funktion för assistenten.<br />

2


2 Översikt av en programmerbar logik-enhet<br />

Laboratoriet för reglerteknik har en SLC 500 programmerbar logik av märket Allen-<br />

Bradley. Den har en SLC 5/03 OS 302 processormodul med 12 kb programminne (totalt<br />

16 kb), en digital inputmodul med 16 ing˚angar, en digital outputmodul med 16 utg˚angar,<br />

tv˚a analoga inputmoduler med 4 ing˚angar var och en analog outputmodul med 4 utg˚angar.<br />

I denna tillämpning används endast de digitala modulerna.<br />

Minnet i SLC 5/03 har delats in i ett antal minnesregister för olika ändam˚al, t.ex. B3:<br />

(bit data), T4: (timer), C5: (counter), I: (input), O: (output). En digital input-enhet i<br />

PLCn fungerar s˚a att den lagrar en bit (0/1) i minnet beroende p˚a om en input-kanal är<br />

utsatt för en bestämd spänning (10 V) eller inte. Bitregistret B3: är indelat i 256 stycken<br />

16 bitars ord. De enskilda bitarnas adresser ges enligt formen B3:o/b, där o anger ordets<br />

nummer (0 till 255) och b bitens nummer (0 till 15).<br />

PLCn är kopplad till en PC, som används för programmering. PLCn har tre lägen:<br />

PROGram, RUN och REMote. I Remote-läget kan PLCns operation styras fr˚an PCn, och<br />

man kan ocks˚a följa med programmets exekvering i realtid fr˚an PCn.<br />

I detta arrangemang finns det 12 insignaler till PLCn och <strong>11</strong> utsignaler till t˚aget,<br />

växlarna och lamporna i knapparna. PLCn har 7 stycken modulportar, av vilka port 0<br />

alltid är reserverad ˚at processormodulen. Outputmodulen är i detta fall satt i modulport 1<br />

och inputmodulen i port 2.<br />

Intresserade kan hitta mera information p˚a www.ab.com/programmablecontrol/plc/<br />

slcsystem.<br />

Transformatorn som styr t˚aget är kopplad till PLCn via tv˚a releär, en för att köra /<br />

stanna och en för att ge riktningsbytessignal till t˚aget. T˚aget byter riktning genom att<br />

ge en ˚atminstone 200 ms l˚ang signal till O:1/2, och under den tiden kommer t˚aget även<br />

att stanna. Om b˚ada reläerna är p˚a, kommer BYT RIKTNING att vara signalen som g˚ar<br />

fram.<br />

Minnesadresser för in- och utsignalerna finns i tabellerna 2 och 3.<br />

3 Kort presentation av programmeringsspr˚aket<br />

Den ovan beskrivna PLCn programmeras med hjälp av programmeringsverktyget<br />

RSLogix 500 för Windows. Programmet matas in som ett kontaktdiagram (e. ladder diagram).<br />

Ett kontaktdiagram är ett slags grafiskt programmeringsspr˚ak med ett bibliotek<br />

av färdiga logiska rutiner, matematiska funktioner, samt input- och output-instruktioner.<br />

De logiska villkoren med vilka programmets funktionssätt beskrivs matas in i form av ett<br />

antal förgrenade v˚agräta linjer (“stegpinnar”, e. rung) med de behövliga instruktionerna.<br />

Programmet har ett grafiskt användargränssnitt och normala editeringsfunktioner som<br />

Copy/Paste och drag-and-drop.<br />

I det följande genomg˚as endast de viktigaste instruktionerna som kan användas vid sekvensstyrningsproblemets<br />

lösning. Mera information om instruktionerna finns i manualen<br />

och online-hjälpen till RSLogix 500.<br />

3


Insignal Adress<br />

Ljussensor 1 I:2/1<br />

Ljussensor 2 I:2/2<br />

Ljussensor 3 I:2/3<br />

Ljussensor 4 I:2/4<br />

Ljussensor 5 I:2/5<br />

Ljussensor 6 I:2/6<br />

Ljussensor 7 I:2/7<br />

Knapp A I:2/<strong>11</strong><br />

Knapp B I:2/12<br />

Knapp C I:2/13<br />

Knapp D I:2/14<br />

Knapp E I:2/15<br />

Tabell 2: Insignalerna<br />

Examine if Closed (XIC) XIC-instruktionen undersöker om biten i argumentadressen<br />

är 1. XIC sätter utg˚angen till 1 om villkoret<br />

är sant, och till 0 om villkoret är falskt.<br />

Examine if Open (XIO) XIO-instruktionen undersöker om biten i argumentadressen<br />

är 0. XIO sätter utg˚angen till 1 om villkoret<br />

är sant, och till 0 om villkoret är falskt.<br />

Less Than (LES) LES-instruktionen jämför de tv˚a aritmetiska värdena (A<br />

och B) i adresserna, som ges som dess input-argument.<br />

LES sätter utg˚angen till 1 om villkoret A < B är sant,<br />

och till 0 om villkoret är falskt.<br />

One-Shot Rising (OSR) Instruktionerna efter OSR-instruktionen exekveras en<br />

g˚ang när instruktionerna före OSR g˚ar fr˚an falskt till<br />

sant. Kräver en unik minnesbit som argument.<br />

Output Energize (OTE) OTE är en output-instruktion som sätter biten i argumentadressen<br />

till 1 om input-värdet till modulen är 1.<br />

OTE sätter argumentadressen till 0 om input-värdet till<br />

modulen är 0.<br />

Output Latch (OTL) OTL-instruktionen motsvarar kontaktdiagrammets<br />

SET-funktion. OTL sätter biten i argumentadressen<br />

till 1 om input-värdet till modulen är 1, men i motsats<br />

till OTE sätter OTL inte argumentadressen till 0 om<br />

input-värdet till modulen blir 0.<br />

4


Utsignal Adress Värden<br />

Kör O:1/1 0 = St˚a 1 = Kör<br />

Byt riktning O:1/2 1 = Ge riktningsbytessignal a<br />

Ljus i knapp A O:1/4 0 = Av 1 = P˚a<br />

Ljus i knapp B O:1/5 0 = Av 1 = P˚a<br />

Ljus i knapp C O:1/6 0 = Av 1 = P˚a<br />

Ljus i knapp D O:1/7 0 = Av 1 = P˚a<br />

Ljus i knapp E O:1/8 0 = Av 1 = P˚a<br />

Växel 1 O:1/<strong>11</strong> 0 = Rakt 1 = ˚ At sidan<br />

Växel 2 O:1/12 0 = Rakt 1 = ˚ At sidan<br />

Växel 3 O:1/13 0 = Rakt 1 = ˚ At sidan<br />

Växel 4 O:1/14 0 = Rakt 1 = ˚ At sidan<br />

a M˚aste vara ˚atminstone 200 ms l˚ang, helst längre.<br />

Tabell 3: Utsignalerna<br />

Output Unlatch (OTU) OTU-instruktionen motsvarar kontaktdiagrammets<br />

RESET-funktion. OTU sätter biten i argumentadressen<br />

till 0 om input-värdet till modulen är 1. En RS-vippa<br />

˚astadkoms genom att l˚ata en OTL och en OTU operera<br />

p˚a samma bit.<br />

Timer On-Delay (TON) TON-instruktionen sätter Timer-Done-utg˚angen (DN)<br />

till 1 efter att den har väntat en bestämd tid (PRE).<br />

Timern startar räknandet d˚a input-värdet till modulen<br />

överg˚ar fr˚an 0 till 1 och räknandet upphör om räknarens<br />

accumulerade värde (ACC) är lika med den totala väntetiden<br />

(PRE) eller om input-värdet till TON-modulen<br />

överg˚ar till 0. Timer-Done blir noll efter att timerns ing˚ang<br />

blir l˚ag. Timer-Timing-biten (TT) är 1 alltid när<br />

TON räknar och inte har räknat upp till den totala väntetiden.<br />

Timer-Enable-biten (EN) är 1 alltid när TON<br />

räknar (oberoende om räknaren har räknat upp till totala<br />

väntetiden). Alla timer-funktionerna använder speciella<br />

register i minnet (t.ex. T4:0) för att lagra argument<br />

och räknarens mellanresultat. De enskilda bitarnas<br />

adresser är av formen T4:0/DN, T4:0/EN och T4:0/TT.<br />

4 Anvisningar för programmering i praktiken<br />

4.1 Att skapa ett nytt projekt:<br />

1. Klicka p˚a ikonen “RSLogix 500”.<br />

5


2. Välj New fr˚an File-menyn.<br />

3. Programmet fr˚agar nu vilken typ av PLC du tänker programmera. Bläddra till<br />

sidan 3 om du inte kommer ih˚ag.<br />

4. Tre fönster hoppar fram. Det vänstra visar projektträdet och det högra visar kontaktdiagrammet.<br />

Ovanför diagramfönstret finns en meny med alla instruktionsmodulerna.<br />

5. Dubbelklicka p˚a I/O Configuration i projektträdet och tryck p˚a Read I/O Config s˚a<br />

att PCn f˚ar veta vilka moduler PLCn har.<br />

6. Placera ut symbolerna i diagramfönstret.<br />

7. Välj Comms > Download fr˚an menyn eller klicka uppe till vänster där det st˚ar<br />

“Offline”. Ifall det finns fel i programmet öppnas ett nytt fönster som anger var felet<br />

finns och felets natur. Kill the bugs och tryck igen p˚a Comms > Download.<br />

• När programmet fr˚agar “Change to program mode?”, svara “Yes”.<br />

• När programmet fr˚agar “Change to run mode?”, svara “Yes”.<br />

• När programmet fr˚agar “Do you want to go online?”, svara “Yes”.<br />

8. PLCn börjar nu exekvera programmet. Registrenas värden kan observeras och vid<br />

behov modifieras fr˚an projektträdet. När du vill göra ändringar i programmet kan<br />

du göra det antingen i online-mode eller i offline-mode. För offline-editering, välj<br />

Comms > Offline. När du gjort ändringarna m˚aste du ladda ner programmet p˚a<br />

nytt. I online-mode kan du ändra p˚a en koppling genom att välja Edit > Start<br />

Rung Edits. När editeringen är färdig välj Edit > Accept Rung. Kopplingen<br />

testas med Test Edits och läggs till med Assemble Edits. Kommandona är ocks˚a<br />

tillgängliga genom ett höger-klick.<br />

4.2 N˚agra r˚ad<br />

• Win95 är mycket instabilt, s˚a “Save early, save often”.<br />

• Det lönar sig att hela tiden ha PLCns nyckel i REMote-positionen, s˚a att man inte<br />

behöver vrida p˚a nyckeln när man skriver och testar programmet.<br />

• För att underlätta programmeringen kan man namnge de olika minnesplatserna.<br />

När du har ett instruktion med en adress kan du helt enkelt aktivera instruktionen<br />

(genom att klicka p˚a den) och skriva in namnet som du vill att adressen skall ha.<br />

I fortsättningen behöver du bara skriva namnet och programmet sätter in adressen<br />

automatiskt. Namn/address-referenser kan ocks˚a modifieras i Address/Symbolfönstret<br />

som kan öppnas fr˚an projektträdet.<br />

• Man kan ocks˚a sätta in kommentarer i kontaktdiagrammet, vilket gör det mer lättläst.<br />

6


• I kontaktdiagrammet m˚aste alla Output Latch-instruktioner komma efter varandra<br />

i en klunga, därefter alla Output Unlatch-instruktioner. Orsaken till detta är att det<br />

annars finns en risk för att det sker en överg˚ang fr˚an det nuvarande tillst˚andet innan<br />

en överg˚ang till följande tillst˚and. Resultatet är att systemet plötsligt inte befinner<br />

sig i n˚agot tillst˚and alls.<br />

• Det har d˚a och d˚a förekommit ett s˚adant fel i systemet, att Märklin-transformatorn<br />

inte ger tillräckligt med spänning för BYT RIKTNING-signalen, och att t˚aget istället<br />

för att byta riktning kör fram˚at h˚ardare är n˚agonsin. Om s˚adant händer, lönar<br />

det sig att stänga av hela PLCn och vänta en stund. Orsaken till detta är okänd.<br />

• Stäng av systemet (PLC och de tv˚a transformatorerna) när du slutar<br />

jobba genom att vrida p˚a brytaren brevid PLCn.<br />

Viktigt: Eftersom systemet inte fr˚an början vet i vilken riktning t˚aget kommer att<br />

köra, behövs ett initialiseringstillst˚and. Detta kan ˚astadkommas t.ex. genom att l˚ata t˚aget<br />

köra ända tills det kommer till en ändstation. D˚a vet man var t˚aget befinner sig och<br />

samtidigt kan man byta riktning.<br />

7

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!