DWord, Int und Byte in ein Struct von Array of Byte kopieren oder verschieben

Mcool

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

ich soll eine Kommunikation zu einem PC Aufbauen mit welchem ich kommunizieren soll (muß)
ich kann den Socket aufbauen und mit open Communikation bekomme ich auch eine verbindung hin.

Nun zu meinem Problem.

Der Frame des Protokolls, welcher gefüllt werden soll ist mit unterschiedlichen Datentypen gefüllt.

Protokoll Frame:

Prefix_ui_Version UINT
Prefix_udi_Length UDINT
usi_Command_Type USINT

usi_Reply_Code USINT
usi_Reply_Counter USINT
usi_Message_Type USINT
ui_Version UINT
usi_State USINT
usi_Grasp_Mode USINT
ui_Object_Class UINT
ui_Object_Instance UINT
di_Stroke DINT
di_Angle_Offset DINT
di_Center_Offset_1 DINT
di_Center_Offset_2 DINT
di_Center_Offset_3 DINT
usi_Tool USINT
usi_Pose_Format USINT
di_Grasp_Pose_1 UDINT
di_Grasp_Pose_2 UDINT
di_Grasp_Pose_3 UDINT
di_Grasp_Pose_4 UDINT
di_Grasp_Pose_5 UDINT
di_Grasp_Pose_6 UDINT
di_Grasp_Pose_7 UDINT
ui_Object_Count UINT
Reserve_70 USINT
Reserve_71 USINT
Reserve_72 USINT
Reserve_73 USINT
Reserve_74 USINT
Reserve_75 USINT
Reserve_76 USINT
Reserve_77 USINT
Reserve_78 USINT
Reserve_79 USINT

Wie bekomme ich nun das protokoll so gefüllt und wieder gelesen, dass ich jeden Parameter einzel schreiben oder lesen kann wenn ich das ganze in ein Array ob Byte stecke. Das Problem ist die Länge des protokolls ist 80 Byte und der PC erwartet die Daten exakt an der Statischen Stelle im Protokoll.

Da Allen Bradley aber immer auf Doppelwort auffüllt, wird der Frame länger und hat Füllbytes zwischen manchen Parametern. Wie bei den oben Rot markierten.
Gibt es nun eine einfache Möglichkeit die Daten eines Parameters in ein Array zu schreiben mit der Angabe der Array Stelle (zB.[2]) der Länge 4 Byte und dem Inhalt (Daten) und das für jeden einzelnen Parameter? zum Schluß soll ein Gefüllter Datenframe zusammengebaut werde, welchen uch dann zum PC schicken kann.

umgekehrt brauche ich das natürlich auch, also die Empfangsdaten aus einem Array in einen User Defind Datentyp schreiben.

Wenn einer eine Idee oder eine Lösung hat in jedweder Form, währe ich sehr Dankbar

ich Habe Studio 5000 ausgabe 35.11


mit Grüßen Marco
 
Welche Programmiersprache?
Generell mit COP oder CPS machbar.
in Kop:
z,B.:
COP/CPS, Source: MeineUINTVariable Destination: MeinArray[25], Len: 2
COP/CPS, Source: MeinArray[25] Destination: MeineUINTVariable, Len: 1
In StructuredText gibt es den COP/CPS auch, Syntax siehe F1

Len richtet sich dabei immer nach dem Zieldatentyp, wenn ein Uint ins SINT/USINT Array kopiert werden soll demnach 2, im umgekehrten Fall 1.
 
Zurück
Oben