Im vorherigen Teil des Artikels haben wir die Phase des Starts des Systemdesigns untersucht. Jetzt möchte ich Ihnen sagen, welche Art von Gerät am Ende herausgekommen ist.
Teil 1
Teil 2
In der Diskussion des ersten Teils wurde das Problem der Messung von Spannung und Strom angesprochen. Also habe ich beschlossen, es genauer zu behandeln. Wie ich bereits geschrieben habe, sind die Spannungs- und Stromsensoren in unserer Schaltung Transformatoren. Ein Miniatur-Transic BV 201 0145 wird zum Messen der Spannung und für den AC-1020-Stromsensor verwendet:
Die Spannungen werden von ihnen entfernt, die vom im Mikrocontroller eingebauten ADC digitalisiert werden. Der analoge Teil ist unten dargestellt:
Der Stromsensor wird über den Widerstand R3 geladen. Die Zenerdiode VD3 schützt vor plötzlichen Spannungsspitzen durch kurze Stromstöße. Die Widerstände R2, R4 setzen den "Nullpunkt" um 1,8V. Gleiches gilt für den Spannungswandler. Nur an den Widerständen R8 und R10 befindet sich ein Teiler, da der Transformator in unserem Fall eine Nennspannung von 12 V erzeugt.
Wir führen eine Digitalisierung mit einer Frequenz von 1000 Hz für 200 ms durch. Basierend auf den erhaltenen Werten berechnen wir den Effektivwert. Wir berechnen die quadratischen Werte direkt im Interrupt schnell. Nach der Akkumulation von 200 Abtastwerten wird die endgültige Berechnung unter Verwendung von Gleitkommazahlen in der Hauptprogrammschleife durchgeführt.
Warum Sie den Effektivwert messen müssen und wie dies am besten funktioniert, wird hier in diesem Artikel ausführlich beschrieben .
Ich habe bereits mehr als einmal geschrieben, dass wir bei der Entwicklung unserer Geräte immer versuchen, die gängigsten elektronischen Komponenten maximal zu nutzen, um einerseits die Kosten zu senken und andererseits keine Probleme mit ihrer Lieferung während der Produktion der Serie zu haben. Bei dieser Konstruktion haben alle verwendeten Widerstände eine Toleranz von 5%. Aufgrund eines solchen Fehlers hatten die Produkte nach der Produktion natürlich einen großen Fehler bei der Messung von Spannung und Strom. Dieser Fehler wurde auf einer automatisierten Kalibrierbank behoben. Der "Stand" klingt natürlich etwas laut, aber er erfüllt seine Funktion so, wie er sollte. Der Stand besteht aus folgenden Komponenten:
- Set mit drei 500 W Halogenlampen
- Stromsensor oben beschrieben
- Stromzähler Energomera CE102M
- USB-RS-485 Konverter
- Leistungsschalter
Wir verwenden das Messgerät als beispielhaftes Messgerät für Netzspannung und Laststrom. Das CE102M-Modell ist sehr praktisch, da es zum einen mit nur zwei Drähten an den USB-RS-485-Wandler angeschlossen ist (im Messgerät befindet sich ein eigener Stromrichter) und zum anderen die Eingabe der Seriennummer zum Lesen der Daten nicht erforderlich ist. Es scheint eine Kleinigkeit zu sein, aber sie bieten mehr Komfort bei der Verwendung der Theke.
Das Austauschprotokoll ist im Handbuch des Herstellers ausführlich beschrieben. Es gab also keine Schwierigkeiten bei der Softwareimplementierung.
Übrigens können Sie einen separaten kleinen Artikel über Zähler schreiben. Zu einer Zeit, als ich eng mit ihnen zusammengearbeitet habe, unterstützen einige unserer Geräte vier beliebte Modelle: Incotex-SK "Mercury 206", Energomer "SE102", Energomer "CE102M" und IEK "STAR 104/1".
Die allgemeine Ansicht des Standes stellte sich wie folgt dar:
Für die Automatisierung wurde ein einfaches Programm entwickelt, das Daten vom Messgerät liest, die eingebauten Relais der Steuerung steuert und automatisch die Koeffizienten für das Strom- und Spannungsmessgerät auswählt:
Wir verwenden normalerweise Barcodes für die Seriennummern unserer Geräte. Es ist sehr praktisch, sie mit einem Barcode-Scanner einzugeben:
In diesem Fall wurde das Gerät bestellt, und der Kunde bat darum, die Seriennummer einfach in Form großer Zahlen auf der Vorderseite auszuführen.
Das Kalibrierungsprogramm speichert alle Daten in unserem internen System. Es zeichnet auf, wer, wann was überprüft wurde und die entsprechende Liste von Parametern. Die wichtigsten sind die Seriennummer und die MAC-Adresse.
Übrigens über die MAC-Adressen. Wir kaufen sie als 24AA025E48-I / SN-Chips von Microchip. Wenn sie in loser Schüttung gekauft werden, sind sie kostengünstig und sehr einfach zu bedienen. Die MAC-Adresse wird über die I2C-Schnittstelle gelesen.
Nun zur Verbindung mit dem Server. Zu Beginn der Entwicklung hatten wir bereits die Hauptfunktionalität. Es ist ein einfacher Webdienst, der in ASP.net geschrieben wurde, und ein separates Serverprogramm für die Kommunikation mit der Hardware. Jeder Controller überträgt einmal pro Minute ein Datenpaket über das UDP-Protokoll. Die Serversoftware analysiert es, speichert die Daten in der Datenbank (mit "Dezimierung" bis zu einmal pro Stunde) und merkt sich zusätzlich die externe IP-Adresse und den Port, von dem das Paket stammt. Dies ist erforderlich, um den Controller vom Server aus zu steuern.
Da sich tatsächlich 100% der Geräte hinter NAT befinden, müssen einige Besonderheiten berücksichtigt werden. Das wichtigste ist, dass einige NATs ein kleines Zeitlimit für die Zuweisung eines externen Ports zum Client haben (weniger als eine Minute). Laut unserer Statistik ist der Prozentsatz davon nicht sehr groß, aber dies führt in jedem Fall dazu, dass das Intervall für das Senden von Überwachungsdaten vom Controller an den Server verkürzt werden muss, um den dedizierten Port zu "warten".
Ich werde gleich schreiben, warum wir UDP- und keine TCP-Verbindungen verwenden, obwohl unser Gerät natürlich beide Protokolle implementiert. Die Wahl von UDP basiert nur auf der Benutzerfreundlichkeit und den geringen Rechenkosten sowohl auf der Controller- als auch auf der Serverseite. Ja, es garantiert nicht die Zustellung von Datenpaketen, aber Sie müssen verstehen, dass dies leicht durch ein Protokoll höherer Ebene implementiert werden kann, das auf UDP ausgeführt wird. Darüber hinaus ist bei der Übertragung von Überwachungsdaten der Verlust mehrerer Pakete pro Tag absolut unbedeutend, insbesondere wenn man bedenkt, dass wir beim Speichern in der Datenbank die Daten immer noch "ausdünnen" und nur einmal pro Stunde speichern. Wenn die Steuerung jedoch ferngesteuert wird, z. B. wenn das Relais im manuellen Modus ein- und ausgeschaltet wird, funktioniert das "Request-Response" -System und es werden mehrere Versuche unternommen, einen Befehl zu senden.
Zusätzlich haben wir über den Server ein Remote-Update der "Firmware" der Controller implementiert. Es funktioniert auch über UDP. Das Update funktioniert zwar in einem halbautomatischen Modus. Trotzdem ist es nicht gut, es zu einem beliebigen Zeitpunkt auf dem Computer auszuführen, da dies zu einem Problem bei der Arbeit der Endbenutzer führen kann. Stellen Sie sich vor, wie überrascht sie sein werden, wenn das Ethernet-Relais am helllichten Tag die Last abschaltet und neu startet :-)
Abschließend möchte ich sagen, dass wir in den letzten zwei Jahren fast tausend dieser Geräte hergestellt haben. Alle von ihnen sind online. Ungefähr zweitausend andere Controller kommunizieren ebenfalls ständig mit unserem Server. Im Allgemeinen funktioniert alles ziemlich stabil. Obwohl wir die Funktionalität natürlich ständig erweitern. Zum Beispiel haben wir kürzlich einen Mob veröffentlicht. Anwendung zur Fernsteuerung unserer Geräte über das Internet. Aber schreibe das nächste Mal irgendwann über ihn ...