Guten Tag, Habr!

Entwicklung einer industriellen Steuerung mit einem Display zum Sammeln und Analysieren von Daten sowie zum Verwalten gruppierter Lasten. Wen interessiert es, was daraus wurde, bitte unter Katze.
Das Thema Industriesteuerungen hat sich seit langem für den Einsatz in automatisierten Steuerungssystemen (ACS) entwickelt. Wenn ich den nächsten Controller von Siemens, ViewPAC oder einem anderen Hersteller sehe, sehe ich nur ein großes Tablet (ich schreibe über diesen Formfaktor, dh keine Optionen für die Rackmontage) mit spezieller Software, aber dies ist nur auf den ersten Blick. Tatsächlich ist meistens nur das Erscheinungsbild von der Seite des Displays ähnlich, aber die Rückseite verfügt über Schnittstellenanschlüsse, Fächer zum Anschließen von Erweiterungsmodulen, Sensoren, externen Speichermedien usw. Es gibt universelle industrielle Steuerungen und hochspezialisierte Steuerungen, die für die Ausführung einer Reihe von Aufgaben ausgelegt sind, meistens vom gleichen Typ.
Es war ein so (hochspezialisierter) Controller, den wir entwickelt haben. Für den Anfang ein paar Worte zur Implementierung. Weltweit ist das Gerät in zwei Teile unterteilt. Das erste ist das Modul auf dem iMX6D, das wir speziell für die Implementierung solcher Aufgaben entwickelt haben, das zweite ist der Mikrocontroller STM32F103RBT7. Wie ich bereits (in früheren Artikeln) geschrieben habe, ist es das Blocksystem (modular), mit dem Sie komplexe Projekte schnell implementieren können. In einem solchen System ist der größte Teil des Hardware-Software-Komplexes bereits debuggt, und es bleibt nur, ihn mit anderen Modulen zu koordinieren und für den Endkunden zu modifizieren.
iMX6DEin vollwertiges Prozessormodul (zwei Kerne bei 1 GHz), das eine Reihe von Aufgaben für die Interaktion mit dem Benutzer erledigt:
- Datenausgabe auf dem Display / Touchscreen-Verarbeitung;
- Ethernet 10/100/1000;
- Zeitsynchronisation;
- Speicherung von Ereignisprotokollen;
- Webinterface + Update;
- Speicherung von Profildaten;
- komplexe Berechnungen für den Mikrocontroller.
Und dies ist keine vollständige Liste der Funktionen des Moduls.
Abb. 1. ProzessormodulDie webbasierte Oberfläche wiederholt das Bild fast vollständig von der Anzeige, wodurch Benutzer einfach navigieren und Einstellungen schnell ändern können. Die Implementierung basiert wie in früheren Projekten auf dem 11-teiligen Motor. Da der Mikrocontroller den Löwenanteil der Aufgaben ausführt, musste die Firmware (sowie die Hauptfirmware) über das Internet aktualisiert werden. Diese Aufgabe war besonders akut, da der Kunde vorhatte, Geräte zu aktualisieren, um die Funktionalität zu erweitern. Das Prozessormodul ist über UART mit dem Mikrocontroller verbunden (letzterer wird auch durch diesen geflasht).
STM32Der Mikrocontroller in diesem Projekt ist sehr wichtig. Erstens ermöglichte seine Verwendung die Parallelisierung von Aufgaben für Programmierer und die Unterscheidung von zwei Hauptbereichen:
- Benutzerinteraktion.
- Datenerfassung, -verarbeitung und -verwaltung.
Zweitens ist ein modulares System bequemer zum Debuggen, Testen und Erweitern der Funktionalität.
Diese industrielle Steuerung (im Folgenden als PC bezeichnet) ermöglicht die Wartung von vier unabhängigen Räumen (Gruppen) mit einer großen Anzahl von Sensoren für Betätigungselemente.
Speziell für dieses Projekt sind für jede Gruppe verfügbar:
- 6 Temperatursensoren, die zu einer Einheit zusammengefasst sind, um den Durchschnitt zu bestimmen;
- 2 unabhängige Temperatursensoren;
- 2 Feuchtigkeitssensoren;
- 1 CO2-Sensor;
- 12 Steuerkanäle für externe Aktoren.
Auch mehrere Straßensensoren:
- 2 unabhängige Temperatursensoren;
- 2 Feuchtigkeitssensoren.
Insgesamt stellt sich heraus, dass der Mikrocontroller Daten von 48 Sensoren sammelt und 48 Aktoren steuert. Alle Temperatursensoren sind analog. Feuchtigkeits- und CO2-Sensoren haben eine 4-20-mA-Stromschnittstelle.
Nun eine kleine Schaltung. Für das Schalten von Sensoren wurde entschieden, die analogen Multiplexer HCF4051 zu verwenden (sie haben eine Schaltverzögerung, dies war jedoch für unsere Aufgabe nicht kritisch). Es ist diese Serie, die bereits eingestellt wurde, ihr Unterschied zum Beispiel vom CD4051 nur in der Schaltgeschwindigkeit (naja, beim Hersteller). Es gibt sechs solcher Multiplexer in der Steuerung. Das Umschalten aller Multiplexer erfolgt gleichzeitig (über dieselben Beine des Mikrocontrollers), wodurch die Ressourcen und die Lesezeit erheblich reduziert werden. Am Mikrocontroller sind jeweils sechs ADC-Kanäle beteiligt.
Abb. 2. Multiplexer-SchaltkreisFür jeden Temperatursensor wird eine separate TL431-Spannungsreferenzquelle (im SOT-23-Gehäuse) verwendet. Bei einem Kurzschluss an einem der Sensoren arbeiten die anderen weiterhin wie zuvor. Zur Stromversorgung aller Oporniku verwendet LM1117 3.3V. Die Karte wird von einer externen DC24V-Quelle gespeist, daher werden für die sekundäre Stromversorgung zwei identische DC / DC-TPS54560DDAR verwendet (12V und 5V), da ich sie nicht im ersten Projekt verwende. 3,3 V werden mit dem ST1S10 aus 5 V erhalten.
Abb. 3. Position der Feeder auf der PlatineZur Steuerung externer Lasten werden üblicherweise Relais verwendet, die durch die Versorgung mit 24 V Wechselstrom ausgelöst werden. Daher wird jeder Gruppe AC24V zugeführt, die von BT138-600-Triacs über eine Optokopplerisolation geschaltet werden. Das Schema ist unten dargestellt. Alles funktioniert stabil.
Abb. 4. Triac-Steuerkreis
Abb. 5. Gruppe von Sensoren und Steueranschlüssen auf der PlatineVerwaltungsprogramme werden in einem separaten EEPROM gespeichert, das an den Mikrocontroller angeschlossen ist. Dort werden die Anfangsparameter beim Warmstart und der letzte Zustand des gesamten Systems gespeichert (damit das Programm weiter ausgeführt werden kann).
Es ist klar, dass der Mikrocontroller nicht über genügend GPIO verfügt, um so viele Optokoppler zu steuern (und es ist nicht human, so viele Drähte über die Platine zu ziehen). Daher werden die TCA6424ARGJR-Port-Expander verwendet, einer für zwei Gruppen und ein System (Verarbeitung mehrerer Eingangssignale, Verarbeitung von Systemtasten, LED-Anzeigen usw.).
Das Relais, das in Abb. 5 deutlich sichtbar ist. (eine für jede Gruppe) wird verwendet, um das Vorhandensein der Eingangsspannung AC24V und den Zustand der Sicherung für jede Gruppe zu bestimmen. Bei Auslösung sendet es ein Signal an den Mikrocontroller, der wiederum eine Fehlfunktion meldet.
Die Zeit wird mithilfe des NTP-Protokolls synchronisiert, es gibt jedoch auch einen RTC PCF8523-Chip (der ebenfalls wiederholt verwendet wird), um die Zeit ohne Versorgungsspannung zu berechnen.
Abb. 6. RTC-SchaltungAnzeigeDie PC-Steuerung erfolgt schnell über einen Touchscreen und ferngesteuert über das Internet. Wie gesagt, die Browser-Oberfläche (diese Funktionalität wird noch finalisiert) wiederholt den Bildschirm. Momentan ist eine Anwendung in Qt geschrieben, die direkt über mqtt mit einem PC kommuniziert und so realitätsnah wie möglich ist. Im Web gibt es derzeit allgemeine Geräteeinstellungen, Zugriffsorganisation und Software-Updates.
Abb. 7. Daten in der Anwendung auf Qt anzeigen
Abb. 8. Daten anzeigenMit diesen Controllertypen können Sie ein vollständiges ACS für Industriekomplexe erstellen. Funktionalität und eine Reihe von Sensoren sind in der Regel unterschiedlich und entsprechen den erforderlichen Aufgaben, aber der Zweck ist der gleiche - Überwachung und / oder Steuerung. Bei großen Systemen können Sie die Anzahl der Controller erhöhen, die durch eine Aufgabe vereint sind. Der Controller enthält möglicherweise keine Anzeige, kann jedoch über ein Netzwerk (Ethernet) gesteuert werden.
Abb. 9. Kleine PartyVielen Dank und bis bald!