[Ju...] Posted May 9, 2023 Share Posted May 9, 2023 Hallo, ich habe mich gefragt ob es neben der Abfrage inspectionToleranceState() auch eine Möglichkeit gibt genau abzufragen welches Prüfmerkmal außerhalb der Toleranz liegt? Habe schon etwas rumprobiert aber bin nicht weiter gekommen, vielleicht hat hier schon mal jemand was in diese Richtung gemacht? Link to comment Share on other sites More sharing options...
[Ju...] Posted May 10, 2023 Author Share Posted May 10, 2023 Hintergrund ist, der Maschinenbediener soll gezwungen werden eine Bemerkung einzugeben falls sich ein Prüfmerkmal ausserhalb der Toleranz befindet. Die Abfrage inspectionToleranceState() reicht mir hier nicht aus, da der Bediener wenn ich diese in den Parameter Ausgangseinstellungen des Prüfplans oder z.B. eines Textfeldes am Ende des Prüfplans abfrage, noch keinen Blick auf das Protokoll werfen konnte. Somit kann er auch keine Bemerkung abgeben, da er noch nicht weiß welche Prüfmerkmale es genau betrifft etc. Habe wie geschrieben leider keine Möglichkeit gefunden den Toleranzstatus einzelner Prüfmerkmale abzufragen, jetzt überlege ich ob es eine Möglichkeit gibt nach Ablauf der Protokollerstellung und Ansicht des Protokolls nochmal ein zweites Protokoll erzeugen zu lassen, bei dem ich dann eine Bemerkung eingeben könnte die auf diesem Protokoll erscheint. Es gibt ja die Möglichkeiten mit "inspection_end_pcm.txt" usw., auch nach Ablauf noch einzugreifen, nur egal was ich da eingebe, Calypso reagiert überhaupt nicht darauf, deshalb die Frage jetzt nochmal, kann man in den "inspection_end.." usw. Dateien überhaupt ganz normale PCM Programmierungen verwenden? Zweite Variante die ich mir überlegt habe, aber auch hier weiß ich nicht ob das möglich ist, eine Funktion einfügen die Calypso, falls die Bedingung eintritt dass ein Prüfmerkmal außerhalb der Toleranz ist, den Prüfplan nochmal durchrechnen zu lassen ohne dass der Haken bei "Alte Resultate rücksetzen", gesetzt ist, so dass ein zweites Protokoll mit den identischen Messergebnissen erzeugt wird und der Bediener auf diesem aber zusätzlich seine Bemerkung eintragen könnte. Aber auch hierzu habe ich nichts in den PCM Beschreibungen finden können. Hat jemand schonmal so etwas oder ähnliches gemacht dass mir evtl. weiterhelfen könnte. Oder hat jemand eine andere Idee die mir nicht gekommen ist um so ein Vorhaben zu realisieren. Wäre über jede Hilfe dankbar. Link to comment Share on other sites More sharing options...
[Ma...] Posted May 10, 2023 Share Posted May 10, 2023 Ich weiß nicht, ob es das ist, was Sie meinen, aber wenn Sie "Multiple Printout" verwenden, können Sie zwei Berichtsseiten erstellen - die erste mit allen Merkmalen, die zweite nur mit den Merkmalen außerhalb der Toleranz. Siehe Foto im Anhang "inspection_end_pcm.txt" - ja, es liest das PCM und diese Datei muss sich entweder global befinden und wird jedes Mal für jedes Programm ausgeführt oder lokal für einen bestimmten Prüfplan. Entschuldigung für Syntax und Sprache, ich benutze einen Online-Übersetzer 😃multiple printout.png Link to comment Share on other sites More sharing options...
[Ju...] Posted May 11, 2023 Author Share Posted May 11, 2023 Hello Mateusz, die Übersetzung passt sehr gut. 😃 Leider ist es nicht das was ich suche. Ich verwende aktuell auch noch kein PiWeb. Das einfachste wäre für mich wenn es eine Möglichkeit gäbe ohne große Umwege den Toleranzstatus jedes einzelnen Prüfmerkmals abzufragen. Link to comment Share on other sites More sharing options...
[Ju...] Posted May 12, 2023 Author Share Posted May 12, 2023 Ich habe jetzt nochmal überlegt wie ich das auf andere Art umsetzen könnte. Nur mal als Beispiel, es ist aber sehr umständlich: Zahl=4 if Zahl > 3 Ergebnis = false else Ergebnis = true endif //message(Ergebnis) Zahl1=4 if Zahl1 > 4 Ergebnis1 = false else Ergebnis1 = true endif //message(Ergebnis1) Bemerkung=("Die Nummer ist") if Ergebnis == true Einfügen=(Bemerkung + Zahl + cr()) else Einfügen=(" ") and if Ergebnis1 == true and (Ergebnis == true) Einfügen1=(cr() + Bemerkung + Zahl1 ) else and if Ergebnis1 == true and (Ergebnis == false) Einfügen1=(Bemerkung + Zahl1 ) else endif endif endif Habe jetzt nur der Einfachheit um zu testen "Zahl" geschrieben, das sollte dann im Prüfplan das jeweilige Prüfmerkmal sein. Es ist sehr umständlich und auch nicht 100% zufriedenstellend. "Einfügen..Einfügen1 usw. rufe ich dann in einem Textelement zurück um es letztlich auf dem Protokoll abbilden zu können. Um das lesbar zu halten muss ich den Umweg gehen und mit dem Zeilenumbruch spielen und ich brauche einen Platzhalter für den Fall dass ich nichts schreiben will, weil das "Prüfmerkmal", hier die Zahl, in Ordnung ist. Da Calypso im Textelement ansonsten einfach das alte Ergebnis stehen lässt. Im Textelement rufe ich dann über Formel, Einfügen + Einfügen1 zurück. Das würde dann immer weiter fortgeführt bis ich alle Prüfmerkmale durch hätte. Würde aber auch immer komplexer wegen den ganzen if Varianten die ich auf diese Weise Schreiben müsste. Vielleicht hat ja jemand eine Idee wie man das einfacher gestalten könnte. Link to comment Share on other sites More sharing options...
[Ma...] Posted May 15, 2023 Share Posted May 15, 2023 Please sign in to view this quote. Sie können diesen Code ausprobieren, aber er durchläuft alle Merkmale, auch wenn Sie nur wenige Merkmale auswählen, die gemessen werden sollen charList = getCFNames() for i = 1 to charList.size charName=getParameterNamed(charList,i) if (text(getCFAttribute(charName,"toleranceState")) <> "inTolerance") then //do whatever if char IS NOT in tolerance display(charName+" "+ text(getCFAttribute(charName,"toleranceState"))) else //do whatever if char IS in tolerance display(charName +" is OK") endif next i Link to comment Share on other sites More sharing options...
[Ju...] Posted May 15, 2023 Author Share Posted May 15, 2023 Thank you very much. Thats almost perfect and exactly what i was looking for. Is there a secret list of PCM commands or where did you get these parameter queries from? 🙂 Link to comment Share on other sites More sharing options...
[Ma...] Posted May 15, 2023 Share Posted May 15, 2023 These commands can be found in Calypso Help. Some of them (which are not specified in the manual) I have learned from this forum. Link to comment Share on other sites More sharing options...
[Ju...] Posted May 16, 2023 Author Share Posted May 16, 2023 Now I have another problem, I would like to be able to make a comment for each "outof tolerance" test feature, which should then also appear on the protocol. I am now trying to retrieve the whole thing in a simple text field via formula. Unfortunately, it only ever takes the last char and writes it in the text field. How could I realize it that every char out of tolerance written in the text field? Can i maybe get it about the Anzahl=inspectionToleranceState? But how? I played with array but it doesn´t work. charList = getCFNames() for i = 1 to charList.size charName=getParameterNamed(charList,i) if (text(getCFAttribute(charName,"toleranceState")) == "outOfTolerance") then //do whatever if char IS NOT in tolerance //display(charName+" "+ text(getCFAttribute(charName,"toleranceState"))) Anzahl = inspectionToleranceState("outOfTolerance") for Anzahl = 1 to Anzahl.size Protokoll=(charName+" "+ text(getCFAttribute(charName,"toleranceState"))+"ist außerhalb der Toleranz ,definieren Sie eine Maßnahme: ") + inquireText("Prüfmerkmal ausserhalb der Toleranz, bitte definieren Sie eine Maßnahme: ") next Anzahl else if (text(getCFAttribute(charName,"toleranceState")) == "inTolerance") then //do whatever if char IS in tolerance //display(charName+" "+ text(getCFAttribute(charName,"toleranceState"))) endif endif next i Here is the test i made with array but it doesn´t work charList = getCFNames() messageArray = [ ] // Array zur Speicherung von Nachrichten for i = 1, charList.size do charName = getParameterNamed(charList, i) if (text(getCFAttribute(charName, "toleranceState")) == "outOfTolerance") then messageText = inquireText(charName + " " + text(getCFAttribute(charName, "ist außerhalb der Toleranz, bitte Maßname definieren: ")) table.insert(messageArray, messageText) // Fügt Nachricht zum Array hinzu else // do whatever if char IS in tolerance display(charName .. " is OK") end end next i // Schleife durch das Array, um die Nachrichten auszugeben Anzahl = inspectionToleranceState("outOfTolerance") for j = 1 to Anzahl message(messageArray[j] .. cr()) // Ausgabe jeder Nachricht mit Zeilenumbruch end next j I have problems to write the array in the correct way or maybe it is the complete wrong way. I would be grateful for any help Link to comment Share on other sites More sharing options...
[Ma...] Posted May 18, 2023 Share Posted May 18, 2023 Unfortunately you cannot make arrays like you wrote ( [...] ) As Calypso's manual says: Please sign in to view this quote. Back to first code block - as I read your code it does what you said because you have only 1 variable called Protokoll which is being overwritten many times. If you want to make an array-like object you have to create something like counter for example: //outOfTolerance counter counter = 0 charList = getCFNames() for i = 1 to charList.size charName=getParameterNamed(charList,i) if (text(getCFAttribute(charName,"toleranceState")) == "outOfTolerance") then counter = counter + 1 Protokoll[counter]=charName +" is out of tolerance. Do something about it!" endif next i for j = 1 to counter display(Protokoll[j]) next j If you want to combine strings with PCM function you have to exchange quotes with qm() or do triple quotes, for example aaaa = "myString" test1 = "inquireText("+qm()+aaaa+qm()+")" test2 = "inquireText("""+aaaa+""")" display(test1) getParameterNamed(test1) Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in