CPU 214 STEP 7-Micro/Win Pointer programierren

Chris80

Level-1
Beiträge
182
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ich habe eine Druckentwässerrung. Ich Steuer Sie mit einer CPU 214 . Über ein Zähler zähle ich die Einschalthäufigkeit der pumpe. Den wert setzte ich um 0 Uhr wieder zurück. Ich würde gerne den wert in eine Datenbaustein speichern so das jeder tag dort abgelegt wird. Ich dachte an ein Pointer der immer ein wort weiter springt. Die Hilfe in Micro win hilft nicht wirklich. Da ist so ein beispiel was aber auch nicht geht:

Code:
MOVD   &VB0, AC1
MOVW   AC1, MW20
+D     +2, AC1
MOVW   AC1, MW22
Habt ihr eine Idee?
 
Hi Kollege,

eigentlich ist das relativ einfach, das "&" sagt, dass es hier um eine Adresse geht; Der Wert von dort kann man rausholen, wenn man ein "*" davor setzt.

MOVD &VW0, AC1 // hier wird in Akku 1 die Adresse VW0 geladen
MOVW *AC1, AC0 // der Wert der Variable von o.g. Adresse wird in AC0 kopiert
+D +2, AC1 // AC1 wird um 2 inkrementiert( Adresse !!!), also steh dort jetzt VW2
MOVW *AC1, AC0 // der Wert der Variable von Adr. im AC1 wird in AC0 kopiert, also der Wert von VW2

Alles klar? :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke vladi
Ne ich bekomme es nicht hin.

in MW10 steht zb 123

Ich habe mir ein zähler gemacht der immer um 2 zahlen steigt: 2,4,6,8....
jetzt soll der das mw10 ausgelesen werden dann der zähler zb. 4

dann müsste er mir den wert von mw10 in vw4 schreiben.


da ne idee zu?
 
Zuletzt bearbeitet:
Hallo,
MOVD &VW0, AC0 // hier wird in Akku 1 die Adresse VW0 geladen
+D ZÄHLER, AC0 // AC0 wird um ZÄHLER inkrementiert ( Adresse !!!), also steh dort jetzt VW(Zähler)
MOVW MW10,*AC0 // der Wert von MW10 geht in VW(Zähler)

Gruss: Vl.
 
Also ich werde es mal so versuchen
einschaltvor = ne zahl wie oft die pumpe anlief
aus mb12 lese ich den tag noch aus der dann auch in den db geschrieben werden soll.

NW1
Code:
MOVD   &VB0, AC0
+I     pointer, AC0
MOVW   einschaltvor, AC0

NW2 /// wird nur die zeit ausgelsen und die 8 bytes ab mb10 geschrieben
Code:
LD     SM0.0 
TODR   MB10

NW3 wenn m5.0 kommt wird pointer um 2 erhöt (passiert einmal am tag)
Code:
LD     M5.0
EU
+I     2, pointer

NW 4 Tag soll in db geschrieben werden

Code:
MOVD   &VB0, AC0
+I     pointer, AC0
MOVB   MB12, AC0

NW5 pointer wird wieder um 2 erhöt für nächste schleife.
Code:
LD     M5.0
EU
+I     2, pointer


Und wird das wohl hinhauen?

Vielen Dank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ne will nicht Funktionieren.
Hier mal ganz einfach was eigentlich gehen müsste:
Code:
MOVD   &VB0, AC0
+D     md0, AC0
MOVW   mw10, AC0

Über die statustabelle schreibe ich in das MD0 Die zahl 2 und in das MW10 die zahl 12.

Jetzt müsste doch in den VB2 die zahl 12 stehen oder?

Ist aber nicht so.

Warum?
 
Zurück
Oben