Laboration 1 Styrteknik

Relevanta dokument
Laboration 1 Styrteknik

GX IEC Developer Sekvensstyrning och SFC-editor

LABORATIONSINSTRUKTION

Programmerbara styrsystem

Automation Laboration: Överföring över PROFIBUS

LABORATIONSINSTRUKTION

LABORATIONSINSTRUKTION

Styrteknik 4.5/7.5 hp distans: Programmering med IEC PLC1B:1. Styrteknik

Styrteknik: SFC Introduktion

Styrteknik : Programmering med IEC Styrteknik

Paneler - VCPXX.2. Programmeringsmanual för VCP-paneler. Revision 2

Styrteknik : Funktioner och funktionsblock

Styrteknik 7.5 hp distans: SFC med GX IEC

Sekvensstyrning Grafcet och IEC

Styrteknik: Tidskretsar, räknare

Sortering av cylindrar

Laboration 2 i Styrteknik

LABORATIONER I STYRTEKNIK. Grundläggande PLC- programmering

LABORATIONSINSTRUKTION

HÖGSKOLAN I KALMAR Institutionen för teknik Erik Loxbo LABORATION I PLC-TEKNIK SEKVENSSTYRNING AV TRANSPORTBAND SIMATIC S7 - GRAPH

LABORATIONSINSTRUKTION

LABORATIONSINSTRUKTION

Välkommen till. Styrteknik grundkurs

1 Strömmen I skall mätas med en amperemeter. Amperemetern är inställd på området 30 ma. Vad kommer amperemetern att visa?

KOM IGÅNG GUIDE e!cockpit Av Carsten Holm

+5V. start. Styrsystem. stopp. Tillståndsmaskiner

Klassdeklaration. Metoddeklaration. Parameteröverföring

Innehåll i detta dokument

Datorlaboration 1 Deskriptiv statistik med hjälp av MS Excel vers. 2010

Simulering med ModelSim En kort introduktion

Programmerbar logik. Kapitel 4

Detta dokument beskriver enbart konfigurering av FX3U-ENET för att programmera/monitorera via Ethernet.

Programmets startmeny ser ut så här. För att få fram menyerna Avsluta, Inställningar och Användare måste du föra markören upp till det blåa fältet.

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Vilken skillnad gör det var du placerar det? Prova båda.

Laboration 1 Introduktion till Visual Basic 6.0

Kom igång. Readyonet Lathund för enkelt admin. Logga in Skriv in adressen till din webbsida följt av /login. Exempel:

Visa/Dolj knappar i Webeditor 8

USB styrt DMX gränssnitt

Datorövning 2 Matlab/Simulink. Styr- och Reglerteknik för U3/EI2

ATU. Användarmanual. Larmöverföringsenhet Firmware Version

+5V. start. Styrsystem. stopp. Tillståndsmaskiner

Ladderprogrammering steg för steg

CoDeSys 2.3.x.x Svensk installationsguide

Modbus över Ethernet. WAGO Contact SA TSS STR

PNSPO! Använda NJ med NS System Memory. 14 mars 2012 OMRON Corporation

Mitt hus och jag steg för steg instruktioner

TUTORIAL 3: ATT STARTA ETT NYTT PROJEKT, IMPORTERA ELLER DIGITALISERA MATERIAL, SAMT SORTERA DET.

Högskolan Dalarna Sida 1 av 8 Elektroteknik Per Liljas

HEMISSON. Webots-Botstudio laborationsbok. Sida1

Bruksanvisning M-ANY PreMium MP3 Art I kartongen: Fjärrkontroll, hörlurar, batterier, USB-kabel, Audiokabel, väska, halssnodd, CD-Rom.

Laboration Fuzzy Logic

Histogram, pivottabeller och tabell med beskrivande statistik i Excel

WAGO IO System Service Seminar. Diagnostik

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst

First Class uppgift 2

Guide till att använda Audacity för uttalsövningar

1.Lär känna MS SQL Observera. Tips. Förberedelse

Datorlaboration 1 Deskriptiv statistik med hjälp av MS Excel

1

Malmö högskola 2007/2008 Teknik och samhälle

Applikationsexempel Timer med tryckknapp

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

Grunderna i stegkodsprogrammering

Inmatningsprogrammet EventManager

SPRINT-HANDBOK (version 0.4)

WAGO KNX komma igång guide

Datorteknik 2 (AVR 2)

