Zähler beim überlauf eines anderen Zählers setzen

A

Anonymous

Guest
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo ihr Programmierer!

Ich sitze grad an einem Problem mit der S5-115U. Bisher wird da unter anderem eine Menge gezählt und im DB gespeichert. Dieser Wert wird am PC angezeigt. Keine Ahnung wie der jetzige Zähler funktioniert, aber er geht nur bis 65535 und dann läuft er über und beginnt bei 0.
Meine Aufgabe ist es einen eigenen Zähler dazu zu basteln, der bei jedem Überlauf inkrementiert wird. Dann ist es mir auch möglich am PC die beiden Zählerwerte zu einer Gesamtmenge zusammenzufassen.

Leider bin ich völlig Ahnungslos wie ich das machen könnte...

Bitte helft mir!

gruß mclear
 

Jochen Kühner

Well-known member
Beiträge
4.154
Punkte Reaktionen
474
Sp könnts gehe...

Code:
L     Z      1
L     C#0
==I   
U     E      1.0
ZV    Z      2

Z1 ==> Dein Zähler
E1.0 ==> Bedingung zum vorwärtszählen deines Zählers
Z2 ==> Zweiter Zähler
 

Guido

Well-known member
Beiträge
104
Punkte Reaktionen
7
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo mclear,

ich will mal erklären wie ich dieses Problem lösen würde.

Bei deinem Zähler handelt es sich nicht um einen normalen S5-Zähler
der nur bis 999 zählen würde, sondern um ein Datenwort welches zum zählen gebraucht wird.
Ein Datenwort springt von 65535 auf 0 wenn 1 addiert wird.

Den bestehenden Zähler würde ich immer nur bis 1000 zählen lassen.
Dann würde ich einen zweiten Zähler hinzufügen der die 1000er zählt.
Dw 0 zählt von 0 bis 999 und springt bei erreichen von 1000 zurück auf 0.
Der zweite Zähler DW 1 muss dann um 1 erhöht werden und zählt
somit die "Tausender" deiner Stückzahl.
Dadurch wird es nachher einfacher die Gesamt-Stückzahl auf dem PC darzustellen.
Gesamtstückzahl = (DW 1 X 1000) + DW 0

Beispiel wenn der Zähler um "1" inkrementiert wird.
Code:
	:L DW 0		
	:LKF +1
	:+F
	:T DW 0
	:
	:LKF +1000
	:<F
	:SPB =M00
	:
	:LKF +0
	:T DW 0
	:
	:L DW 1
	:LKF +1
	:+F
	:T DW 1
	:
M00:NOP 0
	:
	:***

Beispiel wenn der Zähler um "X" inkrementiert wird.
Code:
	:L DW 0
	:L MW 0	//In MW 0 steht der Wert der hinzu addiert wird.
	:+F
	:T DW 0
	
	:LKF +1000
	:<F
	:SPB =M00
	:
	:L DW 0
	:LKF +1000
	:-F
	:T DW 0
	:
	:L DW 1
	:LKF +1
	:+F
	:T DW 1
	:
M00:NOP 0
	:
	:***

In den Beispielen sind DW 0 der bestehende Zähler, den du schon im Program hast
und DW 1 wäre der neue Zähler der die "1000er" zählt.

Auf diese Art kann dein Zähler bis (65535 X 1000)+999 = 65.535.999 !! zählen bis er wieder bei "0" ankommt.
Und das düfte ja ein Weilchen dauern ... :wink:

Gruss
Guido
 

Jochen Kühner

Well-known member
Beiträge
4.154
Punkte Reaktionen
474
Noch einfacher...

UN Z1
U M1.0
ZV Z2

Wenn Zähler ein 0 ist und m1.0 kommt (sollte die Zählbeding deines ersten Zählers sein!) dann soll er um 1 weiterzählen. später musst du noch 1 abziehen da er auch schon nach dem ersten durchlauf eine 1 enthalten wird!
 
Oben