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

Ergebnis 1 bis 6 von 6

Thema: AdsRead/AdsWrite BX9000

  1. #1
    Registriert seit
    25.01.2015
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich versuche zum Einstieg in die ADS-Kommunikation von einer BX9000 aus ein MB100 einer CX9010 zu lesen oder zu beschreiben. Leider bekomme ich den "AdsError 1817"(timeout), den ich mir auch nach meinen Recherchen nicht erklären kann. Die umgekehrte Konstallation (AdsRead/Write) von der CX9010 auf die BX9000 hat reibungslos funktioniert. Ich verwende TwinCat Version 2.11. Habt ihr eine Idee?

    BX9000
    -------------------------------------------------------------------------
    PROGRAM MAIN
    VAR
    var1 : BOOL;
    fb_write:ADSREAD;
    b_start_write:BOOL;
    END_VAR

    fb_write(
    NETID:='5.12.228.252.1.1' ,
    PORT:= 801,
    IDXGRP:=16#4020 ,
    IDXOFFS:=100 ,
    LEN:=SIZEOF(var1) ,
    DESTADDR:=ADR(var1) ,
    READ:=b_start_write ,
    TMOUT:=t#5s ,
    BUSY=> ,
    ERR=> ,
    ERRID=> );

    CX9000
    -------------------------------------------------------------------------
    PROGRAM MAIN
    VAR
    wert1 AT%MB100 : BOOL;
    END_VAR

    Grüße
    Zitieren Zitieren AdsRead/AdsWrite BX9000  

  2. #2
    Registriert seit
    04.11.2014
    Beiträge
    139
    Danke
    1
    Erhielt 25 Danke für 23 Beiträge

    Standard

    Morgen,

    ist die ADS-Route sauber eingetragen?

    Grüße

  3. #3
    Registriert seit
    10.08.2012
    Beiträge
    245
    Danke
    0
    Erhielt 70 Danke für 66 Beiträge

    Standard

    Ich tippe ebenfalls auf die route.
    Ein BC besitzt keinen Routeneintrag. Ohne eingetragene Route deshalb:
    -> CX nach BC funktioniert immer
    -> BC nach CX geht nicht.

  4. #4
    Registriert seit
    01.04.2009
    Beiträge
    143
    Danke
    0
    Erhielt 30 Danke für 29 Beiträge

    Standard

    Die AMS Net ID vom CX muss IP Adresse + 1.1 sein oder du musst beim BX/BC mit dem Baustein AdsAddRoutingInfo dem BX klar machen das die AMS Net ID nicht der IP Adresse.1.1 entspricht. Den Baustein findest du in der TcSystemBX.lbx Lib.
    Beispiel:
    AdsAddRoutingInfo:AdsAddRoutingInfo;
    IP: STRING := '172.17.40.45'; (* IP from the CX device *)

    AdsAddRoutingInfo(
    NETID:='5.19.76.23.1.1' , (* AMS NET ID from the CX *)
    CHANNEL:='TCP' ,
    PPARA:=ADR(IP) ,
    START:=TRUE ,
    BUSY=> ,
    ERR=> ,
    ERRID=> );
    IF NOT AdsAddRoutingInfo.BUSY THEN
    IF NOT AdsAddRoutingInfo.ERR THEN
    ;
    END_IF
    AdsAddRoutingInfo(START:=FALSE);
    END_IF

    So müsste es dann gehen! Gruß

  5. #5
    CX0CE4FC ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.01.2015
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    ertmal vielan Dank für eure Antworten. Ich habe daraufhin versucht die Route im Systemmanager hinzuzufügen (Abb1). Zusätzlich habe ich den Baustein "ADSAddRoutingInfo" ausprobiert.

    Alle Versuche endeten wieder im "Error1817". Spätestens durch "ADSAddRoutingInfo" muss er doch aber die richtige Route haben. Wenn ich bei der CX die Route vergessen habe kam außerdem auch "missing route"(dec7) als Fehler.


    Hier mien aktueller Code:

    AdsAddRoutingInfo(
    NETID:='5.12.228.252.1.1' ,
    CHANNEL:='TCP' ,
    PPARA:=ADR(IP) ,
    START:=b_start_change_rout ,
    BUSY=> ,
    ERR=> ,
    ERRID=> );
    IF NOT AdsAddRoutingInfo.BUSY THEN
    IF NOT AdsAddRoutingInfo.ERR THEN
    ;
    END_IF
    b_start_change_rout:=FALSE;
    END_IF

    fb_read(
    NETID:='5.12.228.252.1.1' ,
    PORT:= 801,
    IDXGRP:=16#4020 ,
    IDXOFFS:=100 ,
    LEN:=SIZEOF(var1) ,
    DESTADDR:=ADR(var1) ,
    READ:=b_start_read ,
    TMOUT:=t#5s ,
    BUSY=> ,
    ERR=> ,
    ERRID=> );


    GrüßeAbb1.jpg

  6. #6
    Registriert seit
    01.04.2009
    Beiträge
    143
    Danke
    0
    Erhielt 30 Danke für 29 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Im CX muss die Route eingetragen sein zum BX, sonst blockt er das. Im BX musst du die AMSNet ID und IP Adresse dem BX bekannt machen damit er das ADS Telegramm mit der richtigen IP Adresse rausschickt. Das machst du mit dem Baustein AdsAddRoutingInfo.
    Am einfachsten ist es du stellst auf dem CX eine AMS Net ID ein die der IP Adresse entspricht und um ".1.1" erweitert wurde. Dann musst du nur die Route im CX eintragen und der Rest geht von alleine da der BC/BX beim ADS READ oder Write davon ausgeht das AMS Net ID gleich der IP Adresse ist +'.1.1'.
    Wenn ADS Read oder Write vom CX zum BC/BX funktioniert dann ist die Route auf dem CX schon mal richtig eingestellt. Dann sollte mit den Hinweis aus der vorherigen Antwort auch die andere Richtung gehen...

Ähnliche Themen

  1. Beckhoff Kommunikation "ADSREAD" CX9020 -> BC9000
    Von Toddy80 im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 17.10.2014, 05:15
  2. BC9000 zu BX9000 und EnOcean!
    Von Codesys_123 im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 23.11.2011, 14:50
  3. Beckhoff BX9000
    Von snowbda im Forum Suche - Biete
    Antworten: 0
    Letzter Beitrag: 12.09.2010, 23:44
  4. [ ADSREAD ] Erste Schritte in ADS
    Von caret im Forum CODESYS und IEC61131
    Antworten: 11
    Letzter Beitrag: 25.02.2010, 18:12
  5. BX9000 Display Anzeige Programmieren.
    Von Der_Papst im Forum CODESYS und IEC61131
    Antworten: 6
    Letzter Beitrag: 29.10.2009, 10:17

Lesezeichen

Berechtigungen

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