Vop handledning. Användarhandledning till Vop applikationen. UPPGJORD: Mattias Gyllsdorff GODKÄND:Mattias Gyllsdorff REV: A DATUM:

Gran Canaria - Arbetsbeskrivning knapplänkar (Mediator 8)

Lathund grundkurs datorutbildning

WinStudio - Uppstart. Drifttagning av operato rspanel med IndraWorks och WinStudio. IndraWorks 14. Version

Exempeluppgift i Logikstyrning. 1 Inledning. 2 Insignaler och utsignaler

Att skapa egna konferenser i FirstClass

domovea Export av energimätning via mail V.1/ Hager Elektro AB

Följddiagram för händelsestyrda rörelser

AVR 5. Styrning av trafikljus. Digitala system 15 p

Handledning för Installation av etikettskrivare

Vi börjar med en penna som ritar när du drar runt den på Scenen.

Komponenter med COM (och COM+/VC++ 7.0)

Modbus. WAGO Contact SA TSS STR

Simulering med ModelSim En kort introduktion

Flödesschema som visar hur man använder Quartus II.

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Intro till SPSS Kimmo Sorjonen (0811)

3. Hämta och infoga bilder

Kortlaboration DIK. Digitalteknik, kombinatorik.

web: fax: tel: kontor , Toby Edmundsson mobil: , Jan

Lathund till Publisher TEXT. Skriva text. Importera text. Infoga text. Dra och släpp

Handledning för konstruktion av tabeller och diagram med Excel

> Guide till Min webmail

Innehåll Information om hemkatalog och lagring av filer... 2 PC... 3 DAFGU-/GDA-dator, Windows

Allt du behöver för crowdsourcing

Innan du börjar göra din katalog så rekommenderar vi att du läser igenom den korta introduktionen på startsidan.

Styrsystem. SoMachine TM241 / 251. Kom-igång med SoMachine projekt. Skapad: Rev

Programmering i Scratch 2.0

NetBeans 5.5. Avsikt. Projektfönster

Förberedelseuppgift inför datorlaborationen

Startanvisning för Bornets Internet

Transkript:

110114/ Thomas Munther IDE-sektionen, Halmstad Högskola Laboration 1 Styrteknik Starta upp programmet GX IEC Developer ligger på skrivbordet eller alternativt under program. Gå sedan in under Project- > New, och ni får upp ett fönster enligt figur 1. Välj vilken PLC-serie respektive vilken modell du skall arbeta mot. I vårt fall: FX-serie och modelltyp FX3U. Figur 1 Du får nu ett förslag var du skall lägga ditt än så länga tomma projekt: Skapa en underkatalog exempel till default valet t.ex. C:\PROJEKT Direkt efter så får du uppmaning att välja hur projektet skall skrivas. En ruta, se figur 2, som heter New Project Starting Options dyker upp med fyra alternativ. Välj Empty Project. Figur 2 1

Nu öppnar sig en list längst till vänster en trädstruktur av ditt lilla projekt, se figur 3. Detta brukar kallas för projektnavigatorn. Den finns öppen och åtkomlig under hela tiden. De viktigaste grenar som du behöver använda varje gång är Task_Pool, Global_Vars och POU_Pool. I Task_Pool lägger du olika programmeringsuppgifter som du har löst, men dessa sätts samman av olika programdelar POU:s. För varje Task måste det anges vilka POU:s som ingår. I Global_Vars deklareras dina globala variabler, ingångar och utgångar på PLC och andra variabler som används i flera POU. När du skall skicka över ett program till PLC:n så är det en Task som först måste kompileras och de POU som ingår i denna samt den globala variabellistan. Figur 3 Meningen med laborationen är att vi skall försöka lära oss att använda programmet för att göra en enkel tillämpning. Vi skall försöka göra en enkel hisstyrning av en tvåvånings hiss och använda lite olika sätt att programmera en PLC t.ex. ladderprogram (reläprogram) och SFC Sequential Function Chart (Grafcet liknande program). Markera Global_Vars och öppna denna. Här skall vi lägga in våra globala variabler. Det betyder att i vårt fall lägger vi in insignaler (ingångar) till PLC respektive utsignaler från denna (utgångar). Typiska insignaler kan vara gränslägesgivare och tryckknappar. Gränslägesgivare ger en 1:a om hissen ligger framför dess våning. Tryckknappen ger en 1:a om den är intryckt, en 0:a annars. Utsignaler blir saker och ting som vi kan påverka på vår hissmodell som lampor och hissmotorn. 2

