Hallo liebe HS'ler,
nachdem ich erfolglos versucht habe einen Baustein zu schreiben bzw. anzupassen, poste ich hier mal den Code und beschreibe, was der Baustein machen soll.
Der Baustein speichert sich einen Wert, nach einer vorgebbaren Zeit X wird ein neuer Wert an den Baustein gesendet. Damit soll die Differenz zwischen alten und neuen Wert gebildet und ausgegeben werden. Zu Kontrollzwecken soll auch der alte Wert mit angezeigt werden.
Habe den Baustein geladen und einiges simuliert, leider klappt es jedoch nicht immer fehlerfrei:
- Habe immer 20 addiert. Klappt in positive Richtung 1A, geht ich rückwärt 60, 40, 20 ist alles i.O. dann von 20 auf 0 kommt als Differenz -40.
- Starte ich aber bei 0 geht auf 20 und wieder zurück ist auch alles in Ordnung.
- Negativ kann er gar nicht.
- Ausgabe des Speichers (alter Wert) klappt auch nicht!
Vielen Dank für die hoffentlichen hilfreichen Hinweise
PepsiMox
----------------------------------------------------------------------
5001|2|2|1|6|1
# Eingänge EN[x]
5002|1|0|0 # Wert (Aktuell)
5002|2|1|0 # Zyklus Neuberechnung (sec.)
# Ausgänge
5004|1|0|0|1|0 # Differenz (nach jeder Berechnung gesendet!)
5004|2|0|0|1|0 # Wert (Alt) (nach jeder Berechnung gesendet!)
# Speichervariablen SN[x]
5003|1|0|0 # lastcounter
5003|2|0|0 # store counter 1
5003|3|0|0 # store counter 2
5003|4|0|0 # store time 1
5003|5|0|0 # store time 2
5003|6|0|0 # timediff
# timer anwerfen
5012|0|"(EI==1 and EN[2]) or OC[1]"|""|"EN[2]"|0|1|0|0
# wenn keine änderung, dann abbruch
5012|1|"EC[1] and EN[2]==0 and EN[1]==SN[1]"|""|""|0|0|0|0
5012|0|"EC[1] and EN[1]!=SN[1]"|"EN[1]"|""|0|0|1|0
# store 1 aus store 2 übernehmen
5012|0|"SC[1] and SN[1]"|"SN[3]"|""|0|0|2|0
5012|0|"SC[1] and SN[1]"|"SN[5]"|""|0|0|4|0
# store 2 füllen
5012|0|"SC[1] and SN[1]"|"EN[1]"|""|0|0|3|0
5012|0|"SC[1] and SN[1]"|"__import__('time').time()"|""|0|0|5|0
5012|0|"SN[2]"|"float(__import__('time').time())-float(SN[4])"|""|0|0|6|0
# alten Wert auf Ausgang schreiben
5012|0|"SN[2] and SN[6]"|"(EN[1]-SN[2])"|""|1|0|0|0
# Differenz bilden und auf Ausgang schreiben
5012|0|"SN[2] and SN[6]"|"(EN[1]-SN[2])"|""|1|0|0|0
Lesezeichen