Schalten Magnetventile SSR-Platine Multi-MCU: Unterschied zwischen den Versionen

Aus Technische Beeinflussbarkeit der Geschmacksache Kaffee
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(4 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
= Melina Scherf, 14.06.2023 =
= Noureddine Ait Ouhamou, 16.08.2023 =
Um die Magnetventilschaltung wie im [[Adaption an Multi-MCU - Neuprogrammierung MATLAB® GUI|Programmcode in der MATLAB® GUI]] beschrieben zu ermöglichen, muss der MicroPythoncode der SSR ergänzt werden. Dazu wurde zunächst eine Matrix mit den Ventilnamen und den zugehörigen Pin-Nummern definiert:
Ventilbelegung:
  ventile = [["Y01", 16],
switch1 = Y01, switch2 = Y02, switch4 = Y04, switch6 = Y06, switch7 = Y07, switch8 = Y08,
              ["Y03", 14],
switch9 = Y09, switch11 = Y03, switch13 = Y13.
              ["Y04", 15],
              ["Y05", 13],
              ["Y06", 12],
              ["Y07", 10],
              ["Y08", 11],
              ["Y09", 7],
              ["Y13", 5]]
Nun können die Ventile im automatischen Modus geschaltet werden, dabei werden alle übergebenen Ventile auf 0 gesetzt und alle nicht übergebenen auf 1:
  def ventile_schalten_automatisch(*args):
      args = list(args)
   
      ventile_namen = [row[0] for row in ventile]
      ventile_pins = [row[1] for row in ventile]
   
      anzuschaltende_ventile = []
      for index, string in enumerate(ventile_namen):
          if string in args:
              anzuschaltende_ventile.append(index)
   
      for index in anzuschaltende_ventile:
          ventil_off(ventile_pins[index]) #tauschen?
   
      auszuschaltende_ventile = [x for x in range(9) if x not in anzuschaltende_ventile]
   
      for index in auszuschaltende_ventile:
          ventil_on(ventile_pins[index])


Der Funktion kann eine unbekannte Anzahl an Eingaben übergeben werden, die in der Liste args gespeichert werden. Anschließend wird abgefragt, bei welchen Indizes die in args enthaltenen Ventilnamen in der zuvor definierten Ventilmatrix auftauchen. Die zweite Spalte aller dieser Indizes (mit den zuvor definierten Pin-Nummern) wird nacheinander der Funktion ventil_off() übergeben, sodass diese auf 0 geschaltet werden. Von allen dort nicht enthaltenen Indizes werden die Pin-Nummern an die ventil_on()-Funktion übergeben. <br>
= Armin Rohnen, 30.07.2023 =
Für den manuellen Modus wurde der Code bis zur Übergabe an die Funktionen übernommen:
Das Schalten der Magnetventile wird auf der SSR-Platine durch Setzen einzelner PINs realisiert.  
  def ventile_schalten_manuell(*args):
 
      args = list(args)
Zur Initialisierung der zugehörigen PINs befindet sich auf der MCU das MicroPython-Programm ventile.py. In der SSR-Initialisierungsroutine der MATLAB®-GUI werden durch die Anweisung "import ventile as Yxx" und "ventile = Yxx.init_ventile()" die Magnetventile bzw. eigentlich die zugehörigen PINs initialisiert und auf 0 gesetzt. Als Rückgabewert von Yxx.init_ventile() ist ein Vektor mit den 14 Schalter (switch1 bis swicth14) definiert. So kann beispielsweise über die Anweisung "ventile[0].value(1)" der dem Schalte 1 zugeordnete PIN auf 1 gesetzt werden.
   
 
      ventile_namen = [row[0] for row in ventile]
Es werden immer alle 14 Schalter initialisiert.
      ventile_pins = [row[1] for row in ventile]
 
   
= Melina Scherf, 14.06.2023, Magnetventilschaltung Python =
      zu_schaltende_ventile = []
Um die Magnetventilschaltung wie im [[Adaption an Multi-MCU - Neuprogrammierung MATLAB® GUI|Programmcode in der MATLAB® GUI]] beschrieben zu ermöglichen, muss der MicroPythoncode der SSR ergänzt werden. Dazu wird zunächst eine Matrix mit den Ventilnamen und den zugehörigen Pin-Nummern definiert, der während der Initialisierung aufgerufen wird. <br>
      for index, string in enumerate(ventile_namen):
Die Schaltung der Ventile im automatischen Modus erfolgt durch Überprüfung, welche namentlich übergebenen Ventile auftauchen und welche Pin-belegung diese besitzen. Diese Ventile werden geöffnet. Nach der Ermittlung aller nicht auftauchenden Ventile (inklusive Pin-Belegung) werden diese geschlossen. <br>
          if string in args:
Die Schaltung im manuellen Modus erfolgt genauso, es werden jedoch lediglich die auftauchenden Ventile detektiert und an eine weitere Funktion übergeben. Diese negiert deren Werte.
              zu_schaltende_ventile.append(index)
           
      for index in zu_schaltende_ventile:
          ventile_schalten_manuell_2(ventile_pins[index]) 
Hier wird nun eine weitere Funktion aufgerufen:
  def ventile_schalten_manuell_2(pin):
        aktueller_zustand = pin.value()
        neuer_zustand = not aktueller_zustand
        pin.value(neuer_zustand)
Der aktuelle Zustand des übergebenen Pins wird invertiert.


= Noureddine Ait Ouhamou, 16.05.2023 =
= Noureddine Ait Ouhamou, 16.05.2023 =

Aktuelle Version vom 16. August 2023, 10:15 Uhr

Noureddine Ait Ouhamou, 16.08.2023

Ventilbelegung:

switch1 = Y01, switch2 = Y02, switch4 = Y04, switch6 = Y06, switch7 = Y07, switch8 = Y08,
switch9 = Y09, switch11 = Y03, switch13 = Y13.

Armin Rohnen, 30.07.2023

Das Schalten der Magnetventile wird auf der SSR-Platine durch Setzen einzelner PINs realisiert.

Zur Initialisierung der zugehörigen PINs befindet sich auf der MCU das MicroPython-Programm ventile.py. In der SSR-Initialisierungsroutine der MATLAB®-GUI werden durch die Anweisung "import ventile as Yxx" und "ventile = Yxx.init_ventile()" die Magnetventile bzw. eigentlich die zugehörigen PINs initialisiert und auf 0 gesetzt. Als Rückgabewert von Yxx.init_ventile() ist ein Vektor mit den 14 Schalter (switch1 bis swicth14) definiert. So kann beispielsweise über die Anweisung "ventile[0].value(1)" der dem Schalte 1 zugeordnete PIN auf 1 gesetzt werden.

Es werden immer alle 14 Schalter initialisiert.

Melina Scherf, 14.06.2023, Magnetventilschaltung Python

Um die Magnetventilschaltung wie im Programmcode in der MATLAB® GUI beschrieben zu ermöglichen, muss der MicroPythoncode der SSR ergänzt werden. Dazu wird zunächst eine Matrix mit den Ventilnamen und den zugehörigen Pin-Nummern definiert, der während der Initialisierung aufgerufen wird.
Die Schaltung der Ventile im automatischen Modus erfolgt durch Überprüfung, welche namentlich übergebenen Ventile auftauchen und welche Pin-belegung diese besitzen. Diese Ventile werden geöffnet. Nach der Ermittlung aller nicht auftauchenden Ventile (inklusive Pin-Belegung) werden diese geschlossen.
Die Schaltung im manuellen Modus erfolgt genauso, es werden jedoch lediglich die auftauchenden Ventile detektiert und an eine weitere Funktion übergeben. Diese negiert deren Werte.

Noureddine Ait Ouhamou, 16.05.2023

Das Skript zum schalten Magnetventile wurde erstellt. Dabei werden die benötigten Pins erst initialisiert und anschließend mit zwei Befehlen können die zugehörigen Schalter an oder ausgeschalten werden.

Armin Rohnen, 16.02.2023

Auf Anweisung vom Basisboard oder der MATLAB®-GUI werden die Magnetventile über die SSRs geschaltet. Einzelne SSRs können auch via PWM für andere Schalt- und Dimmvorgänge verwendet werden.

Informationen für die Programmierung sind unter Grundfunktionen der MCU und in [40] zu finden.