[Ka...] Posted January 26, 2023 Share Posted January 26, 2023 Hallo liebe Experten, Sicherlich eine Anfängerfrage aber ich komme einfach nicht auf eine Lösung 😕 Situation: CALYPSO 7.0.20, kein PCM Der Winkel einer recht schmalen ( maximal 1mm ) Ebene muss gemessen werden. Die Ergebnisse schwanken jedoch sehr stark zwischen -43.8 ° bis 46.5°. Toleranz ist +/- 1°. Angetastet wir mit 0.8mm Taster aus -Y Richtung. Die Überschreitung der Toleranz finden nur ab und zu mal statt. Wird das Messelement noch einmal gemessen liegt das Ergebnis fast immer innerhalb der Toleranz. Lösungsmöglichkeit: Eine Schleife um das Messelement legen mit Abbruch bei einhalten der Toleranzgrenze (-45° +/- 1°). Schleifenwiederholung auf maximal 3 Versuche. Laut Bedienungsanleitung Kapitel 6-62 erlese ich folgenden Vorgang: 1) Anlegen einer Schleife um das Prüfelement ( LOOP1 benutzen ) 2) Anlegen einer Teilung des zugehörigen Messelementes. ( Anzahl der Teilungsdurchläufe == Schleifendurchläufe ) 3) "Kap. 6-68 Besonderheit bei Mehrfachmessung, Absatz "Abhilfe:"" 3.1) Erstellen einer Formel in der LOOP1 benutzt wird. Ich lege dazu für den Sollwert X folgende Formel an: getNominal("Ebene 09").x + ( 0 * LOOP1) Verlässt man nun das Messelement mit OK hängt sich CALYPSO auf und endet nach einiger Zeit mit einer "Out of Memory" Meldung. 🙁 Was muss ich tun um eine Schleife um ein Messelement zu legen die maximal 3 mal durchlaufen wird, bei jedem Durchlauf die Messpunkte neu erfasst werden und die eine Abbruchbedingung von (getActual("Ebene 09").a1 > -46) or ( getActual("Ebene 09").a1 < -44) [ Also -45° +/- 1°] hat? Beste Grüße Karsten04 Ebene 09.png03 Prüfmerkmal Schleife.png02 Teilung Messelement.png01 Formel Messelement.png Link to comment Share on other sites More sharing options...
[Re...] Posted January 26, 2023 Share Posted January 26, 2023 Hallo Karsten, das Problem liegt beim Sollwert X in der Ebene 09. ## 3.1) Erstellen einer Formel in der LOOP1 benutzt wird. Ich lege dazu für den Sollwert X folgende Formel an: getNominal("Ebene 09").x + ( 0 * LOOP1) Dies kann so nicht funktionieren. Da ein Bezug auf sich selber hergestellt wird. Die Formel umstellen auf (-13) + ( 0 * LOOP1) Viel Erfolg Link to comment Share on other sites More sharing options...
[No...] Posted January 26, 2023 Share Posted January 26, 2023 Schleife auf dem Prüfmerkmal UND Teilung (ohne Versatz) auf dem Messelement ist im Übrigen doppelt gemoppelt. Die Schleife auf dem Prüfmerkmal + Abbruchbedingung sollte ausreichen. Teilungen ohne Versatz benutzt man eigentlich nur als Krücke, wenn man - wozu auch immer - unbedingt etwas Schleifenähnliches direkt auf einem Messelement braucht (was ja "offiziell" nicht geht). Für normale Wiederholschleifen bei Abweichungen reicht die Schleife auf dem Prüfmerkmal. Die Abbruchbedingung solltest du übrigens auch überarbeiten. Zwischen die Abfragen muss ein "and" statt einem "or", da ja beides gleichzeitig erfüllt sein muss. Die "<" und ">" Operatoren solltest du durch "<=" und ">=" ersetzen, sonst wird ein exakter Treffer auf -46,000 oder -44,000 nicht als toleranzhaltig gewertet. Link to comment Share on other sites More sharing options...
[Ka...] Posted January 26, 2023 Author Share Posted January 26, 2023 Hallo Norbert, Ohh, peinlich: or und and verdödelt... 🫣 Mir war aus dem Handbuch nicht klar geworden, dass eine Schleife eines Prüfelementes das erfassen von neuen Messpunkten im Messelement führt. Hätte ich so erwartet, aber das Kapitel "Besonderheiten bei Mehrfachmessungen" hat mich verwirrt. Wie auch Immer: leider bekomme ich beim Programmablauf zwei Fehlermeldungen wenn ich das Prüfelement direkt ausführe. 1) Einen Hinweis das Istwerte gelöscht werden und der Index mit einer Zahl oder Bereich angegeben werden muss. 2) Am Ende des Ablaufes eine PCM Fehlermeldung. Starte ich über CNC-Start, so bricht das Programm direkt nach erfassen des Basissystems ab. Irgendwas ist da noch so richtig falsch definiert.. 🙁03 Schleife-Korrektur.png03 PCM-Fehler.png02 Lösche Istwert.png Link to comment Share on other sites More sharing options...
[No...] Posted January 26, 2023 Share Posted January 26, 2023 Please sign in to view this quote. Ach was. Was meinst du wie oft mir sowas schon passiert ist 😃 Please sign in to view this quote. Ob das wirklich immer so passiert, möchte ich nicht mal beschwören. Calypso ist da manchmal etwas eigenwillig. Aber das wäre jedenfalls meine Erwartungshaltung. Aber wenn dem nicht so sein sollte, würde die Teilung auf dem Messelement daran auch nichts ändern. Höchstens, wenn man es schaffen würde, den im Prüfmerkmal angezogenen Messelement-Index per LOOP1-Beziehung irgendwie dem Prüfmerkmal "aufzuzwingen". Ist aber nur so ein theoretischer Gedanke von mir und bedeutet nicht, daß ich wüßte, wie das gehen könnte 😕 Please sign in to view this quote. Ist die Teilung noch auf dem Messelement? Please sign in to view this quote. Da bin ich jetzt auch ein wenig überfragt. Zumal die Meldung auch nicht angibt, was genau da nicht definiert sein soll. Ich würde als erstes mal die Abbruch-Formel in einem richtigen Formel-Fenster (in einem Messelement) eingeben und mit dem Auswerte-Button testen, ob sie korrekt 'true' bzw. 'false' ausgibt. Link to comment Share on other sites More sharing options...
[Ka...] Posted January 26, 2023 Author Share Posted January 26, 2023 Norbert, Der Tribut moderner Programmierung ist, dass der Programmierer nicht mehr weiß ( und auch gar nicht wissen will ) was das nun für eine Variable ist. Es ist auch total uncool zu wissen ob´s denn nun ein char, ein unsigned int oder ein signed long ist.... 🤣 Der Vergleich mit >= -45 führt zu der "Parameter nicht definiert" Aussage. Ein simples ausgeben zeigt zumindest schon mal an, dass die Methode getActual("Ebene 09").a1 ETWAS zurück gibt: nämlich -0.785.... OK, mal sehen ob ich die -0.785... in -45° zurück rechnen kann 😉 Daaanke für den Tipp die Formel doch mal auf Inhalt zu prüfen! Ahhh: abs(deg(getActual("Ebene 09").a1)) >= 46 🤠 Gruß Karsten Link to comment Share on other sites More sharing options...
[No...] Posted January 27, 2023 Share Posted January 27, 2023 Na also. 🙂 Und ich habe gemerkt, daß mir auch was (wieder mal) entgangen ist: nämlich daß Winkel in Formeln im Bogenmaß sind. Daran werde ich mich nie gewöhnen 🙄 Link to comment Share on other sites More sharing options...
[Ka...] Posted February 6, 2023 Author Share Posted February 6, 2023 Moin Norbert, Moin Experten. Nach diversen erfolglosen Versuchen mit obigen Thema ( Wiederholung einer Messung bei Überschreiten einer gegebenen Toleranz ) nun das Ergebnis vom Zeiss Service. 1) In meiner Abbruchbedingung fehlte der Verweis auf den schleifen Index. Zu finden ist die Syntax von getActual() in der PCM Anleitung. Korrekt ist also folgende Abbruchbedingung: (abs(deg(getActual("Ebene 09",LOOP1).a1)) <= 46) and (abs(deg(getActual("Ebene 09",LOOP1).a1)) >= 44) 2) Der Prüfplan muss nach Prüfmerkmals-liste sortiert/ausgeführt werden. Ansonsten wird das Messelement stur anhand der Teilungsdefinition n-mal ausgeführt da die Abbruchbedingung ja an das Prüfmerkmal gebunden ist. 3) Eine Ausgabe NUR der letzten Messung im Protokoll ( Wir nutzen PiWeb Plus ) scheint nicht möglich zu sein. Vielleicht kann unsere Anforderung zu Messwiederholung mit PCM gelöst werden, jedoch haben wir leider kein PCM. Beste Grüße Karsten Link to comment Share on other sites More sharing options...
[No...] Posted February 6, 2023 Share Posted February 6, 2023 Ach, der LOOP-Index, ja 🙄 Das sind so Dinge, die mir immer schwerfallen aus dem Kopf zu benennen. Wenn ich selber vor dem Problem gesessen hätte (mit genauso vielen Fehlversuchen 🤣 ), wäre ich da wohl irgendwann drauf gestoßen. Aber nur aus dem Gedächtnis hab ich solche Feinheiten meist nicht parat. Mache das wohl zu selten. 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