DI-Zähler zählt weiter obwohl er zurück gesetzt wird / Wo ist der Fehler?

Jan

Level-1
Beiträge
813
Reaktionspunkte
79
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe einen ganz simplen Zähler mit Begrenzung programmiert.
Diesen habe ich auf PLCSIM zum Test laufen.
Die CPU in PLCSIM zeigt nichteinmal einen SF an.
An Hand vom Bild (NW18+19) ist leicht zu sehen, dass ich nur von L#8 zyklisch mit 40 hochaddiere und bei >D L#39968 den Zähler auf L#8 setze und erneut hochaddiere, u.s.w..
Mehr soll an dieser Stelle nicht passieren.
Warum wird der Zählwert nicht auf L#8 gesetzt, obwohl die Bedingung erfüllt ist?

Ich habe fast die gleiche Funktion am Anfang des FB stehen und diese funktioniert ohne Probleme.

Ich hoffe ihr könnt mir sagen / einen Hinweis geben, wo mein Denkfehler ist.
 

Anhänge

  • Zählfehler.JPG
    Zählfehler.JPG
    137,8 KB · Aufrufe: 85
Hallo PN/DP,

ja, das habe ich gemacht, ich habe sogar den Instanz-DB initialisiert und neu geladen.
Ich habe auch vorher einen Bausteinvergleich (online / offline) gemacht; keine Unterschiede.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Jan:
Wenn Du die Möglichkeit hast, dann teste das ganze mal auf einer echten CPU. Ich habe festgestellt, dass PLCSIM bei sehr kleinen Programmen häufig Unsinn macht bei solchen Konstrukten wie Deinem (Zählerstand über Vergleicher zurücksetzen).
 
Hallo Michael,

danke für den Tipp.
Ich werde morgen mal das Programm in die Anlage schieben und es ausprobieren.
Ich hoffe du hast recht....
 
Also normalerweiße sollte es da keine Probleme geben wenn du es auf einer Statischen variable hast!
Da ich gerade auf der Anlage sitze mal schnell das selbe in die CPU geladen und es funktioniert einwandfrei!
Wird wohl wirklich an der PLCSIM liegen!
Mfg
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Also für mich sieht das im Moment irgendwie nach einer nicht abgeschlossenen Verknüpfung aus.

In einem vorhergehenden Netzwerk steht ein U/O ohne Zuweisung des VKE,
deshalb wird der Vergleich mit dem nicht abgeschlossenen Teil Verundet, und somit der Move nicht ausgeführt.

Mfg
Manuel
 
Also für mich sieht das im Moment irgendwie nach einer nicht abgeschlossenen Verknüpfung aus.

In einem vorhergehenden Netzwerk steht ein U/O ohne Zuweisung des VKE,
deshalb wird der Vergleich mit dem nicht abgeschlossenen Teil Verundet, und somit der Move nicht ausgeführt.
Ich bin mir sicher dass man den Fehler, so es denn einer ist, in AWL gleich sehen würde. ;)
 
Ich bin mir sicher dass man den Fehler, so es denn einer ist, in AWL gleich sehen würde. ;)
Du meinst?
Du weißt doch alles wie schon bestätigt hast.

Also ich habe das Programm in PLCSIM und einer 315 getestet und eigentlich macht es das richtige.
Zum Test würde ich #BC_Save_Adr in einen Merkerbereich sichern, dann siehst du ob die Logik okay ist.
Oder/ Und vor dem Vergleich ein =M_DUMMY einfügen
Und das Arbeiten mit den Lokalvariablen direkt und nicht symbolisch, ist nicht so ganz prickelnd, Symbole machen da mehr Sinn.



bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also für mich sieht das im Moment irgendwie nach einer nicht abgeschlossenen Verknüpfung aus.

In einem vorhergehenden Netzwerk steht ein U/O ohne Zuweisung des VKE,
deshalb wird der Vergleich mit dem nicht abgeschlossenen Teil Verundet, und somit der Move nicht ausgeführt.

Mfg
Manuel


Danke, danke, danke.

Ganz genau das war das Problem. An PLCSIM liegt es nicht.

Ich hatte zwei Netzwerke davor den Befehl

.
.
.
.
Func: U #DUMMY

am Netzwerkende stehen.

Das war mir noch nicht bekannt, dass man das nicht darf. Habe diesen Programmablauf so das erste Mal programmiert.

Man lernt nie aus.

Vielen Dank.
 
Zuletzt bearbeitet:
Zurück
Oben