plc_tippser
Level-1
- Beiträge
- 2.493
- Reaktionspunkte
- 315
-> Hier kostenlos registrieren
Beitrag von unserm registrierten User "Unregistrieter Gast":
Forumsfrage
Genau das ist ja auch der Sinn eines Pointers.
So wie du dein vorgehen beschreibst, würdest du ja keinen Pointer brauchen.
Den Pointer setzt mann ein, um dynamisch die Adresse oder auch nur Adressbereiche (BitNr., Byte, Bereich) zu "verbiegen".
Du musst zunächst den Pointer aus seinem bytearray "zerpflücken", dann kannst du an die einzelnen Adresssegmente ran, siehe hier:
=========== AWL ANFANG ===============
=========== AWL ENDE ===============
in der Deklarationszeile der
EINGANGSPOINTER als Pointer (In)
Pnt_Bit als Doppelwort (Temporär)
DB_Nr als Int (Temporär)
Das steht übrigens auch sehr schön in der S7 - Hilfe beschrieben !
Viel Spaß noch mit den Pointern!
Forumsfrage
Hallo!
Wie kann ich einen FC Eingang der als Pointer deklariert ist, weiterverarbeiten?
Am Eingang des FCs ist jetzt z.B. P#E0.0 angelegt. Wenn ich aber jetzt im
FC den Aufruf 'L P##Eingang' mache, dann habe ich ja nur die Pointeradresse von der Variable "Eingang" und nicht von P#E0.0
Genau das ist ja auch der Sinn eines Pointers.
So wie du dein vorgehen beschreibst, würdest du ja keinen Pointer brauchen.
Den Pointer setzt mann ein, um dynamisch die Adresse oder auch nur Adressbereiche (BitNr., Byte, Bereich) zu "verbiegen".
Du musst zunächst den Pointer aus seinem bytearray "zerpflücken", dann kannst du an die einzelnen Adresssegmente ran, siehe hier:
=========== AWL ANFANG ===============
Code:
L P##EINGANSPOINTER // Andresse des Eingangs- Bits, aus Pointer lesen
LAR1 // Adresspointer adressieren
L W [AR1,P#0.0] // erstes Wort eines Pointers enthält DB-Nr.
T #DB_NR
L 0 // Wenn DB-Nr = 0, dann kein D sondern E/A/M
==I
SPB noDB
AUF DB [#DB_NR] // Wenn DB-Nr <>0, dann DB öffnen
noDB: L D [AR1,P#2.0] // Bereichskennung. Byte u. Bitadresse
T #Pnt_Bit
LAR1 // ergibt Zieladresse als Eingangs-Adresse !!!!!!
U [AR1,P#0.0]
= #EINGANG // Errechnete Bitposition ist das Eingangs-Bit.
U #EINGANG
=
in der Deklarationszeile der
EINGANGSPOINTER als Pointer (In)
Pnt_Bit als Doppelwort (Temporär)
DB_Nr als Int (Temporär)
Das steht übrigens auch sehr schön in der S7 - Hilfe beschrieben !
Viel Spaß noch mit den Pointern!
Zuletzt bearbeitet: