+1 500 000 produkter i udbud
7000 pakker om dagen
+300 000 kunder fra 150 lande
Dato for offentliggørelse: 14-03-2025 Dato for opdatering: 14-05-2026 🕒 6 min læsning
PLC-controllere bruges ofte i industrien, hvor der er behov for parameterstyring og processtyring. Udviklingen af indlejret elektronik har resulteret i enheder med høje specifikationer, der er modstandsdygtige over for EMI-forstyrrelser og miljøforhold, samtidig med at de er brugervenlige. I modsætning til tidligere ligner miljøer til oprettelse af programmer hinanden meget, og de fleste af dem tilbyder en måde at udføre et program, der passer til os. Så hvordan programmerer man en PLC-controller?
Programmeringssprog til PLC-styringer blev genstand for IEC 61131-standarden, der blev offentliggjort i 2013. Del 3 af denne standard indeholder anbefalinger vedrørende sprog og metoder til programmering af PLC-styringer. Ud over datatyper, variabler, konfiguration og dens beskrivelse, programorganisationsenheder og objektorienterede programmeringsprincipper er der anført fem grundlæggende programmeringssprog til PLC-controllere, og kravene til deres funktionalitet er defineret. På grund af denne standard er de grundlæggende programmeringssprog, der bruges af PLC-programmører, blevet:
Det mest populære og tilgængelige i alle miljøer til at skabe programmer til PLC'er er Ladder Diagram LD (eller LAD). Det er et grafisk sprog, men det bruger ukomplicerede symboler, så i ældre løsninger blev der brugt semigrafik, der blev skabt ved hjælp af standard ASCII-tegn. Disse tegn var også nemme at præsentere på PLC-skærmen, hvilket gav mulighed for enklere ad hoc-programmer uden brug af en pc. I dette sprog oprettes et programdiagram ved hjælp af symboler, der ligner dem, der bruges i elektriske diagrammer - spoler og kontakter. Kontakter kan være normalt åbne (NO) eller normalt lukkede (NC), og spoler kan have forskellige funktioner, f.eks. indstilling, nulstilling eller negering. Funktioner og hele funktionsblokke, som f.eks. timere, tællere eller flip-flops, kan også væves sammen her. Ladder-sproget er forståeligt selv for en uerfaren programmør.
Figur 2. Eksempel på et fragment af et program udført ved hjælp af FBD
En anden meget intuitiv måde at programmere på, især for dem, der er fortrolige med digital teknologi, er Functional Block Diagram FBD. Et eksempel på et stykke "kode", der er udført ved hjælp af FBD, er vist i figur 2. Individuelle input, output og operationer repræsenteres af funktionsblokke og gates, der ikke kun udfører logiske funktioner, men også er i stand til at behandle signaler i henhold til en given algoritme. Blandt de funktionelle blokke er PID-regulatorer, en bred vifte af bølgeformgeneratorer, tællere og andre. Nogle programmeringsmiljøer giver også mulighed for at definere brugerdefinerede blokke med den nødvendige funktionalitet. FBD er et grafisk sprog. Individuelle blokke arrangeres på et diagram og forbindes, så det ligner tegningen af logiske kredsløb. Nogle programmeringsmiljøer giver ikke kun mulighed for at forbinde ind- og udgange, men også for at oprette busser og referencer, der overfører en række parametre (i figur 2 er busser repræsenteret af fede linjer - her overfører de multi-bit-konstanter og variabler).
Figur 2. Eksempel på et fragment af et program udført ved hjælp af FBD
Structured Text ST er et sprog på højt niveau, der minder om det engang meget populære Pascal-sprog. Det giver mulighed for mere komplekse operationer, hvis notation ikke er begrænset af et virvar af linjer på skærmen og deres udførelseskapacitet som i tilfældet med FBD, der ofte kræver en stor skærm med god opløsning. Programmering i ST minder om at skrive kode i traditionelle programmeringssprog til pc'er. Komplekse instruktioner understøttes, såsom repeat...until-løkker, do...while, betingede instruktioner if...then...else, case og matematiske funktioner sqrt(), sin(). Det er vigtigt at bemærke, at uanset hardwareproducent eller -miljø er ST-sprogfunktionerne fælles for dem og er defineret i IEC 61131-standarden. Da den nævnte standard giver mulighed for at kombinere de sprog, der er anført i den, kan ST også bruges til at skabe "indsatser" eller FBD-blokke, der ikke er standardiserede.
Liste 1. Eksempel på funktion udført i ST-sprog
//=======================================================================
// Function Block Timed Counter : Inkrementel optælling af det tidsbestemte interval
//=======================================================================
FUNCTION_BLOCK FB_Timed_Counter
VAR_INPUT
//Triggersignal til at begynde tidsbestemt tælling
Udfør : BOOL := FALSE;
/Indtast cyklustid (sekunder) mellem tællinger
Time_Increment : REAL := 1.25;
//Antal ønskede tællecyklusser
Count_Cycles : INT := 20;
END_VAR
VAR_OUTPUT
//One Shot Bit, der angiver timercyklus udført
Timer_Done_Bit : BOOL := FALSE;
//Output Bit, der angiver, at optællingen er afsluttet
Count_Complete : BOOL := FALSE;
//Akkumulerende værdi af tæller
Nuværende_Count : INT := 0;
END_VAR
VAR
//Timer FB fra kommandobiblioteket
CycleTimer : TON;
//Tæller FB fra kommandobiblioteket
CycleCounter : CTU;
//Konverteret tid_Forøgelse i sekunder til MS
TimerPreset : TIME;
END_VAR
// Start af programmering af funktionsblok
TimerPreset := REAL_TO_TIME(in := Time_Increment) * 1000;
CycleTimer(
in := Execute AND NOT CycleTimer.Q,
pt := TimerPreset);
Timer_Done_Bit := CycleTimer.Q;
CycleCounter(
cu := CycleTimer.Q,
r := NOT Execute,
pv := Count_Cycles);
Aktuel_Count := CycleCounter.cv;
Count_Complete := CycleCounter.q;
END_FUNCTION_BLOCK
Sequential Function Chart er et andet grafisk programmeringssprog. Dets prototype var GRAFCET-sproget, der er modelleret på binære Petri-net. Det gør det muligt at beskrive sekvenser af trin (handlinger), som skal udføres i en strengt defineret rækkefølge. Det er især nyttigt til at skabe programmer til håndtering af processer, der kræver synkronisering, eller processer, der kan opdeles i faser. Hovedkomponenterne i et program i SFC er: trin (faser), der er forbundet med handlinger, overgange, der er forbundet med logiske betingelser, direkte forbindelser mellem trin og overgange.
Ofte kombineres SFC-sproget med en anden programmeringsmetode, f.eks. en LD-stige. SFC er i sagens natur et simultant programmeringssprog, hvor mange POU'er (Program Organization Units), dvs. enheder, der styrer flowet, kan være aktive samtidig. Nogle miljøer giver også mulighed for at oprette makrohandlinger, dvs. handlinger i en POU, der påvirker tilstanden i en anden POU. På den måde kan en POU bestemme de aktive trin, der tages af en anden POU.
Figur 3. Eksempel på et fragment af et program i SFC-sprog
Instruktionslisten betragtes nu som en forældet måde at programmere på. Dette sprog minder lidt om assembler, men selv om det er implementeret til forskellige PLC-controllere med forskellige processorer, er IL-sproget uafhængigt af den anvendte processortype. Ligesom assembler består det af meget enkle instruktioner, og mere komplekse operationer kræver brug af mange af dem. Kontrol af programudførelsen udføres ved hjælp af jump-instruktioner og subrutinekald.
Mange controllerproducenter tilbyder, på trods af at den tilbudte hardware og software er i fuld overensstemmelse med IEC 61131-3-standarden, yderligere kald/funktionsblokke, der er specifikke for en given leverandør og tilpasset den hardware, de tilbyder, såsom læsning eller skrivning til indgange/udgange. For eksempel blev IL-sproget, der var beregnet til Siemens PLC-controllere, kaldt "Statement List" eller "STL" på engelsk og "Anweisungs-Liste" eller "AWL" på tysk. Det tyske navn blev også overført til de nationale versioner af runtime-miljøet på italiensk og spansk. En Simatic-pakkebruger kan vælge mellem tyske og internationale mnemoteknikker til at repræsentere instruktioner. For eksempel betyder "A" "AND" eller "U" betyder "UND", "I" betyder "Input" eller "E" betyder "Eingang" osv.
Liste 2. Eksempel på et fragment af et program i IL-sprog
LD Hastighed
GT 2000
JMPCN VOLTS_OK
LD Volts
VOLTS_OK LD 1
ST %Q75
Formålet med denne tekst er ikke at undervise i programmering af PLC-controllere, men at vise nogle af de muligheder, man kan vælge imellem. Alle PLC-programmører bør vælge den metode, der passer bedst til deres behov, eller kombinere dem afhængigt af anvendelsen. For eksempel vil FBD-diagrammet sandsynligvis appellere til brugere, der kender og forstår logiske kredsløb, mens LD-stigen vil være nyttig til programmering af enklere kontrolsekvenser. På den anden side vil ST og SFC være velegnede til programmering af komplekse processer, selv om ST-sproget f.eks. er blevet implementeret i Eatons Easy micro PLC-controller, som sandsynligvis vil blive brugt til enklere, mindre krævende kontrol- og overvågningsfunktioner. På den anden side er der ingen anbefalinger om, hvilket sprog der kan bruges til hvad, og hvilket der egner sig til hvad. Med en større eller mindre indsats og ved hjælp af en af de diskuterede metoder kan der skabes passende software. Den bedste løsning synes at være at kombinere sprog afhængigt af behov og for at opnå den største læsbarhed af applikationen.
Transfer Multisort Elektronik (TME) er en af verdens største globale distributører af elektroniske komponenter, elektrotekniske dele, værkstedsudstyr og industriel automatisering. Kataloget omfatter over 1.500.000 produkter fra 1.300 førende producenter. TME's moderne logistikcentre i Łódź og Rzgów (Polen), med et samlet areal på over 40.000 m², sender dagligt næsten 6.000 pakker til kunder i mere end 150 lande.
TME investerer også i udviklingen af viden og færdigheder hos unge ingeniører og elektronikentusiaster gennem TME Education-projektet og støtter teknologisamfundet ved at organisere TechMasterEvent -serien, der fremmer innovation og erfaringsudveksling.