Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 7 von 7

Thema: ILC 150 ETH mit AVR NET IO via Ethernet verbinden

  1. #1
    Registriert seit
    19.01.2013
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    wie im Titel beschrieben, würde ich gerne eine AVR NET IO (die von Pollin) mit der ILC 150 ETH auslesen bzw. die Ausgänge setzen. Aus sämtlichen Foren und Beiträgen habe ich gesehen, dass es mit der S7 funktionieren soll. Nach verschiedenen Tests mit PCWorx und der AVR habe ich leider feststellen müssen, dass es trotz mehreren verschiedenen Vorgehensweisen nicht klappte. Mein Vorgehen war wie folgt:

    Der IP_CONNECT-Baustein baut Verbindung auf.

    - Versuch 1: AVR-Befehle mit STRING-Variable senden. Dabei ist das CRLF einfach "\r\n". Das funktioniert aber nicht.
    - Versuch 2: ebenfalls mit STRING, bloß dass das CRLF aus BYTE_TO_STRING(ASCII_Wert) und dann mit CONCAT an den STRING anfügen. Das funktioniert aber nicht
    - Versuch 3: Jedes Zeichen als BYTE in einem ARRAY zu senden. Das funktioniert aber nicht.
    - Versuch 4: Mithilfe des PureBasic-Beispiels Verbindung aufbauen und Daten auslesen. Das geht sehr gut. Aber ich kann leider nicht die Daten an die SPS weitergeben. Ich konnte in einem seperaten Test eine Verbindung von SPS <-> PureBasic-Programm aufbauen und Daten senden. Doch leider waren die Daten, die bei der SPS angekommen sind der Wert der Länge, der zu sendenden Daten. D.h. wenn ich drei BYTE an die SPS gesendet habe, dann kam als Information der Wert "3" an. War die Anzahl der zu sendenden BYTE 8, so war die ankommende Information "8".
    Ich finde das alles schon äußerst merkwürdig. Hat jemand noch Ideen und Anregungen, was man ausprobieren kann oder welche Software dazu geeignet wäre.

    Vielen Dank vorab für die Hilfe
    Zitieren Zitieren ILC 150 ETH mit AVR NET IO via Ethernet verbinden  

  2. #2
    Registriert seit
    08.09.2010
    Ort
    Blomberg
    Beiträge
    420
    Danke
    1
    Erhielt 66 Danke für 63 Beiträge

    Standard

    Hallo ZiTho,

    wenn du mit dem AVR NET IO über offene TCP/IP Kommunikation die Daten austauschen möchtest, so muss im ersten Wort der Daten die Länge der nachfolgenden Nutzdaten übermittelt werden.

    Als Beispiel: Du hast ein Bytearray, in dem deine Nutzdaten enthalten sind (z.B. arr_b_0_20 : ARRAY [0..20] OF Byte; ) so würde in den ersten beiden Bytes keine Nutzdaten enthalten sein, sondern z.B. eine 18dez für die folgenden 18 Byte.
    Am einfachsten ist es, wenn du dir eine neue Struktur anlegst, in der du als erstes Element eine Variable vom Typ INT nutzt. In dieser kannst du dann später direkt die Länge angeben. Als zweites Element würdest du dann die Datenstruktur anlegen (z.B. String, falls deine Gegenstelle einen String versteht)
    Die Struktur sehe dann wie folgt aus:

    TYPE
    SendeDaten :
    STRUCT
    LaengeDerNutzdaten : INT;
    Nutzdaten : STRING;
    END_STRUCT;
    END_TYPE

    Die Länge deines STRINGs kannst du über den Baustein LEN ermitteln.

    Wenn du weitere Fragen zu der IP-Kommunikation hast, kannst du dich auch gerne auf unserer Hotline melden.

    Mit freundlichen Grüßen
    Ulrich Kleinschmidt
    PHOENIX CONTACT Deutschland GmbH
    Hotline: 05281-946-2888
    automation-service@phoenixcontact.com
    www.phoenixcontact.de

  3. Folgender Benutzer sagt Danke zu Phoenix Contact für den nützlichen Beitrag:

    RobiHerb (13.06.2013)

  4. #3
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.293
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    Also beim FB IP_USEND musste ich noch keine Länge angeben in den ersten zwei Bytes. Nur bei IP_URCV steht die Anzahl der Bytes drin.
    Und das CRLF mach ich immer so:
    Code:
    text := CONCAT(text, BYTE_TO_STRING(BYTE#16#0D,'%c'));
    text := CONCAT(text, BYTE_TO_STRING(BYTE#16#0A,'%c'));
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  5. #4
    Registriert seit
    08.09.2010
    Ort
    Blomberg
    Beiträge
    420
    Danke
    1
    Erhielt 66 Danke für 63 Beiträge

    Standard

    Hallo Mobi,

    wenn du die Bausteine aus unserer Firmware Bibliothek verwendest und nicht die 61131-5 Kommunikation nutzt, so musst du in den ersten zwei Bytes defenitiv die Längenangabe der nachfolgenden Bytes angeben.

    Ob du die 61131-5 Kommunikation verwendest, erkennst du an deinem Partner-String vom IP_Connect Baustein. Wenn dort ein ACTIVE bzw PASSIVE angelegt ist, so verwendest du entweder TCP/IP oder UDP. In diesem Fall muss die Längenangabe vorausgestellt werden.

    Mit freundlichen Grüßen
    Ulrich Kleinschmidt
    PHOENIX CONTACT Deutschland GmbH
    Hotline: 05281-946-2888
    automation-service@phoenixcontact.com
    www.phoenixcontact.de

  6. #5
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.293
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    Ach sorry, hast ja recht. Hatte es verwechselt mit der anderen Seite. Wenn man jetzt was zur ILC sendet braucht man die Länge nicht angeben. Wie z.B. vom AVR aus.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  7. #6
    ZiTho ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.01.2013
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Ulrich,
    ich möchte mich noch einmal sehr herzlich für Deine Hilfe bedanken. Nun funktioniert es hervorragend. Habe auch schon einen FB erstellt, der mir die Daten ausliest.
    Ich hätte da nur noch eine Frage. Wenn ich jetzt den Baustein mehrfach aufrufe, d. h. ich habe beispielsweise 5 AVR angeschlossen und bau 5 verschiedene Verbindungen auf, wird dann nicht die Zykluszeit zu groß? Gibt es Möglichkeiten so einen Prozess - TCP/IP-Verbindung - auch als EVENT_TASK auszuführen?
    Vielen Dank für die Unterstützung!

  8. #7
    Registriert seit
    08.09.2010
    Ort
    Blomberg
    Beiträge
    420
    Danke
    1
    Erhielt 66 Danke für 63 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo ZiTho,

    du wirst durch 5 aufrechterhaltene TCP/IP Verbindungen keine Probleme mit der Zykluszeit deiner ILC bekommen. Das senden selber gibst du ja über den REQ-Eingang des IP_USEND Basuteins vor.

    Die ILC 1xx können leider keine EVENT-Tasks verarbeiten. Wenn du deinen Baustein aber nur zu bestimmten Events aufrufen möchtest, so kannst du bei deinem Baustein eine vorgeschaltete IF_Schleife einbauen. dies könnte dann in ST wie folgt aussehen:

    IF IN_xActivate THEN
    ...
    ...
    ...
    END_IF;

    Bei weiteren Fragen kannst du dich auch gerne bei uns auf der Hotline melden.

    Mit freundlichen Grüßen
    Ulrich Kleinschmidt
    PHOENIX CONTACT Deutschland GmbH
    Hotline: 05281-946-2888
    automation-service@phoenixcontact.com
    www.phoenixcontact.de

Ähnliche Themen

  1. ILC 150 ETH Webserver
    Von Portisch im Forum Sonstige Steuerungen
    Antworten: 205
    Letzter Beitrag: 29.07.2013, 13:43
  2. Verkaufe ILC 150 ETH Starterkit
    Von timmichen im Forum Suche - Biete
    Antworten: 0
    Letzter Beitrag: 26.08.2012, 13:33
  3. ILC 150 ETH an Fritzbox 7270
    Von Mobi im Forum Sonstige Steuerungen
    Antworten: 3
    Letzter Beitrag: 19.05.2011, 13:36
  4. Phoenix ILC 150 ETH + Stromüberwachung
    Von underxpressure im Forum PHOENIX CONTACT
    Antworten: 11
    Letzter Beitrag: 03.12.2010, 13:48
  5. ILC 150 ETH mit Webvisit+Ipad
    Von simonhu im Forum Sonstige Steuerungen
    Antworten: 8
    Letzter Beitrag: 06.10.2010, 09:06

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •