Jump to content

leikang

Staff group
  • Content Count

    189
  • Joined

  • Last visited

Everything posted by leikang

  1. Dies ist ein SPS-Programm zur automatischen Parameterinitialisierung beim Einschalten. Parameterinitialisierung beim Einschalten Problembeschreibung In vielen Anwendungen ist es notwendig, einige Daten beim Einschalten der Maschine zu initialisieren. Manchmal wird der Wert einiger Parameter aufgrund eines Stromausfalls auf Null gesetzt. Aufgrund dieses Problems muss der Bediener alle Daten erneut oder jedes Mal während eines Stromausfalls eingeben. Wenn die Maschine eingeschaltet wird, sollten zu diesem Zeitpunkt die erforderlichen Parameter automatisch initialisiert werden. Hier diskutieren wir dieses Problem mit einer grundlegenden Leiterlogik. Problemdiagramm Problemlösung In diesem Fall müssen wir die Logik in das SPS-Programm schreiben, damit alle Parameter automatisch initialisiert werden. Wir können auch eine manuelle Initialisierungstaste einrichten, damit der Bediener Daten initialisieren kann, während die Maschine läuft. Hier betrachten wir die eingestellte Maschinengeschwindigkeit als Daten und sie wird automatisch initialisiert, wenn die Maschine eingeschaltet wird. Wenn der Bediener die eingestellte Geschwindigkeit während des laufenden Zyklus neu initialisieren möchte, muss er dies über die Initialisierungstaste tun. SPS-Kontaktplan Hier ist das PLC-Programm Automatische Parameterinitialisierung beim Einschalten. Liste der PLC-Ein-/Ausgänge Eingabeliste Parameterinitialisierungstaste: I0.0 MW10: Geschwindigkeit vom Display einstellen Ausgabeliste Mw12: Geschwindigkeit für Antrieb Programmbeschreibung Für diese Anwendung verwenden wir S7-1200 PLC und TIA-Portalsoftware zur Programmierung. Diese Logik wird für die Parameterinitialisierung verwendet. Für den ersten Scan haben wir hier S7-1200-Einrichtungen des Systemspeichers verwendet. Jede PLC hat ihren eigenen Systemspeicher. Immer EIN-Bit, immer AUS-Bit, erstes Scan-Bit und geänderter Diagnosestatus sind der Systemspeicher für S7-1200 PLC. Wir können jede Speicheradresse „M“ für den Systemspeicher konfigurieren. Hier haben wir M1.0 für das erste Scan-Bit konfiguriert, das für die Parameterinitialisierung verwendet wird. Wir schreiben für die Parameterinitialisierung in Netzwerk 1. Hier verwenden wir den NO-Kontakt des ersten Scan-Bits (M1.0), um die anfänglichen 5 U/min in MW12 (Geschwindigkeit für Antrieb) zu bewegen. Durch Verwendung der MOVE-Anweisung werden 5 U/min in MW12 bewegt. Fügen Sie den NO-Kontakt der Parameterinitialisierungstaste (I0.0) hinzu, um die anfänglichen 5 U/min in MW12 (Geschwindigkeit für Antrieb) manuell zu bewegen. Um Daten im laufenden Zyklus manuell zu bearbeiten, schreiben wir die Logik in Netzwerk 2. Hier kann der Bediener Daten in MW10 (DREHZAHL EINSTELLEN) vom Display aus eingeben und sie gehen in MW12 (Geschwindigkeit für Antrieb). Angenommen, wir müssen eine Geschwindigkeit von 100 U/min vom Display aus eingeben, wird dies in das Wort MW10 (Geschwindigkeit vom Display einstellen) geschrieben und gemäß der Logik in MW12 (Geschwindigkeit für Antrieb) bewegt, sodass der Motor mit 100 U/min läuft. Laufzeittestfälle Hinweis: Die obige SPS-Logik bietet eine grundlegende Vorstellung von der Anwendung eines SPS-Programms zur automatischen Parameterinitialisierung beim Einschalten. Die Logik ist begrenzt und keine vollständige Anwendung.
  2. Dies ist ein SPS-Programm für Sperr- und Entsperrschaltung für die Ausgabe. SPS-Sperr- und Entsperrschaltung Problembeschreibung In einigen Fördersystemen füllt der Bediener den Tank manuell, indem er die Wasserpumpe manuell bedient. In dieser Situation wartet der Bediener, während der Tank gefüllt wird, denn wenn der Tank einen hohen Pegel erreicht, sollte die Wasserpumpe gestoppt werden. Außerdem sollte die Wasserpumpe eingeschaltet bleiben, bis der Tank einen hohen Pegel erreicht. In diesem Artikel betrachten wir beispielsweise ein manuelles Wasserfördersystem. Problemdiagramm Problemlösung In diesem Beispiel betrachten wir einen Speichertank für Wasser und verwenden eine Wasserpumpe zum Befüllen des Tanks. Wir verwenden auch einen Füllstandssensor für den hohen Pegel und ein Bedienfeld für den Bediener. Hier START PB zum Aktivieren des Motors, damit wir das Wasser in den Tank leiten können, zum Stoppen des Motors verwenden wir STOP PB. Füllstandssensor zur Erkennung eines hohen Füllstands. Wenn der Tank voll ist, wird der Hochstandssensor aktiviert und stoppt die Wasserpumpe. Für diese Sequenz verwenden wir die Anweisungen SET und RESET zum Verriegeln und Entriegeln der Wasserpumpe. Wir können diesen Schaltkreis mit einzelnen Relais erstellen. In der Anwendung gibt es nur ein manuelles Ablassventil zum manuellen Entleeren des Tanks. Wir werden die Logik nicht berücksichtigen. Liste der SPS-Eingänge START PB: I0.0 STOP PB: I0.1 HOCHSTANDSENSOR: I0.2 NIEDRIGSTANDSENSOR: I0.3 Liste der SPS-Ausgänge WASSERPUMPE: I0.0 SPS-Leiterdiagramm für verriegelnden und entriegelten Schaltkreis Programmbeschreibung Für diese Anwendung verwenden wir S7-1200 PLC und TIA-Portalsoftware zur Programmierung. Wir können diesen Schaltkreis oder diese Logik auch mit Relais erstellen. Dieser Schaltkreis oder diese Logik wird als verriegelnder und entriegelnder Schaltkreis oder Logik bezeichnet. Wir schreiben die Logik für die Wasserpumpe in Netzwerk 1. Hier verwenden wir den Schließerkontakt von START PB (I0.0), um die Wasserpumpe (Q0.0) zu aktivieren. Durch Verwendung des SET-Befehls wird die Ausgangsspule der Wasserpumpe (Q0.0) verriegelt. Fügen Sie den Schließerkontakt des NIEDRIGEN FÜLLSTANDSENSORS (I0.3) in Reihe mit dem Wasserpumpenausgang (Q0.0) hinzu. Die Wasserpumpe sollte nicht starten, wenn der Tank voll ist. Verwenden Sie daher aus Sicherheitsgründen einen Schließerkontakt des NIEDRIGEN FÜLLSTANDSENSORS (I0.3) in Reihe nach START PB (I0.0) in Netzwerk 1. Jetzt wird der HOCHFÜLLSTANDSENSOR (I0.2) nach einiger Zeit des Pumpenbetriebs erkannt und in diesem Fall sollte die Wasserpumpe (Q0.0) automatisch gestoppt werden. Zu diesem Zweck müssen wir den Schaltkreis entriegeln. Wir schreiben die Logik für das Entriegeln des Schaltkreises in Netzwerk 2. In diesem Fall verwenden wir den Schließerkontakt des HOCHFÜLLSTANDSENSOR (I0.3), um den Schaltkreis durch Verwendung des RESET-Befehls zu entriegeln. Fügen Sie einen Schließerkontakt von STOP PB (I0.1) in Parallelschaltung hinzu, damit der Bediener den Schaltkreis durch Drücken von STOP PB (I0.1) entriegeln kann. Hier verriegeln wir den Schaltkreis mit dem SET-Befehl und entriegeln ihn mit dem RESET-Befehl. Laufzeittestfälle Hinweis: Die obige SPS-Logik liefert eine grundlegende Vorstellung von der Anwendung eines SPS-Programms zum Verriegeln und Entriegeln von Schaltkreisen. Die Logik ist begrenzt und stellt keine vollständige Anwendung dar.
  3. Dies ist ein SPS-Programm zur Vorwärts- und Rückwärtssteuerung eines dreiphasigen Asynchronmotors. Dreiphasenmotorsteuerung mit SPS Problembeschreibung In der Industrie werden viele Motoren und Förderbänder für verschiedene Zwecke eingesetzt. In manchen Fällen müssen Motoren oder Förderbänder für Steuerungszwecke vorwärts und rückwärts betrieben werden. Zum Beispiel bei Brückenkränen: Bei Kranen bewegen Bediener sie jedes Mal vorwärts und rückwärts, um Material zu transportieren. Daher können wir SPS-Systeme verwenden, um den Motor für den Vorwärts-/Rückwärtsbetrieb zu programmieren. Problemdiagramm Problemlösung In diesem Fall müssen wir den Motor in beide Richtungen betreiben, was nur über einen Vorwärts-/Rückwärts-Steuerrelaiskreis oder über Logik möglich ist. Hier lösen wir dieses Problem, indem wir eine einfache Vorwärts-/Rückwärts-Steuerlogik in der SPS verwenden. Hier betrachten wir also einen Dreiphasenmotor für den Vorwärts- und Rückwärtsbetrieb. Und wir werden zwei Schütze oder Relais zur Motorsteuerung verwenden, da wir hier zwei verschiedene Richtungen benötigen, d. h. Vorwärts/Rückwärts. Erster Schütz für die Vorwärtsrichtungssteuerung und zweiter Schütz für die Rückwärtsrichtungssteuerung des Motors. Außerdem sollten wir drei Druckknöpfe in Betracht ziehen, d. h. für die Vorwärts-, Rückwärts- und Stoppfunktionen des Motors. Hier wird der Bediener also FWD PB für den Vorwärtsbetrieb, REV PB für den Rückwärtsbetrieb und STOP PB für die Stoppfunktion verwenden. Liste der SPS-Eingänge FWD PB: I0.0 REV: I0.1 STOP PB: I0.2 Motorauslösung: I0.3 Liste der SPS-Ausgänge Motor vorwärts: Q0.0 Motor rückwärts: Q0.1 SPS-Kontaktplandiagramm für die Vorwärts-/Rückwärtssteuerung des Motors Beschreibung der Kontaktplanlogik In dieser Anwendung werden wir Siemens S7-1200 PLC und TIA Portal Software zur Programmierung verwenden. Wir können diese Logik auch mit einem Relaiskreis entwerfen. Dieser Kreis ist auch als Vorwärts-/Rückwärtssteuerung für einen Drehstrom-Induktionsmotor bekannt. Wir schreiben die Logik für den Vorwärtszustand in Netzwerk 1. Hier verwenden wir den Schließerkontakt von FWD PB (I0.0) für den Vorwärtsbetrieb des Motors. Wir verwenden einen Druckknopf, also müssen wir einen Schließerkontakt der Motorvorwärtsausgangsspule (Q0.0) zum Verriegeln verwenden. (Der Druckknopf bietet nur einen kurzzeitigen Kontakt und wir müssen die Aktion verriegeln, also wird der Kontakt der Motorvorwärtsspule verwendet.) Schalten Sie den Öffnerkontakt des Motorrückwärtsausgangs (Q0.1) in Reihe, um den Kreis zu entriegeln, da Vorwärts- und Rückwärtsbetrieb nicht gleichzeitig laufen dürfen. Schreiben Sie nun die Logik für den Rückwärtszustand in Netzwerk 2. Hier nehmen wir den Schließerkontakt von REV PB (I0.2) für die Motorrückwärtsfunktion und nehmen außerdem einen weiteren Schließerkontakt der Motorrückwärtsausgangsspule (Q0.1) zum Verriegeln des Motorrückwärtsausgangs (QO.1). (Der Druckknopf bietet nur einen kurzzeitigen Kontakt und wir müssen die Aktion verriegeln, sodass der Kontakt der Vorwärtsspule des Motors verwendet wird.) Hier wird auch der NC-Kontakt der Vorwärtsausgangsspule des Motors (Q0.0) in Reihe geschaltet, um den Schaltkreis zu entriegeln, da Vorwärts- und Rückwärtslauf nicht gleichzeitig laufen dürfen. Zur Verriegelung wird der NC-Kontakt von FWD PB (I0.0) in Reihe mit REV PB (I0.2) geschaltet und der NC-Kontakt von REV PB (I0.2) in Reihe mit FWD PB (I0.0). Schalten Sie den NC-Kontakt in beiden Netzwerken in Reihe, sodass der Bediener die Vorwärts- oder Rückwärtsdrehung durch Drücken von STOP PB stoppen kann. Hier haben wir OLR zum Schutz des Motors verwendet, sodass wir zum Schutz des Motors den NC-Kontakt der Motorabschaltung (I0.3) in beiden Netzwerken in Reihe schalten. Laufzeittestfälle Hinweis: Die obige SPS-Logik bietet eine grundlegende Vorstellung von der Anwendung der SPS-Logik für die Steuerung von dreiphasigen Asynchronmotoren. Die Logik ist begrenzt und keine vollständige Anwendung.
  4. Schreiben Sie das folgende SPS-Programm, um die Ausgänge basierend auf Ereignissen zu aktivieren oder zu deaktivieren. Ein bestimmter Schalter (I:1/0) soll einen Prozess starten. Der Prozess soll 30 Sekunden lang laufen, 10 Sekunden lang anhalten und sich dann wiederholen, solange Schalter I:1/0 geschlossen bleibt. Das Öffnen von I:1/0 zu einem beliebigen Zeitpunkt soll alle Timer zurücksetzen und alle Ausgänge deaktivieren. Ausgang O:2/0 soll während der 30-sekündigen Laufzeit aktiviert werden und Ausgang O:2/1 soll während der 10-sekündigen Stoppphase aktiviert werden. Während der Laufzeit wird ein einzelner Ausgang O:2/2 durch Eingang I:1/1 gesteuert. Wenn I:1/1 geöffnet ist (zu Beginn der Laufzeit), soll O:2/2 die ersten 5 Sekunden ausgeschaltet und dann 10 Sekunden lang eingeschaltet sein. Wenn I:1/1 geschlossen ist (zu Beginn der Laufzeit), muss O:2/2 die ersten 10 Sekunden ausgeschaltet und dann 15 Sekunden eingeschaltet sein. Das Ändern von I:1/1 nach Beginn der Laufzeit sollte die obige Sequenz nicht ändern. Ausgang O:2/2 muss während der Stoppzeit immer ausgeschaltet sein. SPS-Ausgänge aktivieren oder deaktivieren
  5. leikang

    SPS-Zählerprogramm

    Schreiben Sie ein SPS-Zählerprogramm für das folgende Beispiel. SPS-Zähler Ein bestimmter Prozess soll die Anzahl der Wahr-zu-Falsch-Übergänge am Eingang I:0.0/0 für einen Zeitraum von 10 Sekunden zählen. Die Zählung soll erfolgen, wenn das Eingangswort I:0.1 einen Wert kleiner als 10000 oder größer als 20000 hat. Der 10-Sekunden-Zählzeitraum soll 15 Sekunden nach dem Start des Prozesses beginnen. I:0.0/1 ist ein Prozessstarteingang und Eingang I:0.0/2 ist ein Prozessstoppeingang. Die Zählanzeige soll erst am Ende des Zählzeitraums an Wort O:0.0 ausgegeben werden. Alle Ausgänge sollen 5 Sekunden nach dem Zählzeitraum abgeschaltet werden. Der Prozess soll sich erst nach einem weiteren deutlichen Drücken des Prozessstarteingangs wiederholen. Schreiben Sie ein effizientes Kontaktplanlogikprogramm für diesen Prozess. SPS-Logik
  6. SPS-Programm: Bei einem kontinuierlichen Füllbetrieb müssen Kisten, die sich auf einem Förderband bewegen, automatisch positioniert und gefüllt werden. SPS-Programm für kontinuierlichen Füllbetrieb Zweck Magnetspule: Zur Steuerung der Produktbefüllung aus dem Abfüller. Die Magnetspule wird aktiviert, nachdem die Kiste positioniert wurde (Aktivierung des Näherungsschalters) und wieder deaktiviert, nachdem der Füllstandsschalter aktiviert wurde (Füllstand voll). Füllstandsschalter: Zur Erkennung des Produktfüllstands in der Füllkiste. Näherungsschalter: Zur Positionierung der Kiste genau unter dem Abfüller. Motor: Zum Betreiben des Förderbands, sodass sich die Kiste entsprechend bewegt. Lokales Bedienfeld: Es verfügt über START- und STOP-Tasten zur Steuerung der Sequenz. Anzeigefeld: Es zeigt den Anlagen-/Chargenstatus an. Statussignale sind Betrieb/Standby/Voll. SPS-Logik Die folgenden Positionen sind die Standardpositionen: STOP-Schalter: Normalerweise geschlossen (NC) START-Schalter: Normalerweise offen (NO) Näherungsschalter: Normalerweise offen (NO) Niveauschalter: Normalerweise offen (NO) Hinweis: In der Kontaktplanlogik können wir je nach Bedarf entweder NO- oder NC-Kontakte als Standard für Näherungs- und Niveauschalter verwenden. Wenn wir NO verwenden, wird es nach Aktivierung des Schalters zu NC. Wenn wir NC verwenden, wird es nach Aktivierung des Schalters zu NO. Erklärung Hier haben wir 5 Sprossen/vollständige Zeilen in der obigen Kontaktplanlogik. Erste Sprosse: Sie hat die Anzeige STOP, START und RUN. STOP ist standardmäßig NC, START ist NO, wenn wir den START-Befehl drücken, sind sowohl STOP als auch START NC, sodass der Ausgang RUN aktiviert wird. Die RUN-Anzeige wird im Anzeigefeld angezeigt. Da START ein Druckknopf ist, der nur einen momentanen Befehl erzeugt. Also verwenden wir einen logischen NO-Kontakt vom RUN-Ausgang. Wenn RUN aktiviert ist, wird NO zu NC und hält/verriegelt den START-Befehl und RUN wird kontinuierlich aktiviert, auch wenn das START-Signal verloren geht, da es sich um einen Momenttyp handelt. Zweite Sprosse: Wird verwendet, um den STAND BY-Signalstatus im Anzeigefeld anzuzeigen. Der NC-Kontakt der RUN-Anzeige ist mit STANDBY verbunden. Wenn also das RUN-Signal aktiviert oder der Prozess gestartet wird, wird NC zu NO und die STAND BY-Anzeige wird deaktiviert. Wenn es nicht läuft, wird Standby aktiviert. Dritte Sprosse: Wird verwendet, um den FULL-Signalstatus im Anzeigefeld anzuzeigen. Wenn Niveauschalter und Näherungsschalter aktiviert werden, werden NO-Kontakte zu NC und der FULL-Signalstatus wird aktiviert. Vierte Sprosse: Wird verwendet, um den Motor entweder START/STOP zu steuern. Der NC-Kontakt des Näherungsschalters und der NO-Kontakt des RUN-Signals werden hier verwendet, um den Motor zu steuern. Wenn wir also die START-Taste drücken, wird RUN aktiviert (wie in der ersten Sprosse beschrieben), sodass der NO-Kontakt des RUN-Signals zu NC wird. Sowohl Näherungs- als auch RUN-Signale sind aktiviert/fehlerfrei, dann wird der Motor gestartet und das Förderband läuft an und die Kiste/das Paket beginnt sich zu bewegen. Sobald die Kiste Hooper erreicht, wird der Näherungsschalter aktiviert. Der NC-Kontakt des Näherungsschalters wird also zu NO, sodass der Motor sofort gestoppt wird. Nach dem Befüllen muss sich die Kiste erneut bewegen und die andere Seite erreichen. Daher verwenden wir hier den NO-Kontakt des Niveauschalters über dem Näherungsschalter. Wenn das Befüllen abgeschlossen ist, wechselt der Kontakt des Niveauschalters von NO zu NC, sodass der Motor erneut startet und die Kiste zum anderen Ende bewegt. Fünfte Sprosse: Wird verwendet, um den Betrieb des Magnetventils zu steuern. Wenn das Magnetventil aktiviert ist, beginnt es mit dem Befüllen der Kiste und wenn das Magnetventil deaktiviert wird, wird das Befüllen gestoppt. Hier verwenden wir hauptsächlich den NO-Kontakt des RUN-Signals, den NC-Kontakt des Niveauschalters und den NO-Kontakt des Näherungsschalters, um das Magnetventil zu steuern. Das Magnetventil wird aktiviert, wenn der START-Befehl gegeben wird (RUN-Signal: NO-Kontakt wird zu NC), wenn der Füllstand Null ist (Standardmäßig wird hier NC-Kontakt des Füllstandsschalters verwendet), wenn die Kiste unter den Fädler gestellt wird (Näherungsschalter: NO-Kontakt verwendet. Wenn die Kiste also unter dem Fädler ankommt, wird NO-Kontakt zu NC), nachdem alle Logiken in Ordnung sind, wird das Magnetventil aktiviert und beginnt mit dem Füllen. Wenn der Füllstand 100 % erreicht, wird der Füllstandsschalter zu NO und stoppt somit das Füllen durch Deaktivieren des Magnetventils. Wir haben hier einen Näherungsschalter verwendet, weil das Füllen gestartet werden muss, wenn die Kiste in der richtigen Position steht. Nach dem Füllen wird die Kiste herausgefahren und das Füllen beginnt erneut, wenn die nächste Kiste unter den Fädler kommt.
  7. leikang

    SPS-Förderbandmotor-Leiterlogik

    SPS-Programmier-Tutorials für SPS-Förderbandmotor-Leiterlogik oder Förderbandsteuerung mit einer speicherprogrammierbaren Steuerung (SPS). SPS-Förderbandmotor-Leiterlogik Ziel: Die sequenziellen Aufgaben sind wie folgt: Wenn die START-Taste gedrückt wird, wird der Motor gestartet. Die Anzeigelampe RUN (grüne Lampe) wird aktiviert. Der Motor läuft, sodass die Kiste sich zu bewegen beginnt. Der Näherungssensor erkennt, wenn die Kiste am anderen Ende ankommt. Der Motor wird gestoppt. Die Anzeigelampe RUN (grüne Lampe) wird deaktiviert. Die Anzeigelampe STOP (rote Lampe) wird aktiviert. Ein Not-Aus-Druckknopf wird verwendet, um den Motor jederzeit zu stoppen. Relaisschema R: STOP-Anzeigelampe, G: RUN-Anzeigelampe, M: Motor, OL: Überlastrelais (Motorschutzrelais), LS1: Näherungsschalter, PB1: Start-Druckknopf, PB2: Not-Aus-Druckknopf, CR: Auftragnehmerrelais Betriebssequenz Startknopf ist betätigt. CR1-1 schließt, um CR1 einzuschließen oder den Startbefehl zu verriegeln CR1-2 öffnet und schaltet die rote Stopp-Kontrollleuchte aus CR1-3 schließt und schaltet die grüne Betriebs-Kontrollleuchte ein CR1-4 schließt, um den Motorstarter und den Motor mit Strom zu versorgen Die Kiste/das Paket bewegt sich und der Näherungsschalter (LS1) erkennt die Kiste, wenn sie die Spule CR1 erreicht hat, und schaltet sie ab CR1-1 öffnet, um den Einschließkontakt zu öffnen (nicht verriegelter Startbefehl) CR1-2 schließt und schaltet die rote Kontrollleuchte ein CR1-3 öffnet und schaltet die grüne Kontrollleuchte aus CR1-4 öffnet, um die Starterspule abzuschalten, den Motor anzuhalten und die Sequenz zu beenden SPS-Kontaktplanlogik
  8. leikang

    PLC-Pneumatikkreissteuerung

    Hier besprechen wir die PLC-Pneumatikkreissteuerung anhand verschiedener Beispiele. PLC-Leiterdiagramm für einfachwirkende und doppeltwirkende pneumatische Zylinder. Beispiele für PLC-Pneumatikkreise Beispiel 1: Ein doppeltwirkender Zylinder wird für Bearbeitungsvorgänge verwendet. Der pneumatische Zylinder wird durch gleichzeitiges Drücken zweier Druckknöpfe vorgeschoben. Wird einer der Druckknöpfe losgelassen, kehrt der Zylinder in die Ausgangsposition zurück. Zeichnen Sie den pneumatischen Schaltkreis, den PLC-Schaltplan und den Leiterdiagramm, um diese Aufgabe umzusetzen. Lösung: Wie im PLC-Schaltplan gezeigt, sind die Druckknöpfe PB1 und PB2 an den Speicheradressen I1 und I2 angeschlossen. I1 und I2 sind im Leiterdiagramm in Reihe geschaltet, um diese UND-Logikfunktion zu realisieren. Wenn die Drucktasten PB1 und PB2 gleichzeitig gedrückt werden, wechseln die Adressen I1 und I2 von Zustand 0 in Zustand 1, wodurch Strom durch die Spule fließt und an Spule 01 eine Ausgabe erfolgt. Die Ausgabe an Spule 01 betätigt die Magnetspule und der Zylinder bewegt sich vorwärts, um die erforderliche Operation auszuführen. Wenn eine der Tasten PB1 und PB2 gedrückt wird, werden die entsprechenden Bitadressen auf 0 gesetzt. Da I1 und I2 in Reihe geschaltet sind, wird, wenn eine der beiden auf 0 gesetzt wird, an 01 keine Ausgabe ausgegeben und der Magnet wird somit deaktiviert und kehrt zurück. Beispiel 2: Ein doppeltwirkender Zylinder wird für die Vorwärts- und Rückwärtsbewegung verwendet. Der pneumatische Zylinder wird durch Drücken der Drucktasten PB1 vorgeschoben. Der Zylinder wird durch Drücken der Drucktaste PB2 zurückgeschoben. Zeichnen Sie den pneumatischen Schaltkreis, den PLC-Schaltplan und den Leiterplan, um diese Aufgabe umzusetzen. Lösung Der PLC-Schaltplan und die Leiterpläne sind in der obigen Abbildung dargestellt. Wenn der Druckknopf PB1 gedrückt wird, wechselt der Zustand der Adresse I1 zu 1 und es wird somit die Ausgabe 01 ausgegeben. Die Ausgabe von 01 betätigt den Magneten Y1 und der Zylinder bewegt sich vorwärts. Wenn der Zylinder die äußerste vorderste Position erreicht und der Druckknopf PB2 betätigt wird, wechselt der Zustand der Adresse I2 zu 1 und es wird somit die Ausgabe 02 ausgegeben. Die Ausgabe von 02 betätigt den Magneten Y2 und der Zylinder kehrt in die Ausgangsposition zurück. Beispiel 3: Ein doppeltwirkender Zylinder wird verwendet, um nach Erreichen der äußersten vordersten Position automatisch vorwärts und zurück zu fahren. Der pneumatische Zylinder wird durch Drücken der Druckknöpfe PB1 vorgeschoben. Zeichnen Sie den pneumatischen Schaltkreis, den PLC-Schaltplan und den Leiterplan, um diese Aufgabe umzusetzen. Lösung Der PLC-Schaltplan und die Leiterpläne sind in der obigen Abbildung dargestellt. Wenn der Druckknopf PB1 gedrückt wird, wechselt der Zustand der Adresse I1 zu 1 und es wird somit die Ausgabe 01 ausgegeben. Die Ausgabe von 01 betätigt den Magneten Y1 und der Zylinder bewegt sich vorwärts. Wenn der Zylinder die äußerste Vorwärtsposition erreicht und der Endschalter S2 betätigt wird, wechselt der Zustand der Adresse I3 zu 1 und es wird somit ein Ausgang 02 ausgegeben. Der Ausgang von 02 betätigt den Magneten Y2 und der Zylinder kehrt in die Ausgangsposition zurück. Beispiel 4: Für den Pressvorgang wird ein doppeltwirkender Zylinder verwendet. Der Zylinder muss sich vorwärts bewegen, wenn die Taste PB1 gedrückt wird, und für eine festgelegte Zeit von 20 Sekunden zurückkehren, bevor er automatisch in die Ausgangsposition zurückkehrt. Der Endschalter S2 wird zur Enderkennung der Vorwärtsbewegung des Zylinders verwendet. Zeichnen Sie den pneumatischen Schaltkreis, den SPS-Schaltplan und das Leiterdiagramm, um diese Aufgabe umzusetzen. Lösung Wenn PB1 gedrückt wird, wechselt der Eingangszustand der Adresse I1 zu 1 und es wird ein Ausgang an O1 ausgegeben. Aufgrund des Ausgangs an O1 wird die Magnetspule Y1 betätigt und der Zylinder bewegt sich vorwärts. Wenn der Zylinder die Endposition erreicht, wird der Endschalter S2 betätigt und infolgedessen wechselt die Adresse I3 zu 1 und startet folglich den Timer T1. Der Signalzustand des Timers T1 ändert sich nach 20 Sekunden auf 1. Nach Ablauf der 20 Sekunden wird vom Timer T1 der Ausgang O2 ausgegeben. Spule Y2 wird aktiviert, wodurch die Rücklaufbewegung des Zylinders ausgelöst wird. Beispiel 5: Ein doppeltwirkender Zylinder wird für eine kontinuierliche Hin- und Herbewegung verwendet. Der Zylinder muss sich vorwärts bewegen, wenn die Taste PB1 gedrückt wird, und sobald die Hin- und Herbewegung beginnt, sollte sie fortgesetzt werden, bis die Stopptaste PB2 gedrückt wird. Endschalter werden zur Endlagenerkennung verwendet. Zeichnen Sie den pneumatischen Schaltkreis, den SPS-Schaltplan und den Leiterplan, um diese Aufgabe umzusetzen. Lösung: Die Start- und Stoppvorgänge können mithilfe eines Speicherflags mit der Adresse M1 implementiert werden, das von PB1 gesetzt und von PB2 zurückgesetzt wird. Der Zustand des Speicherelements M1 wird über einen Schließerkontakt abgefragt und in Reihe mit dem Zustand des Sensors S1 kombiniert, um Start- und Stoppsteuerungen zu erhalten. Beispiel 6: Ein doppeltwirkender Zylinder wird für Hin- und Herbewegungen verwendet. Der Zylinder muss sich vorwärts bewegen, wenn die Taste PB1 gedrückt wird, und die Hin- und Herbewegung fortsetzen, bis 10 Betriebszyklen durchgeführt wurden. Zeichnen Sie den pneumatischen Schaltkreis, den SPS-Schaltplan und das Kontaktplandiagramm, um diese Aufgabe umzusetzen. Lösung Der vollautomatische Betrieb des Zylinders kann wie zuvor durch Verwendung der Endschalter S1 und S2 erreicht werden. Start- und Stoppvorgänge können mithilfe eines Speicherflags mit der Adresse M1 implementiert werden, das von PB1 an I1 gesetzt und durch den NC-Kontakt eines Abwärtszählers zurückgesetzt wird. Der Zustand des Speicherflags M1, der über einen NO-Kontakt (Sprosse 2) abgefragt wird, wird in Reihe mit dem Zustandssensor S1 kombiniert, um Start- und Stoppsteuerungen zu erhalten. Beispiel 7: Zeichnen Sie den pneumatischen Schaltkreis, den SPS-Schaltplan und das Kontaktplandiagramm, um die Sequenz A+B+B-A- zu implementieren. Lösung In dieser Sequenzschaltung wird PB2 verwendet, um das Programm zu starten. Durch Drücken von PB2 wird der letzte Speicherzustand M4 gesetzt und alle anderen Speicherflags M1, M2 und M3 zurückgesetzt. Zunächst werden S1 und S3 betätigt und erzeugen Ausgaben. Bedingung 1: Durch Drücken von PB1 wird das Speicherflag M1 gesetzt und das Speicherflag M4 zurückgesetzt. Magnetspule Y1 wird aktiviert. Zylinder A fährt aus (A+). Sensor S1 wird deaktiviert, sobald A fährt, und S2 wird aktiviert, wenn die Endposition erreicht ist. Bedingung 2: Wenn S2 betätigt wird, wird Speicher M2 gesetzt und Speicherflag M1 zurückgesetzt. Magnetspule Y3 wird aktiviert. Zylinder B fährt aus (B+). Sensor S3 wird deaktiviert, sobald B fährt, und S4 wird aktiviert, wenn die Endposition erreicht ist. Bedingung 3: Wenn S4 betätigt wird, wird Speicher M3 gesetzt und Speicherflag M2 zurückgesetzt. Magnetspule Y4 wird aktiviert. Zylinder B fährt ein (B-). Sensor S4 wird deaktiviert, sobald B fährt, und S3 wird aktiviert, wenn die Ausgangsposition erreicht ist. Bedingung 4: Wenn S3 betätigt wird, wird Speicher M4 gesetzt und Speicherflag M3 zurückgesetzt. Magnetspule Y2 wird aktiviert. Zylinder A fährt ein (A-). Sensor S2 wird deaktiviert, sobald B fährt, und S1 wird aktiviert, wenn die Ausgangsposition erreicht ist.
  9. leikang

    Wie skaliert eine SPS einen Sensor?

    Ich bin immer wieder überrascht, wie ein Automatisierungssystem wie eine SPS oder ein DCS einen Sensor skaliert. Manchmal denke ich sogar über einfache Skalierungstechniken für Feldtransmitter nach, um jede Art von Sensorausgang in Standard 4-20 mA umzuwandeln. Betrachten wir beispielsweise einen Temperaturtransmitter. Wir alle wissen, dass wir mithilfe einer einfachen Formel die äquivalente Temperatur aus dem Ausgangswiderstand des RTD-Sensors berechnen können. Und im Fall eines Thermoelements ist ein komplexer Algorithmus erforderlich, um seine Ausgangsmillivolt in die äquivalente Temperatur umzuwandeln. Die Frage ist nun also: Wie skaliert eine SPS oder ein DCS oder ein Transmitter? Lassen Sie uns die Skalierung im Detail besprechen. Wie skaliert eine SPS einen Sensor? Skalierung ist der Vorgang, bei dem ein Signal, wie z. B. eine Prozessvariable, Spannung oder Stromausgang von einem Sensor, genommen und Berechnungen angewendet werden, um dieses Signal dem Bediener im Kontrollraum in einer besser nutzbaren Form in technischen Einheiten, wie z. B. PSI, °F oder %RH, zu präsentieren. In der Welt der Datenerfassung werden drei gängige Techniken verwendet: lineare Skalierung, zugeordnete Skalierung und Formelskalierung. Alle drei Methoden haben ihre Berechtigung und werden in diesem Artikel beschrieben. Skalierungstechniken In diesem Artikel werden wir drei Techniken zur Skalierung behandeln: linear, Zuordnung und Formel. Diese drei Techniken überschneiden sich ein wenig, wie wir erklären werden, aber sie sind die primären Methoden, die in der Welt der Datenerfassung verwendet werden. Um einen kurzen Überblick über diese drei Methoden und ihre optimale Verwendung zu geben, haben wir unten eine Tabelle zusammengestellt. In bestimmten Fällen, in denen keine formelbasierte Skalierung verfügbar ist, kann manchmal eine Zuordnung verwendet werden, um eine Tabelle basierend auf der benötigten Formel vorab zu definieren und umgekehrt. Es ist auch erwähnenswert, dass bei der Arbeit mit einem Sensor mit analogem Ausgang die für diesen Sensor angegebenen Einheiten nicht in Stein gemeißelt sind. Wenn Ihr Sensor beispielsweise einen 4- bis 20-mA-Ausgang für einen Bereich von -40 bis 100 °C hat, wäre es genauso einfach, den Ausgang in Fahrenheit zu skalieren, indem man sagt, dass die Einheit einen Bereich von -40 bis 212 °F hat. Wir werden im nächsten Abschnitt näher darauf eingehen. Lineare Skalierung Die Technik der linearen Skalierung sollte Sie ein wenig an Ihre Tage in der Grundalgebra erinnern. Dabei wird die alte Steigungsabschnittsform „y = mx + b“ verwendet, wobei y Ihre Ausgabe (auch als Wert der technischen Einheiten bezeichnet), x Ihre Eingabe (ob Spannungen, Milliampere usw.), m Ihre Steigung (auch als Skalierungsfaktor bezeichnet) und b Ihr y-Achsenabschnitt (auch als Offset bezeichnet) ist. Wie bereits erwähnt, funktioniert die lineare Skalierung am besten mit linearen Spannungs- oder Stromausgängen, bei denen die minimalen und maximalen Ausgänge bestimmte Werte zusammen mit dem Sensorbereich darstellen. Wenn Sie ein bisschen eingerostet sind, keine Angst, wir geben Ihnen ein paar Beispiele, um die Dinge aufzufrischen. Beispiel 1 Betrachten wir den Füllstandstransmitter mit einem Bereich von 0 bis 100 Fuß WC und einem 0 bis 10 V DC-Ausgang. Diese Spezifikationen sagen uns zwei Dinge: Ein Ausgang von 0 V stellt eine Messung von 0 Fuß WC dar und Ein Ausgang von 10 V stellt eine Messung von 100 Fuß WC dar. Beginnen Sie am besten mit Ihrem Skalierungsfaktor oder m in der Gleichung. Der Faktor m kann mithilfe der Steigungsformel m = (y2-y1) / (x2-x1)’ und der Auswahl von zwei Punkten entlang der linearen Skala gelöst werden. Nachdem der Skalierungsfaktor bestimmt wurde, setzen wir den Wert m einfach wieder in die Steigungsabschnittsformel ein und verwenden einen unserer Punkte, um unseren Versatz zu berechnen. 1. Wir verwenden die beiden Punkte (0, 0) und (10, 100), um den Skalierungsfaktor oder m zu berechnen. m = (y2-y1) / (x2-x1) = (100 – 0) / (10 – 0) = 100 / 10 Daher ist m = 10 2. Jetzt verwenden wir die Steigungsabschnittsformel und den Punkt (0, 0), um den Versatz oder b zu berechnen. y = mx + b, wobei y = 0, x = 0, m = 10 und b unbekannt ist. 0 = 10(0) + b = 0 + b Daher ist b = 0 3. Es ist immer eine gute Idee, zu überprüfen, ob Ihr Skalierungsfaktor und Ihr Offset richtig sind, indem Sie unseren zweiten Punkt in unsere vollständige Gleichung einsetzen, die in diesem Fall (10, 100) lautet. y = mx + b, wobei y = 100, x = 10, m = 10 und b = 0. 100 = 10(10) + 0 = 100 Da diese Rechenoperation gültig ist, haben wir überprüft, dass unser Skalierungsfaktor und unser Offset richtig sind. Beispiel 2 Da das Beispiel von 0 bis 10 V ziemlich einfach ist, gehen wir zu etwas Anspruchsvollerem über, wie einem 4 bis 20 mA-Ausgang. Wir verwenden weiterhin den Füllstandstransmitter mit einem Bereich von 0 bis 100 ftWC, dieses Mal jedoch mit einem Ausgang von 4 bis 20 mA. Diese Spezifikationen sagen uns erneut zwei Dinge: Ein Ausgang von 4 mA stellt eine Messung von 0 ftWC dar und Ein Ausgang von 20 mA stellt eine Messung von 100 ftWC dar. Wir gehen dieses Beispiel auf die gleiche Weise an wie das letzte, indem wir zuerst den Skalierungsfaktor ermitteln und dann einige Zahlen einsetzen, um den Offset zu berechnen. 1. Wir verwenden die beiden Punkte (4, 0) und (20, 100), um den Skalierungsfaktor oder m zu berechnen. m = (y2-y1) / (x2-x1) = (100 – 0) / (20 – 4) = 100 / 16 Daher ist m = 6,25 2. Nun verwenden wir die Steigungsabschnittsformel und den Punkt (4, 0), um den Versatz oder b zu berechnen. y = mx + b, wobei y = 0, x = 4, m = 6,25 und b unbekannt ist. 0 = 6,25(4) + b = 25 + b Daher b = -25 3. Es ist immer eine gute Idee, zu überprüfen, ob Ihr Skalierungsfaktor und Ihr Versatz richtig sind, indem Sie unseren zweiten Punkt in unsere vollständige Gleichung einsetzen, die in diesem Fall (20, 100) lautet. y = mx + b, wobei y = 100, x = 20, m = 6,25 und b = -25. 100 = 6,25(20) + (-25) = 100 Da diese Rechenoperation gültig ist, haben wir überprüft, dass unser Skalierungsfaktor und unser Versatz richtig sind. Abgebildete Skalierung Die Technik der abgebildeten Skalierung ist häufig integriert und vorprogrammiert für Eingänge wie Thermoelemente, Pt100/1000 und andere resistive Temperatursensoren. Wenn Sie beispielsweise Ihr Datenerfassungssystem so konfigurieren, dass es ein Thermoelement vom Typ K misst, weiß das System bereits, welcher Millivolt-Ausgang des Thermoelements welcher Temperatur entspricht. Dieses Beispiel gilt nicht nur für Thermoelemente vom Typ K, sondern für alle Arten häufig verwendeter resistiver Temperatursensoren oder anderer verwandter Sensoren. Es gibt jedoch einige Fälle, in denen wir unsere eigene Zuordnungstabelle erstellen müssen. Einer dieser Fälle wäre, wenn wir mit einem Datenerfassungssystem arbeiten, das nicht für die Verwendung mit resistiven Temperatursensoren vorkonfiguriert ist. Dies ist keine sehr häufige Situation, die uns begegnet, aber sie ist erwähnenswert. Der andere Fall wäre, wenn wir eine nichtlineare Funktion haben und keine formelbasierte Skalierung verfügbar ist oder es sich um eine stückweise Funktion handelt. Ein gutes Beispiel hierfür wäre, wenn wir einen Füllstandssensor verwenden, um das Tankvolumen in einem nichtlinearen Tank zu berechnen. Wenn wir das Volumen einer Flüssigkeit in einem Tank wissen möchten, messen wir normalerweise die Tiefe oder den Füllstand des Tanks. Wenn wir das wissen, können wir das Volumen der Flüssigkeit berechnen. Wenn der Tank einen flachen Boden und den gleichen Durchmesser und die gleiche Höhe hätte, wäre diese Berechnung einfach und wir könnten eine lineare Skalierung wie oben verwenden. Normalerweise sind diese Tanks jedoch abgerundet und der Flüssigkeitsstand korreliert nicht direkt mit dem Flüssigkeitsvolumen. In dieser Situation müssen wir eine zugeordnete Skalierung und ein wenig Mathematik verwenden, um das gewünschte Ergebnis zu erzielen. Für unser Beispiel verwenden wir einen horizontalen Zylindertank mit einem Durchmesser von 5 Fuß und einer Länge von 10 Fuß. Es gibt eine Reihe komplizierter trigonometrischer Formeln, die verwendet werden, um das Füllvolumen eines solchen Tanks zu bestimmen, die wir überspringen werden, da sie für den Umfang dieses Artikels zu komplex sind. Stattdessen führen wir die Berechnungen durch und zeigen Ihnen die Wertezuordnungstabelle. Außerdem verwenden wir für dieses Beispiel erneut den Füllstandstransmitter, diesmal jedoch mit einem 0- bis 10-V-Gleichstromausgang und einem 0- bis 5-Fuß-WC-Bereich. Wenn dies die Zuordnungstabelle ist, die in Ihr Datenerfassungssystem programmiert ist, wird das Volumen berechnet, anstatt einfach die Tiefe zu messen. Normalerweise sind die Berechnungen umso genauer, je mehr Punkte Ihre Tabelle enthält. Um dieses Konzept zu demonstrieren, verwenden wir als Beispiel ein 1-V-Ausgangssignal. Ein Ausgang von 1 V würde uns sagen, dass der Tank 0,5 Fuß tief ist. Das entspricht ungefähr 76 Gallonen. 1 V liegt in unserer Tabelle zwischen 0 V und 2 V, daher richtet das Datenerfassungssystem eine lineare Skala zwischen diesen beiden Punkten ein und sagt, dass ein 1-V-Ausgang 104,5 Gallonen entspricht, was fast 30 Gallonen daneben liegt! Formelskalierung Diese Technik könnte eine der leistungsstärksten Skalierungsmethoden sein, ist jedoch häufig sehr ressourcenintensiv und die meisten Datenerfassungssysteme, die Daten mit hoher Geschwindigkeit speichern, können mit diesem Prozess nicht Schritt halten. Für Datenerfassungssysteme, die keine Formelskalierung durchführen können, gibt es zwei Alternativen: Speichern von Rohwerten und Anwenden der erforderlichen Formeln auf die Daten, nachdem die Daten aus dem Datenerfassungssystem gespeichert wurden. Dies kann normalerweise mit einer Software wie Microsoft Excel erfolgen. Verwenden eines programmierbaren Signalrechners. Diese Art von Gerät kann so konfiguriert werden, dass mehrere Eingaben über eine benutzerdefinierte Formel verarbeitet werden und eine lineare Ausgabe bereitgestellt wird. Es gibt zahlreiche potenzielle Verwendungsmöglichkeiten für die Formelskalierung. Wir werden zwei mögliche Szenarien für diese Technik behandeln: vertikales Zylindertankvolumen und Differenzdruck. Beispiel 1 Für einen vertikalen Zylindertank kann das Füllvolumen mit der Formel „V = π r2 f“ berechnet werden, wobei V das gefüllte Volumen, r der Radius des Tanks und f die Füllhöhe ist. Nehmen wir an, unser Tank hat einen Durchmesser von 5 Fuß und eine Höhe von 10 Fuß. Verwenden wir für unser Beispiel wieder den Füllstandstransmitter mit einem WC-Bereich von 0 bis 10 Fuß und einem DC-Ausgang von 0 bis 5 V. Der Füllstandstransmitter gibt uns unsere Füllhöhe oder f. Aus dieser Füllhöhe können wir direkt das Füllvolumen oder V berechnen. Wir werden einige der gleichen Methoden für die lineare Skalierung verwenden, um unser f zu erhalten, und die Berechnungen darauf anwenden. 1. Wir berechnen zunächst die lineare Skalierung für die Füllhöhe oder f. Ich überspringe ein paar Schritte, da wir dies bereits im ersten Abschnitt behandelt haben. y = f = 2x, wobei x die Spannungsausgabe des Sensors ist. 2. Jetzt können wir das f in der Formel für den vertikalen Zylindertank durch 2x ersetzen. V = π r2 f = π (2,5)2 (2x) = π 12,5x Beispiel 2 Das zweite Szenario, das wir zur Erläuterung der Technik der Formelskalierung verwenden werden, ist der Differenzdruck. Es gibt natürlich eine Reihe von Differenzdrucksensoren, die eine lineare Ausgabe liefern, aber aus Erfahrung kann ich Ihnen sagen, dass es für diese Methode zur Berechnung des Differenzdrucks viele Verwendungsmöglichkeiten gibt. In diesem Beispiel verwenden wir zwei der Sender mit einem Bereich von 0 bis 100 PSI und einem DC-Ausgang von 0 bis 10 V. Einer wird in einem unter Wasser getauchten Druckbehälter platziert und der andere außerhalb dieses Behälters. Der Differenzdruck bestimmt die Kraft, die auf die Wände des Behälters ausgeübt wird. Die Berechnungen sind hier sehr einfach. Subtrahieren Sie einfach das eine vom anderen. Pdifferential = Pexternal – Pinternal Fazit Die drei am häufigsten verwendeten Techniken zum Skalieren von Sensorausgaben sind Lineare Skalierung, Zugeordnete Skalierung und Formelskalierung. PLC-Schieberegister Wie Sie sehen, gibt es viele Fälle, in denen mehr als eine dieser Techniken funktionieren kann, und die beste Wahl hängt normalerweise von der Hardware/Software ab, mit der Sie arbeiten. Die lineare Skalierung ist am einfachsten zu handhaben, Sensoren mit linearen Ausgaben sind jedoch tendenziell teurer, da zusätzliche Hardware erforderlich ist, um die Rohausgabe des Wandlers zu linearisieren. Zugeordnete Skalierung wird häufiger verwendet, als uns auffällt. Immer wenn ein resistiver Temperatursensor eine Temperaturanzeige liefert, ist irgendwo entlang der Linie eine zugeordnete Skalierung am Werk. Die Formelskalierung ist sehr leistungsstark, erfordert aber Hardware-/Softwarekonfigurationen.
  10. leikang

    SPS-Mathematikanweisungen

    Der IEC 61131-3-Standard spezifiziert mehrere spezielle Kontaktplananweisungen zum Durchführen arithmetischer Berechnungen. Einige davon werden hier gezeigt: SPS-Mathematikanweisungen Wie bei den Datenvergleichsanweisungen muss jede dieser Mathematikanweisungen durch ein „aktiviertes“ Signal am Aktivierungseingang (EN) aktiviert werden. Eingangs- und Ausgangswerte sind mit jeder Mathematikanweisung durch den Tag-Namen verknüpft. Hier wird ein Beispiel für die Verwendung solcher Anweisungen gezeigt, bei dem eine Temperaturmessung in Grad Fahrenheit in Grad Celsius umgewandelt wird. In diesem speziellen Fall gibt das Programm eine Temperaturmessung von 138 Grad Fahrenheit ein und berechnet die entsprechende Temperatur von 58,89 Grad Celsius: sowie eine spezielle Variable (X), die zum Speichern der Zwischenberechnung zwischen den Subtraktions- und Divisions-„Boxen“ verwendet wird. Obwohl es nicht in der Norm IEC 61131-3 spezifiziert ist, unterstützen viele speicherprogrammierbare Steuerungen mathematische Anweisungen für Kontaktplandiagramme, die die direkte Eingabe beliebiger Gleichungen ermöglichen. Die Logix5000-Programmierung von Rockwell (Allen-Bradley) verfügt beispielsweise über die Funktion „Compute“ (CPT), mit der jeder typisierte Ausdruck in einer einzigen Anweisung berechnet werden kann, anstatt mehrere spezielle mathematische Anweisungen wie „Addieren“, „Subtrahieren“ usw. zu verwenden. Allgemeine mathematische Anweisungen verkürzen die Länge eines Kontaktplanprogramms im Vergleich zur Verwendung spezieller mathematischer Anweisungen für Anwendungen, die nicht triviale Berechnungen erfordern, erheblich. Beispielsweise erfordert dasselbe in der Logix5000-Programmierung implementierte Temperaturumrechnungsprogramm von Fahrenheit in Celsius nur eine einzige mathematische Anweisung und keine Deklarationen von Zwischenvariablen:
  11. leikang

    SPS-Zähleranweisungen

    Ein Zähler ist eine SPS-Anweisung, die einen ganzzahligen Wert entweder erhöht (hochzählt) oder verringert (herunterzählt), wenn dies durch den Übergang eines Bits von 0 auf 1 („falsch“ auf „wahr“) veranlasst wird. Zähleranweisungen gibt es in drei Grundtypen: Aufwärtszähler, Abwärtszähler und Aufwärts-/Abwärtszähler. Sowohl „Aufwärts“- als auch „Abwärts“-Zähleranweisungen haben einzelne Eingänge zum Auslösen von Zählungen, während „Aufwärts-/Abwärts“-Zähler zwei Auslöseeingänge haben: einen zum Erhöhen des Zählers und einen zum Verringern des Zählers. SPS-Zähleranweisungen Um die Verwendung einer Zähleranweisung zu veranschaulichen, analysieren wir ein SPS-basiertes System, das zum Zählen von Objekten entwickelt wurde, während sie ein Förderband hinunterlaufen: In diesem System bewirkt ein kontinuierlicher (ununterbrochener) Lichtstrahl, dass der Lichtsensor seinen Ausgangskontakt schließt und den diskreten Kanal IN4 aktiviert. Wenn ein Objekt auf dem Förderband den Lichtstrahl von der Quelle zum Sensor unterbricht, öffnet sich der Kontakt des Sensors und unterbricht die Stromversorgung zum Eingang IN4. Ein Druckknopfschalter, der angeschlossen ist, um den diskreten Eingang IN5 zu aktivieren, dient beim Drücken als manuelles „Reset“ des Zählwerts. Eine Anzeigelampe, die an einen der diskreten Ausgangskanäle angeschlossen ist, dient als Anzeige dafür, wann der Objektzählwert einen voreingestellten Grenzwert überschritten hat. Wir werden nun ein einfaches Kontaktplanprogramm analysieren, das so konzipiert ist, dass es einen Zählerbefehl jedes Mal hochzählt, wenn der Lichtstrahl unterbrochen wird: Dieser spezielle Zählerbefehl (CTU) ist ein inkrementierender Zähler, was bedeutet, dass er mit jedem Ein-Aus-Übergangseingang an seinem „CU“-Eingang „hoch“ zählt. Der normalerweise geschlossene virtuelle Kontakt (IN-Sensorobjekt) wird normalerweise im „offenen“ Zustand gehalten, wenn der Lichtstrahl kontinuierlich ist, da der Sensor diesen diskreten Eingangskanal aktiviert hält, während der Strahl kontinuierlich ist. Wenn der Strahl durch ein vorbeifahrendes Objekt auf dem Förderband unterbrochen wird, wird der Eingangskanal deaktiviert, wodurch das virtuelle Kontakt-IN-Sensorobjekt „geschlossen“ wird und virtuelle Energie an den „CU“-Eingang des Zählerbefehls sendet. Dadurch wird der Zähler hochgezählt, sobald die Vorderkante des Objekts den Strahl unterbricht. Der zweite Eingang des Zählerbefehlsfelds („R“) ist der Reset-Eingang, der virtuelle Energie vom Kontakt-IN-Schalter empfängt, der zurückgesetzt wird, wenn der Reset-Druckknopf gedrückt wird. Wenn dieser Eingang aktiviert wird, setzt der Zähler seinen aktuellen Wert (CV) sofort auf Null zurück. Die Statusanzeige wird in diesem Kontaktplanprogramm angezeigt, wobei der voreingestellte Wert (PV) des Zählers von 25 und der aktuelle Wert (CV) des Zählers von 0 blau hervorgehoben dargestellt werden. Der voreingestellte Wert wird in den Zählerbefehl programmiert, bevor das System in Betrieb genommen wird, und dient als Schwellenwert zum Aktivieren des Zählerausgangs (Q), der in diesem Fall die Zählanzeigelampe einschaltet (die OUT-Zählwert-erreicht-Spule). Gemäß dem Programmierstandard IEC 61131-3 sollte dieser Zählerausgang aktiviert werden, wenn der aktuelle Wert gleich oder größer als der voreingestellte Wert ist (Q ist aktiv, wenn CV ≥ PV). Dies ist der Status desselben Programms, nachdem dreißig Objekte den Sensor auf dem Förderband passiert haben. Wie Sie sehen, ist der aktuelle Wert des Zählers auf 30 gestiegen, überschreitet den voreingestellten Wert und aktiviert den diskreten Ausgang: Wenn es uns nicht darum ginge, eine genaue Gesamtzahl der Objekte über 25 hinaus beizubehalten – sondern wir lediglich wollten, dass das Programm anzeigt, wenn 25 Objekte vorbeigekommen sind. könnten wir auch einen auf einen Wert von 25 voreingestellten Abwärtszählerbefehl verwenden, der eine Ausgangsspule einschaltet, wenn der Zählerstand Null erreicht: Hier bewirkt ein „Lade“-Eingang, dass der aktuelle Wert des Zählers bei Aktivierung dem voreingestellten Wert (25) entspricht. Mit jedem empfangenen Sensorimpuls wird der Zählerbefehl dekrementiert. Wenn der Wert Null erreicht, wird der Q-Ausgang aktiviert. Ein potenzielles Problem bei beiden Versionen dieses Objektzählsystems ist, dass die SPS nicht zwischen Vorwärts- und Rückwärtsbewegung auf dem Förderband unterscheiden kann. Würde das Förderband beispielsweise jemals die Richtung umkehren, würde der Sensor weiterhin Objekte zählen, die bereits zuvor (in Vorwärtsrichtung) vorbeigelaufen sind, während diese Objekte auf dem Band zurücklaufen. Dies wäre ein Problem, da das System „denken“ würde, dass mehr Objekte das Band passiert haben (was auf eine höhere Produktion hindeutet), als dies tatsächlich der Fall war. Eine Lösung für dieses Problem besteht darin, einen Aufwärts-/Abwärtszähler zu verwenden, der sowohl inkrementieren (hochzählen) als auch dekrementieren (herunterzählen) kann, und diesen Zähler mit zwei Lichtstrahlsensoren auszustatten, die die Bewegungsrichtung bestimmen können. Wenn zwei Lichtstrahlen parallel zueinander ausgerichtet sind und näher beieinander liegen als die Breite des schmalsten Objekts, das das Förderband passiert, verfügen wir über genügend Informationen, um die Bewegungsrichtung des Objekts zu bestimmen: Dies wird als Quadratursignaltaktung bezeichnet, da die beiden Impulswellenformen in ihrer Phase etwa 90 Grad (eine Viertelperiode) auseinander liegen. Wir können diese beiden phasenverschobenen Signale verwenden, um einen Aufwärts-/Abwärtszählerbefehl zu erhöhen oder zu verringern, je nachdem, welcher Impuls vor- und welcher nacheilt. Hier wird ein Kontaktplan-SPS-Programm gezeigt, das die Quadraturimpulssignale interpretieren soll und sowohl negative Übergangskontakte als auch Standardkontakte verwendet: Der Zähler wird nur dann erhöht (hochzählen), wenn Sensor B abschaltet, wenn Sensor A bereits im abgeschalteten Zustand ist (d. h. Lichtstrahl A wird vor B unterbrochen). Der Zähler wird nur dann verringert (herunterzählen), wenn Sensor A abschaltet, wenn Sensor B bereits im abgeschalteten Zustand ist (d. h. Lichtstrahl B wird vor A unterbrochen). Beachten Sie, dass der Aufwärts-/Abwärtszähler sowohl einen „Reset“-Eingang (R) als auch einen „Load“-Eingang („LD“) hat, um den aktuellen Wert zu erzwingen. Durch Aktivieren des Reset-Eingangs wird der aktuelle Wert (CV) des Zählers auf Null gesetzt, genau wie wir es bei der „Aufwärts“-Zähleranweisung gesehen haben. Anschließend wird durch Aktivieren des Ladeeingangs der aktuelle Wert des Zählers auf den voreingestellten Wert (PV) gesetzt, genau wie wir es bei der „Abwärts“-Zähleranweisung gesehen haben. Bei einem Aufwärts-/Abwärtszähler gibt es zwei Q-Ausgänge: einen QU (Ausgang Aufwärts), der anzeigt, wenn der aktuelle Wert gleich oder größer als der voreingestellte Wert ist, und einen QD (Ausgang Abwärts), der anzeigt, wenn der aktuelle Wert gleich oder kleiner als Null ist. Beachten Sie, dass der aktuelle Wert (CV) jedes angezeigten Zählers mit einem eigenen Tag-Namen verknüpft ist, in diesem Fall „Teile gezählt“. Die Ganzzahl des aktuellen Werts (CV) eines Zählers ist eine Variable im Speicher der SPS, genau wie Boolesche Werte wie „IN-Sensor A“ und „IN-Schalter zurückgesetzt“, und kann genauso mit einem Tag-Namen oder einer symbolischen Adresse verknüpft sein. Dadurch können andere Anweisungen in einem SPS-Programm Werte von diesem Speicherplatz lesen (und manchmal auch in diesen schreiben!).
  12. In unserer Stadt stoßen wir am häufigsten auf einen dreispurigen Stau. Dieses PLC-Programm bietet die Lösung zur Steuerung schwerer Verkehrsstaus mit speicherprogrammierbarer Steuerung. Ampelsteuerung mit SPS Problemlösung Es gibt so viele Möglichkeiten, ein Programm zur Ampelsteuerung zu schreiben, z. B. die Sequenzer-Ausgabemethode, aber in diesem Fall werden normale Eingaben, Ausgaben und Timer verwendet. Timer werden verwendet, um eine Zeitverzögerung für das Ein- und Ausschalten des Ausgangs zu erreichen. Am Ende wird eine Reset-Spule verwendet, um das Programm kontinuierlich laufen zu lassen. Komparatorblöcke werden verwendet, um die Anzahl der verwendeten Timer zu reduzieren. Programm erstellt in der AB RSLogix 500-Software. Liste der Ein- und Ausgänge für das Verkehrskontrollsystem SPS-Programm für 3-Wege-Verkehrskontrollsystem Die folgende tabellarische Spalte gibt die Schritte oder die Reihenfolge der einzuschaltenden Ausgänge an. SPS-Logikbeschreibung für 3-Wege-Verkehrskontrollsystem RUNG000: Dies ist eine Verriegelungsstufe zum Bedienen des Systems über Master Start and Stop PB. RUNG001 und RUNG0002: Starten des Timers zum Einschalten des ersten Ausgangs Westgrün, sodass Ost und West rot sein sollten. Komparatoren in der parallelen Stufe werden verwendet, um Ostrot nach 15 Sekunden auszuschalten. Timer T4:2-Timing-Bit im parallelen Kontakt wird verwendet, um Ostrot im 5. und 6. Schritt wieder einzuschalten. (Siehe obige tabellarische Spalte zur Erläuterung) Sprosse 0003: Nordrot bis zum 3. Schritt einschalten, mithilfe des Zeitbits und der Komparatorblöcke von T4:0 und T4:1. Sprosse 0004: Ostgelb für 5 Sekunden einschalten, mithilfe der Komparatorblöcke. (2. Schritt) Sprosse 0005-0006-0007-0008-0009-0010: Die gleichen Verfahren werden angewendet, um weitere Ausgänge einzuschalten. (Siehe tabellarische Spalte für eine Abfolge der Vorgänge) Sprosse 0011: Die Reset-Spule wird mithilfe des Fertigbits von T4:2 eingeschaltet, um den Zyklus von Anfang an neu zu starten. Das Programm läuft kontinuierlich, bis STOP PB gedrückt wird. Fazit: Die oben erläuterte 3-Wege-Ampelsteuerung mithilfe einer SPS dient nur als Beispiel. Sie kann von der Echtzeit abweichen. Wir können dieses Beispielprogramm verwenden, um die Funktionsweise von Timern und Komparatorblockfunktionen in AB PLC zu verstehen.
  13. Für jede Einheitenumrechnung auf jeder SPS können Sie die Vier-Funktionen-Mathematik mit der folgenden Formel für die Umrechnungsformel für analoge SPS-Eingänge verwenden, die ganzzahlige Mathematik voraussetzt: Umrechnungsformel für SPS Formeln: EU = ((EUSpan x (DATA – DataOffset))/DataSpan) + EUOffset Prozesswert = EU / FAKTOR DataOffset = Daten im Eingangsregister bei 4 mA (oder Null-Analogsignal in beliebigem Bereich – z. B. 0 VDC auf einem 0-10 VDC-Transmitter) DataSPan = Daten bei 20 mA – Daten bei 4 mA FAKTOR = beliebiger Faktor (Vielfaches von 10), der für die richtige Auflösung und Genauigkeit erforderlich ist EU = Technische Einheiten x FAKTOR EUOffset = Technische Einheiten bei 4 mA x FAKTOR EUSpan = (Technische Einheiten bei 20 mA – Technische Einheiten bei 4 mA) x FAKTOR DATEN = Tatsächlicher Datenstand im Eingangsregister Beispiel: Ein Drucktransmitter im Bereich von 0 bis 60 psig ist an eine analoge SPS-Eingangskarte angeschlossen. Die Rohzählung der analogen SPS-Eingangskarte beginnt bei 6240 für 4 mA und bei 31208 für 20 mA. Die SPS liest 18975 Rohzählungen und berechnet den entsprechenden Drucktransmitterstand. Hinweis: Die Rohzählungen der SPS können von System zu System unterschiedlich sein. 0-60 psig von 4-20 mA mit einer Auflösung von 0,1 psig: FAKTOR = 10 Daten @ 4 mA = 6240 Daten @ 20 mA = 31208 Datenoffset = 6240 Datenspanne = 31208 – 6240 = 24968 EUOffset = 0 x 10 = 0 EUSpan = (60 – 0) x 10 = 600 DATEN = 18975 EU = ((EUSpan x (DATEN – Datenoffset))/Datenspanne) + EUOffset EU = ((600 x (18975 – 6240)) / 24968) + 0 = 306 Prozesswert = EU / FAKTOR Prozesswert = 306 / 10 = 30,6 psig
  14. leikang

    Was ist Kontaktplanprogrammierung?

    Kontaktplanprogrammierung (LD) Die am häufigsten verwendete Sprache zum Programmieren von SPS ist Kontaktplan (LD), auch bekannt als Relais-Kontaktplanlogik (RLL). Dies ist eine grafische Sprache, die die logischen Beziehungen zwischen Eingängen und Ausgängen zeigt, als wären sie Kontakte und Spulen in einem fest verdrahteten elektromechanischen Relaisschaltkreis. Diese Sprache wurde mit dem ausdrücklichen Ziel entwickelt, die SPS-Programmierung für Elektriker, die mit relaisbasierten Logik- und Steuerschaltkreisen vertraut sind, „natürlich“ erscheinen zu lassen. Obwohl Kontaktplanprogrammierung viele Mängel aufweist, ist sie in der Automatisierungsbranche nach wie vor äußerst beliebt. Jedes Kontaktplanprogramm ist so aufgebaut, dass es einem elektrischen Diagramm ähnelt, was es zu einer grafischen (und nicht textbasierten) Programmiersprache macht. Kontaktpläne sind als virtuelle Schaltkreise zu betrachten, bei denen virtueller „Strom“ durch virtuelle „Kontakte“ (wenn geschlossen) fließt, um virtuelle „Relaisspulen“ zu aktivieren und logische Funktionen auszuführen. Keiner der Kontakte oder Spulen, die in einem SPS-Programm mit Kontaktplan zu sehen sind, ist real; sie wirken vielmehr auf Bits im Speicher der SPS, wobei die logischen Wechselbeziehungen zwischen diesen Bits in Form eines Diagramms ausgedrückt werden, das einem Schaltkreis ähnelt und auf einem PC bearbeitet wird: Programmierung mit Kontaktplan Der folgende Computer-Screenshot zeigt ein typisches Programm mit Kontaktplan. Kontakte erscheinen genauso wie in einem Logikdiagramm eines elektrischen Relais – als kurze vertikale Liniensegmente, die durch einen horizontalen Zwischenraum getrennt sind. Normalerweise offene Kontakte sind innerhalb des Zwischenraums zwischen den Liniensegmenten leer, während normalerweise geschlossene Kontakte eine diagonale Linie haben, die diesen Zwischenraum durchquert. Spulen sind etwas anders und erscheinen entweder als Kreise oder Klammerpaare. Andere Anweisungen erscheinen als rechteckige Kästen. Jede horizontale Linie wird als Sprosse bezeichnet, genau wie jede horizontale Stufe auf einer Trittleiter als „Sprosse“ bezeichnet wird. Ein gemeinsames Merkmal von Kontaktplan-Programmeditoren, wie auf diesem Screenshot zu sehen, ist die Möglichkeit, jene virtuellen „Komponenten“ im virtuellen „Schaltkreis“, die bereit sind, virtuellen „Strom“ zu „leiten“, farblich hervorzuheben. In diesem speziellen Editor ist die Farbe, die zur Anzeige von „Leitung“ verwendet wird, hellblau. Eine andere Form der Statusanzeige, die in diesem SPS-Programm zu sehen ist, sind die Werte bestimmter Variablen im Speicher der SPS, die in rotem Text angezeigt werden. Sie können beispielsweise in der oberen rechten Ecke des Bildschirms Spule T2 unter Spannung sehen (hellblau ausgefüllt), während Spule T3 nicht unter Spannung steht. Dementsprechend erscheint jeder normalerweise offene T2-Kontakt farbig, was seinen „geschlossenen“ Status anzeigt, während jeder normalerweise geschlossene T2-Kontakt farblos ist. Im Gegensatz dazu ist jeder normalerweise offene T3-Kontakt farblos (da Spule T3 nicht mit Strom versorgt wird), während jeder normalerweise geschlossene T3-Kontakt farblich dargestellt wird, um seinen leitenden Status anzuzeigen. Ebenso werden die aktuellen Zählwerte der Timer T2 und T3 als 193 bzw. 0 angezeigt. Der Ausgabewert des mathematischen Befehlsfelds ist zufällig 2400, ebenfalls in rotem Text dargestellt. Die farbliche Hervorhebung von Komponenten des Kontaktplans funktioniert natürlich nur, wenn der Computer, auf dem die Programmbearbeitungssoftware läuft, mit der SPS verbunden ist und sich die SPS im „Ausführen“-Modus befindet (und die Funktion „Status anzeigen“ der Bearbeitungssoftware aktiviert ist). Andernfalls besteht der Kontaktplan nur aus schwarzen Symbolen auf weißem Hintergrund. Die Statushervorhebung ist nicht nur sehr nützlich beim Debuggen von SPS-Programmen, sondern dient auch einem unschätzbaren Diagnosezweck, wenn ein Techniker ein SPS-Programm analysiert, um den Status realer Eingabe- und Ausgabegeräte zu überprüfen, die an die SPS angeschlossen sind. Dies gilt insbesondere dann, wenn der Status des Programms über ein Computernetzwerk aus der Ferne angezeigt wird, sodass Wartungspersonal Systemprobleme untersuchen kann, ohne sich auch nur in der Nähe der SPS aufhalten zu müssen!
  15. SPS-Programmierbeispiel für Mehrmotorensteuerung für Anfänger mit der Schneider Electric EcoStruxure Machine Expert Basic PLC-Software. Bitte beachten Sie, dass dieses SPS-Beispiel für Ingenieurstudenten gedacht ist, die daran interessiert sind, SPS-Übungen zu lernen und zu üben. Die Echtzeit-Industrie-SPS-Programme werden mit mehr Sicherheits- und Schutzfunktionen entwickelt. SPS-Programmierbeispiel für Mehrmotoren Entwerfen Sie eine SPS-Kontaktplanlogik für die folgende Anwendung. Wir verwenden drei Kippschalter zur Steuerung von drei Motoren. Wenn Schalter 1 eingeschaltet ist, sind Motor I, Motor II und Motor III eingeschaltet. Wenn Schalter 2 eingeschaltet ist, sind Motor I und Motor II eingeschaltet. Wenn Schalter 3 eingeschaltet ist, sind Motor I, Motor II und Motor III ausgeschaltet. Digitale Eingänge In diesem Beispielprogramm werden die folgenden digitalen Eingänge (DI) benötigt. Die zugewiesenen SPS-DI-Adressen werden ebenfalls erwähnt. Schalter 1: I0.0 Schalter 2: I0.1 Schalter 3: I0.2 Digitale Ausgänge In diesem Beispielprogramm werden die folgenden digitalen Ausgänge (DO) benötigt. Die zugewiesenen PLC-DO-Adressen werden ebenfalls erwähnt. Motor 1: Q0.0 Motor 2: Q0.1 Motor 3: Q0.2 Kontaktplan für Mehrmotorsteuerung Programmbeschreibung Für diese Anwendung haben wir die Software Ecostruxure Machine Expert Basic v1.2 zur Programmierung verwendet. Im obigen Programm haben wir normalerweise offene Kontakte für Schalter 1 (I0.0), normalerweise geschlossene Kontakte für Schalter 2 (I0.1) und Schalter 3 (I0.2) verwendet. Schalter 1 und Schalter 3 sind für Motor 1 und Motor 2 in Reihe geschaltet, wodurch ein UND-Logikgatter implementiert wird. Für Motor 3 sind Schalter 1, Schalter 2 und Schalter 3 in Reihe geschaltet, wodurch ein UND-Logikgatter implementiert wird. Damit Motor 1 und Motor 2 eingeschaltet sind, muss Schalter 1 eingeschaltet und Schalter 3 ausgeschaltet sein. Wenn Schalter 1 eingeschaltet und Schalter 2 und Schalter 3 ausgeschaltet sind, ist Motor 3 eingeschaltet. Wenn Schalter 3 eingeschaltet wird, werden alle Motoren ausgeschaltet, d. h. Motor 1, Motor 2 und Motor 3 sind ausgeschaltet. Motor 3 wird ausgeschaltet, wenn Schalter 2 eingeschaltet wird. Wenn Schalter 1 eingeschaltet wird, werden alle Motoren eingeschaltet, da der Strom auch durch Schalter 2 und Schalter 3 fließt, da es sich dabei um normalerweise geschlossene Kontakte handelt. Ohne Ausschalten von Schalter 1 bleiben Motor 1 und Motor 2 weiterhin eingeschaltet, aber Motor 3 wird ausgeschaltet, wenn Schalter 2 eingeschaltet wird. Beim Einschalten von Schalter 2 wird kein Strom an Motor 3 weitergeleitet. Alle Motoren werden ausgeschaltet, wenn Schalter 3 eingeschaltet wird, selbst wenn andere Schalter eingeschaltet sind. Wenn Schalter 1 eingeschaltet ist Der Strom fließt durch Schalter 1, da er sich im Zustand „true“ befindet. Im Zustand „false“ leiten auch Schalter 3 und Schalter 4 Strom an die Ausgänge weiter. Wenn Schalter 2 eingeschaltet ist Der Strom fließt nicht durch Schalter 2, wenn er eingeschaltet ist. Im Zustand „true“ unterbricht der normalerweise geschlossene Kontakt den Stromkreis. Wenn Schalter 3 eingeschaltet ist Schalter 3 ist ein normalerweise geschlossener Kontakt. Wenn er eingeschaltet ist, kann kein Strom durch ihn fließen. Infolgedessen ist keiner der Ausgänge eingeschaltet.
  16. leikang

    SPS-Logikfunktionen

    Es gibt viele Steuerungssituationen, in denen Aktionen eingeleitet werden müssen, wenn eine bestimmte Kombination von Logikfunktionsbedingungen in einer SPS erfüllt ist. SPS-Logikfunktionen Bei einer automatischen Bohrmaschine könnte beispielsweise die Bedingung vorliegen, dass der Bohrmotor aktiviert werden soll, wenn die Endschalter aktiviert werden, die das Vorhandensein des Werkstücks und die Bohrposition als an der Oberfläche des Werkstücks liegend anzeigen. Eine solche Situation beinhaltet die UND-Logikfunktion, wobei sowohl Bedingung A als auch Bedingung B erfüllt sein müssen, damit eine Ausgabe erfolgt. Dieser Abschnitt befasst sich mit solchen Logikfunktionen. SPS UND LOGIK Abbildung 1.7a zeigt eine Situation, in der eine Ausgabe nur dann aktiviert wird, wenn zwei normalerweise offene Schalter beide geschlossen sind. Schalter A und Schalter B müssen beide geschlossen sein, was somit eine UND-Logiksituation ergibt. Wir können uns dies als ein Steuerungssystem mit zwei Eingängen A und B vorstellen (Abbildung 1.7b). Nur wenn A und B beide eingeschaltet sind, gibt es eine Ausgabe. Wenn wir also 1 verwenden, um ein Ein-Signal anzuzeigen, und 0, um ein Aus-Signal darzustellen, müssen A und B beide 1 sein, damit es eine 1-Ausgabe gibt. Eine solche Operation wird von einem Logikgatter gesteuert, und die Beziehung zwischen den Eingängen eines Logikgatters und den Ausgängen wird in einer als Wahrheitstabelle bezeichneten Form tabellarisch dargestellt. Für das UND-Gatter haben wir also: Ein Beispiel für ein UND-Gatter ist ein Verriegelungssteuerungssystem für eine Werkzeugmaschine, sodass diese nur betrieben werden kann, wenn die Schutzvorrichtung in Position ist und die Stromversorgung eingeschaltet ist. Abbildung 1.8a zeigt ein UND-Gattersystem in einem Leiterdiagramm. Das Leiterdiagramm beginnt mit j j, einem normalerweise offenen Satz von Kontakten mit der Bezeichnung Eingang A, um Schalter A darzustellen, und in Reihe dazu j j, einem weiteren normalerweise offenen Satz von Kontakten mit der Bezeichnung Eingang B, um Schalter B darzustellen. Die Linie endet dann mit O, um den Ausgang darzustellen. Damit ein Ausgang vorhanden ist, müssen sowohl Eingang A als auch Eingang B vorhanden sein, d. h. die Kontakte von Eingang A und Eingang B müssen geschlossen sein (Abbildung 1.8b). Im Allgemeinen gilt: Auf einem Leiterdiagramm stellen Kontakte in einer horizontalen Sprosse, d. h. Kontakte in Reihe, die logischen UND-Operationen dar. SPS-ODER-LOGIK Abbildung 1.9a zeigt einen Stromkreis, bei dem ein Ausgang aktiviert wird, wenn Schalter A oder B, beide normalerweise offen, geschlossen sind. Dies beschreibt ein ODER-Logikgatter (Abbildung 1.9b), da Eingang A oder Eingang B eingeschaltet sein müssen, damit ein Ausgang vorhanden ist. Die Wahrheitstabelle lautet: Abbildung 1.10a zeigt ein ODER-Logikgattersystem auf einem Leiterdiagramm, Abbildung 1.10b zeigt eine gleichwertige alternative Art, dasselbe Diagramm zu zeichnen. Das Leiterdiagramm beginnt mit j j, normalerweise offenen Kontakten mit der Bezeichnung Eingang A, um Schalter A darzustellen, und parallel dazu j j, normalerweise offenen Kontakten mit der Bezeichnung Eingang B, um Schalter B darzustellen. Entweder Eingang A oder Eingang B müssen geschlossen sein, damit der Ausgang aktiviert wird (Abbildung 1.10c). Die Linie endet dann mit O, um den Ausgang darzustellen. Im Allgemeinen: Alternative Pfade, die durch vertikale Pfade von der Hauptsprosse eines Leiterdiagramms bereitgestellt werden, d. h. parallele Pfade, stellen logische ODER-Operationen dar. Ein Beispiel für ein ODER-Gatter-Steuerungssystem ist ein Förderband, das Flaschenprodukte zur Verpackung transportiert, wo eine Abweiserplatte aktiviert wird, um Flaschen in einen Ausschussbehälter abzulenken, wenn entweder das Gewicht nicht innerhalb bestimmter Toleranzen liegt oder kein Verschluss auf der Flasche ist. SPS, KEINE LOGIK Abbildung 1.11a zeigt einen elektrischen Schaltkreis, der von einem normalerweise geschlossenen Schalter gesteuert wird. Wenn ein Eingang an den Schalter angelegt wird, öffnet er sich und es fließt dann kein Strom im Schaltkreis. Dies veranschaulicht ein NICHT-Gatter, da es einen Ausgang gibt, wenn kein Eingang vorhanden ist, und keinen Ausgang, wenn ein Eingang vorhanden ist (Abbildung 1.11c). Das Gatter wird manchmal als Inverter bezeichnet. Die Wahrheitstabelle lautet: Abbildung 11.11b zeigt ein NICHT-Gattersystem in einem Leiterdiagramm. Die Kontakte von Eingang A sind als normalerweise geschlossen dargestellt. Dies ist in Reihe mit dem Ausgang ( ). Wenn kein Eingang an Eingang A anliegt, sind die Kontakte geschlossen und es gibt einen Ausgang. Wenn ein Eingang an Eingang A anliegt, öffnet er sich und es gibt dann keinen Ausgang. Ein Beispiel für ein NICHT-Gatter-Steuerungssystem ist ein Licht, das aufleuchtet, wenn es dunkel wird, d. h. wenn kein Lichteingang an den Lichtsensor angelegt wird, gibt es einen Ausgang. SPS-NAND-LOGIK Nehmen wir an, wir lassen einem UND-Gatter ein NICHT-Gatter folgen (Abbildung 1.12a). Die Konsequenz des NOT-Gatters ist, dass alle Ausgänge des AND-Gatters invertiert werden. Eine Alternative, die genau dieselben Ergebnisse liefert, besteht darin, an jeden Eingang ein NOT-Gatter anzulegen und dann ein OR-Gatter folgen zu lassen (Abbildung 1.12b). Es ergibt sich dieselbe Wahrheitstabelle, nämlich: Beide Eingänge A und B müssen 0 sein, damit es einen 1-Ausgang gibt. Es gibt einen Ausgang, wenn Eingang A und Eingang B nicht 1 sind. Die Kombination dieser Gatter wird als NAND-Gatter bezeichnet (Abbildung 1.13). Ein Beispiel für ein NAND-Gatter-Steuerungssystem ist eine Warnleuchte, die aufleuchtet, wenn bei einer Werkzeugmaschine der Sicherheitsschalter nicht aktiviert wurde und der Endschalter, der das Vorhandensein des Werkstücks signalisiert, nicht aktiviert wurde. SPS oder Logik Nehmen wir an, wir lassen auf ein OR-Gatter ein NOT-Gatter folgen (Abbildung 1.14a). Die Konsequenz des NOT-Gatters ist, die Ausgänge des OR-Gatters zu invertieren. Eine Alternative, die genau dieselben Ergebnisse liefert, besteht darin, an jeden Eingang ein NOT-Gatter und dann ein AND-Gatter für die resultierenden invertierten Eingänge anzubringen (Abbildung 1.14b). Nachfolgend sehen Sie die resultierende Wahrheitstabelle: Die Kombination aus OR- und NOT-Gattern wird als NOR-Gatter bezeichnet. Es gibt einen Ausgang, wenn weder Eingang A noch Eingang B 1 ist. Abbildung 1.15 zeigt ein Kontaktplandiagramm eines NOR-Systems. Wenn Eingang A und Eingang B beide nicht aktiviert sind, gibt es einen 1-Ausgang. Wenn entweder X400 oder X401 1 sind, gibt es eine 0-Ausgabe. SPS-Exklusiv-ODER-Logik (XOR) Das ODER-Gatter gibt eine Ausgabe aus, wenn einer oder beide der Eingänge 1 sind. Manchmal wird jedoch ein Gatter benötigt, das eine Ausgabe ausgibt, wenn einer der Eingänge 1 ist, aber nicht, wenn beide 1 sind, d. h. das die Wahrheitstabelle hat: Ein solches Gatter wird Exklusiv-ODER- oder XOR-Gatter genannt. Eine Möglichkeit, ein solches Gatter zu erhalten, ist die Verwendung von NICHT-, UND- und ODER-Gattern, wie in Abbildung 1.16 gezeigt. Abbildung 1.17 zeigt ein Leiterdiagramm für ein XOR-Gattersystem. Wenn Eingang A und Eingang B nicht aktiviert sind, gibt es eine 0-Ausgabe. Wenn nur Eingang A aktiviert ist, ergibt der obere Zweig eine Ausgabe von 1. Wenn nur Eingang B aktiviert ist, ergibt der untere Zweig eine Ausgabe von 1. Wenn sowohl Eingang A als auch Eingang B aktiviert sind, gibt es keine Ausgabe. In diesem Beispiel eines Logikgatters haben Eingang A und Eingang B zwei Kontaktsätze in den Schaltkreisen, wobei ein Satz normalerweise offen und der andere normalerweise geschlossen ist. Bei der SPS-Programmierung kann jeder Eingang so viele Kontaktsätze wie nötig haben. SPS Exclusive NOR (XNOR) LOGIC
  17. In diesem Beitrag erfahren wir, wie man digitale und analoge Eingänge in einer SPS filtert. Wie im Thema beschrieben, ist Filtern ein Mittel, um unerwünschte Spitzen in den in der SPS empfangenen Signalen zu entfernen. Seine Aufgabe besteht darin, die Schwankungen zu beseitigen und nur die richtigen Signaländerungen zu einem bestimmten Zeitpunkt an die SPS weiterzuleiten. In einer SPS kommt zuerst die Filterschaltung und dann die SPS-Eingangsverarbeitungsschaltung, die den endgültigen gefilterten Eingang akzeptiert und für ihre Logik verwendet. Digitale SPS-Eingangsfilter Betrachten wir zunächst den digitalen Eingang. Die Aufgabe eines Eingangs mit einem Filter besteht darin, einen digitalen Feldeingang zu akzeptieren und ihn über den Filter an eine Verarbeitungsschaltung weiterzuleiten. Wenn Sie das folgende Bild sehen, besteht es aus zwei Teilen. Zunächst einmal zeigt der grüne Kreis an, dass die Eingangsänderung weitergeleitet wird, und der rote Kreis zeigt an, dass die Eingangsänderung nicht weitergeleitet wird. Im ersten (oberen) Teil gibt es zwei Änderungen, bei denen es viele Schwankungen gibt und diese Eingangsänderungen umgangen werden. Es gibt zwei Änderungen, bei denen es keine Schwankungen gibt und diese Eingangsänderung an die Verarbeitungsschaltung weitergegeben wird. Die gleiche Theorie gilt für den zweiten (unteren) Teil. Dies ist durch Filtern möglich. Das Filtern wird durch einen Faktor oder eine Zeit definiert. Angenommen, Sie stellen eine Zeit von 3 ms ein. Die Rolle des Filters besteht darin, nur die Eingangsänderung zu akzeptieren, die länger als 3 ms bleibt. Wenn sich die Eingabe vor 3 ms ändert, wird diese Eingabe nicht berücksichtigt und ignoriert. Dies bedeutet, dass kurze und hochfrequente Störimpulse vernachlässigt werden. Diese Logik ist dieselbe wie ein Entprell-Timer, den wir in die SPS-Logik schreiben. Im folgenden Bild schaltet sich die Lampe nur ein, wenn der Startknopfeingang 3 Sekunden lang hoch bleibt. Dies ist dieselbe Logik, die in einem digitalen Passfilter verwendet wird. Die Eingangsänderung wird nur dann an den Verarbeitungsteil weitergeleitet, wenn dieser Eingang für die eingestellte Zeit einen Zustand (hoch oder niedrig) beibehält. Abgesehen von der Zeit haben einige SPS, wie besprochen, die Möglichkeit, anstelle der Zeit einen Faktor einzustellen. Der Faktor berechnet die interne Zeit und bestimmt die Filterstufe. Je höher der Faktorwert, desto höher die Filterleistung. SPS-Analogeingangsfilter Sehen wir uns nun die Filterung bei analogen Eingängen an. Da analoge Eingänge von Natur aus variabel sind, kann die Filterlogik für sie nicht auf dieselbe Weise wie für digitale Eingänge implementiert werden. Daher wird bei analogen Eingängen eine Mittelwertlogik verwendet. Der Filter mittelt die in einer bestimmten eingestellten Zeit erreichten Werte und gibt einen durchschnittlichen Endwert für diese Zeit an. Siehe das Bild unten für die Studie. Die erste – die blaue Farbe hat einen Faktor von 1. Die zweite – die grüne Farbe hat einen Faktor von 2. Die dritte – die orange Farbe hat einen Faktor von 3. Die vierte – die braune Farbe hat einen Faktor von 4. Wenn der Wert des Filterfaktors zunimmt, können Sie sehen, dass sich die Form des Signals verbessert, indem das Signal mit einem schärferen Wert gefiltert wird. In einer festgelegten Zeit wird der Filter die Werte mitteln, die er vom Eingang erhält; und basierend auf den darin verwendeten Formeln wird er den endgültigen Durchschnittsausgang pro Zeit ausgeben. Wenn also der Filterfaktor oder die Gewichtung erhöht wird, erhalten wir einen feineren Wert eines analogen Signals mit weniger Störungen. Normalerweise wird zu diesem Zweck ein First-Pass-Filter verwendet. Daraus schließen wir, dass die Filterung sehr nützlich ist, um unerwünschtes Rauschen vom Feldeingang zu reduzieren und geeignete Werte weiterzugeben, was auch den SPS-Eingangsschaltkreis vor Schäden schützt; wenn hohe oder unerwünschte Spitzen auftreten.
  18. Grundlagen des Kontaktplans in der SPS-Programmierung Kontaktplanlogik war ursprünglich eine schriftliche Methode zur Dokumentation des Entwurfs und der Konstruktion von Relaisgestellen, wie sie in der Fertigung und Prozesssteuerung verwendet werden. Jedes Gerät im Relaisgestell wurde im Kontaktplan durch ein Symbol dargestellt, wobei die Verbindungen zwischen diesen Geräten angezeigt wurden. Darüber hinaus wurden auch andere externe Elemente des Relaisgestells wie Pumpen, Heizungen usw. im Kontaktplan angezeigt. Kontaktplanlogik hat sich zu einer Programmiersprache entwickelt, die ein Programm durch ein grafisches Diagramm darstellt, das auf den Schaltplänen der Relaislogik-Hardware basiert. Kontaktplanlogik wird zur Entwicklung von Software für speicherprogrammierbare Steuerungen (SPS) verwendet, die in industriellen Steuerungsanwendungen verwendet werden. Der Name basiert auf der Beobachtung, dass Programme in dieser Sprache Leitern ähneln, mit zwei vertikalen Schienen und einer Reihe horizontaler Sprossen dazwischen. Während Kontaktplandiagramme früher die einzige verfügbare Notation zum Aufzeichnen von speicherprogrammierbaren Steuerungsprogrammen waren, sind heute andere Formen in IEC 61131-3 standardisiert. Kontaktplanlogik wird häufig zum Programmieren von SPSen verwendet, wenn eine sequentielle Steuerung eines Prozesses oder Fertigungsvorgangs erforderlich ist. Kontaktplanlogik ist für einfache, aber kritische Steuerungssysteme nützlich. Da speicherprogrammierbare Steuerungen immer ausgefeilter wurden, wurde sie auch in sehr komplexen Automatisierungssystemen verwendet. Häufig wird das Kontaktplanlogikprogramm in Verbindung mit einem HMI-Programm verwendet, das auf einer Computerarbeitsstation ausgeführt wird. Beispiel eines einfachen Kontaktplanlogikprogramms Die Sprache selbst kann als eine Reihe von Verbindungen zwischen logischen Prüfern (Kontakten) und Aktoren (Spulen) betrachtet werden. Wenn ein Pfad zwischen der linken Seite der Sprosse und dem Ausgang durch aktivierte (wahre oder „geschlossene“) Kontakte verfolgt werden kann, ist die Sprosse wahr und das Speicherbit der Ausgangsspule ist aktiviert oder wahr. Wenn kein Pfad verfolgt werden kann, ist der Ausgang falsch (0) und die „Spule“ wird analog zu elektromechanischen Relais als „stromlos“ betrachtet. Die Kontaktplanlogik verfügt über Kontakte, die Schaltkreise zur Steuerung von Spulen schließen oder unterbrechen. Jede Spule oder jeder Kontakt entspricht dem Status eines einzelnen Bits im Speicher des programmierbaren Controllers. Im Gegensatz zu elektromechanischen Relais kann ein Kontaktplanprogramm beliebig oft auf den Status eines einzelnen Bits verweisen, was einem Relais mit einer unendlich großen Anzahl von Kontakten entspricht. Sogenannte „Kontakte“ können sich auf physische („harte“) Eingaben an den programmierbaren Controller von physischen Geräten wie Drucktasten und Endschaltern über ein integriertes oder externes Eingabemodul beziehen oder den Status interner Speicherbits darstellen, die an anderer Stelle im Programm generiert werden können. Jede Sprosse der Kontaktplansprache verfügt normalerweise über eine Spule ganz rechts. Einige Hersteller erlauben möglicherweise mehr als eine Ausgangsspule auf einer Sprosse. —( )— Eine normale Spule, die immer dann aktiviert wird, wenn ihre Sprosse geschlossen ist. —()— Eine „Nicht“-Spule, die immer dann aktiviert wird, wenn ihre Sprosse geöffnet ist. —[ ]— Ein normaler Kontakt, der immer dann geschlossen wird, wenn seine entsprechende Spule oder ein Eingang, der sie steuert, aktiviert wird. —[]— Ein „Nicht“-Kontakt, der geschlossen wird, wenn die entsprechende Spule oder ein Eingang, der sie steuert, nicht aktiviert ist. Die „Spule“ (Ausgang einer Sprosse) kann einen physischen Ausgang darstellen, der ein an den programmierbaren Controller angeschlossenes Gerät steuert, oder ein internes Speicherbit zur Verwendung an anderer Stelle im Programm. Logisches UND ------[ ]--------------[ ]----------------( ) Schlüsselschalter 1 Schlüsselschalter 2 Türmotor Das Obige realisiert die Funktion: Türmotor = Schlüsselschalter 1 UND Schlüsselschalter 2 Diese Schaltung zeigt zwei Schlüsselschalter, die Sicherheitspersonal verwenden könnte, um einen Elektromotor an einer Banktresortür zu aktivieren. Wenn die normalerweise offenen Kontakte beider Schalter geschlossen werden, kann Strom zum Motor fließen, der die Tür öffnet. Logisches UND mit NICHT ------[ ]--------------[]----------------( ) Tür schließen Hindernis Türmotor Das Obige realisiert die Funktion: Türmotor = Tür schließen UND NICHT (Hindernis). Diese Schaltung zeigt einen Druckknopf, der eine Tür schließt, und einen Hindernisdetektor, der erkennt, ob sich etwas im Weg der sich schließenden Tür befindet. Wenn der normalerweise offene Druckknopfkontakt schließt und der normalerweise geschlossene Hindernisdetektor geschlossen ist (kein Hindernis erkannt), kann Strom zum Motor fließen, der die Tür schließt. Logisches ODER --+-------[ ]-------+-----------------( ) | Äußeres Entriegeln | Entriegeln | | +-------[ ]-------+ Inneres Entriegeln Das Obige realisiert die Funktion: Entriegeln = Inneres Entriegeln ODER Äußeres Entriegeln Diese Schaltung zeigt die beiden Dinge, die die elektrischen Türschlösser eines Autos auslösen können. Der Fernbedienungsempfänger wird immer mit Strom versorgt. Der Schlossmagnet wird mit Strom versorgt, wenn einer der beiden Kontaktsätze geschlossen ist. Industrielles STOP/START In der üblichen industriellen Start-/Stopp-Verriegelungslogik haben wir eine „Start“-Taste zum Einschalten eines Motorschütz und eine „Stopp“-Taste zum Ausschalten des Schützes. Wenn die „Start“-Taste gedrückt wird, wird der Eingang über den Öffnerkontakt der „Stopp“-Taste wahr. Wenn der „Run“-Eingang wahr wird, schließt der versiegelte „Run“-Schließerkontakt parallel zum „Start“-Schließerkontakt und hält die Eingangslogik wahr (verriegelt oder versiegelt). Nachdem der Schaltkreis verriegelt wurde, kann die „Stopp“-Taste gedrückt werden, wodurch sich sein Öffnerkontakt öffnet und folglich der Eingang falsch wird. Der „Run“-Schließerkontakt öffnet sich dann und die Schaltkreislogik kehrt in ihren Ruhezustand zurück. --+----[ ]--+----[]----( ) | Start | Stopp Lauf | | +----[ ]--+ laufen -------[ ]--------------( ) Motor laufen lassen Das Obige realisiert die Funktion: laufen = (Start ODER laufen) UND (NICHT Stopp) Beachten Sie die Verwendung von Klammern, um die logische ODER-Funktion zu gruppieren, bevor die logische UND-Funktion ausgewertet wird (die eine höhere Betriebspriorität hat). Beachten Sie auch die Verwendung von NICHT, um die „Stopp“-NC-Kontaktlogik darzustellen. Diese Verriegelungskonfiguration ist eine gängige Redewendung in der Kontaktplanlogik. In der Kontaktplanlogik wird sie als Seal-In-Logik bezeichnet. Der Schlüssel zum Verständnis der Verriegelung liegt in der Erkenntnis, dass der „Start“-Schalter ein Momentschalter ist (sobald der Benutzer die Taste loslässt, ist der Schalter wieder geöffnet). Sobald der „Lauf“-Magnetschalter einrastet, schließt er den „Lauf“-NO-Kontakt, der den Magnetschalter einrastet. Das Öffnen des „Start“-Schalters hat dann keine Wirkung. Aus Sicherheitsgründen sollte ein Not-Aus und/oder Stopp in Reihe mit dem Startschalter fest verdrahtet sein, und die Relaislogik sollte dies widerspiegeln. --[]----[]----+--[ ]--+---------( ) ES Stop | Start | Motor | | +--[ ]--+ Run Komplexe Logik Hier ist ein Beispiel dafür, wie zwei Sprossen in einem Leiterlogikprogramm aussehen könnten. In realen Anwendungen kann es Hunderte oder Tausende von Sprossen geben. Normalerweise wird komplexe Leiterlogik von links nach rechts und von oben nach unten „gelesen“. Wenn jede der Linien (oder Sprossen) ausgewertet wird, kann die Ausgangsspule einer Sprosse als Eingang in die nächste Stufe der Leiter einspeisen. In einem komplexen System gibt es viele „Sprossen“ auf einer Leiter, die in der Reihenfolge der Auswertung nummeriert sind. 1. ----[ ]---------+----[ ]-----+----( ) Schalter | HiTemp | A/C | | +----[ ]-----+ Feucht 2. ----[ ]----[]--------------------( ) A/C Heizen Kühlen Zeile 1 realisiert die Funktion: A/C = Schalter UND ( HiTemp ODER Feucht ) Zeile 2 realisiert die Funktion: Kühlen = A/C UND ( NICHT Heizen ) Dies stellt ein etwas komplexeres System für Sprosse 2 dar. Nachdem die erste Zeile ausgewertet wurde, wird die Ausgangsspule „A/C“ in Sprosse 2 eingespeist, die dann ausgewertet wird, und die Ausgangsspule „Kühlen“ könnte in ein Ausgangsgerät „Kompressor“ oder in Sprosse 3 auf der Leiter eingespeist werden. Dieses System ermöglicht die Aufschlüsselung und Auswertung sehr komplexer Logikdesigns. Zusätzliche Funktionalität Zusätzliche Funktionalität kann einer Leiterlogikimplementierung vom SPS-Hersteller als spezieller Block hinzugefügt werden. Wenn der spezielle Block eingeschaltet wird, führt er Code für vorgegebene Argumente aus. Diese Argumente können innerhalb des speziellen Blocks angezeigt werden. +-------+ -----[ ]--------------------+ A +---- Fernentriegelung +-------+ Fernzähler +-------+ -----[ ]--------------------+ B +---- Innenentriegelung +-------+ Innenzähler +--------+ --------------------+ A + B +----------- | in C | +--------+ Addierer In diesem Beispiel zählt das System, wie oft die Innen- und Fernentriegelungstasten gedrückt werden. Diese Informationen werden in den Speicherplätzen A und B gespeichert. Speicherplatz C enthält die Gesamtzahl der elektronischen Türentriegelungen. SPS haben viele Arten von Spezialblöcken. Dazu gehören Timer, Rechenoperatoren und Vergleiche, Tabellennachschlagevorgänge, Textverarbeitung, PID-Steuerung und Filterfunktionen. Leistungsstärkere SPS können auf einer Gruppe interner Speicherplätze arbeiten und eine Operation auf einem Adressbereich ausführen, um beispielsweise einen physischen sequentiellen Trommelregler oder eine Finite-State-Maschine zu simulieren. In einigen Fällen können Benutzer ihre eigenen Spezialblöcke definieren, die eigentlich Unterprogramme oder Makros sind. Die große Bibliothek an Spezialblöcken und die schnelle Ausführung haben die Verwendung von SPSen zur Implementierung sehr komplexer Automatisierungssysteme ermöglicht.
  19. Este artículo trata sobre el método de resolución de problemas de programación de PLC. En los PLC industriales donde se utilizan miles de entradas y salidas, sabemos la duración de los programas de PLC, depende de la aplicación o el uso de la planta. Solucionar problemas de programas de PLC Siemens Algunas veces, las personas pueden cambiar los parámetros lógicos sin saberlo y esto puede provocar una falla. Incluso se crean algunas fallas durante la etapa de diseño lógico debido a la complejidad del diseño. El software siemens plc tiene diferentes herramientas útiles disponibles para solucionar las fallas generadas en los programas. Las fallas pueden ser como superposición de direcciones, múltiples instancias de salida iguales, superposición de direcciones de bits de memoria, muchas veces se usa un solo programa para trabajar una y otra vez, etc. Para descubrir estos problemas, hay cuatro tipos de ventanas disponibles en el software de Siemens que nos ayudarán a solucionar los problemas. Ellos son: Referencia cruzada Estructura de llamada Lista de tareas Estructura de dependencia Analicemos cómo usarlos en nuestro programa para solucionar problemas y dónde encontrarlos en el software. Referencia cruzada La referencia cruzada se utiliza para encontrar todas las entradas y salidas digitales y analógicas utilizadas en la lógica. Nos ayudará a saber la cantidad de veces que se utilizan las E/S en el programa y también llevará a los usuarios directamente a la ubicación específica de las E/S en las páginas lógicas. A continuación se muestra un ejemplo de uno de los programas, en el que puede ver cómo se ve la tabla de referencias cruzadas. Contiene toda la información como direccionamiento, idioma del programa, entradas y salidas utilizadas, etc. Estructura de llamada Cuando desee saber qué bloque se utiliza en la programación, se utiliza la estructura de llamada. Esta es una función inversa de referencia cruzada en la que llegamos a saber cuántas veces se usan SFC y bloques FB en OB (Bloque de organización) y aquí llegamos a saber cuántas veces se usan OB en SFC y FB. Lista de tareas La lista de asignaciones es una característica muy útil a la hora de saber cuántas entradas, salidas, temporizadores y contadores utilizamos en nuestra aplicación y cuántos de ellos aún quedan, para poder utilizarlos en futuras lógicas. Estructura de dependencia La estructura de dependencia se utiliza para mostrar dónde se utilizan todos y cada uno de los bloques dentro de la programación. Pero en el paso 7 no lo llevará directamente a la ubicación; sin embargo, en TIA PORTAL lo llevará a la ubicación donde está escrito el programa. NOTA: Para abrir estas ventanas en el paso 7, use la información como se muestra en Dibujo. Después de hacer clic en mostrar tienes las opciones. En TIA PORTAL, siga el siguiente paso que se muestra en el dibujo.
  20. En esta publicación, daré algunas instrucciones básicas que provienen de mi experiencia personal para brindarle una guía sobre cómo es la resolución de problemas en sistemas de automatización (PLC/DCS): La resolución de problemas de los sistemas de automatización tiene en general la misma táctica para encontrar la solución a la falla del sistema. Sin embargo, dependiendo de la complejidad y el tamaño de la aplicación y del sistema de automatización específico, los pasos para la solución de problemas serían un poco diferentes o más complicados. El mejor conocimiento se obtiene mediante la práctica y las condiciones reales de resolución de problemas. Practicar una y otra vez es la solución en mi opinión. ¡¡Cualquier suplemento y comentario es bienvenido!! Solucionar problemas de un sistema PLC Antes de continuar, aceptamos que los sistemas de automatización modernos tienen PLC para controlar la aplicación. Si tenemos una aplicación pequeña entonces el sistema posiblemente tenga un microPLC (o nanoPLC) u otro tipo de controlador compacto (muchas veces esto depende de la aplicación). Dije sistemas de automatización modernos porque en el pasado (antes de que los PLC y otros controladores compactos fueran conocidos y utilizados por las empresas de desarrollo de automatización), el control de un sistema de automatización se realizaba únicamente con relés. Investigar el programa del controlador Lo primero que debemos hacer es averiguar si cumplimos las condiciones adecuadas para la operación que está defectuosa. Para ello debemos encontrar la “mente” de nuestro sistema. Esta “mente” es el controlador (ya sea una especie de PLC u otro tipo de controlador compacto). Si no cumplimos con las condiciones adecuadas, entonces debemos investigar el programa del controlador para averiguar el origen del problema (SIEMPRE revise que aparezcan mensajes en SCADA. Esto guiará más rápido a la solución porque en SCADA aparece información importante como falla /descripción de alarma o una dirección específica en el PLC). Lo que descubriremos es... ya sea una señal defectuosa del hardware (por ejemplo, una señal digital de un botón o una señal digital de un interruptor mecánico o una señal digital de un contacto de relé que "no llega" a la entrada del controlador o una señal analógica que tiene valores incorrectos) o una señal defectuosa de otro sistema de software (por ejemplo, SCADA). Investigar las condiciones que surgieron del hardware. Cuando concluimos sobre el origen del problema, entonces dejamos por un momento el programa del controlador y salimos a comprobar nuestras conclusiones. Ya deberíamos haber encontrado los dibujos del sistema de automatización para poder ver las conexiones de los componentes que queremos comprobar. Por ejemplo, si descubrimos que tenemos una señal digital de un botón que “no llega” a la entrada del controlador, entonces tomamos nuestro multímetro y vamos a revisar el botón. Si el botón está bien, investigamos si hay algún fusible entre el botón y la entrada del controlador. Si lo hay, lo comprobamos. Si el fusible está bien, entonces investigamos el recorrido del cable. Quizás tengamos un cable cortado. Si el cable está bien, entonces quizás tengamos un problema de hardware en la entrada del controlador y quizás debamos cambiar este módulo de entrada por uno nuevo o arreglarlo (las reparaciones deben ser realizadas por personal calificado). Investigar el hardware tras las salidas de nuestro controlador. Si concluimos que estamos en las condiciones adecuadas, entonces debemos revisar los componentes que tenemos entre el controlador y el equipo defectuoso (nos referimos al equipo que no funciona como debería). Por ejemplo, si tenemos un horno industrial que no cierra la puerta (aunque tengamos las condiciones para cerrar la puerta desde el programa), tal vez tengamos un relé defectuoso que se energiza desde el PLC (u otro controlador) para cerrar la puerta. Si el relé está bien, entonces quizás tengamos problema con el motor que se encarga de cerrar la puerta. Debemos verificar el estado del motor (bobinas del motor, piezas mecánicas) Si el motor está bien, debemos verificar los valores de voltaje que llegan a la entrada del motor (con nuestro multímetro) y también verificar el estado del cable si las medidas del multímetro no son correctas. Si el voltaje y el cable están bien, entonces tal vez tengamos un atasco en algún lugar de la construcción de la puerta del horno. ¡Las unidades de potencia son una “ventaja”! Generalmente, cuando tenemos unidades de potencia (variadores) en nuestro sistema de automatización para accionar un motor, entonces debemos tener juntos el manual de la unidad de potencia específica. Esto se debe a que las unidades de potencia cuentan con un display digital o displays LED de 7 segmentos o simples LEd’s para informarnos sobre la falla que existe en su interior o en el motor accionado. Esto es muy útil para ingenieros y técnicos. Además, las unidades de potencia modernas tienen algoritmos especiales para verificar el estado del motor, los valores de voltaje y corriente, etc. Por ejemplo, si un motor se sobrecalienta, el variador nos informará de ello porque verifica continuamente el sensor de temperatura (por ejemplo, el termistor) que se encuentra dentro de la carcasa del motor. Luego debemos revisar el motor si realmente está sobrecalentado o tenemos algún sensor de temperatura defectuoso que debemos reemplazar. Verificar el estado de los controladores Algunas veces, cuando la CPU de nuestro PLC detecta una condición inaceptable en el flujo del programa, entonces pasa al modo “STOP” y posiblemente un led parpadea indicando este mal funcionamiento. Además, si ocurre algún otro mal funcionamiento en el sistema, algunos LED indican el tipo de falla (consulte el manual del controlador para obtener más información). El mismo comportamiento tiene en general cualquier tipo de controlador que se establezca en un sistema de automatización. Sistemas de seguridad Muchos sistemas de automatización (a menudo máquinas de producción) tienen en su diseño algunos "sistemas de seguridad" como "Pilz" o "Siemens Sirius". Se trata de controladores compactos e inteligentes para controlar situaciones como la apertura de puertas protectoras o la parada de emergencia. Cuando ocurre algo de esto, el sistema de seguridad detiene el funcionamiento del sistema de automatización para protección de personas y máquinas. Para restablecer el sistema de automatización al estado funcional, existen instrucciones especiales en los manuales de los sistemas de seguridad. La conclusión de todo lo anterior es tener una táctica paso a paso para la resolución de problemas. Con el paso del tiempo y adquiriendo más experiencia, quizás nos saltemos algunos pasos, sobre todo si somos el personal responsable del mantenimiento de un sistema con el que nos topamos a diario. Sin embargo, una buena táctica es ser organizado y paciente. ¡Buena suerte con tus esfuerzos!
  21. En este post entenderemos cómo filtrar entradas digitales y analógicas en un PLC. Como dice el tema, el filtrado es un medio para eliminar picos no deseados en las señales recibidas en el PLC. Su función es eliminar las fluctuaciones y pasar sólo los cambios de señal adecuados en un momento determinado al PLC. Dentro de un PLC, el circuito de filtro viene primero y luego viene el circuito de procesamiento de entrada del PLC, que acepta la entrada filtrada final y la utiliza para su lógica. Filtros de entrada digital PLC Consideremos primero la entrada digital. La función de la entrada con un filtro es aceptar una entrada de campo digital y pasarla a un circuito de procesamiento a través del filtro. Si ve la imagen de abajo, hay dos partes. En primer lugar, el círculo verde indica que se aprobará el cambio de entrada y el círculo rojo muestra que no se aprobará el cambio de entrada. En la primera parte (arriba), hay dos cambios en los que hay muchas fluctuaciones y los cambios de entrada se omitirán. Hay dos cambios en los que no hay fluctuaciones y ese cambio de entrada se pasará al circuito de procesamiento. Lo mismo es la teoría con la segunda parte (abajo). Esto es posible filtrando. El filtrado se define por un factor o tiempo. Supongamos que establece un tiempo de 3 ms. La función del filtro es aceptar solo el cambio de entrada que se mantiene por encima de 3 ms. Si la entrada cambia antes de 3 ms, esa entrada no se considerará y se ignorará. Esto significa que se desprecian los impulsos perturbadores cortos y de alta frecuencia. Esta lógica es la misma que la del temporizador antirrebote que escribimos en la lógica del PLC. En la imagen de abajo, la lámpara se encenderá solo cuando la entrada del botón de inicio permanezca alta durante 3 segundos. Esta es la misma lógica utilizada en un filtro de paso digital. Pasará el cambio de entrada a la parte de procesamiento solo cuando esa entrada mantenga un estado (alto o bajo) durante el tiempo establecido. Además del tiempo, como comentamos, algunos PLC tienen la opción de configurar un factor en lugar del tiempo. El factor calcula el tiempo interno y decide el nivel de filtrado. Cuanto mayor sea el valor del factor, mayor será el poder de filtrado. Filtros de entrada analógica PLC Ahora veamos el filtrado en entradas analógicas. Como las entradas analógicas son de naturaleza variable, la lógica de filtro para ellas no se puede implementar de la misma manera que para las entradas digitales. Entonces, en las entradas analógicas, se utiliza la lógica de promedio. El filtro promediará los valores alcanzados en un tiempo determinado y dará un valor final promedio para ese tiempo. Consulte la imagen a continuación para ver el estudio. El primero: el color azul tiene un factor de 1. El segundo, el color verde, tiene un factor de 2. El tercero: el color naranja tiene un factor de 3. El cuarto: el color marrón tiene un factor de 4. A medida que aumenta el valor del factor de filtro, puede ver que la forma de la señal mejora al filtrar la señal a un valor más nítido. En un tiempo determinado, el filtro promediará los valores que obtiene de la entrada; y, según las fórmulas utilizadas en él, dará el resultado promedio final por tiempo. Entonces, a medida que aumenta el factor de filtro o ponderación, obtenemos un valor más fino de una señal analógica con menos interferencia. Normalmente se utiliza para este fin un filtro de primer paso. De esta manera, concluimos que el filtrado es de gran utilidad para reducir el ruido no deseado de la entrada de campo y pasar valores adecuados, que también protegerán el circuito de entrada del PLC de daños; si se producen picos altos o no deseados.
  22. leikang

    Arquitectura DCS versus PLC

    La principal diferencia entre DCS y PLC es el modelo de negocio que analizamos comparando la arquitectura DCS versus PLC. Arquitectura DCS versus PLC Se puede decir que el modelo de negocio DCS se basa en un sistema integrado monolítico de un solo fabricante. Arquitectura DCS Para un DCS, el controlador, el subsistema de E/S, el software del servidor de base de datos, el software de ingeniería y el software del operador son todos una única unidad monolítica diseñada en conjunto y solo funcionan entre sí. No es posible utilizar componentes de terceros. No es posible utilizar ninguno de estos componentes en ningún otro sistema. Un DCS utiliza una red de subsistema de E/S y una red de control basada en Ethernet estándar, pero con un protocolo de aplicación propietario y, por lo general, solo con un modelo particular aprobado de conmutadores Ethernet. Figura 1 En un DCS todos los componentes provienen del mismo fabricante Solo se permite una versión específica de Windows y solo en un tipo de computadora aprobada enviada por el fabricante del DCS. Estas restricciones permiten al fabricante de DCS probar todo en conjunto de manera muy exhaustiva, a gran escala, con mucha carga y con muchos controladores y estaciones de trabajo. También se prueban juntas aplicaciones como control de lotes, control avanzado y ajuste automático, etc. Esto garantiza que no haya conflictos de compatibilidad ni dependencias imprevistas. Es posible realizar pruebas exhaustivas a gran escala porque básicamente hay un solo tipo de cada componente, por lo que solo hay una o muy pocas combinaciones. El software de terceros solo está permitido en “estaciones de aplicaciones” separadas donde no puede entrar en conflicto con las aplicaciones nativas del DCS y debe ser probado y aprobado por el fabricante del DCS; en la lista blanca. Un DCS es monolítico y utiliza el mismo subsistema de E/S, controlador y software de la misma marca, y una única plataforma de computadora y sistema operativo. Esto ha sido probado exhaustivamente a muy gran escala. Soporte a largo plazo de DCS Los sistemas suelen permanecer operativos durante 15 años o más. Durante este tiempo, habrá varias versiones de Windows, paquetes de servicio, revisiones, muchas actualizaciones de definiciones de virus y también será necesario reemplazar el hardware de la computadora. Por lo general, DCS solo admite un único tipo de software antivirus y cada vez que hay una nueva definición de virus o cuando hay un paquete de servicio o revisión del sistema operativo Windows, el sistema prueba nuevamente todo el conjunto monolítico de todo el hardware y software. proveedor antes del lanzamiento, lo que garantiza que la definición de virus y el paquete de servicio se puedan implementar sin conflictos de compatibilidad. Actualización del DCS Las versiones de DCS también se actualizan como una única unidad monolítica de todo el hardware y software, como el firmware de la tarjeta de E/S, el firmware del controlador, el software del servidor, el software de la estación de ingeniería, el software de la estación del operador y cualquier otro software, todos se actualizan juntos. Cada vez que hay una nueva versión del sistema, el fabricante del sistema ha probado minuciosamente todos estos componentes juntos a gran escala para garantizar que todos sean compatibles entre sí. Además, el proceso de transferencia directa en línea de la versión anterior a la nueva versión se ha probado minuciosamente a gran escala, lo que garantiza una implementación sin problemas en el sitio. Es esta tranquilidad que proporcionan las pruebas exhaustivas y a gran escala lo que hace que el DCS sea muy popular en grandes instalaciones como complejos petroquímicos. Estas pruebas resultan prácticas gracias a las pocas combinaciones en un sistema monolítico. Arquitectura PLC / Modelo de Negocio Se puede decir que el modelo de negocio de PLC se basa en una arquitectura flexible realizada por un integrador de sistemas (SI). Arquitectura PLC La arquitectura del PLC es muy flexible y cada componente se puede seleccionar libremente entre cualquiera de los muchos proveedores. El PLC es la CPU con software de configuración y subsistema IO. A veces, el subsistema de E/S puede provenir de un tercero. Incluso las tarjetas de E/S que se conectan al backplane pueden provenir de terceros. El software HMI suele ser de terceros. Normalmente es mejor un servidor OPC nativo del fabricante del PLC, pero a veces se utilizan servidores OPC de terceros. Figura 2 Para un PLC se integran componentes de diferentes fabricantes Básicamente, cualquier PLC funciona con cualquier subsistema de E/S, servidor OPC y software HMI porque se utilizan protocolos estándar como PROFIBUS-DP, PROFINET, Modbus/RTU, Modbus/TCP, DeviceNet y EtherNet/IP, así como OPC, etc. . El equipo de red, las computadoras y la versión de Windows se pueden seleccionar libremente. Algunos componentes que no funcionan están en la lista negra. Figura 3 DCS utiliza un único proveedor, mientras que las soluciones PLC combinan varios proveedores, lo que genera una gran cantidad de combinaciones. Nota: Actualmente también está disponible un proveedor de paquete de PLC único Esta flexibilidad permite cientos de combinaciones de hardware y software, lo que hace imposible que estos fabricantes se reúnan para probar todas las combinaciones posibles de su hardware y software en cada versión de Windows antes de que una planta decida comprar. Los fabricantes involucrados pueden probar algunas combinaciones, pero pueden o no ser a gran escala con cargas pesadas. Un PLC permite cualquier combinación de subsistema de E/S, CPU y software HMI/SCADA, en una amplia variedad de plataformas informáticas y de sistemas operativos. No se pueden probar todas las combinaciones. El fabricante de PLC puede suministrar todos los componentes de hardware y software, todos del mismo fabricante, ya que muchos fabricantes de PLC han adquirido empresas de HMI. Si es así, es posible que esta combinación en particular haya sido probada más exhaustivamente que las otras combinaciones probadas. Las aplicaciones auxiliares de terceros, como control de lotes, control avanzado y autoajuste, etc., generalmente no se prueban juntas, ya que dan como resultado un número aún mayor de combinaciones. PLC utiliza software de configuración propietario al igual que DCS. Es decir, no puede utilizar software de configuración de terceros para su PLC, al igual que un DCS. Un servidor OPC nativo para el PLC es mejor que un servidor OPC de terceros porque el software de configuración del PLC generalmente configura automáticamente el espacio de direcciones para el servidor OPC. Soporte a largo plazo para PLC Durante los 15 años o más de funcionamiento típico del sistema, habrá varias versiones de Windows, paquetes de servicio, revisiones, muchas actualizaciones de definiciones de virus y también será necesario reemplazar el hardware de la computadora. Normalmente, los PLC no tienen restricciones en cuanto al software antivirus o la versión del sistema operativo Windows, por lo que nuevamente el número de combinaciones de definiciones de virus, paquetes de servicios y revisiones se vuelve demasiado amplio y poco práctico para que estos fabricantes se reúnan para probar cada nueva combinación posible antes de una implementación en plantas para garantizar que no habrá conflictos de compatibilidad cuando se implemente en una gran cantidad de combinaciones de hardware y software. El fabricante del PLC puede limitar a un único software antivirus y versión de Windows. Si es así, es posible que esta combinación en particular haya sido probada más exhaustivamente que las otras combinaciones que prueban. Actualización de PLC Para un PLC, los componentes de hardware y software se actualizan individualmente. Es decir, el firmware del subsistema de E/S, el firmware de la CPU y el software de configuración, el servidor OPC, el software HMI y cualquier otro software se actualizan de forma independiente entre sí. Teniendo en cuenta diferentes versiones para cada opción de componentes, el número de combinaciones aumenta en órdenes de magnitud. Esta flexibilidad hace que no sea práctico que estos fabricantes se reúnan para probar todas las combinaciones posibles de nuevas versiones antes de su implementación en las plantas. Probar la transferencia en caliente de una combinación de versiones a otra combinación de versiones se vuelve casi imposible. El fabricante del PLC puede suministrar todos los componentes de hardware y software, limitarse a un único software antivirus y una versión de Windows que se prueban antes de la implementación, y limitarse a un único controlador de servidor de base de datos de subsistema de E/S/estación de operador de PLC/HMI, DCS, sistema PLC. actualizaciones de versiones amplias y pruebe la transferencia directa antes de la implementación. De esta forma se abandonaría la flexibilidad del PLC para alcanzar la robustez de un DCS.
  23. Cuando trabaja en un sistema de automatización industrial para la programación de PLC, tiene requisitos en los que necesita controlar un proceso de forma gradual o paso a paso. Algoritmos de control No puedes simplemente activar o desactivar una lógica para realizar tu trabajo. Puede tener efectos adversos en la salida real de su PLC. Por esta razón, existen varios tipos de métodos de control disponibles en un programa de PLC para realizar las acciones adecuadas. En esta publicación, veremos los diversos métodos de algoritmos de control que se utilizan en un programa de PLC. Control PID Este es, con diferencia, el método de control más famoso. PID utiliza un mecanismo de control de circuito cerrado. Esto significa que primero recibirá la retroalimentación y, según lo que desee, variará la salida en consecuencia. Para ello, el controlador PID utiliza cálculos matemáticos internos con tres parámetros: proporción, integral y derivada. Entonces, si desea controlar una enfriadora con un compresor, entonces el PLC controlará la salida del compresor midiendo primero la temperatura real y verificándola con la cantidad que requiere el usuario. En función de esa diferencia cada vez, la salida del compresor se controlará gradualmente o se encenderá y apagará para mantener la temperatura. Para ello se utilizará un bloque PID en el programa del PLC para realizar esta tarea. Generador de funciones Este es un tipo de método de control muy simple. En el generador de funciones, debe definir una tabla de entrada de n valores. De manera similar, defina una tabla de salida de n valores. Entonces, por ejemplo, si definimos 10 tablas de valores tanto en el lado de entrada como en el de salida, tenemos un elemento de 10 tamaños. Ahora bien, estos 10 elementos tendrán valores diferentes. Si configura 0-100 en el lado de entrada, entonces habremos configurado 0-50 en el lado de salida. Estos 10 elementos son 10 rangos, es decir, 0-10, 10-20, 20-30, etc. En consecuencia, el lado de salida se distribuirá en 10 elementos de 0 a 5, 5 a 10, 10 a 15 y así sucesivamente hasta 50. Cuando una entrada en tiempo real se encuentra entre cualquier valor en el lado de entrada, la salida escalada correspondiente será aprobado. Aquí tiene total flexibilidad para configurar los valores de la tabla de entrada y salida. Control de lógica difusa La lógica difusa es un método relativamente bueno para controlar una salida. Normalmente, tiene dos estados binarios: 0 y 1. Entonces, consideremos si una válvula se puede abrir o cerrar. ¿Pero qué pasa si la válvula se atasca en el medio? No sabemos si la válvula está cerca del estado abierto o cerrado. En ese caso, ayuda si existe un estado entre 0 y 1. Esto ayuda al menos a acercarse a una posibilidad. A esto se le llama lógica quisquillosa. Aquí puedes definir valores cercanos a 0 y 1. Puede ser como 0,9 o 0,2. En consecuencia, puede controlar las salidas cuando se acerque a estos valores. Y cuando alcanza el límite extremo, es decir 0 o 1, puedes abrir o cerrar completamente la válvula. Antes de eso, puedes operar las válvulas gradualmente. Esto aporta un control más preciso al proceso. Entonces, este bloque de control permite una colección de valores que pueden resultar útiles en situaciones impredecibles. Se requiere mucho conocimiento y experiencia para establecer correctamente los valores y conjuntos para que la lógica funcione correctamente. Posición proporcional Esta lógica abrirá o cerrará un dispositivo pulsando los contactos para abrir o cerrar en algún temporizador predefinido establecido por el usuario. Se realiza para un ancho de pulso proporcional a la desviación entre la posición requerida y la posición actual. Debe configurar parámetros de control como cuánto mínimo y máximo limitar la salida, cuánto tiempo permanecerá encendida la salida, la velocidad a la que el dispositivo debe abrirse o cerrarse en %/segundo, etc. El bloque de funciones recibe retroalimentación real, evalúa los temporizadores internos y verifica si la apertura o el cierre se realizan dentro de la velocidad deseada o no. En caso contrario se dará el correspondiente pulso de apertura o cierre. De esta forma, vimos los diversos métodos de algoritmos de control utilizados en la programación de PLC.
  24. Los objetos más elementales en la programación del diagrama de escalera son los contactos y las bobinas, destinados a imitar los contactos y las bobinas de los relés electromecánicos. Los contactos y las bobinas son elementos de programación discretos que tratan con estados variables booleanos (1 y 0; encendido y apagado; verdadero y falso). Cada contacto en un programa PLC de Diagrama de Escalera representa la lectura de un solo bit en la memoria, mientras que cada bobina representa la escritura de un solo bit en la memoria. Las señales de entrada discretas al PLC desde interruptores del mundo real se leen mediante un programa de diagrama de escalera mediante contactos referenciados a esos canales de entrada. En los sistemas PLC heredados, cada canal de entrada discreta tiene una dirección específica que debe aplicarse a los contactos dentro de ese programa. En los sistemas PLC modernos, cada canal de entrada discreta tiene un nombre de etiqueta creado por el programador que se aplica a los contactos dentro del programa. De manera similar, los canales de salida discretos, a los que se hace referencia mediante símbolos de bobina en el diagrama de escalera, también deben llevar algún tipo de dirección o etiqueta con el nombre de la etiqueta. Para ilustrar, imaginaremos la construcción y programación de un sistema de detección de llama redundante para monitorear el estado de la llama de un quemador utilizando tres sensores. El objetivo de este sistema será indicar un quemador “encendido” si al menos dos de los tres sensores indican llama. Si solo un sensor indica llama (o si ningún sensor indica llama), el sistema declarará que el quemador está apagado. El estado del quemador se indicará visiblemente mediante una lámpara que los operadores humanos podrán ver fácilmente dentro del área de la sala de control. El cableado de nuestro sistema se muestra en el siguiente diagrama: Cada sensor de llama emite una señal de voltaje CC que indica la detección de llama en el quemador, ya sea encendido (24 voltios CC) o apagado (0 voltios CC). Estas tres señales de voltaje CC discretas son detectadas por los primeros tres canales de la tarjeta de entrada discreta del PLC. La lámpara indicadora es una bombilla de 120 voltios y, por lo tanto, debe recibir alimentación de una tarjeta de salida discreta de CA, que se muestra aquí en la última ranura del PLC. Para que el programa de escalera sea más legible, asignaremos nombres de etiquetas (direcciones simbólicas) a cada bit de entrada y salida en el PLC, describiendo su dispositivo real en un formato fácil de interpretar. Etiquetaremos los primeros tres canales de entrada discretos como sensor de entrada A, sensor de entrada B y sensor de entrada C, y la salida como quemador de salida encendido. Aquí se muestra un programa en escalera para determinar si al menos dos de los tres sensores detectan llama, con los nombres de las etiquetas haciendo referencia a cada contacto y bobina: Los contactos conectados en serie en un diagrama de escalera realizan la función lógica Y, mientras que los contactos en paralelo realizan la función lógica O. Por lo tanto, este programa de detección de llamas dos de tres podría describirse verbalmente como: “El quemador se enciende si A y B, o B y C, o A y C” Una forma alternativa de expresar esto es usar la notación del álgebra booleana, donde la multiplicación representa la función Y y la suma representa la función O: Quemador_encendido = AB + BC + AC Otra forma más de representar esta relación lógica es utilizar símbolos de puerta lógica: Para ilustrar cómo funcionaría este programa, consideraremos un caso en el que los sensores de llama B y C detectan llama, pero el sensor A no (Nota 1). Esto representa dos de tres buenas condiciones, por lo que esperaríamos que el PLC encienda la luz indicadora de "Quemador encendido" según lo programado. Desde la perspectiva del rack del PLC, veríamos encendidos los LED indicadores de los sensores B y C en la tarjeta de entrada discreta, así como el LED indicador del canal de salida de la lámpara: Nota 1: La razón más probable por la que uno de cada dos sensores de llama no detecta la presencia de una llama es algún tipo de desalineación o suciedad del sensor de llama. De hecho, esta es una buena razón para utilizar un sistema de detección de llama 2 de 3 en lugar de un esquema de detector simple (1 de 1): hacer que el sistema sea más tolerante a problemas ocasionales con los sensores sin comprometer el funcionamiento del quemador. seguridad. Esos dos canales de entrada energizados "establecen" bits (estado 1) en la memoria del PLC que representan el estado de los sensores de llama B y C. El bit del sensor de llama A estará "borrado" (estado 0) porque su canal de entrada correspondiente está desenergizado. El hecho de que el LED del canal de salida esté energizado (y la lámpara indicadora de "Quemador encendido" esté energizada) nos indica que el programa del PLC ha "establecido" el bit correspondiente en el registro de memoria de salida del PLC al estado "1". Una pantalla de bits de registro de entrada y salida muestra los estados de "establecimiento" y "reinicio" del PLC en este momento: Al examinar el programa Diagrama de escalera con la indicación de estado habilitada, vemos cómo solo el par de contactos del medio pasa "potencia virtual" a la bobina de salida: Recuerde que el propósito de un contacto en un programa de PLC es leer el estado de un bit en la memoria del PLC. Estos seis “contactos virtuales” leen los tres bits de entrada correspondientes a los tres sensores de llama. Cada “contacto” normalmente abierto se “cerrará” cuando su bit correspondiente tenga un valor de 1, y se “abrirá” (pasará a su estado normal) cuando su bit correspondiente tenga un valor de 0. Así, vemos aquí que los dos contactos correspondientes al sensor A aparecen sin resaltar (no representando “conductividad” en el circuito del relé virtual) porque el bit de esa entrada está reseteado (0). Los dos contactos correspondientes al sensor B y los dos contactos correspondientes al sensor C aparecen resaltados (representando "conductividad" en el circuito virtual) porque sus bits están configurados (1). Recuerde también que el propósito de una bobina en un programa de PLC es escribir el estado de un bit en la memoria del PLC. Aquí, la bobina "energizada" establece el bit de la salida 0 del PLC en un estado "1", activando así la salida del mundo real y enviando energía eléctrica a la lámpara "Quemador encendido". Tenga en cuenta que el color resaltado no indica que un contacto virtual esté conduciendo energía virtual, sino simplemente que es capaz de conducir energía. Sin embargo, el color resaltado alrededor de una bobina virtual indica la presencia de "poder" virtual en esa bobina. Los contactos y relés no sólo son útiles para implementar funciones lógicas simples, sino que también pueden realizar funciones de enclavamiento. Una aplicación muy común de esto en sistemas PLC industriales es un programa de arranque/parada con enclavamiento para controlar motores eléctricos mediante interruptores de botón de contacto momentáneo. Como antes, esta funcionalidad se ilustrará mediante un circuito y programa de ejemplo hipotético: En este sistema, dos interruptores de botón están conectados a entradas discretas en un PLC, y el PLC, a su vez, energiza la bobina de un relé de contactor de motor por medio de una de sus salidas discretas. Un contacto de sobrecarga está cableado directamente en serie con la bobina del contactor para proporcionar protección contra sobrecorriente del motor, incluso en caso de una falla del PLC donde el canal de salida discreta permanece energizado (nota 2). El programa de escalera para este sistema de control de motores se vería así: Nota 2: Si bien es posible cablear el contacto de sobrecarga a uno de los canales de entrada discretos del PLC y luego programar un contacto de sobrecarga virtual en serie con la bobina de salida para detener el motor en caso de una sobrecarga térmica, esta estrategia dependería de que el PLC realice una función de seguridad que probablemente se realice mejor mediante circuitos cableados. Al presionar el botón "Inicio" se activa el canal de entrada discreta 6 en el PLC, que "cierra" el contacto virtual en el programa del PLC denominado IN switch Start. El contacto virtual normalmente cerrado para el canal de entrada 7 (el botón "Parar") ya está cerrado de forma predeterminada cuando no se presiona el botón "Parar", por lo que la bobina virtual recibirá "alimentación" cuando se presiona el botón "Inicio". presionado y el botón “Parar” no. Tenga en cuenta que el contacto sellado lleva exactamente la misma etiqueta que la bobina: Contactor de SALIDA. Al principio puede parecer extraño tener un contacto y una bobina en un programa de PLC etiquetados de manera idéntica (Nota 3), ya que los contactos se asocian más comúnmente con entradas y las bobinas con salidas, pero esto tiene mucho sentido si comprende el verdadero significado de Contactos y bobinas en un programa de PLC: como operaciones de lectura y escritura en bits en la memoria del PLC. La bobina etiquetada como contactor OUT escribe el estado de ese bit, mientras que el contacto etiquetado como contactor OUT lee el estado de ese mismo bit. El propósito de este contacto, por supuesto, es bloquear el motor en el estado "encendido" después de que un operador humano haya soltado el dedo del botón de "Arranque". Nota 3: Un error muy común entre los estudiantes que aprenden por primera vez la programación del diagrama de escalera de PLC es asociar siempre los contactos con las entradas del PLC y las bobinas con las salidas del PLC, por lo que parece extraño que un contacto lleve la misma etiqueta que una salida. Sin embargo, esta es una asociación falsa. En realidad, los contactos y las bobinas son instrucciones de lectura y escritura y, por lo tanto, es posible hacer que el PLC lea uno de sus propios bits de salida como parte de alguna función lógica. Lo que sería realmente extraño es etiquetar una bobina con una dirección de bit de entrada o un nombre de etiqueta, ya que el PLC no es eléctricamente capaz de establecer el estado de energía real de ningún canal de entrada. Esta técnica de programación se conoce como retroalimentación, donde una variable de salida de una función (en este caso, la variable de retroalimentación es el contactor de SALIDA) también es una entrada para esa misma función. La ruta de retroalimentación es implícita más que explícita en la programación del diagrama de escalera, siendo la única indicación de retroalimentación el nombre común compartido por bobina y contacto. Otros lenguajes de programación gráfica (como el bloque de funciones) tienen la capacidad de mostrar rutas de retroalimentación como líneas de conexión entre las salidas y entradas de funciones, pero esta capacidad no existe en el diagrama de escalera. Una secuencia paso a paso que muestra el funcionamiento y el estado de este sencillo programa ilustra cómo funciona el contacto de sellado, a través de un ciclo de arranque y apagado del motor: Esta secuencia ayuda a ilustrar el orden de evaluación o de escaneo de un programa de diagrama de escalera. El PLC lee un diagrama de escalera de izquierda a derecha, de arriba a abajo, en el mismo orden general en el que un ser humano lee oraciones y párrafos escritos en inglés. Sin embargo, según el estándar IEC 61131-3, un programa de PLC debe evaluar (leer) todas las entradas (contactos) de una función antes de determinar el estado de la salida de una función (bobina o bobinas). En otras palabras, el PLC no toma ninguna decisión sobre cómo configurar el estado de una bobina hasta que se hayan leído todos los contactos que suministran energía a esa bobina. Una vez que el estado de una bobina se haya escrito en la memoria, cualquier contacto que tenga el mismo nombre de etiqueta se actualizará con ese estado en los escalones posteriores del programa. El paso 5 de la secuencia anterior es particularmente ilustrativo. Cuando el operador humano presiona el botón "Parar", se activa el canal de entrada para el interruptor IN de parada, lo que "abre" el contacto virtual normalmente cerrado IN interruptor de parada. En el siguiente escaneo de este renglón del programa, el PLC evalúa todos los contactos de entrada (inicio del interruptor de entrada, parada del interruptor de entrada y contactor de salida) para verificar su estado antes de decidir qué estado escribir en la bobina del contactor de salida. Al ver que el contacto de parada del interruptor IN ha sido forzado a abrirse mediante la activación de su respectivo canal de entrada discreta, el PLC escribe un estado "0" (o "Falso") en la bobina del contactor OUT. Sin embargo, el contacto de retroalimentación del contactor de SALIDA no se actualiza hasta el siguiente escaneo, razón por la cual aún lo verá resaltado en color durante el paso 5. Un problema potencial con este sistema, tal como está diseñado, es que el operador humano pierde el control del motor en caso de una falla de cableado "abierto" en cualquiera de los circuitos del interruptor de botón. Por ejemplo, si un cable se cae de un contacto de tornillo para el circuito del interruptor del botón pulsador de "Arranque", el motor no podría arrancar si ya estaba detenido. De manera similar, si un cable se cayera de un contacto de tornillo para el circuito del interruptor del botón de “Parada”, el motor no podría detenerse si ya estaba funcionando. En cualquier caso, una conexión de cable rota actúa de la misma manera que el estado "normal" del interruptor de botón, que es mantener el motor en su estado actual. En algunas aplicaciones, este modo de falla no sería un problema grave. Sin embargo, en muchas aplicaciones es bastante peligroso tener un motor en marcha que no se puede detener. Por esta razón, es habitual diseñar sistemas de arranque/parada de motores un poco diferentes a lo que se muestra aquí. Para construir un sistema de control de motor de “parada en caso de falla” con nuestro PLC, primero debemos volver a cablear el interruptor de botón para usar su contacto normalmente cerrado (NC): Esto mantiene activado el canal de entrada discreta 7 cuando se suelta el botón. Cuando el operador presiona el botón "Parar", el contacto del interruptor se abrirá a la fuerza y el canal de entrada 7 se desenergizará. Si un cable se cae de un terminal de tornillo en el circuito del interruptor de "Parada", el canal de entrada 7 se desenergizará de la misma manera que si alguien presionara el botón de "Parada", lo que apagará automáticamente el motor. Para que el programa PLC funcione correctamente con este nuevo cableado de interruptor, el contacto virtual para la parada del interruptor IN debe cambiarse de normalmente cerrado (NC) a normalmente abierto (NO): Como antes, el contacto virtual de parada del interruptor IN está en estado "cerrado" cuando nadie presiona el interruptor "Parada", lo que permite que el motor arranque cada vez que se presiona el interruptor "Arranque". De manera similar, el contacto virtual de parada del interruptor de ENTRADA se abrirá cada vez que alguien presione el interruptor de "Parada", deteniendo así el flujo de "energía" virtual hacia la bobina del contactor de SALIDA. Aunque esta es una forma muy común de construir sistemas de arranque/parada de motores controlados por PLC (con un interruptor de botón NC y un contacto virtual de “parada” NO), los estudiantes nuevos en la programación de PLC a menudo encuentran confusa esta inversión lógica. Quizás la razón más común de esta confusión sea una mala comprensión del concepto "normal" de los contactos de interruptor, ya sean reales o virtuales. El contacto virtual de parada del interruptor IN está programado para estar normalmente abierto (NO), pero normalmente se encuentra en estado cerrado. Recuerde que el estado "normal" de cualquier interruptor es su estado mientras está en reposo sin estimulación, no necesariamente su estado mientras el proceso está en un modo de funcionamiento "normal". El contacto virtual "normalmente abierto" del interruptor IN normalmente se encuentra en estado cerrado porque su canal de entrada correspondiente generalmente se encuentra energizado, debido al contacto del interruptor del botón normalmente cerrado, que pasa energía eléctrica real al canal de entrada mientras nadie presiona el interruptor. ¡El hecho de que un interruptor esté configurado como normalmente abierto no significa necesariamente que normalmente se encontrará en estado abierto! El estado de cualquier contacto de interruptor, ya sea real o virtual, es función de su configuración (NO versus NC) y del estímulo que se le aplica. Otra preocupación que rodea a los problemas de cableado del mundo real es qué hará este sistema si el circuito de la bobina del contactor del motor se abre por cualquier motivo. Se puede desarrollar un circuito abierto como resultado de la caída de un cable de un terminal de tornillo, o puede ocurrir porque el contacto de sobrecarga térmica se abrió debido a un evento de sobretemperatura. El problema con nuestro sistema de arranque/parada de motor tal como está diseñado es que no es "consciente" del estado real del contactor. En otras palabras, el PLC “piensa” que el contactor se energizará cada vez que se energice el canal de salida discreta 2, pero en realidad puede no ser el caso si hay una falla abierta en el circuito de la bobina del contactor. Esto puede provocar una condición peligrosa si posteriormente se elimina la falla abierta en el circuito de la bobina del contactor. Imagine a un operador presionando el interruptor de "Arranque" pero notando que el motor en realidad no arranca. Preguntándose por qué puede ser esto, va a mirar el relé de sobrecarga para ver si está disparado. Si se dispara y el operador presiona el botón "Reset" en el conjunto de sobrecarga, el motor arrancará inmediatamente porque la salida discreta del PLC ha permanecido energizada todo el tiempo después de presionar el interruptor "Start". Hacer que el motor arranque tan pronto como se reinicie la sobrecarga térmica puede ser una sorpresa para el personal de operaciones, y esto podría ser bastante peligroso si alguien se encuentra cerca de la maquinaria motorizada cuando arranca. Lo que sería más seguro es un sistema de control del motor que se niegue a "engancharse" a menos que el contactor realmente se active cuando se presione el interruptor de "Arranque". Para que esto sea posible, el PLC debe tener alguna forma de detectar el estado del contactor. Para que el PLC sea “consciente” del estado real del contactor, podemos conectar el contacto del interruptor auxiliar a uno de los canales de entrada discreta no utilizados en el PLC, así: Ahora, el PLC puede detectar el estado en tiempo real del contactor a través del canal de entrada 5. Podemos modificar el programa PLC para reconocer este estado asignando un nuevo nombre de etiqueta a esta entrada (contactor auxiliar de entrada) y usando un contacto virtual normalmente abierto con este nombre como contacto sellado en lugar del bit del contactor de SALIDA: Ahora, si el contactor no se energiza por algún motivo cuando el operador presiona el interruptor de "Inicio", la salida del PLC no se bloqueará cuando se suelte el interruptor de "Inicio". Cuando se elimina la falla abierta en el circuito de la bobina del contactor, el motor no arrancará inmediatamente, sino que esperará hasta que el operador presione el interruptor de "Arranque" nuevamente, lo cual es una característica de operación mucho más segura que antes. Una clase especial de “bobina” virtual utilizada en la programación en escalera de PLC que vale la pena mencionar es la bobina de “enclavamiento”. Por lo general, vienen en dos formas: una bobina de ajuste y una bobina de reinicio. A diferencia de una bobina de "salida" normal que escribe positivamente en un bit de la memoria del PLC con cada escaneo del programa, las bobinas de "configuración" y "reinicio" solo escriben en un bit de la memoria cuando se energizan mediante energía virtual. De lo contrario, se permite que el bit conserve su último valor. Se podría escribir un programa de arranque/parada de motor muy simple con sólo dos contactos de entrada y dos de estas bobinas de enclavamiento (ambas con el mismo nombre de etiqueta y escritas en el mismo bit en la memoria): Tenga en cuenta el uso de un contacto de interruptor de botón normalmente abierto (NO) (¡otra vez!), sin contacto auxiliar que proporcione indicación de estado del contactor al PLC. Este es un programa mínimo, mostrado con el estricto propósito de ilustrar el uso de bobinas de enganche de “establecimiento” y “reinicio” en la programación de PLC con diagrama de escalera. Las bobinas de “Configuración” y “Reinicio” (denominadas bobinas de “Enclavamiento” y “Desenganche”) son ejemplos de lo que se conoce en el mundo de la programación de PLC como instrucciones retentivas. Una instrucción "retentiva" conserva su valor después de ser prácticamente "desenergizada" en el "circuito" del diagrama de escalera. Una bobina de salida estándar no es retentiva, lo que significa que no se "bloquea" cuando se desenergiza. El concepto de instrucciones retentivas y no retentivas aparecerá nuevamente a medida que exploremos la programación de PLC, especialmente en el área de los temporizadores. Normalmente, intentamos evitar que varias bobinas lleven la misma etiqueta en un programa de diagrama de escalera de PLC. Dado que cada bobina representa una instrucción de "escritura", varias bobinas que llevan el mismo nombre representan múltiples operaciones de "escritura" en el mismo bit en la memoria del PLC. Aquí, con las bobinas de enclavamiento, no hay conflicto porque cada una de las bobinas solo escribe en el bit del contactor de SALIDA cuando su contacto respectivo está energizado. Mientras sólo se accione uno de los pulsadores a la vez, no habrá conflicto entre las bobinas con el mismo nombre. Esto plantea la pregunta: ¿qué pasaría si se presionaran simultáneamente ambos pulsadores? ¿Qué pasaría si las bobinas “Set” y “Reset” fueran “energizadas” al mismo tiempo? El resultado es que el bit del contactor de SALIDA primero se "establecerá" (se escribirá en un valor de 1) y luego se "restablecerá" (se escribirá en un valor de 0) en ese orden a medida que los dos renglones del programa se escanearan de arriba a abajo. . Los PLC normalmente no actualizan sus registros de E/S discretas mientras escanean el programa del diagrama de escalera (esta operación se lleva a cabo antes o después de cada exploración del programa), por lo que el estado real del canal de salida discreta será cualquiera que la última operación de escritura indique. , en este caso “restablecer” (0 o apagado). Incluso si la salida discreta no está “confundida” debido a las operaciones de escritura conflictivas de las bobinas “Set” y “Reset”, otros renglones del programa escritos entre los renglones “Set” y “Reset” podrían estarlo. Considere, por ejemplo, un caso en el que había otros renglones de programa después de los renglones "Establecer" y "Reiniciar" que leían el estado del bit del contactor de SALIDA para algún propósito. De hecho, esos otros renglones se “confundirían” porque verían el bit del contactor de SALIDA en el estado “establecido”, mientras que la salida discreta real del PLC (y cualquier renglón que siga al renglón “Reset”) vería el bit del contactor de SALIDA en el estado. Estado de “reinicio”: Múltiples bobinas de salida (no retentivas) con la misma dirección de memoria son casi siempre un error de programación por esta razón, pero incluso las bobinas retentivas que están diseñadas para usarse en pares coincidentes pueden causar problemas si no se anticipan las implicaciones de la energización simultánea. Múltiples contactos con direcciones idénticas no son ningún problema, porque múltiples operaciones de "lectura" en el mismo bit en la memoria nunca causarán un conflicto. El estándar de programación de PLC IEC 61131-3 especifica contactos de detección de transición, así como los contactos "estáticos" más habituales. Un contacto de detección de transición se "actuará" sólo durante un escaneo del programa, incluso si su bit correspondiente permanece activo. En la norma IEC se definen dos tipos de contactos de diagrama de escalera con detección de transiciones: uno para transiciones positivas y otro para transiciones negativas. El siguiente ejemplo muestra un diagrama de cableado, un programa de diagrama de escalera y un diagrama de tiempos que demuestra cómo funciona cada tipo de contacto de detección de transición cuando es estimulado por una señal de entrada real (eléctrica) a un canal discreto: Cuando se presiona el interruptor de botón y se energiza la entrada discreta, la primera lámpara de prueba parpadeará "encendida" durante exactamente una exploración del programa del PLC y luego volverá a su estado apagado. El contacto de transición positivo (con la letra “P” adentro) activa la prueba OUT1 de la bobina solo durante el escaneo y ve el estado de la transición de la prueba IN de “falso” a “verdadero”, aunque la entrada permanece energizada durante muchos escaneos después de eso. transición. Por el contrario, cuando se suelta el interruptor del botón y se desactiva la entrada discreta, la segunda lámpara de prueba parpadeará "encendida" durante exactamente una exploración del programa del PLC y luego volverá a su estado apagado. El contacto de transición negativa (con la letra "N" en el interior) activa la prueba OUT de la bobina2 solo durante el escaneo ve el estado de la prueba IN transición de "verdadero" a "falso", aunque la entrada permanece desenergizada durante muchos exploraciones después de esa transición: Cabe señalar que la duración de un único escaneo de programa de PLC suele ser muy corta: se mide en milisegundos. Si este programa fuera realmente probado en un PLC real, probablemente no podría ver ninguna de las lámparas de prueba encendidas, ya que cada pulso tiene una duración muy corta. Los contactos de transición generalmente se usan cada vez que se desea ejecutar una instrucción solo una vez después de un evento "desencadenante", en lugar de ejecutar esa instrucción una y otra vez siempre que el estado del evento se mantenga "verdadero". Los contactos y las bobinas representan sólo las instrucciones más básicas en el lenguaje de programación del PLC de diagrama de escalera.
  25. In a previous article, we discussed what is a function block FB, how it works in a PLC program, and how to create and use one. In this article, we will talk about data block instances of different function block types in Siemens Tia Portal and when to use each type. Contents: What is a function block FB? Different options of data instances. Single Instance. Parameter Instance. Multi-instance. What is a Function Block? A function block or an FB is simply a block that contains code logic. You use this FB to achieve specific functionality through the pieces of code written inside. When calling a function block into your code you will be asked to assign a data block also called data instance to be associated with this FB, to save the values of the FB parameters. Not all parameters inside an FB are saved in the data instance, but we will get to that later. When calling a function block, you have 3 different options for associating a data block instance with this function call. These different options will depend on where you are calling your FB. So, in a nutshell. A function block FB is basically a function FC with a dedicated data block DB, this data block is used to store the values of the function block parameters. Different Options for Data Instances We have 3 different options for a data instance of a function block, these options are: Single Instance. Parameter Instance. Multi-Instance. The three different call data instances come from the 3 different call methods: You can call a function block FB inside the main OB1 which will give you the option of: Single instance. You can call the function block FB inside a function FC, which will give you two options Single instance Parameter instance You can call the function block inside another function block, which will give you the three available options for creating a data instance Single instance Parameter instance Multiple instances Single Data Instance First, let’s start by creating a function block FB, as we mentioned before, we create a function block by clicking add a new block and choosing the type of block we want. See picture 1. Picture 1 – Creating a function block FB Now, let’s call the ReusableFB that we created inside our main OB1. See picture 2. Picture 2 – Calling the FB inside the main OB1 As you see from the previous picture, when calling an FB inside the main OB1 you will be asked to assign a data instance to be associated with this FB call. In this case, there will be only one option, which is the single instance. After choosing a single instance option, a data block will be created and associated with the FB call. See picture 3. Picture 3 – Single instance created The created single instance will be used to store the values of some of the FB parameters. Like the inputs, outputs, In Out, and static parameters. Other parameters of the FB will not be stored, like temp and constants. See pictures 4 and 5. Picture 4 – Data is saved inside the data instance Picture 5 – Data saved from the FB into the data instance. Now, let’s create a simple logic inside the FB to help us understand the data instances better. This logic will add a constant value of 15 to a static variable and then move the result to the output. See picture 6. Picture 6 – Create a simple logic Now, go back to the main OB1 and notice how your FB call is now. See picture 7. Picture 7 – Update the FB call after each change Any change you make to the logic inside the FB, will result in the need for updating the Function block call, so that the changes you made can be applied. You can update the block call by right click the FB call and pressing the update block call option or by recompiling your PLC code. See picture 8. Picture 8 – Updating the FB call After updating the block call, the changes you made in the FB code will be applied and employed in the block call. As you see in picture 9. The FB now expects an input signal of type bool to be provided and the FB will give an output of type int. Picture 9 – Inputs and outputs are now associated with the FB call Let’s simulate our code and see how the PLC will behave. See the next animation showing a simple simulation of the PLC logic so far. As you see from the animation, whenever the start signal is TRUE, the function will be executed and the output keeps changing. And once the start signal is no longer available the Output will remain at the last value recorded. The use of the data instance here is that the values of the static variable and the output variable are saved inside the single instance, so when the start signal comes back again, the function will continue from the last recorded values. Very Important Note You should never use the same single instance for two different calls of an FB. See the next animation. As you see from the animation, we have two different FB calls, but both calls are associated with the same single instance, which is why even when the start2 signal was FALSE, the Output2 value was changing with Output1. As you would expect the change in the data instance of the 1st call will also be affected in the 2nd call because they have the same memory block. See picture 10. Picture 10 – Never use the same data instance with different FB calls If you used the same data instance with different FB calls, then your function block is no longer reusable. Even if the inputs/outputs parameters are different for each different FB call. As you saw from the last video (animation) both calls had the same results even though 2nd call doesn’t even have an enable input signal. Another very important note We said before that if you call your FB from a higher-level FC, you will have two options for the associated data instance; these options are the single instance and the parameter instance. See picture 11. Picture 11 – Using a single instance with an FB called from an FC If that happened, and you will call an FB inside an FC, You should never use a single instance for your FBs. To know why that is. See picture 12 Picture 12 – Calling the higher-level FC more than once As you see from picture 12, when you call the higher-level FC in your logic more than one time, you will not be asked to assign a data block, because FCs don’t need one. But you know that there is a called FB inside the FC, this FB has a single instance associated with it. So now the 3 FC calls have the same data instance for the FB call. So, your function FC is no longer reusable. What to do? The best option for when you need to call an FB inside an FC is to use the parameter instance. Parameter Instance As we said before, if you called an FB inside an FC you shouldn’t choose the single instance but rather the parameter instance is better for your reusability purposes. A parameter instance will save the data instance of the FB called into the In Out area of the FC block interface. Allowing you to enter a new data instance for each FC call. See pictures 13 and 14. Picture 13 – Assign parameter instance when calling an FB inside an FC Picture 14 – Each FC call will need a new data instance As you see from the previous picture, whenever you call the FC inside your program, it will ask for a data instance for the reusable FB inside the FC. But, using this way you will have to create the data instance yourself. See picture 15. Picture 15 – Create a new data instance To create a new data instance, you do the same as creating an FC or an FB, but this time you choose the DB option. And make sure that you select the DB type to be the same as the FB called. Now, your FC can be reused as many times as you want, you just have to create an instance for each call. See picture 16. Picture 16 – Assign the DB to the FC call Multi-instance Database A multi-instance DB simply means that the DB of the called FB will be stored inside the DB of the higher-level calling FB. This option is only available if you call an FB from another FB. Let’s create another FB to use it as a higher-level FB. After creating this HigherLevelFB, call it from the main OB1, and off-course the only option of calling will be a single instance as shown before. See picture17. Picture 17 – Call the HigherLevelFB from the main OB1 Now, call the ReusableFB from the HigherLevelFB. And choose the Multi-instance option. See picture 18. Picture 18 – Assign multi-instance DB When you choose the Multi-instance option, the created DB will be stored inside the static parameters of the calling FB. See picture 19. Picture 19 – Instances are saved inside static parameters You can call the ReusableFB many times, each time you call it the multi-instance will be stored inside the static parameter. See picture 20. Picture 20 – Calling the ReusableFB many times As you can see the data instance of the lower-level FB will be saved inside the data instance of the higher-level FB. It is best for better program structure and easy-to-read logic. Conclusion Creating function blocks inside your code will require associating a data block with each FB call you to make in your logic. This data block or also called data instance has different options depending on the type of block that is calling your FB. Be careful when choosing the type of data instance, as some options may not be suitable for your case as we showed before. And sometimes this can lead to problems in your logic and your function can no longer be reusable. Using multi-instance can help better organize your program structure, as all called FBs will store their DBs inside the main calling FB.
Apply for friendship links:WhatsApp or E-mail: admin@plchmis.com
×
×
  • Create New...