529.721 aktive Mitglieder*
3.203 Besucher online*
Kostenfrei registrieren
Anmelden Registrieren
Siemens Forum

Digital Industries, Motion Control, Machine Tool Systems

Messergebnisse protokollieren

Beitrag 16.08.2018, 17:09 Uhr
glamenz
glamenz
Level 1 = IndustryArena-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 06.11.2013
Beiträge: 18

Hallo zusammen,

Habe vor Messergebnisse zu protokollieren.
Ganz einfache Sachen, z.B. Welches Messergebnis hat die Einlegekontrolle in den letzten 10 Runden gemessen, um z.B. einen Trend zu erkennen.

Mache ich momentan ganz billig über R-Parameter.
_________________________
R10=0,15
R11=0,13
R12=0,21
.
.
.
_________________________

Damit ich immer die aktuellsten 10 Messungen habe nutze ich:

R20=R19
R19=R18
.
.
.
R11=R10
R10=_OVR[4]
_________________________

Ich weiß, dass das eher Pfusch ist.
Funktioniert aber, so kann ich mit einem Blick in die R-Parameter Tabelle sehen ob die letzten Teile ordentlich eingelegt wurden.
_________________________

Ich nutzte auch ein Temperatur Kompensationsprogramm.
Dieses Programm schreibt eine Protokoll Datei, mit der ich die letzten Messergebnisse der Wärmekompensation auswerten kann.

Dieses Programm wurde nicht von mir geschrieben, ich würde aber gerne die Protokollierungs-Funktion auch für andere Dinge nutzen.

Hier der Ausschnitt des Programmes der die Protokollierung macht:
_________________________

;Messung Protokollieren
PROC MESSUNG_PROT(REAL _VARI_PROT_01, _VARI_PROT_02, …) SAVE
DEF REAL _VARI_PROT_11, _VARI_PROT_12, …

;*** Ergebniss protokollieren ***
ROUND_X=TRUNC($P_UBFR[X,TR]*1000)/1000
ROUND_Y=TRUNC($P_UBFR[Y,TR]*1000)/1000
ROUND_Z=TRUNC($P_UBFR[Z,TR]*1000)/1000
FIELD=TSA+1
IF ST_DOCUCOUNT[TSA]<100
WRITE(ERROR[1],"/_N_WKS_DIR/_N_STRAT_PROTOCOL_WPD/_N_ACT_PROT_"<<FIELD<<"_MPF","DATE:" <<$A_DAY<<"."<<$A_MONTH<<".0"<<$A_YEAR<<" TIME:"<<$A_HOUR<<":"<<$A_MINUTE<<":"<<$A_SECOND<<" X:"<<ROUND_X<<" Y:"<<ROUND_Y<<" Z:"<<ROUND_Z)
ST_DOCUCOUNT[TSA]=ST_DOCUCOUNT[TSA]+1
ELSE ; Neue Protokolldatei anlegen
DELETE(ERROR[2],"/_N_WKS_DIR/_N_STRAT_PROTOCOL_WPD/_N_OLD_PROT_"<<FIELD<<"_MPF")
STOPRE
FOR ZAEHLER=1 TO 100
READ(ERROR[3],"/_N_WKS_DIR/_N_STRAT_PROTOCOL_WPD/_N_ACT_PROT_"<<FIELD<<"_MPF",ZAEHLER,1,RESULT)
WRITE(ERROR[4],"/_N_WKS_DIR/_N_STRAT_PROTOCOL_WPD/_N_OLD_PROT_"<<FIELD<<"_MPF",<<RESULT[0])
RESULT[0]=""
ENDFOR
DELETE(ERROR[5],"/_N_WKS_DIR/_N_STRAT_PROTOCOL_WPD/_N_ACT_PROT_"<<FIELD<<"_MPF")
ST_DOCUCOUNT[TSA]=1
WRITE(ERROR[1],"/_N_WKS_DIR/_N_STRAT_PROTOCOL_WPD/_N_ACT_PROT_"<<FIELD<<"_MPF","DATE:" <<$A_DAY<<"."<<$A_MONTH<<".0"<<$A_YEAR<<" TIME:"<<$A_HOUR<<":"<<$A_MINUTE<<":"<<$A_SECOND<<" X:"<<ROUND_X<<" Y:"<<ROUND_Y<<" Z:"<<ROUND_Z)
ENDIF

_________________________

Kann mir jemand den Aufbau erklären.

Ich habe das Programm grob verstanden
-die Parameter des Programmes werden definiert
-die Ergebnisse „$P_UBFR[X,TR]“ werden gerundet
-Messergebnisse werden mit Datum und Uhrzeit ins „ACT“-Protokoll geschrieben
außer wenn mehr als 100 Messergebnisse in „ACT“-Protokoll stehen,
dann wird ein neues „ACT“-Protokoll angelegt, dass „OLD“-Protokoll gelöscht
und das volle „ACT“-Protokoll ins „OLD“-Protokoll umbenannt

wo ich mir schwer tue ist die WRITE/READ/DELETE-Zeilen zu entschlüsseln

_________________________

Nutzt jemand solche Protokolle und wäre gewillt einem unterwürfigen Lehrling Erleuchtung zu gewähren?

Gruß Alexander

PS: Steuerungen 840D powerline mit PCU50, 840D sl mit PCU50 und 840D sl mit TCU
TOP    
Beitrag 16.08.2018, 18:34 Uhr
CNCFr
CNCFr
Level 7 = IndustryArena-Professor
*******
Gruppe: Mitglied
Mitglied seit: 15.09.2002
Beiträge: 1.494

