FUNCTION_BLOCK "PUTGETen"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
VerbindungsID : Word;
END_VAR
VAR_IN_OUT
PUT_Addr : Remote;
PUT_SD : Variant;
GET_Addr : Remote;
GET_SD : Variant;
END_VAR
VAR
PUT_Instance {OriginalPartName := 'PUT_SFB_PART'; LibVersion := '1.3'} : PUT;
put_done : Bool;
put_error : Bool;
put_status : Word;
put_err_status_sav : Word;
put_done_status_sav : Word;
request : Bool;
Requestreset {OriginalPartName := 'IEC_TIMER'; LibVersion := '1.0'} : TON_TIME;
GET_Instance {OriginalPartName := 'GET_SFB_PART'; LibVersion := '1.3'} : GET;
getrequest : Bool;
get_err_status_sav : Word;
get_done_status_sav : Word;
get_Requestreset {OriginalPartName := 'IEC_TIMER'; LibVersion := '1.0'} : TON_TIME;
END_VAR
BEGIN
#PUT_Instance(REQ:=#request,
ID:=#VerbindungsID,
ADDR_1:=#PUT_Addr,
SD_1:=#PUT_SD);
IF #PUT_Instance.ERROR THEN
#put_err_status_sav := #PUT_Instance.STATUS;
END_IF;
IF #PUT_Instance.DONE THEN
#put_done_status_sav := #PUT_Instance.STATUS;
END_IF;
#request := true;
IF #PUT_Instance.ERROR OR #PUT_Instance.DONE OR #Requestreset.Q THEN
#request := false;
END_IF;
#Requestreset(IN:=#request,
PT:=t#5s);
#GET_Instance(REQ:=#getrequest,
ID:=#VerbindungsID,
ADDR_1:=#GET_Addr,
RD_1:=#GET_SD);
IF #GET_Instance.ERROR THEN
#get_err_status_sav := #GET_Instance.STATUS;
END_IF;
IF #GET_Instance.NDR THEN
#get_done_status_sav := #GET_Instance.STATUS;
END_IF;
#getrequest := true;
IF #GET_Instance.ERROR OR #GET_Instance.NDR OR #get_Requestreset.Q THEN
#getrequest := false;
END_IF;
#get_Requestreset(IN := #getrequest,
PT := t#5s);
END_FUNCTION_BLOCK