HTML5: Best viewed in Mozilla Firefox.

This site will be moved to a new location: DCIUX

Header image

DCIPLC3 (C++) 2001.

Een eenvoudige plc.

Geschreven in C++ Borland C++ builder.

DCIPLC 3.

Laatst aangepast: De Coninck Ivo

PLC’s zijn microcontroller-bordjes die veel worden toegepast in de industrie voor allerlei besturings- en automatiseringsdoeleinden. De hier voorgestelde PLC is softwarematig gerealiseerd. Op een gewone Windows-PC wordt een volledige PLC nagebootst. Dankzij een apart aansluitkastje kan de PC ook allerlei reële zaken besturen en meten.


De afkorting PLC staat voor rogrammable Logic Controller. In de Nederlandse literatuur spreekt men ook wel van ‘vrij programmeerbare besturing’. Met deze kreet wordt een elektronische schakeling bedoeld die gebruikt kan worden om machines en processen te automatiseren. Een PLC vervangt hiermee de conventionele relaisschakelingen.
Een PLC bevat altijd een CPU-module en een aantal digitale in- en uitgangs- modulen. Het aantal in- en uitgangs- modulen is afhankelijk van de grootte van het te controleren proces.
Een van de grote voordelen van een PLC is dat uitbreidingen en wijzigingen van een proces zeer gemakkelijk te realiseren zijn. In de industrie is de PLC dan ook al jaren niet meer weg te denken bij het automatiseren van processen.
De laatste tijd doet de PLC ook zijn intrede in woningen. Thuis willen veel mensen ook bepaalde dingen geautomatiseerd zien. Het gazon besproeien, rolluiken open en dicht, een beveiligingssysteem en nog veel andere mogelijkheden zijn dingen die een enkele PLC gemakkelijk aan kan sturen. Uitbreidingen of aanpassingen achteraf kunnen op een vrij eenvoudige manier gerealiseerd worden
In figuur 1 is een voorbeeld gegeven van een eenvoudige motorschakeling, eenmaal opgebouwd met drukknoppen en relais, en eenmaal gerealiseerd met een PLC. Als men de werking wil aanpassen, moet de hardware van de relaisschakeling veranderd worden. Bij de PLC hoeft men alleen maar het programma aan te passen.
De bedoeling van het DCI-PLC-ontwerp is om op een relatief eenvoudige en goedkope manier met een beetje hardware, een seriële kabel en PC-software een PLC te realiseren, zonder dat daarvoor een echte PLC hoeft te worden gebouwd. De programmering verloopt bovendien zeer intuïtief en gebruikersvriendelijk.

figuur1

De opzet

DCI-PLC is eigenlijk een programma dat de CPU-module van een PLC vervangt en waarin we het programma kunnen ontwerpen en aanpassen. Via een seriële kabel en hardware kunnen 32 ingangen op hun toestand gecontroleerd worden en kunnen 32 uitgangen aangestuurd worden. Tevens beschikt men over 32 timers, 32 tellers en 32 flags.
Het programma werkt met het besturingssysteem Windows 95/98/ME. Op Windows NT werkt het programma weliswaar, maar kan men de hardware niet aansluiten omdat NT niet toelaat de hardware rechtstreeks aan te spreken.
Een Pentium 100 is minimaal vereist. De installatie neemt met de voorbeelden ongeveer 3 MB in beslag.
De hardware van het ontwerp bestaat alleen uit een gedeelte dat zorgt voor het omzetten van de informatie op de seriële poort van de PC naar een aantal in- en uitgangen. De in- en uitgangsinterface moet de gebruiker zelf ontwerpen. Deze kan via een flatcable worden verbonden met de interface-print van de DCI-PLC. Het is onmogelijk een universele interface te ontwerpen die aan ieders behoefte voldoet. Voor de meeste lezers van Elektuur zal het niet zo moeilijk zijn om een interface voor een bepaalde toepassing te ontwerpen. Aan het einde van het artikel zullen we overigens nog enkele voorbeelden van zulke interfaces laten zien.

