Jump to content

PCM DMC-Seriennummer auslesen in Autorun


---
 Share

Recommended Posts

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

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

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

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

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

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

 Share

×
×
  • Create New...