Barcodeleser an Wago 750-841

isom
2011-02-10
2011-02-10
  • isom - 2011-02-10

    Hallo miteinander

    Ich plane im Moment meine Abschlussarbeit. Grob beschrieben läuft meine Arbeit auf folgendes hinaus:

    • Mitarbeiter trifft im Magazin ein
    • Identifiziert sich per Barcode
    • Wählt Material aus
    • Barcode wird zu Material vermerkt
    • Material wird freigegeben

    Den Barcodeleser (z.B. http://www.sick.com/de/de-de/home/products/product_news/identification_systems/Seiten/clv50x.aspx) wird per serieller Schnittstelle (z.B. 750-650/003-000 ) angeschlossen. Der Barcode wird per ASCII-Protokoll gesendet.
    Ich bin mir im Moment im Unklaren, wie ich die Daten weiterverarbeiten kann.

    Danke für eure Hilfe!
    isom

     
  • PAKA - 2011-02-10

    hallo,

    ich würde es so machen. Die Daten die du über die serielle Schnittstelle ausliest in ein Array packen. Am besten in ein drei dimensionales.

    ARRAY OF Barcode (Barcode, Zeitstempel, Produkt) musst dir denn natürlich ein Struct schrreiben. Dann hast du dein Array gleich geordnet und kannst es danach weiter verarbeiten. Würde als Bedingung nehmen Lesevorgang beendet und dann das Array in ein File schreiben. Das File kannst dann per Mail verschicken oder auf einen FTP Server ablegen.

    MfG

     
  • isom - 2011-02-10

    Hallo miteinander!

    Erstmals danke für deine Antwort PAKA.

    Blicke im Moment noch nicht ganz durch. Die Möglichkeit mit Arrays wurde mir von meinem Fachvorgesetzten auch vorgeschlagen. Habe aber noch nicht mit Array's gearbeitet. Hat vielleicht jemand ein Beispielprogramm mit Arrays oder irgendwelche nützliche Informationen? Die Archivierung der Barcodedaten zu den einzelnen Produkten ist sekundär. Die letzte Ausleihe sollte ersichtlich sein, damit immer gewährleistet ist, welcher Mitarbeiter das Produkt als letzter gebraucht hat.

    Mit Gruss
    isom

     
  • PAKA - 2011-02-10

    Am besten du besorgst dir mal ein Buch für die SPS Programmierung, weil wie es aussieht du bei null anfängst.

    Ein Array ist ein Datenfeld, was beschrieben wird mit vordefinierten Variablen. Hast du auch schon die CodeSys Software? Das heißt ja der Mitarbeiter der den Vorgang bearbeitet muss sich irgendwie einloggen ins System bzw. der Mitarbeiter muss sich irgendwie zur Erkennung geben. Dies könnte man über ein Array lösen, wo man die verschiedenen Mitarbeiter einträgt und ihnen eine feste Zahl zum einloggen gibt. Dann weiß das Array durch sucht und gibt die Mitarbeiter Daten aus.

    Wenn ein Vorgang gestartet wird, werden die Daten vom Array gelöscht und wieder neubeschrieben. ARRAY OF Vorgang (Zeitstempel,Mitarbeiter, gebuchte Materialien)
    Nach Beendigung des Vorgangs werden dann die Daten vom Array in einen CSV Datei geschrieben, das sie nicht verloren gehen und man diese nachvollziehen kann.

    Du kannst auch mal direkt bei Wago schauen, da gibt es eine ganze Menge an Programmbeispielen.

    Unbedingt Basic´s schaffen für die Programmierung, Array, Variablen, Structs und allgemeine Sachen.

    In was für einen Sprache sollst du denn programmieren? FUP, CFC, ST?

    MFG

     
  • isom - 2011-02-10

    Danke für deine schnelle Antwort, PAKA!

    Habe schon diverse Sachen programmiert, nur keine Arrays und Structs bis jetzt. Die CoDeSys-Software ist vorhanden.

    Zur Erkennung des Mitarbeiters; ich weiss nicht ob du etwas falsch interpretiert hast, denn der Mitarbeiter identifiziert sich per persönlichen Barcode , der auf seiner Mitarbeiterkarte aufgedruckt ist. Die Erkennung des Mitarbeiters erfolgt also über den Barcodescanner der seriell an die Wago angeschlossen wird. Das Material hat keinen Barcode. Ich muss also nur seinen persönlichen Code zum Material, welches er ausleihen will, schreiben.

    Beispiel eines Ablaufs:
    Herr Müller trifft im Magazin ein. Per Barcodescanner identifiziert sich Herr Müller an der Bedieneroberfläche. Eine Liste mit Materialien erscheint. Er will die Bohrmaschine ausleihen. Falls die Bohrmaschine schon ausgeliehen ist, soll lediglich eine Statusmeldung "nicht verfügbar" und der Name des derzeitigen Besitzers erscheinen. Die Freischaltung der Materialien erfolgt mittels Verschlusszylindern - die Detektierung "verfügbar"/"nicht verfügbar" mittels Sensoren.

    Ich hoffe Du kannst Dir nun ein vollkommenes Bild meiner Arbeit machen.

    Ps. Programmiersprache ist frei wählbar.

    Mit Gruss
    isom

     
  • Anonymous - 2011-02-10

    Originally created by: blackenslaver666

    Hi.
    In deinem Fall lege dir eine benutzerdefinierte Datenstruktur an, das geht im Reiter "Datentypen". Ich würde idealerweise diese als "Material" bezeichnen, z.B.
    so:

    TYPE Material
    STRUCT
    Status : BOOL; ( 0 = ausgeliehen, 1 = verfügbar )
    IdNummer : STRING; ( Id-Nummer vom Mitarbeiter: Barcode )
    ...
    END_STRUCT
    END_TYPE

    Diese selbstdefinierter Datentyp sichert dir also deine Materialeigenschaften, je nach Belieben kannst da noch mehr Var/Infos reinpacken, die Datentypen ändern (z.B. Status : INT; (* 0 = ausgeliehen, 1 = verfügbar, 2 = reserviert usw.) oder was löschen.

    Jetzt musst du im deinem Programm irgendwo ein ARRAY von diesem selbstdefinierten Datentyp deklarieren, damit der Controller den Speicherbedarf reserviert. Das Array sollte von "0" bis "Anzahl Materialien" laufen. Beispiel: Es gibt nur 2 Materialien: 1 = Bohrmaschine, 2 = Schleifmaschine.

    VAR CONSTANT
    ANZ_MATERIAL : INT := 2;
    END_VAR

    Array-Deklaration:

    LagerMaterial : ARRAY[0..ANZ_MATERIAL] OF Material; ( Array vom selbstdefinierten Datentyp "Material" für 2 Lagermaterialien )

    Das Schöne an diesen Datentypen ist, dass du über den Index auf jede vorhandene Var des Typs zurückgreifen kannst, indem du den Arraynamen, den Punkt und die symbolischen Identifier aneinanderreihst. Z.B. greift das Kommando

    LagerMaterial[1].Status

    den Ausleihstatus der Bohrmaschine ab. Jetzt dann alles noch in einen logischen zeitlichen Zusammenhang gebracht und fertig ist dein Projekt. Ein Ablauf wäre z.B.:

    1. Warten auf Barcode vom Panel
    2. Barcode erhalten, warten auf Materialauswahl
    3. Quellcode nach Materialauswahl

    IF LagerMaterial[Materialauswahl].Status THEN ( Material ist verfügbar )
    LagerMaterial[Materialauswahl].IdNummer := Barcode; ( Material vom MA "Barcode" ausgeliehen )
    LagerMaterial[Materialauswahl].Status := FALSE; ( Material ist JETZT ausgeliehen )
    ELSE
    ; ( Nix tun oder Msg am Panel ausgeben wer Material ausgeliehen hat: Material ist schon weg! )
    END_IF

    Viel Spass damit!

    Gruss Andy

     

    Related

    Talk.ru: 1

  • isom - 2011-02-10

    Hi blackenslaver666!

    Danke vielmals für deine ausführliche Erklärung! Habe nun eine konkrete Vorstellung wie ich mit meiner Aufgabenstellung fertig werde. DANKE! **MERCI! GRAZIE! **

    Euch allen einen schönen Abend!
    isom

     

Log in to post a comment.