+1 500 000 προϊόντα σε προσφορά

7000 απεσταλμένα δέματα καθημερινά

+300 000 πελάτες σε 150 χώρες

Quick Buy Αγαπημένα
Καλάθι

Γλώσσες προγραμματισμού PLC

Ημερομηνία δημοσίευσης: 14-03-2025 🕒 6 ανάγνωση λεπτά

Οι ελεγκτές PLC χρησιμοποιούνται ευρέως στη βιομηχανία σε όλα τα μέρη όπου είναι απαραίτητος ο έλεγχος παραμέτρων και η διαχείριση διαδικασιών. Η ανάπτυξη της ενσωματωμένης ηλεκτρονικής έχει οδηγήσει στο να είναι αυτές οι συσκευές με αυστηρές παραμέτρους, ανθεκτικές στις παρεμβολές EMI και στις περιβαλλοντικές συνθήκες, ενώ ταυτόχρονα φιλικές προς τον χρήστη. Σε αντίθεση με το παρελθόν, τα περιβάλλοντα που χρησιμοποιούνται για τη δημιουργία προγραμμάτων είναι πολύ παρόμοια και στα περισσότερα από αυτά μπορεί να βρεθεί ένας τρόπος εκτέλεσης του προγράμματος που θα μας ταιριάζει. Λοιπόν, πώς προγραμματίζεται ένας ελεγκτής PLC;

Οι γλώσσες προγραμματισμού ελεγκτών PLC έγιναν αντικείμενο της προτύπου IEC 61131 που δημοσιεύθηκε το 2013. Στο μέρος 3 αυτού του προτύπου περιλαμβάνονται συστάσεις σχετικά με τις γλώσσες και τις μεθόδους προγραμματισμού των ελεγκτών PLC. Εκτός από τους τύπους δεδομένων, τις μεταβλητές, τη διαμόρφωση και τον τρόπο περιγραφής της, τις μονάδες οργάνωσης προγράμματος και τις αρχές αντικειμενοστραφούς προγραμματισμού, αναφέρονται 5 βασικές γλώσσες προγραμματισμού ελεγκτών PLC και ορίζονται οι απαιτήσεις για τη λειτουργικότητά τους. Λόγω αυτού του προτύπου, οι βασικές γλώσσες προγραμματισμού που χρησιμοποιούν οι προγραμματιστές PLC είναι:

Σκάλα LD (LAD)

Η πιο δημοφιλής και διαθέσιμη σε όλα τα περιβάλλοντα για τη δημιουργία προγραμμάτων για PLC είναι η γλώσσα σκάλας LD (ή LAD). Είναι μια γραφική γλώσσα, ωστόσο χρησιμοποιεί απλούς συμβολισμούς, οπότε σε παλαιότερες λύσεις χρησιμοποιούνταν ημιγραφικά που δημιουργούνταν με τη βοήθεια τυπικών χαρακτήρων ASCII. Αυτοί οι χαρακτήρες ήταν εύκολοι να παρουσιαστούν και στην οθόνη του PLC, επιτρέποντας τη δημιουργία απλούστερων προγραμμάτων ad hoc, χωρίς τη χρήση υπολογιστή PC. Σε αυτή τη γλώσσα δημιουργείται το διάγραμμα του προγράμματος με τη βοήθεια συμβόλων παρόμοιων με αυτά που χρησιμοποιούνται στα ηλεκτρικά διαγράμματα – πηνία και επαφές. Οι επαφές μπορεί να είναι κανονικά ανοιχτές (NO) ή κανονικά κλειστές (NC), ενώ τα πηνία μπορεί να έχουν διάφορες λειτουργικότητες, όπως ρύθμιση, μηδενισμό ή άρνηση. Εδώ μπορούν επίσης να ενσωματωθούν λειτουργίες και ολόκληρα λειτουργικά μπλοκ, όπως χρονοδιακόπτες, μετρητές ή flip-flops. Η γλώσσα σκάλας είναι κατανοητή ακόμη και για τον άπειρο προγραμματιστή.

Εικόνα 1. Απόσπασμα προγράμματος στη γλώσσα σκάλας LD (LAD)

Διάγραμμα λειτουργικών μπλοκ FBD

Ένας άλλος πολύ διαισθητικός τρόπος προγραμματισμού, ειδικά για άτομα που γνωρίζουν την ψηφιακή τεχνική, είναι το διάγραμμα λειτουργικών μπλοκ FBD. Ένα παράδειγμα αποσπάσματος "κώδικα" που εκτελείται με τη χρήση FBD φαίνεται στην εικόνα 2. Οι διάφορες εισόδοι, έξοδοι και λειτουργίες αντιπροσωπεύονται από λειτουργικά μπλοκ και πύλες, που δεν εκτελούν μόνο λογικές λειτουργίες, αλλά είναι επίσης σε θέση να επεξεργάζονται σήματα σύμφωνα με τον καθορισμένο αλγόριθμο. Μεταξύ των λειτουργικών μπλοκ είναι ρυθμιστές PID, μια ευρεία γκάμα γεννητριών κυμάτων, μετρητών και άλλων. Ορισμένα προγραμματιστικά περιβάλλοντα επιτρέπουν επίσης τον ορισμό δικών σας μπλοκ με την απαιτούμενη λειτουργικότητα. Το FBD είναι μια γραφική γλώσσα. Τα διάφορα μπλοκ τοποθετούνται στο διάγραμμα και συνδέονται μεταξύ τους, κάτι που θυμίζει τη σχεδίαση λογικών κυκλωμάτων. Ορισμένα προγραμματιστικά περιβάλλοντα επιτρέπουν όχι μόνο τη σύνδεση εισόδων/εξόδων, αλλά και τη δημιουργία διαύλων και αναφορών που μεταφέρουν μια σειρά παραμέτρων (στην εικόνα 2, οι δίαυλοι αντιπροσωπεύονται από έντονες γραμμές – εδώ μεταφέρουν πολυμπιτικές σταθερές και μεταβλητές).

Εικόνα 2. Παράδειγμα αποσπάσματος προγράμματος που εκτελείται με τη χρήση FBD

Δομημένη γλώσσα κειμένου ST

Η δομημένη γλώσσα κειμένου ST είναι μια γλώσσα υψηλού επιπέδου, που θυμίζει την κάποτε πολύ δημοφιλή γλώσσα Pascal. Επιτρέπει πιο σύνθετες λειτουργίες, των οποίων η εγγραφή δεν περιορίζεται από το μπλέξιμο γραμμών στην οθόνη και τη δυνατότητα εκτέλεσής τους όπως στην περίπτωση του FBD, κάτι που συχνά απαιτεί μεγάλη οθόνη με καλή ανάλυση. Ο προγραμματισμός στο ST θυμίζει τη δημιουργία κώδικα σε παραδοσιακές γλώσσες προγραμματισμού για υπολογιστές PC. Υποστηρίζονται σύνθετες εντολές, όπως οι βρόχοι repeat…until, do…while, οι εντολές συνθήκης if…then…else, case και οι μαθηματικές συναρτήσεις sqrt(), sin(). Σημαντικό είναι ότι, ανεξάρτητα από τον κατασκευαστή του εξοπλισμού ή του περιβάλλοντος, οι λειτουργίες της γλώσσας ST είναι κοινές για αυτούς και έχουν οριστεί στο πρότυπο IEC 61131. Επειδή το προαναφερθέν πρότυπο επιτρέπει τη σύνδεση των γλωσσών που αναφέρονται σε αυτό, η γλώσσα ST μπορεί επίσης να χρησιμοποιηθεί για τη δημιουργία "εισαγωγών" ή μη τυπικών μπλοκ FBD.

Listing 1. Παράδειγμα συνάρτησης που εκτελείται στη γλώσσα ST 
//=======================================================================
// Function Block Timed Counter :  Incremental count of the timed interval
//=======================================================================
FUNCTION_BLOCK FB_Timed_Counter
    VAR_INPUT
        //Trigger signal to begin Timed Counting
        Execute     : BOOL := FALSE;
        //Enter Cycle Time (Seconds) between counts 
        Time_Increment  : REAL := 1.25;
        //Number of Desired Count Cycles
        Count_Cycles    : INT  := 20;
    END_VAR

VAR_OUTPUT
        //One Shot Bit indicating Timer Cycle Done
        Timer_Done_Bit  : BOOL := FALSE;
        //Output Bit indicating the Count is complete
        Count_Complete  : BOOL := FALSE;
        //Accumulating Value of Counter
        Current_Count   : INT  := 0;
END_VAR

VAR
        //Timer FB from Command Library
        CycleTimer      : TON;
        //Counter FB from Command Library
        CycleCounter    : CTU;
        //Converted Time_Increment in Seconds to MS
        TimerPreset : TIME;
    END_VAR

    // Start of Function Block programming
    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);

        Current_Count := CycleCounter.cv;
        Count_Complete := CycleCounter.q;
END_FUNCTION_BLOCK

Διάγραμμα ακολουθιακών λειτουργιών SFC

Το διάγραμμα ακολουθιακών λειτουργιών είναι μια άλλη από τις γραφικές γλώσσες προγραμματισμού. Το πρότυπό του ήταν η γλώσσα GRAFCET που βασίζεται στα δυαδικά δίκτυα Petri. Επιτρέπει την περιγραφή της ακολουθίας βημάτων (ενεργειών) που πρέπει να εκτελεστούν με αυστηρά καθορισμένη σειρά. Είναι ιδιαίτερα χρήσιμο για τη δημιουργία προγραμμάτων για τη διαχείριση διαδικασιών που απαιτούν συγχρονισμό ή διαδικασιών που μπορούν να χωριστούν σε στάδια. Τα κύρια συστατικά του προγράμματος στο SFC είναι: βήματα (στάδια) συνδεδεμένα με ενέργειες, μεταβάσεις συνδεδεμένες με λογικές συνθήκες, άμεσες συνδέσεις μεταξύ βημάτων και μεταβάσεων.

Συχνά η γλώσσα SFC συνδυάζεται με άλλη μέθοδο προγραμματισμού, όπως η σκάλα LD. Το SFC είναι από τη φύση του μια γλώσσα προγραμματισμού ταυτόχρονης εκτέλεσης, στην οποία μπορεί να είναι ταυτόχρονα ενεργές πολλές POU (Program Organization Units), δηλαδή μονάδες που ελέγχουν τη ροή. Ορισμένα περιβάλλοντα επιτρέπουν επίσης τη δημιουργία μακροενεργειών, δηλαδή ενεργειών εντός POU που επηρεάζουν την κατάσταση άλλου POU. Με αυτόν τον τρόπο, ένα POU μπορεί να αποφασίσει για τα ενεργά βήματα που λαμβάνονται από άλλα POU.

Εικόνα 3. Παράδειγμα αποσπάσματος προγράμματος στη γλώσσα SFC

Λίστα εντολών IL

Η λίστα εντολών θεωρείται πλέον παρωχημένος τρόπος προγραμματισμού. Αυτή η γλώσσα θυμίζει λίγο τον assembler, αλλά παρά την εφαρμογή της για διάφορους ελεγκτές PLC εξοπλισμένους με διαφορετικούς επεξεργαστές, η γλώσσα IL είναι ανεξάρτητη από τον τύπο του χρησιμοποιούμενου επεξεργαστή. Όπως ο assembler, αποτελείται από πολύ απλές εντολές, ενώ πιο σύνθετες λειτουργίες απαιτούν τη χρήση πολλών από αυτές. Ο έλεγχος της εκτέλεσης του προγράμματος πραγματοποιείται μέσω εντολών άλματος και κλήσης υποπρογραμμάτων.

Πολλοί κατασκευαστές ελεγκτών, παρά την πλήρη συμμόρφωση του προσφερόμενου εξοπλισμού και λογισμικού με το πρότυπο IEC 61131-3, προσφέρουν επιπλέον κλήσεις/λειτουργικά μπλοκ, ειδικά για τον συγκεκριμένο προμηθευτή και προσαρμοσμένα στον προσφερόμενο εξοπλισμό, όπως ανάγνωση ή εγγραφή σε εισόδους/εξόδους. Για παράδειγμα, η γλώσσα IL που προορίζεται για ελεγκτές PLC της εταιρείας Siemens ονομάστηκε "Statement List" ή "STL" στα αγγλικά και "Anweisungs-Liste" ή "AWL" στα γερμανικά. Το γερμανικό όνομα μεταφέρθηκε επίσης στις εθνικές εκδόσεις του περιβάλλοντος εκτέλεσης στις ιταλικές και ισπανικές γλώσσες. Ο χρήστης του πακέτου Simatic μπορεί να επιλέξει μεταξύ γερμανικών και διεθνών μνημονικών για την αναπαράσταση εντολών. Για παράδειγμα, το "A" σημαίνει "AND" ή "U" σημαίνει "UND", το "I" σημαίνει "Είσοδος" ή "E" σημαίνει "Eingang" κ.λπ.

Listing 2. Παράδειγμα αποσπάσματος προγράμματος στη γλώσσα IL
        LD      Speed
        GT      2000
        JMPCN       VOLTS_OK
        LD      Volts
VOLTS_OK    LD      1
        ST      %Q75

Ποια γλώσσα είναι η καλύτερη; Εξαρτάται…

Ο σκοπός αυτού του κειμένου δεν είναι να διδάξει τον προγραμματισμό ελεγκτών PLC, αλλά να επισημάνει ορισμένες δυνατότητες και επιλογές για επιλογή. Κάθε προγραμματιστής PLC θα πρέπει να επιλέξει τη μέθοδο που είναι πιο κατάλληλη για τις ανάγκες του ή να τις συνδυάσει ανάλογα με την εφαρμογή. Για παράδειγμα, το διάγραμμα FBD πιθανότατα θα αρέσει στους χρήστες που γνωρίζουν και κατανοούν τα λογικά κυκλώματα, ενώ η σκάλα LD θα είναι χρήσιμη για τον προγραμματισμό απλούστερων ακολουθιών ελέγχου. Από την άλλη πλευρά, οι γλώσσες ST και SFC είναι κατάλληλες για τον προγραμματισμό σύνθετων διαδικασιών, αν και π.χ. η γλώσσα ST έχει εφαρμοστεί στον μικροελεγκτή PLC Easy της εταιρείας Eaton, και αυτός μάλλον θα είναι χρήσιμος για την υλοποίηση απλούστερων, λιγότερο απαιτητικών λειτουργιών ελέγχου και παρακολούθησης. Από την άλλη πλευρά, δεν υπάρχουν συστάσεις που να λένε ποια γλώσσα μπορεί να χρησιμοποιηθεί για τι, ποια είναι κατάλληλη για τι. Με μικρότερη ή μεγαλύτερη προσπάθεια, χρησιμοποιώντας οποιαδήποτε από τις μεθόδους που συζητήθηκαν, μπορεί να δημιουργηθεί το κατάλληλο λογισμικό. Η καλύτερη επιλογή φαίνεται να είναι ο συνδυασμός γλωσσών ανάλογα με τις ανάγκες και για την επίτευξη της μέγιστης αναγνωσιμότητας της εφαρμογής.

Η Transfer Multisort Elektronik (TME) είναι ένας από τους μεγαλύτερους παγκόσμιους διανομείς ηλεκτρονικών εξαρτημάτων, ηλεκτροτεχνικών μερών, εξοπλισμού εργαστηρίου και βιομηχανικής αυτοματοποίησης. Ο κατάλογος περιλαμβάνει πάνω από 1.500.000 προϊόντα από 1.300 κορυφαίους κατασκευαστές. Τα σύγχρονα κέντρα logistics της TME στη Λοτζ και τη Ρζγκόβ (Πολωνία), με συνολική έκταση άνω των 40.000 τ.μ., αποστέλλουν καθημερινά σχεδόν 6.000 πακέτα σε πελάτες σε περισσότερες από 150 χώρες.

Η TME επενδύει επίσης στην ανάπτυξη γνώσεων και δεξιοτήτων νέων μηχανικών και φίλων της ηλεκτρονικής μέσω του έργου TME Education και υποστηρίζει την τεχνολογική κοινότητα διοργανώνοντας τη σειρά εκδηλώσεων TechMasterEvent, προωθώντας την καινοτομία και την ανταλλαγή εμπειριών.

rightColumnPicture rightColumnPicture

ΔΙΑΒΆΣΤΕ ΕΠΊΣΗΣ