Peter Hofbauer’s private Homepage
Selbstbauprojekte eigene Entwicklungen
Impressum Letzte Änderung: 08.Juli 2013 Copyright: frei! Impressum Letzte Änderung: 30.September 2019 Copyright: frei!

4-Quadranten-Labornetzgerät +/-40V / 100W  (4/4)

Programmierbar

Home Vorige Seite Home 4Q-Netzgerät Seite 1 4Q-Netzgerät Seite 2 4Q-Netzgerät Seite 3 4Q-Netzgerät Seite 4

Update / Erweiterung: RS232 und PC-Software “Edit4Q”

In der Hardware war schon eine RS232 eingebaut aber noch nicht in der Firmware. Das habe ich jetzt nachgerüstet. Dazu waren 2 neue Programmteile in der Hauptschleife und eine Interrupt-Routine für den Datenempfang nötig. Dabei habe ich noch ein paar Bugs behoben. Die Firmware ist etwas gewachsen: jetzt sind es 32 Quelldateien mit insgesamt 7612 Zeilen Code.

Meine Überlegung

Das 4Q-Labornetzgerät ist direkt am Gerät etwas unübersichtlich zu programmieren. Im Display sind immer nur ein Datensatz (genannt “Knoten”) sichtbar. Für ein Profil können bis 48 Knoten verwendet werden. Da wird es umständlich wenn man das für alle 8 Programme machen will. Nach dem Einschalten des 4Q wird zuerst der komplette Inhalt des EEPROM in den RAM kopiert. Dort können sie verwendet oder editiert werden. Sobald ein Datensatz im RAM editiert wurde, kommt dieser zusätzlich ins EEPROM. Für alle 4 Betriebsarten (Linear, Profil, Akku und Extern) sind die Arbeitsdaten in einen geschlossenen Bereich vorhanden. Die Daten für die Betriebsart “Profil” und “Akku”sollen jetzt mit einer Software am PC verwaltet werden. Für eine längere Beobachtung sollen Daten vom 4Q auch aufgezeichnet werden. Das ist zum Beispiel für Prüfarbeiten einer Entlade- und Auflade-Aktion von Akkus vorteilhaft. Sonst muss man stundenlang mit Papier und Stift daneben sitzen.

Das Protokoll der RS232-Übertragung

Das Protokoll ist ganz einfach aufgebaut. Das erste Byte ist ein Kommando, dahinter kommen die Bytes und ans Ende eine Prüfsumme. Die Prüfsumme ist ein Byte das durch die Addition aller Bytes ohne die PS selber entsteht. Die Daten werden so übertragen wie sie im RAM des 4Q stehen, also im Binärformat. Ob eine Übertragung fehlerfrei war, wird an 3 Eigenschaften erkannt: 1. das Kommando 2. die Anzahl der Bytes 3. die Prüfsumme Wenn ein Fehler erkannt wurde, wird einfach 2 Sekunden lang nichts getan. Daran erkennt die Gegenseite den Fehler und setzt seine Zeiger entsprechend neu. Der PC ist der Master, der 4Q wird nie von selber aktiv. Nach jeder Sendung des PC zum 4Q muss eine Antwort vom 4Q kommen.  Der Daten-Transfer kennt mit 3 Aktionen: 1. Status-Abfrage, ist für die Daten-Aufzeichnung 2. Daten vom RAM des 4Q zum PC 3. Daten vom PC zum RAM (+ EEPROM) des 4Q Der Datentransfer vom/zum RAM des 4Q erfolgt nacheinander in 16 Blöcke zu je 232 Byte. Insgesamt sind es also 3712 Byte. Es werden immer alle Datenblöcke übertragen.    1.) Status Abfrage Wenn die Datenaufzeichnung gestartet wurde, fordert Edit4Q im 1-Sekunden-Takt den Status an. PC zum 4Q: A-PS Antwort: a-6xByte-PS Die 6 Byte in der Antwort enthalten: Programm-Nr vom Programmschalter 1...8 Betriebsart Aus, Linear, Profil, Akku, Extern gemessene Spannung 16bitsign, Auflösung 0,01V gemessenen Strom 16bitsign, Auflösung 1mA 2.) Datentransfer vom 4Q zum PC PC zum 4Q: C-Blocknummer-PS Antwort: c-Blocknummer-232xByte-PS Die Blocknummer ist ein Byte, b0...b3. Die Blocknummer leitet die Daten zur richtigen Stelle. Dieser Datentransfer muss 16 mal hintereinander erfolgen. Jedes mal erwartet Edit4Q eine Antwort (Daten) vom 4Q. 3.) Datentransfer vom PC zum 4Q PC zum 4Q: D-Blocknummer-232xByte-PS Antwort: d-Blocknummer-PS Die Blocknummer ist ein Byte, b0...b3, und falls es gewünscht wurde, zusätzlich die Daten in den EEPROM des 4Q zu laden, setzt Edit4Q das  b7 in diesen Byte auf 1. Nach jeder fehlerfreien Übertragung muss der PC eine Antwort (Quittung) zum 4Q senden. Der Datentransfer vom PC zum 4Q überschreibt dessen RAM. Deshalb muss der 4Q alle Aktionen beenden und erst wieder zulassen wenn die Übertragung aller 16 Blöcke komplett beendet ist.

Welche Programmiersprache?

Die Erweiterung der Firmware im 4Q für die Schnittstelle war kein Problem und funktioniert (trotz Assembler) auf Anhieb. Deutlich schwieriger war für mich die Entwicklung der Software Edit4Q für den PC. Ich bin kein “Programmier-Freak”! Die letzte etwas  größere PC-Software hatte ich vor etwa 10 Jahre gemacht. Für meine Heizung. Mit der Programmiersprache XProfan. Eigentlich wollte ich auf Purebasic umsteigen und hatte es vor 4 Jahren gekauft. Habe damit bis jetzt nur einige kleine Sachen gemacht. Irgendwie bin ich mit Purebasic nicht zufrieden. Zu viel des Guten, weniger wäre mehr gewesen. Also mache ich als “Anfänger” mich auf die Suche nach einer einfacheren Programmiersprache. Mehrere Wochen habe ich einige Programmiersprachen mit IDEs  herunter geladen, ausprobiert und wieder verworfen. Die grundsätzlichen Sprachelement (Kontrollstrukturen, Variablen u.s.w) sind bei allen Sprachen im Prinzip gleich. Das kann man schnell neu erlernen. Das Problem sind die “Ränder”. Was man auf den Monitor sieht, Dialoge, Schnittstellen u.s.w. Dazu benötigt man meist externe Bibliotheken. Die sind selten gut beschrieben, man sucht sich einen Wolf bis alles zusammen ist. Dann bin ich wieder zu XProfan zurück gegangen. Das ist von allen nach meiner Ansicht die einfachere Sprache, allerdings nur wenn man sich auf die einfache Grundstruktur beschränkt. XProfan benötigt keine externen Bibliotheken, es ist alles dabei. In XProfan kann man  im Interpreter-Modus entwickeln und wenn alles läuft das ganze als EXE ausgeben. Ein Interpreter ist für Anfänger eine große Hilfe, man kann recht einfach Befehle vorher ausprobieren.  

Die Software “Edit4Q”

Die Daten werden über die Serielle Schnittstelle im Binärformat übertragen wie sie im RAM des 4Q stehen. In Edit4Q werden die Daten ins Textformat konvertiert. Die weitere Verarbeitung erfolgt dann hier nur  noch im Textformat. Nach starten von Edit4Q erscheint ein senkrechtes Auswahlfenster am linken Rand. Ursprünglich hatte ich hier nur ein einfaches Menü am oberen Rand. Das sah mir etwas zu einfach aus, dann habe ich das etwas bunter gemacht. Die Buttons benötigen 10 bmp-Dateien im selben Verzeichnis. Wenn die fehlen, sind die Buttons leer. Darum habe ich daneben einen Text gesetzt sonst bleiben deren Funktionen unbekannt. Die bmp-Bildchen habe ich mit IcoFX gezeichnet. Die 3 blauen Buttons veranlassen den Datentransfer zu den Editoren für den Profil- und Akku- Modus. Edit4Q ermittelt welche COMx vorhanden sind und zeigt diese als Radiobuttons an. Das funktioniert für COM1 bis COM9. Dann muss man sich eine auswählen und der Transfer beginnt sofort.  Wenn keine Verbindung zustande kommt, (”Timout kein Signal”) wird das solange versucht bis eine Verbindung entsteht oder der Bediener Abbricht. Sobald eine Verbindung steht, werden alle 16 Blöcke nacheinander übertragen. Das funktioniert perfekt. Im rechten Bild hatte ich den 4Q erst eingeschaltet nachdem Edit4Q “Timout” angezeigt. Weil bei der Übertragung vom PC zum 4Q dessen RAM überschrieben wird, beendet der 4Q solange alle Aktionen und schaltet das Gerät aus. Das dauert lange wenn die Daten zusätzlich ins EEPROM kommen. Erst wenn danach im LCD das normale Bild erscheint, ist der 4Q wieder betriebsbereit. Der Editor für den Akku-Mod: Der grüne Button “Akku Editor” öffnet das Fenster zum Editieren der 8 Programme mit je 8 Knoten. Im oberen Textfenster kann ein längerer Text eingegeben werden. Der erscheint in gekürzter Form neben den Radiobuttons zur Auswahl der Programme. Dieser Text wird auf Festplatte gesichert, erscheint aber nur hier und nicht im 4Q. Auf den LCD des 4Q ist für einen solchen Text kein Platz und deshalb auch nicht vorgesehen. Die Daten werden durch anklicken einer Zeile in der Liste in den Editorteil links daneben geholt. Dort können sie verändert werden. Nach “OK” oder “Next” gehen die Daten wieder zurück in die Liste. Dabei erfolgt eine Überprüfung auf Zulässigkeit und gegebenenfalls wird dabei auf zulässige Werte gekürzt. Verlassen wird dies Fenster mit Button “Ende” oder das Fensterkreuz. Der Editor für den Profil-Mod: Der gelbe Button “Profil Editor” öffnet das Fenster zum Editieren der 8 Profile (Programme) mit je 48 Knoten. Im oberen Textfenster kann ein längerer Text eingegeben werden. Der erscheint in gekürzter Form neben den Radiobuttons zur Auswahl der Programme. Dieser Text wird auf Festplatte gesichert, erscheint aber nur hier und nicht im 4Q. Auf den LCD des 4Q ist für einen solchen Text kein Platz und deshalb auch nicht vorgesehen. Die Daten werden durch anklicken einer Zeile in der Liste in den Editorteil links daneben geholt. Dort können sie verändert werden. Nach “OK” oder “Next” gehen die Daten wieder zurück in die Liste. Dabei erfolgt eine Überprüfung auf Zulässigkeit und gegebenenfalls wird dabei auf zulässige Werte gekürzt. Zur besseren Übersicht sind die 48 Knoten in der Grafik dargestellt. Das ist kein Zeit-Diagramm sondern zeigt nur Höhe der Werte für Strom oder Spannung für alle 48 Knoten an. Jeder Knoten ist mit ein kleines Quadrat in der Grafik. Die Kennzeichnung erfolgt durch die Farbe: schwarz = Spannung blau = Strom rot = Ende des Profils grün = Periode, also permanente Wiederholung Im linken Bild ist ein Strom-Profil mit +0,2A und dann -0,03A eingetragen. Damit wollte ich testen ob man damit eine Batterie wiederbeleben kann. Rechts ist ein Spannungs-Profil mit einen ständigen Dreieck von +40V nach -40V eingetragen. Verlassen wird dies Fenster mit Button “Ende” oder das Fensterkreuz. Das Daten-Aufzeichnungs-Fenster: Der rote Button “U/I-Record” öffnet das Fenster für diese Funktion. Die Aufzeichnung funktioniert unabhängig von den anderen Daten. Nach öffnen der seriellen Schnittstelle fordert Edit4Q im 1-Sekunden-Takt den Status vom 4Q. Die Daten können in der Grafik angezeigt und im CSV-Format auf die Festplatte gesichert werden. Die Grafik oben zeigt das Ende einer Aufladung eines 12V-Akkus mit konstanter Spannung. Die Bedienelemente sind in bezeichneten Gruppen (Rahmen) geordnet. Von rechts oben angefangen: Die Gruppe “4Q-Ausgang” zeigt die gemessene Spannung, den Strom und den gerade aktiven Modus an sobald die RS232 aktiviert wurde. Diese Daten werden im 1-Sekunden-Takt aufgefrischt. Links daneben ist die Gruppe “Meldungen”. Hier werden die gerade ablaufenden Zustände angezeigt wie zum Beispiel: Schnittstelle OK, gestartet, gestoppt und die gerade von der Festplatte gelesene Anzahl Datensätze, u.s.w In der Gruppe “Timout” kann die maximale Aufzeichnungsdauer eingetragen werden. Direkt darunter wird die Zeit in Sekunden umgerechnet angezeigt. Nach Start der Aufzeichnung werden dort die Sekunden sichtbar herunter gezählt. In der Gruppe “Taktung” wird festgelegt mit welchen Takt Edit4Q einen neuen Datensatz eintragen soll. Unabhängig davon holt Edit4Q den Status im 1-Sekunden-Takt vom 4Q. In der Gruppe “Aufzeichnung” kann die Aufzeichnung gestartet und gestoppt  werden. Nach Start kann in ein Dialog ausgewählt werden ob an die bereits vorhandenen Daten angehängt oder von Vorn beginnen soll. Ein Start ist nur sinnvoll wenn vorher die RS232 geöffnet wurde. In der Gruppe “RS232” wird die serielle Schnittstelle aktiviert oder beendet. Edit4Q testet welche COM vorhanden ist und zeigt diese als Radiobutton an. Das funktioniert für Schnittstellen von COM1 bis COM9. In der Gruppe “Festplatte” können die Daten im CSV-Format auf Festplatte gesichert werden. Man kann auch alte Daten laden und sich in der Grafik anzeigen lassen. Es ist möglich an diese geladenen Daten neu aufgezeichnete Daten anzuhängen. Edit4Q verarbeitet nur bis zu 8000 Datensätze pro Datei. Diese Anzahl kann nicht überschritten werden, der letzte Datensatz wird dann überschrieben. In der Gruppe “Grafik” ist im oberen Teil der Inhalt eines Datensatzes lesbar: die Aufzeichnungszeit ab Beginn in Sekunden die gemessene Spannung der gemessene Strom die Ladung in mAh, wird im 1-Sekunden-Takt aufaddiert, mit Vorzeichen-Berücksichtigung die Energie in mWh, wird im 1-Sekunden-Takt berechnet und aufaddiert, mit Vorzeichen-Berücksichtigung In der laufenden Aufzeichnung wird der letzte eingetragene Datensatz angezeigt. Nach gestoppter Aufzeichnung wird ein durch die Maus auf der X-Achse ausgewählter Datensatz angezeigt. Die Grafik kann mit den beiden Pfeilbuttons darunter bei jeden anklicken um eine halbe Seite verschoben werden. Dadurch kann auch der 8000.te Datensatz in die Grafik geholt werden. Die Y-Skala ist jederzeit in 4 Bereichen umschaltbar. Die Werte werden an den Rändern oben und unten begrenzt, damit nicht über die Grafik hinaus gezeichnet wird. Die X-Achse ist auf den Monitor 800 Pixel lang. Auswählbar ist die Anzahl der Messungen einer Seitenbreite. Bei X=800 sind es also 800 Datensätze. Die Teilung an der X-Achse entspricht immer 10 Messungen. Will man zum Beispiel, dass 1 Teilung einer Minute entspricht, muss die “Taktung” auf 6 Sekunden eingestellt werden.          

Datei-Formate

Die von Edit4Q verwalteten Dateien sind im lesbaren Text-Format. Der Editor für den Akku verwendet die Datei-Endung “a4q”, für das Profil die Endung “p4q”. Die Dateien vom Akku- und Profil- Editor müssen in der ersten Zeile den Text “Akkudaten” bzw “Profildaten” enthalten. Ans Ende der Datei sind die Texte angehängt, die man im Editor eingetragen hatte. Für jedes der Programme eine (evtl lange) Zeile. Der Zeilenrücklauf aus den ursprünglichen Beschreibungstext wurde durch | ersetzt. Die Dateien von der Aufzeichnung haben in der ersten Zeile den Text “Edit4Q”, den Dateiname mit kompletten Pfad, das Datum und die Uhrzeit. Alles in einer Zeile, ist damit recht lang. Als Dateiendung wird “csv” verwendet. In der zweiten Zeile ist der Tabellenkopf, mit Komma unterteilt. Daran kommen bis maximal 8000 Datensätze. Die Daten in den Zeilen mit Komma getrennt. Diese Datei kann man in eine Tabellenkalkulation zwecks Weiterverarbeitung laden. Falls die erste Zeile stört, muss man sie mit irgendeinen Text-Editor löschen.

Zum Schluss

Die Software Edit4Q läuft auf allen Betriebssystemen (XP, Win7, Win10) und meinen 4 PCs + 1 Laptop einwandfrei. Die PCs haben alle einen RS232-Anschluss. Damit funktioniert die RS232 ohne weiteres Zutun sofort problemlos. Für neuere PCs muss man USB-Seriell-Wandler verwenden weil die keine RS232 mehr haben. Das habe ich an einen PC verwendet, weil seine COM1 schon verwendet wird. Von meinen 3 Wandlern funktionierte nur ein einziger. Nach Installation der Treiber war damit COM13 aktiv. Ich benötige das aber auf COM2. Kann man eigentlich im Gerätemanager auf einen beliebigen COM umstellen. Geht aber nicht weil Win10 behauptet, das COM2 bis COM10 belegt sind. Mit einer Software (Comportman) kann man die Ports befreien, danach ging es mit COM2. Der einzige funktionierende Konverter hatte aber öfter fehlerhafte Übertragungen. Der Grund: der gibt keinen RS232-Pegel aus, sondern einfach nur TTL-Pegel. Der negative Pegel fehlt. Edit4Q läuft übrigens auch unter Linux-Mint + Wine einwandfrei. Falls es einem gelingt unter Wine die serielle Schnittstelle zu aktivieren. Das Projekt Edit4Q ist auf 8 Dateien verteilt mit insgesamt etwa 2800 Programmzeilen. Ich besitze die Version XProfanX2. Als IDE verwende ich LemonEd. XProfan gibt es auch als Freeware, für dieses Projekt auch geeignet, habe ich getestet. Downloads Firmware, Hex-Datei:  CP9060V2.ZIP (15kB) Edit4Q, Exe und BMPs: Edit4Q.ZIP (584kB) Mit der Software Edit4Q kann eigentlich niemand etwas anfangen, weil ja das 4Q-Gerät dazu gehört. Trotzdem veröffentliche ich den kompletten Source-Text falls sich jemand für den Aufbau einer solchen Software interessiert. Mit der Groß/Klein-Schreibung bin ich etwas uneinheitlich umgegangen. Zum Glück ist das in XProfan egal!   dto, mit allen Source-Dateien: Edit4QSource.ZIP (607kB)  
4Q-Netzgerät Seite 4 4Q-Netzgerät Seite 4