-> Hier kostenlos registrieren
Hallo zusammen,
Ich habe bei einer bestehenden Anlage die CPU getauscht von einer 314C 2DP auf eine 314C 2PN/DP. Das Profibusnetz blieb so wie es war. Der Ablauf funktioniert soweit wieder. Nur eine Sache funktioniert jetz nicht mehr. Ich habe 2 Drehgeber die sich eigentlich auf 0 Setzen sollen, sobald die Lichtschranke ein Werkstück erkennt. Dies hat bei der alten SPS auch gut funktioniert, durch eine einfache Ladefunktion mit Ladewert 0. Seit dem ich die neue SPS habe funktioniert dies nun nicht mehr. Erst nach x (mind 3) versuchen wird der Ladewert in das Modul geschrieben. Aber selbst wenn ich ohne Flanke arbeite funktioniert es erst nach mehreren Versuchen. Überseh ich etwas? Wo könnte hier das Problem sein? Ist die neue SPS zu schnell? Ist vielleicht die Historisch gewachsene Adressbelegung schuld?
Vom Counter Modul bekomme ich sogar die Rückmeldung, dass ein Wert geladen wird.
Das Busnetz

Die Parameter

Hier der Entsprechende Reset befehl
Hier noch der Baustein der die Counter Verwaltet:
Ich habe bei einer bestehenden Anlage die CPU getauscht von einer 314C 2DP auf eine 314C 2PN/DP. Das Profibusnetz blieb so wie es war. Der Ablauf funktioniert soweit wieder. Nur eine Sache funktioniert jetz nicht mehr. Ich habe 2 Drehgeber die sich eigentlich auf 0 Setzen sollen, sobald die Lichtschranke ein Werkstück erkennt. Dies hat bei der alten SPS auch gut funktioniert, durch eine einfache Ladefunktion mit Ladewert 0. Seit dem ich die neue SPS habe funktioniert dies nun nicht mehr. Erst nach x (mind 3) versuchen wird der Ladewert in das Modul geschrieben. Aber selbst wenn ich ohne Flanke arbeite funktioniert es erst nach mehreren Versuchen. Überseh ich etwas? Wo könnte hier das Problem sein? Ist die neue SPS zu schnell? Ist vielleicht die Historisch gewachsene Adressbelegung schuld?
Vom Counter Modul bekomme ich sogar die Rückmeldung, dass ein Wert geladen wird.
Das Busnetz

Die Parameter

Hier der Entsprechende Reset befehl
Code:
L L#0
T #Reset_Pos_QF1
T #Reset_Pos_Qf2
U "E_ini_QF1"
FP #fm0
S #Reset_QF1
U "E_ini_QF2"
FP #fm1
S #Reset_QF2
CALL "CounterAuswertung"
CounterAdressEingang:=302
CounterAdressAusgang:=292
DB_Num :=15
reset :=#Reset_QF1
Load_Pos :=#Reset_Pos_QF1
Load_Pos_enable :=FALSE
Offset_mm :=0.000000e+000
Faktor :=1.000000e+000
Pos_Absolut :=#Abs_QF1
Pos_mm :="DB_Kappsaege".Is_Pos_QF1
O "QF1_Counter".Querfoerderer1.Input.ERR_LOAD
O "QF1_Counter".Querfoerderer1.Input.STS_LOAD
R #Reset_QF1
CALL "CounterAuswertung"
CounterAdressEingang:=310
CounterAdressAusgang:=310
DB_Num :=16
reset :=#Reset_QF2
Load_Pos :=#Reset_Pos_Qf2
Load_Pos_enable :=FALSE
Offset_mm :=0.000000e+000
Faktor :=1.000000e+000
Pos_Absolut :=#Abs_QF2
Pos_mm :="DB_Kappsaege".Is_Pos_QF2
O "QF2_Counter".Querfoerderer2.Input.ERR_LOAD
O "QF2_Counter".Querfoerderer2.Input.STS_LOAD
R #Reset_QF2
Hier noch der Baustein der die Counter Verwaltet:
Code:
FUNCTION "CounterAuswertung" : VOID
TITLE =
VERSION : 0.1
VAR_INPUT
CounterAdressEingang : INT ;
CounterAdressAusgang : INT ;
DB_Num : INT ;
reset : BOOL ;
Load_Pos : DWORD ;
Load_Pos_enable : BOOL ;
Offset_mm : REAL ;
Faktor : REAL ;
END_VAR
VAR_OUTPUT
Pos_Absolut : DWORD ;
Pos_mm : REAL ;
END_VAR
VAR_TEMP
temp_DB_num : WORD ;
temp_E_berreich : DWORD ;
temp_A_berreich : DWORD ;
END_VAR
BEGIN
NETWORK
TITLE =
//Pointer Vorbereiten
L #CounterAdressEingang;
ITD ;
SLD 3;
T #temp_E_berreich;
L #CounterAdressAusgang;
ITD ;
SLD 3;
T #temp_A_berreich;
L #DB_Num;
T #temp_DB_num;
//Aufschlagen des DBs
AUF DB [#temp_DB_num];
//Steuerbits löschen
L 0;
T DBD 0;
T DBD 4;
//SW-TOR öffnen
SET ;
S DBX 4.0;
NETWORK
TITLE =Set Val
U #reset;
= DBX 5.0;
SPBN m00;
L #Load_Pos;
T DBD 0;
m00: NOP 0;
NETWORK
TITLE =Schreiben in Countermodul
L #temp_A_berreich;
LAR1 ;
L DBD 0;
T PAD [AR1,P#0.0];
L DBW 4;
T PAW [AR1,P#4.0];
NETWORK
TITLE =Lesen Aus Countermodul
L #temp_E_berreich;
LAR2 ;
L PED [AR2,P#0.0];
T DBD 8;
L PED [AR2,P#4.0];
T DBD 12;
L DBD 8;
T #Pos_Absolut;
DTR ;
L #Faktor;
*R ;
L #Offset_mm;
+R ;
T #Pos_mm;
END_FUNCTION