- Beiträge
- 5.425
- Reaktionspunkte
- 1.403
-> Hier kostenlos registrieren
Ich versuch grade das erste mal eine S7 PUT/GET_E Verbindung zu etablieren.
Ohne Erfolgt bisher. Der Request wird angestossen, mit Done bestätigt trotzdem kommt auf der Anderen Seite nix an und auf der eigenen Seite wird nix abgelegt.
Sieht jemand einen Fehler in meiner Vorgehensweise?
CPU ist derzeit eine PN/DP 315
Der Aufruf
Ohne Erfolgt bisher. Der Request wird angestossen, mit Done bestätigt trotzdem kommt auf der Anderen Seite nix an und auf der eigenen Seite wird nix abgelegt.
Sieht jemand einen Fehler in meiner Vorgehensweise?
CPU ist derzeit eine PN/DP 315
Code:
FUNCTION_BLOCK MasterCom
VAR_INPUT
DB_1_Recv : ANY; // 1. DB zum Empfangen
pDB_1_Recv AT DB_1_Recv : ANY_POINTER;
DB_2_Recv : ANY; // 2. DB zum Empfangen
pDB_2_Recv AT DB_2_Recv : ANY_POINTER;
DB_1_Send : ANY; // 1. DB zum Senden
pDB_1_Send AT DB_1_Send : ANY_POINTER;
DB_2_Send : ANY; // 2. DB zum Senden
pDB_2_Send AT DB_2_Send : ANY_POINTER;
ID : INT; // VerbindungsID
END_VAR
VAR
GET : GET_E;
PUT : PUT_E;
tGET : TON;
tPUT : TON;
GET_Status : WORD;
PUT_Status : WORD;
END_VAR
VAR_TEMP
Laenge : WORD;
DB_1_Send_L : WORD;
DB_2_Send_L : WORD;
DB_1_Recv_L : WORD;
DB_2_Recv_L : WORD;
END_VAR
GET( ,ID := INT_TO_WORD(ID) // IN: WORD
,ADDR_1 := pDB_1_Recv // INOUT: ANY
,ADDR_2 := pDB_2_Recv // INOUT: ANY
,RD_1 := pDB_1_Recv // INOUT: ANY
,RD_2 := pDB_2_Recv // INOUT: ANY
);
IF NOT GET.REQ THEN
GET.REQ := true;
END_IF;
IF GET.NDR OR GET.ERROR OR tGET.q THEN
GET.REQ := false;
END_IF;
IF GET.error THEN
GET_Status := GET.status;
END_IF;
tGET(IN := GET.REQ// IN: BOOL
,PT := t#30s // IN: TIME
);
PUT( ID := INT_TO_WORD(ID) // IN: WORD
,ADDR_1 := pDB_1_Send // INOUT: ANY
,ADDR_2 := pDB_2_Send // INOUT: ANY
,SD_1 := pDB_1_Send// INOUT: ANY
,SD_2 := pDB_2_Send // INOUT: ANY
);
IF NOT PUT.REQ THEN
PUT.REQ := true;
END_IF;
IF PUT.DONE OR PUT.ERROR OR tPUT.q THEN
PUT.REQ := false;
END_IF;
IF PUT.error THEN
PUT_Status := PUT.status;
END_IF;
tPUT(IN := PUT.REQ// IN: BOOL
,PT := t#30s // IN: TIME
);
END_FUNCTION_BLOCK
Der Aufruf
Code:
CALL #Slave1
DB_1_Recv:=P#DB2201.DBX0.0 BYTE 200
DB_2_Recv:="Nord_RU_KLP_HW_Input".HW_INPUT
DB_1_Send:=P#DB2202.DBX0.0 BYTE 40
DB_2_Send:="Nord_RU_KLP_HW_Output".DB_VAR
ID :=1