Lägg nu in följande: VK_VAN1 (våningsknapp 1) under Identifier, X0 under MIT-Addr och Type blir BOOLEAN, se figur 4. Fälten Comment och Remark behövs inte fyllas i. För att lägga till fler variabler i listan så trycker ni på symbolen (Insert After) under disketten i menyn, Automatisk tilldelning. Min tanke är att vi lägger in alla in- och utgångar som kommer till och från hissmodellen på en gång som vi kommer att använda. Lägg nu till resten av variablerna på samma sätt som i variabellistan. Figur 4 Vi bestämmer själva namnen på identifierarna. Undvik svenska bokstäver å,ä och ö. Global variabellista och oktal numrering. Först följer ingångar och dessa inleds med ett X. Class Identifier MIT-Addr IEC-Addr Type VAR_GLOBAL VK_VAN1 X0 %IX0 BOOL VAR_GLOBAL VK_VAN2 X1 %IX1 BOOL VAR_GLOBAL VK_VAN3 X2 %IX2 BOOL VAR_GLOBAL VK_VAN4 X3 %IX3 BOOL VAR_GLOBAL GL_VAN1 X4 %IX4 BOOL VAR_GLOBAL GL_VAN2 X5 %IX5 BOOL VAR_GLOBAL GL_VAN3 X6 %IX6 BOOL VAR_GLOBAL GL_VAN4 X7 %IX7 BOOL VAR_GLOBAL HK_VAN1 X10 %IX8 BOOL 3

VAR_GLOBAL HK_VAN2 X11 %IX9 BOOL VAR_GLOBAL HK_VAN3 X12 %IX10 BOOL VAR_GLOBAL HK_VAN4 X13 %IX11 BOOL Sedan följer utgångar med oktala adresser som föregås av ett Y. Class Identifier MIT-Addr IEC-Addr Type VAR_GLOBAL HL_VAN1 Y0 %QX0 BOOL VAR_GLOBAL HL_VAN2 Y1 %QX1 BOOL VAR_GLOBAL HL_VAN3 Y2 %QX2 BOOL VAR_GLOBAL HL_VAN4 Y3 %QX3 BOOL VAR_GLOBAL VL_VAN1 Y4 %QX4 BOOL VAR_GLOBAL VL_VAN2 Y5 %QX5 BOOL VAR_GLOBAL VL_VAN3 Y6 %QX6 BOOL VAR_GLOBAL VL_VAN4 Y7 %QX7 BOOL Hissen har två utgångar för styrning i vardera riktningen. Dessa skall inte aktiveras samtidigt. Därefter skall vi använda specialadress som ger en 1 Hz puls ut växlande mellan värde 0 och 1. Class Identifier MIT-Addr IEC-Addr Type VAR_GLOBAL Motor_upp Y10 %QX8 BOOL VAR_GLOBAL Motor_ner Y11 %QX9 BOOL VAR_GLOBAL PULS_1Hz M8013 %MX0.8013 BOOL Notera att förkortningar VK_VAN1 står för våningsknapp 1 och VL_VAN1 betyder våningslampa 1. Dessa hittar man vertikalt hos hissmodellen. Förkortningar HL_VAN1 respektive HK_VAN2 står för Hisslampa våning 1 respektive Hissknapp våning 2. Dessa hittar du liggande på bottenvåningen i hissen. De är egentligen tänkta att sitta inne i hissen, men av praktiska skäl har dessa lagts utanför. GL_VAN1 står för gränslägesgivare våning 1. Så här långt har vi endast skapat en lista med namn kopplade till adresser hos vårt PLCsystem. Faktum är att vi kan testa och föra över denna lista till PLC:n. Gå in under Project-> Rebuild all. Om kompileringen nu gick bra så visas följande fönster, figur 5. 4

Figur 5 Här kan man se att vi fick, inga fel och inga varningar. Ni kan också se vilken prestanda som PLC får, d v s antal counters, timers, programsteg och antal tillståndssteg o s v. Skulle vi ha fått fel så måste dessa åtgärdas innan vi kan skicka över programmet till PLC:n. Varningar däremot går att bortse ifrån och ändå överföra ett program. I vårt fall är det ju inget riktigt program utan endast variabeldeklarationer. Nästa steg blir att föra över vår globala variabellista till PLC:n och detta görs enligt: Project-> Transfer-> Download to PLC. Givetvis måste seriekabeln vara inkopplad mellan dator och PLC-system. Sätt även PLC i RUN-läge. Det finns en switch jämte seriekablaget på PLC:n. Klicka på OK,se figur 6. Figur 6 Därefter får du en fråga om du vill sätta PLC i STOP-läge. Gör det, och överföringen startar. Om allt gick bra så får du på nytt en fråga att sätta PLC:n i RUN-läge, gör även det, vilket avslutar överföringen. 5

Monitorering/Övervakning av ingångar och utgångar Hissmodulen skall vara inkopplad till PLC-plattan via flatkablar. Glöm inte att mata hissen med 24 Volt likspänning. Nu skall vi se om vi kan visa status på ingångarna till hiss och PLC:n, d.v.s i vårt fall knappar och gränslägesgivare samt även se om vi kan påverka hissmodulens lampor samt få hissen och röra på sig. Gå till Online-> Entry Data Monitor. Om tabellen är tom. Markera med musen i densamma. Högerklicka och välj Insert Objects. Nu dyker det upp en objekt lista där du kan välja vad du vill övervaka. Välj Global Variables och Add all. Då bör du ha fått något som liknar följande figur 7. Figur 7 Starta monitorering genom att klicka på symbolen som liknar en piltavla i menyn. Dubbelklicka på en utgångsvariabels Value så ändrar den sitt värde och om allt är rättkopplat så kan du säkert se och höra någon förändring på hissmodulen. Upprepa samma sak fast för en ingångsvariabel. Händer det något? 6

Ingångarna tar ju emot signaler utifrån som en knapptryckning eller att vi står framför en våning med hissen. Så det spelar ju inte så stor roll att vi ändrar värdet inuti Entry Data Monitor. Tryck på hissknapparna eller våningsknapparna istället eller kör hissen till en våning. På baksidan av hissmodulen kan man se om vi ligger på en våning, vilket indikeras med en tänd lysdiod. Efter att ha lekt en stund stäng av monitorering (klicka på piltavlan i menyn). Klicka ner Entry Data Monitor tabellen. Nu är det dags att skriva ett litet hissprogram. PLC-program UPPGIFT: Vi skall i laborationen konstruera en hiss som kan åka från våning 1 till våning 2 och tillbaka. Indikera med respektive våningslampa om hissen befinner sig där. Den bör även kunna räkna hur ofta den har besökt en våning samt ha tidsfördröjningar på våningsknappar och våningslampor Jag visar hur en tvåvåningshiss kommer att se ut implementerad i SFC. Skulle ni tappa bort er i handledningen gå tillbaka hit för att komma tillbaka in på spåret. Vårt SFCprogram innehåller 4 stycken olika symboler, se figur 8, första rutan längst upp är en dubbeltecknad rektangel, vilket är initialtillståndet och som måste finnas med. Figur 8 7

När PLC:n startar hamnar vi alltid där. Längst ner finns en horisontell linje, final step som också måste finnas. Den anger när sekvensen är slut och vi kommer då tillbaka till initialtillståndet och sekvensen startar om. Däremellan finns vanliga tillståndsrutor (Step). Vi bestämmer vad dessa skall heta. Ge dem vettiga namn och undvik å,ä och ö. Mellan varje tillstånd finns alltid ett övergångsvillkor (Transition). Villkoret anger vad som måste vara uppfyllt för att lämna ett tillstånd och gå till ett annat. Hur skall vi beskriva vad som sker i vårt ovanstående funktionsdiagram. Se figur 8. Om hissen står på våning 1, hur länge skall den stå där? Ja tills någon trycker på våningsknapp 2 eller hissknapp 2. Då blir övergångsvillkoret sant och vi lämnar tillstånd Van1 och går till tillstånd Van1_2. Hur länge skall vi befinna oss i detta tillstånd? Tja tills hissen befinner sig på våning 2 (GL_VAN2 ger en 1:a) och då kommer vi till tillstånd Van2. Vi har ovan beskrivit hur vi tänker oss hur funktionsdiagrammet beskriver hissförloppet, men vi måste också få något att hända. Våningslamporna kanske skall indikera att knappen är intryckt, samt på vilken våning man befinner sig eller vill åka till. Hissen måste ju faktiskt påverkas för att köras upp och ned. Kort sagt vi måste knyta aktiviteter/händelser (Actions) till tillstånden annars händer inget. Ni får endast försöka påverka statusen hos utgångar och minnen i själva tillstånden aldrig i ett övergångsvillkor. Programmeringspråket som vi skall använda kallas för Sequential Function Chart (SFC) det väljer vi genom att gå in i Project Navigator under POU Pool. Markera denna och välj New Pou. Finns även i menyn. Döp denna till Hiss_2Van. Välj Class till PRG och sedan programspråk Sequential Function Chart (SFC) för själva programkroppen (Body), se följande figur 9. Figur 9 Du har nu skapat en POU-Program Organizer Unit (programdel) och du har också valt vilket språk som du vill använda. Om du klickar på POU i navigatorn så ser du att det nu finns tre grenar Header, Body och Action Pool. Header är lokal variabellista. Här deklareras de variabler som används i POU:n och som inte är globala. Body är i vårt fall själva SFC-kroppen och slutligen 8

