cpu stop indirekte adressierung pointer

falk.jaeger

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
hi,
nun mal meine erste frage, bin dabei mich mit pointer und indirekter adressierung zu bschäftigen,...was mir eher schwer fällt...

folgendes zeilen bringen meine cpu in stop immer wieder mit bereichslängenfehler beim schreiben,fehleradresse ist immer das letzte dw
was ich im db angelegt habe.
das ganze soll nur ein test sein, ich möchte beliebige werte, hier das eb0 fortlaufend in einen db schreiben!

UN M 33.0
SPB ende

L MW 100
SLD 3
LAR1

L EB 0
AUF DB 2
T DBW [AR1,P#0.0]

L MW 100
+ 2
T MW 100

ende: R M 33.0

danke für eure hilfe, habe schon die suche gequält, sämtliche beitrage gelesen, will blos ni so richtig rein in den kopf.

mfg
 
begrenzt du das MW100 irgendwo? ... irgendwann ist ja dein DB mal zu ende und dann zeigst du ins leere und fabrizierst den fehler
 
stelle vor dem ersten schreiben sicher, daß MW100 0 ist
stelle sicher, dass MW100 nicht größer als dein DB wird.
 
Hallo,
bin mir zwar nicht ganz sicher aber glaube dass der Zeiger auf einen Pointer (MW100) als Doppelwort ausgeführt werden muss. Bin mir aber nicht mehr ganz sicher.
Viele Grüße
rkoe
 
mw 100 ist lt. vat bevor ich m33.0 setze 0, beim setzen ist cpu sofort in stop.
wenn ich in der vorletzten zeile t mw 100 weg lasse dann geht sie nicht in stop, aber beschreibt nur das dw0.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
mw 100 ist lt. vat bevor ich m33.0 setze 0, beim setzen ist cpu sofort in stop.
wenn ich in der vorletzten zeile t mw 100 weg lasse dann geht sie nicht in stop, aber beschreibt nur das dw0.

sofort und sofort sind hier zwei unterschiedliche dinge ... wenn du nur das in der cpu hast dürfte deine zykluszeit <5ms sein ... wie lang ist dein DB? ;)

sag einfach, wenn MW100 = letztes wort im DB führe die schreibprozedur nicht mehr aus
 
ihr seid einfach nur groß, danke was für ein simpler anfängerfehler...
man sollte wirklich die zykuszeit beachten...grins..., die flanke wars...
sonst ist der db sofort voll.


danke an alle...

mfg

falk
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ihr seid einfach nur groß, danke was für ein simpler anfängerfehler...
man sollte wirklich die zykuszeit beachten...grins..., die flanke wars...
sonst ist der db sofort voll.


danke an alle...

mfg

falk

begrenzen mußt du trotzdem!!! irgendwann ist der DB zu ende!
 
@falk.jaeger

1. wie Vl schon sagte, MW100 begrenzen - janz wichtich
2. sollte M33.0 aus einer Zuweisung resultieren, ist der Rücksetzbefehl eh fürn A... ,ich wollte sagen, nicht so ganz glücklich gewählt
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ja mit dem begrenzen ist mir jetzt klar, bzw. ne schleife oder so,
das wird dann die nächste übung...grins...

bei mir hatte es nur an der flanke gelgen, hatte die zykl. zeit ausser acht gelassen...da konnte ich nix sehen ausser stop, da der dp sofort voll war...

mfg

falk
 
momentan funktioniert das Rücksetzen nur wenn M33.0 = 0 ist ;-) Ansonsten ist das VKE vorm Rücksetzbefehl 0.



so würde es gehn


André

Das halt ich für Falsch. SPB ist VKE-begenzend.

Hierzu der Ausschnit aus der Step7-Hilfe:

Wenn VKE = 1, unterbricht SPB <Sprungmarke> den linearen Programmablauf und springt an das Sprungziel. Der lineare Programmablauf wird am Sprungziel fortgesetzt. Das Sprungziel wird durch eine Sprungmarke angegeben. Es kann sowohl vorwärts als auch rückwärts gesprungen werden. Sprünge können nur innerhalb eines Bausteins ausgeführt werden, d. h. die Sprunganweisung und das Sprungziel müssen innerhalb desselben Bausteins liegen. Das Sprungziel darf innerhalb dieses Bausteins nur einmal vorhanden sein. Die maximale Sprungweite liegt bei -32768 bzw. +32767 Wörtern des Programmcodes. Die tatsächliche maximale Anzahl der Anweisungen, die übersprungen werden können, hängt von der Kombination der Anweisungen innerhalb des Programms ab (Ein-, Zwei- oder Dreiwortanweisungen).

Wenn VKE = 0, wird der Sprung nicht ausgeführt. Das VKE wird auf "1" gesetzt, und der Programmablauf wird mit der folgenden Anweisung fortgesetzt.

Daran sieht man, daß egal ob mit oder ohne Sprungausführung, das VKE ist nach SPB 1. Weiter VKE-beinflussende Dinge werden nicht durchgeführt, also wird M33.0 immer zurückgesetzt.

Allerdings würde ich aus rein praktischen Gründen auch ein Set davor schreiben. Fall mal Code vor dem R M33.0 ergänzt wird, bleibt die Funktion des Reset in jedem Falle erhalten.
 
Zuletzt bearbeitet:
ihr zerbrecht euch ja wahrlich den kopf, ich erfreue mich daran dass der pointer erstmal so funzt und mir den db voll schreibt, werde damit noch bissl experimentieren...

@ralle werde morgen abend mal dein angesprochenes testen,
heut habsch erstmal keine lust mehr, habe zu lange im trüben gefischt
und die zykluszeit nicht beachtet...

goog night > RUN
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Spb

ok Ralle, wieder was gelernt.. glaub aber nicht dass ich das mal einsetzen werde. Dann wars wohl dass er den M33.0 per "=" auf 1 gebracht hat und dann nützt auch kein Reset etwas. Also R M33.0 kann raus.

André
 
Zurück
Oben