De hardware

Bij het bekijken van het schema van de hardware (figuur 2) zien we dat er eigenlijk alleen maar gebruik is gemaakt van schuifregisters van het type CD4094 en CD4021.
Het schuifregister 4094 is een schakeling die bestaat uit 8 in serie geplaatste flipflops.

Bij ieder kloksignaal zal het logische niveau (‘0’ of ‘1’) op de data-ingang één plaats opschuiven, zodat we na 8 kloksignalen en een strobe-puls beschikken over een 8-bits uitgangssignaal. Bij deze schakeling zijn vier van die schuifregisters in cascade geplaatst (IC5...IC8). Hierdoor hebben we de beschikking over 32 uitgangen.
Het schuifregister 4021 heeft ten opzichte van een 4094 het voordeel dat dit ook ‘andersom’ kan werken. Hiermee kunnen dus de niveaus op de acht ingangen worden ingelezen. De uitgangsniveaus van de acht interne flipflops verschijnen achter elkaar op de seriële uitgang bij het toedienen van pulsen op de klok-ingang van het IC.
In de beginsituatie staat de toestand van bit 7 al op uitgang Q7. Iedere klokpuls zal er daarna voor zorgen dat de data een plaats opschuift. Door hier ook gebruik te maken van 4 schuifregisters (IC1...IC4) beschikken we over een interface met 32 ingangen.
De keuze voor de verbinding tussen hardware en PC is gevallen op de seriële poort omdat dit een aantal voor delen biedt:
– De seriële poort is niet snel stuk te krijgen (kortsluitbeveiliging).
– De connector mag aangesloten worden wanneer de PC in werking is.
De RS232-signalen worden in het hardware-gedeelte begrensd door de zeners D1...D3 op respectievelijk +4,7 en -0,6 V. R1...R3 zorgen daarbij voor de stroombegrenzing.
In de basiscursus ‘Experimenteren met de PC’ is in het begin van dit jaar in Elektuur uitgebreid aandacht geschonken aan de seriële poort.
Voor meer informatie over de werking van de hier gebruikte schuifregisters en seriële poorten is het boek ‘PC-Poorten anders benut’, geschreven door B. Kainka, een aanrader.
Op de print is naast alle schuifregisters nog een voedingsstabilisator aanwezig die een spanning van 5 V levert. De ingangsspanning mag liggen tussen 10 en 20 V. Verder zien we nog 32 LED’s (D5...D36) met bijbehorende weerstanden, die de niveaus op de 32 uitgangen zichtbaar maken. Tenslotte moeten we nog vermelden dat alle 32 ingangen van IC1...IC4 voorzien zijn van pullupweerstanden, zodat hier dus een hoog niveau staat als een ingang niet gebruikt wordt.
In figuur 3 is de layout afgebeeld van de print die voor de hardware ontworpen is. Deze is dubbelzijdig uitgevoerd om veel draadbruggen te vermijden. De opbouw van de print is zeker niet moeilijk. Aangezien de stroomopname van de IC’s gering is, hoeft de 7805 niet voorzien te worden van een koelvin.
Voor de LED’s zijn rechthoekige typen gekozen, zodat steeds groepjes van acht stuks dicht tegen elkaar kunnen worden geplaatst, precies tegenover de bijbehorende header-pennen.
Voor de aansluitingen met de buitenwereld zijn gewone 2x10-pinheaders of boxheaders gebruikt, waar men gemakkelijk een stuk flatcable met een persconnector op kan prikken. Op elke connector zijn +5 V en massa ieder op twee extra pennen aanwezig, terwijl tegenover iedere signaalaansluiting ook nog eens een massa-aansluiting zit (zie schema). Denk er aan dat de headers aan de soldeerzijde van de print moeten worden gemonteerd. Dan klopt ook de nummering van de in- en uitgangen zoals die op de frontplaat (figuur 3) is vermeld.
Wie het geheel netjes wil afwerken, kan de schakeling in een kastje bouwen en het kastje voorzien van een frontplaatje zoals het in figuur 4 afgebeelde exemplaar.

