RoBop
Level-2
- Beiträge
- 130
- Reaktionspunkte
- 10
-> Hier kostenlos registrieren
Hallo,
ich habe die ehrenvolle Aufgabe, ein S5 Programm mehr oder weniger in ein S7 wegen einem Umbau umzuschreiben.
Irgdwo ist bei mir der Wurm drin und ich verstehe nicht so ganz was das soll.
Das ganze Schrittprogramm besteht aus diesem Code.
Vorab M1.1 ist ein "High-Merker"
Ich vermute:
Es soll eine Klappe geöffnet werden. Die Klappe hat eine Stellungsrückmeldung. Diese Meldung wird mit einer Zeit überwacht. Ist die Meldung innerhalb einer vorgegebenen Zeit nicht da, bleibt das Programm stehen und nach Ablauf der Zeit wird eine Störung erzeugt.
Das Programm bleibt nicht so lange stehen, bis die Zeit abgelaufen ist sondern springt bei der tatsächlichen "Stellungsrückmeldung" in den nächsten Schritt.
Ich selbst hatte noch die den "SPZ" Befehl aus meiner Beobachtung würde ich behaupten, dass dieser Befehl dem "SPB" gleicht.
Hier der Code:
NETWORK
TITLE = ERSTFILTRAT V2.6 OEFFNEN
A M 145.7 // FREIGABE NW 32
S Q 16.1 // ERSTFILTRAT V2.6 OEFFNEN
S M 146.0 // FREIGABE NW 33
S M 101.0
R M 145.7
NETWORK
TITLE = WARTEN AUF RM ERSTFILTRAT OEFFN.
A M 146.0 // FREIGABE NW 33
AN M 141.0 // ZEIT NICHT ABGELAUFEN
AN T 70 // UEBERWACHUNGSTIMER
JCN X024
CALL FC 0 // TIMER STARTEN
( _TIME := T 70
, CNT := MW 10
, WERT := DBW 140
, RDY := M 141.0
);
X024: NOP 0
A M 146.0
A I 9.6 // RM ERSTFITRAT AUF
S M 146.1 // FREIGABE NW 34
R M 146.0
R M 140.4
JCN X025
CALL FC 1 // HILFSZAEHLER NORM.
( CNT := MW 10
, RDY := M 141.0
);
X025: NOP 0;
// --------------------------------
A M 146.0
A M 141.0 // MERKER ZEIT ABGELAUFEN
AN I 9.6 // KEINE RM ERSRTFILTRAT AUF
S M 140.4 // STOERUNG SPUELPROGRAMM
hier der Baustein der mich am meisten verwirrt: "FC0"
NAME: UEBWZEIT
VAR_INPUT
_TIME :timer; // TIME
CNT :word; // CNT
WERT :word; // WERT
END_VAR
VAR_OUTPUT
RDY :bool; // RDY
END_VAR
BEGIN
NETWORK
TITLE = UEBERWACHUNGS-ZEIT
L #WERT // ZEITWERT SIEHE DB10
L #CNT // ZAEHLERWERT
==I // ZEIT IST ABGELAUFEN
JZ M001
// -- HILFZAEHLER UM 1 ERHOEHEN ---
L 1
L #CNT
+I
T #CNT
AN M 1.1
L S5TIME#1s // 1 SEKUNDE
SE #_TIME // TIMER STARTEN
A M 1.1
L S5TIME#1s
SE #_TIME
JU M002 // ENDE
M001:A M 1.1
S #RDY // UEBERWACHUNGSZEIT ABGELAUFEN
L 0 // HILFZAEHLER AUF NULL SETZEN
T #CNT
M002:NOP 0
END_FUNCTION
Und hier der FC1:
FUNCTION FC 1 : VOID
NAME: CNT_NORM // CNT:NORM
VAR_INPUT
CNT :word; // CNT
RDY :bool; // RDY
END_VAR
BEGIN
NETWORK
TITLE = HILFSZAEHLER NORMIEREN
L 0
T #CNT // HILFSZAEHLER = 0
A M 1.1
R #RDY // RESET READY-MERKER
END_FUNCTION
Verstehe ich das Programm so wie ich es oben vermute richtig?? Wenn ja werde ich das etwas einfacher umschreiben. Hatte man damals keine einfachere Möglichkeit? In der S7 geht das Programm zumindest gar nicht. CPU geht so auf "Stop"
Das ist keine Bequemlichkeit meinerseits sondern ich komme nach langen Rätseln wirklich nicht mehr weiter.
Vielen Dank für die Mühe
ich habe die ehrenvolle Aufgabe, ein S5 Programm mehr oder weniger in ein S7 wegen einem Umbau umzuschreiben.
Irgdwo ist bei mir der Wurm drin und ich verstehe nicht so ganz was das soll.
Das ganze Schrittprogramm besteht aus diesem Code.
Vorab M1.1 ist ein "High-Merker"
Ich vermute:
Es soll eine Klappe geöffnet werden. Die Klappe hat eine Stellungsrückmeldung. Diese Meldung wird mit einer Zeit überwacht. Ist die Meldung innerhalb einer vorgegebenen Zeit nicht da, bleibt das Programm stehen und nach Ablauf der Zeit wird eine Störung erzeugt.
Das Programm bleibt nicht so lange stehen, bis die Zeit abgelaufen ist sondern springt bei der tatsächlichen "Stellungsrückmeldung" in den nächsten Schritt.
Ich selbst hatte noch die den "SPZ" Befehl aus meiner Beobachtung würde ich behaupten, dass dieser Befehl dem "SPB" gleicht.
Hier der Code:
NETWORK
TITLE = ERSTFILTRAT V2.6 OEFFNEN
A M 145.7 // FREIGABE NW 32
S Q 16.1 // ERSTFILTRAT V2.6 OEFFNEN
S M 146.0 // FREIGABE NW 33
S M 101.0
R M 145.7
NETWORK
TITLE = WARTEN AUF RM ERSTFILTRAT OEFFN.
A M 146.0 // FREIGABE NW 33
AN M 141.0 // ZEIT NICHT ABGELAUFEN
AN T 70 // UEBERWACHUNGSTIMER
JCN X024
CALL FC 0 // TIMER STARTEN
( _TIME := T 70
, CNT := MW 10
, WERT := DBW 140
, RDY := M 141.0
);
X024: NOP 0
A M 146.0
A I 9.6 // RM ERSTFITRAT AUF
S M 146.1 // FREIGABE NW 34
R M 146.0
R M 140.4
JCN X025
CALL FC 1 // HILFSZAEHLER NORM.
( CNT := MW 10
, RDY := M 141.0
);
X025: NOP 0;
// --------------------------------
A M 146.0
A M 141.0 // MERKER ZEIT ABGELAUFEN
AN I 9.6 // KEINE RM ERSRTFILTRAT AUF
S M 140.4 // STOERUNG SPUELPROGRAMM
hier der Baustein der mich am meisten verwirrt: "FC0"
NAME: UEBWZEIT
VAR_INPUT
_TIME :timer; // TIME
CNT :word; // CNT
WERT :word; // WERT
END_VAR
VAR_OUTPUT
RDY :bool; // RDY
END_VAR
BEGIN
NETWORK
TITLE = UEBERWACHUNGS-ZEIT
L #WERT // ZEITWERT SIEHE DB10
L #CNT // ZAEHLERWERT
==I // ZEIT IST ABGELAUFEN
JZ M001
// -- HILFZAEHLER UM 1 ERHOEHEN ---
L 1
L #CNT
+I
T #CNT
AN M 1.1
L S5TIME#1s // 1 SEKUNDE
SE #_TIME // TIMER STARTEN
A M 1.1
L S5TIME#1s
SE #_TIME
JU M002 // ENDE
M001:A M 1.1
S #RDY // UEBERWACHUNGSZEIT ABGELAUFEN
L 0 // HILFZAEHLER AUF NULL SETZEN
T #CNT
M002:NOP 0
END_FUNCTION
Und hier der FC1:
FUNCTION FC 1 : VOID
NAME: CNT_NORM // CNT:NORM
VAR_INPUT
CNT :word; // CNT
RDY :bool; // RDY
END_VAR
BEGIN
NETWORK
TITLE = HILFSZAEHLER NORMIEREN
L 0
T #CNT // HILFSZAEHLER = 0
A M 1.1
R #RDY // RESET READY-MERKER
END_FUNCTION
Verstehe ich das Programm so wie ich es oben vermute richtig?? Wenn ja werde ich das etwas einfacher umschreiben. Hatte man damals keine einfachere Möglichkeit? In der S7 geht das Programm zumindest gar nicht. CPU geht so auf "Stop"
Das ist keine Bequemlichkeit meinerseits sondern ich komme nach langen Rätseln wirklich nicht mehr weiter.
Vielen Dank für die Mühe