De PLC geïntegreerd in de PC - Telenet.beusers.telenet.be/mijn_favorieten/files/TIN_deel3.pdf · 3...
Transcript of De PLC geïntegreerd in de PC - Telenet.beusers.telenet.be/mijn_favorieten/files/TIN_deel3.pdf · 3...
Vervolg
3 PLC programmeringOm een PLC te kunnen programmeren is het belangrijk te weten hoe de PLC het programma verwerkt. (Zie 2.4 blz. 35-)
3.1 Programma verwerking samengevat
3.1.1 PLC-cyclus
1. De toestand van de ingangen wordt in het Proces Image Input geheugen geplaatst
2. Het programma wordt instructie per instructie in volgorde verwerkt, te beginnen met het hoofdprogramma.
3. Het Proces Image Output geheugen bepaald de toestand van de uitgangen.
3.1.2 Adressering
De in- en uitgangen krijgen een symbolische naam in de variabelenlijst. We gebruiken de globale variabelen lijst zodat de ingangen en uitgangen gekend zijn over het ganse project.
3.1.3 Programmeertalen
Bij het maken van een programma kiezen we een geschikte programmeertaal:
● LD= LadderDiagram
● FBD= FunctieBlokDiagram
● IL= InstructieLijst
● ST= StructuredTekst
● SFC= SequentieelFunctieDiagram (SequentialFunctionChart)
● CFC= ContinuousFunctionChart (gebruiken wij niet!!)
Toegepaste Informatica 49
VRIJ TECHNISCH INSTITUUT
3.1.4 Programma types
Programma (POU):
Oproepen van andere functieblokken en programma’s.
Onthoudt de status van de lokale variabelen tot de volgende PLC-cyclus.
Oproepen van het programma gebeurt door de PLC-taak.
Functieblok:
Oproepen van andere functies en functieblokken.
Onthoudt de status van de lokale variabelen tot de volgende PLC-cyclus.
Gebruikt programmacode voor het oproepen van FB’s.
Function :
Heeft geen intern geheugen.
Heeft exact 1 uitgang.
Niet meer, niet minder.
3.1.5 Programma documenteren.
Om de programma's te verduidelijken heeft men verschillende mogelijkheden:
o Goede symbolische namen van ingangen, uitgangen, merkers en andere variabelen.
o Goede naam voor de programma's zelf.
o Programma commentaar: eventueel bijkomende verduidelijking over de functie van het programma
o Netwerk commentaar: bijkomende verduidelijking over de functie van het netwerk.
o Commentaar per instructielijn: in STL en IL kan men zelfs per instructie lijn commentaar geven.
Deze commentaren die in deze programma’s zitten kosten geen verwerkingstijd. In tegen stelling tot bij ander PLC fabriekanten wordt bij de beckhoff PLC deze commentaren in de PLC zelf opgeslagen. Als men dus een programma uit een PLC haalt heeft men gelijk de commentaar in het programma.
50 Toegepaste Informatica
VRIJ TECHNISCH INSTITUUT
3.2 Basis besturingsfuncties
De bedoeling van het volgende deel van de cursus is, de basis instructies te leren en vertrouwd te geraken met de programmeringswijze van de TwinCAT SoftPLC.
Voor de begeleidende oefeningen maken we gebruik van een bestaand TwinCAT project en een bestaand PLC-project.
Het TwinCAT-project noemt 7IO.tsm. Zorg ervoor dat dit project actief is, en dat het
TwinCAT sytem gestart is . Dit wordt ingesteld via de TwinCAT System Manager.
In TwinCAT PLC Control openen we een bestaand PLC-project nl. 7IO.pro.
3.2.1 De JA-functie
Het meest eenvoudige dat men kan programmeren is de JA-functie. Bij de JA-functie volgt de uitgang de ingang. Als de ingang logisch '1' is, is de uitgang logisch '1'. Als de ingang logisch '0' is, is de uitgang logisch '0'.
Het uitgangssignaal neemt dus dezelfde toestand aan als het ingangssignaal.
3.2.1.1 De waarheidstabel
Als er niet te veel ingangsvariabelen zijn, kan een waarheidstabel gebruikt worden om al de mogelijke combinaties van deze ingangsvariabelen weer te geven, en hoe dit resulteert in de uitgangsvariabelen.
Bij de JA-functie hebben we maar één ingangssignaal, deze kan de toestand '0' of '1' aan nemen. Dit wordt in een eerste kolom genoteerd, in de laatste kolom wordt de toestand van het uitgangssignaal weergegeven.
De waarheidstabel van de JA-functie
Waarheidstabel
INGANG_1 UITGANG_1
0 0
1 1
De waarheidstabel kan uitgebreid worden met bijkomende ingangsvariabelen, en/of met bijkomende uitgangsvariabelen.
Omdat de waarheidstabel veel te groot zou worden, kan een volledig PLC-programma van een installatie nooit opgenomen worden in één waarheidstabel. Delen van het programma waar een beperkt aantal ingangsvariabelen gebruikt worden, kan men wel met een waarheidstabel controleren.
Toegepaste Informatica 51
VRIJ TECHNISCH INSTITUUT
3.2.1.2 Elektrisch principe schema
Het elektrische schema van de JA-functie is ook heel eenvoudig.
3.2.1.3 Programmering van JA-functie
Programmering van JA-functie in LD
Programmering van JA-functie in IL
IL code .
LD INGANG_1
ST UITGANG_1
LD komt van Load
ST komt van Store
Programmering van JA-functie in FBD
Meestal is voor de JA-functie geen apart symbool voorzien in FBD.
3.2.1.4 TwinCAT 7IO
Start de TwinCAT SoftPLC, en start het eerste project: De JA-functie.
In dit project zie je ook het verband tussen schakelaar en PLC-Ingang en tussen de PLC-ingang en de ingangsvariabele van het programma.
--> Project 1: EN-functie.
52 Toegepaste Informatica
24V 0V
INGANG_1 UITGANG_1
INGANG_1 UITGANG_1
VRIJ TECHNISCH INSTITUUT
3.2.2 NIET-functie of inversie
Het omgekeerde van de JA-functie is de NIET-functie. De uitgang neemt de tegenovergestelde waarde aan van de ingang. Als de ingang logisch '1' is, is de uitgang logisch '0'. Als de ingang logisch '0' is, is de uitgang logisch '1'.
Bij de NIET-functie neemt het uitgangsignaal steeds het omgekeerde van het ingangssignaal. Het ingangssignaal wordt geïnverteerd.
3.2.2.1 De waarheidstabel
De waarheidstabel van de NIET-functie
Waarheidstabel
INGANG_1 UITGANG_1
0 1
1 0
3.2.2.2 Elektrisch principe schema
Om elektrisch een niet functie te maken, hebben we een hulprelais nodig. Geen stroom door de ingang moet er voor zorgen dat er wel stroom vloeit door de uitgang. En omgekeerd.
Door de schakelaar te bedienen, er vloeit nu stroom door de schakelaar, trekt het relais aan. Als het relais aangetrokken wordt gaat het normaal gesloten contact open.Geen stroom meer door de Lamp, of de uitgang.
Dit is niet gelijk aan het volgende elektrisch schema.
Als er een stroom vloeit door de schakelaar vloeit er ook een stroom door de lamp.
Vanuit het standpunt van de bediening echter, functioneren bij de schakelingen hetzelfde. In rusttoestand, schakelaar niet bediend, brandt de lamp. Als de schakelaar bediend wordt gaat de lamp uit.
Toegepaste Informatica 53
24V 0V
NIET0V24V
VRIJ TECHNISCH INSTITUUT
3.2.2.3 Programmering van de NIET-functie
Programmering van NIET-functie in LD
Programmering van NIET-functie in IL
LDN INGANG_1
ST UITGANG_1
Programmering van NIET-functie in FBD
3.2.2.4 TwinCAT 7IO
Start de TwinCAT SoftPLC. Als je het eerste project succesvol hebt volbracht kan je nu het volgende project 2: De NIET-functie starten.
In dit project zie je ook het verband tussen schakelaar en PLC-Ingang en tussen de PLC-ingang en de ingangsvariabele van het programma.
--> Project 2: De NIET-functie
54 Toegepaste Informatica
INGANG_1 UITGANG_1
INGANG_1 UITGANG_1
VRIJ TECHNISCH INSTITUUT
INGANG_1UITGANG_1INGANG_2
3.2.3 EN-functie
Het uitgangsignaal wordt ‘1’ als al de ingangssignalen van de functie de toestand ‘1’ bezitten.
3.2.3.1 De waarheidstabel
Waarheidstabel
INGANG_1 INGANG_2 UITGANG_1
0 0 0
0 1 0
1 0 0
1 1 1
3.2.3.2 Programmering van de EN-functie
Programmering van EN-functie in LD
Programmering van EN-functie in IL
LD INGANG_1
AND INGANG_2
ST UITGANG_1
Programmering van EN-functie in FBD
3.2.3.3 TwinCAT 7IO
Start de TwinCAT SoftPLC. Het volgende project is project 3: De EN-functie.
--> Project 3: De AND-functie
Toegepaste Informatica 55
INGANG_1 UITGANG_1INGANG_2
INGANG_1UITGANG_1INGANG_1 AND
VRIJ TECHNISCH INSTITUUT
3.2.4 OF-functie
Het uitgangsignaal wordt ‘1’ als één van de ingangssignalen van de functie de toestand ‘1’ bezit.
3.2.4.1 De waarheidstabel
Waarheidstabel
INGANG_1 INGANG_2 UITGANG_1
0 0 0
0 1 1
1 0 1
1 1 1
3.2.4.2 Programmering van OF-functie
Programmering van OF-functie in LD
Programmering van OF-functie in IL.
LD INGANG_1
OR INGANG_2
ST UITGANG_1
Programmering van OF-functie in FBD.
3.2.4.3 TwinCAT 7IO
--> Project 4: De OF-functie
56 Toegepaste Informatica
INGANG_1 UITGANG_1
INGANG_2
INGANG_1UITGANG_1INGANG_1 OR
VRIJ TECHNISCH INSTITUUT
3.2.5 Inversie van het resultaat
Bij deze instructie wordt het resultaat geïnverteerd. Niet het ingangssignaal.
Om dit te illustreren een voorbeeld met een EN-functie
3.2.5.1 De waarheidstabel
Waarheidstabel
INGANG_1 INGANG_2INGANG_1
EN INGANG_2
UITGANG_1
0 0 0 1
0 1 0 1
1 0 0 1
1 1 1 0
3.2.5.2 Programmering van INVERSIE van het resultaat
Programmering van de INVERSIE van de EN-functie in LD.
Programmering van INVERSIE in IL.
LD INGANG_1
AND INGANG_2
NOT
ST UITGANG_1
Programmering van een INVERSIE van de EN-functie in FBD.
Toegepaste Informatica 57
INGANG_1
UITGANG_1
INGANG_2
INGANG_1UITGANG_1INGANG_1 AND
VRIJ TECHNISCH INSTITUUT
3.2.6 Prioriteitsregels, plaatsing van haakjes.
De ingewikkelde netwerken kunnen gereduceerd worden tot NIET, EN en OF-functies.
In IL is bij sommige PLC’s de rangorde van bewerkingen van toepassing; de NIET heeft voorrang op de EN-functie, de EN-functie heeft voorrang op de OF-functie, enz.
Bij de beckhoff PLC is dit echter niet zo. Bij beckhoff is de volgorde in het programma van belang, daarom is het soms nodig bij IL haakjes om te plaatsen. Bij siemens S7 zijn deze haakjes niet altijd noodzakelijk.
3.2.6.1 Voorbeeld 1 in LD
3.2.6.2 Programmering voorbeeld 1 in IL
Beckhoff IL code.
LD INGANG_1
AND INGANG_2
AND INGANG_3
OR( INGANG_4
AND INGANG_5
)
OR INGANG_6
ST UITGANG_1
programma in STL-code (Siemens S7)
A INGANG_1
A INGANG_2
A INGANG_3
O
A INGANG_4
A INGANG_5
O INGANG_6
= UITGANG_1
58 Toegepaste Informatica
INGANG_4
UITGANG_1INGANG_2 INGANG_3INGANG_1
INGANG_6
INGANG_5
VRIJ TECHNISCH INSTITUUT
3.2.6.3 Voorbeeld 2 in LD
3.2.6.4 Programmering voorbeeld 2 in IL
Beckhoff IL code.
LD INGANG_1
OR INGANG_4
OR INGANG_6
AND( INGANG_2
OR INGANG_5
)
AND INGANG_3
ST UITGANG_1
Het programma in STL-code (Siemens S7)
A(
O INGANG_1
O INGANG_4
O INGANG_6
)
A(
0 INGANG_2
0 INGANG_5
)
A INGANG_3
= UITGANG_1
3.2.6.5 TwinCAT 7IO
--> Project 5: De verwarming
Toegepaste Informatica 59
INGANG_4 INGANG_5
INGANG_6
INGANG_3INGANG_2INGANG_1 UITGANG_1
VRIJ TECHNISCH INSTITUUT
3.3 Geheugenfuncties
3.3.1 Houdcontacten.
Via houdcontacten van een relais kan men ook een 'geheugen' functie maken. Een goed voorbeeld hiervan is de start/stop schakeling voor een motor.
3.3.1.1 Elektrisch principe schema
Als je S1 drukt trekt het relais K1 aan. Het hulp contact K1 sluit, het relais blijft aangetrokken ook als je schakelaar S1 lost laat. De schakeling 'onthoudt' dat schakelaar S1 is gedrukt.
De schakeling onthoud dat S1 gedrukt is tot dat schakelaar S0 gedrukt wordt. Dan wordt de spanning van het relais K1 weggenomen, het hulp contact opent, als S0 losgelaten wordt blijft het relais K1 spanningsloos.
Als je S1 en S0 gelijktijdig bedient krijgt het relais geen spanning. De schakeling geeft dus een voorrang aan Stop, (S0).
3.3.1.2 Start/stop programmering
Programmeren van start/stop in LD
Als ingang_1 hoog is en ingang_2 is laag dan is uitgang_1 hoog. Als uitgang_1 hoog is en ingang_2 is laag dan blijft uitgang_1 hoog. Enkel als ingang_2 hoog wordt zal uitgang_1 laag worden.
De startdrukknop en de stopdrukknop moeten beide een NormaalOpen-contact hebben. Op die manier wordt ingang_1 hoog als je de startdrukknop drukt en ingang_2 wordt hoog als je op de stopdrukknop drukt.
60 Toegepaste Informatica
0V24V
S1 S0
K1
K1
INGANG_1
UITGANG_1
UITGANG_1INGANG_2
VRIJ TECHNISCH INSTITUUT
Programmering van start/stop in LD met veilige stop
Het probleem van de vorig start/stop schakeling in LD is dat deze niet meer veilig is. Als er een draadbreuk is in de verbinding van de stopdrukknop naar de PLC, dan kan ingang_2 nooit meer hoog worden en kan de uitgang niet meer laag worden, tenzij men de spanning wegneemt.
Dit kan elektrisch opgelost worden door de stopdrukknop terug uit te rusten met een normaalgesloten contact. In rusttoestand, stopdrukknop niet gedrukt, is ingang_2 hoog.
Als we het LadderDiagram dan aanpassen:
Zal de start/stop schakeling terug functioneren. Maar veilig nu.
Als ingang_1 hoog is en ingang_2 is hoog dan is uitgang_1 hoog. Als uitgang_1 hoog is en ingang_2 is hoog dan blijft uitgang_1 hoog. Enkel als ingang_2 laag wordt zal uitgang_1 laag worden.
De startdrukknop heeft een normaalopen contact en de stopdrukknop een normaalgesloten. Op die manier wordt ingang_1 hoog als je de startdrukknop drukt en ingang_2 wordt laag als je op de stopdrukknop drukt.
3.3.1.3 TwinCAT 7IO
--> Project 6: De start/stop schakeling
Toegepaste Informatica 61
INGANG_1
UITGANG_1
UITGANG_1INGANG_2
VRIJ TECHNISCH INSTITUUT
3.3.2 SR-functie en RS-functie
Omdat een startstop functie allerhande toepassingen kent, en dikwijls terug komt, heeft men in de PLC een standaard functie voorzien.
Een SR-functie of RS-functie is een functie waarbij men een uitgang (of merker) met één signaal kan ‘hoog’ maken (of 'Setten') en met een ander, een tweede signaal kan ‘laag’ maken (of 'Resetten').
De functie heeft een SET ingang en een RESET ingang. Een logische ‘1’ aan de SET ingang zorgt ervoor dat de uitgangstoestand van de functie ‘1’ wordt. De uitgangstoestand blijft ‘1’ ook al wordt de SET ingang terug 'laag'. Dit blijft zo tot de toestand aan de RESET ingang in ‘1’ verandert, dan wordt de uitgangstoestand terug ‘laag’.
Bij de SR-functie heeft de SET ingang voorrang, bij de RS-functie heeft de RESET ingang voorrang. Opgelet: dit is volgens de IEC 61131-3 standaard. Bij de Siemens PLC is die omgekeerd.
3.3.2.1 Programmering van de Set/Reset functie
Programmering van SR-functie in LD in één netwerk
Programmering van SR-functie of RS-functie In twee netwerken.
Als je de S of de R in aparte netwerken programmeerd dan bepaald de volgorde van uitvoering de voorrang. Het laatst uitgevoerde net werk heeft voorrang. Om een SR-functie te programmeren, Set heeft voorrang, moet je dit dus als volgt doen.
Netwerk1
Netwerk2
62 Toegepaste Informatica
INGANG_1 UITGANG_1
INGANG_2
SR SET Q1
RESET
NAAM
INGANG_1 UITGANG_1
R
INGANG_2 UITGANG_1
S
VRIJ TECHNISCH INSTITUUT
Het programma van de SR-functie of RS-functie in IL
Ook hier bepaald de volgorde van verwerking de voor. Het onderstaande voorbeeld is een RS-functie.
LD INGANG_1
S UITGANG_1
LD INGANG_2
R UITGANG_1
3.3.2.2 TwinCAT 7IO
--> Project 7: De geheugenfuncties
3.3.3 Flankdetectie
Naast het detecteren van een statische toestand is het vaak nodig op een signaalverandering te reageren. Hier is het moment van de verandering belangrijk. Zo kan men de “stijgende flank” detecteren als ook de “dalende flank”. De “verandering is dan ook maar één PLC cyclus actief, want de volgende PLC-cyclus is er geen verandering meer…Tot het signaal daadwerkelijk weer veranderd.
Gebruik makende van het feit dat de PLC de instructies lijn per lijn afwerkt kunnen we met de basis besturingsfuncties die we tot nu toe gezien hebben deze functie programmeren.
Toegepaste Informatica 63
Toestand ‘0’
Toestand ‘1’
Stijgende flank dalende flank
VRIJ TECHNISCH INSTITUUT
3.3.3.1 Flankdetectie met normale basisfuncties.
Netwerk1
Netwerk2
Werking:
Om de werking beter te verklaren is er een hieronder een tijdsdiagram getekend, elke verticale verdeling stelt één PLC-cyclus voor. We weten ook dat de PLC het programma lijn per lijn verwerkt.
tijdstip t0: eerste cyclus van de PLC, na een PLC-reset.
Netwerk 1: INGANG_1=0, MERKER_2 = 0 dus MERKER_1 = 0Netwerk 2: INGANG_1=0 dus MERKER_2 wordt1
Waar MERKER_2 in Netwerk 1 van het programma nog 0 was is MERKER_2 na het doorlopen van de eerste cyclus 1 geworden.
tijdstip t1:
Netwerk 1: INGANG_1=0, MERKER_2 = 1 dus MERKER_1 = 0Netwerk 2: INGANG_1=0 dus MERKER_2 = 1
MERKER_2 is veranderd in de vorige cyclus maar dit heeft verder geen invloed.
tijdstip t2 - t3:
T.o.v. de vorige cyclus is er niets veranderd dus veranderd er niets aan de merkers.
tijdstip t4: de ingang is t.o.v. de vorige cyclus veranderd = stijgende flank.
Netwerk 1: INGANG_1=1, MERKER_2 = 1 dus MERKER_1 wordt 1Netwerk 2: INGANG_1=1 dus MERKER_2 wordt 0
MERKER_1 wordt 1 in netwerk 1. Daarna wordt in netwerk 2 MERKER_2 0
64 Toegepaste Informatica
INGANG_1 MERKER_1MERKER_2
INGANG_1 MERKER_2
INGANG_1
MERKER_2
MERKER_1=FLANK
24V
0V
t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11
VRIJ TECHNISCH INSTITUUT
tijdstip t5: de ingang is nog steeds 1
Netwerk 1: INGANG_1=1, MERKER_2 = 0 dus MERKER_1 wordt terug 0Netwerk 2: INGANG_1=1 dus MERKER_2 = 0
In netwerk 1 wordt MERKER_1 terug 0 omdat in de vorige cyclus MERKER_2 0 werd
tijdstip t6..t8:
T.o.v. de vorige cyclus is er niets gewijzigd dus wijzigt de toestand van de merkers ook niet.
tijdstip t9:
Netwerk 1: INGANG_1=0, MERKER_2 = 0 dus MERKER_1 = 0Netwerk 2: INGANG_1=0 dus MERKER_2 = 1
In netwerk 1 blijft MERKER_1 = 0 en in Netwerk 2 wordt MERKER_2 = 1
tijdstip t10:
Netwerk 1: INGANG_1=0, MERKER_2 = 1 dus MERKER_1 = 0Netwerk 2: INGANG_1=0 dus MERKER_2 = 1
In netwerk 1 blijft MERKER_1 = 0 ondanks MERKER_2 = 1. In netwerk 2 is er niets veranderd.
tijdstip t11 en volgende.
T.o.v. de vorige cyclus is er niets gewijzigd dus wijzigt de toestand van de merkers ook niet.
Besluit.
Een merker die voor flankdetectie gebruikt wordt, is maar één PLC-cyclus 'hoog'
3.3.3.2 Programmering van een stijgende flank in LD
Positieve flank, (RISING EDGE), detectie van het resultaat van voorgaande instructies, in dit geval INGANG_1
3.3.3.3 Programmering van dalende flank in LD
Negatieve flank, (FALLING EDGE), detectie van het resultaat van voorgaande instructies, in dit geval INGANG_1
3.3.3.4 TwinCAT 7IO
--> Project 8: De flankdetectie
Toegepaste Informatica 65
INGANG_1 MERKER_1R_TRIG
CLK Q1
NAAM
INGANG_1 MERKER_1F_TRIG
CLK Q1
NAAM
VRIJ TECHNISCH INSTITUUT
3.4 Tijdsfuncties
In vele productie processen wordt de werking door tijdsfuncties beïnvloed. Die beïnvloeding van het proces kan men meestal in één van volgende groepen onderverdelen:
● Een actie reageert met een bepaalde vertraging op de voorwaarde van de actie.
● Een actie nog een tijd geactiveerd houden terwijl de voorwaarde niet meer voldaan zijn.
● De start voorwaarden voor de actie verlengen.
Voorbeelden van dergelijke tijdsfuncties.
● Trappenhuis, na het drukken van de lichtschakelaar moet het licht na een bepaalde tijd automatisch uitgaan.
● Een automatische ster/driehoek aanloop van een zware elektromotor
Deze “tijdfuncties” worden ook timers genoemd.
3.4.1 De inschakelvertraging of TON (Beckhoff PLC)
3.4.1.1 De inschakelvertraging: symbool
Een positieve flank op IN van de Timer start de timer. Na het verstrijken van de tijd wordt Q geset. Bij een laag signaal op IN valt ook het signaal Q weg.
De ingangsvariabelen van de functieblok T_ON
VAR_INPUT
IN : BOOL; (* start de timer met de stijgende flank, reset de timer met logisch '0' *)
PT : TIME; (* de vertragingstijd, na het verlopen van deze tijd wordt Q geset *)
END_VAR
De uitgangsvariabelen van de functieblok T_ON
VAR_OUTPUT
Q : BOOL; (* is TRUE (logisch ‘1’), PT seconden nadat IN een stijgende flank had *)
ET : TIME; (* de reeds verstreken tijd *)
END_VAR
66 Toegepaste Informatica
T_ON
IN Q
PT ET
NAAM
VRIJ TECHNISCH INSTITUUT
3.4.1.2 Tijdsdiagram van de inschakelvertraging
het verloop in het tijdsdiagram
t0 Bij een positieve flank aan ‘IN’ wordt de Timer gestart. ‘ET’ geeft de verstreken tijd.
t0+PT Na de geprogrammeerde tijd (PT) wordt Q logisch ‘1’. ‘ET’ geeft de verstreken tijd.
t1 Een logisch ‘0’ aan ‘IN’ geeft een logisch ‘0’ op ‘Q’. ‘ET’ is 0.
t2 De Timer wordt opnieuw gestart zie punt 1.
t3 De Timer wordt onderbroken door het wegvallen van het ‘IN’ signaal. ‘ET’ wordt 0.
t4 De Timer wordt opnieuw gestart zie punt 1.
t4+PT Na de geprogrammeerde tijd (PT) wordt Q logisch ‘1’. ‘ET’ geeft de verstreken tijd.
t5 Een logisch ‘0’ aan ‘IN’ geeft een logisch ‘0’ op ‘Q’. ‘ET’ is 0.
3.4.1.3 Programmering van de inschakelvertraging
Programmering van de TON-timer in LD
Toegepaste Informatica 67
INGANG_1 UITGANG_1T_ON
IN Q
PT ET
Timer1
T#5S
IN
Q
tijd
ET
tijd
T#5s
T#0s
tijd
t0 t1 t2 t3 t4 t5
t0 t1 t2 t3 t4 t5t0+PT t4+PT
VRIJ TECHNISCH INSTITUUT
Programmering van de TON-timer in IL
LD TRUEAND INGANG_1ST Timer1.INCAL Timer1(PT := T#5000ms)
LD Timer1.QST UITGANG_1
3.4.2 De uitschakelvertraging of TOF (Beckhoff PLC)
Als het signaal IN logisch ‘1’ is wordt ook Q geset. Een negatieve flank op IN van de Timer start de timer na het verstrijken van de tijd valt ook het signaal Q weg.
3.4.2.1 De uitschakelvertraging: symbool
De ingangsvariabelen van de functieblok.
VAR_INPUT
IN : BOOL; (* start de timer met de dalende flank, reset de timer met de stijgende flank *)
PT : TIME; (* de vertragingstijd, na het verlopen van deze tijd wordt Q gereset *)
END_VAR
De uitgangsvariabelen van de functieblok.
VAR_OUTPUT
Q : BOOL; (* is FALSE (logisch ‘0’), PT seconden nadat IN een dalende flank had *)
ET : TIME; (* de reeds verstreken tijd *)
END_VAR
68 Toegepaste Informatica
De variabele ‘Timer1’, dit is de naam van de timer, wordt gedeclareerd als het type TON.
T_OF
IN Q
PT ET
NAAM
VRIJ TECHNISCH INSTITUUT
3.4.2.2 Tijdsdiagram van de uitschakelvertraging
het verloop in het tijdsdiagram
t0 Bij een positieve flank aan ‘IN’ wordt de uitgang van de Timer, Q, geset.
t1 Bij de dalende flank wordt de Timer gestart, Q blijft geset. ‘ET’ geeft de verstreken tijd.
t1+PT Als de tijd verstreken is, wordt Q gereset.
t2 De positieve flank op ‘IN’ zorgt voor een logisch ‘1’ op Q. ‘ET’ wordt op 0 gezet.
t3 De Timer wordt gestart. ‘ET’ geeft de verstreken tijd.
t4 De Timer wordt onderbroken. ‘ET’ wordt gereset.
t5 De Timer wordt t.g.v. de dalende flank opnieuw gestart ‘ET’ geeft de verstreken tijd.
t5+PT Als de tijd verstreken is, wordt Q gereset.
3.4.2.3 Programmering van de uitschakelvertraging
Programmering van de TOF-timer in LD
Toegepaste Informatica 69
IN
Q
tijd
ET
tijd
T#5s
T#0s
tijd
t0 t1 t2 t3 t4 t5
t0 t1 t2 t3 t4 t5t1+PT t5+PT
INGANG_1 UITGANG_1T_OF
IN Q
PT ET
Timer1
T#5S
VRIJ TECHNISCH INSTITUUT
Programmering van de TOF-timer in IL
LD TRUEAND INGANG_1ST Timer1.INCAL Timer1(PT := T#5000ms)
LD Timer1.QST UITGANG_2
3.4.3 Impuls tijdfunctie of TP (Beckhoff PLC)
Als het signaal IN logisch ‘1’ is wordt ook Q geset, gelijktijdig wordt de timer gestart. Pas na het verstrijken van de tijd valt het signaal op uitgang Q weg.
3.4.3.1 De impulsfunctie: symbool
De ingangsvariabelen van de functieblok.
VAR_INPUT
IN : BOOL; (* start de timer met de stijgende flank, *)
PT : TIME; (* de vertragingstijd, na het verlopen van deze tijd wordt Q gereset *)
END_VAR
De uitgangsvariabelen van de functieblok.
VAR_OUTPUT
Q : BOOL; (* is TRUE bij de stijgende flank van IN en is FALSE (logisch ‘0’), PT seconden nadat IN een stijgende flank had *)
ET : TIME; (* de reeds verstreken tijd *)
END_VAR
70 Toegepaste Informatica
De variabele ‘Timer1’, dit is de naam van de timer, wordt gedeclareerd als het type TOF.
TP
IN Q
PT ET
NAAM
VRIJ TECHNISCH INSTITUUT
3.4.3.2 Tijdsdiagram van de impulsfunctie
het verloop in het tijdsdiagram
t0 Bij een positieve flank aan ‘IN’ wordt de uitgang van de Timer Q geset. De Timer wordt gestart. ‘ET’ geeft de verstreken tijd.
t0+PT Als de tijd verstreken is, wordt Q gereset. Ook al is de ingang nog steeds hoog.
t1 Als de tijd verstreken is en de ingang wordt ‘0’ dan wordt ‘ET’ gereset.
t2 Bij een positieve flank aan ‘IN’ wordt de uitgang van de Timer Q geset. De Timer wordt gestart. ‘ET’ geeft de verstreken tijd.
t3 De ingang wordt ‘0’ toch telt de Timer verder.
t2+PT Als de tijd verstreken is, wordt Q gereset. Als de ingang al ‘0’ is, wordt ook ‘ET’ gereset.
t4 Bij een positieve flank aan ‘IN’ wordt de uitgang van de Timer Q geset. De Timer wordt gestart. ‘ET’ geeft de verstreken tijd.
t5 Een volgende puls terwijl de tijd nog niet verstreken is, heeft geen invloed.
t4+PT Als de tijd verstreken is, wordt Q gereset. Als de ingang al ‘0’ is, wordt ook ‘ET’ gereset.
3.4.3.3 Programmering van de impulsfunctie
Programmering van de TP-timer in LD
Toegepaste Informatica 71
IN
Q
tijd
ET
tijd
T#5s
T#0s
tijd
t0 t1 t2 t3 t4 t5
t0 t0+PT t2 t2+PT t4 t4+PT
INGANG_1
UITGANG_1
TP
IN Q
PT ET
Timer1
T#5S
VRIJ TECHNISCH INSTITUUT
Programmering van de TP-timer in IL
LD TRUEAND INGANG_1ST Timer1.INCAL Timer1(PT := T#5000ms)
LD Timer1.QST UITGANG_1
3.4.3.4 TwinCAT 7IO
--> Project 9: De timerfuncties
72 Toegepaste Informatica
De variabele ‘Timer1’, dit is de naam van de timer, wordt gedeclareerd als het type TP.
VRIJ TECHNISCH INSTITUUT
3.5 De telfuncties
Vaak moet er bij processen worden geteld. Het aantal producten dat een bepaald gedeelte van het productie proces verwerkt. (vb.: flessen, zakken, dozen, auto’s, enz.) Het aantal foutmeldingen etc.
Elke PLC beschikt over een aantal telfuncties.
Deze “telfuncties” worden ook counters genoemd.
Men heeft meestal drie verschillende tellers:
Optellers: meestal aangeduid met CTU (Count Up)
Afteller: meestal aangeduid met CTD (Count Down)
En Op/Aftellers: aangeduid met CTUD (Count Up/Down)
3.5.1 De optel-functie
Een positieve flank aan ‘CU’ vermeerdert de teller met 1. CV is de uitlezing van de waarde van de teller. Q is logisch 1 als de actuele teller waarde kleiner is als de opgegeven waarde ‘PV’. Met reset wordt de teller op 0 gezet.
3.5.1.1 De optel-functie: symbool
De ingangsvariabelen van de functieblok.
VAR_INPUT
CU : BOOL; (* bij een stijgende flank vermeerdert de teller met 1, *)
RESET : BOOL; (* een logisch ‘1’ reset de teller, CV=0, *)
PV : WORD; (* presetvalue, wanneer de tellerwaarde CV groter of gelijk aan deze waarde is, is de uitgang ‘Q’ logisch ‘1’ *)
END_VAR
De uitgangsvariabelen van de functieblok.
VAR_OUTPUT
Q : BOOL; (* is TRUE wanneer de presetvalue ‘PV’ is bereikt. *)
CV : TIME; (*actuele tellerwaarde, vermeerdert met één bij een positieve flank op ‘CU’ *)
END_VAR
Toegepaste Informatica 73
CTU
CU Q
RESET CV
PV
NAAM
7 2 8
VRIJ TECHNISCH INSTITUUT
3.5.1.2 Tijdsdiagram van de optel-functie
3.5.1.3 Programmering van de optel-functie
Programmering van de CTU-counter in LD
Programmering van de CTU-counter in IL
LD TRUE
AND INGANG_1
ST C1.CU
CAL C1(RESET := INGANG_2, PV := 5)
LD C1.Q
ST UITGANG_1
74 Toegepaste Informatica
CU
RESET
Q
CV
0
5
10
15
5
INGANG_1 UITGANG_1
INGANG_2
CTU
CU Q
RESET CV
PV
C1
7 2 8
De variabele ‘C1’, dit is de naam van de timer, wordt gedeclareerd als het type CTU.
VRIJ TECHNISCH INSTITUUT
3.5.2 De neertel-functie
Een positieve flank aan ‘CD’ vermindert de teller met 1. CV is de uitlezing van de waarde van de teller. Q is logisch 1 als de actuele teller waarde 0 is. Met LOAD wordt de waarde van PV in de teller ingelezen.
3.5.2.1 De neertel-functie: symbool
De ingangsvariabelen van de functieblok.
VAR_INPUT
CD : BOOL; (* bij een stijgende flank vermindert de teller met 1, *)
LOAD : BOOL; (* een logisch ‘1’ laad de preset value ‘PV’ in de teller, CV=PV, *)
PV : WORD; (* presetvalue, een logisch’1’ bij ‘LOAD’ laad deze waarde in ‘PV’ *)
END_VAR
De uitgangsvariabelen van de functieblok.
VAR_OUTPUT
Q : BOOL; (* is TRUE wanneer de CV=0. *)
CV : TIME; (* actuele tellerwaarde, vermindert met één bij een positieve flank op ‘CD’ *)
END_VAR
Toegepaste Informatica 75
CTD
CD Q
LOAD CV
PV
NAAM
7 2 8
VRIJ TECHNISCH INSTITUUT
3.5.2.2 Het tijdsdiagram van de neertel-functie
3.5.2.3 Programmering van de neertel-functie
Programmering van de CTD-counter in LD
Programmering van de CTD-counter in IL
LD TRUE
AND INGANG_1
ST C1.CD
CAL C1(LOAD := INGANG_2, PV := 10)
LD C1.Q
ST UITGANG_1
76 Toegepaste Informatica
CD
LOAD
Q
CV
0
5
10
15
5
INGANG_1 UITGANG_1
INGANG_2
CTU
CU Q
LOAD CV
PV
C1
7 2 8
De variabele ‘C1’, dit is de naam van de timer, wordt gedeclareerd als het type CTU.
VRIJ TECHNISCH INSTITUUT
3.5.3 De op en neertel-functie
Een positieve flank aan ‘CU’ vermeerdert de teller met 1. Een positieve flank aan CD vermindert de teller met 1.CV is de uitlezing van de waarde van de teller. QU is logisch 1 als de actuele teller waarde groter of gelijk is aan de opgegeven waarde ‘PV’. Met reset wordt de teller op 0 gezet. QD is logisch 1 als de actuele teller waarde 0. Met reset wordt de teller op 0 gezet. Met LOAD wordt de waarde PV in de teller ingelezen.
3.5.3.1 De op en neertel-functie: symbool
De ingangsvariabelen van de functieblok.
VAR_INPUT
CU : BOOL; (* bij een stijgende flank vermeerdert de teller met 1, *)
CD : BOOL; (* bij een stijgende flank vermindert de teller met 1, *)
RESET : BOOL; (* een logisch ‘1’ reset de teller, CV=0, *)
LOAD : BOOL; (* een logisch ‘1’ laad de preset value ‘PV’ in de teller, CV=PV, *)
PV : WORD; (* presetvalue, een logisch’1’ bij ‘LOAD’ laad deze waarde in ‘PV’ *)
END_VAR
De uitgangsvariabelen van de functieblok.
VAR_OUTPUT
QU : BOOL; (* is TRUE wanneer de presetvalue ‘PV’ is bereikt. *)
QD : BOOL; (* is TRUE wanneer de CV=0. *)
CV : TIME; (* actuele tellerwaarde*)
END_VAR
Toegepaste Informatica 77
CTUD
CU QU
CD QD
RESET CV
LOAD
PV
NAAM
7 2 8
VRIJ TECHNISCH INSTITUUT
3.5.3.2 Het tijdsdiagram van de op en neertel-functie
3.5.3.3 Programmering van de op en neertel-functie
Programmering van de CTUD-counter in LD
78 Toegepaste Informatica
CU
CD
QU
CV
0
5
10
15
RESET
LOAD
QD
INGANG_3
INGANG_1 UITGANG_1
INGANG_2
C1
CTUD
CU QU
CD QD
RESET CV
LOAD
PV7 2 8INGANG_4
5
UITGANG_2
VRIJ TECHNISCH INSTITUUT
Programmering van CTUD-counter in IL
LD TRUE
AND INGANG_1
ST C1.CU
CAL C1(CD:=INGANG_2, RESET:=INGANG_3, LOAD:=INGANG_4, PV:=5)
LD C1.QD
ST UITGANG_2
LD C1.QU
ST UITGANG_1
3.5.3.4 TwinCAT 7IO
--> Project 10: De tel-functies
--> Project 11: De transportband
Toegepaste Informatica 79
Versie: donderdag 1 november 2007
De variabele ‘C1’, dit is de naam van de timer, wordt gedeclareerd als het type CTUD.
VRIJ TECHNISCH INSTITUUT
3.6 Doelstellingen.
1. De PLC-cyclus kunnen omschrijven.
2. Kunnen omschrijven wat bedoelt wordt met een netwerk in een programma.
3. Minstens drie ‘hulpmiddelen’ kunnen opnoemen die een programma kunnen verduidelijken.
4. Uitleggen wat er met gestructureerd programmeren wordt bedoeld.
5. De verschillende soorten programma’s en hun kenmerken kunnen opnoemen.
6. De basisfunctie : identiteit kunnen uitleggen en kunnen gebruiken in een opgave.
7. De basisfunctie : AND of EN kunnen uitleggen en kunnen gebruiken in een opgave.
8. De basisfunctie : OR of OF kunnen uitleggen en kunnen gebruiken in een opgave.
9. De basisfunctie : de inversie van een operand kunnen uitleggen en kunnen gebruiken in een opgave.
10. De basisfunctie : de inversie van het resultaat kunnen uitleggen en kunnen gebruiken in een opgave.
11. De extra functie: EXOR kunnen uitleggen en gebruiken in een opgave.
12. De prioriteitsregels op de basisfuncties kunnen toepassen.
13. Het gebruik van een merker kunnen uitleggen.
14. Een geheugen functie kunnen uitleggen en gebruiken in een opgave.
15. De set/reset functie kunnen uitleggen en gebruiken in een opgave.
16. De flankdetectie kunnen uitleggen en gebruiken in een opgave.
17. De flankdetectie kunnen maken met de basis programmeerfuncties en de werking kunnen uitleggen.
18. De verschillende tijdfuncties herkennen.
19. De werking van de verschillende tijdfuncties kunnen uitleggen.
20. Een tijddiagram van een gegeven tijdfunctie kunnen vervolledigen.
21. Een tijdfunctie kunnen gebruiken in een programma.
22. De verschillende telfuncties herkennen.
23. De werking van de verschillende telfuncties kunnen uitleggen.
24. Een tijddiagram van een gegeven telfunctie kunnen vervolledigen.
25. Een telfunctie kunnen gebruiken in een programma.
26.
80 Toegepaste Informatica
VRIJ TECHNISCH INSTITUUT