What is a PLC (Programmable Logic Controller)?

Byg din egen PLC med en Raspberry Pi og OpenPLC

17/07/2023

Rating: 3.97 (2211 votes)

Har du nogensinde overvejet at bringe industriel automation ind i dine hobbyprojekter eller dit smarte hjem? Mens platforme som Home Assistant og Node-Red er fantastiske til hjemmeautomation, tilbyder en anden tilgang en dybere forståelse af de systemer, der driver moderne fabrikker og produktionslinjer. Ved at bruge en Raspberry Pi og den open source softwareplatform OpenPLC, kan du bygge din egen Programmerbare Logiske Controller (PLC) og lære de standarder, der anvendes i industrien. Denne artikel vil guide dig trin for trin gennem processen med at omdanne din Raspberry Pi til en simpel, men kraftfuld PLC, som du kan programmere, fjernstyre og overvåge.

How can I create a simple PLC using a Raspberry Pi?
Using a Raspberry Pi and the OpenPLC software platform, create a simple PLC that can be programmed in ladder diagrams with remote access and I/O monitoring dashboards. OpenPLC provides a control engineering development platform that transforms various microcontrollers into programmable logic controllers.
Indholdsfortegnelse

Hvad er en PLC (Programmable Logic Controller)?

En PLC er i bund og grund en robust industriel computer, der er designet til at styre maskiner og processer. Den læser input fra sensorer (som knapper, temperaturfølere osv.), udfører et program baseret på logiske instruktioner og styrer output-enheder (som motorer, lys, ventiler osv.). Det, der gør PLC'er specielle, er deres pålidelighed, robusthed og brugen af standardiserede programmeringssprog defineret i IEC 61131-3-standarden. OpenPLC er et open source-projekt, der emulerer denne funktionalitet på almindelig hardware som en Raspberry Pi, en Linux- eller Windows-PC. Det giver entusiaster, studerende og professionelle en fantastisk mulighed for at lære om industrielle kontrolkoncepter, programmeringssprog og kommunikationsprotokoller uden at skulle investere i dyrt industrielt udstyr.

Kom i gang: Hvad du skal bruge

For at følge denne guide skal du have et par ting klar. Selve OpenPLC-softwaren består af tre dele: en editor til at skrive logikken, en runtime-komponent, der kører på din PLC (i vores tilfælde en Raspberry Pi), og en grafisk bygger til HMI-paneler. Vi vil dog erstatte den grafiske bygger med Node-Red for at skabe et mere fleksibelt web-dashboard.

Softwareopsætning:

  • OpenPLC Editor: Installeres på din primære computer (Windows, Linux eller macOS). Her vil du designe og skrive dine PLC-programmer.
  • OpenPLC Runtime: Installeres på din Raspberry Pi. Dette er den motor, der eksekverer din logik og styrer GPIO-pins.
  • Node-Red: Installeres også på din Raspberry Pi. Vi bruger dette til at skabe et brugervenligt dashboard til at overvåge og styre vores PLC.

Installationsvejledningen for hver komponent findes på OpenPLC-projektets officielle hjemmeside. For vores projekt installerer vi editoren på en PC for fjernkonfiguration og runtime på en Raspberry Pi. Dette setup giver en realistisk oplevelse, hvor udvikling og eksekvering er adskilt.

Hardwareopsætning på din Raspberry Pi

For at gøre projektet praktisk, skal vi tilslutte nogle simple input- og output-enheder. Vi bruger en trykknap som input og en LED som output.

  • Trykknap: Tilsluttes til BCM pin 17 (fysisk pin 11).
  • LED: Tilsluttes til BCM pin 23 (fysisk pin 16) via en passende modstand (f.eks. 220-330 Ohm).

En vigtig detalje ved OpenPLC på en Raspberry Pi er, hvordan den adresserer GPIO-pins. Den følger IEC 61131-3-adressering. Input og output er tildelt specifikke adresser. For eksempel:

  • Trykknappen på BCM pin 17 adresseres som %IX0.3 (Input, bit 3 på bus 0).
  • LED'en på BCM pin 23 adresseres som %QX0.2 (Output, bit 2 på bus 0).

OpenPLC har en fast regel for Raspberry Pi: alle pins på venstre side (ulige fysiske numre) er inputs, og alle pins på højre side (lige fysiske numre) er outputs. Dette er afgørende at huske, når du designer dine kredsløb.

Programmering af din PLC: De tre sprog

Vi vil nu oprette tre små programmer i ét projekt for at demonstrere de mest almindelige IEC 61131-3 sprog. Globale variabler, der kan deles mellem programmerne, defineres i en ressource-objekt (Res0). Alle vores programmer vil køre i den samme task med en fast cyklustid.

1. Stigediagrammer (LD - Ladder Diagrams)

Stigediagrammer er det ældste og måske mest udbredte PLC-programmeringssprog. Det blev udviklet til at efterligne relæ-logikkredsløb, hvilket gør det meget intuitivt for elektrikere og teknikere. Logikken ligner en stige, med lodrette strømskinner og vandrette 'trin' (rungs), hvor logikken udføres.

Vores LD-program: Tænd LED'en i 3 sekunder efter et enkelt tryk på knappen. I OpenPLC Editoren opretter vi en reference til vores knap (PB1, en global variabel) og to lokale variabler: LED2 (vores output) og en timer-funktion (TOF0, en Off-Delay timer). Når knappen trykkes, aktiveres timeren. Outputtet fra timeren holder LED'en tændt. Når de 3 sekunder er gået, slukker timeren, og LED'en slukkes, selvom knappen blev sluppet med det samme.

2. Funktionsblokdiagrammer (FBD - Function Block Diagrams)

Mens stigediagrammer er gode til digital logik, kan de blive rodede, når man arbejder med analoge værdier eller komplekse funktioner. Her kommer FBD ind i billedet. FBD er et grafisk sprog, hvor programmer er bygget ved at forbinde funktionsblokke, ligesom man kender det fra Node-Red. Hver blok udfører en specifik operation.

How can I create a simple PLC using a Raspberry Pi?
Using a Raspberry Pi and the OpenPLC software platform, create a simple PLC that can be programmed in ladder diagrams with remote access and I/O monitoring dashboards. OpenPLC provides a control engineering development platform that transforms various microcontrollers into programmable logic controllers.

Vores FBD-program: Tæl antallet af gange, knappen trykkes, og send værdien til et Modbus-register. Vi bruger en 'Rising Edge Trigger' (R_TRIG) blok til at detektere præcis, hvornår knappen trykkes (overgangen fra FRA til TIL). Outputtet fra denne blok aktiverer en tællerblok (ADD), der lægger 1 til den nuværende værdi i vores tællevariabel (CNT_FB). Værdien gemmes i et output-ord på en specifik adresse, f.eks. %QW100, så vi kan læse den via Modbus.

3. Struktureret Tekst (ST - Structured Text)

For dem, der kommer fra en traditionel programmeringsbaggrund, er Struktureret Tekst ofte det mest komfortable sprog. Det er et højniveausprog med en syntaks, der minder om Pascal. ST er ideelt til komplekse matematiske beregninger eller kompliceret betinget logik (IF-THEN-ELSE, CASE-statements), som kan være besværligt at implementere grafisk.

Vores ST-program: Vi genskaber den samme tællefunktionalitet fra FBD-programmet, men i ST. Her kan den samme logik skrives på kun få linjer kode. Vi tilføjer også en ekstra betingelse: Hvis tælleren når en værdi på 1000, nulstilles den automatisk. Dette er meget lettere at implementere i ST end i FBD.

IF R_TRIG_Instance(CLK := PB1) THEN
CNT_ST := CNT_ST + 1;
END_IF;

IF CNT_ST >= 1000 THEN
CNT_ST := 0;
END_IF;

En stor fordel ved IEC 61131-3-standarden er, at du kan blande disse sprog. Du kan oprette din egen brugerdefinerede funktionsblok i ST og derefter bruge den i dit FBD- eller LD-program.

Kørsel og overvågning

