Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Barcode-Reader O2I (TCP/IP) mit Codesys auslesen

eric2002
2018-03-24
2018-04-01
  • eric2002 - 2018-03-24

    Hallo zusammen,
    ich bin gerade dabei mich in Codesys einzuarbeiten. Aktuell habe ich ein Barcode-Reader O2I von der Firma ifm an meinen Rechner angeschlossen und versuche mittels TCP/IP das Scan-Ergebnis einzulesen. Anschließend soll das Scan-Ergebnis per Visualisierung ausgegeben werden.
    Eine Verbindung zum Sensor ist da und der Sensor sollte korrekt eingestellt sein. Mit Hilfe eines kleinen C#-Programms konnte ich das Scan-Ergebnis bereits auslesen.
    Nun stehe ich ein bisschen auf dem Schlauch und komm nicht weiter. Wie komme ich nun an den gescannten Wert ran?
    In der aktuellen Codesys-Hilfe oder die Goggle-Suche konnte ich leider nichts finden.

    IMG: Neues Bild.jpg

     
  • eschwellinger

    eschwellinger - 2018-03-28

    Hi,
    hm.. ist das ein Modbus Scanner?
    Ich würde echt mal IFM also den Hersteller fragen ob Sie ein Beispiel für CODESYS haben...

    Grüße
    Edwin

     
  • eric2002 - 2018-04-01

    Habe eine Möglichkeit gefunden auf den Sensor zuzugreifen und den Barcode auszulesen. Mit Hilfe der Bibliothek CAA Net Base Services.
    Mit TCPWrite schick ich das Kommando zum "t" und erwarte als Ergebnis den Barcode. Wird mit TCPRead ausgelesen.
    Das funktioniert aber nur einmalig beim Starten des Programms.
    Jetzt habe ich aber noch eine Frage. Ich möchte gerne über einen Visualisierung ein Button drücken und damit die Trigger auslösen, d. h. wenn Button "Trigger" gedrückt wird, wird mittels TCPWrite das Kommando an den Sensor geschickt und mit TCPRead der gelesene Barcode empfangen. Wie könnte so was aussehen?
    Anbei der Code:

    IPAddress.sAddr:= '192.168.0.79';
    uiPort:= 50003;
    (* The client tries to establish a connection to a TCP Server on 127.0.0.1:4711. *)
    TCPClient(xEnable:= TRUE, udiTimeOut:= 100000, ipAddr:= IPAddress, uiPort:= uiPort, hConnection=> TCPConnection);
    arbTriggerComO2I[0]:= 116; (*'t'*)
    arbTriggerComO2I[1]:= 10;(*'LF'*)
    IF TCPClient.xActive AND TCPConnection <> CAA.gc_hINVALID THEN
       TCPWrite(
          xExecute:= TRUE, 
          udiTimeOut:=2000 , 
          hConnection:= TCPConnection, 
          szSize:= 2, 
          pData:= ADR(arbTriggerComO2I), 
          xDone=> XWriteDone, 
          xBusy=> XWriteBusy, 
          xError=> XWriteError, 
          eError=> );
       TCPRead(
          xEnable:= TRUE,
          hConnection:= TCPConnection,
          szSize:= SIZEOF(sReceived),
          pData:= ADR(sReceived),
          xReady=> xReadReady,
          xDone=> xReadDone,
          xBusy=> xReadBusy,
          xError=> xReadError);
       
       IF TCPRead.xReady THEN
          IF find(sReceived, 'start') <> 0 THEN
             XBarcode := sReceived;
          END_IF
       END_IF
    END_IF
    
     

Log in to post a comment.