Hallo,
ich komme nicht klar bei der Verwendung von var_in_out, obwohl ich die Variable hier, meine ich, normgerecht verwende.
Beispiel: (CoDeSys 3.1 SP2Patch1)
FUNCTION_BLOCK testfb
VAR_INPUT
END_VAR
VAR_OUTPUT
VAR
var_in_out
iTestvar :int;
end_var
iTestvar := 2;
PROGRAM PLC_PRG
iVar : int; testfb1 : testfb;
testfb1( iTestvar := iVar);
Ãœbersetzen und Laden in die WINNT-PLC funktioniert.
Online erscheint dann bei iTestvar:
- im Deklarationsteil <ReferenceType.ConvertRaw not implemented yet> - in der Watchlist <Der Wert des Ausdrucks kann nicht gelesen werden>.
Mir ist klar, daß var_in_out nur die Variablenadresse übergibt, also iTestvar ein int-Zeiger ist.
Trotzdem sollte doch der Audruck "iTestvar := 2" den Wert von iTestvar auf 2 festlegen und nicht die Adresse im Speicher.
Pointer-Operationen ("pointer to...; adr(); ^) sind in der Norm nicht vorgesehen, also müsste es doch so funktionieren?
Viele Grüße r2
Hallo r2
Ein Variable von In_Out kann im Baustein nicht beobachtet werden.
Den zustand kannst du nur an der beschalteten Variable beobachten.
Also in diesem Fall "iVar" in PLC_PRG.
In dein Beispiel sollte die Variable den Wert von "2" haben nach aufruf vom Baustein.
mfG Jochen
Hallo Jochen,
"iVar" hat natürlich den wert 2.
So gesehen sind die Online - Systemmeldungen nachvollziehbar.
Danke für den Tip.
Freundliche Grüße
r2
Log in to post a comment.
Hallo,
ich komme nicht klar bei der Verwendung von var_in_out, obwohl ich die Variable hier, meine ich, normgerecht verwende.
Beispiel: (CoDeSys 3.1 SP2Patch1)
FUNCTION_BLOCK testfb
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
var_in_out
end_var
iTestvar := 2;
PROGRAM PLC_PRG
VAR
END_VAR
testfb1( iTestvar := iVar);
Ãœbersetzen und Laden in die WINNT-PLC funktioniert.
Online erscheint dann bei iTestvar:
Mir ist klar, daß var_in_out nur die Variablenadresse übergibt, also iTestvar ein int-Zeiger ist.
Trotzdem sollte doch der Audruck "iTestvar := 2" den Wert von iTestvar auf 2 festlegen und nicht die Adresse im Speicher.
Pointer-Operationen ("pointer to...; adr(); ^) sind in der Norm nicht vorgesehen, also müsste es doch so funktionieren?
Viele Grüße r2
Hallo r2
Ein Variable von In_Out kann im Baustein nicht beobachtet werden.
Den zustand kannst du nur an der beschalteten Variable beobachten.
Also in diesem Fall "iVar" in PLC_PRG.
In dein Beispiel sollte die Variable den Wert von "2" haben nach aufruf vom Baustein.
mfG Jochen
Hallo Jochen,
"iVar" hat natürlich den wert 2.
So gesehen sind die Online - Systemmeldungen nachvollziehbar.
Danke für den Tip.
Freundliche Grüße
r2