[La...] Posted April 21, 2021 Share Posted April 21, 2021 Hallo Zusammen, ich stehe gerade vor folgendem Problem. Ich gebe aktuell die Seriennummer über einen DMC-Scanner in die Eingabemaske ein. das sieht in etwa so aus: MSN=inquireText("Seriennummer") if MSN == "" then setRecordHead("partnbinc","NOT-DEFINED") else MSN = mid(MSN,1,16) setRecordHead("partnbinc",MSN) endif Leider funktioniert das nur unter Calypso, in der Produktion verwenden wir Autorun mit 3 Palletenplätzen. Wie kann ich da dann den DMC-Code für jedes Teil separat ausgeben lassen? Hat da wer Erfahrung mit oder Ideen? Vielen Dank in die Runde Link to comment Share on other sites More sharing options...
[Fl...] Posted April 21, 2021 Share Posted April 21, 2021 Hallo Lars, warum funktioniert das im AutoRun nicht? Müsste ja eigentlich gehen nur das die Abfrage der Seriennummer immer erst beim Starten der jeweiligen Palettenplatz kommt. Falls das dein Problem ist und Du die Abfrage für alle Palettenplätze am Beginn der Palette haben möchtest kannst Du folgendes in die Eingangseinstellungen des Prüfplans schreiben: if getRecordHead("firstpalletlocationnumber") == getRecordHead("palletlocationnumber") then PalPlLis = getRecordHead("palletlocationnumberselection") PalPlSize = PalPlLis.size PalPlLisNew = "" for i = 1 to PalPlSize act = mid(PalPlLis,i,1) if act == "," then MSN=inquireText("Seriennummer für Palettenplatz " + PalPlLisNew + " eingeben.") if MSN == "" then MSN = "NOT-DEFINED" else MSN = mid(MSN,1,16) endif if fileExists("C:\Temp\Palettenplatz" + PalPlLisNew + ".txt") == true then deleteFile("C:\Temp\Palettenplatz" + PalPlLisNew + ".txt") endif addToFile("C:\Temp\Palettenplatz" + PalPlLisNew + ".txt",MSN) PalPlLisNew = "" else PalPlLisNew = PalPlLisNew1 + act endif if i == PalPlSize then MSN=inquireText("Seriennummer für Palettenplatz " + PalPlLisNew + " eingeben.") if MSN == "" then MSN = "NOT-DEFINED" else MSN = mid(MSN,1,16) endif if fileExists("C:\Temp\Palettenplatz" + PalPlLisNew + ".txt") == true then deleteFile("C:\Temp\Palettenplatz" + PalPlLisNew + ".txt") endif addToFile("C:\Temp\Palettenplatz" + PalPlLisNew + ".txt",MSN) endif next i endif PalLocNr = getRecordHead("palletlocationnumber") if fileExists("C:\Temp\Palettenplatz" + PalLocNr + ".txt") == true then ActSN = readListFile("C:\Temp\Palettenplatz" + PalLocNr + ".txt") setRecordHead("partnbinc",ActSN) endif Hab das jetzt mal bei mir an der Offline Station probiert und hat funktioniert, hab's aber noch nicht an einer "echten" Palette getestet. Es wird hier eben zu Beginn der Palette zu jedem Palettenplatz die Seriennummer abgefragt und dann unter "C:\Temp\" ein Textfile mit der Palettenplatznummer abgespeichert das dann in der jeweiligen Palette eingelesen wird. PS: Falls der Prüfplan auch ohne AutoRun im Calypso verwendet wird sollte man hierfür noch eine Abfrage einbauen weil man dann wahrscheinlich keinen Sinnvollen Wert für die angewählten Plätze und den aktuellen Platz zurückbekommt, und das dann wahrscheinlich in einer Fehlermeldung endet. 😕 Hoffe das hilft Dir. MfG Florian Link to comment Share on other sites More sharing options...
[La...] Posted April 22, 2021 Author Share Posted April 22, 2021 Hallo Florian, danke für die schnelle Antwort, genau das meine ich. Hab ich offline gleich mal probiert, mit ein paar kleinen Änderungen klappt es auch super. 🙂 Einziges Problem, in die Textdatei wird die reine SN-Nummer geschrieben aber auf dem Protokoll taucht die Nummer so auf: List (`SN`) Wie kann ich das noch ändern? Grüße Lars Link to comment Share on other sites More sharing options...
[Fl...] Posted April 22, 2021 Share Posted April 22, 2021 Hallo Lars, das kommt daher weil das Textfile mit dem Befehl readListFile() als Liste eingelesen wird und auch mehrere Zeilen haben kann, wenn du dahinter .first schreibst wird nur die erste Zeile eingelesen. Sollte dann so aussehen: ActSN = readListFile("C:\Temp\Palettenplatz" + PalLocNr + ".txt").first MfG Florian Link to comment Share on other sites More sharing options...
[La...] Posted April 30, 2021 Author Share Posted April 30, 2021 Hallo Florian, das klappt super. Danke dafür. Jetzt benötige ich noch die Möglichkeit, auszuwählen ob die SN eingelesen werden soll oder per Hand eingegeben wenn kann. Auch soll eine Text Eingabe möglich sein. Aktuell bekomme ich dann immer eine Störung. Was auch noch top wäre, wenn ich mehrere DMC Varianten abfragen könnte. Sprich, wenn vorne die 1 steht lese --> MSN = mid(MSN,16,6) aus wenn vorne die 2 steht lese --> MSN = mid(MSN,8,5) Danke und ein schönes Wochenende Grüße Lars Link to comment Share on other sites More sharing options...
[Fl...] Posted April 30, 2021 Share Posted April 30, 2021 Hallo Lars, da ich so ziemlich das selbe brauche, habe ich das die Woche nochmal für meine Anforderungen überarbeitet, jetzt habe ich mal die von Dir beschriebenen Änderungen eingebaut und offline getestet, sieht soweit gut aus. Allerdings weiß ich nicht wie deine Verschiedenen DMC's aussehen, bei mir sind die in dem entsprechenden Prüfplan alle über 50 Zeichen lang, jetzt habe ich eine if Bedingung eingebaut die sagt alles bis 20 Zeichen wird genau so als Teilenummer übernommen und alles über 20 wird als Code behandelt und in Deinem Fall je nach dem ob der Code mit 1 oder 2 beginnt verschieden Stellen des Codes als Teilenummer verwendet. Wenn das bei Dir nicht so klar zu unterscheiden ist dann würde ich die Bedingung anders gestalten. PalLocNr = getRecordHead("palletlocationnumber") PalPlFile = "C:\Temp\Palettenplatz" if PalLocNr <> "" then if getRecordHead("firstpalletlocationnumber") == getRecordHead("palletlocationnumber") then PalPlLis = getRecordHead("palletlocationnumberselection") PalPlLisSor = getParameterNamed("list(" + PalPlLis + ")").sort PalPlSize = PalPlLisSor.size for i = 1 to PalPlSize act = mid(PalPlLisSor,i,1).first QRC = inquireText("QR-Code oder Teilenummer für Palettenplatz " + act + " eingeben." + cr() + "QR-Code muss mehr als 20 Zeichen haben!" + cr() + "Teilenummer muss weniger als 20 Zeichen haben!") QRCSize = len(QRC) if QRCSize > 20 then //Hier ist Festgelegt das alles über 20 Zeichen ein Code ist und darunter eine Teilenummer QRCAnf = mid(QRC,1,1) if QRCAnf == "1" then //Wenn der eingescannte Code mit einer 1 beginnt werden die ab der 16. 6 Stellen für die Teilenummer verwendet QRCTeilNr = mid(QRC,16,6) endif if QRCAnf == "2" then //Wenn der eingescannte Code mit einer 2 beginnt werden die ab der 8. 5 Stellen für die Teilenummer verwendet QRCTeilNr = mid(QRC,8,5) endif else if QRC == "" then QRC = "NOT-DEFINED" endif QRCTeilNr = QRC endif if fileExists(PalPlFile + act + ".txt") == true then deleteFile(PalPlFile + act + ".txt") endif addToFile(PalPlFile + act + ".txt",QRCTeilNr) next i endif if fileExists(PalPlFile + PalLocNr + ".txt") == true then ActSN = readListFile(PalPlFile + PalLocNr + ".txt").first setRecordHead("partnbinc",ActSN) endif endif MfG Florian 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