Struct aus Bytes auf Ausgänge abbilden

Kaffeesüchtig

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

ich habe hier einen Profibusteilnehmer, mit dem ich teste und der evtl. später als Serienmodul verwendet werden soll.
Um diesen zu konfigurieren muss ich ihm 16 Byte übermitteln.
Mit einem einfachen Testprogramm, bei dem ich die entsprechenden Hex-Werte direkt in die ABs geschrieben habe, hat das auch funktioniert.
Nun will ich aber in der fertigen Version nur noch das Startbyte an den Call antragen und nicht mehr die 16 einzelnen ABs. Sprich, der Teilnehmer ist Adressiert auf AB201 bis 216, ich gebe dem FB im Call die Information mit, dass das erste Byte auf 201 liegt und er schiebt mir das Abbild eines Structs mit 16 Byte von der Startadresse an automatisch auf die Ausgänge.
Gibt es eine Möglichkeit, dieses Struct direkt auf die entsprechenden Ausgangsregister zu laden?
Dachte am Anfang, BLKMOV könnte das, der kann aber nur als Quellen Ein- und Ausgänge Blockweise verschieben.

Danke
 
Da es sich beim Ziel um einen Profibusteilnehmer handelt, würde ich das
mit dem SFC15 (DPWR_DAT) machen:
Code:
CALL "DPWR_DAT"
  LADDR :=W#16#C9                 //Adresse 201
  RECORD :=P#DB10.DBX 0.0 BYTE 16 //Pointer auf die Struktur
  RET_VAL:=#dummy

Gruss SW-Mech
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dachte am Anfang, BLKMOV könnte das, der kann aber nur als Quellen Ein- und Ausgänge Blockweise verschieben.

Danke


Erst mal stimme ich SW-Mech vorbehaltlos zu.

Aber zum einen verschiebt die SFC20 nicht, sondern kopiert, auch wenn das Ding Blokmove heißt.
Und zum anderen, habe ich durchaus auch schon DB- und Merkerbereiche als Quelle parametriert.
 
Hi,

@SW-Mech:
Muss das mit dem SFC15 mal in Ruhe durchprobieren. Ein erster Schnellschuss hat nicht geklappt.

@derWestermann:
Als Quelle kann man alles definieren, aber als Ziel gehen keine Ein- und Ausgänge. Und genau da war mein Problem.

Ich komme erst am Freitag dazu, aber ich schaue mir den SFC15 noch mal in Ruhe durch.

Gruß
 
Un wenn du nich immer die doofen Hexzahlen am SFC15 nehmen willst schreibst so (Variablendeklaration nicht vergessen):

L inAddr_int //Also an Eingangsvariable 201 angeben
T tmpAddr_hex //201 wird automatisch in die als "word" deklarierte temporäre Variable geschoben

Code:
CALL "DPWR_DAT"
  LADDR :=tmpAddr_hex                 //Adresse 201
  RECORD :=P#DB10.DBX 0.0 BYTE 16 //Pointer auf die Struktur
  RET_VAL:=#dummy
 
Zurück
Oben