[Fl...] Posted October 26, 2022 Share Posted October 26, 2022 Hallo zusammen, ich möchte die Nestbezeichnung anhand der Palettenplatznummer beschreiben. Auf unserer Messvorrichtung werden 6 Teile gemessen. Teil 1-3 soll die Nestbezeichnung "Spur1" und Teil 4-6 die Bezeichnung "Spur2" erhalten. Ich würde es über folgenden PCM Befehl lösen: if getRecordHead("palletlocationnumber") == 1 then setRecordHead("nestname","Spur1") endif if getRecordHead("palletlocationnumber") == 2 then setRecordHead("nestname","Spur1") endif if getRecordHead("palletlocationnumber") == 3 then setRecordHead("nestname","Spur1") endif if getRecordHead("palletlocationnumber") == 4 then setRecordHead("nestname","Spur2") endif if getRecordHead("palletlocationnumber") == 5 then setRecordHead("nestname","Spur2") endif if getRecordHead("palletlocationnumber") == 6 then setRecordHead("nestname","Spur2") endif Die Befehle scheinen so nicht zu funktionieren. Hat jemand eine Idee woran es liegen könnte? Vielen Dank im Voraus! Link to comment Share on other sites More sharing options...
[No...] Posted October 27, 2022 Share Posted October 27, 2022 Hast du schon mal versucht, die abgefragten Nummern in Anführungszeichen zu setzen? Also statt == 1 mal == "1" versuchen. Wo hast du denn die Befehle eingefügt? Update: Gerade ausprobiert. Es sind die Anführungszeichen 🙂 Link to comment Share on other sites More sharing options...
[Je...] Posted October 27, 2022 Share Posted October 27, 2022 oder, ähnlich wie Norbert schreibt: abs(getRecordHead("palletlocationnumber")) == 1 statt getRecordHead("palletlocationnumber") == 1 Link to comment Share on other sites More sharing options...
[Ka...] Posted October 27, 2022 Share Posted October 27, 2022 Moin, Ohne eine Ahnung von PCM zu haben müsste das auch so gehen: if abs(getRecordHead("palletlocationnumber")) <= 3 then setRecordHead("nestname","Spur1") else setRecordHead("nestname","Spur2") endif Davon ausgehend, das abs() dann den Integerwert vom char "1" zurück gibt ( Also so etwas wie atoi() ) 😃 Gruß Karsten Link to comment Share on other sites More sharing options...
[Jö...] Posted October 28, 2022 Share Posted October 28, 2022 Hallo , ist diese Methode auch ohne PCM möglich ,wenn ja, wie. Ich weiß diese Frage wird oft gestellt. Wäre interessant da wir auch eine 6 Fach Vorrichtung haben, und diese im Autorun Modus laufen lassen Danke schon mal im Voraus Gruß Jörg Please sign in to view this quote. Link to comment Share on other sites More sharing options...
[No...] Posted October 28, 2022 Share Posted October 28, 2022 Ich will nicht ausschließen, daß da mit viel Kreativität was zu machen wäre, aber ich kann es mir nur schwer vorstellen. Das Hauptproblem dürfte sein, daß ohne PCM das If...then Konstrukt fehlt. Das mit Bedingungen so nachzubilden, daß am Ende das obige Ergebnis erreicht wird, stelle ich mir sehr umständlich und aufwendig vor. Aber vielleicht täusche ich mich ja auch 😉 Freiwillige vor. Link to comment Share on other sites More sharing options...
[Jö...] Posted October 28, 2022 Share Posted October 28, 2022 Hallo Norbert, Danke für deine schnelle Antwort. Dann hoffe ich mal weiter, dass wir auch irgendwann mal PCM bekommen. Gruß Jörg Link to comment Share on other sites More sharing options...
[No...] Posted October 28, 2022 Share Posted October 28, 2022 Please sign in to view this quote. Das funktioniert übrigens nur, wenn man zusätzlich noch ein val() einbaut, also: abs(val(getRecordHead("palletlocationnumber"))) == 1 Den direkten Output von getRecordHead() schluckt die abs() Funktion leider nicht. Aber eigentlich kann man dann das abs() auch gleich ganz weglassen. abs() braucht man ja nur, um garantiert einen positiven Wert zu bekommen. Aber palletlocationnumber kann ja gar nicht negativ werden. Link to comment Share on other sites More sharing options...
[No...] Posted October 28, 2022 Share Posted October 28, 2022 Please sign in to view this quote. Und schon hab ich mich selber widerlegt. Man sollte halt nicht immer so voreingenommen sein: Pfüüh, ohne PCM, das geht doch nicht... 🤣 War eigentlich gar nicht schwer. Man nehme: 2 Resultatselemente mit Bedingung Sie sollten (müssen aber nicht zwingend) unmittelbar hintereinander stehen und am besten ganz oben in der Liste: Die Bedingungen müssen so aussehen: In den Resultatselementen jeweils eine Formel einfügen, die das Protokollkopffeld setzt: Das war's eigentlich schon. Den Ablauf muss man entweder mit der Reihenfolge nach Prüfmerkmalen starten, oder anderweitig sicherstellen, dass immer beide Resultatselemente ausgewertet werden. Nachteil an der Methode ist, dass die Resultatselemente im Protokoll auftauchen, aber das könnte man mit etwas Mehraufwand auch noch beheben (maskieren und durch Formeln anderswo Bezug darauf nehmen) Ich habe bei mir zur Sicherheit auch mal die PCM-Lizenz deaktiviert, um zu sehen, ob es dann auch noch funktioniert. Tut es. Viel Spaß und schönes Wochenende 😃 Link to comment Share on other sites More sharing options...
[Jö...] Posted November 3, 2022 Share Posted November 3, 2022 Hallo Norbert, Danke für deine Anleitung. Kann es aber erst Testen wenn ich wieder Arbeite. Habe Urlaub. Nächste Woche wenn ich Zeit habe , werde ich es Testen. Danke noch mal für deine Mühe Gruß Jörg Link to comment Share on other sites More sharing options...
[Th...] Posted November 11, 2022 Share Posted November 11, 2022 Hallo Jörg, hier mal ein anderer Vorschlag, wie es schon jahrelang bei uns im Betrieb funktioniert: ---> PCM Prüfplan Eingangseinstellungen //alle Parameter zurücksetzen clearParameter() //Pfad definieren Pfad = getActualInspectionDir() //Position zu Beginn bestimmen Position = getRecordHead("palletlocationnumber") selectCase Position case is == getRecordHead("firstpalletlocationnumber") //Prüfungs-Kennung eingeben setRecordHead("procid",inquireList("Werkzeug- & Teil-Nummer:","WZ111_TN1","WZ111_TN2","WZ121_TN3")) case is == getRecordHead("lastpalletlocationnumber") //evtl. Code endSelect Kennung = getRecordHead("procid") if Kennung <> "" then pTrennzeichen = inStr(Kennung,"_") lKennung = len(Kennung) WZ = mid(Kennung,1,pTrennzeichen-1) setRecordHead("tooldf",WZ) TN = mid(Kennung,pTrennzeichen+1,lKennung) setRecordHead("partnbLong",TN) //Parameterdatei einlesen runPCMFile(Pfad + "\" + WZ + ".txt") runPCMFile(Pfad + "\" + TN + ".txt") else display("Keine Werkzeug- & Teil-Nummer ausgewählt!") cncBreak() endif ---> PCM Prüfplan Ausgangseinstellungen //Position zum Ende bestimmen Position = getRecordHead("nestname") selectCase Position case "Pos1" Nest = Pos1 case "Pos2" Nest = Pos2 case "Pos3" Nest = Pos3 case "Pos4" Nest = Pos4 case "Pos5" Nest = Pos5 case "Pos6" Nest = Pos6 caseElse Nest = "Test" endSelect //Nestnummer eintragen setRecordHead("nestname", Nest) ---> PCM Prüfplanverzeichnis "TN".txt (diverse Parameter) ---> PCM Prüfplanverzeichnis "WZ".txt Pos1 = "Spur1" Pos2 = "Spur1" Pos3 = "Spur1" Pos4 = "Spur2" Pos5 = "Spur2" Pos6 = "Spur2" ---> Autorun Palette Vorbelegung "nestname"* Position 1 mit "Pos1", usw. *Das Ganze kann natürlich auch mit einem anderen Protokollkopf-Parameter umgesetzt werden. So bleibt der Code flexibel und kann für andere Fälle leicht und schnell geändert werden. Link to comment Share on other sites More sharing options...
[Jö...] Posted November 14, 2022 Share Posted November 14, 2022 Hallo Thomas, vielen Dank für deinen Vorschlag. Aber wie weiter vorne im Post schon erwähnt, habe ich kein PCM. Leider bin ich noch nicht zu Norbert Vorschlag gekommen, den auszuprobieren . Aber sobald ich ein bis'chen Zeit habe werde ich es testen. Danke aber noch mal Thomas für den Erklärung. Sollten wir irgendwann mal PCM bekommen, werde ich deinen Vorschlag auch Testen. Gruß Jörg Link to comment Share on other sites More sharing options...
[He...] Posted November 16, 2022 Share Posted November 16, 2022 Instead of using if-conditions you could just do it like this. //Get the pallet locationnumber and make it a number to be able to do some math. PalletLocationValue = val(getRecordHead("palletlocationnumber")) //Reduce it by one and divide it by three and take the integer-value. //(1-1)/3 = 0,000 => int:0 (2-1)/3 = 0,333 => int:0 (3-1)/3 = 0,666 => int:0 //(4-1)/3 = 1,000 => int:1 (5-1)/3 = 1,333 => int:1 (6-1)/3 = 1,666 => int:1 //Then add 1 to the value SpurValue = int((PalletLocationValue-1)/3)+1 setRecordHead("nestname","Spur" +text(SpurValue)) Or combine in into one long string. setRecordHead("nestname","Spur" +text(int((val(getRecordHead("palletlocationnumber"))-1)/3)+1)) This one line can be input as a formula in a comment field in either feature list or Characteristics list. Note: I have not tested this but I think it should work. Link to comment Share on other sites More sharing options...
[Th...] Posted November 17, 2022 Share Posted November 17, 2022 Please sign in to view this quote. Oh, mein Fehler, das muss ich überlesen haben. 🤣 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