LOGIKSTYRNING/11/2: Laboration 1 Uppgiften
LOGIKSTYRNING/11/2: Laboration 1 Uppgiften
LOGIKSTYRNING/11/2: Laboration 1 Uppgiften
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