Moving Average Leiter Logik

Ladder Logic 401: Datenerfassung und - analyse mit freundlicher Genehmigung von pumpingstationone. org Der heutige Post ist als Antwort auf eine Anfrage von Quy Phan, die ich vor ein paar Wochen traf, während ich für Automation Training in San Diego unterrichtete. Er hat einige Probleme mit einigen vorhandenen Geräten in Bezug auf Lärm auf seinen analogen Wandlern hat er ziemlich viel seine Optionen bis hin zu Abschirmung und physikalischen Filtern erschöpft, und da ich tat Training auf SPS-Programmierung er fragte nach Optionen in Software. Ich sagte ihm, wenn er die Frage auf meinem Blog, I8217d würde die Frage hier. Ich beschloss, es als zwei Beiträge, diese auf Signalanalyse und die nächste bei der Filterung in Software. Bevor es möglich ist, die Filterung zu adressieren, ist es zweckmäßig, etwas über das Signal selbst zu wissen. Wenn Sie ein Oszilloskop haben, wäre das ideal, da Sie ein tolles Bild der Signalpegel bekommen können, aber die SPS kann auch Daten erfassen und analysieren. Leider können die Methoden je nach Plattform viel variieren. Ich werde versuchen, zu diskutieren, diese in einer generischen Art und Weise, aber die Programmierung Bilder kommen aus meiner AB ControlLogix-Software. Erstens, die Erfassung der Signalpegel: Diese nehmen ein signiertes Integer-Signal von einer analogen Karte, unbekannte Auflösung. Nicht signierte analoge Signalwerte, die über eine nicht spezifizierte Zeit gesammelt werden. Dies zeigt eine zufällige Abtastung von Werten, die von einer typischen analogen Karte gesammelt wurden. Da AD-Wandler die Werte sehr schnell ändern, kann es schwierig sein, die Spikes zu sehen, die im Signal auftreten können. Schließen von Analogwerten, die mit einer höheren Rate gesammelt werden Wenn Werte mit einer höheren Rate abgetastet werden können, als es ein typisches PID-Regelschema erfordern könnte, könnte es einige Daten wie diese zeigen. Die Spikes in diesen Bildern veranschaulichen, was Sie tun können, wenn Sie einige einfache Begrenzung der Werte auf der Grundlage der Mittelung zu tun. Nächste Woche8217 Post wird in mehr aufwendige Methoden der Glättung des Signals gehen. Ein Punkt I8217d möchte hier betonen: Jede Modifikation der gesammelten Daten erfordert eine Verzögerung des Signals. Schließlich braucht es Zeit, die Signale zu verarbeiten und zu verbessern. Aber mehr auf die nächste Woche, das ist mehr auf der Datenerfassung Seite. Dies ist ein Verfahren zur Erzeugung von Abtastimpulsen, die auf so ziemlich jeder beliebigen SPS-Plattform, einem frei laufenden Timer, funktionieren. Ein Problem dabei ist, dass es nicht besonders präzise sein wird, da es innerhalb des Scans arbeitet. Wenn es notwendig ist, die Genauigkeit zu verbessern, kann eine zyklische Routine oder ein Interrupt verwendet werden. Dies ist ein Verfahren zum Erfassen von zehn Werten in einem Array. Es verwendet eine FIFO-Anweisung, die in den meisten Ihrer teureren Prozessoren, einschließlich Allen-Bradley und Siemens verfügbar ist. Wenn Sie mehr Werte erfassen möchten, einfach erhöhen Sie die Größe Ihres Arrays, ist dies eine praktische Anweisung, da es alles auf einmal. Hier ist eine andere Methode, wenn Sie don8217t oder don8217t wollen eine FIFO-Anweisung verwenden. Sie haben noch Array und Datei Bewegung Fähigkeiten haben. Der erste Befehl bewegt 9 Elemente, wobei Raum für den aktuellen Signalwert, der in das erste, jüngste Element kopiert werden soll, bleibt. Leider für Quy, seine PLC-Plattform doesn8217t haben entweder Arrays oder Datei-Manipulation Fähigkeiten, so würde er es tun müssen, die harte Art und Weise. (Sein Prozessor ist ein Automation Direct DL250-1) 82308230. und so weiter, bis zu Dies dauert etwa 20 Anweisungen für die Bewegung von 10 Werten mit der Automation Direct-Software. Die MOV-Befehle müssten jeweils durch eine LD Vxxx und eine OUT Vxxx ersetzt werden, wobei die V8217s Ihre gewünschten Datenpositionen Sensorwert und Speicherort sind. Dies sind 16-Bit-Akkumulatoren. Mehr schlechte Nachrichten: Automation Direct8217s Timer verwenden eine 100ms Zeitbasis, so dass Sie Aren8217t gehen zu können, die Konvertierungsrate Ihrer analogen Karten von viel, wenn überhaupt zu übertreffen. Die Analogkarten sind wohl auch nur 12 Bit Auflösung, wenn das so auch nicht viel Präzision wird. Hier ist eine Anweisung, die alle Elemente in einem Array mittelt. Auch dies ist bei höherwertigen SPS verfügbar. Und das Ende der Sprosse: Dies ist die Methode, die Sie verwenden müssen, wenn Sie Arrays oder eine durchschnittliche Anweisung haben. Summiere alle Werte und dividiere durch die Anzahl der Werte. Nimmt 21 Anweisungen für 10 Werte auf der AD-Plattform. Sie können einen laufenden Durchschnitt Ihrer Werte auf diese Weise für zwei oder drei Werte auf einmal zu halten. Dies könnte wiederum in ein anderes Array für eine laufende Aufzeichnung von Mittelwerten für die Glättung zurückgelesen werden. Dieser Strompfad berechnet die Rate der Änderung oder Delta zwischen aufeinanderfolgenden Captures. Es funktioniert auf jeder Plattform zum Glück. Wieder könnte dies in ein Array zur Analyse zurückgelesen werden. Es ist nützlich, die Richtung der Änderung sowie ihre Amplitude zu bestimmen. Für die Filterung können Sie sie verwenden, um 8220spike8221 Werte zu erfassen. Bei der Analyse von Signalen kann es sinnvoll sein, Signale so schnell oder häufig wie möglich zu erfassen, im Gegensatz zu Steuerung und Filterung. Das Limit wird sein, wie oft Ihre Karte tatsächlich einen neuen Wert in ihr Register einträgt. Durch das Erfassen von vielen Werten in einem Array können Sie die Aktualisierungsrate Ihrer Analogkarte oder des A-D-Wandlers bestimmen. Wenn Sie durchschnittlich 5 identische Werte in einer Reihe bei einer Erfassungsrate von 5ms haben, aktualisiert Ihre Karte alle 25ms. Je schneller Sie Signale erfassen, desto wahrscheinlicher ist es, dass Sie eine 8220spike8221 oder einen Toleranzwert erfassen. Mein nächstes Thema, Ladder Logic 402, wird auf, was mit diesen Werten zu tun, nachdem sie zusammen mit einigen guten Filterung Beispiele analysiert werden. Wie ich schon erwähnt habe, schreibe ich noch ein Buch, dieses auf SPS-Programmierung. Diese Themen zusammen mit einigen der anderen in meiner Ladder Logic Reihe von Beiträgen wird dort sein. Ich experimentiere mit der Verwendung dieser Art der Darstellung von Logikbildern, anstatt Adressen und Register oder spezifische Anweisungen zu verwenden, ich versuche, Material in einer nicht-markenspezifischen Weise zu präsentieren. Bitte lassen Sie mich wissen, wenn Sie irgendwelche Vorschläge für die layout. Ladder Logic 402: Datenmanipulation und Filterung In den letzten Wochen8217 post. Ich diskutierte das Erfassen von Daten mit einer SPS, um Werte von einer analogen Karte zu erfassen. Ich zeigte einige ziemlich einfache Methoden der Erfassung von Daten mit FIFO-Methoden, Mittelung Datenwerte und wie einige der Leiter-Logik könnte auf verschiedenen PLC-Plattformen durchgeführt werden. Dieser Beitrag diskutiert einige der Methoden der Filterung von Daten und Möglichkeiten zur Simulation eines Filters mit Microsoft Excel, bevor Sie sogar Code in der SPS. Zuerst habe ich einige Online-Suche, um zu sehen, welche Art von Filter-Algorithmen Menschen bereits auf einer SPS. Ich fand eine Vielzahl der Pfosten auf verschiedenen Foren einschließlich plcs. net, plchowto und Steuerung. Es gab auch Antworten und Empfehlungen für Linked In Foren, und sogar eine neue hier in den letzten Wochen kommentiert. Zuerst die Formeln: Ich habe die gleichen Variablennamen für alle Formeln verwendet, obwohl sie sich ausgiebig in den verschiedenen Posts. Hierbei verwende ich folgendes: N Neuer Wert berechnet und ersetzt den Eingangswert. Mit anderen Worten, der berechnete gefilterte Wert. L Der vorherige Eingangswert. F Der vorher berechnete gefilterte Wert. K Der manipulierte Faktor für alle Berechnungen (manchmal auch als Alpha bezeichnet). I Der aktuelle analoge Eingangswert. Mit einem laufenden Durchschnitt über x Anzahl der vorherigen Proben habe ich in diesem Beispiel 3 für x verwendet. Die Formel für einen Filter erster Ordnung ist Neuer gefilterter zuletzt gefilterter Faktor (Eingang 8211 zuletzt gefiltert). Dies entspricht NFk (i-F) gemäß den oben aufgeführten Variablen I. Die eigentliche Formel verwendet Alpha anstelle von k. Die Ergebnisse dieser Formel sind in der nachstehenden Formel 6 aufgelistet. Um ein Signal zu simulieren, habe ich einige analoge Werte in einer Spalte auf einer Excel-Tabelle aufgelistet. Diese Werte sind typisch für ein 13-Bit-signiertes Analogsignal von einer PLC-Karte, daß sie um einen Faktor von acht inkrementieren oder dekrementieren. Dies würde bedeuten, dass bei einem 0-10V - oder 0-20mA-Signal mit einem Bereich von 0-32.767 4096 mögliche Werte für das Signal vorhanden wären. Die andere Hälfte des Bereichs, -32768 bis -1, ist vom Feldgerät nicht erhältlich. Die oben gezeigte erste Spalte sind die eingegebenen Eingabewerte. Der Wert von 20168 simuliert eine große Rauschspitze, die Sie filtern möchten, ähnlich wie die von Quy Phan in seiner Frage beschrieben. Die folgenden Spalten zeigen Ergebnisse nach der Verwendung der verschiedenen Filter-Formeln, die ich während meiner Suche gefunden habe. Der Grund der Input Spalte mit früheren Werten darin ist, so könnte ich einen laufenden Durchschnitt von bis zu fünf Werte in meinen Formeln verwenden. Formel 6 (die ich in der Regel verwenden) muss auch den vorherigen gefilterten Wert verwenden, so dass8217s, warum es einen zusätzlichen Wert in ihm auch hat. Dies ist ein Schlüssel mit den aufgeführten Variablen und den Formeln. Die k-Werte sind mit den Zellen verknüpft, die in der Tabelle verwendet werden, also kann ich sie nach Bedarf ändern. Diese sind die ersten drei formula8217s Resultate und diese sind die folgenden drei. Wie Sie sehen können, sieht Formel 1 tatsächlich aus, wie es das Signal schlechter macht. Dieses eine wurde auf plcs. net verzeichnet ich versuchte Durcheinander mit Klammern und dem k-Wert aber es didn8217t scheinen, zu helfen. In der Beschreibung der Schriftsteller sagte, dass k die Anzahl der Proben zu filtern, aber jede positive ganze Zahl war eine Katastrophe, so gab ich auf. Formel 2 und Formel 4 taten fast die gleichen Dinge in den Instruktionen Formel 2 war 8220k1.0, keine Filterung, k0, Output-freezes8221. Formel 48242s Anweisungen 8220k1.0, keine Filterung, 2,0, 4,0 und 8,0 geben zunehmende Mengen an Filterung mit mehr Dämpfung, aber mehr Verzögerung8221. Formel 3 ist ein gerade laufender Durchschnitt und scheint eigentlich ziemlich gut zu funktionieren. Ich habe die aktuelle und vorherige zwei Werte für einen Durchschnitt von drei, bei der Verwendung mehr gab es mehr Verzögerung. Formel 5 verwendet auch einen laufenden Durchschnitt. Ich verwendete drei Proben im Durchschnitt auch, aber ich glaube, dass die Absicht war, vier oder fünf zu verwenden. Als ich das tat, wurde die verzögerte Reaktion (Lag) schlimmer. Wie ich schon erwähnt habe, ist die formale Definition eines Filters erster Ordnung, was ich in der Vergangenheit verwendet habe. Dies wird durch die Formel 6 dargestellt. Manchmal ist dies als ein erster Ableitungsfilter bekannt, wenn die Punkte gleich der Position sind, dies würde ein Geschwindigkeits-basiertes Filter darstellen. Ein Filter zweiter Ordnung würde dann AccelDecel darstellen, und ein Filter dritter Ordnung würde 8220jerk8221 repräsentieren. Die Filter funktionieren aus dem Delta zwischen den aktuellen und vorherigen Werten. Ich don8217t wissen viel über die Prozesssteuerung, so I8217m nicht sicher, wie die zweite und dritte Derivate können sich auf den Fluss oder Temperatur beziehen. Auf der letzten Woche8217 post, Karl Newman beschrieb einen einfachen gleitenden durchschnittlichen Filter mit einem Formelvorschlag. Ich wollte diese Post fertig, bevor wir nach Los Angeles in dieser Woche, so dass ich didn8217t bekommen eine Chance, es zu versuchen. Er sagt, dass es keine Datenspeicheranforderungen hat, aber natürlich, um neue zu berechnen oder alte Mittelwerte zu erhalten, müssen Sie vorherige gemittelte Werte beibehalten. Ich beabsichtige, es auf meiner Kalkulationstabelle auszuprobieren, aber hoffentlich wird Karl mir mitteilen, was er mit keiner Datenspeicherung gemeint hat. Der Hauptpunkt, den ich hoffe, mit diesem Pfosten zu erhalten ist, daß Sie Formeln sehr leicht in Excel simulieren können, können Sie die Sachen heraus überprüfen, bevor Sie es in die PLC wie veranschaulicht durch Formel 1 einsetzen. Das Setzen einer Formel in PLC-Form variiert a Los zwischen Plattformen. In der Leiterlogik kann ein Befehl 8220calculate8221 Typ Sie die Formel direkt eingeben, obwohl Sie möglicherweise noch FIFOs verwenden, wie beschrieben letzte Woche, vor allem bei der Mittelung. Structured Text ist auch eine gute Option, wenn Ihre Plattform hat es. Siemens STL (Statement List) macht es auch leichter. Wieder wird Quy Phan8217s Aufgabe ein bisschen härter sein und mehr Zeit mit seinem Automation Direct DL205 nehmen. Es gibt eine Menge von LOAD und OUT erforderlich, wenn Stapel-basierte Logik und Mathematik. Er muss auch eine geeignete Zeitkonstante für die Datenerfassung bestimmen. Ich möchte annehmen, was es braucht, um diese Formeln später in eine Leiter umzuwandeln. Da dies eine meiner ersten fortgeschrittenen Themen, die meisten von Ihnen mit Erfahrung bereits wissen, wie man das macht, aber für diejenigen, die nur lernen, es könnte eine nützliche Übung sein. Hallo von Sunny Los Angeles, 14. März 2016 Ich aktualisiere diesen Beitrag mit ein bisschen Leiter, wie ich letztes Wochenende erwähnt habe. Das verwendet Formel 6 aus dem Kalkulationsblatt. Ist unten die einfache Weise, wenn Ihre Software eine Anweisung hat, die Ihnen erlaubt, eine volle Formel einzugeben: Und hier ist die etwas schwierigere Weise, jede mathematische Anweisung sequentiell zu tun und Werte in 8220scratchpad8221 Zwischenwerten zu speichern. Immer noch nicht so schlecht8230 Dies ist wiederum als Reaktion auf Quy8217s ursprüngliches Problem der Filterung auf einem Automation Direct DL205. Ein paar Dinge, um diesen Code auf dieser Plattform hinzuzufügen. 1. Adressen sind keine Tags, sie sind 16-Bit-Oktalnummernregister wie V7020-V7027. Da die meisten Mathematik in meinem Filterbeispiel REAL - oder Floating-Point-Nummern verwendet, muss der Analogwert von Integer-Form in REAL konvertiert werden, wobei verschiedene Zwischenregister verwendet werden. REALs füllen natürlich zwei 16-Bit-Adressen, also seien Sie vorsichtig bei der Reservierung von Speicherplatz. 2. Mathe - und Verschiebefunktionen won8217t so aussehen, benötigen sie LOAD Double Vxxx und OUT Double VXXX Befehle. Anweisungen können nicht in Serie geschaltet werden, sondern müssen entweder parallel sein oder separate Sprossen verwenden. 3. Timer laufen auf einem 100ms Zeitbasis, so wird es schwierig sein, wiederholt und exakt Probe. Siehe letzte Woche8217s Post, warum dies ein Problem sein kann. Auch das Sammeln von Daten, die für Ihre Tabellenkalkulation zu analysieren sind, ist eine schwierigere Codierung. Idealerweise würden Sie bei 10-20ms zu analysieren Ihr Signal Probe, aber Filter mit einer langsameren Rate, sagen 100-200ms. Es ist lustig, habe ich diese auf einige Linked In Foren vor ein paar Tagen und haben einige interessante Antworten erhalten, wie 8220MS Excel ist nicht kompatibel mit Ladder Logic8221. Hmmm8230 nicht sicher, dass die Post korrekt gelesen wurde, ich denke, dass8217s, warum ich es in der 400-Serie. Das tut mir leid. Excel wird hier nur als Analyse-Tool verwendet. Obwohl nur für Spaß, schauen Sie sich diese Post von vor einigen Jahren, tatsächlich können Sie importieren Code in Excel In AB, XML-Dateien sind direkt importierbar und leicht von einer L5X-Datei auf Leiter konvertiert werden, während in Siemens kann es als STL importiert werden (Statement List) und in Leiter umgewandelt Ich wette, Sie können dies auf einigen anderen Plattformen zu tun. Ich habe auch einige mehr Vorschläge für Vorschläge zu probieren. Halten Sie sie kommen, wie ich schon erwähnte, ich arbeite an einem fortgeschrittenen SPS-Programmierung Buch und schätzen die inputFilters helfen, Rauschen von Signalen zu löschen. Sie werden häufig verwendet, um Analogeingänge aufzuräumen. Um dies zu erreichen, nehmen sie den Eingangssignalwert und mitteln sie mit vergangenen Werten. Eingang ist der eingehende Signalwert Ausgang ist das Ergebnis des Filters Gewicht ist, wie viel Einfluss Sie Vergangenheitswerte halten möchten. Höhere Zahlen legen mehr Wert auf vergangene Werte. Das Gewicht muss größer als 1 sein. In diesem Beispiel sehen wir, dass bei steigendem Gewicht 3 Dinge passieren: Das Signal glättet Die Maximal - und Minimalwerte sinken. Änderungen in der Eingabe dauern länger, um zu erkennen. Mit Filtern ist es ein Balanceakt, wo diese Überlegungen ausgewogen sein müssen, um zu einem idealen Gewicht für Ihre Situation zu gelangen. Eine Option, die in der Gleichung isn8217t, ist aber sehr wichtig: Die Frequenzproben werden genommen. Dies bewirkt, wie schnell der Filter auf Amplitudenänderungen reagiert. In diesem Beispiel nahmen wir 36 Proben für die einzelne Welle. Für diejenigen unter Ihnen, die gerne einige Zahlen sehen möchten, hier sind sie für das Beispiel oben:


Comments

Popular Posts