leigehong
Subscription group-
Content Count
168 -
Joined
Content Type
Profiles
Forums
PLC programming technology and HMI interface design Simplified Chinese database
- PLC AND HMI SIMPLIFIED CHINESE ARTICLES
- PLC AND HMI SIMPLIFIED CHINESE ARTICLE Comments
- PLC AND HMI SIMPLIFIED CHINESE ARTICLE Reviews
PLC and HMI Brand Database
- PLC AND HMI BRANDS INTRODUCTIONS
- PLC AND HMI BRAND INTRODUCTION Comments
- PLC AND HMI BRAND INTRODUCTION Reviews
PLC programming technology and HMI interface design English database
- PLC AND HMI ENGLISH ARTICLES
- PLC AND HMI ENGLISH ARTICLE Comments
- PLC AND HMI ENGLISH ARTICLE Reviews
PLC programming technology and HMI interface design Russian database
- PLC AND HMI RUSSIAN ARTICLES
- PLC AND HMI RUSSIAN ARTICLE Comments
- PLC AND HMI RUSSIAN ARTICLE Reviews
Spanish database on PLC programming techniques and HMI interface design
- PLC AND HMI SPANISH ARTICLES
- PLC AND HMI SPANISH ARTICLE Comments
- PLC AND HMI SPANISH ARTICLE Reviews
German database on PLC programming technology and HMI interface design
- PLC AND HMI ARTICLES IN GERMAN
- PLC AND HMI ARTICLE IN GERMAN Comments
- PLC AND HMI ARTICLE IN GERMAN Reviews
Downloads
Store
Gallery
Blogs
Calendar
Videos
Everything posted by leigehong
-
SPS-Programm für Mischtank
leigehong posted A plc and hmi article in German in PLC programming learning
Erstellen Sie ein Kontaktplandiagramm zur Steuerung eines Batch-Mischprozesses. Implementieren Sie ein SPS-Programm für den Mischtank oder den Mischprozess mithilfe der SPS-Kontaktplanlogik. SPS-Programm für Mischtank Abb.: Mischtank Ein Tank wird zum Mischen von zwei Flüssigkeiten verwendet. Der erforderliche Steuerkreis funktioniert wie folgt: A. Wenn die START-Taste gedrückt wird, werden die Magnetspulen A und B aktiviert. Dadurch können die beiden Flüssigkeiten beginnen, den Tank zu füllen. B. Wenn der Tank gefüllt ist, löst der Schwimmerschalter aus. Dadurch werden die Magnetspulen A und B deaktiviert und der Motor gestartet, der zum Mischen der Flüssigkeiten verwendet wird. C. Der Motor darf 1 Minute lang laufen. Nach Ablauf von 1 Minute schaltet sich der Motor ab und Magnetspule C wird aktiviert, um den Tank zu entleeren. D. Wenn der Tank leer ist, schaltet der Schwimmerschalter das Magnetventil C ab. E. Mit einer STOP-Taste kann der Vorgang jederzeit gestoppt werden. F. Wenn der Motor überlastet wird, wird die Funktion des gesamten Schaltkreises gestoppt. G. Sobald der Schaltkreis aktiviert wurde, arbeitet er weiter, bis er manuell gestoppt wird. PLC-Logiklösung Ein Relaisschema, das die Logik dieses Schaltkreises ausführt, ist in der folgenden Abbildung dargestellt. Die Logik dieses Schaltkreises ist wie folgt: Abb.: Relaisschema A. Wenn die START-Taste gedrückt wird, wird die Relaisspule CR aktiviert. Dadurch schließen sich alle CR-Kontakte. Kontakt CR-1 ist ein Haltekontakt, der verwendet wird, um den Stromkreis zur Spule CR aufrechtzuerhalten, wenn die START-Taste losgelassen wird. B. Wenn Kontakt CR-2 schließt, wird ein Stromkreis zu den Magnetspulen A und B geschlossen. Dadurch können die beiden Flüssigkeiten, die miteinander vermischt werden sollen, mit dem Befüllen des Tanks beginnen. C. Während sich der Tank füllt, steigt der Schwimmer, bis der Schwimmerschalter ausgelöst wird. Dadurch öffnet sich der normalerweise geschlossene Schwimmerschalterkontakt und der normalerweise offene Kontakt schließt sich. D. Wenn der normalerweise geschlossene Schwimmerschalter öffnet, werden die Magnetspulen A und B entregt und der Zufluss der beiden Flüssigkeiten in den Tank gestoppt. E. Wenn der normalerweise offene Kontakt schließt, wird ein Stromkreis zur Spule eines Motorstarters und zur Spule eines Einschaltverzögerungstimers geschlossen. Der Motor wird verwendet, um die beiden Flüssigkeiten miteinander zu vermischen. F. Am Ende des einminütigen Zeitraums ändern alle TR-Kontakte ihre Position. Der normalerweise geschlossene TR-2-Kontakt, der in Reihe mit der Motorstarterspule geschaltet ist, öffnet sich und stoppt den Betrieb des Motors. Der normalerweise offene TR-3-Kontakt schließt und erregt die Magnetspule C, wodurch die Flüssigkeit aus dem Tank abfließen kann. Der normalerweise geschlossene Kontakt TR-1 wird verwendet, um sicherzustellen, dass die Ventile A und B nicht wieder aktiviert werden können, bis Magnetspule C abfällt. G. Wenn Flüssigkeit aus dem Tank abläuft, sinkt der Schwimmer. Wenn der Schwimmer weit genug abfällt, löst der Schwimmerschalter aus und seine Kontakte kehren in ihre normalen Positionen zurück. Wenn der normalerweise offene Schwimmerschalterkontakt wieder öffnet und Spule TR abschaltet, kehren alle TR-Kontakte in ihre normalen Positionen zurück. H. Wenn der normalerweise offene Kontakt TR-3 wieder öffnet, wird Magnetspule C abgeschaltet und schließt das Ablassventil. Kontakt TR-2 schließt sich wieder, aber der Motor kann aufgrund des normalerweise offenen Schwimmerschalterkontakts nicht neu gestartet werden. Wenn Kontakt TR-1 wieder schließt, wird ein Stromkreis zu den Magnetspulen A und B geschlossen. Dadurch kann der Tank wieder aufgefüllt werden und der Vorgang beginnt von vorne. I. Wenn die STOP-Taste oder der Überlastkontakt geöffnet wird, wird die Spule CR entregt und alle CR-Kontakte öffnen sich. Dadurch wird der gesamte Schaltkreis entregt. Hinweis: Das SPS-Programm wird dem obigen Relaisschema ebenfalls sehr ähnlich sein. Aufgabe für Sie Analysieren Sie die folgende Animation und teilen Sie den Schaltkreisbetrieb durch Kommentare mit. -
Skalierung analoger SPS-Eingänge
leigehong posted A plc and hmi article in German in PLC programming learning
Eine speicherprogrammierbare Steuerung (SPS) SLC500 von Allen-Bradley verwendet einen 16-Bit-Analog-Digital-Wandler (in ihrem Modell 1746-NI4) in einer analogen Eingangskarte, um 4-20 mA-Signale in digitale Zahlenwerte im Bereich von 3277 (bei 4 mA) bis 16384 (bei 20 mA) umzuwandeln. Allerdings müssen diese Rohzahlen von der analogen Karte der SPS mathematisch in der SPS skaliert werden, um reale Maßeinheiten darzustellen, in diesem Fall 0 bis 700 GPM Durchfluss. Skalierung analoger SPS-Eingänge Formulieren Sie eine Skalierungsgleichung, um sie in die SPS zu programmieren, sodass 4 mA Strom als 0 GPM und 20 mA Strom als 700 GPM registriert werden. Wir haben bereits die Rohwerte aus dem Analog-Digital-Wandler (ADC) der Analogkarte für 4 mA und 20 mA erhalten: 3277 bzw. 16384. Diese Werte definieren den Bereich unseres linearen Graphen: Berechnen und Ersetzen des Steigungswerts (m) für diese Gleichung unter Verwendung des vollständigen Anstiegs-/Überlaufbereichs der linearen Funktion: Diese Art der Skalierungsberechnung ist in SPS-Anwendungen so üblich, dass Allen-Bradley einen speziellen SCL-Befehl („Skalierung“) nur für diesen Zweck bereitgestellt hat. Statt „Steigung“ (m) und „Achsenabschnitt“ (b) fordert der Befehl den menschlichen Programmierer auf, Werte für „Rate“ bzw. „Offset“ einzugeben. Darüber hinaus wird die Rate in der SCL-Anweisung von Allen-Bradley als Zähler eines Bruchs ausgedrückt, dessen Nenner auf 10000 festgelegt ist, sodass Bruchsteigungswerte (weniger als eins) mithilfe ganzer Zahlen angegeben werden können. Abgesehen von diesen Details ist das Konzept genau dasselbe. Um unsere Steigung von 700/13107 als Bruch mit 10000 als Nenner auszudrücken, muss der Zähler lediglich durch Kreuzmultiplikation und Division gelöst werden: Die SCL-Anweisung wäre also wie folgt konfiguriert: -
Ein Timer ist eine SPS-Anweisung, die die nach einem Ereignis verstrichene Zeit misst. Timer-Anweisungen gibt es in zwei Grundtypen: Einschaltverzögerungs-Timer und Ausschaltverzögerungs-Timer. Sowohl die Einschaltverzögerungs- als auch die Ausschaltverzögerungs-Timer-Anweisungen haben einzelne Eingänge, die die zeitgesteuerte Funktion auslösen. Ein Einschaltverzögerungs-Timer aktiviert einen Ausgang nur, wenn der Eingang für eine Mindestzeit aktiv war. SPS-Timer-Anweisungen Nehmen wir zum Beispiel dieses SPS-Programm, das so konzipiert ist, dass vor dem Starten eines Förderbands eine akustische Alarmsirene ertönt. Um den Förderbandmotor zu starten, muss der Bediener die Starttaste 10 Sekunden lang gedrückt halten. Während dieser Zeit ertönt die Sirene und warnt die Personen, sich vom gleich startenden Förderband zu entfernen. Erst nach dieser 10-sekündigen Startverzögerung startet der Motor tatsächlich (und wird „eingeschaltet“): Ähnlich wie bei einem „Aufwärts“-Zähler erhöht sich der Wert der verstrichenen Zeit (ET) des Einschaltverzögerungstimers einmal pro Sekunde, bis die voreingestellte Zeit (PT) erreicht ist, zu der sein Ausgang (Q) aktiviert wird. In diesem Programm beträgt der voreingestellte Zeitwert 10 Sekunden, was bedeutet, dass der Q-Ausgang erst aktiviert wird, wenn der „Start“-Schalter 10 Sekunden lang gedrückt wurde. Der Alarmsirenenausgang, der nicht vom Timer aktiviert wird, wird sofort aktiviert, wenn der „Start“-Druckknopf gedrückt wird. Ein wichtiges Detail in Bezug auf die Funktionsweise dieses speziellen Timers ist, dass er nicht remanent ist. Dies bedeutet, dass die Timeranweisung ihren Wert der verstrichenen Zeit nicht beibehalten sollte, wenn der Eingang deaktiviert wird. Stattdessen sollte der Wert der abgelaufenen Zeit jedes Mal auf Null zurückgesetzt werden, wenn der Eingang deaktiviert wird. Dadurch wird sichergestellt, dass sich der Timer selbst zurücksetzt, wenn der Bediener den „Start“-Druckknopf loslässt. Ein remanenter Einschaltverzögerungstimer hingegen behält seinen Wert der abgelaufenen Zeit bei, selbst wenn der Eingang deaktiviert wird. Dadurch ist er nützlich, um die „laufende Gesamtzeit“ für ein bestimmtes Ereignis aufzuzeichnen. Die meisten SPS bieten remanente und nicht remanente Versionen von Einschaltverzögerungstimeranweisungen, sodass der Programmierer die richtige Form des Einschaltverzögerungstimers für jede bestimmte Anwendung auswählen kann. Der Programmierstandard IEC 61131-3 behandelt das Problem von remanenten und nicht remanenten Timern jedoch etwas anders. Gemäß dem Standard IEC 61131-3 kann eine Timeranweisung mit einem zusätzlichen Aktivierungseingang (EN) angegeben werden, der bewirkt, dass sich die Timeranweisung bei Aktivierung nicht remanent und bei Deaktivierung remanent verhält. Das allgemeine Konzept des Enable-Eingangs (EN) besteht darin, dass sich die Anweisung „normal“ verhält, solange der Enable-Eingang aktiv ist (in diesem Fall wird eine nicht remanente Zeitaktion gemäß der Norm IEC 61131-3 als „normal“ angesehen), die Anweisung jedoch die gesamte Ausführung „einfriert“, wenn der Enable-Eingang deaktiviert wird. Dieses „Einfrieren“ des Betriebs hat zur Folge, dass der aktuelle Zeitwert (CT) beibehalten wird, selbst wenn das Eingangssignal deaktiviert wird. Wenn wir beispielsweise unserem Förderbandsteuerungssystem einen remanenten Timer hinzufügen möchten, um die Gesamtlaufzeit des Förderbandmotors aufzuzeichnen, könnten wir dies mit einem „aktivierten“ IEC 61131-3-Timerbefehl wie diesem tun: Wenn das Schützbit des Motors (OUT-Schütz) aktiv ist, wird der Timer aktiviert und kann die Zeit messen. Wenn dieses Bit jedoch deaktiviert wird (auf „falsch“ gesetzt wird), wird der Timerbefehl als Ganzes deaktiviert, wodurch er „eingefroren“ wird und seinen aktuellen Zeitwert (CT) beibehält (Hinweis 1). Dadurch kann der Motor gestartet und gestoppt werden, wobei der Timer die gesamte Motorlaufzeit protokolliert. Hinweis 1: Das „Enable Out“-Signal (ENO) am Timerbefehl dient zur Anzeige des Status des Befehls: Es wird aktiviert, wenn der Enable-Eingang (EN) aktiviert wird, und deaktiviert, wenn entweder der Enable-Eingang deaktiviert wird oder der Befehl einen Fehlerzustand erzeugt (wie durch die interne Programmierung des SPS-Herstellers bestimmt). Das ENO-Ausgangssignal dient in diesem speziellen Programm keinem nützlichen Zweck, ist jedoch verfügbar, falls andere Programmschritte den Status des Laufzeittimers „kennen“ müssen. Wenn wir dem Bediener die Möglichkeit geben möchten, den Gesamtlaufzeitwert manuell auf Null zurückzusetzen, könnten wir einen zusätzlichen Schalter fest mit der diskreten Eingangskarte der SPS verdrahten und dem Programm „Reset“-Kontakte wie folgt hinzufügen: Wenn der „Reset“-Schalter gedrückt wird, wird der Timer aktiviert (EN), aber der Zeiteingang (IN) wird deaktiviert, wodurch der Timer gezwungen wird, seinen aktuellen Zeitwert (CT) (nicht remanent) auf Null zurückzusetzen. Der andere wichtige Typ von SPS-Timerbefehlen ist der Ausschaltverzögerungstimer. Dieser Timerbefehl unterscheidet sich vom Einschaltverzögerungstyp dadurch, dass die Zeitfunktion beginnt, sobald der Befehl deaktiviert wird, und nicht, wenn er aktiviert wird. Eine Anwendung für einen Ausschaltverzögerungstimer ist eine Kühlerlüftermotorsteuerung für einen großen Industriemotor. In diesem System startet die SPS einen elektrischen Kühlerlüfter, sobald erkannt wird, dass sich der Motor dreht, und lässt diesen Lüfter nach dem Abschalten des Motors zwei Minuten lang laufen, um Restwärme abzuleiten: Wenn der Eingang (IN) zu dieser Timeranweisung aktiviert wird, wird der Ausgang (Q) sofort aktiviert (ohne jegliche Zeitverzögerung), um den Schütz des Kühlerlüftermotors einzuschalten. Dadurch wird der Motor gekühlt, sobald er sich zu drehen beginnt (wie vom Drehzahlschalter erkannt, der an den diskreten Eingang der SPS angeschlossen ist). Wenn der Motor aufhört zu drehen, kehrt der Drehzahlschalter in seine normalerweise offene Position zurück und deaktiviert das Eingangssignal des Timers, das die Zeitsequenz startet. Der Q-Ausgang bleibt aktiv, während der Timer von 0 Sekunden bis 120 Sekunden zählt. Sobald 120 Sekunden erreicht sind, wird der Ausgang deaktiviert (der Kühlerlüftermotor wird abgeschaltet) und der verstrichene Zeitwert bleibt bei 120 Sekunden, bis der Eingang erneut aktiviert wird. Zu diesem Zeitpunkt wird er wieder auf Null zurückgesetzt. Die folgenden Zeitdiagramme vergleichen Einschaltverzögerungs- und Ausschaltverzögerungstimer und stellen sie gegenüber: Während es üblich ist, Einschaltverzögerungs-SPS-Anweisungen sowohl in remanenter als auch in nicht remanenter Form in den Befehlssätzen fast aller SPS-Hersteller und -Modelle zu finden, ist es fast unbekannt, remanente Ausschaltverzögerungstimeranweisungen zu finden. Normalerweise sind Ausschaltverzögerungstimer nur nicht remanent (Hinweis 2). Hinweis 2: Die im Programmierstandard IEC 61131-3 angegebenen Aktivierungseingangssignale (EN) ermöglichen remanente Ausschaltverzögerungstimer (indem der Aktivierungseingang deaktiviert wird, während der „IN“-Eingang in einem inaktiven Zustand gehalten wird), aber bedenken Sie, dass die meisten SPS-Implementierungen von Timern keine separaten EN- und IN-Eingänge haben. Dies bedeutet (für die meisten SPS-Timeranweisungen), dass der einzige zum Aktivieren des Timers verfügbare Eingang der „IN“-Eingang ist. In diesem Fall ist es unmöglich, einen speichernden Ausschaltverzögerungstimer zu erstellen (da der Wert der abgelaufenen Zeit eines solchen Timers bei jeder erneuten Aktivierung des Eingangs sofort auf Null zurückgesetzt würde).
-
Missverständnisse der SPS-Kontaktplanlogik
leigehong posted A plc and hmi article in German in PLC programming learning
Das vielleicht wichtigste und doch schwer fassbarste Konzept, das man verstehen muss, wenn man lernt, SPS zu programmieren, ist die Beziehung zwischen dem elektrischen Status der E/A-Punkte der SPS und dem Status von Variablen und anderen „Elementen“ in ihrer Programmierung. Dies gilt insbesondere für die Kontaktplanprogrammierung (LD), bei der das Programm selbst einem elektrischen Diagramm ähnelt. Die Herstellung der mentalen Verbindung zwischen der „realen“ Welt der Schalter, Schütze und anderen elektrischen Geräte, die an die SPS angeschlossen sind, und der „imaginären“ Welt des SPS-Programms, das aus virtuellen Kontakten und Relais-„Spulen“ besteht, ist von größter Bedeutung. Die erste Grundregel, die man bei der Untersuchung eines SPS-Programms mit Kontaktplan im Hinterkopf behalten sollte, ist, dass jeder im Programm angezeigte virtuelle Kontakt aktiviert wird, wenn er in seinem jeweiligen Bit einen „1“-Zustand liest, und in Ruhe ist, wenn er in seinem jeweiligen Bit (im Speicher der SPS) einen „0“-Zustand liest. Wenn der Kontakt ein Schließer (NO) ist, öffnet er sich, wenn sein Bit 0 ist, und schließt sich, wenn sein Bit 1 ist. Wenn der Kontakt ein Öffner (NC) ist, schließt er sich, wenn sein Bit 0 ist, und öffnet sich, wenn sein Bit 1 ist. Ein 0-Bit-Zustand bewirkt, dass sich der Kontakt in seinem „normalen“ (Ruhe-)Zustand befindet, während ein 1-Bit-Zustand den Kontakt betätigt und ihn in seinen nicht normalen (betätigten) Zustand zwingt. Eine weitere Regel, die Sie bei der Untersuchung eines SPS-Programms mit Kontaktplan beachten sollten, ist, dass die Programmiersoftware eine Farbhervorhebung (Hinweis 1) bietet, um den virtuellen Status jedes Programmelements anzuzeigen: Ein farbiger Kontakt ist geschlossen, während ein nicht farbiger Kontakt geöffnet ist. Während das Vorhandensein oder Fehlen eines „Schrägstrich“-Symbols den normalen Status eines Kontakts kennzeichnet, zeigt seine von der SPS-Programmiersoftware angezeigte Live-Farbhervorhebung den „leitenden“ Status der Elemente in Echtzeit an. Hinweis 1: Es ist zu beachten, dass die Programmiersoftware in manchen Situationen die Kontakte nicht richtig einfärbt, insbesondere wenn sich ihr Status zu schnell ändert, als dass die Software-Kommunikationsverbindung mithalten könnte, und/oder wenn die Bits innerhalb eines Programmdurchlaufs mehrmals ihren Zustand ändern. Für einfache Programme und Situationen gilt diese Regel jedoch und ist eine große Hilfe für Programmieranfänger, die die Beziehung zwischen realen Bedingungen und Bedingungen in der „virtuellen“ Welt der SPS lernen. Missverständnisse der SPS-Kontaktplanlogik Die folgende Tabelle zeigt, wie die beiden Kontakttypen im Kontaktplanprogramm einer SPS auf Bitzustände reagieren, wobei die rote Farbe verwendet wird, um die virtuelle Leitfähigkeit jedes Kontakts anzuzeigen: Genauso wie die Kontakte eines Druckschalters durch einen hohen Druckzustand, die Kontakte eines Niveauschalters durch einen hohen Niveauzustand und die Kontakte eines Temperaturschalters durch einen hohen Temperaturzustand aktiviert werden, so wird der virtuelle Kontakt einer SPS durch einen hohen Bitzustand aktiviert (1). Im Zusammenhang mit jedem Schalter ist ein aktivierter Zustand das Gegenteil seines normalen (Ruhe-)Zustands. Die folgende vereinfachte Abbildung (die in diesem Diagramm gezeigte elektrische Verdrahtung ist unvollständig, der „Common“-Anschluss ist der Einfachheit halber nicht angeschlossen dargestellt.) zeigt eine kleine SPS, bei der zwei ihrer diskreten Eingangskanäle elektrisch aktiviert sind, wodurch diese beiden Bits den Status „1“ haben. Die farblich hervorgehobenen Kontakte in der Anzeige der Programmiereditor-Software zeigen eine Sammlung von Kontakten, die an diese Eingangsbits in verschiedenen Zuständen adressiert sind (farbig = geschlossen; ungefärbt = offen). Wie Sie sehen können, befindet sich jeder Kontakt, der an ein „gesetztes“ Bit (1) adressiert ist, in seinem aktivierten Zustand, während sich jeder Kontakt, der an ein „gelöschtes“ Bit (0) adressiert ist, in seinem normalen Zustand befindet: Denken Sie daran, dass ein farbiger Kontakt ein geschlossener Kontakt ist. Die farbig erscheinenden Kontakte sind entweder normalerweise geschlossene Kontakte mit „0“-Bit-Zuständen oder normalerweise offene Kontakte mit „1“-Bit-Zuständen. Es ist die Kombination aus Bitzustand und Kontakttyp (NO vs. NC), die bestimmt, ob der virtuelle Kontakt zu einem bestimmten Zeitpunkt offen (ungefärbt) oder geschlossen (gefärbt) ist. Entsprechend ist es eine Kombination aus farbiger Hervorhebung und virtuellem Kontakttyp, die den realen Aktivierungsstatus eines bestimmten SPS-Eingangs zu einem bestimmten Zeitpunkt anzeigt. Das Hauptproblem von Studenten/Ingenieuren beim Verstehen von SPS-Kontaktplanprogrammen besteht darin, dass sie zu stark vereinfachen und versuchen, reale Schalter, die mit der SPS verbunden sind, direkt mit ihren jeweiligen Kontaktanweisungen im SPS-Programm zu verknüpfen. Studenten/Ingenieure denken fälschlicherweise, dass der reale Schalter, der mit der SPS verbunden ist, und der jeweilige virtuelle Schalterkontakt im SPS-Programm ein und derselbe sind, obwohl dies überhaupt nicht der Fall ist. Vielmehr sendet der reale Schalter Strom an den SPS-Eingang, der wiederum den Zustand der in die SPS programmierten virtuellen Kontakte steuert. Insbesondere erlebe ich, dass Studenten/Ingenieure regelmäßig den folgenden Missverständnissen erliegen: Irrtümlicherweise annehmen, dass der Kontaktanweisungstyp (NO vs. NC) mit dem des zugehörigen realen Schalters übereinstimmen muss Irrtümlich annehmen, dass die farbliche Hervorhebung einer Kontaktanweisung dem elektrischen Status des zugehörigen realen SPS-Eingangs entspricht Irrtümlich annehmen, dass ein geschlossener realer Schalter zu einer geschlossenen Kontaktanweisung im Live-SPS-Programm führen muss Zur Verdeutlichung sind hier die grundlegenden Regeln, die man beim Interpretieren von Kontaktanweisungen in SPS-Programmen mit Kontaktplan beachten sollte: Jedes Eingangsbit im Speicher der SPS ist eine „1“, wenn sein Eingangskanal mit Strom versorgt wird, und eine „0“, wenn sein Eingangskanal nicht mit Strom versorgt wird Jeder im Programm angezeigte virtuelle Kontakt wird aktiviert, wenn er in seinem jeweiligen Bit einen „1“-Zustand liest, und ist in Ruhe, wenn er in seinem jeweiligen Bit einen „0“-Zustand liest Ein farbiger Kontakt ist geschlossen (leitet virtuellen Strom im SPS-Programm weiter), während ein nicht farbiger Kontakt geöffnet ist (blockiert virtuellen Strom im SPS-Programm) Beim Versuch, SPS-Programme mit Kontaktplan zu verstehen, kann die Bedeutung dieser Regeln nicht überbetont. Die Wahrheit ist, dass es eine Kausalkette – und keine direkte Äquivalenz – zwischen dem realen Schalter und dem Status des Kontaktbefehls gibt. Der reale Schalter steuert, ob der SPS-Eingangskanal mit Strom versorgt wird oder nicht, was wiederum steuert, ob das Bit des Eingangsregisters eine „1“ oder eine „0“ ist, was wiederum steuert, ob der Kontaktbefehl aktiviert oder in Ruhe ist. Virtuelle Kontakte im SPS-Programm werden also von ihren entsprechenden realen Schaltern gesteuert, anstatt einfach identisch mit ihren realen Gegenstücken zu sein, wie Laien gerne annehmen. Wenn wir diesen Regeln folgen, sehen wir, dass normalerweise offene (NO) Kontaktbefehle das nachahmen, was ihre realen Schalter tun, während normalerweise geschlossene (NC) Kontaktbefehle das Gegenteil ihrer realen Gegenstücke bewirken. Die farbliche Hervorhebung von Spulenbefehlen in einem SPS-Programm mit Kontaktplan folgt ähnlichen Regeln. Eine Spule ist „eingeschaltet“ (farbig), wenn alle Kontaktbefehle davor geschlossen (farbig) sind. Eine farbige Spule schreibt eine „1“ in ihr entsprechendes Bit im Speicher, während eine nicht farbige Spulenanweisung eine „0“ in ihr entsprechendes Bit im Speicher schreibt. Wenn diese Bits mit realen diskreten Ausgangskanälen auf der SPS verknüpft sind, steuern ihre Zustände die reale Aktivierung von Geräten, die elektrisch mit diesen Kanälen verbunden sind. Um diese grundlegenden Konzepte weiter zu verdeutlichen, werden wir den Betrieb eines einfachen SPS-Systems untersuchen, das eine Warnlampe aktiviert, wenn ein Prozessbehälter einem hohen Flüssigkeitsdruck ausgesetzt ist. Die Aufgabe der SPS besteht darin, eine Warnlampe zu aktivieren, wenn der Druck im Prozessbehälter jemals 270 PSI überschreitet, und diese Warnlampe aktiviert zu halten, selbst wenn der Druck unter den Auslösepunkt von 270 PSI fällt. Auf diese Weise werden die Bediener sowohl auf vergangene als auch auf aktuelle Überdruckereignisse im Prozessbehälter aufmerksam gemacht. 120-Volt-Wechselstrom (L1 und L2) liefert elektrische Energie für den Betrieb der SPS sowie Signalpotential für die Eingangsschalter und Strom für die Warnlampe. Zwei Schalter sind mit dem Eingang dieser SPS verbunden: ein normalerweise offener Druckknopfschalter, der als Alarmrücksetzung fungiert (durch Drücken dieses Schalters wird die Alarmlampe „entriegelt“), und ein normalerweise offener Druckschalter, der als Sensorelement für hohen Prozessbehälterdruck fungiert: Der Rücksetzdruckknopf ist mit dem diskreten Eingang X1 der SPS verbunden, während der Druckschalter mit dem diskreten Eingang X4 verbunden ist. Die Warnlampe ist mit dem diskreten Ausgang Y5 verbunden. Rote Anzeige-LEDs neben jedem E/A-Anschluss zeigen optisch den elektrischen Status der E/A-Punkte an, während eine rot schattierte Hervorhebung den virtuellen Stromstatus (Anmerkung 2) der „Kontakte“ und „Spulen“ im Programm der SPS anzeigt, der auf dem Bildschirm eines PCs angezeigt wird, der über ein Programmierkabel mit der SPS verbunden ist. Wenn niemand den Rücksetzdruckknopf drückt, befindet sich dieser Schalter in seinem normalen Status, der bei einem „normalerweise offenen“ Schalter offen ist. Das Gleiche gilt für den Druckschalter: Wenn der Prozessdruck unter dem Auslösepunkt von 270 PSI liegt, befindet sich der Druckschalter ebenfalls in seinem Normalzustand, der bei einem „normalerweise offenen“ Schalter offen ist. Da keiner der Schalter momentan Strom leitet, werden weder die diskreten Eingänge X1 noch X4 aktiviert. Dies bedeutet, dass sich die „virtuellen“ Kontakte im SPS-Programm ebenfalls in ihrem eigenen Normalzustand befinden. Daher ist jeder virtuelle Kontakt, der als normalerweise offen gezeichnet ist, offen (leitet keinen virtuellen Strom weiter) und jeder virtuelle Kontakt, der als normalerweise geschlossen gezeichnet ist (ein diagonaler Schrägstrich durch das Kontaktsymbol), ist geschlossen. Aus diesem Grund sind die beiden normalerweise offenen virtuellen Kontakte X4 und Y5 nicht hervorgehoben, der normalerweise geschlossene virtuelle Kontakt X1 jedoch schon – die farbige Hervorhebung stellt die Fähigkeit dar, virtuellen Strom weiterzuleiten. Hinweis 2: Bei einem SPS-Programmkontakt stellt die Schattierung die virtuelle „Leitfähigkeit“ dar. Bei einer SPS-Programmspule stellt die Schattierung ein gesetztes (1) Bit dar. Wenn im Prozessbehälter ein hoher Druck (> 270 PSI) auftritt, wird der Druckschalter aktiviert und schließt seinen normalerweise offenen Kontakt. Dadurch wird der Eingang X4 auf der SPS aktiviert, der den virtuellen Kontakt X4 im Kontaktplanprogramm „schließt“. Dadurch wird virtuelle Energie an die virtuelle „Spule“ Y5 gesendet, die sich wiederum über den virtuellen Kontakt Y5 einklinkt (Hinweis 3) und auch den realen diskreten Ausgang Y5 aktiviert, um die Warnlampe zu aktivieren: Hinweis 3: Es ist erwähnenswert, dass es legitim ist, virtuelle Kontakte auf Ausgangsbits (z. B. Kontakt Y5) und nicht nur auf Eingangsbits zu verweisen. Ein „virtueller Kontakt“ in einem SPS-Programm ist nichts anderes als eine Anweisung an den Prozessor der SPS, den Status eines Bits im Speicher zu lesen. Dabei spielt es keine Rolle, ob dieses Bit einem physischen Eingangskanal, einem physischen Ausgangskanal oder einem abstrakten Bit im Speicher der SPS zugeordnet ist. Es wäre jedoch falsch, eine virtuelle Spule mit einem Eingangsbit zu verknüpfen, da Spulenanweisungen Bitwerte in den Speicher schreiben und Eingangsbits ausschließlich durch die Aktivierungszustände ihrer physischen Eingangskanäle gesteuert werden sollen. Falls der Prozessdruck nun unter 270 PSI fällt, kehrt der Druckschalter in seinen Normalzustand (offen) zurück und schaltet so den diskreten Eingang X4 auf der SPS ab. Aufgrund des Verriegelungskontakts Y5 im Programm der SPS bleibt der Ausgang Y5 jedoch eingeschaltet, um die Warnlampe in ihrem aktivierten Zustand zu halten: Daher führt der Y5-Kontakt eine Einschlussfunktion aus, um das Y5-Bit gesetzt (1) zu halten, selbst nachdem der Hochdruckzustand behoben ist. Dies ist genau dasselbe Konzept wie der „Einschluss“-Hilfskontakt in einem fest verdrahteten Motorstarterkreis, bei dem der elektromechanische Schütz sich selbst aktiviert hält, nachdem der „Start“-Druckknopfschalter losgelassen wurde. Die einzige Möglichkeit für einen menschlichen Bediener, die Warnlampe zurückzusetzen, besteht darin, den Druckknopf zu drücken. Dies hat zur Folge, dass Eingang X1 an der SPS aktiviert wird, wodurch der virtuelle Kontakt X1 (normalerweise geschlossen) im Programm geöffnet wird, wodurch die virtuelle Stromversorgung der virtuellen Spule Y5 unterbrochen wird, wodurch die Warnlampe ausgeschaltet und die virtuelle Stromversorgung im Programm entriegelt wird: -
Wie konvertiert man einen Schaltplan in ein SPS-Programm?
leigehong posted A plc and hmi article in German in PLC programming learning
Die SPS-Programmierung hat ihre Geschichte und Referenzen in Schaltplänen. Im Laufe der Zeit wurde es immer schwieriger, Fehler in elektrischen Systemen mit Automatisierung zu beheben. Daher wurde ein Controller benötigt, der eine Logik ausführt und das Nötige tut. So entstanden SPS-Systeme. Wie Sie wissen, gibt es für die SPS-Programmierung viele verschiedene Sprachen, und die ursprüngliche ist die Kontaktplansprache. Sie sollten wissen, dass Schaltpläne auch dabei helfen, sie in Kontaktplanlogik umzuwandeln. In diesem Beitrag erfahren Sie, wie Sie einen Schaltplan in ein SPS-Programm umwandeln. Schaltpläne verstehen Zunächst einmal müssen Sie Schaltpläne verstehen. Sehen Sie sich das folgende Bild an. Jeder Stromkreis hat zwei Enden – positiv und negativ. Der Strom beginnt am positiven Ende und fließt durch das negative Ende. Dazwischen liegen elektrische Komponenten und Geräte. Wenn Sie sich das folgende Bild ansehen, gibt es vier Komponenten – den Start-Druckknopf, den Stopp-Druckknopf, den Hilfskontakt der Lampe und die Lampe. Die Stromversorgung beginnt am positiven Ende und geht zum Eingang des Start-Druckknopfs (Schließerkontakt). Der Ausgang des Start-Druckknopfs geht zum Eingang des Stopp-Druckknopfs (Öffnerkontakt). Der Ausgang des Stopp-Druckknopfs geht zum Eingang der Lampe. Der Ausgang der Lampe ist mit der negativen Stromversorgung verbunden. Parallel zum Start-Druckknopf verläuft ein weiteres Kabel vom Eingang des Knopfs zu einem Hilfskontakt der Lampe. Der Ausgang dieses Kontakts ist wieder mit dem Ausgang des Druckknopfs verbunden. Wenn die Stromversorgung gegeben ist und der Start-Druckknopf gedrückt wird, schaltet sich die Lampe ein, da sie den Strompfad erhält. Wenn der Knopf nun losgelassen wird, schaltet sich die Lampe aus, da sie den Pfad nicht erhält. Um sie zu verriegeln, platzieren wir daher den Lampenkontakt parallel, der den Strompfad hält. Wenn der Stopp-Druckknopf gedrückt wird, wird der Strompfad unterbrochen und die Lampe geht aus. Konvertieren des Schaltplans in das SPS-Programm Wenn Sie den Schaltplan nun verstanden haben, beginnen Sie, ihn auf die gleiche Weise für die SPS-Programmierung zu interpretieren. Siehe das folgende Bild. Die Kontaktplanlogik hat zwei Stromanschlüsse – links und rechts. Links entspricht einem positiven Stromanschluss und rechts einem negativen Stromanschluss. Sie benötigen vier SPS-Programmierkomponenten – Start-Druckknopf -> Schließer, Stopp-Druckknopf -> Öffner, Lampe -> Ausgangsspule und Lampe-Schließer. Platzieren Sie zuerst den Start-Druckknopf als Schließer. Platzieren Sie parallel dazu die Lampe als Schließer. Platzieren Sie danach den Stopp-Druckknopf als Öffner. Platzieren Sie zum Schluss die Lampe als Schließer. Die Vorgehensweise ist die gleiche wie für den Schaltplan beschrieben. Sie haben gesehen, dass dieselbe elektrische Zeichnung interpretiert und in Kontaktplanlogik umgewandelt wurde. Die allgemeinen Tipps sind: 1. Verstehen Sie den Schaltplan von der Eingangsleistung bis zur Ausgangsleistung. Sehen Sie sich zwischendurch an, welche Komponenten wo platziert sind und wie sie verdrahtet sind. 2. Identifizieren Sie bei der Verdrahtung die Eingangsteile und die Ausgangsteile und markieren Sie sie mit unterschiedlichen Farben. 3. Beginnen Sie mit der Programmierung, indem Sie dem Diagramm folgen und die Komponenten auf die gleiche Weise platzieren, wie die Verdrahtung erfolgt. 4. Führen Sie das Programm aus und sehen Sie, wie es funktioniert. -
Füllstandsregelung für in Reihe geschaltete Tanks mithilfe der SPS-Kontaktplanprogrammierung
leigehong posted A plc and hmi article in German in PLC programming learning
Wir müssen den Füllstand von in Reihe geschalteten Tanks regeln. Implementieren Sie ein Programm zur Füllstandsregelung für in Reihe geschaltete Tanks mithilfe der SPS-Kontaktplanprogrammierung. Füllstandsregelung für in Reihe geschaltete Tanks Zwei Tanks sind in Reihe geschaltet. Wir müssen beide in Reihe geschalteten Tanks regeln. Implementieren Sie das SPS-Programm für diese Anwendung. Problemdiagramm Problemlösung In Chemieunternehmen gibt es viele Materialien, die für Prozesse verwendet und auch in Lagertanks für verschiedene Prozesse gelagert werden. Hier betrachten wir zwei Tanks, 1. Lagertank und 2. Zuführtank. Der Lagertank hat mehr Kapazität als der Zuführtank. Der Lagertank dient zur Materiallagerung und der Zuführtank zur Materialversorgung für andere Prozesse. Zwei Füllstandsschalter werden zur Füllstandserkennung und ein Einlassventil zur Steuerung der Materialzufuhr verwendet. Betrachten wir ein manuelles Auslassventil, das je nach Bedarf vom Bediener bedient werden kann. Für diese Anwendung können wir eine SPS verwenden. Wir werden ein SPS-Programm für diese Anwendung schreiben. Liste der Ein- und Ausgänge Digitale Eingänge Zyklusstart: I0.0 Zyklusstopp: I0.1 Lagertank mit niedrigem Füllstand (LL1): I0.3 Zuführtank mit niedrigem Füllstand (LL2): I0.4 Lagertank mit hohem Füllstand (LH1): I0.5 Zuführtank mit hohem Füllstand (LH2): I0.6 Digitaler Ausgang Einlassventil: Q0.0 M-Speicher Zyklus-Ein-Bit: M0.0 Zustandszustand für geschlossenes Einlassventil: M0.1 SPS-Kontaktplandiagramm zur Füllstandskontrolle von Serientanks Programmbeschreibung Für diese Anwendung haben wir eine S7-300-SPS und die TIA-Portalsoftware zur Programmierung verwendet. Wir können diese Logik auch mit anderen SPS implementieren. Netzwerk 1: Netzwerk 1 ist für den Verriegelungskreis. Wenn die START-Taste gedrückt wird (I0.0), ist das Zyklus-EIN-Bit (M0.0) EIN. Der Zyklus kann durch Drücken von STOP PB (I0.1) gestoppt werden. Netzwerk 2: Wenn ein niedriger Füllstand des Lagertanks (I0.3) oder ein niedriger Füllstand des Zufuhrtanks (I0.4) erkannt wird, ist das Einlassventil (Q0.0) EIN. (Der Zustand „Einlassventil geschlossen“ darf nicht vorliegen.) Netzwerk 3: Wenn hohe Füllstände (I0.5 & I0.6) beider Tanks erkannt werden, wird der Zustand „Einlassventil geschlossen“ aktiviert und das Einlassventil (Q0.0) wird geschlossen. Hier ist das Auslassventil ein manuelles Ventil, es kann vom Bediener je nach Bedarf bedient werden. Hinweis: - Die obige Anwendung kann von der tatsächlichen Anwendung abweichen. Dieses Beispiel dient nur zu Erklärungszwecken. Wir können diese Logik auch in anderen SPS implementieren. Ergebnis -
Motorauslöselogik mit SPS-Programmierung
leigehong posted A plc and hmi article in German in PLC programming learning
Fragen und Antworten zu speicherprogrammierbaren Steuerungen (SPS) Diese SPS wird zum Starten und Stoppen eines Elektromotors sowie zum automatischen Herunterfahren verwendet, wenn einer der drei „Abschaltzustände“ eintritt: Übermäßige Vibration Überstrom (Überlastungsheizkontakt) Hohe Wicklungstemperatur Motorauslöselogik mit SPS-Programmierung Der Status jedes Abschaltkontakts ist wie folgt: Vibrationskontakt: geschlossen, wenn in Ordnung, öffnet, wenn Vibration übermäßig wird Überlastkontakt: geschlossen, wenn in Ordnung, öffnet, wenn überlastet Temperaturkontakt: geöffnet, wenn in Ordnung, schließt, wenn heiß Zeichnen Sie ein SPS-Ladder-Logikprogramm zum Starten und Stoppen dieses Motors. Achten Sie darauf, dass das Programm verriegelt wird, damit der Bediener die Starttaste nicht gedrückt halten muss, um den Motor am Laufen zu halten. Antwort: Finden Sie Fehler in der Logik? Teilen Sie sie uns in den Kommentaren mit. -
SIEMENS-DE Wie behebt man Probleme mit Siemens-SPS-Programmen?
leigehong posted A plc and hmi article in German in PLC programming learning
In diesem Artikel geht es um die Methode zur Fehlerbehebung bei der SPS-Programmierung. In industriellen SPSen, in denen Tausende von Ein- und Ausgängen verwendet werden, hängt die Länge von SPS-Programmen von der Anwendung oder Anlagennutzung ab. Beheben von Problemen mit Siemens-SPS-Programmen Manchmal ändern Leute unwissentlich die Logikparameter, was zu einem Fehler führen kann. Aufgrund der Komplexität des Designs entstehen sogar einige Fehler während der Logikdesignphase. Die Siemens-SPS-Software verfügt über verschiedene praktische Tools zur Fehlerbehebung bei in den Programmen generierten Fehlern. Fehler können beispielsweise Überlappungen der Adressierung, mehrere gleiche Ausgabeinstanzen, Überlappungen von Speicherbitadressen, häufiges wiederholtes Arbeiten mit einem einzigen Programm usw. sein. Um solche Probleme zu finden, stehen in der Siemens-Software vier Arten von Fenstern zur Verfügung, die uns bei der Fehlerbehebung helfen. Sie lauten: Querverweis Aufrufstruktur Zuweisungsliste Abhängigkeitsstruktur Lassen Sie uns besprechen, wie wir sie in unserem Programm zur Fehlerbehebung verwenden und wo wir sie in der Software finden. Querverweis Querverweise werden verwendet, um alle in der Logik verwendeten digitalen und analogen Ein- und Ausgänge zu finden. Sie helfen uns dabei, herauszufinden, wie oft die E/A im Programm verwendet werden, und führen Benutzer auch direkt zum spezifischen Standort der E/A auf den Logikseiten. Hier ist ein Beispiel für eines der Programme, in dem Sie sehen können, wie die Querverweistabelle aussieht. Sie enthält alle Informationen wie Adressierung, die Sprache des Programms, verwendete Ein- und Ausgänge usw. Aufrufstruktur Wenn Sie wissen möchten, welcher Block in der Programmierung verwendet wird, wird die Aufrufstruktur verwendet. Dies ist eine Umkehrung der Querverweisfunktion, bei der wir erfahren, wie oft SFC- und FB-Blöcke in OB (Organisationsblock) verwendet werden, und hier erfahren wir, wie oft OB in SFC und FBs verwendet wird. Zuweisungsliste Die Zuweisungsliste ist eine sehr nützliche Funktion, wenn es darum geht, zu erfahren, wie viele Eingänge, Ausgänge, Timer und Zähler in unserer Anwendung verwendet werden und wie viele davon noch übrig sind, damit wir sie in zukünftigen Logiken verwenden können. Abhängigkeitsstruktur Die Abhängigkeitsstruktur wird verwendet, um anzuzeigen, wo jeder einzelne Block innerhalb der Programmierung verwendet wird. In Schritt 7 gelangen Sie jedoch nicht direkt an die Stelle, sondern in TIA PORTAL an die Stelle, an der das Programm geschrieben ist. HINWEIS: Um diese Fenster in Schritt 7 zu öffnen, verwenden Sie die Informationen wie in der Zeichnung gezeigt. Nach dem Klicken auf „Anzeigen“ stehen Ihnen die Optionen zur Verfügung. Führen Sie im TIA PORTAL die folgenden Schritte aus, die in der Zeichnung dargestellt sind. -
DCS- versus SPS-Architektur
leigehong posted A plc and hmi article in German in PLC programming learning
Der Hauptunterschied zwischen DCS und PLC ist das Geschäftsmodell, das wir im Vergleich zwischen DCS- und SPS-Architektur erörtert haben. DCS- versus SPS-Architektur Das DCS-Geschäftsmodell basiert auf einem monolithischen integrierten System eines einzigen Herstellers. DCS-Architektur Bei einem DCS sind Controller, E/A-Subsystem, Datenbankserversoftware, Engineering-Software und Bedienersoftware alle eine einzige monolithische Einheit, die gemeinsam entwickelt wurde und nur miteinander funktioniert. Es ist nicht möglich, Komponenten von Drittanbietern zu verwenden. Es ist nicht möglich, eine dieser Komponenten auf einem anderen System zu verwenden. Ein DCS verwendet ein E/A-Subsystemnetzwerk und ein Steuerungsnetzwerk auf Basis von Standard-Ethernet, jedoch mit einem proprietären Anwendungsprotokoll und normalerweise nur mit einem bestimmten zugelassenen Modell von Ethernet-Switches. Abbildung 1 In einem DCS stammen alle Komponenten vom selben Hersteller. Nur eine bestimmte Version von Windows ist zulässig und nur auf einem Typ zugelassener Computer, der vom DCS-Hersteller geliefert wird. Diese Einschränkungen ermöglichen es dem DCS-Hersteller, alles sehr gründlich, in großem Maßstab, mit hoher Belastung, mit vielen Controllern und Arbeitsstationen zusammen zu testen. Anwendungen wie Batch-Steuerung, erweiterte Steuerung und Auto-Tuning usw. werden ebenfalls zusammen getestet. Dadurch wird sichergestellt, dass es keine Kompatibilitätskonflikte und unvorhergesehenen Abhängigkeiten gibt. Gründliche Tests im großen Maßstab sind möglich, da es im Wesentlichen nur einen Typ jeder Komponente gibt, also nur eine oder sehr wenige Kombinationen. Software von Drittanbietern ist nur auf separaten „Anwendungsstationen“ zulässig, wo sie nicht mit den nativen DCS-Anwendungen in Konflikt geraten kann und vom DCS-Hersteller getestet und genehmigt werden muss; auf die Whitelist gesetzt. Ein DCS ist monolithisch und verwendet E/A-Subsystem, Controller und Software derselben Marke sowie eine einzige Computer- und Betriebssystemplattform. Dies wurde im großen Maßstab gründlich getestet. DCS-Langzeitsupport Systeme bleiben normalerweise 15 Jahre oder länger betriebsbereit. Während dieser Zeit wird es mehrere Windows-Versionen, Service Packs, Hotfixes und zahlreiche Updates der Virendefinitionen geben, und auch die Computerhardware muss ersetzt werden. Normalerweise unterstützt DCS nur eine einzige Art von Antivirensoftware, und wenn es eine neue Virendefinition gibt oder wenn es ein Service Pack oder einen Hotfix für das Windows-Betriebssystem gibt, wird die gesamte monolithische Suite aller Hardware und Software vor der Veröffentlichung erneut vom Systemanbieter zusammen getestet, um sicherzustellen, dass die Virendefinition und das Service Pack ohne Kompatibilitätskonflikte bereitgestellt werden können. DCS-Upgrade DCS-Versionen werden auch als eine einzige monolithische Einheit aller Hardware und Software aktualisiert, wie z. B. E/A-Karten-Firmware, Controller-Firmware, Serversoftware, Engineering-Station-Software, Operator-Station-Software sowie jede andere Software, die alle zusammen aktualisiert werden. Jedes Mal, wenn es eine neue Systemversion gibt, werden alle diese Komponenten im Voraus vom Systemhersteller gründlich und in großem Umfang zusammen getestet, um sicherzustellen, dass sie alle miteinander kompatibel sind. Darüber hinaus wurde der Online-Hotcutover-Prozess von der früheren Version auf die neue Version gründlich und in großem Umfang getestet, um eine reibungslose Bereitstellung vor Ort sicherzustellen. Diese Sicherheit, die gründliche und groß angelegte Tests bieten, macht DCS bei großen Anlagen wie petrochemischen Komplexen sehr beliebt. Solche Tests werden durch die wenigen Kombinationen in einem monolithischen System praktikabel. SPS-Architektur/Geschäftsmodell Das SPS-Geschäftsmodell basiert auf einer flexiblen Architektur eines Systemintegrators (SI). SPS-Architektur Die SPS-Architektur ist sehr flexibel, da jede Komponente von einem der vielen Anbieter frei ausgewählt werden kann. Die SPS ist die CPU mit Konfigurationssoftware und IO-Subsystem. Manchmal kann das I/O-Subsystem von einem Drittanbieter stammen. Sogar I/O-Karten, die in die Rückwand eingesteckt werden, können von Drittanbietern stammen. Die HMI-Software stammt normalerweise von einem Drittanbieter. Ein nativer OPC-Server des SPS-Herstellers ist normalerweise am besten, manchmal werden jedoch auch OPC-Server von Drittanbietern verwendet. Abbildung 2 Für eine SPS werden Komponenten verschiedener Hersteller integriert Grundsätzlich funktioniert jede SPS mit jedem E/A-Subsystem, OPC-Server und jeder HMI-Software, da Standardprotokolle wie PROFIBUS-DP, PROFINET, Modbus/RTU, Modbus/TCP, DeviceNet und EtherNet/IP sowie OPC usw. verwendet werden. Netzwerkgeräte, Computer und Windows-Version können frei gewählt werden. Einige Komponenten, die nicht funktionieren, werden auf die schwarze Liste gesetzt. Abbildung 3 DCS verwendet einen einzigen Lieferanten, während SPS-Lösungen mehrere Lieferanten kombinieren, was zu einer großen Anzahl von Kombinationen führt Hinweis: Heutzutage ist auch ein einziger SPS-Paketlieferant verfügbar Diese Flexibilität ermöglicht Hunderte von Kombinationen aus Hardware und Software, was es diesen Herstellern unmöglich macht, zusammenzukommen und jede mögliche Kombination ihrer Hardware und Software auf jeder Windows-Version zu testen, bevor sich ein Werk zum Kauf entscheidet. Einige Kombinationen können von den beteiligten Herstellern getestet werden, aber dies kann in großem Maßstab und mit hoher Belastung erfolgen oder auch nicht. Eine SPS erlaubt jede Kombination aus E/A-Subsystem, CPU und HMI/SCADA-Software auf einer großen Vielfalt von Computer- und Betriebssystemplattformen. Nicht jede Kombination kann getestet werden. Der SPS-Hersteller liefert möglicherweise alle Hardware- und Softwarekomponenten vom selben Hersteller, da viele SPS-Hersteller HMI-Unternehmen übernommen haben. Wenn dies der Fall ist, wurde diese bestimmte Kombination möglicherweise gründlicher getestet als die anderen getesteten Kombinationen. Zusätzliche Anwendungen von Drittanbietern wie Batch-Steuerung, erweiterte Steuerung und Auto-Tuning usw. werden im Allgemeinen nicht zusammen getestet, da dies zu einer noch größeren Anzahl von Kombinationen führt. Die SPS verwendet genau wie DCS proprietäre Konfigurationssoftware. Das heißt, Sie können für Ihre SPS keine Konfigurationssoftware von Drittanbietern verwenden, genau wie für ein DCS. Ein nativer OPC-Server für die SPS ist besser als ein OPC-Server von Drittanbietern, da die SPS-Konfigurationssoftware den Adressraum für den OPC-Server im Allgemeinen automatisch konfiguriert. Langfristige Unterstützung für SPS Während der 15 oder mehr Jahre eines typischen Systembetriebs wird es mehrere Windows-Versionen, Service Packs, Hotfixes, viele Updates für Virendefinitionen geben, und auch die Computerhardware muss ersetzt werden. Normalerweise gibt es für SPS keine Beschränkungen hinsichtlich der Antivirensoftware oder der Version des Windows-Betriebssystems, sodass die Anzahl der Kombinationen aus Virendefinitionen, Service Packs und Hotfixes für diese Hersteller zu groß und unpraktisch wird, um gemeinsam jede mögliche neue Kombination vor einer Bereitstellung in Anlagen zu testen und sicherzustellen, dass es bei der Bereitstellung auf der großen Anzahl von Kombinationen aus Hardware und Software zu keinen Kompatibilitätskonflikten kommt. Der SPS-Hersteller kann sich auf eine einzige Antivirensoftware und Windows-Version beschränken. Wenn dies der Fall ist, wurde diese bestimmte Kombination möglicherweise gründlicher getestet als die anderen Kombinationen, die sie testen. SPS-Upgrade Bei einer SPS werden Hardware- und Softwarekomponenten einzeln aktualisiert. Das heißt, Firmware des E/A-Subsystems, CPU-Firmware und Konfigurationssoftware, OPC-Server, HMI-Software sowie jede andere Software werden unabhängig voneinander aktualisiert. Wenn man die verschiedenen Versionen für jede Komponentenoption berücksichtigt, wird die Anzahl der Kombinationen um ein Vielfaches größer. Diese Flexibilität macht es für diese Hersteller unpraktisch, zusammenzukommen und jede mögliche Kombination neuer Versionen vor dem Einsatz in Anlagen zu testen. Das Testen des Hot-Cutovers einer Kombination von Versionen auf eine andere Kombination von Versionen wird nahezu unmöglich. Der SPS-Hersteller kann alle Hardware- und Softwarekomponenten liefern, sich auf eine einzige Antivirensoftware und Windows-Version beschränken, die vor dem Einsatz getestet werden, und sich auf ein einziges E/A-Subsystem beschränken (Datenbankserver, Controller/SPS, Bedienstation/HMI, DCS, SPS, systemweite Versionsupgrades) und den Hot-Cutover vor dem Einsatz testen. Auf diese Weise würde die Flexibilität der SPS aufgegeben, um die Robustheit eines DCS zu erreichen. -
Conceptos básicos de la programación de PLC
leigehong posted A plc and hmi article in Spanish in PLC programming learning
A finales de la década de 1960, una empresa estadounidense llamada Bedford Associates lanzó un dispositivo informático al que llamaron MODICON. Como acrónimo significaba Controlador Digital Modular, y más tarde se convirtió en el nombre de una división de la empresa dedicada al diseño, fabricación y venta de estas computadoras de control de propósito especial. Otras empresas de ingeniería desarrollaron sus propias versiones de este dispositivo y, finalmente, llegó a ser conocido en términos no propietarios como PLC o controlador lógico programable. SOCIEDAD ANÓNIMA El propósito de un PLC era reemplazar directamente los relés electromecánicos como elementos lógicos, sustituyendo en su lugar una computadora digital de estado sólido con un programa almacenado, capaz de emular la interconexión de muchos relés para realizar ciertas tareas lógicas. Un PLC tiene muchos terminales de "entrada", a través de los cuales interpreta estados lógicos "altos" y "bajos" y valores analógicos de interruptores y sensores. También tiene muchos terminales de salida, a través de los cuales emite señales "altas" y "bajas" para encender luces, solenoides, contactores, motores pequeños y otros dispositivos que se prestan para control de encendido/apagado y también salida analógica para controlar válvulas de control, motores. control de velocidad, etc En un esfuerzo por hacer que los PLC sean fáciles de programar, su lenguaje de programación fue diseñado para parecerse a diagramas de lógica de escalera. Por lo tanto, un ingeniero acostumbrado a leer esquemas de lógica de escalera se sentiría cómodo programando un PLC para realizar las mismas funciones de control. Programación de PLC La siguiente ilustración muestra un PLC simple, tal como podría verse desde una vista frontal. Dos terminales de tornillo proporcionan conexión a la fuente de alimentación para alimentar los circuitos internos del PLC, etiquetados como L1 y L2. Seis terminales de tornillo en el lado izquierdo brindan conexión a dispositivos de entrada; cada terminal representa un "canal" de entrada diferente con su propia etiqueta "X". El terminal de tornillo inferior izquierdo es una conexión "común", que generalmente está conectada a L2 (neutro) de la fuente de alimentación de 120 VCA. Dentro de la carcasa del PLC, conectado entre cada terminal de entrada y el terminal común, hay un dispositivo optoaislador (diodo emisor de luz) que proporciona una señal lógica "alta" aislada eléctricamente al circuito de la computadora (un fototransistor interpreta la luz del LED). ) cuando se aplica alimentación de 120 VCA entre el terminal de entrada respectivo y el terminal común. Un LED indicador en el panel frontal del PLC proporciona una indicación visual de una entrada "energizada": Las señales de salida son generadas por los circuitos de la computadora del PLC que activan un dispositivo de conmutación (transistor, TRIAC o incluso un relé electromecánico), conectando el terminal "Fuente" a cualquiera de los terminales de salida etiquetados "Y-". El terminal "Fuente", correspondientemente, generalmente está conectado al lado L1 de la fuente de alimentación de 120 VCA. Al igual que con cada entrada, un LED indicador en el panel frontal del PLC proporciona una indicación visual de una salida "energizada": De esta manera, el PLC puede interactuar con dispositivos del mundo real, como interruptores y solenoides. La lógica real del sistema de control se establece dentro del PLC mediante un programa informático. Este programa dicta qué salida se activa bajo qué condiciones de entrada. Aunque el programa en sí parece ser un diagrama de lógica de escalera, con símbolos de interruptor y relé, no hay contactos de interruptor ni bobinas de relé reales que operen dentro del PLC para crear las relaciones lógicas entre entrada y salida. Estos son contactos y bobinas imaginarios, por así decirlo. El programa se ingresa y se ve a través de una computadora personal conectada al puerto de programación del PLC. Considere el siguiente circuito y programa de PLC: Cuando el interruptor de botón no se acciona (no se presiona), no se envía energía a la entrada X1 del PLC. Siguiendo el programa, que muestra un contacto X1 normalmente abierto en serie con una bobina Y1, no se enviará “energía” a la bobina Y1. Por lo tanto, la salida Y1 del PLC permanece desenergizada y la lámpara indicadora conectada a ella permanece apagada. Sin embargo, si se presiona el interruptor de botón, se enviará energía a la entrada X1 del PLC. Todos y cada uno de los contactos X1 que aparecen en el programa asumirán el estado activado (no normal), como si fueran contactos de relé activados por la activación de una bobina de relé denominada "X1". En este caso, energizar la entrada X1 hará que el contacto X1 normalmente abierto se "cierre", enviando "energía" a la bobina Y1. Cuando la bobina Y1 del programa se “energiza”, la salida Y1 real se energizará, iluminando la lámpara conectada a ella: Debe entenderse que el contacto X1, la bobina Y1, los cables de conexión y la "alimentación" que aparecen en la pantalla de la computadora (sistema de ingeniería donde se carga el software PLC) son todos virtuales. No existen como componentes eléctricos reales. Existen como comandos en un programa de computadora (solo una pieza de software) que se parece a un diagrama esquemático de relé real. Igualmente importante es comprender que la computadora utilizada para mostrar y editar el programa del PLC no es necesaria para el funcionamiento continuo del PLC. Una vez que se ha cargado un programa en el PLC desde la computadora, la computadora se puede desconectar del PLC y el PLC continuará siguiendo los comandos programados. Incluyo la pantalla de la computadora en estas ilustraciones únicamente por su bien, para ayudar a comprender la relación entre las condiciones de la vida real (cierre del interruptor y estado de la lámpara) y el estado del programa (“potencia” a través de contactos y bobinas virtuales). La verdadera potencia y versatilidad de un PLC se revela cuando queremos alterar el comportamiento de un sistema de control. Al ser el PLC un dispositivo programable, podemos alterar su comportamiento cambiando los comandos que le damos, sin tener que reconfigurar los componentes eléctricos conectados a él. Por ejemplo, supongamos que quisiéramos hacer que este circuito de interruptor y lámpara funcione de manera invertida: presione el botón para apagar la lámpara y suéltelo para encenderla. La solución de “hardware” requeriría que un interruptor de botón normalmente cerrado fuera sustituido por el interruptor normalmente abierto actualmente en funcionamiento. La solución "software" es mucho más sencilla: basta con modificar el programa para que el contacto X1 esté normalmente cerrado en lugar de normalmente abierto. En la siguiente ilustración, tenemos el sistema alterado que se muestra en el estado en el que el pulsador no está accionado (no presionado): En la siguiente ilustración, el interruptor se muestra activado (presionado): Una de las ventajas de implementar el control lógico en software en lugar de hardware es que las señales de entrada se pueden reutilizar tantas veces en el programa como sea necesario. Por ejemplo, tome el siguiente circuito y programa, diseñados para energizar la lámpara si al menos dos de los tres interruptores de botón se accionan simultáneamente: Para construir un circuito equivalente utilizando relés electromecánicos, se tendrían que utilizar tres relés con dos contactos normalmente abiertos cada uno, para proporcionar dos contactos por interruptor de entrada. Usando un PLC, sin embargo, podemos programar tantos contactos como queramos para cada entrada “X” sin agregar hardware adicional, ya que cada entrada y cada salida no es más que un único bit en la memoria digital del PLC (ya sea 0 o 1). , y se puede recuperar tantas veces como sea necesario. Además, como cada salida del PLC no es más que un bit en su memoria, podemos asignar contactos en un programa de PLC “actuados” por un estado de salida (Y). Tomemos, por ejemplo, el siguiente sistema, un circuito de control de arranque y parada de motor: El interruptor de botón conectado a la entrada X1 sirve como interruptor de "Inicio", mientras que el interruptor conectado a la entrada X2 sirve como "Parada". Otro contacto en el programa, llamado Y1, utiliza el estado de la bobina de salida como un contacto de sellado, directamente, de modo que el contactor del motor continuará energizado después de soltar el botón pulsador de “Arranque”. Puede ver que el contacto normalmente cerrado X2 aparece en un bloque de color, lo que muestra que está en un estado cerrado (“conductor eléctrico”). Si tuviéramos que presionar el botón "Inicio", la entrada X1 se energizaría, "cerrando" así el contacto X1 en el programa, enviando "alimentación" a la "bobina" Y1, energizando la salida Y1 y aplicando energía de 120 voltios CA al Bobina de contactor de motor real. El contacto paralelo Y1 también se “cerrará”, bloqueando así el “circuito” en un estado energizado: Ahora, si soltamos el botón de “Arranque”, el “contacto” X1 normalmente abierto volverá a su estado “abierto”, pero el motor continuará funcionando porque el “contacto” sellado Y1 continúa brindando “continuidad”. para “alimentar” la bobina Y1, manteniendo así la salida Y1 energizada: Para detener el motor, debemos presionar momentáneamente el botón “Stop”, que energizará la entrada X2 y “abrirá” el “contacto” normalmente cerrado, rompiendo la continuidad a la “bobina” Y1: Cuando se suelta el botón "Parar", la entrada X2 se desenergizará, devolviendo el "contacto" X2 a su estado normal "cerrado". El motor, sin embargo, no arrancará nuevamente hasta que se accione el botón “Start”, porque se ha perdido el “sello” de Y1: Un punto importante a destacar aquí es que el diseño a prueba de fallos es tan importante en los sistemas controlados por PLC como en los sistemas controlados por relés electromecánicos. Siempre se deben considerar los efectos del cableado fallido (abierto) en el dispositivo o dispositivos que se están controlando. En este ejemplo de circuito de control del motor, tenemos un problema: si el cableado de entrada para X2 (el interruptor de "Parada") fallara al abrirse, ¡no habría forma de detener el motor! La solución a este problema es una inversión de la lógica entre el “contacto” X2 dentro del programa del PLC y el botón pulsador de “Parada” real: Cuando el botón pulsador de “Parada” normalmente cerrado no está accionado (no presionado), la entrada X2 del PLC se energizará, “cerrando” así el “contacto” X2 dentro del programa. Esto permite que el motor arranque cuando la entrada X1 está energizada y le permite continuar funcionando cuando ya no se presiona el botón de “Arranque”. Cuando se acciona el botón “Parada”, la entrada X2 se desenergizará, “abriendo” así el “contacto” X2 dentro del programa PLC y apagando el motor. Entonces, vemos que no hay diferencia operativa entre este nuevo diseño y el diseño anterior. Sin embargo, si el cableado de entrada en la entrada X2 fallara al abrirse, la entrada X2 se desenergizaría de la misma manera que cuando se presiona el botón "Parar". Entonces, el resultado de una falla de cableado en la entrada X2 es que el motor se apagará inmediatamente. Este es un diseño más seguro que el que se mostró anteriormente, donde una falla en el cableado del interruptor de "Parada" habría resultado en la imposibilidad de apagar el motor. Además de los elementos del programa de entrada (X) y salida (Y), los PLC proporcionan bobinas y contactos "internos" sin conexión intrínseca con el mundo exterior. Estos se usan de manera muy similar a como se usan los “relés de control” (CR1, CR2, etc.) en los circuitos de relés estándar: para proporcionar inversión de señal lógica cuando sea necesario. Para demostrar cómo se podría utilizar uno de estos relés "internos", considere el siguiente circuito y programa de ejemplo, diseñados para emular la función de una puerta NAND de tres entradas. Dado que los elementos del programa PLC generalmente están diseñados con letras individuales, llamaré al relé de control interno "C1" en lugar de "CR1", como sería habitual en un circuito de control de relés: En este circuito la lámpara permanecerá encendida mientras alguno de los pulsadores permanezca sin accionar (sin presionar). Para hacer que la lámpara se apague, tendremos que accionar (presionar) los tres interruptores, así: -
Conceptos básicos del diagrama de escalera en la programación de PLC
leigehong posted A plc and hmi article in Spanish in PLC programming learning
Conceptos básicos del diagrama de escalera en la programación de PLC La lógica de escalera era originalmente un método escrito para documentar el diseño y la construcción de bastidores de relés utilizados en la fabricación y el control de procesos. Cada dispositivo en el bastidor de relés estaría representado por un símbolo en el diagrama de escalera y se muestran las conexiones entre esos dispositivos. Además, en el diagrama de escalera también se mostrarían otros elementos externos al bastidor de relés, como bombas, calentadores, etc. La lógica de escalera ha evolucionado hasta convertirse en un lenguaje de programación que representa un programa mediante un diagrama gráfico basado en los diagramas de circuito del hardware de lógica de relé. La lógica de escalera se utiliza para desarrollar software para controladores lógicos programables (PLC) utilizados en aplicaciones de control industrial. El nombre se basa en la observación de que los programas en este lenguaje se parecen a escaleras, con dos rieles verticales y una serie de peldaños horizontales entre ellos. Si bien los diagramas de escalera alguna vez fueron la única notación disponible para registrar programas de controladores programables, hoy en día otras formas están estandarizadas en IEC 61131-3. La lógica de escalera se usa ampliamente para programar PLC, donde se requiere control secuencial de un proceso u operación de fabricación. La lógica de escalera es útil para sistemas de control simples pero críticos. A medida que los controladores lógicos programables se volvieron más sofisticados, también se han utilizado en sistemas de automatización muy complejos. A menudo, el programa de lógica de escalera se utiliza junto con un programa HMI que funciona en una estación de trabajo informática. Ejemplo de un programa de lógica de escalera simple El lenguaje en sí puede verse como un conjunto de conexiones entre controladores lógicos (contactos) y actuadores (bobinas). Si se puede trazar una ruta entre el lado izquierdo del renglón y la salida, a través de contactos afirmados (verdaderos o “cerrados”), el renglón es verdadero y el bit de almacenamiento de la bobina de salida es afirmado o verdadero. Si no se puede rastrear ningún camino, entonces la salida es falsa (0) y la "bobina", por analogía con los relés electromecánicos, se considera "desenergizada". La lógica de escalera tiene contactos que abren o rompen circuitos para controlar las bobinas. Cada bobina o contacto corresponde al estado de un solo bit en la memoria del controlador programable. A diferencia de los relés electromecánicos, un programa de escalera puede hacer referencia cualquier número de veces al estado de un solo bit, lo que equivale a un relé con un número indefinidamente grande de contactos. Los llamados "contactos" pueden referirse a entradas físicas ("duras") al controlador programable desde dispositivos físicos como botones pulsadores e interruptores de límite a través de un módulo de entrada integrado o externo, o pueden representar el estado de los bits de almacenamiento interno que pueden generarse. en otras partes del programa. Cada peldaño del lenguaje de escalera normalmente tiene una bobina en el extremo derecho. Algunos fabricantes pueden permitir más de una bobina de salida en un peldaño. —( )— Una bobina normal, energizada cada vez que su peldaño está cerrado. —()— Una bobina “no”, energizada cada vez que su peldaño está abierto. —[ ]— Un contacto regular, cerrado siempre que se energiza su correspondiente bobina o una entrada que la controla. —[]— Un contacto “no”, cerrado siempre que su correspondiente bobina o una entrada que la controle no esté energizada. La “bobina” (salida de un peldaño) puede representar una salida física que opera algún dispositivo conectado al controlador programable, o puede representar un bit de almacenamiento interno para usar en otra parte del programa. Y lógico ------[ ]--------------[ ]----------------( ) Interruptor de llave 1 Interruptor de llave 2 Motor de puerta Lo anterior realiza la función: Motor de puerta = Interruptor de llave 1 Y Interruptor de llave 2 Este circuito muestra dos interruptores de llave que los guardias de seguridad podrían usar para activar un motor eléctrico en la puerta de la bóveda de un banco. Cuando los contactos normalmente abiertos de ambos interruptores se cierran, la electricidad puede fluir hacia el motor que abre la puerta. Lógico Y con NO ------[ ]--------------[]----------------( ) Cerrar la puerta Obstrucción Motor de la puerta Lo anterior realiza la función: Motor de Puerta = Cerrar puerta Y NO(Obstrucción). Este circuito muestra un botón que cierra una puerta y un detector de obstrucciones que detecta si algo se interpone en el camino para cerrar la puerta. Cuando el contacto del botón normalmente abierto se cierra y el detector de obstrucción normalmente cerrado se cierra (no se detecta ninguna obstrucción), la electricidad puede fluir hacia el motor que cierra la puerta. O lógico --+-------[ ]-------+-----------------( ) | Desbloqueo exterior | desbloquear | | +-------[ ]-------+ Desbloqueo interior Lo anterior realiza la función: Desbloquear = Desbloquear Interior O Desbloquear Exterior Este circuito muestra las dos cosas que pueden activar los seguros eléctricos de las puertas de un automóvil. El receptor remoto siempre está encendido. El solenoide de bloqueo recibe energía cuando cualquiera de los conjuntos de contactos está cerrado. PARADA/INICIO industriales En la lógica industrial común de arranque/parada con enclavamiento, tenemos un botón de "arranque" para encender un contactor de motor y un botón de "parada" para apagar el contactor. Cuando se presiona el botón de "inicio", la entrada se vuelve verdadera, a través del contacto NC del botón de "parada". Cuando la entrada de “ejecución” se vuelve verdadera, el contacto NO sellado de “ejecución” en paralelo con el contacto NO de “inicio” se cerrará manteniendo la lógica de entrada verdadera (enclavada o sellada). Después de bloquear el circuito, se puede presionar el botón de “parada”, lo que provoca que se abra su contacto NC y, en consecuencia, que la entrada sea falsa. Luego se abre el contacto NA de “ejecución” y la lógica del circuito vuelve a su estado de reposo. --+----[ ]--+----[]----( ) | inicio | dejar de correr | | +----[ ]--+ correr -------[ ]--------------( ) hacer funcionar el motor Lo anterior realiza la función: ejecutar = (iniciar O ejecutar) Y (NO detener) Tenga en cuenta el uso de paréntesis para agrupar la función lógica OR antes de evaluar la función lógica AND (que tiene un orden de prioridad de operación más alto). También tenga en cuenta el uso de NOT para representar la lógica de contacto NC de “parada”. Esta configuración de pestillo es un modismo común en la lógica de escalera. En lógica de escalera se le conoce como lógica de sellado. La clave para entender el pestillo es reconocer que el interruptor de "inicio" es un interruptor momentáneo (una vez que el usuario suelta el botón, el interruptor se abre nuevamente). Tan pronto como se activa el solenoide de "marcha", cierra el contacto NO de "marcha", que bloquea el solenoide. La apertura del interruptor de “arranque” no tiene ningún efecto. Por razones de seguridad, se debe cablear una parada de emergencia y/o una parada en serie con el interruptor de arranque, y la lógica del relé debe reflejar esto. --[]----[]----+--[ ]--+---------( ) ES Parada | Inicio | Motor | | +--[ ]--+ Correr Lógica compleja A continuación se muestra un ejemplo de cómo se verían dos peldaños en un programa de lógica de escalera. En aplicaciones del mundo real, puede haber cientos o miles de peldaños. Normalmente, la lógica de escalera compleja se "lee" de izquierda a derecha y de arriba a abajo. A medida que se evalúa cada una de las líneas (o peldaños), la bobina de salida de un peldaño puede alimentar la siguiente etapa de la escalera como entrada. En un sistema complejo habrá muchos “peldaños” en una escalera, que están numerados en orden de evaluación. 1. ----[ ]---------+----[ ]-----+----( ) Cambiar | Alta temperatura | C.A | | +----[ ]-----+ Húmedo 2. ----[ ]----[]--------------------( ) A/C Calor Enfriamiento La línea 1 realiza la función: A/C = Switch AND ( HiTemp OR Humid ) La línea 2 realiza la función: Refrigeración = A/C Y (NO Calor) Esto representa un sistema un poco más complejo para el peldaño 2. Después de evaluar la primera línea, la bobina de salida "A/C" se alimenta al peldaño 2, que luego se evalúa y la bobina de salida "Refrigeración" podría alimentarse a una salida. dispositivo “Compresor” o en el peldaño 3 de la escalera. Este sistema permite descomponer y evaluar diseños lógicos muy complejos. Funcionalidad adicional El fabricante del PLC puede agregar funcionalidad adicional a una implementación de lógica de escalera como un bloque especial. Cuando el bloque especial está encendido, ejecuta código con argumentos predeterminados. Estos argumentos pueden mostrarse dentro del bloque especial. +-------+ -----[ ]--------------------+ A +---- Desbloqueo remoto +-------+ Contador remoto +-------+ -----[ ]--------------------+ B +---- Desbloqueo interior +-------+ Mostrador interior +--------+ -----------+ A + B +----------- | en C | +--------+ Sumador En este ejemplo, el sistema contará la cantidad de veces que se presionan los botones interior y de desbloqueo remoto. Esta información se almacenará en las ubicaciones de memoria A y B. La ubicación de memoria C contendrá el número total de veces que la puerta se ha desbloqueado electrónicamente. Los PLC tienen muchos tipos de bloques especiales. Incluyen temporizadores, operadores aritméticos y comparaciones, búsquedas de tablas, procesamiento de texto, control PID y funciones de filtrado. Los PLC más potentes pueden operar en un grupo de ubicaciones de memoria interna y ejecutar una operación en un rango de direcciones, por ejemplo, para simular un controlador de tambor secuencial físico o una máquina de estados finitos. En algunos casos, los usuarios pueden definir sus propios bloques especiales, que efectivamente son subrutinas o macros. La gran biblioteca de bloques especiales junto con la ejecución de alta velocidad ha permitido el uso de PLC para implementar sistemas de automatización muy complejos. -
What is a Data Block? Global Data Blocks in PLC
leigehong posted A plc and hmi english article in PLC programming learning
Different Blocks structures are available when programming a PLC, these blocks include Functions FCs, function blocks FBs, and data blocks DBs. These blocks are very handy tools that you can use to better design your PLC logic and make your code more readable and easy to follow and debug In previous articles, we discussed the FCs and FBs. In this article, we will discuss the Data Block DBs, more specifically the Global Data Block. Contents: What is a data block DB? Types of data blocks. What is a global data block? Creating a global data block? Working with Global data blocks. Example simulation. What is a Data Block? A data block DB is a memory area that is used to save the values of the parameters that are written during the execution of the PLC program. Opposite to the code block, the data block DB contains only variable declarations. It doesn’t have any networks or instructions like an FC or an FB has. The structure of the DB is defined by how many variables you have declared inside the data block. Types of Data Blocks in PLC There are two types of data blocks: Global Data blocks Instance data blocks ARRAY data blocks Global Data Blocks As the name suggests, the global data block is globally declared for the whole PLC logic. It is not assigned to a specific code block. You can access the values of a global data block from any code block anywhere in your PLC logic. A global data block contains only static tags. The structure of the global data block can be freely defined. In the declaration table for data blocks, you declare the data elements that are to be contained in the global data block. Instance data Blocks The instance data block is assigned directly to a function block FB, whether this function block is internally defined in the PLC like Timers and Counters or user-defined Function blocks FBs. The structure of an instance data block cannot be freely defined but is instead determined by the interface of the function block. The instance data block contains exactly those block parameters and tags that are declared in the Function block interface. However, you can define instance-specific values in the instance data block; for example, start values for the declared tags. ARRAY Data Blocks Available only for S7-1500 CPUs, ARRAY data blocks are global data blocks that consist of an ARRAY. This ARRAY can be based on any data type. For example, an ARRAY of a PLC data type (UDT) is possible. The DB contains no other elements besides the ARRAY. Because of their flat structure, ARRAY data blocks facilitate access to the ARRAY elements and their transfer to called blocks. The “Move operations” section of the “Instructions” task card offers options for addressing ARRAY DBs. In this article, we will take about the global data block, and we will discuss the other two types in separate articles. What is Global Data Block? Data blocks are used to store PLC program data. That means they contain variable data that is used by the user program. Global data blocks store data that can be used by all other blocks. The maximum size of data blocks varies depending on the CPU. You can define the structure of global data blocks any way you, please. You also have the option of using PLC data types (UDT) as a template for creating global data blocks. Every function block FB, function FC, or organization block OB can read the data from a global data block or can itself write data to a global data block. This data remains in the data block even after the data block is exited. See picture 1. Picture 1 – Accessing global data block As you can see from the previous picture, a global data block can be accessed from any code block inside the PLC program, whereas the instance data block can only be accessed by the associated function block. Creating a Global Data Block You create a global data block the same way you create a function FC or a function block FB. From the add a new block to your project tree. See picture 2. Picture 2 – Creating a global data block Let’s declare some variables inside the Global data block. You do that by clicking the add new under name section writing the variable name that you want and then choosing the variable data type. See picture 3. Picture 3 – Variables declaration in a global data block Working with a Global Data Block Declaring a tag. We already showed how to declare a tag/variable in picture 3. Defining a start value The start value of a tag is a value defined by you, which the tag assumes after a CPU startup. The value must match the data type of the tag and should not exceed the range of the data type. See picture 4. The tag takes the defined value at startup, provided it was not declared as retentive. Picture 4 – Defining the start value of your tags So, if I set the Tank1Level start value to any value other than zero, this value will be applied the next time the PLC is restarted. See picture 5. Picture 5 – Defining a start value for your variables Retaining of variables in global data blocks To prevent data loss in the event of power failure, you can mark the data as retentive. This data is stored in a retentive memory area. The options for setting the retain depend on the type of data block and the type of block access that is set. See picture 6. Picture 6 -. Retain option in global data blocks As you see in picture 6, the Tank2Level variable is set to be a retained value, which means even if the PLC stopped or there was a power failure, the Tank2Level will have the same data stored when the PLC is on again. It will not be reset to the start value. Accessibility to/from HMI In a global data block, you can define if a variable can be visible from the HMI tag tables or not. You can also define if this variable can be read or written from the HMI. See picture 7. Picture 7 – Accessibility from HMI The default setting for any declared variable in a global data block is that it can be accessed, read, and writable from HMI. If you want to disable this feature for a certain variable, you have to uncheck the accessibility option for that variable. Example Simulation So far we created a global data block and declared some variables inside. Now we will try to run a simulation of the program and see if we can better understand what a global data block is. Two PLC simulations are provided below. Testing the Start Values of a Variable Check the following animation explaining the start value of a variable inside a global data block. Animation 1 Animation 1 Explanation: The start values of the tank level parameters are zero, you can see in the video they are being changed by the simulation screen. When the PLC is restarted, powered off then powered on again, you see that the values will be reset to the start values which are zero. After that, the start values were changed to 500, 32654, and -356 respectively, and when the PLC is restarted the values were changed to the new start values. Notice that when we changed the start values, we had to download our logic again to the PLC; you need to do that each time you make a change to your logic. Testing the Retain Option of Variables in Global DB Check the following animation explaining the retain option of a variable inside a global data block. Animation 2 Animation 2 Explanation: First, you will notice that the Retain property of Tank2Level is now active. You see in the video the values of the 3 tanks are being changed. When the PLC is stopped and then started again, the Tank1Level and Tank3Level are reset back to the start value which is 0, but Tank2Level retained its value of -22938 Conclusion A global data block can be accessed from anywhere and by any block that exists in the PLC program. You can declare as many variables as you want inside a global database. The best practice technique is to create separate data blocks for the different sections of your logic, to make it very easy to follow your logic. For example a separate data block for all the variables that need to be read or written by an HMI. -
SIEMENS Siemens Tia Portal – Optimized and Standard Data Block Access
leigehong posted A plc and hmi english article in PLC programming learning
In the previous article, we talked about data blocks, and we discussed the two different types of data blocks, the global data block and the data instances of function blocks FBs. In this article, we are going to discuss what is meant by optimized data block access and standard data block access in Siemens Tia Portal. Contents: What are optimized and standard data blocks? Simple program example. What are Standard DBs? What is the offset? What are optimized DBs? Advantages of using optimized DBs. Conclusions. What is optimized and standard data block access? First, these are not new types of data blocks; we said we only have two different types, the global DB and the instance DB. Optimized data block access is a feature for the data block. You can activate or disable this feature from the properties of the data block you have created. The optimized data block feature is only available for S7-1200 and S7-1500 PLCs not for s7-300 or s7-400 The standard setting for data blocks when working with S7-1200 or S7-1500 PLCs is that they are optimized, if you want a standard data block you will have to set that yourself. So, what is optimized and standard blocks? To understand the difference, we will make a simple program and try to show how an optimized block differs from a standard block. Simple Program Example: In this example we will not create any PLC logic or code any instructions, we will just create 2 global data blocks, DB1 will be called OptimizedDB and DB2 will be called StandardDB. Inside both data blocks, we will declare 4 variables of data types Bool, Int, Real, and Word respectively. See picture 1. Picture 1 – Create two global DBs The first thing you will notice is that both data blocks are exactly the same, that is because as we said the default setting when creating a data block is that it will be optimized, so we need to change the setting of DB2 to make it a standard block, to see if something will change. We do that from the properties of that DB2. You access the properties of DB2 by right click the data block and press properties. See picture 2. Picture 2 – Change DB2 to standard block access Once you de-select the optimized block access attributes that you see in picture 2 and press OK, a warning message will pop up, see picture 3. Picture 3 – Change block access Pop-up Once you press OK, your DB2 will have been converted to standard block access. See picture 4. To see what difference did that make. Picture 4 – DB2 is now a standard block What we can directly see is that DB1 and DB2 are not the same anymore. The standard block access option represented in DB2 has an additional column called offset. In front of each variable in the offset box, there is a … written, this will change once you compile your program. Let’s compile and see what happens, see picture 5. Picture 5 – Compile your program to reload the offset Now, the offset is filled in with as you can see 0.0, 2.0, 4.0, and 8.0 respectively. So, what is that offset? What does it mean? We will get to that later, but now, Let’s create another STANDARD block and declare the same 4 variables, but this time we will change the order of the variable data types, see picture 6. Picture 6 – Create another standard block DB3 You see from the last picture the offset of DB2 and DB3 is different, why the offset values are different when we changed the order of data types? They are the same data types but in different order. Let’s create another standard DB, and declare the same 4 variables but again in a different order. Compile your PLC code and now compare the offset of the 3 DBs. See picture 7. Picture 7 – Three different DBs with three different offsets The same thing happened again. What are Standard DBs? What is the offset? Data blocks with standard access have a fixed structure. When you declare a variable inside a standard DB this variable will be assigned a fixed address within this DB. The address of this variable is shown in the “Offset” column. So, what we were seeing inside the offset in previous pictures was the address assigned for each variable. Because the structure of standard DBs is fixed, you can only work inside the DBs with fixed memory capacity, this is 16 bits area or 2 bytes. This is the reason for the different addressing of the same variables when we changed the order of declaration. For more explanation see picture 8. Picture 8 – Simple representation of DB2 Picture 8 shows a simple representation of the standard data block DB2. As we said before a standard DB has fixed memory blocks of 16 bits, so, when we declare Variable_1 to be of data type BOOL, this Variable will occupy the whole 16 bits even though it only needs a 1-bit memory. That is why you see the rest of the area marked red because it is not used but can no longer be used. So it is a lost memory. With Variable_2 the data type INT needs 16 bits, so it is using 2 whole bytes. Same with Variable_4 which is of data type WORD. With Variable_3 we occupied 4 bytes because it is of data type REAL. This is why the offset for DB2 is 0.0, 2.0, 4.0, and 8.0 respectively. The same concept is executed for DB3 and DB4. But because the data type order of the variables is different the memory representation will be different and hence the offset will be different. See pictures 9 and 10 for DB3 and DB4. See if you can understand the representation based on the previous explanation. Picture 9 – Memory representation of DB3 Picture 10 – Memory representation of DB4 So, when you work with a standard DB you have to be careful when declaring your variables, knowing that there would be a loss of memory each time you define a new BOOL variable. If you declare the new variable at the end of your DB list, the offset will extend to include your new variable. But if you declare the new variable between your old or at the start of the DB something else will happen. See picture 11. Picture 11 – Declare a new variable The first thing you will notice is that your offset is now lost, and you have to compile your code to re-establish the new offset. See picture 12. Picture 12 – Re-establish your offset by recompiling your code Did you notice how the addressing of the Variables (OFFSET) has now changed? For example, the offset of the REAL tag was 2.0 but after we added the new TestVariable the addressing of the same REAL tag (OFFSET) is now 4.0, see picture 13. Picture 13 – Offset change after adding TestVariable So, when adding a new variable the addressing of all old variables was changed. That means any instruction in your program that need to write of read the value of a certain variable will now be looking at the assigned address in the instruction but now the address has different data than expected. So simply put, your whole logic is now messed up. That will lead to a lot of trouble. Not to mention now you have extra lost memory after you added the new variable. See picture 14. Picture 14 – Add a MOVE instruction Let’s add a MOVE instruction to move a value of 1 into the Variable_2 tag. See how the address of the MOVE output is %DB2.DBW2. Now, let’s add a new variable of type INT to DB2. See picture 15. Picture 15 – Add new INT variable When you add the new variable, the offset is lost and the PLC no longer knows where the destination of the OUT1 of the MOVE instruction is. We need to compile the program to reload the new offset. See picture 16. Picture 16 – New address of OUT1 Do you see how the OUT1 address is now different? It is now %DB2.DBW4 instead of %DB2.DBW2. This is a very big disadvantage of using standard data blocks. What are Optimized DBs? The difference between optimized data blocks and standard data blocks is that variables inside an optimized data block are not assigned to a fixed address, but rather a symbolic name is given for the variables, plus the structure of the data block is not fixed as the standard data blocks, so there is no memory loss and no change in the addresses when declaring new tags. See picture 17. Picture 17 – Declaring new tag in optimized blocks So, declaring new tags in optimized data blocks will not affect the rest of the tags, as they are defined by symbolic names rather than absolute addressing. An optimized data block will not allow you to use addresses when working with the tags defined inside of it. See picture 18. Picture 18 – Absolute addressing with optimized blocks As you see in the last picture, absolute addressing is not allowed with an optimized data block and only symbolic names are allowed. See picture 19. Picture 19 – Using symbolic names with optimized DBs Advantages of Data blocks with Optimized Access Data blocks with optimized access have no fixed defined structure. The data elements (tags) are assigned only a symbolic name and no fixed address within the block is used. The elements are saved automatically in the available memory area of the block so that there are no gaps in the memory. This makes for optimal use of the memory capacity and avoids lost memory compared to standard DBs. This provides the following advantages: You can create data blocks with any structure without paying attention to the physical arrangement of the individual tags. Quick access to the optimized data is always available because the data storage is optimized and managed by the system. Access errors, as with indirect addressing or from the HMI, for example, are not possible. Because there are now addresses, just unique symbolic names for each tag. You can define specific individual tags as retentive. In standard DBs you can only define the whole block as retentive. Conclusion Optimized data blocks have a lot of advantages compared to standard DBs. Using symbolic names helps avoid any address changes of tags when adding new variables to your block. With optimized blocks, no memory area is lost. Opposite of what happens when using standard DBs. -
SIEMENS Siemens PLC Tia Portal – OB100 Start-up Organization Block
leigehong posted A plc and hmi english article in PLC programming learning
In previous articles we started discussing different Organization blocks of TIA Portal PLCs, we talked about what OBs are, and we discussed some of the OBs like OB1- Main cyclic, OB10, and OB20 the time of day delay and time delay interrupts respectively. In this article, we will talk about the OB100 or the startup organization block in Siemens Tia Portal. Contents: What is OB100? Why need OB100? Important notes during startup. Simple program example. What is Start-up Organization Block (OB100)? OB100 or the startup OB is an organization block that is called and executed by the operating system once at the startup of the PLC, meaning once each transition from STOP to RUN mode. The main cycle OB1 will not be called and executed until all startup functions inside OB100 are executed. You can have more than one start-up OB in your PLC logic if that happens then the operating system will call and execute all of them one by one starting from a lower OB number to a higher number. I.e. if you have OB100 and OB123, then OB100 will be called and executed first then OB123. After the OB100 is executed the operating system will read the input modules into the PII and starts the main cycle program OB1. Why need OB100? You use OB100 for a lot of tasks that you might want or need to perform before you start your cyclic logic, for these reasons are: Initialize variables. Reset system modules. Recalibrate sensors/actuators. Check for alarms and safety conditions before starting your process. Even if you haven’t created a startup OB for your logic, the operating system still has many tasks that it needs to execute before starting your main logic, some of these tasks are: Clear non-retentive memories Clear the PIQ Call and execute startup OBs, if any. Update PII Enable outputs after changing to RUN mode. Did you notice that the last task of a startup routine is to enable the outputs? That is why the first step of executing the main cycle program OB1 is to write the PIQ into the output module. Important Notes during Start-Up Note the following points regarding the “STARTUP” mode: The outputs on the modules are disabled. The process image is initialized. The process image is not updated. In order to read the current state from inputs during “STARTUP”, you can access inputs via direct I/O access. In order to initialize outputs during STARTUP, values can be written via the process image or via direct I/O access. The values are output at the outputs during the transition to the “RUN” mode. The non-retentive bit memories, timers, and counters are initialized. The non-retentive tags in data blocks are initialized. During startup, no cycle time monitoring is running yet. Simple Program Example In this example, we will add a start-up OB100 to our PLC logic and see how many times the OB100 is executed. See picture 1 for adding a new OB100. Picture 1 – Add an OB100 As you see from the last picture, you add startup organization blocks the same way we add a function of a function block. Inside the OB100 we just created we will add a simple ADD instruction, to accumulate how many times the OB100 is called and executed. See picture 2. Picture 2 – Accumulate execution times of OB100 Now, compile and run your program and see what will happen. See the following animation for a simulation of the PLC program. Animation 1 As you can see from the above animation, the OB100CycleCounter is 1 and it doesn’t change when the PLC mode transitions from STOP to RUN. Well, it does change but you don’t see this change. Each time the PLC goes into STOP mode and then to RUN mode again. The counter will be reset to zero and then to 1 again after the OB100 is executed. You can also see the main OB1 cycle counter changing, and the PLC stops and then runs again the OB1CycleCounter will start accumulating again. To see the change in the startup counter, we need to retain the value of the tag memory. See picture 3. Picture 3 – Retain the OB100CycleCounter tag memory After we retain the OB100CycleCounter tag, now run the PLC simulation again and see what will happen. See simulation animation 2. Animation 2 You see now from the above animation, that the startup counter increases each time I stop the PLC and then start it again. As the tag memory is now retained, the value will not be reset to zero, and that is why you see the value of the OB100CycleCounter accumulates. Now, I need to add extra functionality to my startup PLC logic, which is to know when the last startup of the PLC was. We will achieve that through a simple logic where I read the local time of the PLC at startup and move the date and time to a certain memory area. See picture 4. Picture 4 – Reading local time at start-up After you add your logic, compile and run the simulation again. See the PLC simulation animation 3. Animation 3 You can see from the above animation, that each time the PLC starts the startup date and time will be recorded in the memory area we assigned. So now I have the information regarding how many times my PLC started and when was the last start-up time. Conclusion Startup OBs are very important if you want to evaluate some functionality before you can run your cyclic process. You can use start-up OBs to initialize parameters, calibrate sensors and even check for safety conditions before allowing your process to run. -
T-Junction Traffic Control System PLC Programming
leigehong posted A plc and hmi english article in PLC programming learning
This article is about a T-junction traffic control system with the help of a PLC ladder logic using a comparator for lights operation. T-Junction Traffic Control System The function of the T-junction traffic control system consists of three groups of segments. By the logic of comparator operation, we control the Traffic lights system. First segment: In the first segment, lane 1 traffic is allowed and lane 2 and lane 3 are stopped. Here in this segment, the green light (Green 1) of lane 1 glows, and red lights (Red 2) of lane 2 and (Red 3) of lane 3 glow. This period continues for fifteen seconds. Second segment: In the second segment, lane 2 traffic is allowed and lane 1 and lane 3 are stopped. Here in this segment, the green light (Green 2) of Lane 2 glows, and the red lights (Red 1) of Lane 1 and (Red 3) of Lane 3 glows. This period continues for fifteen seconds. Third segment: In the third segment, lane 3 traffic is allowed and lane 1 and lane 2 are stopped. Here in this segment, the green light (Green 3) of Lane 3 glows, and the red lights (Red 1) of Lane 1 and (Red 2) of Lane 2 glow. This period continues for fifteen seconds. After the execution of all three segments, the sequence of operations again starts and repeats continuously. Description of Inputs and Outputs In this PLC project, we used 2 Inputs, 6 Outputs, 2 Memory, and 1 On Delay Timer. S.No Symbol Description 1 I 0.0 START 2 I 0.1 STOP 3 M 0.0 MEMORY 4 M 0.1 MEMORY 1 5 Q 0.0 GREEN 1 6 Q 0.1 RED 1 7 Q 0.2 GREEN 2 8 Q 0.3 RED 2 9 Q 0.4 GREEN 3 10 Q 0.5 RED 3 11 DB1 ON DELAY TIMER PLC Programming and its Explanation 1. When the START (I 0.0) Button is pressed, MEMORY (M 0.0) is energized. This M 0.0 is the main memory used to execute all the processes in the program. Since it is latched, it will be in energized state only. If STOP ( I 0.1) is pressed whole process will get stopped at any time. 2. Once MEMORY is energized, it will switch on the TIMER DB1 which controls the timing of the Traffic Junction. In this timer, we set the Pre-set time of 45 seconds. Once the timer achieves the pre-set time which energizes the MEMORY 1 (M 0.1) and this M 0.1 also resets the timer as per the logic and runs the cycle continuously. 3. Next, the comparator plays a major role in controlling the traffic junction. Firstly, the Output GREEN 1 (Q 0.0) is turned on as per the logic. Here we used Less than or Equal to the comparator. In this logic, Q0.0 will be in the ON state from 0 seconds to 15 seconds. After that, it will be going to OFF state 4. Next for output RED 1 (Q0.1), we used Greater than or Equal to function. Q0.1 will be in the ON state from 15 seconds to 45 seconds. It will be in the OFF state when Q0.0 is in the ON state. 5. Then for output GREEN 2 (Q0.2), we used both Less than or Equal to and Greater than or Equal to for this output. Both the comparator functions were connected in series logic connection with the output. In this Q0.2 will be in the ON state from 16 seconds to 30 seconds as per the condition. 6. Next for output RED 2 (Q0.3), we also used both Less than or Equal to and Greater than or Equal to function for performing the operation. Comparators were connected in parallel connection with the output. This output will be in the ON state from 0 seconds to 15 seconds and 30 seconds to 45 seconds. In between 15 seconds, it will be in the OFF state only since at that time Q0.2 is in the ON state. 7. Then for the last GREEN 3 output (Q0.4), we used Greater than or Equal to function. As per the conditional logic, it will be in an ON state from 30 seconds to 45 seconds. Before this timing, it will be in an OFF state. 8. Finally, the RED 3 output (Q0.5). Here we used Less than or Equal to function for executing the PLC logic. It will be in the ON state from 0 seconds to 30 seconds after that it will be in the OFF state. Conclusion So, in this way, the given T-Junction Traffic control is executed by the comparator function with the PLC logic. We can control the traffic logic with the help of PLC logic in many ways & this is also one of the ways in that. -
PLC Difference Between Normal Counters and Fast Counters
leigehong posted A plc and hmi english article in PLC programming learning
PLC programming has many types of instructions and operands in it for executing logic. One of the most used instructions is a counter. A counter is used for counting numbers. Counting is required for many applications; for example, even a small logic like counting the number of bottles passed in a minute requires a counter for it. If such a small application needs a counter in it, then automation technologies have many bigger types of logic in it which use counters for use. So, these are important types of instructions used in PLC programming. There are two categories of counters available – normal counters and step counters. In this post, we will learn the difference between normal counters and fast counters. What is a Normal Counter? There is no official term called a normal counter in PLC. It is just a definition used to show the two basic types of counters – step up and step down. As the name implies, these instructions are used to count numbers when it is given an input pulse. Suppose you have a push button and you want to count how many times it has been pressed. If you understand what we are trying to convey, push means it will remain on as long as it is pushed. As soon as you remove it, it goes off. This means it is a pulse-type input, and the counter understands only such types of input. If the input remains continuously on, then it will not count. It counts only when the input goes from on to off state, and then again repeats the same sequence. Refer to the above image for understanding. CU (count up) input is used to increment the counter whenever input is received. As it is a trigger, the count increments when a pulse-type input is received. PV input is the set value. As long as the set counts are not achieved, then the output of the counter (Q) will remain off. When the set value is reached, then the output turns on. Now, even if the count input is given, the count will go on incrementing and the output will remain on. To turn it off, reset input is to be given which resets the counter and makes the current value zero. This is the general working of the counter. What is a Fast Counter? The fast counter is the same as a normal counter, but the only difference is that it counts very fast types of inputs. Suppose you have a proximity sensor, which turns on or off for example 1000 times in 30 seconds. Such fast inputs are difficult to detect in a normal counter, as it has a lower scan time. The fast counter will do this job by counting the number of pulses received at its input in a quick manner. Similar to a normal counter, its output turns on after a set value is achieved, and it requires a reset input to reset the counter and turn off the output. The fast counter can work in frequencies of 5 kHz. Because Fast Counter function blocks are managed by specific hardware interrupts, maintaining maximum frequency sampling rates may vary depending on your specific application and hardware configuration. Not all PLC inputs can be used as fast counters; it has only some dedicated PLC inputs for assigning a fast count function. As you can see, the only difference between both these counters is the speed of functioning, as a normal counter cannot accept any fast type of input. -
MITSUBISHI Automatic Door Operation PLC Programming and Simulation
leigehong posted A plc and hmi english article in PLC programming learning
In this PLC program, automatic door operation is designed using PLC programming to open or close the door when detecting the object. Here the object is nothing but a car. Automatic Door Operation The below simulation shows the automatic door system operation. Inputs and Outputs Type Device No. Device name Operation Input X0 Lower limit ON when door reaches lower limit. Input X1 Upper limit ON when door reaches upper limit. Input X2 In gate sensor ON when object approaches the door. Input X3 Out sensor ON when object leaves the door. Input YO Door up Moves up when YO is ON. Output Y1 Door down Moves down when Y1 is ON. Output Y6 Light Lit when Y6 is ON. Output Y7 Buzzer Sounds when Y7 is ON (Lamp on screen is lit). Program Description As the car approaches the entrance, the door moves up. An In-gate sensor X2 is used to detect the car’s presence at the entrance. The moment the car drives through, the door moves down. An Out-gate sensor X3 is used to detect the car’s presence after crossing the door. The upward movement of the door halts when the upper limit switch (X1) gets activated. Similarly, the door’s downward motion stops when the lower limit switch (X0) gets engaged. The door remains up as long as the car is detected within the range of the entrance (In gate sensor X2) and exit (Out sensor X3). A buzzer (Y7) buzzes as a signal for the door’s movement. While the car is within the detection range, between the In gate sensor (X2) and the Out sensor (X3), a light (Y6) remains illuminated. The status of the door’s movement is indicated by the lighting or extinguishing of four indicator lamps on the control panel. Manual control of the door is possible. Buttons on the control panel can be pressed to either open (⬆Door up) or close (⬇Door down) the door. PLC Programming -
MITSUBISHI PLC Program for Stage Control: Curtains and Stage Elevation
leigehong posted A plc and hmi english article in PLC programming learning
The PLC program for stage control provides the opening and closing of curtains, as well as the raising and lowering of the stage. It provides two modes of operation: automatic and manual. PLC Program for Stage Control The below simulation shows the usage of PLC for stage-controlling applications. This is a utility project where we have to open and close the stage curtains automatically and also manually using push buttons. The sensors are used to detect the right and left curtains’ positions at different points. After opening the curtains, the stage will be moved up and elevated to the top position. Similarly, when the curtains are closed, the center stage will be moved down. The stage position will also be tracked using lower and upper limit sensors. PLC Devices List The below table lists the all inputs and outputs in this PLC program. Type Device No. Device name Operation Input X0 Inside (Left curtain) ON when the curtain is halfway. Input X1 ON when the curtain closes completely. ON when the curtain opens completely. Input X2 Outside (Left curtain) ON when the curtain closes completely. Input X3 Inside (Right curtain) ON when the curtain is on its half-way. Input X4 Middle (Right curtain) ON when the curtain opens completely. Input X5 Outside (Right curtain) ON when the stage reaches a lower limit. Input X6 Stage upper limit The stage moves up when Y2 is ON. The stage stops when Y2 is OFF. Input X7 Stage lower limit ON when the stage reaches the upper limit. Output Y0 Curtain open command Curtains open when Y0 is ON. Curtains stop when Y0 is OFF. Output Y1 Curtain close command Curtains close when Y1 is ON. Curtains stop when Y1 is OFF. Output Y2 Stage up The stage moves up when Y2 is ON. The stage stops when Y2 is OFF. Output Y3 Stage down The stage moves down when Y3 is ON. The stage stops when Y3 is OFF. Output Y5 Buzzer Sounds when Y5 is ON (Lamp on screen is lit). Program Description PLC program to Control stage settings including opening/closing curtains and raising/lowering the stage. The purpose of this PLC program is to facilitate control over a range of stage settings, encompassing tasks such as opening and closing curtains, as well as raising and lowering the stage itself. To accommodate different preferences and requirements, the program offers two distinct modes of operation: automatic and manual. Automatic Operation When the “Begin” pushbutton (X16) on the operation panel is pressed, a buzzer (Y5) emits a sound for a duration of 5 seconds. Note: The “Begin” pushbutton (X16) can only be activated when the curtains are closed and the stage is positioned at its lower limit. After the buzzer stops, the command to open the curtains (Y0) is activated. The curtains will continue opening until they reach their outer limits, as defined by input signals X2 and X5. Once the curtains are fully opened, the stage begins to elevate when the “Stage up” command (Y2) is activated. The stage will continue moving upward until it reaches its upper limit, as indicated by input signal X6. Pressing the “End” pushbutton (X17) on the operation panel initiates the closing of the curtains. The command to close the curtains (Y1) is activated, and the curtains will close until they reach their inner limits, defined by input signals X0 and X3. Manual Operation The following operations are only available when the automatic operation described above is not active. The curtains can be opened by pressing the “Curtain open” pushbutton (X10) on the operation panel. The curtains will stop once they reach their outer limits (X2 and X5). The curtains can be closed by pressing the “Curtain close” pushbutton (X11) on the operation panel. The curtains will continue closing until they reach their inner limits (X0 and X3). The stage can be raised by pressing the “⬆Stage up” pushbutton (X12) on the operation panel. The stage will stop once it reaches its upper limit (X6). The stage can be lowered by pressing the “⬇Stage down” pushbutton (X13) on the operation panel. The stage will stop once it reaches its lower limit (X7). The indicator lamps on the operation panel will illuminate or turn off accordingly, providing visual feedback on the status of the curtains and stage operations. PLC Programming -
Hardwired I/O and Serial I/O – Differences Explained
leigehong posted A plc and hmi english article in PLC programming learning
In the Programmable Logic Controllers (PLCs) and Distributed Control Systems (DCS), the selection between Hardwired I/O and Serial I/O becomes especially critical due to the real-time nature of these systems and the associated complexities of industrial processes. Below, I break down the characteristics of each in these specific systems. Hardwired I/O The main points we have to discuss about the Hardwired I/Os are listed below. Direct Connection Real-time Response Wiring Complexity Limited Flexibility Reliability Signal Integrity Suitability Safety-Critical Applications 1. Direct Connection Hardwired I/Os are directly connected to the PLC or DCS. Each input or output device has a dedicated line running back to the controller. 2. Real-time Response These I/Os are generally designed for real-time control tasks. They are especially used in time-sensitive applications like process control, interlocks, and emergency shutdowns, where immediate action is required. 3. Wiring Complexity For large systems with numerous I/O points, hardwired solutions can become cumbersome, requiring extensive cabling and larger control cabinets. 4. Limited Flexibility Modifying or expanding a hardwired system can be labor-intensive due to the need for physical rewiring. 5. Reliability Hardwired I/Os are often deemed more reliable for critical tasks due to their straightforward, point-to-point nature, reducing the risk of communication failures. 6. Signal Integrity The signal integrity is usually better with hardwired connections, especially in environments with a lot of electromagnetic interference (EMI) when compared to serial communication. 7. Suitability Best suited for smaller systems or in scenarios where reliability and speed are of the utmost importance. 8. Safety Hardwired I/Os are mostly used in safety-critical applications like industrial process control applications where the control loops are critical. Serial I/O The main points we have to discuss about the Serial I/Os are listed below. Data Serialization Protocol-based Communication Scalability Networking Capability Data Handling Distance Vulnerability Cost Safety 1. Data Serialization Serial I/Os transmit data one bit at a time, usually over a single data line. This is in contrast to parallel systems that send multiple bits simultaneously. We have individual wires for each signal in hardwired I/Os but the serial I/Os generally have a single cable for transmitting/receiving all the data. 2. Protocol-based Communication They usually rely on established industrial protocols like Modbus, PROFIBUS, or Ethernet/IP for communication, which standardize the data exchange between devices. 3. Scalability Serial I/Os are generally more scalable. Adding more I/O points often merely requires configuring the existing network, with no need for additional cabling back to the controller. 4. Networking Capability Serial I/Os can easily be networked and often feature built-in diagnostics, making them more versatile but also adding complexity. 5. Data Handling Serial I/Os are more versatile when it comes to data handling. They can transmit more complex data types, including real numbers and strings, over the network. 6. Distance They are better suited for applications where I/O points are located far from the PLC or DCS controller. We may be in need of some special devices like repeaters, gateways, etc for some cases. 7. Vulnerability Because they are protocol based, serial I/Os can be more vulnerable to issues like data collisions, latency, and other network-related issues. 8. Cost While initial setup costs may be higher due to networking hardware, the long-term cost can be lower, particularly for systems requiring frequent modifications or scaling. 9. Safety Serial I/Os are never used in safety-critical applications as the main cable damage may lead to complete data failure. Choosing Between Hardwired and Serial I/Os The choice between the two often hinges on various factors such as system size, required speed of operation, safety, data complexity, and cost considerations. Engineers usually make a detailed analysis, sometimes even using both types in different sections of a single PLC or DCS system to leverage the advantages of each. For instance, hardwired I/Os may be used for safety-critical applications, while serial I/Os may be used for data collection and monitoring tasks. Comparison between Hardwired I/Os and Serial I/Os The below table shows the differences between Hardwired I/Os and Serial I/Os. Parameter Hardwired I/Os Serial I/Os Connection Type Direct, point-to-point connection Protocol-based, usually networked Data Transfer Speed Generally faster, real-time processing Can be slower due to serialization (depending on the protocol) Complexity Can be slower due to serialization (depending on protocol) More manageable complexity Scalability Difficult and expensive to scale Easier and less costly to scale Reliability Higher due to fewer points of failure Can have more points of failure Wiring Extensive cabling required Less cabling, often just a single data line Signal Integrity Better in environments with high EMI Can be susceptible to EMI Data Types Supported Generally 4-20 mA analog signals, 24 V DC for digital signals. This may be higher due to networking hardware Distance Suitable for shorter distances Can handle longer distances Cost (Initial) Lower for small systems and Higher for larger systems High (Depends on the Protocol) Cost (Maintenance) Higher due to complexity of troubleshooting Generally lower Flexibility Limited; hard to modify Highly flexible; easy to modify Redundancy Difficult and expensive to implement Easier and less costly to implement Safety Applications Often used for safety-critical tasks Less commonly used for safety-critical tasks Network Diagnostics Limited or none Often built-in When it comes to safety in PLCs and DCS systems, Hardwired I/Os and Serial I/Os have different characteristics that can either enhance or potentially compromise the safety of an industrial process. Below is a comparison table focused solely on the safety aspect of these two types of I/O systems. Safety Aspect Hardwired I/Os Serial I/Os Reliability Generally higher reliability due to direct connections and fewer points of failure. Protocol and network-based, introducing more points of potential failure. Real-Time Responsiveness Excellent for real-time response, often used in emergency shutdowns and safety interlocks. Can experience latency due to network congestion or protocol limitations, making them less ideal for immediate action. System Complexity Lower complexity generally makes it easier to identify and address safety issues. Complexity of networking and protocols can make it challenging to identify the root cause of safety concerns. Signal Integrity Less susceptible to electromagnetic interference (EMI), enhancing signal quality and reliability. Potentially more susceptible to EMI and signal degradation, which could compromise safety. Data Integrity Because it is generally point-to-point, data corruption is less likely. More prone to data integrity issues due to networking, increasing the risk of safety-related failures. Human Error Less prone to configuration errors affecting safety, due to its simplicity. Greater chance for human errors during configuration or maintenance, affecting system safety. Emergency Situations Often the preferred choice for safety-critical systems like emergency shutdowns due to quick response time. Typically not used for immediate action tasks due to possible latency and other network-related issues. Security Lower susceptibility to cyber-attacks, as they’re not generally networked. More vulnerable to cyber threats that can compromise safety, due to networking. Built-In Safety Features Safety features are often hardwired and uncomplicated, making them robust. May have built-in safety protocols, but these can be compromised by network issues. Certifications Easier to certify for safety-critical applications due to lower complexity and higher reliability. May require more extensive testing and certification due to networking and protocol complexities. The choice between Hardwired and Serial I/Os from a safety perspective often leans toward Hardwired I/Os for critical safety applications, due to their inherent reliability and immediate response capabilities. However, the overall safety of a system is not determined solely by the type of I/O used; it’s also influenced by factors like design, maintenance practices, and the competency of the operational staff. -
EMERSON Getting to Know the LED Indications on GE Make PLC
leigehong posted A plc and hmi english article in PLC programming learning
We all know how PLC is important in today’s automation era, so many popular PLC brands are there i.e. Siemens, Yokogawa, AB, ABB, GE, etc. On these PLC controllers, so many LED indications are provided to understand different states of the controller, but to know the status first we need to understand the meaning of those indications. LED Indications on GE Make PLC In this article we are going to understand LED indications of one of GE PLCs, specifically for the CPL series, also we will understand the functioning of various ports available on the controller. In this article, we are going to explain about LED indications of the CPL-410 model of GE make PLC. About CPL 410 Model This PAC (Programmable Automation Controller) system which is called RX3iCPL410 is facilitated with an inbuilt Linux server, it supports programming languages like Ladder logic, Structured text, Functional block diagram, and C. Contains 64Mb of configurable data and program memory, 32K bits for discrete input & output, and 32K words for analog input & output. Bulk memory also supported for data exchange It supports up to 768 program blocks, one block having 128KB in size, also it supports 4 Nos of independent ethernet LAN (10\100\1000). Up to 32 Nos Modbus TCP IP clients are permitted, 48 Nos of SRTP (Service Request Transport Protocol) can run simultaneously, and 16 simultaneous Modbus TCP IP server connections. This PLC can handle operating temperatures up to -40 to 70 Degrees C, it is a DIN rail mount device, supports an 18-30 VDC supply, and does not require a special power supply. It has been facilitated with five ethernet ports in front and one RJ45 connection on the bottom side, An OLED display is available to navigate and monitor various statuses of the CPU, also many switches with LED indications are available to monitor the status and go through the settings. We can program and configure the CPU using Proficy Machine Edition software, this system can easily create and redundant system with a 100ms cutover time to the secondary PLC. Okay, so now we are going to discuss the LED indications for this particular GE PLC model CPL-410. In the below image we can see a lot of indications and communication ports, in Fig 1 PLC is without any connections and Fig 2 is with running communication channels. Fig 1 (Left) and Fig 2 (Right) So, Let’s Start from the top-right corner. µSD: This slot is to insert a Micro-SD card; the Micro SD Card is used for external storage or load programs; it has a protective cover to prevent damage. DISP: You can access to Display menu navigation on OLED Display and make changes as per requirement, using this button you can access LAN Settings, Control status, I/O Status, Device information, Linux OS settings, Redundancy information, and Redundancy commands, we can check configured IP of each LAN connection. SEL: You can guide to selection with this indication cum button for any setting modification where you can navigate your options as per your requirement. RUN: Being used to run commands to PLC, it activates the OLED menu to select RUN enabled or RUN disabled mode from the PLC, in Run condition green indication will blow just below to run button. STOP: It is being used to send a Stop command to PLC, you can select Stop Enabled or Stop Disabled by using this button for PLC. PHY PRES: TPM (Trusted Platform Module) Physical Presence indication cum selection, this will blow the green light in healthy condition. SSD: Solid State Disk Activity, Green indication in healthy condition. This is for checking the healthiness of Solid State Disk or drive where data is being stored. TEMP: This indicates that the controller met with overtemperature, it will indicate an amber LED indication when the temperature goes beyond the limit. OK: This signal indicates that the CPU is OK and in Healthy condition. OE: Output enabled, green indication when it is OK. FRC: When we apply force to any module or equipment, a yellow indication will glow which shows that the Force signal is enabled. FLT: This indication will glow with a red light when a System Fault is present, A system fault happens in case of an issue with any module. IO: This LED indicates the healthiness of IO network status; green indication will glow in healthy condition. RACT: A redundant system is a must to avoid process failure in case of any issue with the primary controlling system, also close monitoring is required on the redundant system to ensure availability all the time, RACT LED indication will indicate that Redundancy active or Active redundant unit, indication will be green when redundant devices are active, this LED will be getting activated once Hot Stand by Redundant CPU is ready. RBOK: This indicates that the Redundant Backup Unit is OK, the indication will be green. GPOK: After Linux booted successfully and restarted the CPU, This LED indication will blink green and indicate that the General purpose is OK, i.e., an Operating system in healthy condition or ready for user logins or we can say that Linux is running. PWR: Power is ON, also we can reset the controller with this button, we have to hold the PWR button to reset the PLC, in healthy condition it will glow green. Communication Ports in PLC Let’s have some understanding about communication ports: USB1: This port is assigned to Linux and it can be used to have access to keyboards, Memory sticks, Pen drives, and other memory devices with properly installed drivers. USB2: This port is assigned to the controller runtime PACS (Programmable Automation Controller) LAN: LAN ports are being used to configure plant communication packages and Hot Standby redundancy where two LAN3 group ports are being used to fulfill this purpose. they provide a high-speed data synchronization link between the two CPUs. Connect the upper LAN3 port of the Primary CPU to the upper LAN3 port of the Secondary CPU and connect the lower LAN3 port of the Primary to the lower LAN3 port of the Secondary. Front panel LAN: -LAN-1: This port is un-switchable and connects to the uppermost RJ45 connector. -LAN-2: Connects in middle two RJ45 connectors and it can switch internally. -LAN-3: Will connect in lower two RJ45 connectors, these ports are also able to switch internally, this port is being used to provide hot standby redundancy to the system. Underside LAN: -RJ45: This port supports Serial IO protocol, also this port is assigned to the Linux system itself. LAN Port’s speed and healthiness of link is very crucial for proper communication, let’s have a look at the upper and lower indications of LAN port and the meaning of that indication. LAN Ports-Status (upper indication): Green indication: The corresponding link has been established, Blinking green: Traffic detected, Off, No connection. LAN Ports-Speed (lower indication): Green On: Data speed is 1 Gbps or 100 Mbps, Off: Network data speed is 10 Mbps See the below figure to understand indications for LAN ports. Fig 3 Other Ports Available on the Bottom Side of PLC RJ45: This is a serial COM port, where we can connect a communication channel with an RJ45 connector, we can use this port for direct ethernet connection, or we can communicate Modbus or serial communication channel using a TCP IP converter (Serial to Ethernet). Kindly note that the RJ connector comes with 8 pins and connect with wires which are combined in twisted pair, this twisted pair help to decrease cross talk and cancel electromagnetic interference. Below ports are available on the bottom side of PLC (Fig.4) Fig 4 Display Port: It’s a Video Display Port, we can use this port to transmit video and audio simultaneously, or separately. DP can transmit signal in rage to 144Hz to 4k. EFA: This is an IICS (Informatica Intelligent Cloud Services) Cloud port, this is could cloud-based service for integration and data management, using this platform you can configure connections, create users, run, schedule, and monitor activities or tasks. EPCSS: Energy Pack Control & Status Signal, it’s a terminal block with 5 Nos of wiring terminals. Although EPCSS is optional to use when it is used, it allows the PLC Controller to save its current state upon loss of power. 24DC IN: Three-wire terminal block for 24V DC power supply to PLC. Let’s have a look at the summary of all LED indications in Fig. 5 Fig 5 So, this was a basic understanding of LED indications and various ports of GE make PLC. -
Control Speed of Induction Motor using Analog Output of PLC
leigehong posted A plc and hmi english article in PLC programming learning
The possibility of controlling the Induction motor’s speed exists only with the Variable frequency drives. Basically, there are three different modes through which we can control the speed of an induction motor. Using a digital signal Using an analog signal of 0 to 10V / 0 to 5 V/ 4 to 20mA / 0 to 20mA, etc. Using the Modbus communication whether on RTU mode or TCP/IP mode Speed of Induction Motor In this post, we will use an analog input signal with a range of 0 to 20 mA to control the motor’s speed. This article shows how to control the speed of the motor using PLC’s analog output. See the below schematic to get an overview. To change the motor’s speed, a 0 to 20 mA analog output signal from the PLC is sent into the analog input terminal of the VFD. The speed varies from 0 to 50 Hz as the milliamperes rise from 0 to 20. In this topic, we use six unique Analog Output points of the S7 200 smart PLC to control the speed of six motors. (each motor has individual VFD as per the motor rating). The PLC used here is Siemens CPU ST60 of S7 200 Smart series having two analog output modules EM AQ04 coupled with it, while the VFD model is ATV310 series of Schneider Electric. Siemens HMI is communicated with CPU ST60 to vary the speed of the motors from its screen. Prior to the PLC logic, see the hardware configuration and connection details below: The above analog output modules are added to CPU ST60. Each analog input point of the VFDs will receive a 0 to 20 mA signal from various PLC analog output points. Now, look at the parameter details of the ATV310 VFD drive. 401: 01 (Reference Channel 1) 204.0: 0A (AI1 type) 204.1: 4mA (AI1 current scaling parameter of 0%) 204.2: 20mA (AI1 current scaling parameter of 100%) Apart from these, motor parameters need to be set in group no “300” according to the Motor rating. The analog output module is also called the DA module or digital to analog module. According to this statement, a digital value is translated to milliamperes or voltage in accordance with the configuration setup. Different PLCs have various digital values that can be converted into an analog voltage or milliampere signal. The Siemens S7 200 series uses 0 for 0 milliamps and 27648 for 20 milliamps. In accordance with parameter number “204.1,” we must determine the digital value at which the output point emits around 4mA. By using the hit-and-miss method, we identified the value as “5559,” at which we received 4 milliamperes approximately. According to the discussion above, the frequency would be anywhere between 0 and 50Hz, and the milliamperes in the PLC are represented as digital values. When a particular frequency is fed from HMI, some scaling is required to get the actual frequency. So, we can call these digital values as “unscaled” values. Now to change these unscaled values to scaled ones, there is a formula below: OSH = 27648.0 (Unscaled digital value to output 20 mA analog signal) OSL = 5559.0 (Unscaled digital value to output 4 mA analog signal) ISL = 0 (Lower limit of the frequency output in Hz) ISH = 50 (Upper limit of the frequency output in Hz) “Input” is the variable for setting the motor’s speed from HMI. “Output” is the scaled digital value Now, putting these values in the formula and evaluating further: Output = [(27648.0 – 5559.0) *(Input – 0)/ (50 – 0)] + 5559.0 Output = [22089.0*Input /50] + 5559.0 Output = [441.78*Input] + 5559.0 Before evaluating the equation in the ladder logic, go through the Analog output configuration settings in the PLC software below: In Step 7 MicroWin Smart software, Click on the highlighted System Block settings option available in the “project tree” bar. In the system block settings, configure all the channels of the first AQ04 card and the 3rd & 4th channels of the second AQ04 card with the current type as highlighted. PLC Programming for Induction Motor Speed Control using Analog Output Network 1: VD200 stores the input value or variable value that is set from HMI in the form of frequency or Hz. It is then multiplied with 441.78 and stored in VD204. The value in VD204 is then added with 5559 and stored in VD208. The value in VD208 is an evaluated scaled output value in real format. The fractional part of the value in VD208 is discarded and the whole number portion is stored in VD276 in the double integer format using the “TRUNC” instruction. After that, MW4 stores this double integer value in integer format. The address for the first channel of the AQ04 module, AQW16, is where this value is now transferred. Ex: If VD200 = 41.5 Hz fed from HMI then VD208 = [441.78*41.5] + 5559.0 = 23892.87. Thus, to attain 41.5 Hz, 23892 is to be stored in MW4 in the form of integer. As per the network comment, the first channel is used to vary the speed of the motor (Loader) in one of the applications. Similarly, networks 2 to 6 are build to vary the speed of other motors and fans from their respective channels of EQ04 modules using VD212, VD224, VD236, VD248, and VD260 as their variable speed set points. According to the wiring connections, the second EQ04 module uses the third and fourth channels; as a result, the addresses used are AQW36 and AQW38. To learn more, see System block configuration. -
SIEMENS GET Command – Siemens PLC-to-PLC Communication Project
leigehong posted A plc and hmi english article in PLC programming learning
In a previous article, we talked about the PUT command and how we use it to communicate between two PLCs wither they are in the same project or in two different projects. In this article, we are going to talk about the GET command used for the Siemens PLC-to-PLC communication project for data exchange. What is the GET command? Just like the put command a GET command is a TIA Portal built-in function block FB that is used exclusively for S7-Family CPUs to get data from a remote partner PLC to a local PLC. Opposite to the PUT command, instead of putting data from PLC_1 into PLC_2 the GET command will get data from the PLC_2 into PLC_1. When using GET command, I would have two PLCs, where I need to get data from one PLC called partner to another PLC called local. The Local PLC is where the GET command will be programmed. In addition to a Profinet connection between the two PLCs. Some configurations must be done to the partner PLC, to enable it to be accessed by the other PLC. We will create a sample project to show how to use the GET command. Siemens PLC-to-PLC Communication Project We will assume a sample project where we have two PLCs in the same project, PLC_1 which will act as the local PLC and PLC_2 which is the partner PLC. To create a situation where we need to use the GET command, we will assume that we want to read/get an integer from the partner PLC_2 to the local PLC_1. First, let’s create a new project and add the two PLCs. See picture 1. picture 1. Create a new project and add two PLCs. Now, we need to configure the partner PLC_2 to enable the GET access from PLC_1. We also need to prepare the data that will be moved from PLC_2 into PLC_1. First, we need to allow the access of the GET command to the PLC_2 that will give the data. See picture 2. picture 2. Allow GET command access. As you see from the picture, we allow the GET command to access the PLC_2 from the Properties of the PLC_2, in the Protection and security option, click on the “Permit access with PUT/GET communication from remote partner” Now, I am allowed to read/get data from the partner PLC_2 using the GET command. NEXT, we want to create the data that will be moved to the PLC_1, we assumed that PLC_1 wants to get an integer from PLC_2. We will define an integer tag named “ SendDataToPLC_1” this integer tag will be read from PLC_2 into PLC_1. See picture 3. picture 3. Define data to be moved to PLC_1 And that is it; this is the entire configuration you need to prepare from the PLC_2 side to be able to receive data through the GET command. NOW, we go to PLC_1, in PLC_1 we want to create logic where we use the GET command to read data from the PLC_2. As we did in the last article, we will just drag and drop the GET command into our Main OB1. See picture 4. picture 4. Drag and drop the GET command Note that, the GET command is found in the S7 communication folder, as it is an exclusive function for S7 family PLC, because it involves safety issues. Remember in picture 2 when we allowed the use of GET command it was in the Security and Protection attribute of the PLC properties as it is related to PLC safety and protection. When you drag and drop the GET command into your, you will asked to create a data block instance as the GET command is essentially a function block FB. See picture 5. picture 5. Create a data instance for the GET command. Now, that we added the GET command to our logic, we need to start configuring the GET block as we did before with the put command. To open the configuration views of the GET command press the small blue icon on top of the block. See picture 6. picture 6. Open configuration view. We have two main parameters to configure, the connection parameter and the block parameter. See picture 7. picture 7. GET block configuration. As you can see from the picture, the Local PLC is the PLC where the GET command is called. Whereas the Partner PLC is the one that will give the data, it is also the same one which we allowed the GET access for. In our project the partner PLC is PLC_2. You can see also from the picture that the partner is empty and we have to select the PLC. See picture 8. picture 8. Different option in the partner list As you can see, we have two different options to select from for the Partner PLC. Unspecified is when the PLCs are of different TIA Portal project and if the PLCs are of the same TIA Portal project, then you will find the other PLC in the list. When you choose the PLC_2 option as our PLCs are in the same project, the connection configuration will be automatically filled in. See picture 9. picture 9. PLC_2 as partner Because both PLCs are in the same project, when I choose the PLC_2 option, all connection parameters will be automatically filled in. On the other hand, if the partner PLC is from a different project, then I will choose Unspecified option, and in that case I will have to fill in some data such as the Partner PLC IP address. See picture 10. picture 10. Partner PLC as unspecified. As you can see, when the partner is Unspecified, then you will need to manually add some information such as the partner PLC IP address. You can also see that we need to add a subnet to the local PLC_1. To do that, you just go to the Profinet properties of the PLC_1 and select to add a new subnet. See picture 11. Picture 11. Add subnet for PLC_1 After adding a new Subnet to PLC_1, the connection parameter configuration will be complete. See picture 12. picture 12. Connection parameter is complete. The next configuration we need to take care of is the block parameter. In the block parameter we define the data that will be moved between the two PLCs and also the trigger signal that will allow the start of execution of the GET block. See picture 13. picture 13. Block parameter. As you can see, we need to define the trigger signal for the GET block and we also need to define what data will be moved from PLC_2 (Read area ADDR_1) and where will this data go (Store area RD_1). We already define the ADDR_1 before which is the SendDataToPLC_1 integer tag we defined inside PLC_2. NOW, we will define the store area for that integer tag and the trigger signal. See picture 14. picture 14. Define trigger signal and store area After we defined the trigger signal, ADDR_1 and the RD_1, we will fill in these parameter to the block configuration. See picture 15. Picture 15. Fill in the block parameter Now, the configuration of the GET block is finished and you can see that the Block is now ready to be downloaded and run. See picture 16. picture 16. GET block The GET block is now configured and once the trigger signal is active the block will read the ADDR_1 from PLC_2 and write it into RD_1 in PLC_1. -
SIEMENS Communicating Between Siemens PLC and Other PLC Brands
leigehong posted A plc and hmi english article in PLC programming learning
In previous articles we started to discuss the different ways of communicating between two or more PLCs, so far we talked about the I-device feature as well as the PUT and GET commands which were methods exclusively for Siemens PLCs. Communicating Between Siemens PLC and Other PLC In this article we will discuss another way of connecting two PLCs together, this way has more advantages than the PUT and GET commands we discussed before, because opposite to the PUT/GET commands that were exclusive to the S7 family. This new method is an open user communication meaning we can use it to communicate between an SIEMENS PLC and any other brand of PLC, it doesn’t even need to be two PLCs, this method can communicate between PLC and any other device that can understand TCP network protocol such as PCs, servers, printers, etc. In this article, we will show how to setup a communication between two PLCs using the TCON and TDISCON blocks and in the next article, we will show how to move data between the PLCs after setting up the connection. Open user communication blocks TCON and TDISCON We use the TCON block to set up and establish a communication connection between two PLCs. Once the connection has been set up and established, it is automatically maintained by the PLC. Both communication partners call the TCON instruction to set up and establish the communication connection. That means I have to call the TCON block in both PLCs and we have to configure the block in both PLCs as we will see in the sample project. During block configuration, we will specify which partner is the active communication end point and which is the passive one. That means which PLC will try to connect and which one will open a communication port and be waiting for the other one. An existing connection is terminated and the connection set up is removed when the TDISCON block is executed or when the CPU changes to STOP mode. To set up and establish the connection again, you will need to execute TCON again. Sample PLC Project using TCON As we explained before in previous articles, to setup a communication between two PLCs we have to establish two things: Communication between the PLCs. Data transfer between the two PLCs. In this article, we will set up an open user communication with TCP protocol between two PLCs using the TCON block. In the next article, we will show how to move data after the connection is done. First, let’s create a new project and add our two PLCs. We will add the CPU1516-3PN/DP PLC and we will name them PLC_1 and PLC_2, and the objective is to set up a connection between them. See picture 1. picture 1. Add PLC_1 and PLC_2. Now, we will simply just add the TCON block into our PLC logic, as we mentioned before we need to call the TCON for both PLCs, let’s start with PLC_1. Simply drag and drop the TCON block which you will find in the open user communication folder. See picture 2. picture 2. Drag and drop the TCON instruction The TCON block is essentially a function block, so when adding it to my main OB1, we will be asked to create a data block instance to that block. Create the data instance and give it a proper name. See picture 3. picture 3. Create data instance. Now, the TCON block is added to your logic, we need to configure the connection parameter for the block. Just press on the small blue configuration icon above the block. See picture 4. picture 4. Open configuration view When you press the blue icon you will open the configuration view for the TCON block where we can set up the connection parameter. You will find it pretty much just like the connection parameter of the PUT and GET commands. See picture 5. picture 5. Connection parameter of TCON. The Partner PLC options in the TCON block have more options than that of the PUT/GET commands as we are using open user communication. See picture 6. picture 6. Partner PLC options As you can see from the picture, we have 4 different options, and they are: PLC_2: in case both PLCs are in the same project, the PLC_2 will be shown here Broadcast: this will make the connection available to any device on the network Multicast: this will make the connection with selected devices, more than one device but not all of them Unspecified: if the PLC is in another TIA Portal project. When choosing the unspecified option, we will be asked to add the IP address of the PLC and also we need to add new connection data. See picture 7. picture 7. Add new connection data As you can see in the picture, to create a new connection data, just click the drop-down arrow and press new. This will create a new connection data block and it will automatically be assigned to the TCON block, see picture 8. picture 8. Connection data block is created. As you can see a connection data block was created, now I need to add the IP address of the Partner PLC. Another thing we need to do is to choose which PLC will be the active connection establishment. This will decide which PLC will be responsible for establishing the connection while the other one in that case will be only responsible for opening a connection port. See picture 9. picture 9. Assign PLC_1 as active connection establishment. As we choose the PLC_1 to be the active connection establishment, then PLC_2 will be responsible for opening a connection port, and I have to choose a value for that port. It can be any value, but it is automatically assigned in TIA Portal as 2000 so we will keep as it is. See picture 10. Picture 10. Partner port. You can see in the previous picture that the connection parameter has turned green, indicating that all configurations are done and accepted. When using TCON to establish a connection between two PLCs, both PLCs must call the TCON instruction to establish the connection, so we need now to do the same with the other PLC_2. Add the TCON block into the main OB1 of PLC_2, see picture 11. picture 11. Call TCON in PLC_2. After adding the TCON block, we need to configure the connection parameter as we did with PLC_1. See picture 12. Picture 12. Connection parameter of PLC_2 You can see from the picture that we still choose the PLC_1 as the active connection establishment, and we still kept the port of the PLC_2 to be 2000. The active connection establishment and the port must be the same for both PLCs configuration or the connection will fail. Now, the connection configuration for both PLCs is done, see picture 13. picture 13. TCON block in both PLCs. As we see from the picture, we need one more thing, which is to define the REQ for both PLCs. We created AllowConnection for PLC_2 and StartConnection for PLC_1. See picture 14. picture 14. Define the REQ signals. The connection between two PLCs is now done, and it goes as follows: PLC_1 will try to establish a connection with PLC_2 when the REQ signal is active, but it can’t do that until PLC_2 enable the connection capability and that will be done when the TCON block of PLC_1 receive a signal at REQ. A REQ signal is active for TCON of PLC_2 to enable the connection ( this means PLC_2 will open Port 2000 waiting for connection) A REQ signal active for TCON of PLC_1 to start connection (this will allow PLC_1 to establish a connection with PLC_2 through port 2000) PROJECT SIMULATION Let’s compile our project and start a simulation to see how the connection will be established. To see the connection of any PLC and also between the PLCs, can open the network view and open the connections tab to see all active and established connections. See picture 15. picture 15. PLC_2 is waiting for connection. When the REQ is True, PLC_2 will be open for connection, you can see the STATUS value is 7002 _ if you check the help of the TCON block the status 7002 means waiting for connection_. You can also see in the picture from the network view that PLC_2 is waiting for a connection. When the REQ of PLC_1 TCON block is true, PLC_1 will try to establish a connection with PLC_2, and because PLC_2 is already open and waiting for connection, the PLC_1 will be able to find and establish a connection with PLC_2. See picture 16. Picture 16. PLC_1 establishing a connection. Notice, that all connection in the network view are now green, indicating healthy and ongoing connection between PLC_1 and PLC_2. As we mentioned before once the connection has been set up and established, it is automatically maintained. So, even when the REQ signals turn false the connection between the two PLC will remain. See picture 17. Picture 17. Connection still ongoing. But, if turning the REQ signals doesn’t disconnect the connection, how can I disconnect if I want to? Disconnection block TDISCON To disconnect the connection between the two PLCs, we can put the PLC into STOP mode which is not practical during running the process. And we also can use the disconnection block or TDISCON. To add a TDISCON block, just drag and drop it into your logic, see picture 18. picture 18. Add TDISCON block as you can see adding TDISCON block will need a data block instance, once the block is added into your logic, all you need to do is to assign the Connection ID that you need to disconnect and also you need to assign an REQ signal to will start the connection termination. See picture 19. picture 19. TDISCON block. NOW, let’s add a TDISCON block in the other PLC, so we would have the ability of disconnecting the connection. See picture 20. For TDISCON block of PLC_1. Picture 20. TDISCON in PLC_1 Let’s go back to the simulation and see how to use TDISCON blocks, see picture 21. picture 21. Connection still active. As you can see from the picture, the connection between the PLCs are still active with the REQ signals of the TDISCON still false. If the REQ of PLC_1 turn TRUE, the connection will be terminated, but you will notice that PLC_2 still waiting for connection, see picture 22. picture 22. REQ of PLC_1 is true. When the REQ for PLC_2 TDISCON block is true, PLC_2 will no longer be waiting for connection. See picture 23. picture 23. Connection is terminated. We showed in this article how to establish a connection between two PLCs using the TCON and TDISCON blocks. -
SIEMENS Moving data between PLCs using Siemens TSEND TRCV
leigehong posted A plc and hmi english article in PLC programming learning
In the previous article, we talked about how to set up a connection between two PLCs using open user communication, and we used the TCP protocol to connect between two PLCs. We showed in the article how to use instructions like TCON and TDISCON to establish this connection. Moving Data between PLCs In this article, we will show how we can start moving DATA between the PLCs we connected last article. We will use the TSEND and TRCV blocks for this purpose. Send Data to PLC_2 We will build on the project we created in the last article, which means there are already the TCON and TDISCON blocks installed into our project. and we will continue our project by adding the TSEND and TRCV blocks to start moving data between the two PLCs. To send data from PLC_1 into PLC_2 let’s start by creating a data block that will hold all information we need to send to PLC_2. See picture 1. picture 1. Create a new data block. As we discussed before, it is a better practice to give a proper naming to your blocks, that way it will be easy and intuitive to figure out what is each block are meant for. Second, let’s add some data inside the Data block which we want to send to PLC_2. We assumed that we need to send three different data tags. See picture 2. picture 2. Define some data to send to PLC_2. There is one more thing we need to do to be able to send the data block we just created to PLC_2 and that is to make sure the optimized block access of the Data block is not selected. To do that we need to go to properties of the data block and unselect that option. See pictures 3 and 4. picture 3. Go to properties of data block. picture 4. Uncheck the Optimized block access option. Make sure to uncheck this option before using the TSEND block, or it won’t work. Now that we prepared the data we want to send to the PLC_2 let’s actually attempt to send it. We will do that by using the TSEND block. Just drag and drop the instruction into your main OB1 to add it to your logic. See picture 5. picture 5. Add TSEND block. When adding the TSEND block you will be asked to create an instance data block because it is essentially a function block, again give it a proper name. See picture 6. Picture 6. Create data instance for the TSEND. When the TSEND block is added into your logic, you will find that there are some important configurations we need to make. See picture 7. picture 7. The TSEND block. As you can see, we need to make some configuration: The REQ signal to allow the sending of the data. As for the REQ signal, we will define a tag SendData that will be used to enable the sending of the data. ID of the connection I will use to send the data, because I can have more than one connection, so I need to assign which connection will be used. In the last article, we defined the ID 1 for the connection between PLC_1 and PLC_2, so we will set the ID to 1. DATA that I need to send. We already created a data block with all information I need to send, we can simply just drag and drop the data block into the TSEND block. See picture 8. picture 8. Configure the TSEND block. Receive Data from PLC_1 After we setup the TSEND for sending the data to PLC_2, we need to receive these data inside the PLC_2. To do that we will use the TRCV block. See picture 9. picture 9. Add TRCV block. As you can see, just drag and drop the TRCV block to add it into your logic. And you know that next we will need to create a data instance to that block. See picture 10. picture 10. Add data instance to TRCV block. After the TRCV block is called into your logic, we will need to configure some parameters as we did with the TSEND. See picture 11. picture 11. The TRCV block. As you can see, the EN-R is an enable signal that must be true to allow the TRCV block to start receiving the data. The ID is the connection that will be used and the DATA is where the received data will be stored. So, we need to create a data block to receive the data inside it. Remember to give it a proper name. See picture 12. picture 12. Create data block to receive data. Next, define the information tags that will be received from PLC_1, it is a best practice to ensure the data block hold the same data structure as the data that will be received. See picture 13. picture 13. Define data tags. For the EN-R, we will define a RecieveData tag to enable the data receive. And for the connection ID it is 1 as we set it up before. See picture 14. picture 14. EN-R signal. Next, drag and drop the data block we created into our TRCV block to finish all configurations. See picture 15. picture 15. Add your data block into TRCV block. When you drag and drop the DB we created, you will notice that TIA Portal is giving a warning and that it is not accepting the data block we just added. And that is because we didn’t unchecked the “Optimized block access” of the data block as we did with TSEND. See picture 16. picture 16. Optimized block access. As we said before, we have to uncheck this option otherwise the TSEND and TRCV won’t work. See picture 17. picture 17. Uncheck the optimized block access option. You can see that once we unchecked the “optimized block access” the data block is now accepted with the TRCV instruction. Now that the calling and configuration of the TSEND and TRCV blocks is done. Let’s simulate our project and see how the data will be sent and received. First we will create a simple logic that ensures that there are data values for our defined tags. Simple logic to automatically create data values We will create a simple logic to automatically create and update the data values so it will be easier to see the data transfer between the two PLCs. See picture 18. picture 18. Simple logic. This simple logic will use the clock bit %M50.5 to automatically change the values of the data stored inside SendToPLC_2 data block. Simulation of the PLC project Let’s compile our project and start a simulation. The first thing we will need to do is to establish the connection between the two PLCs using the TCON block we configured last article. Remember that we will need to enable the connection capability from PLC_2 and establish the connection with PLC_1. See pictures 19, 20 and 21. picture 19. No connection between PLCs picture 20. enable the connection. picture 21. Establish the connection. Now, that we established the connection between the two PLCs let’s move the data from PLC_1 into PLC_2 as we set it up. First, make the SendData tag TRUE. See picture 22. Picture 22. REQ signal is true. You can see that, even though the SendData is TRUE, there were no data sent from PLC_1 to PLC_2. And that is because the TRCV block is not yet enabled to receive any data. See picture 23. picture23. EN-R signal is false. As you can see, because the RecieveData is not yet TRUE, the TRCV block is not enabled to receive any data. Once the EN-R is true the data will be sent from the data block in PLC_1 into the data block of PLC_2. See picture 24. picture 24. EN-R signal is True. Once the EN-R is true, you can see that the data is moved from PLC_1 into PLC_2. If you open the project and simulate it yourself, you will find the data is continuously being updated in PLC_1 and transferred into PLC_2. And this is how we can establish a communication between two PLCs and use TSEND, TRCV blocks. -
What is a PLC Retrofitting Project? – Importance, Procedure
leigehong posted A plc and hmi english article in PLC programming learning
A PLC retrofitting project involves updating or replacing the old PLC (Programmable Logic Controller) system with a newer and more advanced version. This is done to improve performance, add new features, or maintain compatibility with modern technologies, all while minimizing the need to completely replace existing equipment. PLC Retrofitting Project When you are working in any system, be it industrial automation or anything else, it is not always necessary that you will commission a fully new plant. There are times when an old plant is not running properly as per desired results. This means not the whole system, only some parts. It may be a PLC system or electrical system or mechanical system. Instead of changing the whole system, it is better to replace only that part with a new one. The remaining systems will be maintained as it is. This is called retrofitting. It is a very important aspect for engineers to learn. In this post, we will see the steps related to retrofitting of a PLC system. Why is PLC Retrofitting required? When you have a PLC system, you are bound to be in a condition where sometimes it will fail. It’s a natural consideration for any system (not only PLC) and it does not mean that the PLC system fails every time. It is a worst-case scenario taken into the picture. Now, apart from PLC, the remaining systems of electrical and mechanical are working fine. The common causes of PLC system replacement needs are – repeated bugs in logic, obsolete PLC which has become failed and not available anymore in market, repeated firmware or hardware failures in PLC, and no service available. In these cases, instead of replacing the whole system, the best option is to replace only PLC system. This is called PLC retrofitting job. Basically, you are either upgrading the PLC to a new one or completely replacing it with a new brand. This reduces costing, does not impact the original working plant, saves time and increases reliability. Basically, the plant working logic will remain same; you are just replacing it with a new hardware and running the plant. Procedure for the PLC retrofitting project The very first step is to study the control panel drawing of PLC. Every PLC has its own different version of wiring and also sink-source concept. So, it is necessary that you first understand the original wiring done. This will help you to prepare new IO list according to your current PLC. Because if you go with same IP list blindly, you will mostly face wiring issues at site when you install the new PLC Get the old program if possible. If it is not possible, then develop a new fresh logic in office before going to site. Also, test the logic with customer or the best case, the end client. The end client will help the most because they have operated the old PLC system and can help in solving queries quickly. The customer can help in deep checking the process. If the program is tested before going to site, then it will drastically reduce your time at site. Try to match the screens and develop the graphics as it is with the old running ones. This will help the operators to run the plant more easily as they are used to with. Once your logic and graphics are ready, plan for site with the wireman. The wireman will first replace the new PLC in place of old one, and then cross check all points with multimeter. This is to ensure whether all the points have been connected or not as per new wiring. One important thing to note down is that retrofitting requires a proper shutdown, so do ensure before planning site visit. Once the wiring has been loop checked without power, then power up the system and download your latest programs in PLC and graphics. Now, first of all, you have to check the IO’s. This is a very crucial step, because you are replacing old wiring with new ones. All the IO’s in the field must respond in the same way as it was functioning earlier. Without this, you cannot run the plant in auto or manual mode. Now, check the logic written and see whether it is executing as per earlier system or not. All the safety interlocks, permissive conditions, sequences and other logic must work in the same way as old system. This must be approved by both the customer and end client for verification and mention in the report if it is working properly. Make all the final reports, store final backup, and take photos and videos of the running system. This ensures a completion report for the retrofitting PLC project that you have done. PLC Project Summary Evaluate the existing PLC system, identify retrofitting needs, and determine project objectives, scope, and constraints. Design a detailed new system plan, ensuring integration with existing machinery and network, and develop a migration strategy. Backup all programs, data, and documentation from the current system and prepare a recovery plan. Procure the new PLC and any additional hardware, ensuring compatibility and availability. Prepare the installation site with necessary safety measures and schedule downtime if required. Decommission the old PLC system and install the new PLC and related hardware. Transfer or rewrite program logic to the new PLC, testing all functions and communication. Perform comprehensive testing of the new system, validate performance, and make necessary adjustments. Train personnel on new system operations and maintenance, and update or create system documentation. Officially switch to the new PLC system, monitor closely for issues, and provide necessary support. Conduct a post-implementation review to assess success, document lessons learned, and plan future maintenance or upgrades.