Step 7 Array an FB übergeben

sailor

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

aus einer Funktion erhalte ich ein Array [0..3] als OUT.
Dieses möchte ich einer zweiten Funktion übergeben, ohne jedes Element separat transferieren zu müssen.

Beispiel: ROTZ ist ein OUT - Array [0..3] des FB #Drehung und soll an das IN - Array [0..3] des FB #RDG_Aufbau übergeben werden
CALL #Drehung
PHI :="Interface".Winkel_Drehen
PHI0:=0.000000e+000
ROTZ:=



CALL #RDG_Aufbau
POS1 :=
ROT1 :=
POS2 :=
ROT2 :=
POS12:=
ROT12:=
Gruß
Sailor
 
Hallo,

ROTZ heisst Rotaton um die Z-Achse :) ist doch klar Manno.

Das Problem ist, dass das nicht geht:

L P##drehung.ROTZ //Ein OUT-Array der Multi-FB-Instanz "drehung"
T P##RDG_Aufbau.ROT2 //Ein IN-Array der Multi-FB-Instanz "RDG_Aufbau"


Ich will die Elemente der Arrays nicht alle einzeln rüberhacken.
Das Problem ist weiter, das ich eine ellenlange Latte an solchen Code hab.
@rene: das geht auch nicht
 
Zuletzt bearbeitet:
2 Möglichkeiten
Code:
      CALL  #Drehung
       PHI :="Interface".Winkel_Drehen
       PHI0:=0.000000e+000
       ROTZ:=#mein_uebergabearray


      CALL  #RDG_Aufbau
       POS1 :=
       ROT1 :=#mein_uebergabearray
       POS2 :=
       ROT2 :=#Drehung.ROTZ
       POS12:=
       ROT12:=

Die Arrays müssen exakt gleich deklariert sein, auch die Indizes.

Harald
 
Brauchst halt noch 'nen DB dazu der das UDT ein- oder mehrmals enthält, ja nach dem ob die Daten tatsächlich nur übergeben werden sollen oder irgendwo sonst noch abgerufen werden - ich denke da an HMI und so Zeugs...
 
Manchmal will der AWL-Editor solche höheren Konstrukte nicht gleich anwenden, wenn sie gerade erst deklariert wurden.
Dann die beteiligten Bausteine speichern, den Editor komplett schließen und neu öffnen.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
2 Möglichkeiten
Code:
      CALL  #Drehung
       PHI :="Interface".Winkel_Drehen
       PHI0:=0.000000e+000
       ROTZ:=#mein_uebergabearray


      CALL  #RDG_Aufbau
       POS1 :=
       ROT1 :=#mein_uebergabearray
       POS2 :=
      [COLOR=#ff0000] ROT2 :=#Drehung.ROTZ[/COLOR]  [COLOR=#ff0000]//das geht nicht!!!!!!![/COLOR]
       POS12:=
       ROT12:=

Die Arrays müssen exakt gleich deklariert sein, auch die Indizes.

Harald

Mit nen Übergabearray gehts. Aber wenn ich das Out-Array direkt ans IN-Aray schreibe gehts nicht. Die Arrays haben alle [0..3] nur die Namen sind unterschiedlich.

Mit "geht nicht" meine ich, das die Anweisung/Adresse rot ist/nicht übernommen wird.

Sailor
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit nen Übergabearray gehts. Aber wenn ich das Out-Array direkt ans IN-Aray schreibe gehts nicht. Die Arrays haben alle [0..3] nur die Namen sind unterschiedlich.

Mit "geht nicht" meine ich, das die Anweisung/Adresse rot ist/nicht übernommen wird.

Sailor


L P##mein_uebergabearray //Funzt
L P##drehung.ROTZ //Funzt nicht

Beides sind Array[0..3] of real im Statischen Bereich des FB.

Was ist denn da los?
 
wenn ich das Out-Array direkt ans IN-Aray schreibe gehts nicht.
Hmm, bei mir auch nicht. :confused:
An IN kann kein OUT- oder INOUT-Array einer anderen Multiinstanz angeschlossen werden, an OUT kann kein IN- oder INOUT-Array einer anderen Multiinstanz angeschlossen werden. Nur voll qualifiziert absolut adressiert geht es bei mir: ROT2:="IDB".Drehung.ROTZ

Mit einem lokalen Übergabearray geht es aber, sieht für mich auch besser aus. Da muß eben einmal mehr kopiert werden.

Wenn Du beim Call von #Drehung keinen Aktualparameter an ROTZ angeben willst, dann könntest Du ROTZ statt in OUT in STAT deklarieren - dann wiederum kannst Du #Drehung.ROTZ überall angeben... verrücktes Step7...

Harald
 
Ja, ich leg die OUT-Arrays in den Stat-Bereich. Dann kann ich die wenigstens an die anderen FB übergeben in der Schnitstelle. Seltsam ist es schon.
Direkte Arrays in STAT kann ich laden (L P##uebergabearray) aber Arrays einer Multiinstanz in STAT nicht ... komisch
Kann man in AWL eigentlich ein Array mit einer mehrdimensionalen Konstanten (hier REAL) beschreiben:
z.B.
...
POS1:= [1.0, 2.0, 3.0]
...
als IN-parameter eines FB

Danke nochmal
Gruß
Sailor
 
Ok,
ich schreib die Vektoren als ARRAY in einen separaten DB und die Konstanten als sind deren Anfangswerte.
Der DB darf halt nicht beschrieben werden.
Da war doch was mit schreibgeschützt ...?
Sailor
 
Zurück
Oben