TIA TSEND Pointer to Array

H97

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

ich würde gerne von einer S7-314 per Modbus TCP über den FB TSEND ein Array of Bytes verschicken. Das zu versendende Array ist in meinem FB in dem ich TSEND aufrufe deklariert und wird dort beschrieben.

Leider klappt das schicken der Daten nicht.

Wenn ich die gleiche Anzahl Bytes in einen Globalen DB packe und per Pointer

P#DB100.DBX 0.0 BYTE darauf zu greife klappt das verschicken.

Wie müsste der Pointer Syntax aussehen wenn ich auf ein Array zeigen möchte das innerhalb des FBs ist.



Vielen Dank für die Hilfe
 
Wie man in der Hilfe zu TSEND lesen kann: TSEND.DATA braucht einen ANY auf globale Daten (E A M D). Du müsstest einen ANY inklusive IDB-Nummer auf das Array in der lokalen Instanz basteln, und dabei den Multiinstanz-Offset aus AR2 addieren.

Was für eine CPU hast Du genau? TSEND geht nur über eine PN-Schnittstelle der CPU.
Mit welcher Step7 Version programmierst Du?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie man in der Hilfe zu TSEND lesen kann: TSEND.DATA braucht einen ANY auf globale Daten (E A M D). Du müsstest einen ANY inklusive IDB-Nummer auf das Array in der lokalen Instanz basteln, und dabei den Multiinstanz-Offset aus AR2 addieren.

Was für eine CPU hast Du genau? TSEND geht nur über eine PN-Schnittstelle der CPU.
Mit welcher Step7 Version programmierst Du?

Harald

So hatte ich die Hilfe auch gelesen. Deshalb habe ich meinen Pointer auf den Instanz DB gerichtet. Quasi so:

FB_Test[1] => hier habe ich meinen Programmcode in dem ich das Array befülle und den TSEND Baustein aufrufe.
Im Main OB rufe ich dann meinen FB_Test[1] auf => ich muss eine Instanz Datenbaustein von FB_Test[1] anlegen
=> FB_Test_DB[100]

Und dem TSEND Baustein im FB_Test[1] habe ich bei DATA dem Pointer P#DB100.DBX30.0 BYTE 50 zu gewiesen. Das Array steht im FB_TEST_DB mit Offset 30.0...

Ist das das Vorgehen welches Sie in Ihrer Antwort beschrieben hatten bzw. meinten?

Ich nutze eine S7-314c-2 PN / DP und TIA V16.

Vielen Dank für Ihre Hilfe @PN/DP
 
In Deinem FB_Test lege in TEMP eine ANY-Variable tSD an.
tSD : Any;
In STAT/Static hast Du Dein Array
MyArray : Array[0..49] OF Byte;

In einem AWL-Netzwerk kannst Du einen ANY-Pointer auf das MyArray der Instanz basteln:
Code:
      LAR1  P##tSD              //Adresse der TEMP-ANY-Variable in AR1

      L     W#16#1002           //Kennung + Typ "Byte"
      T     LW [AR1,P#0.0]      //ANY: Kennung + Typ Byte
      L     50                  //Länge des Array in Byte
      T     LW [AR1,P#2.0]      //ANY: Wiederholfaktor

      L     DINO                //IDB-Nummer
      T     LW [AR1,P#4.0]      //ANY: DB-Nummer
      L     P##MyArray          //Adresse des Array in dieser Instanz (DI)
      UD    DW#16#FFFFFF        //Bereichskennung (DI) ausblenden
      TAR2                      //AR2 Adresse dieser Multiinstanz (Kennung DB)
      +D
      T     LD [AR1,P#6.0]      //ANY: Bereichsadresse, mit Kennung (DB)

Dann beim Aufruf des TSEND gebe an DATA die ANY-Variable an
Code:
      +-----------+
      |   TSEND   |
     ...         ...
      |           |
#tSD--|DATA       |
      +-----------+

Harald
 
Zurück
Oben