figuur2
Figuur2: De hardware.

dciplc

Onderdelenlijst


Condensatoren:
C1...C16, C18,C19 = 100 n
C17 = 100 μ/25 V radiaal
C20 = 10 μ/25 V radiaal
Halfgeleiders:
D1...D3 = zenerdiode 4,7 V/400 mW
Weerstanden:
R1...R3 = 10 k
R4...R7 = weerstand-array 8 x 10 k
R8...R11 = weerstand-array 8 x 1 k
Halfgeleiders:
D1...D3 = zenerdiode 4,7 V/400 mW
D4 = 1N4001
D5...D36 = rechthoekige rode LED, high efficiency
IC1...IC4 = 4021
IC5...IC8 = 74HCT4094
IC9 = 7805
Diversen:
K1 = haakse 9-polige sub-D-connector voor printmontage, female
K2...K9 = 2x10-polige boxheader behuizing: Teko 160x95x45 mm (Conrad bestelnr. 526177)
print: EPS 000163-1 (zie service-pagina’s)

figuur3
Figuur3: Dubbelzijdige print en voorbeeld van een frontplaat.
Layout print in pdf formaat.

Werken met de software

Het programma DCI-PLC is zodanig opgezet dat men door het plaatsen van blokken eenvoudig een programma kan maken voor de PLC.
De lengte van een Ladder Diagram dat op deze wijze wordt gemaakt, mag maximaal 99 regels lang zijn. Een Ladder Diagram vertoont veel overeenkomsten met een relaisschema en is een veelgebruikte manier om op een grafische wijze een programma te schrijven.
Bij een Ladder Diagram moet men er altijd aan denken dat de symbolen in het Ladder Diagram instructies weergeven en niet de fysieke contacten. Bij het uitvoeren van de instructies in het programma worden de toestanden van de ingangen bekeken. Afhankelijk hiervan wordt een uitgang hoog of laag gemaakt.

Instructieset

figuur5
Figuur5: De taakbalken in de DCI-PLC software.

