Step 7 Bereichslängerfehler beim Schreiben bei einer peripherie Ausgang CPU 414 -2DP

pianissimo1989

Level-1
Beiträge
5
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich hab ein kleines Problem bei einer CPU 414-2DP

Auf der Diagnosepuffer ist :
Bereichslängenfehler beim Schreiben
A-Bereich, Bitzugriff, Zugriffadresse : 611
FC- Nummer 200
Bausteinaresse 302
ANgeforderter OB Programmierfehler-OB OB121
Prioritätsklasse 1


Auf der FC versuche ich ein bit zu schreiben (mit einem simple Move) auf die Adressen A 611.0 bis A611.7. Die Adressen A 611.0 --- bis A 611.7 sind in der Symbolliste bereits definiert als einzelne Bits. Und diese Adressen sind im HW Konfig definiert ( bei einem DP DP Koppler Ausgang und Eingang (608 - 735) )

Ich verstehe nicht wo das Problem liegt....
Könntet ihr mir bitte helfen?

Vielen Dank im Voraus
 
Du hast also eine Move-Box mit der du einen Wert auf AB611 schreibst, oder auf PAW611?
Wie groß ist dein Prozessabbild eingestellt (HW Konfig aufrufen, unter "Zyklus / Taktmerker")?
 
Ich korrigiere mich: ich habe es mit dem Operand = gemacht (jedes bit hat seine Voraussetzung)

Grosse des Prozessabbilds : 256 (bei Ausgand und Eingan...) : ist das das PRoblem? der kann nicht mehr als 256 lesen/schreiben?

vielen dank.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du könntest das Prozessabbild vergrößern, z.B. für deinen Anwendungsfall auf 736. Dadurch wird die Zeit zwischen zwei OB Zyklen aber größer falls das relevant sein sollte. Dann kannst du mit =A611.1 ein einzelnes Bit schreiben.
Über den Peripheriezugriff kannst du keine einzelnen Bits schreiben, die kleinste Größe ist dann 1 Byte mit z.B. L B#ff T PAB 611.
 
Ich verstehe jetzt. was ist wenn ich das Prozessabbild nicht vergrössern möchte?
was ist die Lösung?

1/- die Peripherie als Wort z.b. zu definieren. PAW 610. und ein MW definieren (MW610)
2/- alle einzelne bits in M 610.0 ..... 610.7 611.0 ....611.7 schreiben
3/- mit einem Move MW 610 zu PAW610 schreiben

wäre das möglch?
 
Ja. Genau so kann man es machen. Noch ein bisschen schöner: ein STRUCT in einem DB anlegen, was die Bit/Byte-Struktur der Steuersignale/Statussignale abbildet und dann byte/word/dwordweise an die Peripherie ausgeben bzw. aus der Peripherie einlesen.

Harald
 
Zurück
Oben