Siemens
Siemens

Digital Industries, Motion Control, Machine Tool Systems

Zeile im NC Programm Dynamisch Löschen

Beitrag 17.11.2014, 16:13 Uhr
kavkus
kavkus
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 17.11.2014
Beiträge: 13
Guten Tag miteinenader.

Habe mir zwei Unterprogramme erstellt was die Laufzeit verschiedener Teile in eine Protkolldatei einschreibt.
Nun wollte ich fragen ob es möglich ist:

Wenn die Zeit des Programmes schonmal drinsteht. Alte Löschen neue einschreiben.
Sprich überschreiben.
Denn momentan ist es so, das immer nur eine neue Zeile angelegt wird.
Wo dann die Laufzeit mit Programmnamen , datum drinsteht.
Aber bei knapp 10 mal das gleiche Programm pro Tag ist das programm lästig lang.

gruß Kavkus
   
Beitrag 17.11.2014, 21:45 Uhr
fonsi
fonsi
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 24.03.2005
Beiträge: 59
Du kannst abfragen, ob die Datei schon existiert. Falls ja, musst sie zuerst gelöscht werden. Dein jetziges Programm legt dann eine neue an.


--------------------
Gentoo-user
   
Beitrag 18.11.2014, 12:29 Uhr
kavkus
kavkus
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 17.11.2014
Beiträge: 13
Das problem ist, das jedes Programm in die gleiche Datei schreibt.
   
Beitrag 18.11.2014, 13:06 Uhr
nixalsverdruss
nixalsverdruss
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
Wenn du dir Unterprogramme erstellt hast die die Abarbeitung protokollieren, hast du dich ja mit dem WRITE Befehl befasst.
In der Doku steht zum WRITE Befehl nicht das du explizit in eine Zeile deiner Protokoll Datei schreiben kannst.

Zu deinem Problem wie wäre es den wenn du für jedes Werkstück eine Protokoll Datei anlegen würdest.
Als Name für die Datei würde sich der Programmname anbieten.
Die könntest du bei jedem Aufruf des Werkstücks überschreiben dann hättest du aber nur die letzte Laufzeit des Teils.
   
Beitrag 18.11.2014, 14:05 Uhr
kavkus
kavkus
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 17.11.2014
Beiträge: 13
Hallo,

ich verstehe denn Sinn hinter deiner Antwort.
Bei der Umsetzung sehe ich auch kein Problem.

Nur ein Problem sehe ich darin das ich in der Woche ca 100 verschiedene Programme laufen haben. Und Insgesammt befasst die Programmeanzahl knapp 1100 Programme. Und dafür jede eine Logdatei ist meiner Meinung nach eine zumüllung der Maschine die man nicht unbedingt brauch.
   
Beitrag 18.11.2014, 15:10 Uhr
nixalsverdruss
nixalsverdruss
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
QUOTE (kavkus @ 18.11.2014, 15:05 Uhr) *
Nur ein Problem sehe ich darin das ich in der Woche ca 100 verschiedene Programme laufen haben. Und Insgesammt befasst die Programmeanzahl knapp 1100 Programme. Und dafür jede eine Logdatei ist meiner Meinung nach eine zumüllung der Maschine die man nicht unbedingt brauch.


Ob ich eine Datei mit mehr als 1100 Zeilen schreibe, da Einträge für Werkstücke doppelt vorhanden, oder ich für jedes Werkstück eine Datei mit der Letzen Laufzeit habe , in Summe ca. 1100 Dateien mit einer Zeile macht im Endeffekt weniger Daten Müll.
Zudem kann ich auf „Werkstück1_time.txt“ schneller zugreifen als die Monster Datei zu durchsuchen.
Aber um es kurz zumachen ich sehe keinen Weg eine Zeile in der Protokolldatei zu überschreiben.
   
Beitrag 18.11.2014, 16:37 Uhr
kavkus
kavkus
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 17.11.2014
Beiträge: 13
Okay, vielen Dank.
Genau das wollte ich wissen.


