Step 7 3 Zählwerte in einer DB (in DINT) speichern

Ambientologo11

Level-2
Beiträge
15
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe eine IEC Verbindung zwischen einer CPU 315-2 DP/PN und einem Leitsystem HIGH-LEIT. Hier möchte ich 3 Zählwerte übertragen, aber ich habe volgendes Problem:
- die Übertragung funktioniert, aber nach 4 Tage sehen die Werte so aus: L#999; L#0 und L#999
1628794838067.png
Ich habe nur die Verbindung programmiert und das Programm wurde praktisch nicht geändert. Hier ist die Funktion, wo die Zählwerte programmiert werden:
Zählwert 1:
1628795066208.png
Zählwert 2:
1628795110351.png
Zählwert 3:
1628795154131.png
Ich werde das versuchen:

1628795220800.png
Ich weiß noch nicht, wo das Problem bzw der Fehler liegen könnte.

Ich warte auf eure Antwort.

Vielen Dank!

Grüße
Ivan
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zähler gehen nur bis 999.
Am besten erst mal schauen wie hoch die Zahlen werden und damit den richtigen Datentyp bestimmen.
Da du im DB ein DW hast könntest du ein dint nehmen.
Zählen kann man auch mittels Addition.
Ich habe es noch nie gesehen das jemand die Zähler benutzt, außer in den Schulungen.

Gruß Jens


Dann
 
Ich habe es noch nie gesehen das jemand die Zähler benutzt, außer in den Schulungen.
Und ich habe (glaube ich) noch nie gesehen, dass man den Zähler mit einem Wert vorbesetzt und dann noch ein einziges Mal hochzählt.

Und auch nicht, dass man den Zähler im BCD-Code ausliest (LC), dann brav in DINT umwandelt (BTD), statt den Zähler direkt als INT auszulesen (L).
Da der Zähler keine negativen Werte enthalten kann, darf man das Ergebnis ohne weitere Wandlung gerne in einem DINT abspeichern.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und ich habe (glaube ich) noch nie gesehen, dass man den Zähler mit einem Wert vorbesetzt und dann noch ein einziges Mal hochzählt.

Und auch nicht, dass man den Zähler im BCD-Code ausliest (LC), dann brav in DINT umwandelt (BTD), statt den Zähler direkt als INT auszulesen (L).
Da der Zähler keine negativen Werte enthalten kann, darf man das Ergebnis ohne weitere Wandlung gerne in einem DINT abspeichern.
Hi Heinileini,

Lieben Dank für deine Antwort!

Ich kontrolliere AWL nicht, ich komme aus einem anderen Bereich wo es in Java, C++, JavaScript, usw. programmiert ist. Ich bin mehr pro SCL. Ich habe mit den alten Siemens-Steuerungen wenig gearbeitet, aber alles, was du gesagt hast, macht Sinn. Ich weiß nicht, wer das Programm geschrieben hat, die Anlage funktioniert übrigens seit fast 10 Jahren ...XD

Grüße!
 
Zähler gehen nur bis 999.
Am besten erst mal schauen wie hoch die Zahlen werden und damit den richtigen Datentyp bestimmen.
Da du im DB ein DW hast könntest du ein dint nehmen.
Zählen kann man auch mittels Addition.
Ich habe es noch nie gesehen das jemand die Zähler benutzt, außer in den Schulungen.

Gruß Jens


Dann
Hi DOD666,

Das wusste ich nicht. Ich kontrolliere AWL nicht und habe mit den alten Siemens-Steuerungen wenig gearbeitet...

Aber wie ich zu @Heinileini sagte, macht alles, was du gesagt hast, Sinn. Du kannst den Code sehen, den ich oben geschrieben habe. Am Ende habe ich mich entschieden, dem Rat von @ Thomas_v2.1 zu folgen.
Grüße!
Ivan
 
... die Anlage funktioniert übrigens seit fast 10 Jahren ...XD
... aber dann plötzlich ganz anders als gewohnt, habe ich aus Deinem #1 herausgelesen.

Dass die Zähler nur von 0 bis 999 zählen können, hat sich in all den Jahren nicht geändert. Das kann also eigentlich nicht das Problem sein.
Vielleicht war früher - aus welchen Gründen auch immer - die Grenze von 999 nie ein Thema, sondern erst nach z.B. irgendeiner ProduktionsUmstellung.

Ich könnte mir aber auch vorstellen, dass die ehemals funktionierende Zählerei durch eine ProgrammÄnderung (an ganz anderer Stelle) kaputtgemacht wurde.
Kann es sein, dass die ehemals funktionierende ZählerMimik neuerdings viel zu oft (oder viel zu selten) zählt und erst dadurch die Macke aufgefallen ist?
Eine Doppel- bzw. MehrfachBelegung der Flankenmerker M90.0, M90.2 und M90.4 könnte z.B. eine mögliche Erklärung sein.
Bitte einmal kontrollieren, ob irgendwo Werte nach MB90, MW89, MW90, MD87, MD88, MD89 oder MD90 transferiert werden. ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi DOD666,

Das wusste ich nicht. Ich kontrolliere AWL nicht und habe mit den alten Siemens-Steuerungen wenig gearbeitet...

Aber wie ich zu @Heinileini sagte, macht alles, was du gesagt hast, Sinn. Du kannst den Code sehen, den ich oben geschrieben habe. Am Ende habe ich mich entschieden, dem Rat von @ Thomas_v2.1 zu folgen.
Grüße!
Ivan
Du solltest aber Datentypen und deren Grenzen kenn und entsprechend einordnen können.

Gruß
 
... aber dann plötzlich ganz anders als gewohnt, habe ich aus Deinem #1 herausgelesen.

Dass die Zähler nur von 0 bis 999 zählen können, hat sich in all den Jahren nicht geändert. Das kann also eigentlich nicht das Problem sein.
Vielleicht war früher - aus welchen Gründen auch immer - die Grenze von 999 nie ein Thema, sondern erst nach z.B. irgendeiner ProduktionsUmstellung.

Ich könnte mir aber auch vorstellen, dass die ehemals funktionierende Zählerei durch eine ProgrammÄnderung (an ganz anderer Stelle) kaputtgemacht wurde.
Kann es sein, dass die ehemals funktionierende ZählerMimik neuerdings viel zu oft (oder viel zu selten) zählt und erst dadurch die Macke aufgefallen ist?
Eine Doppel- bzw. MehrfachBelegung der Flankenmerker M90.0, M90.2 und M90.4 könnte z.B. eine mögliche Erklärung sein.
Bitte einmal kontrollieren, ob irgendwo Werte nach MB90, MW89, MW90, MD87, MD88, MD89 oder MD90 transferiert werden. ;)
Ich habe mit einem Kollegen gesprochen. Es stellt sich heraus, dass diese Station die Daten über eine TIM-Gruppe an das Leitsystem gesendet hat. Im Leitsystem wurden die pro Tag gesendeten Impulse berechnet.
Seit ich die Änderung vorgenommen habe, gibt es kein Problem und die Daten kommen jeden Tag an.

Ich weiß nicht genau wo das Problem lag... Für die neue Funktion habe ich den gleichen Merker verwendet, daher denke ich das der Fehler nicht da war. Es ist möglich, dass in der vorherigen Verbindung die Werte der Zähler jeden Tag zurückgesetzt wurden LIeben Dank für deine Hilfe! ;)
 
Zurück
Oben