mehrere Eingänge einem DB zuweisen in einem Netzwerk per AWL?

babylon05

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

Ist es, wenn ja wie möglich, wenn ich in einem FC in einem Netzwerk mehrere Eingänge einen DB zuweise per AWL.
Arbeite bis jetzt meist nur in KOP oder FUP
dort nehme ich z.B. UE0.0 = DB10.DBX0.0 als ein Netzwerk, der nächste U0.1 = DB10.DBX0.1 in einem anderen Netzwerk.

Lässt sich das in AWL bißchen Platz sparender programmieren, da ich grundsätzlich alle Aus und Eingänge in DB's schiebe.

mfg
 
wenn es größere zusammenhängende Bereiche sind nutz den SFC 20 (BLKMOV) kannst du angeben wieviel du verschieben willst. ansonsten über eine schleifenprogrammierung in AWL. aber denke mal der SFC 20 sollte das ganz gut lösen was du suchst.

grüße der Panther
 
Kannst dir auch sonst die mühe machen und die eingänge einzeln ablegen und direkt so drehen wie du se brauchst
Code:
NW1

U E0.0 //Gut-Zustand 0
= DB10.DBX0.0
UN E0.1 //Gut-Zustand 1
= DB10.DBX0.1
U E0.2
= DB10.DX0.2
.....

Kannst du endlos weiter führen ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo babylon05,

welche Vorteile hast Du davon, alle DE und DA in Datenbausteine zu schieben. Ist da der Aufwand nicht ein bisschen zu hoch?
Ich hatte solches auch schon mal in Merkerbereiche geschoben, fand das dann aber nicht so doll.
Im DB macht es dann ja auch nur Sinn, wenn jedes Bit auskommentiert ist. Das kann dann auch sehr umfangreich werden.
Welchen Umfang an DE/DA haben Deine Projekte in etwa?
Als einzigen Vorteil sehe, dass man Eingangssignale bei der Inbetriebnahme notfalls nur an einer Stelle negieren muß.

Gruß
kalle B
 
Hallo kalle_B

das ist mein eigenes Homeprojekt, ich schiebe immer alles in einem DB um z.B. den Eingang Tür verschlossen dann einfach im OP anzeigen zu können.
 
@Verpolt

bei den Eingängen klappt es mit dem Code, habe dort z.B.
Code:
L ED 0
 T DB2.DBD0

aber die Ausgänge klappen nicht
Code:
L AD 0 
T DB3.DBD0

habe Ein- und Ausgänge in 2 unterschiedliche DB's gesteckt

Dann habe ich mal zum Testen M0.1 welcher immer eins ist mit einer Anweisung im OP1 geschrieben
Code:
UM0.1
= DB3.DBX0.0

im DB3 wird er mir mit Brille auch True angezeigt aber an der Hardware selber ist die LED am Ausgang 0.0 aus.


mfg
 
...
Dann habe ich mal zum Testen M0.1 welcher immer eins ist mit einer Anweisung im OP1 geschrieben
Code:
UM0.1
= DB3.DBX0.0

im DB3 wird er mir mit Brille auch True angezeigt aber an der Hardware selber ist die LED am Ausgang 0.0 aus.
...
Du mußt den Ausgang selber schalten und nicht das Bit im DB. Das wird ja sonst vom Ausgang immer wieder überschrieben.
Also z.B. so:
Code:
U M0.1
= A0.0
 
Zusammengefasst: Es kommt auf die Reihenfolge an.

Hier wird ein Doppelwort im DB überschrieben:
L AD 0
T DB3.DBD0

Hier wird ein Bit im DB überschrieben:
U M 0.1
= DB3.DBX0.0

Hier wird ein Ausgangsbit überschrieben:
U M 0.1
= A 0.0

Hier wird ein AusgangsDoppelwort überschrieben:
L DB3.DBD 0
T AD 0


Dein Problem war:
"aber die Ausgänge klappen nicht"


Wenn du die E/A s in einer Visu beobachten willst, jedoch von dort nicht ändern, dann:

--- OB1 anfang: ---
L ED 0
T DB2.DBD0

--- OB1 mittelteil: ---
das Programm

--- OB1 ende: ---
L AD 0
T DB3.DBD0

BE

Das Programm ändert (warscheinlich !) die Ausgänge, die nach dem OB1 von der CPU auf die Klemmen kommen.
Das
L AD 0
T DB3.DBD0
ans ende setzen damit du siehst was das Programm mit den Ausgängen gemacht hat.

ggf. auch
L ED 0
T DB2.DBD0
ans ende setzen denn manche "Trickser" setzen die Einganangsbits kurzerhand um.
(ja das geht - denn E sind auch nur RAM-Bits.)
PEB sind die echten Eingänge die vorm Anfang vom OB1 in die EB von der CPU kopiert werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Senator42

mit
Code:
L DB3.DBD 0
T AD 0

klappt es jetzt, so dass z.B. im DB ein Bit gesetzt ist auch der Ausgang (LED) an ist.
Nur deinen letzten Punkt mit dem Trickser habe ich nicht verstanden.
 
> Nur deinen letzten Punkt mit dem Trickser habe ich nicht verstanden.

das ist, was man nicht machen sollte:

UN E 0.0
= E 0.0

und dann im programm weiter mit U E 0.0 weiterarbeiten.
die beiden befehle drehen das signal um.
ändert aber nicht was an der klemme tatsächlich anliegt.

hier nur erkärt, damit man sowas versteht wenn man sowas mal trifft.

dann lieber:
UN E 0.0 --- Notaus gedrückt
= M 100.0 --- Notaus ok
 
Zurück
Oben