Besteht dann ggf. die Möglichkeit das Programm jeden Morgen oder jeden Abend löschen zu lassen.
Oder bei hochfahren der Maschine?
Maschine wird nur über das Wochenende ausgeschaltet. Dann wäre die Datei nicht all zu groß wenn die Möglichkeit besteht.
   
Beitrag 18.11.2014, 19:32 Uhr
nixalsverdruss
nixalsverdruss
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
QUOTE (kavkus @ 18.11.2014, 17:37 Uhr) *
Besteht dann ggf. die Möglichkeit das Programm jeden Morgen oder jeden Abend löschen zu lassen.
Oder bei hochfahren der Maschine?
Maschine wird nur über das Wochenende ausgeschaltet. Dann wäre die Datei nicht all zu groß wenn die Möglichkeit besteht.



an dieser Stelle würde es es dann sinn machen, das man angibt ob es sich um eine 840D mit Operate oder HMI Advanced handelt.
Bei beiden kann man die Datei automatisch löschen .
   
Beitrag 18.11.2014, 19:59 Uhr
DMC635V
DMC635V
Level 6 = Community-Doktor
******
Gruppe: Mitglied
Mitglied seit: 12.08.2010
Beiträge: 844
QUOTE (nixalsverdruss @ 18.11.2014, 15:10 Uhr) *
Aber um es kurz zumachen ich sehe keinen Weg eine Zeile in der Protokolldatei zu überschreiben.

Direkt überschreiben vielleicht nicht. Man könnte jedoch die Datei mit READ nach den Namen das aktuellen Programmes durchsuchen. Falls er darin vorhanden ist könnte man die Datei mit der Kombination READ und WRITE bis auf die gefundenen Zeile, welche durch die neue ersetzt wird kopieren, z.B. als TEMP_TXT, die alte löschen, die TEMP wieder zu richtigem Namen kopieren, die TEMP löschen.
Wie schnell auf der Siemens alle diese String Operationen ablaufen weiss ich jedoch nicht.

Ich würde wohl wie Nixalsverdruss bereist sagte für jedes Teil eine Protokolldatei anlegen und jeweils die alte Löschen wenn das Teil erneut abgearbeitet wird.


--------------------
Freundliche Grüsse
DMC635V
   
Beitrag 18.11.2014, 21:19 Uhr
kavkus
kavkus
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 17.11.2014
Beiträge: 13
Wenn Ihr mir nun sagen könnt wie ich herausfinde ob es eine mit Operate oder mit HMI Advanced handelt.
Bin selbst leider erst seit ca 6Monaten an dieser Maschine.
   
Beitrag 18.11.2014, 21:57 Uhr
nixalsverdruss
nixalsverdruss
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
menu select -> diagnose -> version
   
Beitrag 11.12.2014, 10:52 Uhr
chironer
chironer
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 20.08.2004
Beiträge: 11
QUOTE (DMC635V @ 18.11.2014, 19:59 Uhr) *
Direkt überschreiben vielleicht nicht. Man könnte jedoch die Datei mit READ nach den Namen das aktuellen Programmes durchsuchen. Falls er darin vorhanden ist könnte man die Datei mit der Kombination READ und WRITE bis auf die gefundenen Zeile, welche durch die neue ersetzt wird kopieren, z.B. als TEMP_TXT, die alte löschen, die TEMP wieder zu richtigem Namen kopieren, die TEMP löschen.
Wie schnell auf der Siemens alle diese String Operationen ablaufen weiss ich jedoch nicht.


Hier klinke ich mich mal fragend ein.
Gibt es ein Beispiel dieser Lösung?
So etwas könnte mich in meinem aktuellen Thema vorwärtsbringen
   
Beitrag 11.12.2014, 20:52 Uhr
DMC635V
DMC635V
Level 6 = Community-Doktor
******
Gruppe: Mitglied
Mitglied seit: 12.08.2010
Beiträge: 844
QUOTE (chironer @ 11.12.2014, 10:52 Uhr) *
Hier klinke ich mich mal fragend ein.
Gibt es ein Beispiel dieser Lösung?
So etwas könnte mich in meinem aktuellen Thema vorwärtsbringen

