+1 500 000 produkter i udbud

7000 pakker om dagen

+300 000 kunder fra 150 lande

Quick Buy Favoritter
Vogn

Programmeringssprog til PLC-controller

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:

Ladder LD (LAD)

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

Funktionelt blokdiagram 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

Struktureret tekst ST

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

Sekventielt funktionsdiagram SFC

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

Instruktionsliste IL

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

Hvilket sprog er det bedste? Det kommer an på..

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.

rightColumnPicture rightColumnPicture

LÆS OGSÅ