VAR_INPUT
EB : BYTE;
Takt: BOOL;
END_VAR
VAR_IN_OUT
AB : BYTE;
STG : ARRAY[1..8] OF UDT_SPS;
END_VAR
VAR_INPUT
EB: INT; (**Anfangs-EB**)
AB: INT; (**Anfangs-AB**)
BYANZ: INT; (**Byteanzahl**)
Ausw_Anf:INT; (**1. Zieladresse**)
END_VAR
Was soll mir das sagen? Ich will doch einen Zeiger auf eine Struktur übergeben oder sehe ich das falsch?Info zu den Pointern: Mit SCL kannst du in keinem FB oder FC einen ANY-Pointer übergeben. Aber in unserer Firma arbeiten wir immer mit Strukturen und übergeben so die Zeiger auf diese Strukturen.
Wohin ich schreibe ist für die Thematik irrelevant, könnte genausogut ein Merker- oder ein Datenbyte sein.Info zu EB und AB Manipulationen. Direkt EB einzulesen verstehe ich ja noch, aber wozu soll man direkt auf AB schreiben. In SCL programmiert man sauber mit symbloischen Namen und kopiert diese einzeln auf Ein und Ausgänge.
FUNCTION copy_inp_to_outp : VOID
VAR_INPUT
iInputByte : INT ;
iOutputByte : INT ;
END_VAR
QB[iOutputByte] := IB[iInputByte] ;
END_FUNCTION
TYPE UDT_PLC_i_bytes
STRUCT
byData : ARRAY[0..7] OF BYTE ;
END_STRUCT
END_TYPE
TYPE UDT_PLC_q_bytes
STRUCT
byData : ARRAY[0..7] OF BYTE ;
END_STRUCT
END_TYPE
DATA_BLOCK PLC_io
STRUCT
inp : UDT_PLC_i_bytes ;
outp : UDT_PLC_q_bytes ;
END_STRUCT
BEGIN
END_DATA_BLOCK
FUNCTION Copy_via_db : VOID
VAR_input
structInputs : UDT_PLC_i_bytes ;
iInputByte : INT ;
iOutputByte : INT ;
END_VAR
VAR_OUTPUT
structOutputs : UDT_PLC_q_bytes ;
END_VAR
structOutputs.byData[iOutputByte] := structInputs.byData[iInputByte] ;
END_FUNCTION
// BLKMOV = SFC20
CALL "BLKMOV"
SRCBLK :=P#I 0.0 BYTE 8
RET_VAL:=MW10
DSTBLK :="PLC_io".inp
NOP 0
// beispiel: Kopier byte 3 auf byte 4
CALL "Copy_via_db"
structInputs :="PLC_io".inp
iInputByte :=3
iOutputByte :=4
structOutputs:="PLC_io".outp
CALL "BLKMOV"
SRCBLK :="PLC_io".outp
RET_VAL:=MW10
DSTBLK :=P#Q 0.0 BYTE 8
NOP 0
Es ist mir nicht 100% klar was Du willst, aber ich denke Du brauchst ein weitere indizierung.Was wenn ich aber nicht nur ein Byte x sondern auch ein Byte y und ein Byte z verarbeiten will?
call FB_Byte, I_DB[i]
"DB_SPS".UDT_SPS geht ja leider so nicht ...
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?