Bis jetzt noch nicht. Ein kleines Beispiel für das Suchen eines Strings habe ich hier
http://www.cnc-arena.com/forum/index.php?s...st&p=400622
mal reingestellt. Im Bild von Post #16 in der Mitte sieht man den für die Suche verantwortlichen Schnipsel. Das kopieren ist eigentlich nichts grosses: Hierbei kann ziemlich die gleiche Schleife wie bei der Suche durchlaufen werden, in der nach dem READ ein WRITE der Zeile in die TEMP_MPF erfolgt. Dabei prüft eine IF Abfrage ob die Momentane Zeile ersetzt werden soll oder nicht.

Vielleicht packt es mich ja mal noch ein kleines Beispiel zu proggen, bis zum Wochenende komm ich jedoch bestimmt nicht dazu


--------------------
Freundliche Grüsse
DMC635V
   
Beitrag 15.12.2014, 13:13 Uhr
chironer
chironer
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 20.08.2004
Beiträge: 11
QUOTE (DMC635V @ 11.12.2014, 20:52 Uhr) *
...
Vielleicht packt es mich ja mal noch ein kleines Beispiel zu proggen, bis zum Wochenende komm ich jedoch bestimmt nicht dazu


Das wär klasse.
   
Beitrag 15.01.2015, 12:07 Uhr
Hexogen
Hexogen
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 29.09.2004
Beiträge: 1.813
CODE
MARKE3:;Umkopieren
IF ISFILE(MON_PROTPFAD<<MON_PROTNAME<<"_ALT_MPF") GOTOF MARKE5
MON_ZEILEN=1
MSG("ACHTUNG UMKOPIEREN DER DATEI:"<<MON_PROTPFAD<<MON_PROTNAME<<" LAUFT")
READ_SCHLEIFE:
  READ(MON_ERROR[1],MON_PROTPFAD<<MON_PROTNAME<<"_MPF",MON_ZEILEN,1,ALT_PROT)
;Wenn Zeile nicht lesbar, raus
  IF MON_ERROR[1] == 21 GOTOF READ_ENDE
  WRITE(MON_ERROR[0],MON_PROTPFAD<<MON_PROTNAME<<"_ALT_MPF",ALT_PROT[0])
  IF MON_ERROR[0]<>0 GOTOF ERRORHANDLING_WRITE
  IF MON_ERROR[1]<>0 GOTOF ERRORHANDLING_READ
  MON_ZEILEN=MON_ZEILEN+1
  GOTOB READ_SCHLEIFE
READ_ENDE:MSG()
MARKE4:;Datei NEU Löschen
;Umkopieren zu ende, Datei loeschen
DELETE(MON_ERROR[0],MON_PROTPFAD<<MON_PROTNAME<<"_MPF")
IF MON_ERROR[0]<>0 GOTOF ERRORHANDLING_DELETE
GOTOB MARKE1;Zurueck zum Kopf schreiben
MARKE5:;Datei ALT Löschen
DELETE(MON_ERROR[0],MON_PROTPFAD<<MON_PROTNAME<<"_ALT_MPF")
IF MON_ERROR[0]<>0 GOTOF ERRORHANDLING_DELETE
GOTOB MARKE3;Zurueck zum lesen
_M17:
RET


Mit dem Code kann eine Datei umkopiert werden.
Voraussetzung ist
CODE
MARKE2:;Werte schreiben
MSG("WERTE WERDEN GESCHRIEBEN")
WRITE(..........)
;wenn Datei voll weiter (Error 10)
MSG()
[color="#FF0000"] IF MON_ERROR[0]==10 GOTOF MARKE3;Datei ist Voll[/color]
IF MON_ERROR[0]<>0 GOTOF ERRORHANDLING_WRITE
GOTOF _M17

Nach dem Write befehl die Fehlauswertung auf Fehler 10 (Datei ist voll)
oder
CODE
IF ISFILE(MON_PROTPFAD<<MON_PROTNAME<<"_MPF") GOTOF MARKE3

Wenn Datei schon vorhanden


--------------------
Schaut doch mal rein:
Mein Youtube Kanal


Anwendungen, Zyklen, CAD/CAM





-----------------------------------------------------------------------------------------------------------------------------
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: