na ja, wie habe ich schon geschrieben, diese Programm hat schon
so wie hat mir schon hier früher erklärt
es muss so sein:
wenn steht MW30 , dann als normale Merker die kommt nächste ab M32.0
Normalerweise ja.
oder es spielt keine Rolle, weil M31.0 steht in PB10, und MW30 steht in FB1
Nein, damit hat es garnichts zu tun
kann man mir noch mal langsam erklären,
ob die Programme war Falsch geschrieben oder ich habe noch nicht verstanden
Ob das Programm richtig oder falsch ist, kann Dir niemand aufgrund dieser Angaben sagen. Da muss man schon das ganze Programm kennen.
Es gibt zwei Möglichkeiten, sowohl MW30 als auch M31.0 zu benutzen:
1. Der Teil, in dem MW30 verwendet wird, benutzt MW30 für ein Zwischenergebnis, dass im folgenden Programm keine Bedeutung mehr hat. In einem anderen Programmteil wird M31.0 benutzt ,ohne dass sein Zustand zu Beginn dieses Programmteils wichtig wäre. Ob diese beiden Programmteile in verschiedenen oder demselben Baustein stehen, ist dabei völlig egal.
Beispiel:
Teil 1, nimmt den Wert von EW10 mit 10 mal und gibt es auf AW40
aus. Das ist nur ein Beispiel. MW30 wird hier als Zwischenspeicher verwendet. Der Wert am Beginn dieses Abschnitts ist egal.
Code:
L EW 10
SLW 1
T MW 30
SLW 2
L MW30
+F
T AW40
Teil 2, macht etwas mit dem Merker M31.0. Er darf NUR als Zwischenergebnis verwendet werden, weil er am Beginn dieses Abschnitts den zufäliigen Wert des letzten Bits von MW 30 hat.
Code:
U E 17.2
U M16.5 //Hier dürfte kein Merker aus MW 30 stehen
= M31.0 // Hier ja,weil er gesetzt und nicht gelesen wird
U M31.0 // jetzt darf man damit arbeiten
...
Code wie in diesem Beispiel kann "schlechter Stil" sein. Er entsteht aber leicht z.B. dadurch, dass man Programmteile aus anderen Projekten wiederverwendet. Dabei kann es sinnvoll sein, in eigenen Programmen immer wieder dieselben Adressen für Zwischenergebnisse zu verwenden.
2. Eine ganz andere Möglichkeit ist es, mit Absicht ganze Gruppen von Bits mit Wortbefehlen zu bearbeiten.
Beispiel:
Code:
FB1:
L EW 0 // alle Signale E0.0 bis E1.7
L MW 30
BE
FB2:
L EW 20 // alle Signale E20.0 bis E21.7
L MW 30
BE
Diese Sache ist sinnvoll, wenn entweder FB1 oder FB2 aber nie beide aufgerufen werden. An EW0 und EW20 könnten hier Signale baugleicher Maschinen angeschlossen sein. Je nach Stellung eines Umschalters soll eine oder die andere Machine benutzt werden.
Ab hier hat M31.0 denselben Wert wie E1.0 oder wie E21.0. Das gilt natürlich sinngemäß auch für alle anderen Bits.