Ankündigung

Einklappen
Keine Ankündigung bisher.

Ventilregelung Problem mit OC[1]

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

    Ventilregelung Problem mit OC[1]

    Hallo

    mir steht einer auf dem Schlauch!

    Ich habe einen Baustein gemacht, welcher abhängig von Schwimmerschalter ein Regelventil um einen Faktor EN[3] öffnen oder schliessen soll.

    Logik funktioniert soweit.

    Nun soll nach einer Regelung diese für eine Sperrzeit von EN[6] stillhalten und keine Regelung mehr durchführen.

    Dies bekomme ich irgendwie nicht hin!

    Es wird ein neuer Reglerw2ert ausgegeben, danach kommt über EN[2] eine Rückmeldung des Reglerwertes und sofort erfolgt die nächste Berechnung!


    Für jeden Tipp zur Ergreifung des Bugs bin ich dankbar

    Code:
    5000|"4M\Ventilregelung-a"|0|6|"Aktiviert"|"Status Regler in%"|"Regelung in %"|"Regelung 0=+ 1=-"|"Auslösung bin"|"Sperrzeit in sec"|4|"Reglerwert in %"|"Aktiv"|"auf/ab bei 0/100%"|"in Sperrzeit"
    
    
    # Definition des Bausteins
    #5001|Eingänge|Ausgänge|Zeitspeicher|Speicher|Berechnung bei Init 0=nein
    5001|6|4|1|3|1
    
    # EN[x]  -Eingang
    #5002|Eingang|Init.Wert|Datenformat 0=num|1=Text
    5002|1|0|0							#Aktiv
    5002|2|0|0        			#Status Regler in %
    5002|3|0|0							#Schrittweiter Regelung  %
    5002|4|0|0							#Polarität Schritt
    5002|5|0|0							#Auslösung bin  - kommt hier ein Wert erfolgt die Regelung und wird für E5 Zeit gesperrt
    5002|6|0|0							#Sperrzeit nach Auslösung
    
    
    
    
    #### 5003  Def Speichervariable ########################################################################################################
    # 1 = Index 1....n
    # 2 = Init-Wert
    # 3 = remanent=1
    5003|1|1|0    #Faktor
    5003|2|0|0    #Errechneter Stellwert
    5003|3|0|0    #Berechnungssperre
    
    # Ausgänge
    #Index|Init-Wert|Runden auf Bin|SBC 1=Berechnet 2=nur Ausgabe bei Änderung|Format 0=num 1=Text
    5004|1|0|0|2|0  				# neuer Reglerwert
    5004|2|0|1|2|0					# Baustein aktiv
    5004|3|0|1|2|0          # auf/ab Kommando wird nur bei 0 und 100% gesendet
    5004|4|0|1|1|0          # in Sperrzeit .t.
    
    #################################################
    
    
    #Faktor in Speicher
    5012|0|"(EI or EC[4]) and EN[4]"|"-1"|""|0|0|1|0
    5012|0|"(EI or EC[4]) and EN[4]==0"|"1"|""|0|0|1|0
    
    #Berechnung
    5012|0|""|"(EN[1]==0 or EN[5]==0)==0"|""|2|0|0|0   #Aktiv
    
    #so lange der Zeitspeicher läuft darf keine weitere Verarbeitung erfolgen
    5012|1|"OC[1]==0"|"OC[1]==0"|""|4|0|0|0
    
    5012|0|"EN[1] and EN[5]"|"EN[2]+(SN[1]*EN[3])"|""|0|0|2|0						#neuer Reglerwert
    
    #Stellwert prüfen
    5012|0|"SC[2] and (SN[2]>= 100)"|"0"|"EN[6]"|3|1|0|0
    5012|0|"SC[2] and (SN[2]<=0)"|"1"|"EN[6]"|3|1|0|0
    5012|0|"SC[2] and SN[2]>0 and SN[2]<100"|"SN[2]"|"EN[6]"|1|1|0|0
    Gruß Hartwig

    #2
    Ich mache das immer anders:

    Die Zeile, die den Wert ausgibt, bekommt in der Bedingung AND ON[x], gleichzeitig wird die Zeit neu gesetzt.
    Gruß Matthias
    EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
    - PN nur für PERSÖNLICHES!

    Kommentar


      #3
      Hallo Matthias,

      mir erschließt sich die Zeitsteuerung leider nicht! Vielleicht kannst Du da nochmals ein wenig Aufklärungsarbeit leisten!

      Ich habe dies nun wie folgt umgebaut.

      Ergebnis: Ein Reglerwert wird nun überhaupt nicht mehr ausgegeben.

      Auch verstehe ich die Abfrage ON[1] nicht wirklich. In der Dacom Anleitung steht
      bei ON "Enthält den in den Zeitspeicher geschriebenen Wert, sobald dieser abgelaufen ist.

      Insofern würde ich hier eine numerischen Wert vermuten.

      Code:
      #Faktor in Speicher
      5012|0|"(EI or EC[4]) and EN[4]"|"-1"|""|0|0|1|0
      5012|0|"(EI or EC[4]) and EN[4]==0"|"1"|""|0|0|1|0
      
      #Berechnung
      5012|0|""|"(EN[1]==0 or EN[5]==0)==0"|""|2|0|0|0   #Aktiv
      
      
      5012|0|"EN[1] and EN[5]"|"EN[2]+(SN[1]*EN[3])"|""|0|0|2|0						#neuer Reglerwert
      
      #Stellwert prüfen
      5012|0|"SC[2] and (SN[2]>= 100) and ON[1]"|"0"|"EN[6]"|3|1|0|0
      5012|0|"SC[2] and (SN[2]<=0) and ON[1]"|"1"|"EN[6]"|3|1|0|0
      5012|0|"SC[2] and SN[2]>0 and SN[2]<100 and ON[1]"|"SN[2]"|"EN[6]"|1|1|0|0
      Gruß Hartwig

      Kommentar


        #4
        Mach mal unten die SC weg. Du willst ja ausgeben, wenn die Zeit abgelaufen ist. Das muss nicht zwangsläufig in dem Zyklus sein, in dem SC stattfinde.

        Nutz du den genilane Logikdebugger von Nilss?
        Gruß Matthias
        EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
        - PN nur für PERSÖNLICHES!

        Kommentar


          #5
          Nils Debugger habe ich im Einsatz

          der liefert bei ON[1] das Ergebnis NONE -

          ** AC[2] <> 0 schreibe AN[2] 1.0
          teste Bedingung in Zeile 59: 'True'
          starte Formel: 'ON[1]'
          RunTime: 0.000225
          Ausgabe: 4|0|0|0
          Ergebnis: None
          -------
          Gruß Hartwig

          Kommentar

          Lädt...
          X