
PLC
Een
Programmable Logic Controller (PLC, Programmeerbare Logische Eenheid) is een elektronisch apparaat met een microprocessor dat op basis van de informatie op zijn diverse ingangen, zijn uitgangen aanstuurt. In de industrie worden machines over het algemeen aangestuurd met PLC's en die zijn daarmee een belangrijk onderdeel in de automatisering. Hoe de PLC zijn gegevens precies inleest, hangt af van de geïnstalleerde interfacekaarten, en van de veldbusnetwerken waarlangs verschillende apparaten met elkaar gegevens uitwisselen.
Van oorsprong bevatte een PLC geen volledige microprocessor, maar in de jaren '90 van de 20ste eeuw is het verschil tussen een computer en een PLC vervaagd.
De eerste PLC's bestonden uit AND, OR en Timer IC's die met bedrading verbonden waren. Door aanpassing van de bedrading werd de functionaliteit en dus het programma aangepast.
Met de komst van de microprocessor werd deze functionaliteit in geheugen gestopt en de eerste echte PLC's waren een feit. Met de komst hiervan kreeg men veel meer flexibiliteit en mogelijkheden.
De PLC en de interface-software voor het debuggen en het schrijven van de software hebben een grote ontwikkeling doorgemaakt.
Nu vindt het programmeren meestal in een Windows-omgeving plaats.
Tegenwoordig is er ook sprake van een Slot PLC en een Soft PLC.
Soorten PLC's
- De Traditionele PLC is een PLC bestaande uit een CPU met zijn eigen behuizing en intern werkgeheugen. Meestal worden insteekkaarten gebruikt als opslaggeheugen. Te denken valt aan een MMC kaart van een digitale camera.
- Een Slot PLC is een Traditionele PLC, maar dan op bijvoorbeeld een PCI-kaart die in een PC gestoken wordt.
- De Soft PLC is een PLC die draait als software op een PC. Met een interfacekaart en driversoftware communiceert deze met de buitenwereld.
Interfacekaarten of modulen
Digitale kaarten/modulen
Hier wordt een toestand aan of af (één bit 0 of 1) ingelezen of uitgestuurd. De 0 of 1 kan als lage of hoge spanning aangeboden worden, maar ook als een schakelcontact dat open of dicht is.
Analoge kaarten/modulen
Een
analoog signaal (variatie van 0 tot 10V, 4 tot 20 mA of 0 tot 20 mA) wordt via een analoog-
digitaalomzetter omgezet in een binair getal dat verder door de PLC behandeld kan worden. Afhankelijk van het programma wordt dit signaal gebruikt in de besturing of herschaald naar bijvoorbeeld een temperatuur (0 tot 100 graden). De PLC kan ook analoge signalen als uitvoer leveren, bijvoorbeeld een elektrische spanning of stroom om een motor aan te drijven, of om een regelklep op een bepaalde stand te zetten.
Tellerkaarten/modulen
Deze worden gebruikt voor de positiebepaling van machines, via het tellen van pulsen afkomstig van een pulsgever (of "encoder"). Dat pulssignaal is meestal een combinatie van twee signalen met een onderlinge faseverschuiving, zodat ook de richting van de beweging kan gedetecteerd worden. De PLC rekent deze pulsen om naar een positie; bijvoorbeeld: 10 pulsen zijn gelijk aan 1 mm verplaatsing, of aan 1 graad hoekverdraaiïng.
Veldbussen
De keuze van veldbussen begint met de keuze voor een elektrische laag:
Na deze keuze kan bepaald worden welke procotol er gebruikt dient te worden om PLC onderling of met PC's te laten communiceren.

PLC aansluitingen
Protocol
- Modbus Het Modbus protocol is toendertijd(1968-1979) ontwikkeld door Modicon voor werelds eerste PLC van Modicon(084). Er is gekozen voor een opensource benadering, waardoor het mogelijk is voor iedereeen om dit protocol gratis te downloaden via de site www.modbus.org.
- Modbus Plus Is een RS485 netwerk met een token ring topology. Dit betekent dat er geen master of slave situatie aanwezig is, maar alle deelnemers op netwerk hebben dezelfde rechten voor zowel schrijven als lezen van informatie.
- Profibus
Een profibus (DP, FMS, PA, ... )-netwerk kan aangesloten worden aan de PLC.
Een interface volgens hetzelfde principe als profibus; enkel een ander netwerk met andere kabels en een ander protocol. Dit wordt veel gebruikt voor kleine toestellen zoals
sensors en relais.
- CAN
- Interbus
- Ethernet Ethernet is universeel in gebruik, uiteindelijk bepaald het protocol waarmee de PLC zijn informatie op het ethernet plaatst of andere gebruikers op ethernet met de PLC kunnen communiceren.
Werking PLC
Een PLC doorloopt intern voortdurend een vaste, voorgeprogrammeerde cyclus. Na een programmacyclus te hebben afgerond wordt de status van de outputs aangepast en vervolgens wordt de status van de ingangen ingelezen. Door deze manier van werken kan een PLC schijnbaar vele dingen tegelijk doen. Sommige nieuwere types van PLC's lezen echter de ingangen in op het moment dat ze die 'nodig hebben' in het programma, en sturen ook meteen de uitgangen aan nadat de logica van die uitgangen opgelost is. Deze types wachten dus niet noodzakelijk tot de volledige programmacyclus afgelopen is alvorens de uitgangen te sturen. De meeste oudere types hebben ook een speciale instructie waarbij de normale afloop van het programa even onderbroken wordt om alzo de plc te dwingen een bepaalde ingang te lezen of een uitgang te sturen. Daarna wordt de afloop gewoon verder gezet.
Veel voorkomende programmeertalen voor PLCs zijn: ladderdiagram, Function Blok Diagram (FBD), Sequential Function Chart (SFC), Instruction List (IL) en Structured Text Language (STL). Je kan ook een programmeertaal eigen aan de PLC gebruiken, die op een C programmeertaal lijkt, maar die is voor de meer complexe functies.
Programmeren PLC's
Om een PLC te programmeren, heb je een verbinding tussen de PLC en het apparaat waarmee geprogrammeerd wordt, nodig. De licentiezaken voor de software werden vaak vroeger doormiddel van hardwaresleutels geregeld, tegenwoordig wordt steeds meer gewerkt met softwarematige licensies. De communicatie tussen de PC en PLC vond en vindt nog steeds plaats doormiddel van de COM poort op de PLC. Recente ontwikkelingen door de PC leveranciers dwingen de PLC leveranciers steeds meer tot communicatie met USB of ethernet, daar (1) COM poorten op nieuwe PC bijna niet meer ter verkrijgen zijn en (2) de ethernet-verbindingen vele malen sneller werken dan de seriële COM-verbindingen.
Bekende PLC merken zijn onder andere: Beckhoff, Schneider Electric, Modicon, Siemens, VIPA, Yokogawa, OMRON, Allen-Bradley(op de markt gebracht door de firma Rockwell Automation), Hitachi, ABB, GE-Fanuc, Mitsubishi, Koyo en Phoenix Contact
Toepassingsgebied van PLC’s
PLC's worden in het algemeen daar toegepast, waar vroeger relaispanelen (hard-wired logic)
gebruikt werden, en verder:
- waar cyclische besturing nodig is
- bij snelle digitale bewerkingen
- waar puls-output nodig is (stappenmotoren)
- bij snelle digitale communicatie
- bij industriële besturingsprocessen
Voorbeelden van toepassingen:
- verkeerslichten
- machine bewerkingen
- trein-volgsystemen
- waterzuiveringsinstallaties
- fabricagecel besturingen etc.
Opbouw van een PLC
Een PLC bestaat hoofdzakelijk uit een CPU, geheugen en een aantal geschikte schakelingen
om in- en uitgaande data te ontvangen. We kunnen een PLC beschouwen als een doos gevuld
met honderden of zelfs duizenden relais, tellers (counters), timers en data opslagplaatsen
(Figuur 4.a). Deze componenten bestaan niet fysiek maar worden softwarematig gesimuleerd.

Ingangscontacten: Deze zijn fysiek verbonden met de buitenwereld en ontvangen signalen
van schakelaars, sensoren etc. Ingangscontacten zijn genummerd.
Interne Utility relais (contacten): Deze bestaan niet fysiek. Het zijn software relais welke de PLC gebruikt om de ‘echte externe’ relais te elimineren.
Counters: Bestaan fysiek ook niet, maar zijn software tellers en deze kunnen worden
geprogrammeerd om pulsen te tellen. Counters kunnen omhoog, omlaag of zowel omhoog als
omlaag tellen.
Timers: Bestaan ook niet fysiek. Er bestaan veel varianten met verschillende interval
waarden.
Interval waarden variëren van 1ms tot 1s.
Uitgangsrelais (coils): Zij zijn fysiek verbonden met de buitenwereld en versturen aan/uit
signalen naar relais, lampen, etc. Uitgangsrelais (coils) zijn genummerd
Data opslag: Registers gebruikt om gegevens op te slaan. Vaak gebruikt voor tijdelijke
opslag van resultaten van berekeningen. Kunnen ook worden gebruikt voor opslag van
gegevens als de stroom wordt uitgeschakeld.
De interface tussen de fysieke in- en uitgangen wordt de ‘soft interface’ genoemd om aan te
geven dat software wordt gebruikt om de status van de ingangen te koppelen aan de gewenste
waarden aan de uitgangen. De PLC software gebruikt hiervoor booleaanse logica.
De werking van een PLC
Een PLC scant continue een programma. Een scan cyclus bestaat voornamelijk uit 3
belangrijke stappen.
- Stap1: Bepaal de ingangswaarden.
De PLC kijkt eerst naar elke ingang en bepaalt of er wel of geen signaal op
staat. Al deze waarden worden opgeslagen in het geheugen.
- Stap 2: Voer programma uit.
Het programma wordt instructie voor instructie uitgevoerd. Opnieuw worden
de resultaten eerst opgeslagen in het geheugen.
- Stap 3: Update de status van de uitgangen.
Tenslotte zal de PLC de status van de uitgangen bijwerken. Dit gebeurt aan de
hand van de opgeslagen waarden van de inputs in stap 1 en de resultaten van de
bewerkingen die volgens het programma in stap 2 hierop uitgevoerd moeten
worden.
Nadat stap 3 is uitgevoerd, keert de PLC weer terug naar stap 1. Deze cyclus wordt
voortdurend herhaald.
Een scan cyclus wordt gedefinieerd als de tijd die nodig is om deze 3 stappen uit te voeren.
Hoe groter het programma, hoe langer de scan cyclus duurt.

De relatie tussen ingangen (inputs), de software interface en uitgangen (outputs) wordt
weergegeven in Figuur 4.3 en 4.4

Een input apparaat (b.v. een sensor, schakelaar of drukschakelaar) levert een van vele
mogelijke ingangsspanningen op de ingangsmodule van de PLC. De PLC input module
vertaalt dit naar een waarde voor de betreffende software ‘contact’. We gebruiken voor de
ingangen de Ix.x reeks en voor uitgangen de Qx.x reeks. De interne memory, ook wel merkers
genoemd, worden Mx.x genummerd. De software interface interpreteert de waarde van de
software ‘contact’ (een logische 0 of 1) en als het programma dit aangeeft, stuurt deze
daarmee via de output module, een uitgangsspanning naar het te besturen proces.
De software interface zorgt ook voor de counter- en timer functies, alsmede wiskundige
bewerkingen.
PLC-programmering
Een PLC kan op verschillende manieren geprogrammeerd worden.
- ladderdiagrammen
- functieblokken
- sequential function charts (SFC’s)
- specifieke PLC-code
- Hogere programmeertaal (C)
Het programmeren van een PLC d.m.v. ladderdiagrammen is de oorspronkelijke manier van
programmeren van een PLC. Een ladderdiagram toont grote overeenkomsten met een
schakelschema, zoals die gebruikt worden bij het vastleggen van de aansluitingen van relais’
en de bijbehorende elektrische componenten. Niet zo vreemd, aangezien de PLC ooit bedoeld
was om complexe relaisschakelingen te vervangen. Aangezien veel programmatuur van
PLC’s “in ladder” is vastgelegd en deze programmeerwijze op verschillende plaatsen nog
steeds gebruikt worden zal hieraan uitgebreid aandacht besteed worden.
Functieblokken vormen een uitbreiding op de ladderdiagrammen. Eigenlijk is het een vorm
van modulair programmeren met ladders; een aantal logisch bij”elkaar horende “sporten” van
een ladder worden samengevoegd in een functieblok. Op verschillende plaatsen kan van deze
functieblokken gebruik worden gemaakt.
SFC’s vormen een heel andere wijze van programmering van een PLC. Een SFC is eigenlijk
meer een toestandsdiagram. Zoals in een standaard toestandsdiagram aangegeven wordt welke
events een toestandsverandering veroorzaken wordt in een SFC aangegeven welke inputs de
PLC van toestand doen veranderen. In het “toestandsblok” worden daarbij de acties
aangegeven die hierin uitgevoerd moeten worden. Dit is in het geval van de PLC niets anders
dan het aansturen van bepaalde outputs. Ook hier zal de nodige aandacht aan besteed worden.
Specifieke PLC-code is nog het meest vergelijkbaar met assemblercode. Voor elk merk (of
zelfs type) PLC wordt vaak een ander soort code gebruikt.
Tegenwoordig kunnen meer en meer PLC’s geprogrammeerd worden in een (afgeleide van
een) hogere programmeertaal. Zo kunnen b.v. de PLC’s van B&R in “Automation Basic” of
in C geprogrammeerd worden.
In de meeste gevallen wordt het PLC-programma ontwikkeld op een PLC met een daartoe
ingericht programmapakket, waarmee vaak ook simulaties te maken zijn of controles
uitgevoerd kunnen worden. Hierna wordt het ontwikkelde programma ingeladen in de PLC,
zodat het zelfstandig kan functioneren. Op sommige PLC’s zijn ook (beperkte)
programmeermogelijkheden aanwezig.
Ladderdiagrammen
Een ladderdiagram (LD) is een programmeertaal waarvan de opbouw lijkt op die van een
ladder welke uit sporten (rungs) bestaat. Het programma bestaat uit opeenvolgende
programma sporten welke sequentieel door de PLC worden uitgevoerd, van links naar rechts
en van boven naar beneden.
Ladder logica is ontwikkeld om relais logica te imiteren. Hierdoor wordt het leren
programmeren van een PLC makkelijker gemaakt voor zowel technici als niet-technici.
Een ladderdiagram (LD) is een grafische voorstelling van booleaanse vergelijkingen, welke
contacten (input argumenten) combineert met coils (output resultaten), door middel van
grafische symbolen. Deze grafische symbolen kennen een soortgelijke structuur als die, welke
gebruikt worden in elektrische stroomschema’s.
Ladderdiagrammen zijn zowel aan de linkerkant als aan de rechterkant verbonden met
verticale elektrische stroom geleiders.
Ladderdiagram symbolen
De onderstaande grafische symbolen worden gebruikt in ladderdiagrammen:
 Afbeelding toevoegen |
 Afbeelding toevoegen |
 Afbeelding toevoegen |
Bij elk grafisch symbool wordt de symbolische naam vermeld van de overeenkomstige
boolean variabele. De grafische symbolen in ladderdiagrammen worden verbonden met
elektrische stroom geleiders of met de andere symbolen door middel van horizontale of
verticale verbindingslijnen.
 Afbeelding toevoegen |
Elk lijnsegment heeft de boolean status False of True. De boolean status is dezelfde voor alle
lijn segmenten die rechtstreeks met elkaar zijn verbonden. Elke horizontale verbindingslijn
die verbonden is met de linker elektrische stroom geleider heeft de status TRUE.
De boolean status van een lijnsegment wordt bepaald door een boolese bewerking uit te
voeren tussen een lijn segment en de boolean variabele van een grafisch symbool.
De boolean status van een ouput variabele is gelijk aan de boolean status van het linker
lijnsegment waarmee het is verbonden.
Input contacten mogen worden herhaald in een ladderdiagram.
Input contacten worden geprogrammeerd als open contacten ( | | ) als een logische continuïteit
vereist is wanneer er een spanning op de overeenkomstige ingang van de input module van de
PLC komt te staan of als een logische continuïteit moet worden opgeheven als er geen
spanning op de overeenkomstige ingang van de PLC staat.
In alle andere gevallen wordt het contact geprogrammeerd als geïnverteerd contact ( |/| ).
Counters
In PLC’s hebben software counters dezelfde functie als mechanische counters. Een counter
vergelijkt een langzaam oplopende of geleidelijk afnemende waarde met een vast ingestelde
waarde om een schakeling te besturen.
Een inpakmachine gebruikt b.v. een counter om flesjes per 6 stuks te verpakken.
De counters die wij gebruiken kunnen tellen van 0 tot en met 999, waarbij tijdens het tellen de
waarde telkens met 1 wordt verhoogd of verlaagd.
Als de counter de waarde 0 heeft en deze telt omlaag, zal de volgende waarde 999 zijn.
Indien de counter de vooraf ingestelde telwaarde op PV heeft bereikt zal de betreffende
uitgang een logische 1 afgeven.
Figuur 4.6 toont een counter schakeling die het aantal voertuigen telt op een parkeerplaats.
De PV ingang geeft aan dat de parkeerplaats maximaal 150 voertuigen mag bevatten.
In Figuur 4 bezet de counter initieel een aantal sporten (rungs) in het ladderdiagram:
- Een identificatie / count rung: Ieder counter bezit een uniek identificatienummer (wij
gebruiken C1 t/m C16) en men moet weten of de counter omhoog of omlaag telt, of zowel
omhoog als omlaag telt. Dit laatste is hier het geval.
- Een reset rung: De counter wordt gereset (de uitgang CV wordt 0 en de uitgangen weer
logisch 0).
- Een decode rung: geeft aan wat de counter zal besturen.
 Afbeelding toevoegen |
De bovenste rung: een schakelaar is verbonden met de slagboom aan de ingang van de
parkeerplaats. Telkens als de slagboom open en dicht gaat veroorzaakt dit een puls op contact
‘ingang’. De Upcounter telt het aantal pulsen op de ‘ingang’, dus het aantal voertuigen dat de
parkeerplaats oprijdt.
De tweede rung: een schakelaar is verbonden met de slagboom aan de uitgang van de
parkeerplaats. De Downcounter telt het aantal pulsen op contact ‘uitgang’, dus het aantal
voertuigen dat de parkeerplaats verlaat.
Als de counter de waarde 150 op de CV uitgang heeft bereikt is de parkeerplaats vol en zal de
uitgang van de counter de lamp ‘Parkeerplaats vol’ laten oplichten.
De derde rung zorgt ervoor dat de counter weer wordt gereset.
Timers
Timers kunnen exact worden behandeld als counters. Een timer kan tellen in verschillende
resoluties vanaf b.v. 1 milliseconde, 10 milliseconden en 100 milliseconden.
Timers worden gebruikt bij b.v. verkeerslichten.
In Figuur 4.e heeft timer T10 een resolutie van 100 milliseconden = 0.1 s.
De preset tijd is ingesteld op 150 x 0.1s = 15s. De uitgang is verbonden met een uitgangs coil
welke een lamp laat branden.
Als het contact ‘deur_sensor’ logisch 1 wordt (er gaat b.v. ergens een deur open), start de
timer.
Na 15s zal de lamp gaan branden.
 Afbeelding toevoegen |
De timer wordt gereset en gedisabled als het ingangscontact ‘deur_sensor’ logisch 0 is.
Als de timer is gestart en het ingangscontact ‘deur_sensor’ wordt binnen 15 seconden
geopend en weer gesloten, zal de timer opnieuw vanaf 0 starten.
Het toepassen van een contact van de timer in een volgende rung realiseer je door het contact
te coderen met T10.
Waarheidstabellen van logische bewerkingen met ladderdiagrammen
Hieronder staan de logische equivalenten afgebeeld van grafische ladderdiagram symbolen en
hun overeenkomstige logische bewerkingen.
 Afbeelding toevoegen |
 Afbeelding toevoegen |
Input apparaten (b.v. sensoren of schakelaars) worden aangesloten op genummerde input
modulen. We nemen aan dat de ingangen worden genummerd I0.0, I0.1, ...., I0.7.
De software ‘ingangs contacten’ ( | | , |/| ) gebruiken symbolische namen.
Op dezelfde manier wordt aangenomen dat output apparaten worden aangesloten op
genummerde uitgangen van de output module van de PLC.
De uitgangen worden genummerd Q0.0, Q0.1 ....Q0.7.
De software uitgangen krijgen ook symbolische namen.
Stroomkring schema’s
De externe componenten die worden aangesloten op de input- en output module van een PLC,
worden door andere grafische symbolen voorgesteld.
Dit zijn de zogenaamde stroomkring symbolen.
Hieronder volgen een aantal veel gebruikte stroomkring symbolen in PLC schema’s:
 Afbeelding toevoegen |
 Afbeelding toevoegen |
Aanpak PLC problemen
Lampschakeling met een schakelaar
Met een schakelaar wordt een lamp aan en uit geschakeld.
Conventioneel stroomkringschema lampschakeling
Rechts wordt de beschreven schakeling in de vorm van een stroomkringschema getoond.
Herkenbaar is de schakelaar en de lamp. De twee horizontale lijnen stellen de spanningslijnen voor.
 Afbeelding toevoegen |
PLC georiënteerd stroomkringschema lampschakeling
In het schema hiernaast wordt een PLC gebruikt in de plaats van de conventionele elektrische schakeling. De schakelaar en de lamp zijn aangesloten op de PLC de in- en uitgangen zijn
geadresseerd. De ingangsadressen beginnen met I waarvan het eerste adres 0.0 is en die van de
uitgangen met een Q waar eveneens het eerste bitadres 0.0 is.
 Afbeelding toevoegen |
Symbolen tabel lampschakeling
Om de werking van het PLC programma gemakkelijker te begrijpen, zullen we
bovengenoemde ingangs- en uitgangsadressen niet binnen de PLC gebruiken, maar vervangen
door begrijpelijke symbolische namen die de actie of gevolg van actie verwoorden. Deze
koppeling wordt vastgelegd in de symbolentabel.
- Naam: symbolische naam van het IO-punt of intern element. In de naamgeving zit de
beschrijving wat er op die plaats gebeurt. - Adres: het fysieke adres van het IO-punt of intern element.
- Type: in de komende voorbeelden worden alleen bit toekenningen gebruikt. Het type
is dan een boolean. - Commentaar: beschrijft wat er gebeurt.
Onder de stippellijn worden straks de extra benodigde elementen van de PLC beschreven.
Deze gegevens zijn pas bekend tijdens het bouwen van het ladderdiagram.
 Afbeelding toevoegen |
Tijddiagram van de lampschakeling
In het tijddiagram wordt de relatie tussen de input en output over de
tijd weergegeven. Extra opgenomen zijn de fysieke componenten die op de PLC zijn aangesloten. Nu is de relatie tussen fysieke toestand van componenten en IO-punten duidelijk zichtbaar.
Lampschakeling ladderdiagram 1
De beschreven lampschakeling wordt nu geïmplementeerd in een PLC. Als de schakelaar S0 is ingeschakeld moet de lamp gaan branden. We weten nu dat LampAan de waarde 1 krijgt als S0 ingeschakeld is. De uitgang moet nu de ingang gaan volgen.
Dus als de ingang hoog wordt moet ook de uitgang hoog worden. En bij het uitschakelen van S0 zal de uitgang weer laag moeten worden. Voor de oplossing gebruiken we dan een NO contact voor LampAan.
Stel dat de lamp moet gaan branden als de schakelaar S0 uit staat en bij het inschakelen van S0 de lamp weer dooft. Dan moet de uitgang, de ingang geïnverteerd gaan volgen. Dus als de ingang laag is moet de uitgang hoog worden. En bij het inschakelen van S0 zal de uitgang laag moeten worden. Voor de oplossing gebruiken we nu een “Normally Closed” NC contact voor LampAan.
Dit kan in de praktijk voorkomen als bij draadbreuk om veiligheidsredenen de lamp moet
gaan branden.
 Afbeelding toevoegen |
 Afbeelding toevoegen |
PLC voorbeelden
Lampschakeling met twee schakelaars
Met twee drukschakelaars wordt een lamp aan en uit geschakeld. Wordt drukschakelaar S1
bediend, dan gaat de lamp aan. Bij het loslaten van S1 blijft de lamp aan.
Als daarna de drukschakelaar S0 bediend wordt gaat de lamp uit, ook na het loslaten blijft de
lamp uit.
Conventioneel stroomkringschema lampschakeling
Rechts wordt de beschreven schakeling in de vorm van een stroomkringschema getoond. Herkenbaar zijn de twee schakelaars en de lamp. Om de beschreven werking te realiseren, wordt gebruik gemaakt van een relais K1 dat na indrukken van S1 de lamp brandend houdt, totdat S0 het relais laat afvallen. In dit schema is S0 Normally Closed en S1 Normally Open.
PLC georiënteerd stroomkring-schema lampschakeling
In het schema zijn de schakelaars de lamp aangesloten op de IO-punten van de PLC.
Symbolen tabel lampschakeling
Tijddiagram van de lampschakeling
De werking van S0 is in dit schema goed te volgen.
Onbediend levert S0 een hoog signaal op de ingang LampUit.
Na indrukken van S0 wordt LampUit laag. De ingang LampUit is de inverse van de waarde van S0. S1 ingedrukt levert een hoog signaal op de ingang LampAan. Uitgang LampAanst moet hoog blijven
als er eenmaal op S1 is gedrukt met als doel de lamp te laten branden. De waarde van S1 moet
worden vastgehouden omdat anders de lamp weer uit zou gaan. Pas als LampUit laag wordt mag LampAanst laag worden en zal de lamp doven.

Lampschakeling ladderdiagram 1
We weten dat LampAan even de waarde 1 krijgt (het is een drukschakelaar). Om nu ervoor te zorgen dat de lamp blijft branden, maken we gebruik van ‘geheugen’. De ‘coil’ Memory wordt hoog gemaakt door LampAan, het contact Memory wordt ook hoog en zet LampAanst hoog. Daardoor gaat buiten de PLC de lamp aan.
Het contact Memory in de vertakking in de eerste sport van het ladderdiagram noemen we een overnamecontact.
Memory neemt hier de functie van LampAan over en houdt de lamp brandend.
Uitbreiding symbolen tabel lampschakeling
Na de gegeven oplossing breiden we de symbolentabel uit met het toegevoegde element uit
het ladderdiagram.
Lampschakeling ladderdiagram 2
Er blijkt een eenvoudiger oplossing te zijn voor de schakeling. LampAanst kunnen we als overnamecontact toepassen. Memory van de vorige oplossing is hier overbodig geworden.

Lampschakeling ladderdiagram 3
Dit voorbeeld van een lampschakeling is ook heel geschikt om op eenvoudige wijze de werking van SET en RESET coils te illustreren. De waarde van LampAanst kan door 2 soorten coils, een S (set) en een R (reset), gewijzigd worden.
Wordt LampAan hoog gemaakt, dan wordt LampAanst geset, blijft de waarde hoog en blijft de lamp aan. Het resetten van LampAanst zorgt ervoor dat LampAanst laag wordt en de lamp dooft.

De oplossing beschrijft dat bij bediening van beide drukschakelaars de lamp uit blijft. Door de RESET onder de SET te plaatsen zal er eerst een set worden uitgevoerd en daarna de reset.
Dit door het sequentiële gedrag van de PLC doorloopt. We creëren hiermee een RESET-
dominante oplossing.
Wisselschakeling
In de meeste woningen komt deze schakeling voor. Met twee schakelaars kan een lamp aan en
gezet worden. Voor de PLC oplossing gebruiken wij echter andere schakelaars. Het zijn twee
drukschakelaars, die weer terugveren.

Conventioneel stroomkring-schema wisselschakeling Het stroomkringschema toont de schakelaars S0 en S1. Bij bediening van S0 zal de lamp aan of uit gaan, afhankelijk van de toestand van de lamp. Op dezelfde manier werkt ook S1.
PLC georiënteerd stroomkringschema wisselschakeling Om te voldoen aan de beschrijving van de schakelaars is in de PLC oplossing gebruik gemaakt van twee NO drukschakelaars

Symbolen tabel wisselschakeling
Tijddiagram van de wisselschakeling
Volgens de beschrijving van deze schakeling zal de bediening van een schakelaar altijd een effect hebben op de toestand van de lamp.
Bij bediening van S1 verandert de toestand van L1 en als S2 vervolgens bediend wordt wijzigt
de toestand van L1 weer. Is door S1 de LampAanst hoog gemaakt, dan zet S2 deze weer omlaag. De
fysieke lamp zit aangesloten op uitgang LampAanst en zal dus gaan branden als deze uitgang hoog wordt.

Wisselschakeling ladderdiagram
In dit ladderdiagram zijn nu positieve flank contacten opgenomen. Om te voorkomen dat bij het setten van LampAanst direct een reset van LampAanst plaats vindt, wordt er een memory element gebruikt. Bij de volgende scan in LampAanst hoog en memory laag. Bij volgende bediening van S0 of S1 zal er een reset plaats vinden.

Uitbreiding symbolen tabel wisselschakeling
We maken de symbolentabel compleet met het interne element.
Sequential Function Charts (SFC’s)
Een andere belangrijke manier van programmeren van PLC’s is het toepassen van sequential
function charts (functiediagrammen). Het is de gestandaardiseerde versie (IEC 1131) van het
in Frankrijk ontworpen Grafcet-systeem. Het woord Grafcet komt van "Graphe de
Fonctionnement de Commande par Etappe et Transition", hetgeen zoveel wil zeggen als:
"Tekening of schema van de opdrachten die nodig zijn voor het stapsgewijs doen verlopen
van een proces".
Een diagram volgens deze tekenwijze geeft stap voor stap aan welke acties op welk tijdstip en
onder welke voorwaarden moeten plaatsvinden. Hiervoor gebruiken we in het diagram
eenvoudige symbolen, verbonden door lijnen, alsmede begrijpelijke tekst.
Principe van SFC’s
De volgende figuur geeft het principe weer van waaruit ieder functiediagram is opgebouwd:

Het besturingsproces wordt onderverdeeld in een aantal zo elementair mogelijke fasen. Elke
fase kent een stap en de daarbij behorende acties(s). De stap speelt zich in feite af in de
besturing, de actie vindt plaats in het proces of aan de machine.
- De stappen worden de een na de ander geactiveerd.
- De acties worden uitgevoerd zodra en zolang de desbetreffende stap actief is.
- Tussen twee stappen bestaat een overgang.
- In de overgang bevindt zich een zogenaamde schuifvoorwaarde. De overgang is geblokkeerd zolang nog niet aan de schuifvoorwaarde is voldaan en wordt vrijgegeven zodra aan de voorwaarden is voldaan.
- Een volgende stap wordt actief als:
- de voorgaande stap actief is en
- aan de schuifvoorwaarde is voldaan.
Dit betekent dat er controle is op het verloop van de besturing, immers een volgende stap kan
nooit actief worden als de voorgaande niet actief is.
De schuifvoorwaarden komen doorgaans uit het proces, d.w.z. dat er controle is of de actie wel
of niet is uitgevoerd. Pas als aan de voorwaarden is voldaan, wordt de weg vrijgegeven voor de
volgende stap.
Het vrijgeven van de overgang heeft tot gevolg dat
- de volgende stap actief wordt (SET)
- de vorige stap wordt uitgeschakeld (RESET)
Ter verduidelijking volgt hieronder het logische schema van vorige figuur:

