Ankündigung

Einklappen
Keine Ankündigung bisher.

Aus der Zahl 1000000111 Befehle ausführen. Die 1 führt Bef aus

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    HS/FS Aus der Zahl 1000000111 Befehle ausführen. Die 1 führt Bef aus

    Hallo zusammen
    Ich möchte aus einer Zahl jeweils Befehle ausführen lassen. Die Ziffer 1 schaltet etwa sein und die Ziffer 0 schaltet etwas aus.
    So, warum da Ganze:
    Es geht darum einem Swimmingpool die verschiedenen Funktionen;Pumpengeschwindigkeitsstufen, und Ventile Massagedüsen anzusteuern. über die Werteingabe könnte man dann die bestimmte Ansteuerung auslösen .... und dann auch in einer zeitlichen Abfolge ausführen lassen.
    Es gibt 2 Pumpen à 4 Geschwindigkeiten. (werden 2 Geschwindigkeiten gewählt , so wir die höhere eingeschaltet
    Es gibt zwei Ventile , die den Wasserkreislauf(zum Teil mit Luftbeimischung) steuern.
    Total wären das 97 Betriebsarten, wobei einige nicht wirklich möglich sind.

    Nun müsste ich aus der Eingabezahl folgendes machen können:
    -jede Ziffer der Zahl muss ich als Einzelziffer haben, somit könnte ich sogleich den entsprechenden Ausgang ein/aus schalten.

    Beispiel:
    1000000111
    letzte Stelle: 1 Ventil1 ein
    2letzte Stelle: 1 Ventil1 ein
    3letzte Stelle: 1 Pumpe 2 höchste Stufe
    4letzte Stelle: 0 Pumpe 2 (schnelle Stufe nicht gewählt)


    Schlussendlich wird das ganze aber noch viel komplexer.
    Daher möchte ich eine Programmierung aufbauen , die ich nach einem Jahr , wenn ich die Grafik der Logik anschaue auch noch verstehe , ohne erst Stunden damit zu verbringen um nur die damalige erstelle Logik zu verstehen.


    Weiter geht es dann mit:
    Auf dem Pool gibt es ein Touchepad, dass fünf Funktionen hat. Mit diesen werden dann die gespeicherten,oder neu erstellten Szenen/Betriebsarten ausgeführt. Doch Vorher kann man die Betriebsarten vorwählen:
    Sport 1, über das Touchepad ergibt das dann: Sport1 A Sport1 B Sport1 C Sport1 D Sport1 E
    Sport 2 , ber das Touchepad ergibt das dann: Sport2 A Sport2 B Sport2 C Sport2 D Sport2 E
    Wellnes 1, über das Touchepad ergibt das dann:.......
    Wellnes 2, über das Touchepad ergibt das dann:.......


    Wäre Super wenn mir jemand einen Tip für diesen ersten Part hätte.

    Gruss Aendu
    Angehängte Dateien
    Gruss Aendu
    HS3/HS2/Pronto/.......

    #2
    Das kannst du mit GLE -> Wandler -> 1Byte umw 8bit
    Nils

    aktuelle Bausteine:
    BusAufsicht - ServiceCheck - Pushover - HS-Insight

    Kommentar


      #3
      Eingabe besteht nur aus0 und 1 (oder alles >0 schaltet ein)

      Hallo Nils
      danke für deine Antwort. Bei dieser Variante müsste man die Zahl entsprechend meiner Tabelle eingeben. z.B. 4, hierbei würde ich folgende Antwort erhalten, 100 und bei der Eingabe 5 würde ich die Antwort 101 erhalten. Somit würde bei der Eingabe 4 und 5 die 3.letzte Stelle (hier 1.Stelle) den Befehl einschalten ergeben.
      Leider ist das nicht das Gesuchte.
      Trotzdem Danke für deinen Tip.


      Grundsätzlich müsste ich einfach nur jede Ziffer einer Zahl einzeln auslesen können.

      Gruss Aendu
      Gruss Aendu
      HS3/HS2/Pronto/.......

      Kommentar


        #4
        Bau dir einfach selber einen Baustein


        Code:
         
        5012|0|"EC[1]"|"int(EN[1][0])"|""|1|0|0|0
        5012|0|"EC[1]"|"int(EN[1][1])"|""|2|0|0|0
        5012|0|"EC[1]"|"int(EN[1][2])"|""|3|0|0|0
        5012|0|"EC[1]"|"int(EN[1][3])"|""|4|0|0|0
        5012|0|"EC[1]"|"int(EN[1][4])"|""|5|0|0|0
        5012|0|"EC[1]"|"int(EN[1][5])"|""|6|0|0|0
        5012|0|"EC[1]"|"int(EN[1][6])"|""|7|0|0|0
        5012|0|"EC[1]"|"int(EN[1][7])"|""|8|0|0|0
        Nils

        aktuelle Bausteine:
        BusAufsicht - ServiceCheck - Pushover - HS-Insight

        Kommentar


          #5
          ab an die Entwicklung......

          Hoi Nils
          Danke für den Tip, werde mich also am Wochenende wiedereinmal mit dem Erstellen von Logikbausteinen befassen.
          Habe ja auch eigene Logikbausteinnummern zugewiesen bekommen.
          Gruss Aendu
          Gruss Aendu
          HS3/HS2/Pronto/.......

          Kommentar


            #6
            Hallo Nils
            klappt leider nicht,
            was mache ich wohl falsch?

            5000|"Aendu\Ziffern_einzel_auslesen ver1.0"|0|1|"E1"|3|"A1"|"A2"|"A3"
            5001|1|3|0|0|1
            5002|1|1|0
            5004|1|0|0|1|0
            5004|2|0|0|1|0
            5004|3|0|0|1|0
            5012|0|"EC[1]"|"int(EN[1][0])"|""|1|0|0|0
            5012|0|"EC[1]"|"int(EN[1][1])"|""|2|0|0|0
            5012|0|"EC[1]"|"int(EN[1][2])"|""|3|0|0|0

            Gruss Aendu
            Gruss Aendu
            HS3/HS2/Pronto/.......

            Kommentar


              #7
              5002|1|""|1
              Nils

              aktuelle Bausteine:
              BusAufsicht - ServiceCheck - Pushover - HS-Insight

              Kommentar


                #8
                Oh Denkfehler
                du willst natürlich eine Zahl wandeln

                dann musst du zuerst das 1byte in 8bit wandeln und die zu einem String
                Nils

                aktuelle Bausteine:
                BusAufsicht - ServiceCheck - Pushover - HS-Insight

                Kommentar


                  #9
                  OK nochmal drüber nachgedacht

                  eingang muss 16bit iko sein
                  10 Bits wandeln

                  Code:
                   
                  5001|1|1|0|1|0 
                  5002|0|0 # 16Bit
                   
                  5003|""|0  # Hilfstring
                   
                  5004|1|0|1|1|0
                  5004|2|0|1|1|0
                  5004|3|0|1|1|0
                  .......
                   
                   
                  ### Bitstring 10 Bits von EN[1] als string '0010010101' auf SN[1]
                  5012|"EC[1]"|""str(int((EN[1] & 512)!=0))+str(int((EN[1] & 256)!=0))+str(int((EN[1] & 128)!=0))+str(int((EN[1] & 64)!=0))+str(int((EN[1] & 32)!=0))+str(int((EN[1] & 16)!=0))+str(int((EN[1] & 8)!=0))+str(int((EN[1] & 4)!=0))+str(int((EN[1] & 2)!=0))+str(int((EN[1] & 1)!=0))"|""|0|0|1|0
                   
                  ## Ausgänge mit Zeichen X vom String SN[1]
                  5012|0|"SC[1]"|"int(SN[1][0])"|""|1|0|0|0
                  5012|0|"SC[1]"|"int(SN[1][1])"|""|2|0|0|0
                  5012|0|"SC[1]"|"int(SN[1][2])"|""|3|0|0|0
                  Nils

                  aktuelle Bausteine:
                  BusAufsicht - ServiceCheck - Pushover - HS-Insight

                  Kommentar


                    #10
                    Ich glaub ich bin doch wieder bei dem von vorher

                    kannst natürlich auch gleich

                    5012|0|"EC[1]"|"int((EN[1] & 512)!=0)"|""|1|0|0|0

                    aber das was du willst is ja auch nicht der Bitwert sondern der Zahlwert

                    also

                    einfach
                    5012|0|"EC[1]""|"int(str(EN[1])[0])"|""|1|0|0|0

                    naja vielleicht kann das andere ja auch jemand brauchen
                    Nils

                    aktuelle Bausteine:
                    BusAufsicht - ServiceCheck - Pushover - HS-Insight

                    Kommentar


                      #11
                      Zahl nach Text ,spliten, zurückwandeln

                      Hallo Nils
                      leider sind alle diese Versuche gescheitert.
                      Nun habe ich einfach die Zahl in Text umgewandelt und in einem neu erstellten Logikblock, ähnlich Text in Zeilen ,aufgesplitet und wieder in eine Zahl zurückgewandelt. klappt

                      recht herzlichen Dank für deinen Einsatz

                      Gruss Aendu
                      Angehängte Dateien
                      Gruss Aendu
                      HS3/HS2/Pronto/.......

                      Kommentar

                      Lädt...
                      X