Når dine tre programmer er skrevet i OpenPLC Editoren, kompileres de til en enkelt fil. Denne fil uploades derefter til OpenPLC Runtime på din Raspberry Pi via dens web-interface (typisk på http://[din-pi-ip]:8080). Inde i web-interfacet skal du først gå til 'Hardware' og sætte 'OpenPLC Hardware Layer' til 'Raspberry Pi'. Derefter uploader du din programfil under 'Programs' og trykker på 'Start PLC'. Nu kører din logik! Under 'Monitoring' kan du se status for alle dine variabler i realtid, hvilket er et uvurderligt værktøj til fejlfinding.

Integration med Node-Red via Modbus

Nu hvor vores PLC kører, vil vi have et pænt dashboard. Her kommer Modbus og Node-Red ind i billedet. Modbus er en de facto standard kommunikationsprotokol i industrien til at forbinde enheder. OpenPLC understøtter Modbus TCP (over Ethernet), og Node-Red har noder til at kommunikere via denne protokol.

I Node-Red installerer du en passende Modbus TCP-node (f.eks. `node-red-contrib-modbustcp`) via 'Manage Palette'. Derefter kan du oprette et simpelt flow:

  1. Læs data fra PLC: Brug 'Modbus-Read' noder til at hente status for dine PLC-variabler. For eksempel, for at læse LED-status (%QX0.2), læser du 'Coil' adresse 2. For at læse tællerværdien (%QW100), læser du 'Holding Register' adresse 100.
  2. Vis data på dashboard: Forbind Modbus-noderne til dashboard-noder (som et tekst-felt eller en måler) for at visualisere dataene.
  3. Skriv data til PLC: Vi kan også styre PLC'en fra vores dashboard. Vi opdaterer vores stigediagram, så LED'en kan tændes enten af trykknappen ELLER af en værdi i et Modbus-register (f.eks. %QW1). I Node-Red opretter vi en slider eller en knap, der skriver en værdi (0 eller 1) til 'Holding Register' 1 ved hjælp af en 'Modbus-Write' node.

Med dette setup har du nu et fuldt funktionelt system, hvor en Raspberry Pi fungerer som en industriel controller, og Node-Red leverer en moderne, web-baseret brugergrænseflade.

Tabel: Sammenligning af PLC Programmeringssprog

SprogStyrkerSvaghederBedst egnet til
Stigediagram (LD)Intuitivt for elektrikere, god til simpel digital logik.Kan blive uoverskueligt med kompleks logik.Sekventiel kontrol, simpel tænd/sluk logik.
Funktionsblokdiagram (FBD)God visuel repræsentation af dataflow, god til proceskontrol.Kan kræve meget plads på skærmen for store programmer.Signalbehandling, PID-regulering, analog logik.
Struktureret Tekst (ST)Kraftfuld, kompakt, bedst til kompleks matematik og algoritmer.Mindre intuitiv for ikke-programmører.Dataloops, komplekse betingelser, algoritmer.

Ofte Stillede Spørgsmål (FAQ)

Hvad er den største fordel ved at bruge OpenPLC frem for Home Assistant?
Den primære fordel er læring. OpenPLC lærer dig de standarder (IEC 61131-3) og protokoller (Modbus), der bruges i industriel automation. Denne viden er direkte overførbar til en professionel karriere inden for automation og kontrolteknik, hvorimod Home Assistant er mere fokuseret på brugervenlighed i et hjemmemiljø.
Skal jeg have erfaring med programmering for at bruge OpenPLC?
Ikke nødvendigvis. De grafiske sprog som Stigediagrammer (LD) og Funktionsblokdiagrammer (FBD) er designet til at være intuitive, selv for begyndere. Struktureret Tekst (ST) kræver dog en tankegang, der ligner traditionel programmering.
Hvilken Raspberry Pi-model anbefales?
De fleste nyere modeller som Raspberry Pi 3, 4 eller 5 vil fungere glimrende. Selv en ældre model kan køre simple PLC-programmer, men en nyere model giver mere processorkraft, især hvis du også vil køre Node-Red og andre services på den.
Er OpenPLC gratis?
Ja, OpenPLC er et open source-projekt, og softwaren er helt gratis at downloade og bruge.

Konklusion

At bygge sin egen PLC med en Raspberry Pi og OpenPLC er et utroligt givende projekt. Det åbner døren til en verden af industriel kontrol og giver en praktisk platform til at eksperimentere med de teknologier, der driver vores moderne verden. Uanset om dit mål er at automatisere et drivhus, bygge en kompleks maskine til dit værksted eller blot at lære en ny og værdifuld færdighed, er OpenPLC et fremragende værktøj, der kombinerer fleksibiliteten fra open source med robustheden fra industrielle standarder.

Hvis du vil læse andre artikler, der ligner Byg din egen PLC med en Raspberry Pi og OpenPLC, kan du besøge kategorien Teknologi.

Go up