DunderHEAD
Level-1
- Beiträge
- 17
- Reaktionspunkte
- 0
TYPE
sDataStr : STRUCT
iNumAvailEntr : INT ; //[ ] number of available errer field entries
adiErrNumArr : ARRAY[1..100] OF DINT ; //local error numer array
END_STRUCT;
END_TYPE
DATA_BLOCK g
STRUCT
sGlobStr : sDataStr;
END_STRUCT
BEGIN
END_DATA_BLOCK
VAR_INPUT
pGlobDataStr : POINTER; //[] Pt auf g.sGlobStr
sGlobDataStr AT pGlobDataStr : sDataStr; //für besseren zugriff
END_VAR
//Bsp.:
// Arbeiten mit den Werten aus der globalen Struktur
IF ( sGlobDataStr.iNumAvailEntr > 0 ) THEN
...
END_IF;
TYPE
sDataStr : STRUCT
iNumAvailEntr : INT ; //[ ] number of available errer field entries
adiErrNumArr : ARRAY[1..100] OF DINT ; //local error numer array
END_STRUCT;
END_TYPE
DATA_BLOCK g
STRUCT
sGlobStr : sDataStr;
END_STRUCT
BEGIN
END_DATA_BLOCK
VAR_INPUT
sGlobDataStr : sDataStr; //für besseren zugriff
END_VAR
//Bsp.:
// Arbeiten mit den Werten aus der globalen Struktur
IF ( sGlobDataStr.iNumAvailEntr > 0 ) THEN
...
END_IF;
FB.iDB( sGlobDataStr := g.sGlobStr);
Wenn ich die Struktur aber im Bereich
- In_Out
anlege belegt diese "nur" 6 Byte (entspricht einem Zeiger?!).
Typ Belegter Platz
BIT 0.1
BYTE 1
WORD 2
DWORD 4
INT 2
DINT 4
REAL 4
S5TIME 2
TIME 4
DATE 2
TIME_OF_DAY 4
STRUCT 6 <- Zeiger
ARRAY[x..y] 6 <- Zeiger
TYPE UDT1
STRUCT
StrIn : INT;
StrOut : INT;
StrInOut : INT;
END_STRUCT
END_TYPE
DATA_BLOCK DB1
//
// Baustein-Kommentar ...
//
STRUCT
gStr : UDT1;
WertIn : INT;
WertOut : INT;
WertInOut : INT;
END_STRUCT
BEGIN
END_DATA_BLOCK
FUNCTION_BLOCK FB2
// Bausteinparameter
VAR_INPUT
// Eingangsparameter
WertIn : INT;
StrIn : UDT1;
END_VAR
VAR_IN_OUT
// Durchgangsparameter
WertInOut : INT;
StrInOut : UDT1;
END_VAR
VAR_OUTPUT
// Ausgangsparameter
WertOut : INT;
StrOut : UDT1;
END_VAR
// Anweisungsteil
WertIn := WertIn + 1;
WertOut := WertOut + 1;
WertInOut := WertInOut+ 1;
StrIn.StrIn := StrIn.StrIn + 1;
StrOut.StrOut := StrOut.StrOut + 1;
StrInOut.StrInOut := StrInOut.StrInOut + 1;
END_FUNCTION_BLOCK
DATA_BLOCK DB2
FB2
BEGIN
END_DATA_BLOCK
ORGANIZATION_BLOCK OB31
VAR_TEMP
// reserviert
info : ARRAY[0..19] OF BYTE;
// temporäre Variablen
END_VAR
// Zuweisung
FB2.DB2(
WertIn := DB1.WertIn
,StrIn := DB1.gStr
,WertInOut := DB1.WertInOut
,StrInOut := DB1.gStr
);
DB1.WertIn := DB2.WertIN;
DB1.gStr.StrIn := DB2.StrIn.StrIn;
DB1.WertOut := DB2.WertOut;
DB1.gStr.StrOut := DB2.StrOut.StrOut;
END_ORGANIZATION_BLOCK
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?