Hi
wenn du auch komplexe Dinge mit den Logiken machen willst und in Echtzeit debuggen willst, oder auch ohne HS-Neustart den Code ändern willst solltest du mal einen Blick hier rauf werfen https://knx-user-forum.de/77774-post24.html
Damit hab ich auch hsfusion entwickelt. Wenn Interesse besteht, bitte dort weiter posten. Ich kann das Template dort dann auch mal aktualisieren.
Ankündigung
Einklappen
Keine Ankündigung bisher.
- √ - was bedeutet dieser Stamm-Error?
Einklappen
X
-
Da ich aktuell wie ein Hamster Logikbausteine schreibe, stoße ich immer wieder an die Grenzen der Entwicklerschnittstelle - die nicht allzu weit draußen liegen. Will sagen, das Debugging gestaltet sich schwierig.Zitat von TRex Beitrag anzeigenecht übersichtlich...
aber ich gebe gerne zu, meine Vermutung war falsch.
Anbei die Anmerkungen aus dem Modulchecker...
Auf der Suche nach einer Debugmöglichkeit bin ich auf obige Zeilen gestoßen. Was der Modulchecker ist, kann ich daraus lesen, aber wo finde ich ihn?
BTW: Mangels fehlendem Wissen erzeuge ich in einem Logikbaustein am eine Exception durch
um zumindest einen Hinweis zu erhalten, dass was falsch ist. Aussagekräftig ist das im Debug-Log allerdings nicht. Gibt es eine "elegantere" Lösung?Code:5012|1|""|"0/0"|""|0|0|0|0
Einen Kommentar schreiben:
-
So hat sich geklärt, ich habe heute im Projekt ein paar Grafiken gelöscht die nicht mehr verwendet wurden. Danach war alles wieder iO. Warum das so ist kann ich nicht sagen.
Danke noch mal für die Hilfe
Einen Kommentar schreiben:
-
Danke,
das war´s, hätte ich auch selbst drauf kommen können. Hast du noch eine Erklärung der 2 Meldung da fehlt jeder Ansatz.
Einen Kommentar schreiben:
-
Ich vermute mal, dass der HS nichts mit der Datei "Thumbs.db" anfangen kann, die im Verzeichnis hsav/img liegt...
Einfach mal löschen bzw. aus den "HS"-Verzeichnissen verschieben...
Einen Kommentar schreiben:
-
Hi,
kann mir vielleicht jemand diese Meldung erklären ??
Ich weiss damit nichts anzufangen
Danke
Stamm-Error
CExtDatItem Daten : [8001L, 'opt/hsav/img/Thumbs.db', 'hsav/img/Thumbs.db', 'application/octet-stream'] CExtDatItem Daten :
[8001L, 'opt/hsav/img/Thumbs.db', 'hsav/img/Thumbs.db', 'application/octet-stream']
und diese unter Exeptions
File "/hs/compile/hs_remanent.py", line 1554, in writeSich
error: required argument is not a float
Einen Kommentar schreiben:
-
Ja, das sagt der Modulchecker immer.
Aber wenn man den Timer mit "0" beendet, muss man nicht unbedingt eine Formel eintragen...
Trotzdem Danke für deine Benmühungen...
Einen Kommentar schreiben:
-
echt übersichtlich...
aber ich gebe gerne zu, meine Vermutung war falsch.
Anbei die Anmerkungen aus dem Modulchecker...
5012|0|"OC[1]"|"0"|""|0|2|4|0 # Timer 2 beenden und Referenzfahrtzähler zurücksetzen
In dieser Zeile muss das Feld 'Zeitformel' eine Formel enthalten
5012|0|"OC[4]"|"0"|""|0|2|4|0 # beende Timer 2 und setze Referenzfahrtzähler zurück
In dieser Zeile muss das Feld 'Zeitformel' eine Formel enthalten
5012|0|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and ((EC[1] and (EN[1]!=SN[8])) or EC[2] or EC[6] or OC[3])"|"0"|""|0|1|0|0 # beende Timer 1
In dieser Zeile muss das Feld 'Zeitformel' eine Formel enthalten
5012|0|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and ((EC[1] and (EN[1]!=SN[8])) or EC[2] or EC[6] or OC[3])"|"0"|""|0|3|0|0 # beende Timer 3
In dieser Zeile muss das Feld 'Zeitformel' eine Formel enthalten
5012|0|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and ((EC[1] and (EN[1]!=SN[8])) or EC[2] or EC[6] or OC[3])"|"0"|""|0|2|0|0 # beende Timer 2
In dieser Zeile muss das Feld 'Zeitformel' eine Formel enthalten
5012|0|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and ((EC[1] and (EN[1]!=SN[8])) or EC[2] or EC[6] or OC[3])"|"0"|""|4|4|3|0 # beende Timer 4
In dieser Zeile muss das Feld 'Zeitformel' eine Formel enthalten
Einen Kommentar schreiben:
-
Ich hatte Recht!!!
Hallo TRex!
Ich hatte mit meiner Vermutung Recht...
Das sollte Dacom bei der nächsten Version mal bereinigen...
Einen Kommentar schreiben:
-
meine Vermutung...
Hallo TRex!
Hier ist mal meine Vermutung:
Ich habe den Baustein um 2 Eingänge (E9 und E10) erweitert und den bestehenden Baustein damit ersetzt. Dann habe ich den Default-Wert von E10 im Grafischen Logikeditor geändert.
Danach habe ich festgestellt, dass da noch ne Macke im Baustein war und habe ihn wieder durch die alte Version (ohne E9 und E10) ersetzt.
Ich glaube, dass seitdem diese Stamm-Fehler auftauchen... (evtl. heißt das ja, dass er versucht, den Default-Wert von E10 des Bausteins zu ändern, dieser ist ja aber nicht mehr da...
Einen Kommentar schreiben:
-
Hier ist der Baustein...
Ist aber ein wenig komplexer...
Was ist denn deine Vermutung?
Bitteschön:
### Rolladensteuerung mit Angabe der Position in % ###
################################################## ##################################
################################################## ##################################
# (C) 2008 Marc Naroska (V2.2) #
################################################## ##################################
# V2.2: Weiterleitung von Lang- und Kurzzeit ausschaltbar #
################################################## ##################################
#5000|"Text"|Remanent(1/0)|Anz.Eingänge|.n.|Anzahl Ausgänge|.n.|.n.
5000|"Naroska\Rolladen mit Pos (V2.2)"|1|10|"Langzeit"|"Kurzzeit"|"gemessene Fahrzeit in sek"|"Schlupf beim Hochfahren in sek"|"Anzahl Fahrten bis Referenzfahrt"|"SetPos in %"|"Ausgabe Pos während Fahrt"|"Pause bei Richtungswechsel in sek"|"Weiterleitung"|"Stopp bei 0% und 100%"|6|"Position in %"|"Langzeit"|"Kurzzeit"|"Sperre bei Referenzfahrt"|"laufende Position in %"|"debug"
#5001|Anzahl Eingänge|Ausgänge|Offset|Speicher|Berechnung bei Start
5001|10|6|5|13|1 # 10 Eingänge, 6 Ausgänge, 5 Timer, 13 Speicher, Berechnung bei Initialisierung
#5002|Index Eingang|Default Wert|0=numerisch 1=alphanummerisch
5002|1|0|0 # Eingang 1, Langzeit
5002|2|0|0 # Eingang 2, Kurzzeit
5002|3|0|0 # Eingang 3, gemessene Fahrzeit
5002|4|0|0 # Eingang 4, Schlupf beim Hochfahren
5002|5|10|0 # Eingang 5, Anzahl Positionsfahrten, nach der eine Rekalibrierung erfolgt
5002|6|0|0 # Eingang 6, Positionierung Vorgabewert in %
5002|7|0|0 # Eingang 7, Position während der Fahrt ausgeben
5002|8|1|0 # Eingang 8, Pause bei Richtungswechsel in sek
5002|9|1|0 # Eingang 9, Weiterleitung von Lang- und Kurzzeitbefehlen
5002|10|1|0 # Eingang 10, bei 0% und 100% Kurzzeit senden?
#5003|Speicher|Initwert|Remanent
5003|1|0|1 # Speicher 1, aktuelle Position
5003|2|-1|1 # Speicher 2, Positionsvorgabe
5003|3|0|1 # Speicher 3, Sperre bei Referenzfahrt
5003|4|1|1 # Speicher 4, Zähler für Anzahl Fahrten seit letzter Referenzfahrt
5003|5|-1|1 # Speicher 5, Start-Position
5003|6|-1|1 # Speicher 6, Start-Zeit
5003|7|-1|1 # Speicher 7, Ende-Zeit
5003|8|-1|1 # Speicher 8, Richtung bei Langzeitbefehl
5003|9|0|1 # Speicher 9, gemessene Fahrzeit
5003|10|0|1 # Speicher 10, Schlupf
5003|11|-1|0 # Speicher 11, zwischengesp. gem. FahrzeitSchlupf
5003|12|-1|0 # Speicher 12, zwischengesp. Schlupf
5003|13|0|0 # Speicher 13, Sperre bei Pause wegen Richtungswechsel
#5004|ausgang|Initwert|runden binär (0/1)|typ (1-send/2-sbc)|0=numerisch 1=alphanummerisch
5004|1|0|0|1|0 # Ausgang 1, aktuelle Position in %
5004|2|0|0|1|0 # Ausgang 2, Langzeit
5004|3|0|0|1|0 # Ausgang 3, Kurzzeit
5004|4|0|0|2|0 # Ausgang 4, Sperre bei Referenzfahrt
5004|5|0|0|1|0 # Ausgang 5, laufende Position in %
5004|6|""|0|1|1 # Ausgang 6, Debug
# Timer OC[1] = Fahrzeit abgelaufen wenn kein Kurzzeit Befehl kommt
# Timer OC[2] = Timer für Positionsausgabe während einer Fahrt
# Timer OC[3] = Positionierung der Rollade
# Timer OC[4] = Timer für Referenzfahrt
# Timer OC[5] = Timer für Pause bei Richtungswechsel
############################# Definition der Funktion #################################
#5012|abbruch bei bed. (0/1)|bedingung|formel|zeitformel|pin-ausgang|pin-timer|pin-speicher|pin-neg.ausgang
#5012|0|"EN[7]==0"|"-1"|""|5|0|0|0 # A5 zurücksetzen wenn E7=0
#5012|0|""|"str(EN[6])+'!'+str(EC[6])+'!'+str(OC[1])+'!'+str(OC[2])+'!'+str(OC[3])+'!'+str(OC[4])+'!'+str(OC[5])"|""|6|0|0|0
### bei Initialisierung
5012|0|"EI"|"0"|""|4|0|3|0 # Sperre zurücksetzen
5012|0|"EI"|"-1"|""|0|0|2|0 # Positionsvorgabe zurücksetzen
5012|0|"EI"|"-1"|""|0|0|6|0 # Start-Zeit zurücksetzen
5012|0|"EI"|"-1"|""|0|0|7|0 # Ende-Zeit zurücksetzen
5012|0|"EI"|"-1"|""|0|0|11|0 # zwischengespeicherte Fahrzeit zurücksetzen
5012|0|"EI"|"-1"|""|0|0|12|0 # zwischengespeicherter Schlupf zurücksetzen
5012|0|"EI"|"round(SN[1],0)"|""|1|0|0|0 # akt. Pos senden
5012|1|"EI"|"round(SN[1],0)"|""|5|0|0|0 # akt. Pos senden
#5012|0|""|"'INIT.'+str(OC[1])+'!'+str(OC[2])+'!'+str(OC[3])+'!'+str(OC[4])+'!'+str(OC[5])+'=='+str(SN[1])+'!'+str(SN[2])+'!'+str(SN[3])+'!'+str(SN[4])+'!'+str(SN[5])+'!'+str(SN[6])+'!'+str(SN[7])+'!'+str(SN[8])+'!'+str(SN[9])+'!'+str(SN[10])+'!'+str(SN[11])+'!'+str(SN[12])+'!'"|""|6|0|0|0
### Während einer Fahrt Änderungen an Fahrzeit oder Schlupf zwischenspeichern
5012|0|"(SN[6]==-1) and (EN[3]>=0)"|"EN[3]"|""|0|0|9|0 # neue Fahrzeit übernehmen
5012|0|"(SN[6]==-1) and (EN[4]>=0)"|"EN[4]"|""|0|0|10|0 # neuen Schlupf übernehmen
5012|0|"(SN[6]==-1) and (SN[11]!=-1)"|"SN[11]"|""|0|0|9|0 # zwischengespeicherte Fahrzeit übernehmen
5012|0|"(SN[6]==-1) and (SN[12]!=-1)"|"SN[12]"|""|0|0|10|0 # zwischengespeicherten Schlupf übernehmen
5012|0|"(SN[6]==-1) and (SN[11]!=-1)"|"-1"|""|0|0|11|0 # zwischengespeicherte Fahrzeit zurücksetzen
5012|0|"(SN[6]==-1) and (SN[12]!=-1)"|"-1"|""|0|0|12|0 # zwischengespeicherten Schlupf zurücksetzen
5012|0|"(SN[6]>-1) and EC[3] and (EN[3]>=0)"|"EN[3]"|""|0|0|11|0 # neue Fahrzeit zwischenspeichern
5012|0|"(SN[6]>-1) and EC[4] and (EN[4]>=0)"|"EN[4]"|""|0|0|12|0 # neuen Schlupf zwischenspeichern
5012|1|"EC[3] or EC[4]"|""|""|0|0|0|0 # ENDE wenn neue Fahrzeit oder neuer Schlupf
### Timer 1: Laufzeit ganz hoch/runter bei Langzeitbefehl
5012|0|"OC[1]"|"0"|""|0|2|4|0 # Timer 2 beenden und Referenzfahrtzähler zurücksetzen
5012|0|"OC[1]"|"-1"|""|0|0|6|0 # Start-Zeit zurücksetzen
5012|0|"OC[1]"|"-1"|""|0|0|7|0 # Ende-Zeit zurücksetzen
5012|0|"OC[1]"|"-1"|""|0|0|8|0 # Richtung zurücksetzen
5012|0|"OC[1]"|"ON[1]*100"|""|5|0|0|0 # setze laufende Position oben/unten
5012|1|"OC[1]"|"ON[1]*100"|""|1|0|1|0 # setze Speicher/akt. Pos. oben/unten und beende die Berechnung
### Timer 2: Positionsausgabe während Positionsfahrt
5012|1|"OC[2] and EN[7] and (OC[3]==0) and (OC[4]==0) and ((SN[8]==1) or ((SN[2]-SN[1])>0)) and ((float(ON[2])+(float(100)/float(SN[9])))<SN[2])"|"float(ON[2])+(float(100)/float(SN[9]))"|"1"|5|2|1|0 # addiere um 1 mit Ausgabe akt.Pos
5012|1|"OC[2] and EN[7] and (OC[3]==0) and (OC[4]==0) and ((SN[8]==1) or ((SN[2]-SN[1])>0)) and ((float(ON[2])+(float(100)/float(SN[9])))>=SN[2])"|"round(SN[2],0)"|""|5|0|1|0 # Ausgabe letzter Schritt
5012|1|"OC[2] and EN[7] and (OC[3]==0) and (OC[4]==0) and ((SN[8]==0) or ((SN[2]-SN[1])<0)) and ((float(ON[2])-(float(100)/float(SN[9]+SN[10])))>SN[2])"|"float(ON[2])-(float(100)/float(SN[9]+SN[10]))"|"1"|5|2|1|0 # subtrahiere um 1 mit Ausgabe akt.Pos
5012|1|"OC[2] and EN[7] and (OC[3]==0) and (OC[4]==0) and ((SN[8]==0) or ((SN[2]-SN[1])<0)) and ((float(ON[2])-(float(100)/float(SN[9]+SN[10])))<=SN[2])"|"round(SN[2],0)"|""|5|0|1|0 # Ausgabe letzter Schritt
5012|1|"OC[2] and (OC[3]==0)"|""|""|0|0|0|0 # ENDE wenn nur Timer 2 aktiv
### Timer 4: Verhalten bei Referenzfahrt
5012|0|"OC[4]"|"0"|""|0|2|4|0 # beende Timer 2 und setze Referenzfahrtzähler zurück
5012|0|"OC[4]"|"((((SN[1]>=50)==(SN[2]>=50)) and (SN[1]>=50)) or ((SN[1]>=50) and ((SN[1]>=50)==(abs(SN[1]-50)>abs(SN[2]-50)))))*100"|""|0|0|1|0 # akt. Pos auf 0% oder 100% setzen
5012|0|"OC[4] or OC[5]"|"-1"|""|0|0|2|0 # Zielposition auf -1 setzen
5012|0|"OC[4] or OC[5]"|"EN[6]"|""|0|0|2|0 # Zielposition auf ursprünglichen Wert setzen
### ENDE, wenn keine Referenzfahrt, keine Positionsfahrt und (keine Änderung an E1, E2, und E6 oder Änderung (E6 und (0>E6>100 oder Referenzfahrt aktiv))
5012|1|"(OC[5]==0) and (OC[4]==0) and (OC[3]==0) and ((EC[1]==0 and EC[2]==0 and EC[6]==0) or (EC[6] and ((EN[6]<0) or (EN[6]>100) or (SN[3]==1))))"|""|""|0|0|0|0
### neue Position berechnen wenn Kurzzeit oder Langzeit in andere Richtung oder neue Position oder Positionierung beendet
5012|0|"(OC[4]==0) and (OC[5]==0) and (EC[2] and EN[9])"|"EN[2]"|""|3|0|0|0 # manuell Kurzzeit weiterleiten wenn E9 = 1
5012|0|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and (EC[2]==0) and ((EC[1] and (EN[1]!=SN[8])) or EC[6] or (OC[3] and ((((EN[1]==0) or (EN[1]==100)) and EN[10]) or ((EN[1]>0) and (EN[1]<100)))))"|"1"|""|3|0|0|0 # Kurzzeit setzen (bei 0% oder 100% nur, wenn E10 = 1)
5012|0|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and ((EC[1] and (EN[1]!=SN[8])) or EC[2] or EC[6] or OC[3])"|"float(__import__('time').time())"|""|0|0|7| 0 # Ende-Zeit in Sek in S7 schreiben
5012|0|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and ((EC[1] and (EN[1]!=SN[8])) or EC[2] or EC[6] or OC[3])"|"0"|""|0|1|0|0 # beende Timer 1
5012|0|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and ((EC[1] and (EN[1]!=SN[8])) or EC[2] or EC[6] or OC[3])"|"0"|""|0|3|0|0 # beende Timer 3
5012|0|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and ((EC[1] and (EN[1]!=SN[8])) or EC[2] or EC[6] or OC[3])"|"0"|""|0|2|0|0 # beende Timer 2
5012|0|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and ((EC[1] and (EN[1]!=SN[8])) or EC[2] or EC[6] or OC[3])"|"0"|""|4|4|3|0 # beende Timer 4
5012|0|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and ((EC[1] and (EN[1]!=SN[8])) or EC[2] or EC[6] or OC[3])"|"(SN[4]+1)"|""|0|0|4|0 # Referenzfahrtzähler um 1 erhöhen
5012|0|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and (((EC[1] and (EN[1]!=SN[8])) or EC[2] or EC[6] or OC[3]) and (SN[6]<SN[7]))"|"float(SN[5])+(float(2*SN[8]-1)*float(SN[7]-SN[6])*(float(100)/float(SN[9]+(1-SN[8])*SN[10])))"|""|0|0|1|0 # berechne akt. Position anhand der Zeiten und schreibe auf S1
5012|0|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and (((EC[1] and (EN[1]!=SN[8])) or EC[2] or EC[6] or OC[3]) and (SN[1]>=100))"|"100"|""|0|0|1|0 # wenn S1>100 dann auf 100 setzen
5012|0|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and (((EC[1] and (EN[1]!=SN[8])) or EC[2] or EC[6] or OC[3]) and (SN[1]<=0))"|"0"|""|0|0|1|0 # wenn S1<0 dann auf 0 setzen
5012|0|"(OC[4]==0) and (OC[5]==0) and OC[3] and ((SN[1]==0) or (SN[1]==100))"|"1"|""|0|0|4|0 # Referenzfahrtzähler zurücksetzen, wenn Positionsfahrt auf 0% oder 100%
5012|0|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and ((EC[1] and (EN[1]!=SN[8])) or EC[2] or EC[6] or OC[3])"|"round(SN[1],0)"|""|1|0|0|0 # akt. Pos S1 an A1 senden
5012|0|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and ((EC[1] and (EN[1]!=SN[8])) or EC[2] or EC[6] or OC[3])"|"round(SN[1],0)"|""|5|0|0|0 # akt. Pos S1 an A5 senden
5012|0|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and ((EC[1] and (EN[1]!=SN[8])) or EC[2] or EC[6] or OC[3])"|"-1"|""|0|0|7|0 # Ende-Zeit zurücksetzen
5012|0|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and ((EC[1] and (EN[1]!=SN[8])) or EC[6] or OC[3])"|"1"|"(EN[8]<=0)+(EN[8]>0)*EN[8]"|0|5|13|0 # starte Timer 5 mit E8 Sekunden und setze Sperre bei Richtungswechsel=1
5012|0|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and ((EC[1] and (EN[1]!=SN[8])) or EC[2] or EC[6] or OC[3])"|"-1"|""|0|0|8|0 # Richtung zurücksetzen
5012|1|"(OC[4]==0) and (OC[5]==0) and (SN[6]!=-1) and ((EC[1] and (EN[1]!=SA[8])) or EC[2] or EC[6] or OC[3])"|"-1"|""|0|0|6|0 # Start-Zeit zurücksetzen
5012|1|"(OC[4]==0) and (OC[5]==0) and EC[2]"|""|""|0|0|0|0 # ENDE, wenn Kurzzeit
### Verhalten bei Langzeitbefehl
5012|0|"(OC[4]==0) and (OC[5]==0) and (EC[1] and EN[9])"|"EN[1]"|""|2|0|0|0 # Langzeit weiterleiten wenn Weiterleitung = 1
5012|1|"(OC[4]==0) and (OC[5]==0) and EC[1] and (EN[1]==SN[8])"|""|""|0|0|0|0 # ENDE, wenn Langzeit = aktuelle Richtung
5012|0|"(OC[4]==0) and (OC[5]==0) and EC[1]"|"float(__import__('time').time())"|""|0|0|6| 0 # Start-Zeit in Sek in S6 schreiben
5012|0|"(OC[4]==0) and (OC[5]==0) and EC[1]"|"EN[1]"|"SN[9]+((1-EN[1])*SN[10])+3"|0|1|8|0 # Richtung in S8 schreiben und Timer 1 starten mit gem. Fahrzeit+3 Sekunden+(Schlupf wenn hoch)
5012|0|"(OC[4]==0) and (OC[5]==0) and EC[1] and (EN[7]==1)"|"SN[1]"|"1"|0|2|0|0 # starte Timer 2 mit 1 sek und akt. Pos. als Parameter
5012|0|"(OC[4]==0) and (OC[5]==0) and EC[1]"|"SN[8]*100"|""|0|0|2|0 # Ziel-Position 0% oder 100%
5012|1|"(OC[4]==0) and (OC[5]==0) and EC[1]"|"SN[1]"|""|0|0|5|0 # akt. Pos --> S5 und ENDE
### Verhalten bei Positionstelegramm
## Positionsfahrt vorbereiten
5012|0|"(OC[4]==0) and (OC[5]==0) and EC[6]"|"round(EN[6],0)"|""|0|0|2|0 # setze Speicher 2 auf Vorgabe
5012|1|"SN[2]==round(SN[1],0)"|""|""|0|0|0|0 # wenn neue Pos = Akt. Pos. dann und ENDE
5012|0|"OC[4]"|"0"|""|4|0|3|0 # Sperre bei Referenzfahrt aufheben
5012|0|"OC[5]"|"0"|""|0|0|13|0 # Sperre bei Pause aufheben
## Referenzfahrt nur aufrufen, wenn Anzahl Fahrten seit letzter Referenzfahrt >= EN[5] und Baustein nicht durch Referenzfahrt-Timer 4 aufgerufen
5012|0|"(SN[4]>=EN[5]) and (OC[4]==0)"|"1"|""|4|0|3|0 # Sperre=1 bei Referenzfahrt
5012|0|"(SN[4]>=EN[5]) and (OC[4]==0)"|"(((SN[1]>=50)==(SN[2]>=50)) and (SN[1]>=50)) or ((SN[1]>=50) and ((SN[1]>=50)==(abs(SN[1]-50)>abs(SN[2]-50))))"|""|2|0|8|0 # Rollo ganz hoch/runter
5012|0|"(SN[4]>=EN[5]) and (OC[4]==0)"|"float(__import__('time').time())"|""|0|0|6| 0 # Start-Zeit in Sek in S6 schreiben
5012|0|"(SN[4]>=EN[5]) and (OC[4]==0)"|"SN[2]"|"SN[9]+((1-AN[2])*SN[10])+4"|0|4|0|0 # Timer 4 starten, gesamte Fahrzeit (danach wird die normale Positionsfahrt gestartet)
5012|0|"(SN[4]>=EN[5]) and (OC[4]==0) and (EN[7]==1)"|"SN[1]"|"1"|0|2|0|0 # wenn laufende Positionsausgabe, dann Timer 2 mit 1 Sekunde starten
5012|0|"(SN[4]>=EN[5]) and (OC[4]==0)"|"SN[1]"|""|0|0|5|0 # akt. Pos --> S5
5012|1|"(SN[4]>=EN[5]) and (OC[4]==0)"|"AN[2]*100"|""|0|0|2|0 # Ziel auf 0% oder 100% und ENDE
## normale Positionsfahrt starten bei Änderung der Vorgabeposition
5012|0|"SC[2] and ((SN[2]-SN[1])>0)"|"1"|""|2|0|8|0 # Ab-Langzeit bei positiver Veränderung + Ablage in S8
5012|0|"SC[2] and ((SN[2]-SN[1])<0)"|"0"|""|2|0|8|0 # Auf-Langzeit bei negativer Veränderung + Ablage in S8
5012|0|"SC[2]"|"float(__import__('time').time())"|""|0|0|6| 0 # Start-Zeit in Sek in S6 schreiben
5012|0|"SC[2]"|"0"|"(float(abs(SN[2]-SN[1])*(SN[9]+(((SN[2]-SN[1])<0)*SN[10])))/float(100))+float(4*((SN[2]==0) or (SN[2]==100)))"|0|3|0|0 # Berechnung der Zeit + Schlupf bei hoch + 4sek zusätzlich bei 0% oder 100%
5012|0|"SC[2] and (EN[7]==1)"|"SN[1]"|"1"|0|2|0|0 # wenn laufende Positionsausgabe, dann Timer 2 mit 1 Sekunde starten
5012|1|"SC[2]"|"SN[1]"|""|0|0|5|0 # Start-Position in S5 schreiben und ENDE
### ENDE
################################################## ###########################################
Einen Kommentar schreiben:
-
- √ - was bedeutet dieser Stamm-Error?
Hallo allerseits!
Kann jemand vielleicht mit der Fehlermeldung
CGatterItem.addInput Pin : [6003L, 10L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 14L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 20L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 29L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 33L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 37L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 41L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 45L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 49L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 53L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 57L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 61L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 65L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 69L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 74L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 78L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 82L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 98L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 104L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 108L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 112L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 116L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 124L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 129L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 134L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 139L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 144L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 149L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 186L, 10L, 0L, 1L, 0L]CGatterItem.addInput Pin : [6003L, 219L, 10L, 0L, 1L, 0L]
unter Stamm-Error etwas anfangen?
Bekommen habe ich sie, nachdem ich noch ein wenig an einem meiner Bausteine herumgebastelt habe...Stichworte: -


Einen Kommentar schreiben: