Guten Morgen,
ich habe hier ein "kleines" Problem. Vielleicht kann mir ja jemand helfen. ;)
Grundaufbau:
1x S7 CPU317
2x Vipa Speed 7
Die CPU´s sind per MPI Bus verbunden.
Die beiden Vipa´s holen sich per X_GET 240 Bytes an Daten von der S7
Die S7 holt sich ebenfalls per X_GET Daten von den beiden Vipa SPS
Das funktioniert aber nur sporadisch, manchmal kommen 20 Sekunden lang keine neuen Daten!
Mir ist aufgefallen das bei RET_Val sehr oft der Fehler 80C0 ausgegeben wird.
Also: "Die angegebene Verbindung ist durch einen anderen Auftrag bereits belegt"
Woran kann das liegen? Habe schon mal testweise eine der Vipas gestoppt, das macht es aber auch nicht besser...
Außerdem mal zwischen den Aufträgen die Verbindung abgebaut(also Cont auf 0), macht es nur langsamer nicht besser.
Hier der Programmcode von einer VIPA, die andere ist genau so programmiert.
Req wird immer erst gesetzt wenn der vorige Auftrag beendet ist und beginnt dann wieder von vorne wenn alle 4 Aufträge bearbeitet sind.
Irgendwer eine Idee woran es liegen könnte? :idea:
Danke für eure Zeit!
ich habe hier ein "kleines" Problem. Vielleicht kann mir ja jemand helfen. ;)
Grundaufbau:
1x S7 CPU317
2x Vipa Speed 7
Die CPU´s sind per MPI Bus verbunden.
Die beiden Vipa´s holen sich per X_GET 240 Bytes an Daten von der S7
Die S7 holt sich ebenfalls per X_GET Daten von den beiden Vipa SPS
Das funktioniert aber nur sporadisch, manchmal kommen 20 Sekunden lang keine neuen Daten!
Mir ist aufgefallen das bei RET_Val sehr oft der Fehler 80C0 ausgegeben wird.
Also: "Die angegebene Verbindung ist durch einen anderen Auftrag bereits belegt"
Woran kann das liegen? Habe schon mal testweise eine der Vipas gestoppt, das macht es aber auch nicht besser...
Außerdem mal zwischen den Aufträgen die Verbindung abgebaut(also Cont auf 0), macht es nur langsamer nicht besser.
Hier der Programmcode von einer VIPA, die andere ist genau so programmiert.
Req wird immer erst gesetzt wenn der vorige Auftrag beendet ist und beginnt dann wieder von vorne wenn alle 4 Aufträge bearbeitet sind.
Code:
NETWORK
TITLE =Kommunikation mit Server MPI 2
// SPA M001
CALL "X_GET" (
REQ := DB8.DBX 20.0,//DB8.DBX20.0 M2.3
CONT := "Daten Allgemein".DB_VAR19,//Verbindung aufrecht erhalten (Ja/Nein)?
DEST_ID := W#16#2,//Empfängeradresse
VAR_ADDR := P#DB33.DBX0.0 BYTE 60,//Variablenadresse im Kommunikationspartner
RET_VAL := "Transfer Text PC --> SPS".DB_VAR6841,//Statusanzeige, negativ wenn ein Fehler auftritt
BUSY := DB8.DBX 20.1,//SFC aktiv?
RD := P#DB33.DBX0.0 BYTE 60);//Pointer auf die Adresse, in die die Empfangsdaten geschrieben werden
U DB8.DBX 20.1;
FN DB8.DBX 20.2;
S DB8.DBX 20.3;
R DB8.DBX 20.0;
CALL "X_GET" (
REQ := DB8.DBX 20.3,
CONT := "Daten Allgemein".DB_VAR19,//Verbindung aufrecht erhalten (Ja/Nein)?
DEST_ID := W#16#2,//Empfängeradresse
VAR_ADDR := P#DB33.DBX60.0 BYTE 60,//Variablenadresse im Kommunikationspartner
RET_VAL := "Transfer Text PC --> SPS".DB_VAR6841,//Statusanzeige, negativ wenn ein Fehler auftritt
BUSY := DB8.DBX 20.4,//SFC aktiv?
RD := P#DB33.DBX60.0 BYTE 60);//Pointer auf die Adresse, in die die Empfangsdaten geschrieben werden
U DB8.DBX 20.4;
FN DB8.DBX 20.5;
S DB8.DBX 20.6;
R DB8.DBX 20.3;
CALL "X_GET" (
REQ := DB8.DBX 20.6,
CONT := "Daten Allgemein".DB_VAR19,//Verbindung aufrecht erhalten (Ja/Nein)?
DEST_ID := W#16#2,//Empfängeradresse
VAR_ADDR := P#DB33.DBX120.0 BYTE 60,//Variablenadresse im Kommunikationspartner
RET_VAL := "Transfer Text PC --> SPS".DB_VAR6841,//Statusanzeige, negativ wenn ein Fehler auftritt
BUSY := DB8.DBX 20.7,//SFC aktiv?
RD := P#DB33.DBX120.0 BYTE 60);//Pointer auf die Adresse, in die die Empfangsdaten geschrieben werden
U DB8.DBX 20.7;
FN DB8.DBX 21.0;
R DB8.DBX 20.6;
S DB8.DBX 21.1;
CALL "X_GET" (
REQ := DB8.DBX 21.1,
CONT := "Daten Allgemein".DB_VAR19,//Verbindung aufrecht erhalten (Ja/Nein)?
DEST_ID := W#16#2,//Empfängeradresse
VAR_ADDR := P#DB37.DBX0.0 BYTE 60,//Variablenadresse im Kommunikationspartner
RET_VAL := "Transfer Text PC --> SPS".DB_VAR6841,//Statusanzeige, negativ wenn ein Fehler auftritt
BUSY := DB8.DBX 21.2,//SFC aktiv?
RD := P#DB37.DBX0.0 BYTE 60);//Pointer auf die Adresse, in die die Empfangsdaten geschrieben werden
U DB8.DBX 21.2;
FN DB8.DBX 21.3;
R DB8.DBX 21.1;
// S DB8.DBX 20.0
NOP 0;
Danke für eure Zeit!