Step 5 Zaehlerwert im DB ablegen und neuen Zaehlerwert dazuaddieren

elcabone

Level-1
Beiträge
11
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin moin.

Mich hat man jetzt vor einer alten -115U CPU 944B- gesetzt um eine Art Statistik im Hintergrund laufen zu lassen.
Step5 hab ich soweit wieder aufgefrischt im Gehirn, aber meine Idee hat irgendwie eine Gedankenblockade erzeugt.

Ist-Zustand:
Ein Becken wird mit Wasser gefüllt.
Vorhanden ist ein Durchflussmengenzähler1, welcher einen Impuls alle xxx Liter rausgibt.
Damit steuere ich die Zufuhr des benötigten Additivs, welches ebenfalls über einen Durchflussmengenzaehler2 per Impuls(Takt) abgefragt wird. (Stopp nach 5 Takten).

Soll-Zustand:
Jetzt soll ich im Hintergrund erfassen, wieviel Additiv man verbraucht.
Ich habe mir gedacht, ich nehme einfach den Zaehlerwert von meinem Zaehler1, welcher die Additivzufuhr steuert und schiebe den Wert in einen DB.
Beim nächsten Durchgang, wenn wieder Additiv zugeführt wird, addiere ich den Zaehlerwert vom Zaehler1 auf den Wert im DB.

So hat man einen fortlaufenden Wert, welcher immer addiert wird im DB stehen.
Aus diesen Wert können die Kollegen dann den Verbrauch des Additivs ermitteln.
(Beispiel: Der Wert im DB zeigt 2000 an = 5l Additiv)


Bin ich da jetzt auf dem Holzweg?
Ich bekomme irgendwie nichts in ein Word oder INT in einem DB geschrieben geschweige denn addiert.

Bei einer S7 habe ich das ganze schon realisiert aber anscheinend bin ich bei einer S5 gehandicapped um mit DB's umzugehen.
 
Nimm doch den Impulseingang des 2.Mengenzähler (Additiv) und zähle damit einen separaten Zählwert hoch.
Damit hast Du den Verbrauch des Additiv und kannst beliebig diesen wieder auf Null zurückstellen.

Zum Zugriff auf DB:

Erst mal die Flanke auf den Zählimpuls bilden
mit dem (invertierten) Flankenmerker das addieren überspringen damit nur 1x addiert wird wenn ein Impuls kommt

Addieren:
Code:
A DB xxx
L DW yyy
L KF +1
+F
T DW yyy
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist eine Idee... Ich hatte nicht auf den Schirm, direkt den Wert im DB hochzaehlen zu koennen.

Muss denn nicht dann die Bedingung davor, bevor ich den DB öffne?

So?:

Code:
U M x.x
A DB xxx
L DW yyy
L KF +1
+F
T DW yyy
 
wie tnt369 schrieb:

Erst mal die Flanke auf den Zählimpuls bilden
mit dem (invertierten) Flankenmerker das addieren überspringen damit nur 1x addiert wird wenn ein Impuls kommt

Lade, Addier, Transferierbefehle, etc.
sind nicht vom VKE abhängig (in einer S5)
Das heisst Du darfst das nur machen wenn die FLANKE des Zählimpulses da ist.

zB

Code:
U M x.x
UN Hilfsmerker
= Flankenmerker
U M x.x
=Hilfsmerker

UN Flankenmerker
SPB M1
A DB xxx
L DW yyy
L KF +1
+F
T DW yyy
M1: ...... //hier geht das Programm weiter
 
Ja jetzt leuchtet's da oben.

Sprungbefehle hatte ich einfach mal gepflegt wegignoriert.

Vielen Dank für den Gedankenanstoß an euch Beide.
 
Zurück
Oben