Action Pool vilken innehåller aktiviteter som är lite mer komplexa än bara en direkt påverkan av en utgång. Klicka på Body:n i Project Navigator. Då ser det ut som figur 10 nedan. Den innehåller endast ett initial tillstånd (Step), en horisontell linje (final step) samt ett övergångsvillkor (Transition). Markera övergångsvillkoret, TRUE. Gå sedan upp i symbolmenyn och klicka 3 ggr på den gula symbolen (Step and Transition). Nu har vi fått lika många tillstånd som i figur 8. Namnge tillstånden enligt figuren, samt skriv in de motsvarande globala variabelnamnen för övergångsvillkoren. Figur 10 Hur skapar vi en action? Det finns olika sätt, men det enklaste sättet är helt enkelt att skriva namnet på den utgång som vi vill påverka i det tillståndet. Dubbelklicka på tillståndsrutan Van1 och skriv VL_VAN1 i motsvarande Action association Van1, se nedan i figur 11. 9

Skriv motsvarande för tillstånden under: Figur 11 Step Van1_2 Van2 Van2_1 Action Motor_upp VL_VAN2 Motor_ner Faktum är att nu återstår bara en sak innan vi kompilerar programmet och skickar över det till PLC:n för provkörning. Nämligen de POU vi vill använda i vårt program måste specificeras i en TASK och dessa ligger i TASK_Pool. Hur kan vi tolka en TASK? Någon form av administrerande funktion som samordnar de POU vi använder (vi har bara en just nu). Markera TASK_Pool och välj New Task, se figur 12. Döp denna till, Hissprogram. 10

Figur 12 Markera Hissprogram under TASK_Pool och dubbelklicka på denna. Lägg in vilka POU som ingår i din TASK, Hissprogram. Se följande figur 13. Figur 13 Nu är det dags för kompileringen, överföring till PLC samt testning. Ha fortfarande Hissprogram markerat i TASK_Pool. Välj nu Project-> Rebuild All. Om inga kompileringsfel, välj i så fall överföring, Project-> Transfer-> Download to PLC Du tvingas på nytt att mjukvarustoppa PLC och återstarta densamma för att överföra programmet. Nu när programmet är överfört skall vi testa det genom att provköra hissen, men klicka på Body[SFC] för din POU, Hiss_2Van. Markera fönstret där Body:n ligger och starta monitorering (piltavlan). Då ser det ut enligt figur 14. Ställ hissen manuellt på våning 1 om den inte står där. Kör programmet! 11

Det gulfärgade tillståndet är det just nu aktiva och övergångsvillkoret GL_VAN1 är just nu sant. Tryck på våningsknapp 2 på hissmodulen. Se vad som händer i fönstret. Figur 14 Nu har vi kört ett väldigt enkelt PLCprogram där vi inte har använt några komplicerade Actions eller Transitions utan dessa har enbart varit globala variabler. Fördröjning Timer Vi skall nu fördröja olika händelser och då behöver vi ett timerelement. Eftersom detta är en Aktivitet/händelse så ska vi skapa en Action. Markera, Action_Pool, i navigatorn och välj New Action. Vi skall fördröja tändningen av lampan på våning 1. Kalla denna Action för Ind_Van1. Gör programmet av Action som ett ladderdiagram, se figur 15. 12

Figur 15 Dubbelklicka på Action: Ind_Van1 och ni får som i följande figur 16. Figur 16 Lägg pekaren i det prickade fältet och använd högerknapp på musen och lägg in en contact, coil och ett function block (FB). Det ser då ut som i figur 17. 13

Figur 17 Använd högerknapp på musen och välj Interconnect Mode. Förbind contact, coil och functions blocket samt plocka bort frågetecknen framför ValueIn och ValueOut. Använd högerknappen på musen på nytt och välj Select Mode och skriv på frågetecknen ovanför contact, coil respektive vid Preset för functions blocket följande: GL_VAN1, VL_VAN1 samt 20. Nu återstår en sak nämligen att namnge själva timer funktionsblocket. Klicka på Instance och skriv TIMER1_2SEK. Din Action bör se ut enligt figur 18. Figur 18 14

Nu har vi infört en timervariabel, TIMER1_2SEK, som inte är någon global variabel, men den måste ändå deklareras eftersom den används i vår POU, så vi deklarerar den lokalt i Headern. Dubbelklicka på Header och gör deklaration enligt figur 19. Figur 19 Nu måste vi bara tala om för POU:n var vi skall ha vår action någonstans i programmet. Lämpligt är väl att lägga denna i tillstånd VAN1. Ta bort den gamla action VL_VAN1 och lägg in den nya, Ind_Van1. Gör en liknande action och fördröjning för våningslampa 2, samt infoga den i bodyn. Därefter så överför vi och testar vårt nyskrivna program: Markera task, Hissprogram. Välj sedan Project-> Rebuild All och om inga fel, överför till PLC med: Project-> Transfer->Download To PLC. Kör hissen några gånger upp och ner för att se om det fungerar som det är tänkt. Monitorera gärna motsvarande action, genom att klicka i det fönster som du vill monitorera och därefter på piltavlan. Flankräknare/Händelseräknare (Counter) Om allt fungerar så går vi vidare för att lägga till ytterligare funktionalitet i programmet. Nu skall vi lägga till en flankräknare/händelseräknare (Counter) inte att blanda ihop med fördröjning av tid (Timer) som vi just gjorde. Min tanke är att vi skall räkna hur ofta vi har besökt våning 2, vilket vi gör genom att skapa ytterligare en action. Markera Action_Pool i navigatorn och välj New Action. Döp denna action till RAKNA_GGR och välj programmeringsspråk Ladder Diagram enligt figur 20. Om inget händer när du försöker skapa en ny action kan det bero på att monitoreringen inte är avstängd, i monitoreringsläge går det inte att programmera. 15

Figur 20 Figur 21 visar hur action, RAKNA_GGR ser ut. Denna skapas på samma sätt som action med fördröjning fast vi hämtar endast ett funktionsblock COUNTER_FB_M. Vi ställer in hur långt räknaren skall räkna genom att sätta Preset till 4. Variabeln GGR som finns i figuren gör att det är möjligt att se hur många gånger vi har besökt våning 2. Notera att i coil finns ett S, som vi får fram genom att välja en vanlig Coil och dubbelklicka i denna och välj Set från menyn. Detta står för ettställning av variabeln KLAR. Denna ettställning kvarstår oavsett om vi ligger kvar i tillståndet eller om villkoret har blivit falskt. Figur 21 I figur 22 visas hur deklarationen för Headern ser ut, som är lokala variabler. GGR är av typen INT och variabeln VAN2_GGR är av typen COUNTER_FB_M. Variabeln KLAR är en BOOLEAN. Hur vet vi detta? Jo, dubbelklicka på Funktionsblocket COUNTER_FB_M så får vi upp en deklarationslista för densamma. Variabeln PULS_1Hz är en global variabel som vi deklarerade i början. Funktionen är att har vi besökt våning 2, 4 gånger så kommer samtliga hisslampor börja blinka med frekvensen 1 Hz. 16

Figur 22 Skriv nu in din nya action i POU, Body också. Lämpligt borde vara att lägga denna i tillståndet VAN2. Man kan ha flera actions i ett och samma tillstånd. Om vi nu kompilerar och överför programmet till PLC:n, så kommer detta fungera så att om vi besöker våning 2, 4 gånger med hissen så upphör uppräkningen. Eftersom vi har satt Preset till 4 och så räknar VAN2_GGR bara till 4. Vi skulle behöva komplettera vår COUNTER_FB_M med en nollställning. Detta är en god regel. Vi behöver en action som nollställer räknarvariabeln VAN2_GGR. Vi inför en ny action som heter NOLLA_RAKNARE. Den visas i figur 23. Notera att funktionen RST_M är en funktion inte ett funktionsblock när du skall hämta denna. Funktionen är inte någon variabel så deklaration av denna är onödig. Figur 23 17

Var skall vi lägga in denna action? Tja, jag tycker att i tillstånd VAN1 borde vara lämpligt. Skriv in NOLLA_RAKNARE under den befintliga action Ind_Van1. Kompilera programmet och överför till PLC:n. Testa och monitorera speciellt action som innehåller COUNTER_FB_M. Kontrollera att nollställningen är ok! Övergångsvillkor Transition Hittills har våra övergångsvillkor mellan tillstånden (Steps) enbart varit en global variabel, men givetvis kan villkoret vara mycket mera komplext och då krävs att man gör en Transition body. Tänk i vårt fall med hissen att den kan styras antingen av en våningsknapp eller av en hissknapp (horisontellt liggande), d.v.s vi skulle behöva ett eller-villkor mellan tillstånden. Vi skall införa ett eller-villkor både när vi åker upp och när vi åker ner. Både HK_VAN2 eller VK_VAN2 skall kunna användas för att åka upp till våning 2 och HK_VAN1 eller VK_VAN1 kan användas för att åka ner från våning 2. Skriv över 2 av de tidigare övergångsvillkoren i POU-body:n enligt figur 24. Figur 24 18

Därefter klickar ni på fyrkanten bredvid namnet på det nya övergångsvillkoret. Välj att skriva Transition body:n i form av ett Ladder Diagram, enligt följande figur 25. Figur 25 Övergångsvillkoret mellan tillstånd VAN1 och VAN1_2 som vi döpt om till TR1_2, består endast av två parallellkopplade kontakter (eller-villkor) kopplat till en coil som heter TRAN, vilket kan ses i figur 26. TRAN är ingen variabel i egentlig mening utan ett fördefinierat ord i programvaran som helt enkelt står för TRANSITION. Denna behöver inte deklareras. Om villkoret för TRAN är uppfyllt. Ja då är övergångsvillkoret sant och vi lämnar tillstånd VAN1 och går till tillstånd VAN1_2. Figur 26 Vi gör ett liknande övergångsvillkor mellan tillstånd VAN2 och VAN2_1 och döper denna till TR2_1. Kompilera! 19

Notera, i figur 27, att vid kompileringen står det hur många Counters, Timers och steps (tillstånd) som du använder. Fortsätt med överföring och testning av programmet. Fungerar det att använda olika knappar för att åka upp och ner? Figur 27 Vi skall ytterligare titta på ett par användbara funktioner. Gå in i projektnavigatorn och titta under Task Pool. Där är vår Task som i vårt fall heter Hissprogram, se figur 28. I vårt fall står det Event =TRUE, efter namnet, vilket betyder att programmet skall köras så fort PLC:n är inkopplad och switchen är i RUN-läge. Men vi kan även sätta en variabel där och då körs programmet enbart när variabeln är sann. Figur 28 20

Markera Hissprogram som i figuren ovan och välj högerknapp på musen. Välj Properties, ni får då upp ett fönster som heter Task Information, enligt figur 29. Om vi sätter EVENT =VK_VAN4 och bockar för rutan Timer/Output Control. Så körs programmet som ligger på PLC:n och utför styrning så länge variabeln VK_VAN4 är sann (knappen intryckt). Kompilera och testa inställningen. Om VK_VAN4 är sann går hissen att köra annars är all styrning stoppad. Notera att så fort VK_VAN4 är sann så återupptas aktiviteterna som utfördes innan pausningen. Figure 29 Denna information kan vara mycket användbar till nästa laboration glöm inte det!! Efter att ni testat glöm inte att ändra tillbaka till den ursprungliga inställningen för Task. En annan funktionalitet som kan vara användbar vid senare tillfällen är att kunna avbryta programmet, i det nuvarande tillståndet och gå tillbaka till initialtillståndet. Någon form av nollställning av SFC-grafen. Markera er POU i projektnavigatorn: Hiss_2van. Tryck högermusknapp och välj Properties. Eftersom den globala variablen VK_VAN3 inte används just nu så väljer jag att sätta den variablen till egenskapen SFC reset, se figur 30. 21

Figur 30 Kompilera och testa funktionen av denna. Monitorera ert program och kör upp hissen till våning 2 samt tryck på VK_VAN3, se figur 31. Figur 31 Programmet ligger nu i initialtillståndet, men hissen står kvar på våning 2. Inte bra! Vi måste få ner hissen också. Det finns mängder med sätt för att lösa detta, men jag visar ett sätt genom att skapa en till POU som skall hantera avbrottet. Den heter AVBRYT och innehåller två tillstånd. Den har bara en aktivitet, se figur 32. 22

Figur 32 Klicka på Hissprogram i Task_Pool och lägg in den skapade POU:n AVBRYT enligt följande figur 33. Figur 33 Kompilera och testa programmet. Monitorera för att se att det fungerar som avsett. Glöm inte hur man gör denna form av avbrott för att kunna nollställa programmet och möjlighet till omstart. Detta är användbart till senare laboration. GLÖM INTE DET!!! 23

Inlämningsuppgift: din uppgift är nu att skriva ihop ett PLC-program för styrning av en fyrvåningshiss. Hissen styrs antingen av hissknappar eller våningsknappar. Vid en beställning skall våningslampan blinka ända tills hissen har nått dit. Flera samtidiga beställningar kan göras av hissen, men exekvera dessa i tur och ordning, tänk på att när hissen har börjat röra sig i en riktning skall den fortsätta åt samma håll tills alla beställningar är tagna. Den skall stanna på varje beställd våning i 2 sekunder innan den åker vidare. Använd 4 räknare (counter) för att hålla reda på hur många gånger som hissen har stannat till på de olika våningarna. PLC-programmet måste testas och demonstreras mot vår Hissmodul för att bli godkänt. Programmet sparas i katalog C:\PROJEKT. Ett demoprogram av GX IEC Developer (ver 7.01) finns på Beijers hemsida: http://www.beijer.se/web/web_aut_se.nsf/alldocuments/bae711c83a36ee3cc1256f AC002871CE Denna kan ni använda för att ladda ner programvara och skriva/förbereda labbuppgifter hemma. Programvaran skall förmodligen också ligga på era projektrumsdatorer. För att åstadkomma blinkningar av olika frekvens så finns booleska minnesceller på adresser: M8012 (10Hz), M8013 (1Hz) samt M8014 (0.1Hz). Dessa ger en växling mellan 0:a och 1:a av olika frekvens. Detta kan vara mycket användbart till styrning av blinkande hisslampor eller i någon annan uppgift där vi ska ha en blinkande display. BILAGA Tips till laboration 2 och inlämningsuppgift. Kanske vill du skapa alternativgrenar respektive parallellgrenar eller programhopp. Detta kan göras genom att du markerar ett övergångsvillkor där du vill grena sekvensen och markera gren (Divergence Branch ), se figur 34. 24

Figur 34 Man kan också lägga till ett hopp efter övergångsvillkoret istället för att åstadkomma en ny sekvensgren. Du sätter en etikett (Label) på denna för att tala om var programmet skall ta vägen om övergångsvillkoret är sant, se figur 35. Figur 35 Det måste alltså finnas ett inhopp någonstans med samma etikett (Hopp1) på denna, se figur 36 nedan. Programmet nedan har ingen nytta av detta hopp utan det finns enbart med för att illustrera möjligheten. Eventuellt kan ni behöva möjligheten i framtiden. 25

Figur 36 I ert styrprogram kan ni även ha flera sekvenser som utförs samtidigt. Båda sekvenserna aktiveras samtidigt och dess initialtillstånd blir aktivt. Därefter hur fort eller sakta den ena eller andra sekvensen utförs hänger på övergångsvillkoren, så att en sekvens kanske stoppar den andra för att den hindrar något övergångsvillkor för att bli sant. Hur hänger dessa sekvenser ihop (olika POU:s)? Vi kan t ex använda en global variabel för att överföra information mellan sekvenserna, se figur 37. Det kan vara att i den vänstra POU:n, i tillstånd VAN2 så ettställs kanske en global variabel som är gemensam med den högra POU:n och som används i övergångsvillkor TR_steg2 och denna kan inte bli uppfylld om inte den vänstra POU:n har kommit ner till tillstånd VAN2 först, så genom att göra variabler gemensamma kan vi hindra att en eller flera POU:s bli utförda. Givetvis finns möjlighet att använda flera POU i ett och samma program. 26

Figur 37 Visar även hur en alternativgren ser ut, se figur 38. Vi låter sekvensen förgrena sig under tillståndet VAN1. Det är antingen den vänstra eller högra grenen som är möjlig att vandra inte bägge samtidigt, men givetvis måste övergångsvillkoren TR1_2 och TR_STEG2 vara skrivna så att båda inte blir uppfyllda samtidigt. Figur 38 27