TIA Meterzähler verliert Wert

Zuviel Werbung?
-> Hier kostenlos registrieren
Den Code , bitte den Code ! wie rette ich einen Zählwert aus dem Zähler um ihn dann durch den OB 100 zu laden.
Wie ich einen Zähler lade weiß ich, es ist wie beim Reset, es wird eine Null geladen ! Wie rette ich einen Zählwert darum geht es !!!!!!!!!!!!!!!!!!!!!
Danke !
 
Im Prinzip so:
einen remanenter Merker namens aktueller_Meterwert.
aktueller_Meterwert := Meter_bei_Neustart + Zählwert.

Im OB100 dann einmalig Meter_bei_Neustart := aktueller_Meterwert
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Auszug aus der Doku zum HSC-Technologiemodul:

Parameteränderung über das Anwenderprogramm

Wenn Sie Parameter über das Anwenderprogramm ändern wollen, gehen Sie folgendermaßen vor:

1.
Prüfen Sie anhand der jeweiligen Set-Variable, ob das Technologieobjekt für die Parameteränderung bereit ist (Set-Variable = FALSE) oder ob noch ein Änderungsauftrag läuft (Set-Variable = TRUE).
In den statischen Variablen des Technologieobjekt-Instanz-DB stehen die folgenden Set-Variablen in UserCmdFlags dafür zur Verfügung:

SetReferenceValue0
SetReferenceValue1
SetUpperLimit
SetLowerLimit
SetCountValue
SetStartValue
SetNewDirection

2.
Wenn das Technologieobjekt für die Parameteränderung bereit ist, ändern Sie die jeweilige statische Variable.
Die folgenden statischen Variablen des Technologieobjekt-Instanz-DB stehen dafür zur Verfügung:

NewReferenceValue0 / NewReferenceValue0_M (für SetReferenceValue0)
NewReferenceValue1 / NewReferenceValue1_M (für SetReferenceValue1)
NewUpperLimit
NewLowerLimit
NewCountValue
NewStartValue
NewDirection
Setzen Sie die jeweilige Set-Variable zur Durchführung des Änderungsauftrags.

4.
Prüfen Sie mit Hilfe des Ausgangsparameters Error, ob ein Fehler aufgetreten ist.
5.
Wenn kein Fehler aufgetreten ist und die Set-Variable durch das Technologieobjekt automatisch rückgesetzt wurde, war die Parameteränderung erfolgreich.

SetCountValue
INOUT
BOOL
FALSEEine steigende Flanke startet die Übertragung des neuen Zählwerts in der statischen Variable NewCountValue zum Technologiemodul. Der Zählwert wird sofort nach der Übertragung wirksam.

Wobei SetCountValue auch als InOut am Baustein zur Verfügung steht.

Du müsstest also einfach deinen aktuellen Zählwert (= Ausgang Baustein "CountValue") Remant speichern. Das hast du ja schon gemacht. Dann könntest du im OB100 einfach folgende Zeilen einfügen:

Code:
Instanz-DB_HSC.NewCountValue := DeinWerteDB.AktuellerWert;
Instanz-DB_HSC.SetCountValue := TRUE;
// Oder die Variable am InOut > SetCountValue auf TRUE setzen

Wichtig:
Während die CPU aus ist, werden natürlich keine Zählwerte erfasst. Das einfache Setzen des aktuellen Wertes auf den alten Zählwert vor Ausschalten kann natürlich auch zum "Verzählen" führen.


-chris
 
Während die CPU aus ist, werden natürlich keine Zählwerte erfasst. Das einfache Setzen des aktuellen Wertes auf den alten Zählwert vor Ausschalten kann natürlich auch zum "Verzählen" führen.
Deshalb muß man Achsen mit Inkrementalgebern nach Versorgungsspannungsausfall und -wiederkehr in der Regel referenzieren. Die Steuerung kann ja auch nicht wissen, ob während Netz-Aus die Achse ihre Lage verändert hat/bewegt wurde.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Früher haben die Zähler ihren Wert nicht "vergessen" und es waren inkrementelle Zähler
Was war "früher"? Die selbe SPS mit dem selben Zähler, bevor Du irgendwas geändert hast? Oder eine ganz andere Anlage?

Übrigens, Dein Beitrag #6: Die Einstellung "Verhalten bei CPU-STOP: Weiterarbeiten" ist zwecklos, wenn dann beim STOP/RUN der Zählerstand auf einen Wert (z.B. vom letzten RUN) gesetzt wird.

Kann die S7-1512 F Kaltstart und Warmstart unterscheiden? Also lediglich RUN/STOP/RUN oder RUN/AUS/STOP/RUN nach Netzspannung-EIN?

Ich lasse meine Inkremental-Zähler in der Regel endlos frei laufen und manipuliere nicht den Zählerstand des Hardware-Zählers. Ich übernehme immer nur die Zählerstands-Veränderung/Differenz von Zyklus zu Zyklus und addiere die Differenz auf eine Zählervariable (z.B. in einem remanenten DB). Da bräuchte ich einfach nur im OB100 den Zählerstand-Altwert auf 0 setzen und das Nullsetzen des Hardware-Zählers bei Spannungsausfall oder STOP/RUN wäre überhaupt kein Problem. Problem wäre nur, wenn bei Netzspannung-Aus die Position der Achse verändert wird, dann müsste ein Bediener einen Start- oder Korrekturwert eingeben oder referenzieren.

Harald
 
Zurück
Oben