Jump to content

Eingabe aus Protokollkopf per getRecordHead


---
 Share

Recommended Posts

Guten Morgen,

ich stehe derzeit vor folgendem Problem(chen).
Ich versuche gerade eine Dezimalzahl aus dem Protokollkopf zu fischen und diese per Resultatselement ins Protokoll zu befördern. Dazu habe ich bisher die Formel "getRecordHead("u_field_Name").asNumber" verwendet und mit einer ganzen Zahl (Eingabe per Integer) funktioniert das auch prima. Nun wird allerdings eine Dezimalzahl abgefragt und ich stehe auf dem Schlauch, weil die Dezimalstellen nicht übertragen werden. Naja, asNumber bezieht sich eventuell auch auf eine ganze Zahl und daher habe ich mal asFloat zufällig probiert, aber das funktioniert leider auch nicht.

Leider finde ich keinerlei Info zu weiteren Zugriffs-Atrributen (wie z.B. *.asFloat). Gibt es hierzu irgendwo eine Auflistung? In der PCM-Dokumentation habe ich nichts dergleichen gefunden.

Weiterhin würde ich gerne das Eingabefeld entsprechend in der "userfields.ini" formatieren und dort auch nur zwei Dezimalstellen zulassen. Dazu finde ich jedoch nur die Option "type=F", also Fließkommazahlen ohne Begrenzung der Dezimalstellen. Gibt es hier eventuell undokumentierte Optionen?

Hintergrund der ganzen Geschichte:
Wir möchten anteilige Gewichte per DFQ-Datei mit ins CAQ-System bringen, um unseren Prozess besser steuern zu können. Dazu werden vor der Messung auf dem KMG zwei Gewichtswerte in Gramm ermittelt, die dann mit zwei Dezimalstellen eingepflegt werden sollen.

Ich wünsche euch ein schönes Wochenende und bleibt gesund!

Gruß
Holger
Link to comment
Share on other sites

Hallo,

hab das jetzt mal bei mir ausprobiert und eine Protokollkopfvariable mit einer Zahl beschrieben und sie dann in einem Resultatselement ausgegeben, funktioniert bei mir.

Wie wird diese Zahl eingegeben? Wird vielleicht ein "," statt "." als Komma eingegeben?

Zum runden direkt im Eingabefeld, Du könntest auch bei der Ausgabe im Resultatselement die Funktion round(Zahl,Anzahl Nachkommastellen) verwenden und sie dann auf 2 Nachkommastellen runden.

MfG Florian
Link to comment
Share on other sites

Hallo Florian,

danke für Dein Feedback!
Genau, Punkt statt Komma ist der entscheidende Hinweis. Sobald in den Eingabe-Parametern das Gewicht mit Dezimalpunkt eingegeben wird, werden auch die Dezimalstellen übertragen.
Echt lustig, denn wenn die Protokollkopfvariable als Fließkommazahl deklariert, dann wird automatisch der Punkt durch ein Komma ersetzt, wenn man das Fenster der Eingabe-Parameter ein weiteres Mal öffnet.

Allerdings werden unsere Fertigungsprüfer seltsam schauen, wenn sie das Gewicht mit Punkt eingeben sollen. Das wird wohl eher nicht gut gehen.
Wenn man die Protokollkopfvariable wenigstens entsprechend formatieren könnte, damit bei falscher Eingabe eine Fehlermeldung erscheint.

Gruß
Holger
Link to comment
Share on other sites

Wenn Du den Datentyp "Ohne" auswählst müsste es eigentlich ein Text sein der eingegeben wird dann kannst Du mit einer Schleife das Komma durch einen Punkt ersetzen.

Ungefähr so:

setRecordHead("u_field_Name","23,80")			//Hier beschreibe ich die Protokollkopfvariable weil ich die nicht habe
Gewicht = getRecordHead("u_field_Name")
GewLen = len(Gewicht)
GewichtNeu = ""

for i = 1 to GewLen
	Zeichen = mid(Gewicht,i,1)
		if Zeichen == "," then
		Zeichen = "."
		endif
	GewichtNeu = GewichtNeu + Zeichen
next i

message("Vorher: " + Gewicht + cr() + "Nachher: " + GewichtNeu)

setRecordHead("u_field_Name",GewichtNeu)
Vielleicht gibt es auch eine Möglichkeit ein Zeichen direkt zu ersetzen, die kenn ich aber nicht. 😃

MfG Florian
Link to comment
Share on other sites

Hallo Florian,

Du bist mein persönlicher Held, denn das klappt nun einfach hervorragend. Vielen Dank!
Falls es noch jemanden interessiert:
Den Code habe ich einfach in die Parameter der Prüfmerkmale in den Eingangseinstellung eingefügt und entsprechend geändert (Beschreibung der Protokollkopfvariable und die Nachricht gelöscht, sowie den Namen der Protokollkopfvariable geändert)
Den Datentyp habe ich übrigens weiterhin als Fließkommazahl formatiert und damit sind dann schon ein Teil der möglichen Fehleingaben eliminiert.

Den geänderten Prüfplan habe ich heute gleich auf der entsprechenden Maschine eingerichtet und es läuft dort auch ohne PCM-Option in der Autorun-Oberfläche. Zur Zeit arbeiten wir aber auch noch mit Calypso 6.6.28, denn ich bin mir nicht sicher, ob es mit der aktuellen Calypso Version noch möglich ist, wenn kein PCM verfügbar ist.

Gruß
Holger
Link to comment
Share on other sites

 Share

×
×
  • Create New...