Word in Array Of Byte einfügen

Flo_1991

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend liebes Forum


Ich bin neu hier, also seit etwas gnädig mit mir.:)

Zu meinem Problem:


Ich habe einen Antrieb der über Profibus angesteuert werdensoll. Soweit so gut.
Für die Ansteuerung stehen mir Inputs und Outputs generierendurch das in TwinCAT eingelesenen GSD-File zur Verfügung.
Input:ARRAY [0..4] of Byte
Output:ARRAY [0..2] of Byte
Die Datenzuordnung habe ich als .jpg angehängt
Es steht also ein AW0 (Word) für die Soll-Position sowie ein EW0 für die Ist-Positionzur verfügung.

Mein Problem zur Zeit ist, das ich mir Gedanken darübergemacht habe wie ich die verschiedenen Stellungen als z.B INT Zahlen in das AW0und danach in den Output also in das ARRAY of Byte bringen kann.

Meine ersten Versuche dafür sehen so aus:
Code:
FUNCTION_BLOCK MP_BUS_BELIMO
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
 IST_Position_link AT %I*: ARRAY [0..4] OF BYTE;
 SOLL_Position_link AT %Q*: ARRAY [0..2] OF BYTE;
 IST_Position:WORD;
 SOLL_Position: INT;
 Temp_Wert: WORD;
END_VAR

Code:
IST_Position:= SHL(BYTE_TO_WORD(IST_Position_link[0]),8 ) + BYTE_TO_WORD(IST_Position_link[1]);

SOLL_Position:=100;
Temp_Wert:= INT_TO_WORD(SOLL_Position);
SOLL_Position_link[1]:= WORD_TO_BYTE(SHR(Temp_Wert,8));
SOLL_Position_link[0]:= WORD_TO_BYTE((Temp_Wert));

Ich würde mich über jede Hilfe freuen
 

Anhänge

  • Datenzuordnung_Input_Output.jpg
    Datenzuordnung_Input_Output.jpg
    115,5 KB · Aufrufe: 23
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

du könntest auch die Funktion SysMemCpy nehmen oder mit Pointern arbeiten. Ich verstehe jedoch nicht so ganz, warum du deine eigentlichen Variablen nicht auf den Eingang/Ausgang legst. Würde es wie folgt nicht auch gehen?
Code:
FUNCTION_BLOCK MP_BUS_BELIMO
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
 IST_Position AT %I*:WORD;
 SOLL_Position AT %Q*: INT;
END_VAR
 
Danke Harald

Ich habe mich noch mal etwas mit dem Problem auseinandergesetzt und die Lösung war wirklich in dem Beitrag bereits beschrieben:ROFLMAO:
 
Zurück
Oben