Siemens
Digital Industries, Motion Control, Machine Tool Systems
8840
Follower:innenWerkstückzähler Schicht
31.05.2018, 08:22 Uhr
Hallo. Ich bin schon länger hier im Forum unterwegs, habe schon vieles gelesen, auch schon vieles für mich mitgenommen. Nun Habe ich jetzt alle 51 Seiten hier durchgelese um das passende für mein Vorhaben zu finden, doch leider ist nichts dabei. Deswegen neues Thema.
Ich arbeite an chiron mit 840d und Hermle mit 840d Shopmill. Ab beiden Maschinen haben wir den Standart Werkstückzähler. Dieser läuft bis man den von Hand auf null Setzt. Mein Traum ist aber dass der Automatisch ungefähr um 14:03 auf null gesetzt wird. Also quasi nur die Schichtstückzahl gezählt wird. Aber das soll in der Originalmaske passieren. Wenn's geht.
Habe schon an die R-parameter gedacht, doch wie kann ich die Aktuelle Uhrzeit in z.b. r200 schreiben, um dann
Wenn r200>14:30 Dann M54 ( m54 ist angeblich Zähler auf null setzen bei Hermle )
Wenn mir einer Helfen kann dann währe es super von euch
Gruß Dimitri
Ich arbeite an chiron mit 840d und Hermle mit 840d Shopmill. Ab beiden Maschinen haben wir den Standart Werkstückzähler. Dieser läuft bis man den von Hand auf null Setzt. Mein Traum ist aber dass der Automatisch ungefähr um 14:03 auf null gesetzt wird. Also quasi nur die Schichtstückzahl gezählt wird. Aber das soll in der Originalmaske passieren. Wenn's geht.
Habe schon an die R-parameter gedacht, doch wie kann ich die Aktuelle Uhrzeit in z.b. r200 schreiben, um dann
Wenn r200>14:30 Dann M54 ( m54 ist angeblich Zähler auf null setzen bei Hermle )
Wenn mir einer Helfen kann dann währe es super von euch
Gruß Dimitri
31.05.2018, 15:11 Uhr
Hallo Demon,
hier eine Möglichkeit:
1.) Uhrzeit in R-Parameter wegspeichern.
R200=$A_HOUR*60+$A_MINUTE ; Aktuelle Uhrzeit in Minuten Umrechnen
Dann steht die aktuelle Uhrzeit in Minuten im R200
Allerdings muss du dir dann noch irgendeine Logik einfallen lassen zu welchen Zeiten du es löschen willst
Mir fällt auf die Schnelle nur das ein, habe gerad nichts zum testen. Ist etwas aufwendig, aber vielleicht reicht dir das ja bzw. gibt dir einen Lösungsansatz:
Kannst ja folgenden Code mal Probieren.
Wenn du den in ein Unterprogramm packst und dieses bei jedem Programm am Start aufrufst könnte es klappen.
; verwendete R-Parameter und Beschreibung
;
; R200 aktuelle Uhrzeit in Minuten
; R202 aktuelle Schicht 1= 1.Schicht
; 2= 2.Schicht
; R205 Flag für zurücksetzen 1. Schicht. 0= Zähler wurde noch nicht zurückgesetzt
; 1= Zähler wurde bereits zurückgesetzt
; R206 Flag für zurücksetzen 2. Schicht. 0= Zähler wurde noch nicht zurückgesetzt
; 1= Zähler wurde bereits zurückgesetzt
R200=$A_HOUR*60+$A_MINUTE ; Aktuelle Uhrzeit in Minuten Umrechnen
; feststellen welche Schicht
IF R200 < 840
R202=1 ; Schicht1 von 00:00 bis 13:59
IF (R205 <> 0) AND (R205 <> 1)
; Parameter steht auf ungueltigem Wert
R205=0 ; auf Defaultwertwert setzen
ENDIF
ELSE
R202=2 ; Schicht2 von 14:00 bis 23:59
IF (R206 <> 0) AND (R206 <> 1)
; Parameter steht auf ungueltigem Wert
R206=0 ; auf Defaultwertwert setzen
ENDIF
ENDIF
IF (R202 == 1) AND (R205 == 0)
; wenn 1. Schicht und Zaehler noch nicht zurückgesetzt dann Zähler zurücksetzen
M54
R205=1 ; Flag das Zähler in Schicht 1 zurückgesetzt wurde
R206=0 ; Flag für Schicht 2 auf 0 setzten
ENDIF
IF (R202 == 2) AND (R206 == 0)
; wenn 2. Schicht und Zaehler noch nicht zurückgesetzt dann Zähler zurücksetzen
M54
R206=1 ; Flag das Zähler in Schicht 2 zurückgesetzt wurde
R205=0 ; Flag für Schicht 1 auf 0 setzten
ENDIF
ich lade den Inhalt auch mal als Unterprogramm hoch. Ist so etwas schwer zu lesen. Bringe keine anständige Formatierung mit Zeileneinrückung hin.
Mfg
Fräsmurml
Der Beitrag wurde von fräsmurml bearbeitet: 31.05.2018, 15:17 Uhr
hier eine Möglichkeit:
1.) Uhrzeit in R-Parameter wegspeichern.
R200=$A_HOUR*60+$A_MINUTE ; Aktuelle Uhrzeit in Minuten Umrechnen
Dann steht die aktuelle Uhrzeit in Minuten im R200
Allerdings muss du dir dann noch irgendeine Logik einfallen lassen zu welchen Zeiten du es löschen willst
Mir fällt auf die Schnelle nur das ein, habe gerad nichts zum testen. Ist etwas aufwendig, aber vielleicht reicht dir das ja bzw. gibt dir einen Lösungsansatz:
Kannst ja folgenden Code mal Probieren.
Wenn du den in ein Unterprogramm packst und dieses bei jedem Programm am Start aufrufst könnte es klappen.
; verwendete R-Parameter und Beschreibung
;
; R200 aktuelle Uhrzeit in Minuten
; R202 aktuelle Schicht 1= 1.Schicht
; 2= 2.Schicht
; R205 Flag für zurücksetzen 1. Schicht. 0= Zähler wurde noch nicht zurückgesetzt
; 1= Zähler wurde bereits zurückgesetzt
; R206 Flag für zurücksetzen 2. Schicht. 0= Zähler wurde noch nicht zurückgesetzt
; 1= Zähler wurde bereits zurückgesetzt
R200=$A_HOUR*60+$A_MINUTE ; Aktuelle Uhrzeit in Minuten Umrechnen
; feststellen welche Schicht
IF R200 < 840
R202=1 ; Schicht1 von 00:00 bis 13:59
IF (R205 <> 0) AND (R205 <> 1)
; Parameter steht auf ungueltigem Wert
R205=0 ; auf Defaultwertwert setzen
ENDIF
ELSE
R202=2 ; Schicht2 von 14:00 bis 23:59
IF (R206 <> 0) AND (R206 <> 1)
; Parameter steht auf ungueltigem Wert
R206=0 ; auf Defaultwertwert setzen
ENDIF
ENDIF
IF (R202 == 1) AND (R205 == 0)
; wenn 1. Schicht und Zaehler noch nicht zurückgesetzt dann Zähler zurücksetzen
M54
R205=1 ; Flag das Zähler in Schicht 1 zurückgesetzt wurde
R206=0 ; Flag für Schicht 2 auf 0 setzten
ENDIF
IF (R202 == 2) AND (R206 == 0)
; wenn 2. Schicht und Zaehler noch nicht zurückgesetzt dann Zähler zurücksetzen
M54
R206=1 ; Flag das Zähler in Schicht 2 zurückgesetzt wurde
R205=0 ; Flag für Schicht 1 auf 0 setzten
ENDIF
ich lade den Inhalt auch mal als Unterprogramm hoch. Ist so etwas schwer zu lesen. Bringe keine anständige Formatierung mit Zeileneinrückung hin.
Mfg
Fräsmurml
Der Beitrag wurde von fräsmurml bearbeitet: 31.05.2018, 15:17 Uhr
Angehängte Datei(en)
31.05.2018, 17:56 Uhr
Top. Schon mal vielen dank. Ich werde es morgen ausprobieren. Danke danke danke
31.05.2018, 18:13 Uhr
Super,
über ein Feedback ob es funktioniert hat oder nicht würde ich mich freuen.
Mfg
Fräsmurml
über ein Feedback ob es funktioniert hat oder nicht würde ich mich freuen.
Mfg
Fräsmurml
09.06.2018, 15:12 Uhr
Super,
über ein Feedback ob es funktioniert hat oder nicht würde ich mich freuen.
Mfg
Fräsmurml
über ein Feedback ob es funktioniert hat oder nicht würde ich mich freuen.
Mfg
Fräsmurml
Hallo.
Habe nun endlich Zeit gefunden, und dein Unterprogramm ausprobiert. Es Funktioniert, ABER habe versucht das ganze mit meinem logischen Denken auf 3 Schichten ( da 3-Fach Schicht ) zu ändern, Früh- macht die Maschine, Nacht macht die Maschine, aber in der Spätschicht also von 14:00 bis 22:00 macht sie kein Reset....... BZW. um z.B. 14:05 bleibt der Zähler .
Heute war mein Schädel am qualmen..... aber der Rauch hat nicht viel gebracht .
Sorry, ich habe vergessen zu sagen dass es 3-Fach-Schicht ist
Könntest du mir da weiterhelfen?
Der Beitrag wurde von Demon bearbeitet: 09.06.2018, 15:14 Uhr
09.06.2018, 18:22 Uhr
Das Thema gab's hier schon mal vor 1,5 Jahren.
Einfach mal die Suchfunktion mit "Stückzähler" füttern. In den Sinumerik-Themen wirst du auch dieses Thema finden.
Da geht es auch um die Protokollierung der Schichtstückzahlen.
Aber ein fertiges und funktionierendes Unterprogramm für diesen Zweck kostet entweder Nerven und Zeit, oder halt etwas Geld.
Einfach mal die Suchfunktion mit "Stückzähler" füttern. In den Sinumerik-Themen wirst du auch dieses Thema finden.
Da geht es auch um die Protokollierung der Schichtstückzahlen.
Aber ein fertiges und funktionierendes Unterprogramm für diesen Zweck kostet entweder Nerven und Zeit, oder halt etwas Geld.
10.06.2018, 08:47 Uhr
Hallo.
Habe nun endlich Zeit gefunden, und dein Unterprogramm ausprobiert. Es Funktioniert, ABER habe versucht das ganze mit meinem logischen Denken auf 3 Schichten ( da 3-Fach Schicht ) zu ändern, Früh- macht die Maschine, Nacht macht die Maschine, aber in der Spätschicht also von 14:00 bis 22:00 macht sie kein Reset....... BZW. um z.B. 14:05 bleibt der Zähler .
Heute war mein Schädel am qualmen..... aber der Rauch hat nicht viel gebracht .
Sorry, ich habe vergessen zu sagen dass es 3-Fach-Schicht ist
Könntest du mir da weiterhelfen?
Habe nun endlich Zeit gefunden, und dein Unterprogramm ausprobiert. Es Funktioniert, ABER habe versucht das ganze mit meinem logischen Denken auf 3 Schichten ( da 3-Fach Schicht ) zu ändern, Früh- macht die Maschine, Nacht macht die Maschine, aber in der Spätschicht also von 14:00 bis 22:00 macht sie kein Reset....... BZW. um z.B. 14:05 bleibt der Zähler .
Heute war mein Schädel am qualmen..... aber der Rauch hat nicht viel gebracht .
Sorry, ich habe vergessen zu sagen dass es 3-Fach-Schicht ist
Könntest du mir da weiterhelfen?
Servus,
hab das Programm nochmal auf 3 Schichten angepasst.
Bitte mal testen ob es deinen Ansprüchen genügt.
Mfg
Fräsmurml
Der Beitrag wurde von fräsmurml bearbeitet: 10.06.2018, 08:48 Uhr
Angehängte Datei(en)
10.06.2018, 10:57 Uhr
R200 == 360 OR R200 > 360
was soll diese Abfrage?
R200 >= 360 reicht aus ...
was soll diese Abfrage?
R200 >= 360 reicht aus ...
--------------------
Schaut doch mal rein:
Mein Youtube Kanal
Anwendungen, Zyklen, CAD/CAM
-----------------------------------------------------------------------------------------------------------------------------
Mein Youtube Kanal
Anwendungen, Zyklen, CAD/CAM
-----------------------------------------------------------------------------------------------------------------------------
10.06.2018, 11:15 Uhr
10.06.2018, 11:21 Uhr
Servus,
hast recht. Hab nur nicht dran gedacht
Mfg
Fräsmurml
hast recht. Hab nur nicht dran gedacht
Mfg
Fräsmurml
Tagesliste...
einmal klugSch***en ... check ...
--------------------
Schaut doch mal rein:
Mein Youtube Kanal
Anwendungen, Zyklen, CAD/CAM
-----------------------------------------------------------------------------------------------------------------------------
Mein Youtube Kanal
Anwendungen, Zyklen, CAD/CAM
-----------------------------------------------------------------------------------------------------------------------------
11.06.2018, 20:02 Uhr
Hallo Zusammen,
VIELEN LIEBEN DANK für die Hilfe. Ihr seid echt SUPER !!!
es scheint zu funktionieren,
Nur das dicke hat gefehlt. unt das Wort RET am ende ( was heißt es eigentlich ? ) kennt die Maschine nicht.
IF $P_SEARCH==1 GOTOF END
; bei Satsuchlauf ueberspringen
;
; verwendete R-Parameter und Beschreibung
;
; R200 aktuelle Uhrzeit in Minuten
; R202 aktuelle Schicht 1= 1.Schicht
; 2= 2.Schicht
; 3= 3.Schicht
; R205 Flag für zurücksetzen 1. Schicht. 0= Zähler wurde noch nicht zurückgesetzt
; 1= Zähler wurde bereits zurückgesetzt
; R206 Flag für zurücksetzen 2. Schicht. 0= Zähler wurde noch nicht zurückgesetzt
; 1= Zähler wurde bereits zurückgesetzt
; R207 Flag für zurücksetzen 3. Schicht. 0= Zähler wurde noch nicht zurückgesetzt
; 1= Zähler wurde bereits zurückgesetzt
R200=$A_HOUR*60+$A_MINUTE ; Aktuelle Uhrzeit in Minuten Umrechnen
; feststellen welche Schicht
IF (R200 == 360 OR R200 > 360) OR (R200 < 840) GOTOC SCHICHT1
; von 6:00 bis 14:00
IF (R200 == 840 OR R200 > 840) OR (R200 < 1320) GOTOC SCHICHT2
; von 14:00 bis 22:00
IF (R200 == 1320 OR R200 > 1320) OR (R200 < 360) GOTOC SCHICHT3
; von 22:00 bis 6:00
; Fehlerbehandlung falls Zeit keiner Schicht zugeordnet werden kann
Fehler1:
MSG("!! W A R N U N G !! Schichtzuordnung Fehlerhaft R200=" <<R200")
M00
Stopre
gotob Fehler1
; ========================================================================
SCHICHT1:
R202=1 ; Schicht1 von 06:00 bis 13:59
IF (R205 <> 0) AND (R205 <> 1)
; Parameter steht auf ungueltigem Wert
R205=0 ; auf Defaultwertwert setzen
ENDIF
IF (R202 == 1) AND (R205 == 0)
; wenn 1. Schicht und Zaehler noch nicht zurückgesetzt dann Zähler zurücksetzen
M54
R205=1 ; Flag das Zähler in Schicht 1 zurückgesetzt wurde
R206=0 ; Flag für Schicht 2 auf 0 setzten
R207=0 ; Flag für Schicht 3 auf 0 setzten
ENDIF
GOTO END
; ========================================================================
SCHICHT2:
R202=2 ; Schicht1 von 06:00 bis 13:59
IF (R206 <> 0) AND (R206 <> 1)
; Parameter steht auf ungueltigem Wert
R206=0 ; auf Defaultwertwert setzen
ENDIF
IF (R202 == 2) AND (R206 == 0)
; wenn 2. Schicht und Zaehler noch nicht zurückgesetzt dann Zähler zurücksetzen
M54
R206=1 ; Flag das Zähler in Schicht 2 zurückgesetzt wurde
R205=0 ; Flag für Schicht 1 auf 0 setzten
R207=0 ; Flag für Schicht 3 auf 0 setzten
ENDIF
GOTO END
; ========================================================================
SCHICHT3:
R202=3 ; Schicht1 von 06:00 bis 13:59
IF (R207 <> 0) AND (R207 <> 1)
; Parameter steht auf ungueltigem Wert
R207=0 ; auf Defaultwertwert setzen
ENDIF
IF (R202 == 3) AND (R207 == 0)
; wenn 2. Schicht und Zaehler noch nicht zurückgesetzt dann Zähler zurücksetzen
M54
R207=1 ; Flag das Zähler in Schicht 2 zurückgesetzt wurde
R205=0 ; Flag für Schicht 1 auf 0 setzten
R206=0 ; Flag für Schicht 2 auf 0 setzten
ENDIF
GOTO END
END:
M17
MfG Dimitri
Der Beitrag wurde von Demon bearbeitet: 11.06.2018, 20:03 Uhr
VIELEN LIEBEN DANK für die Hilfe. Ihr seid echt SUPER !!!
es scheint zu funktionieren,
Nur das dicke hat gefehlt. unt das Wort RET am ende ( was heißt es eigentlich ? ) kennt die Maschine nicht.
IF $P_SEARCH==1 GOTOF END
; bei Satsuchlauf ueberspringen
;
; verwendete R-Parameter und Beschreibung
;
; R200 aktuelle Uhrzeit in Minuten
; R202 aktuelle Schicht 1= 1.Schicht
; 2= 2.Schicht
; 3= 3.Schicht
; R205 Flag für zurücksetzen 1. Schicht. 0= Zähler wurde noch nicht zurückgesetzt
; 1= Zähler wurde bereits zurückgesetzt
; R206 Flag für zurücksetzen 2. Schicht. 0= Zähler wurde noch nicht zurückgesetzt
; 1= Zähler wurde bereits zurückgesetzt
; R207 Flag für zurücksetzen 3. Schicht. 0= Zähler wurde noch nicht zurückgesetzt
; 1= Zähler wurde bereits zurückgesetzt
R200=$A_HOUR*60+$A_MINUTE ; Aktuelle Uhrzeit in Minuten Umrechnen
; feststellen welche Schicht
IF (R200 == 360 OR R200 > 360) OR (R200 < 840) GOTOC SCHICHT1
; von 6:00 bis 14:00
IF (R200 == 840 OR R200 > 840) OR (R200 < 1320) GOTOC SCHICHT2
; von 14:00 bis 22:00
IF (R200 == 1320 OR R200 > 1320) OR (R200 < 360) GOTOC SCHICHT3
; von 22:00 bis 6:00
; Fehlerbehandlung falls Zeit keiner Schicht zugeordnet werden kann
Fehler1:
MSG("!! W A R N U N G !! Schichtzuordnung Fehlerhaft R200=" <<R200")
M00
Stopre
gotob Fehler1
; ========================================================================
SCHICHT1:
R202=1 ; Schicht1 von 06:00 bis 13:59
IF (R205 <> 0) AND (R205 <> 1)
; Parameter steht auf ungueltigem Wert
R205=0 ; auf Defaultwertwert setzen
ENDIF
IF (R202 == 1) AND (R205 == 0)
; wenn 1. Schicht und Zaehler noch nicht zurückgesetzt dann Zähler zurücksetzen
M54
R205=1 ; Flag das Zähler in Schicht 1 zurückgesetzt wurde
R206=0 ; Flag für Schicht 2 auf 0 setzten
R207=0 ; Flag für Schicht 3 auf 0 setzten
ENDIF
GOTO END
; ========================================================================
SCHICHT2:
R202=2 ; Schicht1 von 06:00 bis 13:59
IF (R206 <> 0) AND (R206 <> 1)
; Parameter steht auf ungueltigem Wert
R206=0 ; auf Defaultwertwert setzen
ENDIF
IF (R202 == 2) AND (R206 == 0)
; wenn 2. Schicht und Zaehler noch nicht zurückgesetzt dann Zähler zurücksetzen
M54
R206=1 ; Flag das Zähler in Schicht 2 zurückgesetzt wurde
R205=0 ; Flag für Schicht 1 auf 0 setzten
R207=0 ; Flag für Schicht 3 auf 0 setzten
ENDIF
GOTO END
; ========================================================================
SCHICHT3:
R202=3 ; Schicht1 von 06:00 bis 13:59
IF (R207 <> 0) AND (R207 <> 1)
; Parameter steht auf ungueltigem Wert
R207=0 ; auf Defaultwertwert setzen
ENDIF
IF (R202 == 3) AND (R207 == 0)
; wenn 2. Schicht und Zaehler noch nicht zurückgesetzt dann Zähler zurücksetzen
M54
R207=1 ; Flag das Zähler in Schicht 2 zurückgesetzt wurde
R205=0 ; Flag für Schicht 1 auf 0 setzten
R206=0 ; Flag für Schicht 2 auf 0 setzten
ENDIF
GOTO END
END:
M17
MfG Dimitri
Der Beitrag wurde von Demon bearbeitet: 11.06.2018, 20:03 Uhr
11.06.2018, 20:35 Uhr
ret =return (Rücksprung aus einem Unterprogramm)
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: