Jump to content
  • Sign in to follow this  

    SPS-Speicherzuordnung und E/A-Adressierung

       (0 reviews)

    xiangjinjiao

    Ein kluger SPS-Programmierer hat mir einmal gesagt, dass das Erste, was jeder angehende Programmierer über die SPS, die er programmieren möchte, lernen sollte, ist, wie der digitale Speicher dieser SPS organisiert ist. Dies ist ein weiser Ratschlag für jeden Programmierer, insbesondere bei Systemen mit begrenztem Speicher und/oder bei denen E/A eine feste Verbindung zu bestimmten Speicherstellen des Systems haben.

    Nahezu jedes mikroprozessorbasierte Steuerungssystem wird mit einer veröffentlichten Speicherzuordnung geliefert, die die Organisation seines begrenzten Speichers zeigt: wie viel ist für bestimmte Funktionen verfügbar, welche Adressen sind mit welchen E/A-Punkten verknüpft, wie unterschiedliche Speicherstellen vom Programmierer referenziert werden sollen.

    Diskrete Eingangs- und Ausgangskanäle einer SPS entsprechen einzelnen Bits im Speicherarray der SPS. Ebenso entsprechen analoge Eingangs- und Ausgangskanäle einer SPS Mehrbitwörtern (zusammenhängenden Bitblöcken) im Speicher der SPS.

    Die Verbindung zwischen E/A-Punkten und Speicherorten ist bei den verschiedenen SPS-Herstellern oder sogar bei den verschiedenen SPS-Modellen desselben Herstellers keineswegs standardisiert. Dies erschwert das Verfassen eines allgemeinen Tutorials zur SPS-Adressierung, und daher ist mein ultimativer Rat, die technischen Referenzen für das SPS-System zu konsultieren, das Sie programmieren möchten.

    Die am häufigsten verwendete SPS-Marke ist Allen-Bradley (Rockwell), die zufällig eine einzigartige Form der E/A-Adressierung verwendet (Anmerkung 1), die Studenten oft verwirrend finden. Aus diesen beiden Gründen (Beliebtheit und Verwirrung) werde ich mich im Großteil dieses Abschnitts auf die Adressierungskonventionen von Allen-Bradley konzentrieren.

    Anmerkung 1: Die modernsten SPS von Allen-Bradley haben die E/A-Adressierung mit festem Standort fast vollständig abgeschafft und sich stattdessen für eine E/A-Adressierung auf Basis von Tag-Namen entschieden. Es gibt jedoch noch genügend ältere SPS-Systeme von Allen-Bradley in der Industrie, um eine Behandlung dieser Adressierungskonventionen zu rechtfertigen.

    SPS-Speicherplan

    Die folgende Tabelle zeigt einen Teil des Speicherplans für eine Allen-Bradley SLC 500 SPS

    33-1.gif

    Speicherplan, auch Datentabelle genannt. Dieser Plan zeigt die Adressierung von Speicherbereichen, die für vom Benutzer eingegebene Programme reserviert sind. Innerhalb des SLC 500-Prozessors gibt es noch andere Speicherbereiche, auf die der Techniker, der SPS-Programme schreibt, jedoch keinen Zugriff hat.

    Beachten Sie, dass Allen-Bradley das Wort „Datei“ anders verwendet als die PC-Sprache. Im SLC 500-Controller ist eine „Datei“ ein Block Direktzugriffsspeicher, der zum Speichern eines bestimmten Datentyps verwendet wird.

    Im Gegensatz dazu ist eine „Datei“ in einem PC eine zusammenhängende Sammlung von Datenbits mit gemeinsamer Bedeutung (z. B. eine Textverarbeitungsdatei oder eine Tabellenkalkulationsdatei), die normalerweise auf der Festplatte des Computers gespeichert sind.

    In jeder der „Dateien“ der Allen-Bradley-SPS befinden sich mehrere „Elemente“, wobei jedes Element aus einer Reihe von Bits (8, 16, 24 oder 32) besteht, die Daten darstellen.

    Elemente werden durch eine Nummer nach dem Doppelpunkt nach der Dateibezeichnung adressiert, und einzelne Bits innerhalb jedes Elements werden durch eine Nummer nach einem Schrägstrich adressiert. Beispielsweise würde das erste Bit (Bit 0) des zweiten Elements in Datei 3 (Binär) als B3:2/0 adressiert.

    In Allen-Bradley-SPS wie den Modellen SLC 500 und PLC-5 sind die Dateien 0, 1 und 2 ausschließlich für diskrete Ausgänge, diskrete Eingänge bzw. Statusbits reserviert.

    Daher sind die Buchstabenbezeichnungen O, I und S (Dateitypen) redundant zu den Zahlen 0, 1 und 2 (Dateinummern).

    Andere Dateitypen wie B (binär), T (Timer), C (Zähler) und andere haben ihre eigenen Standarddateinummern (3, 4 bzw. 5), können aber auch in einigen der benutzerdefinierten Dateinummern (10 und höher) verwendet werden.

    Beispielsweise ist Datei 7 in einem Allen-Bradley-Controller für Daten des Typs „Integer“ (N) reserviert, aber Integer-Daten können nach Ermessen des Benutzers auch in jeder Datei mit der Nummer 10 oder höher gespeichert werden.

    Daher erscheinen Dateinummern und Dateitypbuchstaben für andere Datentypen als Ausgabe (O), Eingabe (I) und Status (S) immer zusammen.

    Sie würden beispielsweise ein ganzzahliges Wort nicht als N:30 (ganzzahliges Wort 30 im Speicher der SPS) adressiert sehen, sondern als N7:30 (ganzzahliges Wort 30 in Datei 7 des Speichers der SPS), um es von anderen ganzzahligen Wörtern 30 zu unterscheiden, die in anderen Dateien des Speichers der SPS vorhanden sein können.

    Diese dateibasierte Adressierungsnotation bedarf einer weiteren Erklärung. Wenn eine Adresse in einem SPS-Programm erscheint, werden Sonderzeichen verwendet, um verschiedene Felder voneinander zu trennen (oder „abzugrenzen“).

    Das allgemeine Schema für Allen-Bradley SLC 500-SPS wird hier gezeigt:

    33-2.gif

    Nicht alle Dateitypen müssen einzelne Wörter und Bits unterscheiden. Ganzzahlige Dateien (N) bestehen beispielsweise aus einem 16-Bit-Wort für jedes Element. Beispielsweise wäre N7:5 das 16-Bit-Integer-Wort Nummer fünf, das in Datei sieben gespeichert ist.

    Ein diskreter Eingabedateityp (I) muss jedoch als einzelne Bits angesprochen werden, da sich jeder einzelne E/A-Punkt auf ein einzelnes Bit bezieht. Somit wäre I:3/7 das Bit Nummer sieben, das sich im Eingabeelement drei befindet.

    Das Schrägstrichsymbol ist erforderlich, wenn diskrete E/A-Bits angesprochen werden, da wir uns nicht auf alle sechzehn Bits in einem Wort beziehen möchten, wenn wir nur einen einzigen Eingangs- oder Ausgangspunkt auf der SPS meinen.

    Im Gegensatz dazu sind Ganzzahlen Sammlungen von jeweils 16 Bits in der Speicherzuordnung des SLC 500 und werden daher normalerweise als ganze Wörter und nicht Bit für Bit angesprochen.

    Bestimmte Dateitypen wie Timer sind komplexer. Jedes Timer-„Element“ besteht aus zwei verschiedenen 16-Bit-Wörtern (eines für den kumulierten Wert des Timers, das andere für den Zielwert des Timers) sowie aus mindestens drei Bits, die den Status des Timers angeben (ein „Aktiviert“-Bit, ein „Timing“-Bit und ein „Fertig“-Bit).

    Daher müssen wir sowohl das Dezimalkomma als auch den Schrägstrich als Trennzeichen verwenden, wenn wir uns auf Daten innerhalb eines Timers beziehen. Angenommen, wir haben in unserem SPS-Programm einen Timer mit der Adresse T4:2 deklariert, was Timer Nummer zwei in Timerdatei vier wäre.

    Wenn wir den aktuellen Wert dieses Timers adressieren möchten, würden wir dies als T4:2.ACC tun (das „Akkumulator“-Wort von Timer Nummer zwei in Datei vier). Das „Done“-Bit desselben Timers würde als T4:2/DN adressiert (das „Done“-Bit von Timer Nummer zwei in Datei vier)

    Ein Kennzeichen des Adressierungsschemas des SLC 500, das vielen älteren SPS-Systemen gemeinsam ist, ist, dass die Adressbezeichnungen für Eingangs- und Ausgangsbits explizit auf die physischen Standorte der E/A-Kanäle verweisen.

    Wenn beispielsweise eine 8-Kanal-Diskreteingangskarte in Steckplatz 4 einer Allen Bradley SLC 500 SPS eingesteckt wäre und Sie das zweite Bit (Bit 1 aus einem Bereich von 0 bis 7) angeben möchten, würden Sie es mit der folgenden Bezeichnung ansprechen: I:4/1.

    Um das siebte Bit (Bitnummer 6) auf einer in Steckplatz 3 eingesteckten Diskretausgangskarte anzusprechen, wäre die Bezeichnung O:3/6 erforderlich. In beiden Fällen sagt Ihnen die numerische Struktur dieser Bezeichnung genau, wo das reale Eingangssignal mit der SPS verbunden ist.

    Beispiel für SPS-Speicherzuordnung

    Um die Beziehung zwischen physischen E/A und Bits im Speicher der SPS zu veranschaulichen, betrachten Sie dieses Beispiel einer Allen-Bradley SLC 500 SPS, bei der einer ihrer diskreten Eingangskanäle aktiviert ist (der Schalter wird als „Start“-Schalter für einen Elektromotor verwendet):

    33-3.gif

    Wenn eine Eingangs- oder Ausgangskarte mehr als 16 Bits besitzt – wie im Fall der 32-Bit-diskreten Ausgangskarte, die in Steckplatz 3 des Beispiel-SLC 500-Racks gezeigt ist –, unterteilt das Adressierungsschema jedes Element weiter in Wörter und Bits (jedes „Wort“ ist 16 Bits lang).

    Somit wäre die Adresse für Bit Nummer 27 eines in Steckplatz 3 eingesteckten 32-Bit-Eingabemoduls I:3.1/11 (da Bit 27 Bit 11 von Wort 1 entspricht – Wort 0 adressiert die Bits 0 bis 15 und Wort 1 adressiert die Bits 16 bis 31):

    33-4.gif

    Eine Nahaufnahme einer 32-Bit-DC-Eingabekarte für ein Allen-Bradley SLC 500 PLC-System zeigt diese Mehrwortadressierung:

    33-5.gif

    Die ersten sechzehn Eingabepunkte auf dieser Karte (die linke LED-Gruppe mit den Nummern 0 bis 15) werden von I:X.0/0 bis I:X.0/15 adressiert, wobei „X“ sich auf die Steckplatznummer bezieht, in die die Karte eingesteckt ist. Die nächsten sechzehn Eingangspunkte (die rechte LED-Gruppe mit den Nummern 16 bis 31) werden mit I:X.1/0 bis I:X.1/15 adressiert.

    Ältere SPS-Systeme verweisen normalerweise auf jeden der E/A-Kanäle mit Bezeichnungen wie „I:1/3“ (oder Ähnlichem), die den tatsächlichen Standort des Eingangskanalanschlusses auf der SPS-Einheit angeben.

    Der Programmierstandard IEC 61131-3 bezeichnet diese kanalbasierte Adressierung von E/A-Datenpunkten als direkte Adressierung. Ein Synonym für direkte Adressierung ist absolute Adressierung.

    Die direkte Adressierung von E/A-Bits über ihre Karten-, Steckplatz- und/oder Anschlussbezeichnungen mag einfach und elegant erscheinen, wird jedoch bei großen SPS-Systemen und komplexen Programmen sehr umständlich.

    Jedes Mal, wenn ein Techniker oder Programmierer das Programm betrachtet, muss er jede dieser E/A-Beschriftungen in ein reales Gerät „übersetzen“ (z. B. „Eingang I:1/3 ist eigentlich der Start-Druckknopf für den Mischmotor des mittleren Tanks“), um die Funktion dieses Bits zu verstehen.

    Ein späterer Versuch, die Übersichtlichkeit der SPS-Programmierung zu verbessern, war das Konzept, Variablen im Speicher einer SPS mit beliebigen Namen statt mit festen Codes zu adressieren.

    Der Programmierstandard IEC 61131-3 bezeichnet dies als symbolische Adressierung im Gegensatz zur „direkten“ (kanalbasierten) Adressierung, wodurch Programmierer E/A-Kanäle beliebig auf eine Weise benennen können, die für das gesamte System sinnvoll ist.

    Um unser einfaches Beispiel des Motor-„Start“-Schalters zu verwenden: Der Programmierer kann nun den Eingang I:1/3 (ein Beispiel für eine direkte Adresse) innerhalb des Programms als „Motorstartschalter“ (ein Beispiel für eine symbolische Adresse) bezeichnen, wodurch die Lesbarkeit des SPS-Programms erheblich verbessert wird.

    Bei den ersten Implementierungen dieses Konzepts wurden direkte Adressen für E/A-Datenpunkte beibehalten, wobei symbolische Namen als Ergänzung zu den absoluten Adressen erschienen.

    Der moderne Trend bei der SPS-Adressierung besteht darin, die Verwendung direkter Adressen wie I:1/3 vollständig zu vermeiden, sodass sie nirgendwo im Programmiercode erscheinen.

    Die Allen-Bradley „Logix“-Reihe speicherprogrammierbarer Steuerungen ist zum Zeitpunkt des Schreibens dieses Artikels das prominenteste Beispiel für diese neue Konvention.

    Jedem E/A-Punkt, unabhängig von Typ oder physischem Standort, wird ein Tag-Name zugewiesen, der in der realen Welt sinnvoll ist, und diese Tag-Namen (oder Symbole, wie sie alternativ genannt werden) werden durch eine Datenbankdatei auf absolute E/A-Kanalstandorte referenziert.

    Eine wichtige Anforderung an Tag-Namen ist, dass sie keine Leerzeichen zwischen Wörtern enthalten (z. B. sollte ein Tag-Name anstelle von „Motorstartschalter“ Bindestriche oder Unterstriche als Abstandszeichen verwenden: „Motorstartschalter“), da Leerzeichen in Computerprogrammiersprachen im Allgemeinen als Trennzeichen (Trennzeichen zwischen verschiedenen Variablen) angesehen werden.

    Nachdem ich Allen-Bradleys Adressierungsnotation für SPS des Modells SLC 500 eingeführt habe, werde ich sie nun zugunsten der modernen Konvention der symbolischen Adressierung in den restlichen Artikeln aufgeben, um zu vermeiden, dass die Programmierbeispiele marken- oder modellspezifisch werden. Jeder Datenpunkt in meinen SPS-Programmen trägt seinen eigenen Tag-Namen und nicht eine direkte (kanalbasierte) Adressbezeichnung.

    Sign in to follow this  



    User Feedback

    Create an account or sign in to leave a review

    You need to be a member in order to leave a review

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

    There are no reviews to display.


Apply for friendship links:WhatsApp or E-mail: admin@plchmis.com
×
×
  • Create New...