Nummerierung

  • Hallo Roboterfreunde


    Heute habe ich mal ein Problem, welches nichts mit Robotern zu tun hat. Vielleicht hat jemand ja auch schonmal über sowas nachdenken müssen.


    Ich muss die Produkte, die wir herstellen, nummerieren. Aber: Man soll aus der Nummer auf keinen Fall die Anzahl der produzierten Artikel herauslesen können. Sie dürfen also nicht fortlaufend sein. Das schließt auch die Möglichkeit ein, erst bei 100000 zu beginnen, oder so.


    Was man machen könnte: Einen Zufallsgenerator bilden, der zufällig eine Zahl raussucht und sie mit einer Datenbank vergleicht und nachschaut ob die Nummer schonmal vergeben wurde. Das ist aber bei 1.000.000 produzierten Stücken pro Jahr irgendwann sehr rechenaufwändig. Das muss besser / einfacher gehen.


    Wie lassen sich solche Seriennummern bilden? Hat jemand einen Vorschlag?


    Matthias

  • ANZEIGE
  • Du hast nen Pool von 12-stelligen Nummern.
    Jedes Teil erhält per Zufallsgenerator aus dem Pool eine Nummer, die dann aus dem Pool gestrichen wird.
    Dafür wird sie mit dem realen Produktionsdatum einfach in ne Datenliste transferiert...


    Sollte in c++ mit unter hundert Zeilen realisierbar sein.

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.


  • Jedes Teil erhält per Zufallsgenerator aus dem Pool eine Nummer, die dann aus dem Pool gestrichen wird.


    Dann doch eher einen Pool der am Anfang leer ist, wo die Nummern bei Vergabe hinzukommen. Das ist zumindest in den ersten Jahren schneller, außerdem können später einfach längere Nummern dazukommen.


    Wenn man den Pool sortiert hält, ist der Test auf schon vorhandene Nummern mit Binärsuche sehr schnell. Dateigröße dürfte unkritisch sein, ein unkomprimiertes Bild ist größer.


    Kann man sicher gut in einer gängigen Programmiersprache plus einer kleinen Datenbank ,wie z.B. SQLite machen, dann werden die Daten auch schön in eine Datei gespeichert und sind nicht gleich aus dem RAM verschwunden, wenn mal der Strom weggeht. Das Suchen und Einfügen übernimmt dann die Datenbank. SQLite ist wirklich winzig, ist auch auf jedem Android Gerät.



    Man soll aus der Nummer auf keinen Fall die Anzahl der produzierten Artikel herauslesen können.


    Ja, ist erstaunlich, was man damit herausfinden kann. Angefangen haben damit übrigens die Engländer im zweiten Weltkrieg, die konnten aus den Seriennummern abgeschossener deutscher Flugzeuge exakt ausrechnen, wie sich die deutsche Flugzeugproduktion entwickelt ...

  • Guten Abend


    Also ihr würdet auch lieber zu einer Zufallsszahlenauswahl tendieren. Das hatte ich auch schon so vermutet.
    Die Angelegenheit werde ich in C# schreiben, das müsste eigentlich locker hinzukriegen sein.


    Vielen Dank für eure Vorschläge!


    Schöne Ostern noch


    Matthias

  • Hallo,


    mir fallen nur zwei Alternativen ein:


    1. Ein Hashalgorithmus, der z.B. aus Datum und Uhrzeit eine Seriennummer produziert. Da hat man aber auch wieder das Problem mit der Eindeutigkeit, man braucht eventuell wieder eine DB um nachzuschauen, ob es die Nummer schon gab. Außerdem ist das normalerweise eine Einbahnstraße. Man kommt nicht mehr von der Seriennummer zurück zu Datum und Uhrzeit. Spätestens wenn mal die Nachfrage kommt: "Ist das überhaupt ein Teil von uns, wann haben wir das produziert ?", sieht man damit alt aus. Schon allein das spricht aus meiner Sicht für eine Art Datenbank.


    2. Man verwendet doch intern fortlaufende Nummern, erzeugt daraus durch einen Verschlüsselungsalgorithmus die Seriennummern. Das ist aber sicher mathematisch kompliziert, von Laien erdachte Verschlüsselungen sind in der Regel durch Experten einfach zu knacken. Hier auch schon, weil man ja weiß, dass es sich um eine Numerierung handelt.


    Wenn das Numerieren auf einem Windows PC passiert, wäre C# auch meine Wahl gewesen. Falls später Seriennummern parallel von verschiedenen Maschinen vergeben werden sollen, oder die Verwaltung nachsehen will, wann denn ein Teil mit einer bestimmten Nummer produziert wurde, noch zusätzlich eine echte DB mit dem SQL Server Express. Im Single-User Fall etwas Dateibasiertes, eventuell auch ein Dataset, dass kann man schön als kleine DB im Arbeitsspeicher verwenden. Allerdings hab ich noch nie getestet, wie schnell das 10 Mio. Einträge liest und schreibt.


    Schöne Ostern


    Urmel

  • Hallo;


    Auch wenn es möglicherweise bereits gelöst ist, hätte ich noch eine Idee. Aber in wie weit die zu deinen Vorgaben zwecks "externes Mitzählen" passet, musst du entscheiden:


    Wir haben eine Kombination aus Fortlaufender Stückzahl je Schicht oder Tag, Dem Jahr, und dem Kalendertag.


    Das Jahr ist nicht in Jahreszahl geschrieben, sondern auch fortlaufend. Wir haben letztes Jahr begonnen mit Produktion, also 01. Dieses Jahr ist dann 02. Heute wäre dann der 133. Tag im Jahr. Dann kann man Schichtweise 1-3 durchnummerieren, und sagen wir du machst 1000 Teile in der Schicht dann noch die nummer Pro Teil / Pro Schicht.


    Somit kommt eine Zahl raus: 02.133.2.0480 Also das 480ste Teil der Spätschicht am 133 Tag im zweiten Produktionsjahr.


    (Die Schreibweise bleibt jedem selbst überlassen: 0213320480)


    Das ist für Aussenstehende nicht wirklich aus dem Stand nachvollziehbar, kann aber intern für Tracking / Chargenrückverfolgung verwendet werden.


    Und eine Auskunft über die Anzahl der wirklich produzierten Teile gibt es eigentlich auch nicht.

  • Hallo,


    im Prinzip hast du Recht, das ist ein übliches Verfahren.


    Aber in der Frage hieß es ja


    Man soll aus der Nummer auf keinen Fall die Anzahl der produzierten Artikel herauslesen können. Sie dürfen also nicht fortlaufend sein.


    Bei so einer Numerierung sind zumindest die Teile aus einer Schicht fortlaufend numeriert. Wenn jetzt ein großer Kunde sehr viele Teile pro Tag bekommt, kann er evtl. schon rausfinden, wie viele da wirklich produziert werden.


    Manchmal wird ein großer Aufwand betrieben, so etwas zu verhindern. Ich habe mal in einem Projekt gearbeitet, wo Tinte verwendet wurde, die innerhalb weniger Stunden verschwindet. Damit war die Beschriftung mit Seriennummer und Prüfdaten wieder verschwunden, bis die Teile beim Kunden waren. Der Hintergrund war, dass vom Aufbau her identische Teile für mehrere Kunden produziert wurden, die nach der Qualitätsprüfung entsprechend der Güteklassen auf verschiedene Kunden verteilt wurden. Man wollte unbedingt verhindern, dass die Kunden über die Seriennummern etwas über die Lieferungen an andere Kunden oder die Qualität der Fertigungsprozesses herausfinden.


    Grüße


    Urmel

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden