Frage zu Lade und Transfer

Pockebrd

Level-1
Beiträge
327
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe folgendes in einen Netzwerk geschrieben.
Das Problem was ich nicht verstehe, sobald ich den FC übertrage, schreib er mir gleich die 8 in den DB2.
Meine vorstellung war das er die 8 erst in den DB2 schreibt wenn ich den Merker 42.3 auf true setz, bzw die 4 wenn ich den M42.2 auf true setz. Hatte es auch beobachtet, die Merker waren auf 0.


U M42.1
L 2
T DB2.DBB 1
U M42.2
L 4
T DB2.DBB 1
U M42.3
L 8
T DB2.DBB 1



Gruß Markus
 
Das verhalten ist richtig.
Laden und Transferieren ist VKE unabhängig.
Das, das du willst, kannst du nur mit Sprüngen lösen


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Lade- und Transferbefehle sind grundsätzlich VKE unabhängig.

Dein Programm müsstest Du z.B. so abändern:

Code:
     UN  M42.1
     SPB M001 
     L 2
     T DB2.DBB 1
M001 UN M42.2
     SPB M002
     L 4
     T DB2.DBB 1
M002 UN M42.3
     SPB M003
     L 8
     T DB2.DBB 1
M003 NOP
 
Ah, ok. Das es VKE unabhängig ist wuste ich nicht.
Dann spring ich zu dem Punkt den ich Laden möchte und danach BE ?

Gruß Markus
 
Lade- und Transferbefehle sind grundsätzlich VKE unabhängig.

Dein Programm müsstest Du z.B. so abändern:

Code:
     UN  M42.1
     SPB M001 
     L 2
     T DB2.DBB 1
M001 UN M42.2
     SPB M002
     L 4
     T DB2.DBB 1
M002 UN M42.3
     SPB M003
     L 8
     T DB2.DBB 1
M003 NOP


Und was macht er wenn ich die 4 geladen und geschrieben habe, geht er dann nicht weiter zu der 8 ?
 
Wenn Du einen von drei Werten in dasselbe Byte schreiben willst, so darf nur einer der drei Merker TRUE sein, die anderen beiden FALSE. Bei FALSE werden die nachfolgenden Anweisungen bis zur Sprungmarke ignoriert, sie werden übersprungen. Sind alle drei Merker FALSE, wird kein Wert geladen und deswegen auch nichts transferiert. Dann bleibt der zuletzt geschriebene Wert des Bytes erhalten.

Edit: Da ich nicht weiss, wie Dein Baustein aussehen: Wenn anschließend nichts mehr in dem Baustein passieren soll, kannst Du bei der Marke 003 statt NOP 0 auch BE schreiben.
 
Zuletzt bearbeitet:
funktioniert leider NICHT !!!

müsste dann schon so aussehen


UN M42.1
SPB M001
L 2
T DB2.DBB 1
spa M003
M001 UN M42.2
SPB M002
L 4
T DB2.DBB 1
spa M003
M002 UN M42.3
SPB M003
L 8
T DB2.DBB 1
spa M003

Hier muss jetzt rein was passieren soll wenn keine der Bedingungen erfüllt ist

M003 NOP
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
funktioniert leider NICHT !!!

müsste dann schon so aussehen


UN M42.1
SPB M001
L 2
T DB2.DBB 1
spa M003
M001 UN M42.2
SPB M002
L 4
T DB2.DBB 1
spa M003
M002 UN M42.3
SPB M003
L 8
T DB2.DBB 1
spa M003

Hier muss jetzt rein was passieren soll wenn keine der Bedingungen erfüllt ist

M003 NOP

Also warum es so, wie 190B geschrieben hat, nicht funktionieren sollte, sehe ich nicht.
Aber absoult unschön ist eine Integer in ein Byte zu schieben und dazu noch DB2.DBB1 :rolleyes:, bei DBB 0 wäre es vielleicht irgendwie noch verständlich.


bike
 
Vielleicht so...

Hier besteht die möglichkeit Piroritäten zu setzen oder Alternativen zu speichern.

Code:
*
//2 als Wert auswählen
     L 2
     U   M42.1
     SPB M001 

//4 als Wert auswählen
     L 4
     U   M42.2
     SPB M001

//8 als Wert auswählen
     L 8
     U   M42.3
     SPB M001

//kein Bit gesetzt
     SPA M002

//Wert speichern
M001:T DB2.DBB 1
M002:NOP
 
funktioniert leider NICHT !!!

müsste dann schon so aussehen


UN M42.1
SPB M001
L 2
T DB2.DBB 1
spa M003
M001 UN M42.2
SPB M002
L 4
T DB2.DBB 1
spa M003
M002 UN M42.3
SPB M003
L 8
T DB2.DBB 1
spa M003

Hier muss jetzt rein was passieren soll wenn keine der Bedingungen erfüllt ist

M003 NOP

Warum das nicht funktionieren soll, kann ich auch nicht nachvollziehen. Da hätte ich schon gerne eine Begründung... ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ok du hast rech aber nur unter der voraussetzung, dass immer der letzte Merker priorität hat wenn mehr als ein Merker 1 ist.
Desweiteren verbleibt immer der letzte Wert im DB wenn kein Merker 1 ist.
Ob man das so will entscheidet die Anwendung.

peter(R)
 
@RN,

Dein Beispiel ist nur eine andere Form, deswegen hatte ich ja bei mir z.B. geschrieben... ;)
 
ok du hast rech aber nur unter der voraussetzung, dass immer der letzte Merker priorität hat wenn mehr als ein Merker 1 ist.
Desweiteren verbleibt immer der letzte Wert im DB wenn kein Merker 1 ist.
Ob man das so will entscheidet die Anwendung.

peter(R)

Ja, und Du setzt einfach die Priorität des zuerst gesetzten Merkers voraus (wenn mehr als 1 Merker TRUE hat).

Deswegen hatte ich ja auch in der anderen Antwort geschrieben (wie bike auch): Verriegeln, wenn man 3 Werte in dasselbe Byte schreiben will.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@RN,

Dein Beispiel ist nur eine andere Form, deswegen hatte ich ja bei mir z.B. geschrieben... ;)

Hast recht. Ich habe auch deinen Code nicht in frage gestellt.
Ich wollte nur einen weg zeigen, evtl kann er sogar auf Verriegelungen verzichten.
 
Hallo RN,

wir machen uns mal wieder alle mehr Gedanken als der TE. Er teilt uns wieder einmal nicht mit, was er eigentlich bezweckt. Eigentlich hat man ja mit so etwas vor, eine Rektion auf eine bestimmte Aktion zu erreichen (Wenn Aktion m, dann schreibe Wert n, wenn Aktion x, dann schreibe Wert Y usw.).
Will ich Prioritäten festlegen, muß ich das über Verriegelungen oder bestimmte Reihenfolgen bei den Abfragen regeln.
Ich behaupte einfach mal, der TE wollte nur das Grundprinzip erklärt haben (weil, wie er selber schrieb, ihm VKE-Unabhängigkeit nicht bekannnt).
Und ich habe das auch nicht so gesehen, daß Du meinen Code in Frage stellen wolltest.
So wie ich Dich bisher "kennen gelernt" habe, dann hättest Du auch geschrieben: Geht nicht. ;)
 
Vielleicht so...

Hier besteht die möglichkeit Piroritäten zu setzen oder Alternativen zu speichern.

Code:
*
//2 als Wert auswählen
     L 2
     U   M42.1
     SPB M001 

//4 als Wert auswählen
     L 4
     U   M42.2
     SPB M001

//8 als Wert auswählen
     L 8
     U   M42.3
     SPB M001

//kein Bit gesetzt
     SPA M002

//Wert speichern
M001:T DB2.DBB 1
M002:NOP

Das sieht schon viel besser aus...

Man kann auch statt SPA M002 --> L 0 schreiben und M002: NOP weglassen, wenn man einen Default schreiben möchte, falls keine Bedingung erfüllt ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
wie 190B schon erwähnt hat, ist es mir nur um das Grundprinzip gegangen. Wollte zur Übung einfach mal ein paar Zahlen in ein Byte oder Word schreiben.
Und das wenn ich ein Merker oder Eingang setzte. Hatte es Simuliert und das gewünschte Ergebniss aber nicht erreicht.
Das Byte oder Word hätte ich dann in einer anderen Stelle (z.B. Panel) wieder abgefragt.
Bin jetzt wieder etwas weiter, danke. Werde es bei Gelegenheit testen.
 
Zurück
Oben