TIA [SCL] IEC-Zähler (CTUD) schreibt auf CV Variable falsche Werte, gleicher Datentyp

Warwick

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bearbeite gerade das Beispiel bezüglich Füllstandsmessung aus dem Handbuch/Interne Hilfe ("Beispiel für das Erfassen des Füllstands eines Lagerbereichs").
In diesem wird ein CTUD-Zähler verwendet. Dieser gibt auf dem CV-Ausgang den aktuellen Zählwert als INT aus. Diesen möchte ich der Variable "Paketanzahl" zuweisen. "Paketanzahl" ist in der Standard-Variablenliste ebenso als INT deklariert.

Habe das Beispiel mal ein wenig gekürzt. Wenn die Paketanzahl 100 beträgt, soll "Anzeige_VOLL" aktiv sein.

Code:
"IEC_Counter_0_DB".CTUD(CU:="Lichtschranke_IN",
                        CD:="Lichtschranke_OUT",
                        R:="Reset",
                        PV:=0,
                        CV=>"Paketanzahl");


IF "Paketanzahl" = 100 THEN
    "Anzeige_VOLL" := 1;
END_IF;

Wenn ich den Baustein (bzw. die Variable Paketanzahl) beobachte tauchen nur die Werte 256, 512 oder 768 auf. Wechseln in einem mir nicht logischen Muster in Abhängigkeit von CV.
In der Datenbank des Zählers ist der richtige Wert vermerkt.

Was mache ich falsch?
 
Das klingt ein bisschen wie High-Byte und Low-Byte vertauscht - ich kann mir aber nicht vorstellen, wie das innerhalb SCL passieren können soll. (bzw. zur Zeit ist Siemens bei TIA ja jeder mögliche und unmögliche Bug zuzutrauen ;))

Gibt es vielleicht noch Zugriffe auf "Paketanzahl" von woanders her oder Überlappungen mit anderen Variablen?
Wie ist "Paketanzahl" deklariert? Magst Du uns etwas mehr Code zeigen?
Was für eine CPU hast Du? Oder simulierst Du nur? Welche TIA-Version hast Du?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gerade als ich die Datenbank und Variablentabelle hochladen wollte, ist mir aufgefallen, dass ich Paketanzahl als Eingang deklariert habe. Als Ausgang funktioniert es einwandfrei - interessanterweise funktioniert es danach weiterhin, falls ich es wieder als Eingang deklariere. Muss ich jetzt nicht verstehen.

Dennoch vielen dank für die schnelle Antwort.
 
Zurück
Oben