Quantcast
Channel: SPS-Forum - Automatisierung und Elektrotechnik
Viewing all articles
Browse latest Browse all 47324

E/A Mapping von/ zu Array of DWORD, Problem bei Offset Ermittlung

$
0
0
Hallo zusammen,

als Quereinsteiger aus S7, sitze ich aktuell an einem Programmteil
welcher mir SPS-Eingänge auf ein Array of DWORD und
Daten aus einem Array of DWord auf Ausgänge schreiben soll.

Nach einigen Selbstversuchen / Online-Suchvorgängen bin ich beim unten aufgeführten Code angekommen.
Dieser kopiert mir zwar das erste DWord (%ID500) auf das Read_SPS_Array[0], jedoch hapert es
anschließend am Offset für den 2ten Lesevorgang in der Schleife ( %ID 501 auf Array [1].
(Rot markiert)

Variablendeklaration:
VAR
Read_SPS_Loop: INT;
END_VAR
VAR_IN_OUT
Read_SPS_Array: ARRAY[0..25] OF DWORD;
END_VAR
VAR
Read_SPS_Offset: Pointer to DWORD;
END_VAR
VAR_INPUT
Read_SPS_Startadresse: DWORD; <-- anparametriert mit "%ID500"
END_VAR

Programm:

// Lese 16 DWord Eingänge ab Startadresse und übertrage in Array 0-15
Read_SPS_Offset:= ADR (Read_SPS_Startadresse);

FOR Read_SPS_Loop:= 0 TO 15 DO
Read_SPS_Array[Read_SPS_Loop]:= Read_SPS_Offset^;
Read_SPS_Offset:= Read_SPS_Offset + SIZEOF(DWORD);
END_FOR


// Test Ausgangswert schreiben
Write_SPS_Array[0]:= 5;

// Lese Array 0-15 und schreibe 16 DWORD Ausgänge ab Startadresse
Write_SPS_Offset:= ADR (Write_SPS_Startadresse);

FOR Write_SPS_Loop:= 0 TO 15 DO
Write_SPS_Offset^:= Write_SPS_Array[Write_SPS_Loop];
Write_SPS_Offset:= Write_SPS_Offset + SIZEOF(DWORD);
END_FOR

Würde mich freuen, wenn mir hier jemand mit dem Offset weiterhelfen könnte

Viewing all articles
Browse latest Browse all 47324


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>