De instructieset van de DCI-PLC bevat de volgende onderdelen (zie figuur 5):

  • 1. Controleer op ‘AAN’. Deze instructie onderzoekt of er spanning aanwezig is en kan een toewijzing krijgen naar een ingang, uitgang, flag, timer of teller. De status van deze instructie is ‘WAAR’ wanneer er spanning aanwezig is (wanneer de instructie een toewijzing heeft gekregen naar een ingang of een uitgang).
  • 2. Controleer op ‘UIT’. Deze instructie kijkt naar de afwezigheid van spanning en kan een toewijzing krijgen naar een ingang, uitgang, flag, timer of teller. De status van deze instructie is ‘WAAR’ wanneer er geen spanning aanwezig is (wanneer de instructie een toewijzing heeft gekregen naar een ingang of een uitgang).
  • 2. Controleer op ‘UIT’. Deze instructie kijkt naar de afwezigheid van spanning en kan een toewijzing krijgen naar een ingang, uitgang, flag, timer of teller. De status van deze instructie is ‘WAAR’ wanneer er geen spanning aanwezig is (wanneer de instructie een toewijzing heeft gekregen naar een ingang of een uitgang).
  • 3. Positieve-flank-detectie. De status van deze instructie wordt ‘WAAR’ bij het detecteren van een opgaande flank. Dit blijft slechts geldig gedurende één programmacyclus. Deze instructie kan alleen een toewijzing krijgen naar een flag.
  • 4. Negatieve-flank-detectie. De status van deze instructie wordt ‘WAAR’ bij het detecteren van een neergaande flank. Dit blijft slechts geldig gedurende één programmacyclus. Deze instructie kan alleen een toewijzing krijgen naar een flag.
  • 5. Dit symbool staat voor een interne of externe uitgang en kan een toewijzing krijgen naar een flag of een uitgang. Deze uitgang zal hoog worden wanneer het logische onderzoek voor de hele regel ‘WAAR’ is.
  • 6. Dit symbool staat voor een geïnverteerde interne of externe uitgang en kan een toewijzing krijgen naar een flag of een uitgang. Deze uitgang zal hoog worden wanneer het logische onderzoek voor de hele regel ‘NIET WAAR’ is.
  • 7. SET interne of externe uitgang. Dit symbool kan een toewijzing krijgen naar een flag of een uitgang. Deze uitgang zal hoog worden wanneer het logische onderzoek voor de hele regel ‘WAAR’ is. Ook als het logische onderzoek voor de hele regel daarna ‘NIET WAAR’ wordt, zal de uitgang hoog blijven. Alleen RESET uitgang kan de uitgang weer laag maken.
  • 8. RESET interne of externe uitgang. Dit symbool kan een toewijzing krijgen naar een flag of een uitgang. Deze uitgang zal laag worden wanneer het logische onderzoek voor de hele regel ‘WAAR’ is. Ook als het logische onderzoek voor de hele regel daarna ‘NIET WAAR’ wordt, zal de uitgang laag blijven. Alleen SET uitgang kan de uitgang weer hoog maken.
  • 9. De timer is een instructie die gedurende een ingestelde tijd laag of hoog is (afwisselend hoog en laag is ook mogelijk). Deze instructie moet altijd in de laatste kolom van een regel geplaatst worden. De timer zal starten wanneer het logische onderzoek voor de hele regel ‘WAAR’ is en dat ook gedurende de hele timer-tijd blijft.ndien het logische onderzoek voor de hele regel ‘NIET WAAR’ wordt, zal de timer gereset worden. De waarde t1 is de tijd in seconden dat de timer laag is, terwijl t2 de tijd in seconden voorstelt gedurende welke de timer hoog is. De waarde van t1 en t2 mag liggen tussen 1 en 9999. Bij het toewijzen van een timer moet t1 of t2 een waarde krijgen, anders volgt er een foutmelding. Indien t1 en t2 een waarde krijgen, heeft men een pinker ter beschikking (een soort knipperlicht-functie). Voor het realiseren van zeer lange tijden kan men een timer en een teller combineren.
  • 10. De teller-instructie levert een hoog niveau na een bepaald aantal pulsen. Het tellen zal starten wanneer het logische onderzoek voor de hele regel ‘WAAR’ is en dat ook blijft. Indien het logische onderzoek voor de hele regel ‘NIET WAAR’ wordt, zal de teller gereset worden. De teller kan een waarde hebben van 1 tot 9999. De teller heeft twee ingangen, een voor optellen en een voor aftellen. Aan deze ingangen kan een flag, ingang, timer, uitgang of andere teller toegewezen worden. Men moet minstens een van beide ingangen toewijzen. Alleen wanneer de teller gelijk is aan de ingestelde waarde, zal deze hoog worden! De teller-instructie moet altijd in de laatste kolom geplaatst worden.
  • 11. Begin of einde van een OR-instructie. Deze instructie kan alleen geplaatst worden in kolom 1...8 en moet een begin en een einde hebben. Er kan maar één OR-instructie toegepast worden per regel en de OR mag maximaal 7 regels breed zijn. In de map /examples staan twee bestanden (or.plc en bador.plc) die laten zien wat kan en niet kan met een OR-functie.
  • 12. Lijn-instructie Deze instructie vervangt een signaaldraad in een schema. Deze instructie geeft altijd het niveau van het voorgaande vak door.

Voor het maken van een programma beschikken we over de volgende hulpmiddelen:
  • 13. Verwijder een instructie.
  • 14. Invoegen van een regel.
  • 15. Verwijderen van een regel.

Opmerking: Een flag (in het Nederlands ook wel merker genoemd) is een soort interne uitgang die gebruikt wordt voor het opslaan van tussenresultaten. Een flag kan als uitgang ‘geset’ en ‘gereset’ worden en is zo eigenlijk een onzichtbare uitgang.

Creatie van een programma.

