maik.hollmann
Level-1
- Beiträge
- 6
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo,
ich habe das Problem das ich zwar eine gültige Verbindung zwischen beiden SPS aufbaue,
aber das Senden bzw Empfangen nicht funktioniert. das IP_USEND.DONE bekomme ich aber
auf der Partner SPS habe ich im Empfangs Array nichts bekommen. Die Daten Strukturen sind
auf beiden SPS identisch. Ich bin so langsam ratlos warum das nicht funktioniert. Kann mir eventuell
jemand weiterhelfen?
Die Datetypen :
Der FB als Export:
Online Ansicht Bilder:
Vielen Dank schon mal im vorraus.
Maik
ich habe das Problem das ich zwar eine gültige Verbindung zwischen beiden SPS aufbaue,
aber das Senden bzw Empfangen nicht funktioniert. das IP_USEND.DONE bekomme ich aber
auf der Partner SPS habe ich im Empfangs Array nichts bekommen. Die Daten Strukturen sind
auf beiden SPS identisch. Ich bin so langsam ratlos warum das nicht funktioniert. Kann mir eventuell
jemand weiterhelfen?
Die Datetypen :
Code:
TYPE
AR_SD_1 : ARRAY[0..99] OF BYTE;
AR_RD_1 : ARRAY[0..99] OF BYTE;
AR_Daten_1 : ARRAY[0..199] OF BYTE;
ST_SD_1 : STRUCT
Index : WORD;
Data : AR_SD_1;
END_STRUCT;
ST_RD_1 : STRUCT
Index : WORD;
Data : AR_RD_1;
END_STRUCT;
SPS_Daten : STRUCT
Senden : ST_SD_1;
Empfangen : ST_RD_1;
Data : AR_Daten_1;
END_STRUCT;
END_TYPE
Der FB als Export:
Code:
(*@PROPERTIES_EX@
TYPE: POU
LOCALE: 0
IEC_LANGUAGE: ST
PLC_TYPE: independent
PROC_TYPE: independent
*)
(*@KEY@:DESCRIPTION*)
(*@KEY@:END_DESCRIPTION*)
FUNCTION_BLOCK Werkstatt_Test_KSPS
(*Group:Eingänge*)
VAR_INPUT
Port_Partner : STRING;(*N/A*)
IP_Partner : STRING;(*N/A*)
Sende_Intervall : TIME;(*N/A*)
END_VAR
(*Group:Ausgänge*)
VAR_OUTPUT
Verbindung_IO : BOOL;
Error : BOOL;
END_VAR
(*Group:IN_OUT Variablen*)
VAR_IN_OUT
Daten : SPS_Daten;(*N/A*)
END_VAR
(*Group:Lokale Variablen*)
VAR
strCONNECT_PARTNER_1 : STRING;(*N/A*)
xCONNECT_ERROR_1 : BOOL;(*N/A*)
xCONNECT_VALID_1 : BOOL;(*N/A*)
iCONNECT_ID_1 : INT;(*N/A*)
iCONNECT_STATUS_1 : INT;(*N/A*)
xURCV_DONE_1 : BOOL;(*N/A*)
xURCV_ERROR_1 : BOOL;(*N/A*)
iURCV_STATUS_1 : INT;(*N/A*)
xUSEND_DONE_1 : BOOL;(*N/A*)
xUSEND_ERROR_1 : BOOL;(*N/A*)
iUSEND_STATUS_1 : INT;(*N/A*)
Senden_Start : BOOL {HIV,RDT};
verbinden : BOOL;
empfangen : BOOL;(*test*)
END_VAR
(*Group:FB Instanzen*)
VAR
IP_CONNECT_1 : IP_CONNECT;
IP_USEND_1 : IP_USEND;
IP_URCV_1 : IP_URCV;
Puls_Send : TON;(*N/A*)
END_VAR
(*@KEY@: WORKSHEET
NAME: Werkstatt_Test_KSPS
IEC_LANGUAGE: ST
*)
(**)
strCONNECT_PARTNER_1 := '/PASSIVE /PORT=';
strCONNECT_PARTNER_1 := CONCAT(strCONNECT_PARTNER_1, Port_Partner);
strCONNECT_PARTNER_1 := CONCAT(strCONNECT_PARTNER_1, ' /IP=');
strCONNECT_PARTNER_1 := CONCAT(strCONNECT_PARTNER_1, IP_Partner);
(**)
IP_CONNECT_1.EN_C := verbinden;
IP_CONNECT_1.PARTNER := strCONNECT_PARTNER_1;
IP_CONNECT_1();
xCONNECT_VALID_1 := IP_CONNECT_1.VALID;
xCONNECT_ERROR_1 := IP_CONNECT_1.ERROR;
iCONNECT_STATUS_1 := IP_CONNECT_1.STATUS;
iCONNECT_ID_1 := IP_CONNECT_1.ID;
Puls_Send(IN := Not xUSEND_DONE_1,
PT := Sende_Intervall);
If Puls_Send.Q then
Senden_Start := True;
End_If;
IP_USEND_1(REQ := Senden_Start,
ID := IP_CONNECT_1.ID,
R_ID := ' ',
SD_1 := Daten.Senden);
xUSEND_DONE_1 := IP_USEND_1.DONE;
xUSEND_ERROR_1 := IP_USEND_1.ERROR;
iUSEND_STATUS_1 := IP_USEND_1.STATUS;
Daten.Senden := IP_USEND_1.SD_1;
If xUSEND_DONE_1 then
Senden_Start := False;
End_If;
IP_URCV_1(EN_R := xCONNECT_VALID_1,
ID := IP_CONNECT_1.ID,
R_ID := ' ',
RD_1 := Daten.Empfangen);
xURCV_DONE_1 := IP_URCV_1.NDR;
xURCV_ERROR_1 := IP_URCV_1.ERROR;
iURCV_STATUS_1 := IP_URCV_1.STATUS;
Daten.Empfangen := IP_URCV_1.RD_1;
Verbindung_IO := xCONNECT_VALID_1;
Error := xCONNECT_ERROR_1;
(*@KEY@: END_WORKSHEET *)
END_FUNCTION_BLOCK
Online Ansicht Bilder:
Vielen Dank schon mal im vorraus.
Maik