Beckhoff: Probleme mit azyklischem Datenaustausch

haki_007

New member
Beiträge
2
Punkte Reaktionen
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Sehr geehrte Damen und Herren,

ich bin neu in die Umgebung von Twincat 3 eingestiegen und zurzeit beschäftige ich mich mit dem zyklischen und azyklischem Datenaustausch zwischen einem Profinet-RT-Controller-Master-Klemme (EL6631) und einem Slave. Der zyklische Datenaustausch funktioniert reibungslos, jedoch habe ich Probleme bei der Einrichtung des azyklischen Datenaustausches.

Auf der Seite von Beckhoff habe ich entnommen, dass der ADS-Baustein "ADSRDWRT" verwendet werden soll. Um auf die Gewünschten Parameter des Slaves zuzugreifen, muss man auch die Daten: Slot, Subslot und Index eingeben. Leider ist dies auf der Seite von Beckhoff nicht erkenntlich, wie diese Daten in den Baustein eingebunden werden sollen.
Außerdem wird auf der Seite noch ein Aufbau eines Recorddaten Frames erklärt, indem die ganzen benötigten Eingabedaten sind, jedoch wird nicht erwähnt wie das Frame und der ADS-Baustein verknüpft werden sollen.

Ich wäre für jeden Tipp sehr dankbar.
 

Guga

Well-known member
Beiträge
915
Punkte Reaktionen
252
Da hast du dir aber ein nettes Einsteigerthema gesucht. Also est mal die Doku der EL6631 lesen :) bzw. parallel lesen. Aber das hast du ja schon getan wie man es aus der Frage herauslesen kann.
Ich habe es vor vielen Jahren projektiert und mir Notizen gemacht. Ist schon wieder länger her und ich müsste mich auch etwas länger darüberbeugen um es erklären zu können. Allerdings ist ProfiNet auch noch nie mein täglich Brot gewesen.

Viel Spaß dabei.

===========

Verschicken per ADS, beantworten per Response/Indication (anderes Thema)

Verschicken per ADSRDWRT = Lesen/Schreiben

AMSNetID: Die AMSNetID des PROFINET Controllers
PORT: Port Nummer des Device -> siehe ADS-Reiter des ProfiNet-Gerätes = (ID + 0x1000)
b.jpg

Index GROUP: 0x0000_F823
Index OFFSET: 0x0000_0000
a.jpg

Struktur in TC2-Bibliothek TcProfiNetDiag.lib nutzen (weiss gerade nicht ob bzw. was die entsprechende Lib in TC3 ist)

Die kursiv und kleiner hinterlegten Daten sind Record-Daten die z.B. auch im Siemens-Baustein gesetzt werden müssen

Datenaufbau des Telegramms im TwinCAT
====
PROFINET...............................................................................................|Daten.......
str_PN_RecordDataM.........................................................................|Daten....................
nRW..|nNr..|nAPI.......|nSlot|nSubS|nInde|nLen.|nTran|nLenA|Obj |SI| |lenWrite...|Value
====

TYPE str_PN_RecordDataM :
STRUCT
nRW : WORD; (* 0: READ/ 1: WRITE -> in Siemens gibt es entsprechend zwei Bausteine, da ADSRDWRITE differenzierung über hier *)
nNrOfAR : WORD;
nAPI : DWORD; (* in der Regel 0 *), im XAE sichtbar (siehe Screenshot unten unter APINummer) *)
nSlot : WORD;
nSubSlot : WORD;
nIndex : WORD; (* definiert die Funktion *)
0xAFF0 : I&M Funktion 0
0x200F : EK9300 Single CoE Access

nLenght : WORD;
(* Lesen: „0“ verwendet die maximalen Buffergröße, ≠ 0 wird die definierte Länge *)
(* Schreiben: Anzahl der Bytes die ab bzw. nach dem „nReserved bzw. im Daten-Bereich sind*)
nTransSeq : WORD; (* Beginnend mit 0x01, inkrementieren. Bestimmt die Transfer Sequenz bei parallel abgeschickten Records *)
nLenOfAlign=nReserved : WORD; (* LeerByte für Alignment. Nicht zu projektieren *)

END_STRUCT
END_TYPE
c.jpg
 
OP
H

haki_007

New member
Beiträge
2
Punkte Reaktionen
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Lieber Guga,
vielen dank für deine Antwort. Ich konnte deinen Notizen gut folgen, jedoch habe ich immer noch Schwierigkeiten. Das Telegramm habe ich erstellt wie es beschrieben wurde. Nun besteht die Schwierigkeit das Telegramm zu verschicken. Zum verschicken des Telegrammes habe ich den Funktionsbaustein ADSReadWriteIndication benutzt, aber es hat nicht funktioniert.
Könntest du mir bitte ein Tipp geben wie ich mit dem Telegramm umgehen soll?
 

Guga

Well-known member
Beiträge
915
Punkte Reaktionen
252
Nix Indication... Das braucht man wenn man "Server" in der SPS spielen muss was hier nicht der Fall ist.
TC2_System Bibliothek und hier ADSRDWRT oder ADSRDWRTEX
 
Oben