Netzteil Ansteuerung mit Rasp Pi

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Hayırdır
User
Beiträge: 4
Registriert: Montag 8. April 2024, 12:16

Moin liebe Community,

ich bin ziemlich neu wenns ums Programmieren geht. Seid einigen Tagen beschäftige ich mich mit der Ansteuerung eines Netzteils, wo ich im Terminal dazu in der Lage sein müsste die Spannung anzupassen.
Die Ip-Adresse habe ich mit "..." getauscht, bitte nicht wundern.
Ich bin im selbem Netzwerk wie das Netzteil und durch ein Raspberry Pi, bekommt es ebenfalls durchgängig ein keep alive signal, kann aber über den Pi nicht das Netzteil ansteuern es müsse wohl auch so über die Modis funktionieren.

Zum Einsatz kam: https://www.ccontrols.ch/ch_de/it6006c-500-41.html

Ich bedanke mich schonmal im Voraus und bei Rückfragen, um das Problem zu lösen wäre ich sehr dankbar.
Viele Grüße

Code: Alles auswählen

import pyvisa

ip_address = "..."

class IT6006C50040:
    ip_address = "..."
    def __init__(self, ip_address):
        self.ip_address = ip_address
        self.resource_manager = pyvisa.ResourceManager()
        self.instrument = self.resource_manager.open_resource(f'TCPIP::{ip_address}::INSTR')
        print(f"Instrument geöffnet: {self.instrument.query('*IDN?')}")

    def set_voltage(self, voltage):
        print(f"Setze Spannung auf {voltage} Volt.")
        self.instrument.write(f'VOLT {voltage}')
        print("Spannung geändert.")

if __name__ == "__main__":
    ip_address = "..."
    power_supply = IT6006C50040(ip_address)

    while True:
        try:
            voltage = float(input("Geben Sie die Spannung ein (in Volt): "))
            power_supply.set_voltage(voltage)
        except ValueError:
            print("Ungültige Eingabe. Bitte geben Sie eine gültige Zahl ein.")
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Die Deklaration der IP-Adresse auf Klassenebene ist Quatsch. Und das anonymisieren aller Wahrscheinlichkeit auch, weil die doch in deinem lokalen Netzwerk steckt, und damit ist das auch keine sicherheitsrelevante Information darstellt.

Dann ist dein try/except schlecht entworfen, weil du nicht nur ValueError bei einer Fehleingabe abfaengst, sondern auch einen potentiellen Fehler beim setzen der Spannung. Das sollte zB so aussehen:

Code: Alles auswählen

while True:
    try:
        voltage = float(...)
    except ValueError:
        print("Ungueltige Eingabe")
    else:
          power_supply.set_voltage(voltage)
Zu guter Letzt: mir ist unklar, was das Problem ist. Gibt es Fehlermeldungen? Passiert einfach nichts?
Hayırdır
User
Beiträge: 4
Registriert: Montag 8. April 2024, 12:16

__deets__ hat geschrieben: Montag 8. April 2024, 13:03 Zu guter Letzt: mir ist unklar, was das Problem ist. Gibt es Fehlermeldungen? Passiert einfach nichts?
Das habe ich vergessen noch mit einzufügen, es passiert nichts. Das Skript läuft und nach Eingabe einer Spannung gibt es keine Fehlermeldung. Das Terminal sagt, die Spannung wurde eingestellt, doch am Netzteil tut sich nichts. Ich probiere deinen Lösungsansatz mal aus.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Loesungsansatz ist das nicht unbedingt, ausser es kommt wirklich zu einem ValueError bei bem Aufruf von set_voltage. Es ist nur einfach nicht gut programmiert bis dato.

Gibt es irgendwo eine Uebersicht der vom System verstandenen Kommandos und den Antworten? Und kann das Ding Events?
Sirius3
User
Beiträge: 17761
Registriert: Sonntag 21. Oktober 2012, 17:20

@Hayırdır: bevor Du anfängst, Spannungen zu setzen, würde ich als ersten Schritt versuchen, die aktuelle Spannung abzufragen, oder generell Informationen von diesem Gerät abfragen, um zu sehen, ob die Kommunikation überhaupt funktioniert. Denn die Ausgabe, dass die Spannung geändert wurde, kommt von Dir; und das Gerät ist da ja offensichtlich anderer Meinung.
Hayırdır
User
Beiträge: 4
Registriert: Montag 8. April 2024, 12:16

__deets__ hat geschrieben: Montag 8. April 2024, 13:26 Gibt es irgendwo eine Uebersicht der vom System verstandenen Kommandos und den Antworten? Und kann das Ding Events?
Ja, es kann auch events und es gibt ein User programming guide aber nicht in Python.
Benutzeravatar
DeaD_EyE
User
Beiträge: 1022
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

https://www.altoo.dk/files/itech/manual ... -Guide.pdf

SYSTem:REMote
This command is used to set the instrument to the remote control mode via the
communication interface. Except the Local key on the front panel, other keys
are locked and cannot be used.


Frag erstmal Werte ab. Wenn das funktioniert, solltest du mittels SYST:REM den Gleichrichter in den Fernbetrieb umschalten. Danach sollte auch die Steuerung des Gleichrichters funktionieren.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Benutzeravatar
grubenfox
User
Beiträge: 433
Registriert: Freitag 2. Dezember 2022, 15:49

Aha, SCPI... das ist doch mal ein Begriff nach dem man schön suchen kann. VISA gehört da anscheinend auch noch zu.... ich habe da z.b. den hier gefunden:
https://goughlui.com/2021/03/28/tutoria ... th-pyvisa/

keine Ahnung ob es was hilft....
Hayırdır
User
Beiträge: 4
Registriert: Montag 8. April 2024, 12:16

Danke an alle, dieses Forum hat mich viel weitergebracht!
Antworten