Tc3 OPC-UA ReadList Übertragung einer Struct

sidame00

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

vorab die Frage ob ich das allgemeine Prinzip der OPC-UA DataAccess in Tc3 richtig verstanden habe:
Ziel ist es, eine verschachtelte Struct zu übertragen.

Im OPC UA - ReadListData Beispiel benötige ich dafür:
- eine Struct, in die später die über cbData aufgeschlüsselten Daten reingepackt werden
Code:
{attribute 'pack_mode' := '1'}
TYPE ST_A :
STRUCT
    stReadListReturnInfo    : ARRAY [1..5] OF ST_UAReadListReturnInfo;
    Timestamp: DT;
    b: REAL; 
    c: REAL;
    d : REAL;
    e: REAL; 
END_STRUCT
END_TYPE

- eine zweite Struct, die die List (ReadList) aufführt:
Code:
TYPE ST_ReadListData :
STRUCT
    stReadListReturnInfo    : ARRAY [1..1] OF ST_UAReadListReturnInfo;
    A : ST_A;
END_STRUCT
END_TYPE
- lediglich einen Connection Handler
- lediglich eine NodeId, die den Identifier vom Server beinhaltet
Code:
    NodeIDs[1].eIdentifierType := eUAIdentifierType_String;
    NodeIDs[1].nNamespaceIndex := nNamespaceIndex;
    NodeIDs[1].sIdentifier    := 'MAIN.myStruct';

- cbData[], welche die übertragene Bytes in die einzelnen Strukturelemente aufdröselt
Code:
    cbData[1] := SIZEOF(stReadListData.A.Timestamp);
    cbData[2] := SIZEOF(stReadListData.A.b);
    cbData[3] := SIZEOF(stReadListData.A.c);
    cbData[4] := SIZEOF(stReadListData.A.d);
    cbData[5] := SIZEOF(stReadListData.A.e);
        cbDataTotal := SIZEOF(stReadListData.A);

sollte diese Annahme richtig sein, habe ich das Projekt soweit, dass ich über cbData_R alle Bytes am Client empfange. (cbData_R === cbDataTotal)

Leider bleibt jedoch meine stReadListData leer, die die empfangenen Bytes anhand der cbData wieder aufteilen soll.
Eine Fehlermeldung kommt zu keiner Zeit, alle Handler werden regelmäßig erstellt.

Hat jemand eine Idee?

Grüße und danke im Voraus.

Sidame00
 
okay ich formuliere es einfacher:

Wie lese ich eine über OPC UA übertragene Struct aus?
ich habe keine Fehlermeldung, lediglich bleibt mein Struct hinter stReadListData leer.

gleiches Phänomen wenn man im Sample Client "nur" eine Struct öffnet. Dort wird als Value lediglich die Byteanzahl angezeigt. Nirgends aber die Werte, außer man fragt sie explizit ab.

Unbenannt.PNGhier zu sehen ist die Überwachungsliste von "stReadListData, welche zeigt, dass alle 4 structs ohne Error Übertragen werden.

nur wie komme ich an die Daten?

Grüße Sidame00
 
Zuletzt bearbeitet:
Zurück
Oben