SFC 20 indirekt adressieren

drmicha

Level-2
Beiträge
15
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

folgende Situation: Ich habe einen FB in dessen IDB ein struct von 8 Doppelwörtern (Empfangspuffer) und 3 structs zs1, zs2, zs3 mit jeweils 8 doppelwörtern (Zwischenspeicher 1-3) vorhanden sind. Ich hole von einer peripheren Baugruppe eine Liste mit 8DW in den Empfangspuffer, transportiere sie mit SFC 20 in den ZS1, hole die nächste Liste in den EP, transportiere sie mit SFC20 in ZS2, hole die 3. Liste in den EP und transportiere sie wieder mit SFC 20 in den ZS3. Nun habe ich versucht, den SFC20 indirekt zu adressieren, dabei bin ich gescheitert.
Wenn ich beim ersten Aufruf an SRCBLK #ep und an DSTBLK #zs1 schreibe, beim 2. Aufruf #ep an SRCBLK und #zs2 an DSTBLK, beim 3. Aufruf wieder #ep an SRCBLK und #zs3 an DSTBLK, funktioniert das. Nun wollte ich aber die SFC 20 nur einmal in einem Netzwerk stehen haben, und vorher je nach Aufrufbedingungen einer Variable (z.B. #ziel) die verschiedenen Zielbereiche zuweisen, die Quelle ist ja in allen 3 Fällen gleich. Ich hatte mir das etwa so vorgestellt:
u M1.0 //Aufrufbedingung1
spbn end1
L P#zs1
T #ziel
end1: Nop 0

u M1.1 //Aufrufbedingung2
spbn end2
L P#zs2
T #ziel
end 2: Nop 0

usw. und dann SFC 20 mit SRCBLK #ep und DSTBLK #ziel aufrufen.

Das geht leider gar nicht. Auch mit einem MD und [#ziel] hatte ich keinen Erfolg. Geht das überhaupt so, wenn ich mich in einem FB und dem dazugehörigen IDB bewege?

Leider habe ich zu Hause nichts, um Beispielcode zu erzeugen, die Beschäftigung mit der Share- Version von WinSPS7 habe ich frustriert aufgegeben.

Ich hoffe, jemand hat eine Idee.
Gruß Micha
 
Du brauchst nicht Indirekt Adressieren
Code:
  U  #steuervariable
      SPBNB _001
      CALL  "BLKMOV"
       SRCBLK :=#Strk_1
       RET_VAL:=#Ret_Val_sfc_20
       DSTBLK :=#Strk_1_t
_001: NOP   0

      UN    #steuervariable
      SPBNB _002
      CALL  "BLKMOV"
       SRCBLK :=#Strk_1_t
       RET_VAL:=#Ret_Val_sfc_20
       DSTBLK :=#Strk_2_t
_002: NOP   0
Je Bedingung ein sfc20 Aufruf
mit ablage in entsprechender Structur
 
ich stimme jabba zu. es ist zwar etwas arbeit wenn dus selbst machst aber den wirst du immer wieder brauchen.
siehe Aufbau Anypointer. Wenn du nicht zurecht kommst kann ich dir meinen am Montag senden.

ist in Prinzip ein FC in dem du Datentyp, anzahl, ziel adresse, quelladresse und speicherberich angeben musst.
 
Zurück
Oben