Ads read / write

mailmir

Level-1
Beiträge
75
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

Ich habe bisher immer Daten von einer SPS mit dem FB ADSREAD gelesen. Das hat auch prima funktioniert.
Da ich nun auch ein paar Daten zur anderen SPS schreiben möchte probiere ich gerade ein wenig mit dem FB ADSRDWRT.
Ich habe schon im Infosys von Beckhoff gesucht, aber kein Beispiel gefunden und daher ist noch ein Frage offen.

Es geht um die Kommunikation zwischen zwei Wohnungen. Hier ist jeweils ein CX9020-0111 von Beckhoff verbaut.
Bei meiner SPS die die ADS-Kommunikation erledigt habe ich eine 2 Strukturen (st_ADS_Top_11_Read und st_ADS_Top_11_Write)
Diese Strukturen habe ich instanziert und "füttere" sie mit Daten. Die ADS-Kommuikation soll zyklisch, alle 60 Sekunden bzw. bei
Datenänderung durchgeführt werden (kein Problem)
Bei der gegnerischen SPS habe ich ebenfalls 2 Strukturen mit gleichem Aufbau angelegt (st_ADS_Top_10_Read und st_ADS_Top_10_Write)
wobei die Struktur st_ADS_Top_10_Read natürlich der Struktur st_ADS_Top_11_Write und st_ADS_Top_10_Write natürlich der Struktur
st_ADS_Top_11_Read entspricht.
Die zu lesenden Daten der SPS_Top_11 stehen in der SPS_Top_11 im MB 8 (stADS_Write AT %MB8: st_ADS_Top_10_Write);

und nun meine Frage: Wie / Wo muss ich die Adresse für die zu schreibenden Daten definieren ?


Grüße vom Bodensee und DANKE schon mal für eure Hilfe . . .

=> Code-Ausschnitt <=
Code:
sADS_NetID := '192.168.1.11.1.1';


ADS_ReadWrite(
    NETID:= sADS_NetID,
    PORT:= 801,
    IDXGRP:= 16#4020,
    IDXOFFS:= 8,
    WRITELEN:= SIZEOF(ADS_Write_Daten_Top_11.stADS_Write),
    READLEN:= SIZEOF(ADS_Read_Daten_Top_11.stADS_Read),
    SRCADDR:= ADR(ADS_Write_Daten_Top_11.stADS_Write),
    DESTADDR:= ADR(ADS_Read_Daten_Top_11.stADS_Read),
    WRTRD:= TRUE,
    TMOUT:= T#5s,
    BUSY=> ,
    ERR=> ,
    ERRID=> );


    IF NOT  ADS_ReadWrite.BUSY  THEN
        ADS_ReadWrite(WRTRD:= FALSE);
        State:= State + 1 ;
    END_IF
 
Zuletzt bearbeitet:
Zurück
Oben