ZITAT(glamenz @ 16.08.2018, 17:09 Uhr) *
wo ich mir schwer tue ist die WRITE/READ/DELETE-Zeilen zu entschlüsseln


Am einfachsten ist es, wenn du dir Beschreibung der drei Befehle in der Siemens-Doku (Arbeitsvorbereitung) anschaust. Das sind ein paar (wenige Seiten), die ich hier nicht wiederholen kann.

Vielleicht hier nur soviel:
Nehmen wir als Beispiel die Zeile
DELETE(ERROR[2],"/_N_WKS_DIR/_N_STRAT_PROTOCOL_WPD/_N_OLD_PROT_"<<FIELD<<"_MPF")
ERROR[2] ist eine INT-Variable, in der nach dem Aufruf ein Fehlercode steht, falls irgendwas nicht richtig funktioniert hat. Die Bedeutung der Fehlernummern findet man in der Doku.
Der ganze Rest ist ein einziger weiter Aufrufparameters vom Typ String der aus drei Teilen zusammengebaut wird:
1. "/_N_WKS_DIR/_N_STRAT_PROTOCOL_WPD/_N_OLD_PROT_" ; der String, der zwischen " und " steht, d.h. der Pfadname des Files
2. FIELD ; eine Variable, die in einen String umgewandelt wird und an den ersten String angehängt wird (mit dem Verkettungsoperator <<). Das ist wohl der eigentliche Filename.
3. "_MPF" ; Am Ende (wieder mit dem Verkettungsoperator << wird der String "_MPF" angehängt.

Wenn in FIELD z.B. der String "MEIN_FILE" steht, sieht der komplette zweite Aufrufparameter so aus:
"/_N_WKS_DIR/_N_STRAT_PROTOCOL_WPD/_N_OLD_PROT_MEIN_FILE_MPF"

Ganz entprechend funktionert das auch bei READ und WRITE.



TOP    
Beitrag 16.08.2018, 18:52 Uhr
Hexogen
Hexogen
Level 7 = IndustryArena-Professor
*******
Gruppe: Mitglied
Mitglied seit: 29.09.2004
Beiträge: 1.705

Hey ...

erstmals verstehe ich nicht warum man mittels trunc "rundet" es ist kein runden sondern nur ein abschneiden smile.gif

Write befehl lässt einen string in eine datei schreiben.

WRITE(error,file,string)

in deinem falle:
WRITE(
error: ERROR[1], <<< hier wird der Fehlercode, wie CNCFr schrieb, abgelegt

file: "/_N_WKS_DIR/_N_STRAT_PROTOCOL_WPD/_N_ACT_PROT_"<<FIELD<<"_MPF", <<< das färe deine Datei, wobei FIELD eine Variable ist, hier steht die Tischseite drin, Ist ne CHIRON W ? mit zwei Tischseiten und der Auszug ist aus der Strategieprotokollierung? Kommt mir bekannt vor.

string: "DATE:" <<$A_DAY<<"."<<$A_MONTH<<".0"<<$A_YEAR<<" TIME:"<<$A_HOUR<<":"<<$A_MINUTE<<":"<<$A_SECOND<<" X:"<<ROUND_X<<" Y:"<<ROUND_Y<<" Z:"<<ROUND_Z <<< das ist der Inhalt, der in die Datei geschrieben wird.
)

Der Befehl DELETE, löscht eine Datei im NC Speicher.

Der Befehl READ liest eine Zeile eines Programms die du auswerten kannst. Hier wird der Inhalt, Zeile für Zeile in OLD umgeschrieben. Sprich read danach direkt write.

Du hast dir ein recht Komplexes Beispiel ausgesucht wink.gif


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


Anwendungen, Zyklen, CAD/CAM





-----------------------------------------------------------------------------------------------------------------------------
TOP    
Beitrag 17.08.2018, 11:53 Uhr
glamenz
glamenz
Level 1 = IndustryArena-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 06.11.2013
Beiträge: 18

danke.gif für die Tipps,
ich werde in der nächsten Woche mal mein Glück versuchen.

ZITAT(Hexogen @ 16.08.2018, 17:52 Uhr) *
erstmals verstehe ich nicht warum man mittels trunc "rundet" es ist kein runden sondern nur ein abschneiden smile.gif


Warum hier der Befehl zum Schneiden und nicht der Befehl zum Runden steht kann ich nicht sagen, runden wäre hier denke ich Sinnvoller

ZITAT(Hexogen @ 16.08.2018, 17:52 Uhr) *
... Auszug ist aus der Strategieprotokollierung? Kommt mir bekannt vor. ...


Ja ist aus der Strategieprotokollierung, in der <<FIELD<<-Variable wird das aktive Arbeitsfeld eingetragen. Wir haben 4St FZ08W, 1St.FZ15W und 1St. FZ15L

TOP    
Beitrag 17.08.2018, 12:01 Uhr
Hexogen
Hexogen
Level 7 = IndustryArena-Professor
*******
Gruppe: Mitglied
Mitglied seit: 29.09.2004
Beiträge: 1.705

Wenn Du Protokollierungen machen willst, solltest erstmal wissen, dass jede WRITE befehl Zeit kostet.
Die Zweite Frage, was willst Protokollieren.
Dritte Frage, wie soll es aussehen, zwecks weiterer Verarbeitung, wie für auswerten der Daten in Excel.
Vierte Frage, wie Flexibel soll es sein.
Je nachdem kannst Dir dann einen Zyklus basteln.
Ist einmalig etwas Aufwand, aber mit der Zeit rentabel.
Vor allem wenn es ein Multifunktionales tool wird wink.gif


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


Anwendungen, Zyklen, CAD/CAM





-----------------------------------------------------------------------------------------------------------------------------
TOP    



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