Het is een goed uitgangspunt om bij het ontwerpen van een programma van links naar rechts te werken en pas als een regel af is aan de volgende regel te beginnen. Dat laatste is ook nodig omdat het programma een controle op lege regels bevat. Maak er bij het programmeren van een PLC verder een goede gewoonte van om in een programma altijd maar één uitgang met dezelfde toewijzing te gebruiken. Elke PLC werkt namelijk op de volgende manier.
1. Bij een nieuwstart (PLC naar runmode) worden alle uitgangen spanningsloos.
2. De toestand van alle ingangen wordt ingelezen.
3. Het gebruikersprogramma werkt de instructies na elkaar af met de signaaltoestanden die in punt 2 zijn ingelezen. Indien tijdens de verwerking van het programma een ingangssignaal van toestand verandert, wordt daar dus geen rekening mee gehouden tijdens de op dat moment lopende cyclus. Tijdens de verwerking van het programma wordt wel rekening gehouden met de toestanden van timers, tellers en flags.
4. Na de verwerking van het gebruikersprogramma worden de resultaten naar de uitgangen gestuurd.
5. De punten 2, 3 en 4 worden cyclisch doorlopen.
Indien twee maal dezelfde uitgang gebruikt is in een programma, zal deze uitgang de toestand krijgen van de laatste regel waar de uitgang is geplaatst! Het DCI-PLC-programma doorloopt 20 tot 100 maal per seconde een programma. Dit is afhankelijk van snelheid van de gebruikte PC en de lengte van het programma.

Voorbeeld

In het volgende voorbeeld gaan we een eenvoudige sproei-installatie maken voor een tuin. We willen op twee plaatsen in de tuin sproeien. Afhankelijk van de droogte van de grond moeten we kunnen kiezen uit drie mogelijkheden: een korte sproeitijd, een lange sproeitijd en een heel lange sproeitijd.
De benodigdheden zijn:
Twee sproeiventielen:
– QY1: Output Yes nr. 1
– QY2: Output Yes nr. 2
Drie drukknoppen voor de tijdkeuze:
– IY0: Input Yes nr. 0, voor tien minuten sproeien.
- IY1: Input Yes nr. 1, voor twintig minuten sproeien.
– IY2: Input Yes nr. 2, voor dertig minuten sproeien.
Het invoeren van het programma gaat als volgt:
Selecteer in het DCI-PLC-programma op de werkbalk de knop Controleer op ‘AAN’ (nummer 1 in figuur 5) en klik in regel 1 op vak 0.
In het vak staat dan de gekozen instructie en er verschijnt een dialoogvenster waarin men de ingang kan toewijzen en tekst kan toevoegen.
Selecteer hier Input en geef een ‘0’ in als toewijzing. Hierdoor wordt aan deze instructie ingang 0 van de PLC toegewezen.
Men kan eventueel tekst ingeven die men naderhand kan opvragen door in het vak met de rechter muisknop te klikken.
Klik nu op OK en ingang 0 is toegewezen. Dit is zichtbaar omdat er nu IY0 bovenaan in het vak komt te staan.

figuur7
Figuur7: Bij het plaatsen van een instructie verschijnt een dialoogvenster voor de toewijzingen, eventueel commentaar, enz.

Plaats nu in de twee volgende vakken een Controleer op ‘UIT’ instructie (2) en wijs deze toe aan F11 en F12.
F11 en F12 zijn flags die verder in het programma geset en gereset worden. Deze zijn toegevoegd om te vermijden dat er na het indrukken van een van de drukknoppen nog een andere tijd kan worden gekozen.
Selecteer nu de Lijn-instructie (12) en klik eenmaal in de vakken 3 tot en met
De lijnen zijn nu geplaatst. Selecteer de instructie SET uitgang (7) en klik in vak 9. De uitgang wordt geplaatst en het dialoogvenster voor het toewijzen van een uitgang verschijnt.
Selecteer Flag en vul 10 in. Eventueel kunt u ook nog tekst toevoegen.
Ziezo, de eerste regel staat er. Maak op soortgelijke wijze de overige regels, zoals afgebeeld is in figuur 6. Als dit gebeurd is, kan men het programma opslaan en is het klaar om te testen.

Voor het testen van het programma of als de hardware niet beschikbaar is, kan men gebruik maken van de simulatie-mode.
Klik daartoe op Simulation mode in het menu Status. Er verschijnt een venster waarin de niveaus van de 32 ingangen kunnen worden ingesteld en de toestanden van de uitgangen kunnen worden gecontroleerd. Maak nu ingang 1 even hoog en laag. Hierdoor wordt timer 2 gestart en zijn de uitgangen 1 en 2 gedurende 20 minuten hoog.
In het programma wordt de toestand van de in- en uitgangen visueel weergegeven en is de momentele waarde van de timers zichtbaar.
Als het sproeien eenmaal is gestart, heeft het hoog maken van een van de ingangen geen effect meer. Dit komt door de vergrendeling op regels 1, 2 en 3.

Als de hardware is aangesloten, kunt u nu de juiste poort-instellingen doen in het menu Ports.
U kunt kiezen uit COM1...COM4 en de snelheid kan worden ingesteld. Het is verstandig om eerst de laagste snelheid in te stellen en daarna in RUN-mode te controleren of de ingangen goed reageren en de uitgangen juist aangestuurd worden. Klik op Run mode in het Status-menu of klik op de knop met de groene pijl op de werkbalk.
U kunt op elk moment terug naar de edit-mode door te klikken op Edit mode in het menu Status of te klikken op de knop met de rode cirkel.
Hierna worden alle uitgangen van de hardware terug op nul gezet.

figuur6
Figuur6: Opzet van het sproeier programma.


De volgende tips geven een optimale werking van het programma in de run-mode:
– Zorg ervoor dat zo weinig mogelijk programma’s actief zijn.
– Zet de schermbeveiliging uit.
– Start geen ander programma.
– Plaats geen diskette of CD-ROM in de PC.
Door deze maatregelen kan Windows een maximale tijd voor het DCI-PLC-programma reserveren, wat de prestaties ten goede komt. Als bijvoorbeeld een CD-ROM in de lade van de CD-speler wordt gelegd, dan zal het DCI-PLC-programma gedurende een paar seconden niet meer reageren. Dit komt omdat Windows de prioriteit geeft aan het CD-ROM-station. Gedurende deze tijd worden de timers niet meer bijgehouden en worden ingangen niet gecontroleerd. Indien men de voorgaande voorzorgen in acht neemt, zal het programma iedere ingang minstens 10 keer per seconde controleren en zal een timer maximaal een afwijking van 2 seconden hebben per 24 uur.
Op een Pentium 400 haalt het sproeierprogramma een snelheid van 90 cycli per seconde.
Op de floppy met het programma (ook beschikbaar op de Internet-site van Elektuur: www.elektuur.nl) staan nog enkele voorbeelden om mee te oefenen.

Intefacing

Voor de koppeling met allerlei apparaten, relais en signaalgevers kunnen Elektuurlezers putten uit een zeer grote voorraad aan schakelingen die daarvoor in voorgaande jaren in Elektuur al eens gepubliceerd zijn. Maar toch willen we nog enkele een oudige voorbeelden geven. Figuur 8a toont een 8-kanaals uitgangsinterface die bestaat uit een buffer-IC en 8 relais. Op deze wijze kunnen 8 apparaten of schakelingen van spanning worden voorzien (bij de juiste relaiskeuze kan hier zelfs netspanning mee worden geschakeld, maar let wel op een veilige opbouw).

figuur8
Figuur8: Twee voorbeelden van interfaces.


In figuur 8b is een 8-kanaals ingangsinterface getekend. Het gaat hier om acht opto-couplers met bijbehorende stroombegrenzingsweerstanden. Als de twee aansluitpennen worden doorverbonden, verschijnt er een hoog niveau op de bijbehorende PLC-ingang.

Leave a Message.