We zien hier dat zowel de schuifvoorwaarde als het uitgangssignaal van de voorliggende stap
aanwezig dienen te zijn, wil de volgende stap actief kunnen worden gemaakt. Verder kan
opgemerkt worden dat de volgorde (of sequentie) -schakeling opgebouwd is door het achter
elkaar schakelen van gelijke "blokken" of modules. We kunnen dan ook spreken van een
modulair programma.
In de figuur is verder te zien dat voor iedere stapmodule een geheugenfunctie en een EN-
functie aanwezig zijn. Deze vormen een keten die overeen komt met de structuur van het
functiediagram waarin stappen en schuifvoorwaarden elkaar afwisselen. De geheugenfunctie
correspondeert met een stap. De EN-functie zorgt ervoor dat de volgende stap pas actief kan
worden als én aan de schuifvoorwaarde is voldaan én de voorgaande stap actief is. Hiermee is
dan aan de ontvankelijkheid voldaan om het geheugen van de volgende stapmodule te
"setten".
Gebruiksvoorschriften
Het opzetten en gebruiken van een SFC is aan een aantal regels en voorschriften gebonden. In
de hierna volgende paragrafen worden deze regels vermeld en nader toegelicht.
Stappen
Voor een stap kennen we 3 symbolen, te weten :

Een stap is een gedefinieerde stabiele situatie in een besturingssysteem. Gedurende deze
werkingsperiode zijn de ontvankelijkheid en de voortgebrachte acties niet variabel. De stap is
in afwachting van het voldoen aan de schuifvoorwaarde. Met ontvankelijkheid wordt bedoeld
het "open staan" van de besturing voor alleen informatie die de op een bepaald ogenblik
gewenste verandering (actie) in het systeem veroorzaakt.
De "actieve stap" is aanwijsbaar als ergens in een lopende cyclus een momentopname wordt
gemaakt. Elke stap is dus op zijn beurt, zij het steeds op een ander moment, aan te wijzen als
de op dat moment actieve stap.
Stappen die dienen om het paraatstellen van het begin of het einde van een cyclus aan te
geven, worden met een dubbelwandig vierkant aangegeven.
Aan stappen verbonden acties
Aan iedere stap kunnen één of meerdere acties zijn verbonden. De acties worden uitgevoerd
op het moment dat de desbetreffende stap actief is. De volgende figuur geeft de
voorstellingswijze. De acties kunnen in de rechthoek symbolisch, dan wel beschrijvend
worden genoteerd.

Voorbeelden
Aan stap 5 zijn twee acties verbonden, namelijk zodra stap 5 actief is, moet de zuiger in
cilinder A naar buiten (+) en in cilinder B naar binnen (-) worden geschoven of bijvoorbeeld
schakelaar A sluiten en B openen, enz.
Stap 7 is op dit moment actief en klep C wordt dus gesloten.
De acties kunnen uiteraard zeer gevarieerd zijn, afhankelijk van het proces, bijvoorbeeld:
- zuiger in of uit;
- schakelaar open of dicht;
- klep sluiten;
- stempel neerlaten;
- beschermkap lichten.
Maar ook:
- tellerstand met één verhogen;
- geheugen setten of resetten;
- tijdsvertraging starten, enz.
Overgangen en schuifvoorwaarden

Deze figuur geeft in 3 fasen aan wat precies bij een overgang gebeurt. De overgang is de
verbindingslijn tussen 2 stappen. In de overgang bevindt zich dus altijd een schuifvoorwaarde.
- In het linkse deel van de figuur is stap 10 niet actief. De schuifvoorwaarde is a·(b+c),
dat wil zeggen dat contact b of contact c moeten gesloten zijn en contact a. Dit is de
uitgangs-toestand van een stukje uit de besturingsketen.
- In het midden is stap 10 reeds actief, maar aan de schuifvoorwaarde is nog niet
voldaan: a·(b+c)=0. De overgang is nog geblokkeerd. De aan stap 10 verbonden
actie(s) worden uitgevoerd. Dit is in feite de voorbereidingstoestand voor het actief
worden van stap 11.
- Rechts op de figuur is aan de schuifvoorwaarde voldaan: a·(b+c)=1. Stap 10 was
actief, dus nu wordt de overgang gerealiseerd. Daardoor wordt stap 11 actief en stap
10 wordt gereset.
Een grote verscheidenheid van schuifvoorwaarden komt voor. Als voorbeelden noemen we:
- opnemers en eindschakelaars (een "stand").
- de stand van een teller (c=10).
- een temperatuur (t=300°, vb. een thermostaat).
- een snelheidsniveau (n=1000 omw/min).
- einde van een tijdsvertraging (t=10s).
- resultaat van een vergelijking (>, <) enz.
Vertakkingen
Machines met verschillende cycli of machines die verschillende producten kunnen maken, zijn
typische gevallen van vertakkingen. Op het knooppunt van de vertakking moet een keuze worden gemaakt: òf de ene weg òf de andere weg in. We spreken dan van een OF-divergentie uiteengaan).
Als stap 10 actief is, hangt het geheel af van de schuifvoorwaarde a of b af of stap 11 dan wel stap 21 actief wordt. Aan het einde van de vertakking hangt het af van het actief zijn van stap 13 met schuifvoorwaarde c òf van stap 22 met schuifvoorwaarde d of stap 14 actief kan worden. We spreken nu van een OF-convergentie (samenkomen). Er wordt steeds maar één tak per keer actief. Voorts dienen twee speciale gevallen van een vertakking te worden genoemd
en wel de sprongfunctie en de herhalingsfunctie.

Sprongfunctie
De schuifvoorwaarden a of b bepalen of na stap 3 stap 4 komt of stap 6. Als stap 3 actief is en aan voorwaarde a is voldaan, dan volgt stap6. Als stap 3 actief is en aan b is voldaan, dan volgt stap 4. De sprongfunctie maakt het dus mogelijk om, afhankelijk van de schuifvoorwaarden a en b, hier vertakkingsvoorwaarden genoemd, één of meer vooraf bepaalde stappen over te slaan.
Herhalingsfunctie
Als stap 7 actief is, hangt het af van de vertakkingsvoorwaarden c of d of wordt verdergegaan naar stap 8, dan wel wordt teruggesprongen naar stap 4.
Stel dat niet aan d en wel aan c is voldaan, dan wordt teruggesprongen naar stap 4 en dit blijft zo doorgaan totdat aan voorwaarde d is voldaan.

N.B.: Het gedeelte dat wordt herhaald, moet altijd uit ten minste 3 stappen bestaan. Een stap kan namelijk alleen inschakelen als de volgende stap niet actief is (uitschakeling heeft voorrang op inschakeling). Stel in de figuur links heeft in de lus slechts 2 stappen: 4 en 5.
De voortgang is dan als volgt:
- Stap 3 actief, p=1, stap 4 wordt
actief.
- Stap 4 actief, q=1, stap 5 wordt
actief.
- Stap 5 actief, c=1, nu kan 4 niet
actief worden want 5 is nog
actief.
Komt dit in de praktijk toch voor, dan wordt altijd een extra, zogenaamde loze stap toegevoegd (zie rechter figuur).

Gelijktijdige sequenties
Bij deze vorm hebben we te maken met meer wegen. Deze wegen worden echter nu gelijktijdig bewandeld. Deze vorm komt veelvuldig voor bij machines met verscheidene bewerkingsposten (vb. transferstraten). Er zijn nu dus meer takken tegelijk actief waarbij de stappen per tak onafhankelijk van de andere takken worden afgewerkt.
Als stap 10 actief is en aan voorwaarde e is voldaan, dan worden èn stap 11 èn stap 21 actief. We spreken nu van een EN-divergentie. Deze wordt met een dubbele lijn aangegeven. Zowel de linker as de rechter tak worden nu doorlopen. Voordat stap 14 actief kan worden, moet aan voorwaarde f voldaan zijn, maar ook moeten èn stap 13 èn stap 22 actief zijn. We spreken dan van een EN-convergentie. Als beide stappen niet gelijktijdig gereed zijn, moet de snelste wachten op de langzaamste voordat de gemeenschappelijke loop kan worden vervolgd: ook al is 22 reeds actief en is f voldaan, dan nog moet eerst 13 actief worden voordat met 14 verder kan worden gegaan.

Bijzondere notaties
In de voorgaande paragrafen zijn de algemene of basisgebruiksregels van het functiediagram
behandeld. Naast deze algemene regels zijn er nog een paar bijzondere of wat verdergaande
regels. In deze paragraaf gaan we daar wat dieper op in.
Voorwaardelijke acties of vergrendelingen Doorgaans zal de aan een stap verbonden actie worden uitgevoerd als de desbetreffende stap actief is. Er kunnen echter aan de uitvoering van de actie meer voorwaarden zijn verbonden. Deze kunnen van interne (vanuit de besturing) of externe (vanuit het proces of de bediening) aard zijn. De afhankelijkheid van een externe
variabele wordt als volgt voorgesteld:

Stap 7 is actief. De bewerking "frezen" wordt zonder meer uitgevoerd. Het koelen is echter
afhankelijk van de stand van de keuzeschakelaar (KS=0 niet koelen, KS=1 wel koelen), dus
van de beslissing van de bedien(st)er.
Wanneer de uitvoering van een actie behalve van het actief zijn van de desbetreffende stap
ook afhankelijk is van een interne variabele, dan wordt dit met een pijl weergegeven als volgt:

De acties E en F zijn tijdafhankelijk gemaakt. Op het moment dat stap 8 actief wordt, wordt de tijdschakeling T gestart en actie E begint.
Na t=3s wordt actie E beëindigd en actie F gestart. Actie F blijft doorgaan tot aan
schuifvoorwaarde c is voldaan en daarmee de volgende stap actief wordt. Deze interne
variabelen of voorwaarden worden ontleend aan de interne hulpfuncties.
Herhaling van sequenties (subroutines)
Als een gedeelte van een besturingscyclus of een zelfde uit verscheidene stappen bestaande
bewerking meermalen in een cyclus voorkomt, is het nuttig dit deel uit de hoofdcyclus te
lichten en er een aparte herhalingssequentie of subroutine van te maken.

Het linker deel geeft het desbetreffende deel uit de hoofdcyclus weer, dat in de cyclus
verscheidene malen voorkomt. Het rechter deel geeft de notatie van deze subroutine weer.

Op twee plaatsen is deze subroutine nu als een simultane sequentie ingebouwd. De stappen 4
en 20 worden gelijktijdig geactiveerd. De overgang 5-6, via de schuifvoorwaarde em, kan
alleen als ook stap 22 ook actief is. Het nut van deze truc blijkt duidelijk als we ons de
technische uitvoering voor ogen stellen. Immers, iedere stap betekent tenminste 1
geheugenmodule.
Als nu in een cyclus een bepaald deel, zeg van 5 stappen, 5 maal voorkomt, zouden we hier
25 modules voor nodig hebben. Met behulp van de subroutine vraagt dit slechts 10 modules,
namelijk 5 in de subroutine zelf en 5*1 in de hoofdcyclus. Een besparing derhalve van 15
modules.