Guten Tag, kleine Einleitung zum Projekt. Ich habe den Auftrag bekommen ein Netzteil ISO-TECH IPS 603 zu programmieren, was über eine RS232 Schnittstelle verfügt. Bei dem Netzgerät war ein Verbindungskabel dabei und eine Software PSP Series Power Supply. Diese erstellt 1 zu 1 eine Buttonmaske vom Netzgerät, sodass man dies über den PC einstellen kann. Alles soweit so gut denkt man sich, ABER aber...., das Netzgerät soll bei einem Dauerlauf die Spannung von 14V auf 28V sprunghaft dauerhaft umschalten. In dem Manuel stehen Codes die man benutzen kann z.B um Spannungswerte sprunghaft einzustellen. Dafür benutze ich das Hterm terminal Programm, weil es mit Hyperterminal einfach nicht lief. Das Netzgerät bekommmt die Daten, ich kann sie auslesen und die anderen Parameter durch die Codes einstellen. Jetzt hat nartürlich keiner Lust alle 30 Sekunden die Codes neu einzugeben. Deshalb muss ich wissen wie Hterm die codes nacheinander als Schleife wieder ausgegeben werden. Z.B. "Set" 14V wait 30s "Set" 28V wait 30s dann alles wieder von Anfang
@ Niclas Thon (thoni) >Dafür benutze ich das Hterm terminal Programm, weil es mit Hyperterminal >einfach nicht lief. Dann hast du was falsch eingestellt. >Deshalb muss ich wissen wie Hterm die codes nacheinander als Schleife >wieder ausgegeben werden. Geht nicht, derartige Scriptfunktion sind dort nicht drin. Man könnte aber etwas tricksen. Im Hyperterminal und anderen Programmen wie z.B. Teraterm kann man Dateien senden. Dabei kann man einstellen, welche Wartezeit nach jeder Zeile eingehalten werden soll. Stellt man die auf 1000ms, wird jede Sekunde eine Zeile gesendet. Bei Teraterm kann man max. 9999ms einstellen, also muss man 3 Dummybefehle senden, um auf 30s Zeitraster zu kommen. >Z.B. >"Set" 14V >wait 30s >"Set" 28V >wait 30s >dann alles wieder von Anfang Schleifen gehen so auch nicht, man muss die Sequenz im Texteditor immer wieder kopieren.
Hallo, erstmal vielen Dank für die schnelle Antwort! Klingt zwar irgendwie jetzt bescheuert aber mit Hyperterminal hab ich keinen einzigen Befehl rausbekommen. Ich habe auch auf die Einstellungen geachtet(Boud rate, parity bit,data bit,stop bit´, data flow control) . Bei Hterm lief es im ersten Versuch sofort. Ansonsten werde ich es noch mit Teraterm ausprobieren. Aber danke für die Hilfe!
Dann klick dir doch mit VisualBasic ein Miniprogramm zusamme, was die Ausgaben macht, dauert keine halbe Stunde. Oder einen Mikrocontroller deiner Wahl, irgendein Board mit RS232 liegt doch eigentlich immer rum.
H.Joachim S. schrieb: > Dann klick dir doch mit VisualBasic ein Miniprogramm zusamme, was die > Ausgaben macht, dauert keine halbe Stunde. > Oder einen Mikrocontroller deiner Wahl, irgendein Board mit RS232 liegt > doch eigentlich immer rum. An sowas hatte ich auch schonmal gedacht... Habe es nocheinmal mit Hyperterminal ausprobiert, jetzt hat es tatsächlich funktioniert. Jetzt müsste ich nur wissen wie ich die Befehle schreiben muss sowie die Schleife, dann hätte ich es:D Danke für die Unterstützung!
Bau Dir doch einfach ein Python Script zusammen, das die Kommandos auf der Seriallen Schnittstelle ausgibt. Das ist in Python eher trivial. Und eine Schleife die ein paar Kommandos immer wieder nacheinander ausgibt, ist da auch kein Problem, ebensowenig wie Wartezeiten zwischen den Ausgaben auf der Seriellen Schnittstelle. Das ganze Ding wird in Python vermutlich nichtmal 10 Zeilen lang... Ok, hab mal was zusammengehackt, das sollte soweit tun:
1 | import serial |
2 | import time |
3 | ser = serial.Serial('COM4', 115200, timeout=0.2) |
4 | while 1: |
5 | ser.write("Set 14V\r") |
6 | time.sleep(30) |
7 | ser.write("Set 28V\r") |
8 | time.sleep(30) |
ggf. die Schleife noch um ein Abbruchkriterium erweitern sowie die Schnittstelle (hier COM4) und die Bitrate anpassen...
In HTerm im "Sequence Overview"-Fenster die passenden Befehle eingeben und speichern. Dann per re. Mousetaste die Befehle nacheinander (in der gewünschten Reihenfolge) "Insert to Inputline" in die Input Control laden. Dann den "ASend"-Butten drücken und im Dialog die Anzahl und die Wiederholrate einstellen. Blackbird
"ttermpro" hat eine Skriptsprache, mit der du deine Probleme erledigen kannst.
Hallo erstmal vielen Dank für die ganzen Rückmeldungen! Zuerst denke ich das Hterm für mein vorhaben rausfällt, weil man die Zeit zwischen den Befehlen nicht einstellen kann, soweit ich das richtig verstanden habe. Deswegen möchte ich Hyperterminal benutzen, weil es hier auf den PC's in der Firma vorhanden ist. Der Status: Im Benutzer Handbuch ist für die Spannungseinstellung der Syntax SV xx.xx<cr> angegeben. Wenn ich diesen in Hyperterminal eingebe mit einem beliebigen Wert passiert nichts. Wenn ich aber z.B nur SV 20.00 und dann auf Enter also die CR-Taste dann sendet er und das Netzgerät stellt sich um. Wenn ich darunter nun einen zweiten Befehl eingebe und wieder mit CR-Taste bestätige geht es auch. Nartürlich sollen nur 2 Befehle: SV 14.00 SV 24.00 nacheinander und dauerhaft gesendet werden "Schleife / Wiederholung" und mit einem Zeitabstand z.B 30s.Die Emulation steht auf auf Auto Erkenn. Meine Fragen: Wie kann ich das in das Hyperterminal Feld eingeben oder muss alle Anforderungen in eine Textdatei schreiben und wenn ja wie? Im voraus ein Dankeschön! Bin halt Anfänger und wollte mich in soetwas schonmal einarbeiten.
@ Niclas Thon (thoni) >Im Benutzer Handbuch ist für die Spannungseinstellung der Syntax >SV xx.xx<cr> angegeben. Wenn ich diesen in Hyperterminal eingebe mit >einem beliebigen Wert passiert nichts. Ja logisch! Es fehlt das <CR>! > Wenn ich aber z.B nur SV 20.00 >und dann auf Enter also die CR-Taste dann sendet er und das Netzgerät >stellt sich um. Ist doch perfekt. >Wie kann ich das in das Hyperterminal Feld eingeben Nein. > oder muss alle >Anforderungen in eine Textdatei schreiben Ja. >und wenn ja wie? Noch nie Text in eine Textdatei geschrieben? SV 14.00 irgendwelche Dummy-Befehle, die nix machen, z.B. Spannung rücklesen .. ... .. SV 24.00 Dann den Block X-mal kopieren. Die Sendeverzögerung pro Zeile kann man in einem der Setup-Menus einstellen, schrieb ich bereits.
In HTerm kann man auswählen, ob mit oder ohne <CR> gesendet werden soll. Zeit zwischen den Befehlsgruppen (siehe ASend-Button) kann man in 100ms-Schritten einstellen. Zeit zwischen den einzelnen Befehlen in einer Befehlsgruppe: so wie es Falk beschrieben hat. Befehle und/oder Befehlsgruppen schreibt man sich im Sequence Overview-Fenster. Blackbird PS: HTerm ist für Dein oben beschriebenes Vorhaben geeignet. Ich verwende HTerm für den gleichen Zweck, nur ist es kein Netzteil, was ich so steuere und Daten abfrage.
@ Blackbird Danke für die Erklärung. Wenn ich 2 Befehle eingebe mit Autosend 30s einstelle klappt alles wunderbar und beide werden nach der Zeit nochmal ausgefüllt. Ich brauche nur noch zwischen den Befehlen eine Pause auch nochmal von 30s, wie kann man das mit einstellen? Vllt mit der CMD Einstellung und dann einen Befehl dafür eintippen? Thoni
>> ... Zeit zwischen den einzelnen Befehlen in einer Befehlsgruppe: so wie >> es
Falk beschrieben hat.
Aber vielleicht findest Du noch eine bessere Lösung.
Blackbird
53 56 20 32 34 2E 30 30 0A wait=3000 53 56 20 31 34 2E 30 30 0A Das ist eine Zeile aus dem "Input Control"-Fenster von HTerm. Bei "Type" ist CMD ausgewählt. Im "ASend"-Fenster ist "Delay" auf 30 eingestellt. Damit werden alle 3 Sekunden die Strings für 14V- und 24V-Umschaltung gesendet. Die Strings habe ich mit HEX-Einstellung bei "Type" eingegeben, damit am Ende jedes Strings das <CR> steht. Im Anhang eine Sequence-Editor-Datei für die paar Kommandos. Wenn diese Kommandos per rechter Maustaste in das "Input Control"-Fenster kopiert werden sollen, vorher den passenden "Type" im "Input Control" auswählen; also HEX oder CMD. Blackbird
@ Blackbird Hat alles funktioniert! Diese Eingabe hatte ich ebenfalls vorher ausprobiert aber als ASCII und das hat er nicht angenommen... Mit Hex funktioniert alles wunderbar! Bei deinem Code musste ich 0D (Steht für CR) noch vor dem 0A hinzufügen. Jetzt läuft das Netzgerät. Besten Dank!
0x0D sind m.M. nach Line Feed und 0x0A Carrige Return. Aber egal, es funktioniert. Blackbird
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.