asyril Asycube und EYE+

In diesem Artikel wird Einrichtung des Systems beschrieben. Das 2D System ist einfach und intuitiv in der Nutzung �ber die EYE+ Studio Web-Oberfl�che.

1. Einleitung

Die Kombination aus einem Asycube und dem EYE+ Smart Control System erm�glicht es, bei der Zuf�hrung, Vereinzelung und Ausrichtung der als Sch�ttgut gelieferten Teile an Effizienz zu gewinnen. Der Asycube ist dank seiner mit TCP/IP und Modbus TCP kompatiblen Kommunikation mit allen HORSTs und mit jeder SPS kompatibel. F�r die Einrichtung und Nutzung von EYE+ sind keine Vorkenntnisse in der Bildverarbeitung erforderlich. Es ist einfach und intuitiv zu bedienen. Folgen Sie einfach den Schritten in der EYE+ Studio Web-Oberfl�che.

_images/schema_overview.png

2. Einrichtung des Systems

Die Einrichtung des Systems ist sehr gut in den Dokumenten von asyril beschrieben. Der Web-Wizard von Asyril leitet einen sehr intuitiv durch die verschiedene Schritte um Bauteile einzulernen sowie die ben�tigten Rezepte zu erstellen. Weitere Informationen findet man auch in folgender Dokumentation https://doc.eyeplus.asyril.com/de/2.1/index.html

3. Kommunikation

Die Teilnehmer m�ssen sich im selben Bereich des Netzwerks befinden. Wie man die IP-Adresse des Roboters einstellt ist in folgendem Artikel beschrieben: IP-Adresse �ndern

Folgend wird die Kommunikation mittels TCP IP beschrieben. Weitere Informationen dazu findet man unter Sockets

Auf der EYE+ Weboberfl�che muss unter dem Tab configuration ? robot ? TCP/IP Configuration der End of line character auf Carriage Return und Line Feed eingestellt werden.

3.1. Aufbau der Verbindung

// TCP/IP Socket Communication
var IP = "192.168.0.50";    // IP asyril EYE+
var Port = 7171;        // Port IP asyril EYE+
var Terminator = "\r\n";     // Zeilenumbruch Carriage Return + Linefeed. Muss in asyril EYE+ Web HMI unter "configuration" konfiguriert werden 

//********************************************* Programm *********************************************

// Aufbau der Verbindung zu asyril EYE+
try

    var socket = new java.net.Socket();
    socket.connect(new  java.net.InetSocketAddress(IP, Port), 10000); //10s timeout

    // 10 sek Timeout beim Einlesen der Nachricht ueber einen Socket
    socket.setSoTimeout(10000);
}
catch (e)
{
    show_info("A connection with the Asyril EYE+ could not be established!");
}

3.2.  Schreiben einer Nachricht

// Nachricht ueber Socket schreiben
function writeMessage(socket, message)
{
    var printWriter =
        new java.io.PrintWriter(
            new java.io.OutputStreamWriter(
                socket.getOutputStream()));
    printWriter.print(message += Terminator);    
    printWriter.flush();
}

3.3. Lesen einer Nachricht

// Nachricht ueber Socket lesen
function readMessage(socket)
{
    var bufferedReader =
        new java.io.BufferedReader(
            new java.io.InputStreamReader(
                socket.getInputStream()));
    var charArrayType = Java.type("char[]");
    var buffer = new charArrayType(1000);
    try {
        var amountCharacters = bufferedReader.read(buffer, 0, 1000);    
        var message = new java.lang.String(buffer);
    } catch (e) {
        var message = "Timeout: Keine Nachricht erhalten";
    }
    return message;
}

 

4. asyril EYE+ Befehle

Folgend findet man Beispiele wie die asyril EYE+ Befehle in horstFX verwendet werden k�nnen. Es werden die Hauptbefehle zur Programmausf�hrung beschrieben. Sollten weitere Befehle gebraucht werden, k�nnen diese analog dazu umgesetzt werden. Die zur Verf�gung stehende Befehle findet man unter https://doc.eyeplus.asyril.com/de/2.1/integration/tcp_programming_guide/commands.html

// Asyril EYE+ Status herausfinden
function getState()
{
    var Message = "get_parameter state";
    writeMessage(socket, Message);
    var cam_result = readMessage(socket);
    show_info(cam_result);
}
// Asyril EYE+ Rezeptidentifikator herausfinden
function getReceptIndicator()
{
    var Message = "get_recipe_list";
    writeMessage(socket, Message);
    var cam_result = readMessage(socket);
    show_info(cam_result);
}

// Asyril EYE+ Rezept starten
function startRecept()
{
    var Message = "start production 1813";
    writeMessage(socket, Message);
    var cam_result = readMessage(socket);
    show_info(cam_result);
}
// Asyril EYE+ Teileposition erhalten
function getPartPositions()
{
    var Message = "get_part";
    writeMessage(socket, Message);
    var Cam_result = readMessage(socket);
    show_info(Cam_result);

    // Nachricht aufteilen
    var Splitted = Cam_result.split(" ");
    var State = Splitted[0];
    var CamCoordX = parseFloat(Splitted[1].replace("x=", ""));
    var CamCoordY = parseFloat(Splitted[2].replace("y=", ""));
    var CamCoordRZ = parseFloat(Splitted[3].replace("rz=", ""));

    show_info("X = " + CamCoordX + " Y = " + CamCoordY + " RZ = " + CamCoordRZ);
}
// Asyril EYE+ neue Teile vorbereiten und erkennen 
function prepareNewPart()
{
    var Message = "prepare_part";
    writeMessage(socket, Message);
    var cam_result = readMessage(socket);
    show_info(cam_result);
}
// Asyril EYE+ Produktion stoppen
function stopProduction()
{
    var Message = "stop production";
    writeMessage(socket, Message);
    var cam_result = readMessage(socket);
    show_info(cam_result);
}

Die Funktionen k�nnen wie nachfolgend beschrieben aufgerufen werden:

// Asyril EYE+ Status herausfinden
getState();

// Asyril EYE+ Rezeptidentifikator herausfinden
getReceptIndicator();

// Asyril EYE+ Rezept starten
startRecept();

// Asyril EYE+ Teileposition erhalten
getPartPositions();

// Asyril EYE+ Neue Teile vorbereiten und erkennen
prepareNewPart();
    
// Asyril EYE+ Produktion stoppen
stopProduction();

5. Beispielprogramme

5.1.  Beispielprogramm welches die Kommunikation und EYE+ Befehle beinhaltet

Asyril EYE Communications

5.2.  Beispielprogramm mit Aufnahme eines Objekts und Abwurf �ber einem Beh�lter

Asyri lEYE Programm