TwinCat3 ADS-Command

FloWe

Level-2
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich nutze TwinCat3 und möchte einen ADS Command eines ProfiNet Gerätes testen.
Dazu wollte ich über das Gerät im Projektmanager gehen.
Ich habe das Beispiel aus der Beckhoff Seite verwendet (https://infosys.beckhoff.com/index....html/pn_azyklische_kommunikation.htm&id=29680)
und damit versucht die GUI auszufüllen.

Leider erhalte ich immer den ADS-Error 702 (DeviceInvalidGroup)

1642598768080.png

Sieht jemand was ich hier falsch mache?

702 Bedeutet Ja falsche Idx Gruppe, ich habe mal die Reihenfolge verändert: 0xF823_0000
und erhalte daraufhin 723

Vielen Dank
Florian
 
Zuletzt bearbeitet:
Probier das mal so und gib als Länge (Read-Length) 200 ein er sollte dir dann die wirkliche Länge zurück geben. Um auf den Read Wriet Buttom drücken...und der PN Teilnehmer, also das Device muss ich im Datenaustausch befinden.
1642766554751.png
 
Hallo, ich hätte zu dem Thema noch eine Frage.
Ich benötige Index-Group und Index-Offset zu einem Befehl.
Ich habe die API, den Slot, Subslot sowie den Index.
Ich bin mir aber nicht im klaren wie ich auf Group und Offset komme.

Kann ich das irgendwie auslesen oder in der Oberfläche generieren?
 
Der ADS Group und Offset sind bei einem PN Record Frame konstanten...ich glaube nicht das du das meinst...oder?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bitte einmal konkret: Von welchem Device? Was
Record: Ap, Slot, Subslot und Index.

(Index)group und (Index)Offset hört sich nach ADS an. Wenn du wie ich von oben vermute aus TwinCAT heraus arbeitest musst du die ADS-Adresse + Indexgruppe/Offset am ADS-Baustein angeben und im Lese bzw. Schreibspeicher stehen dann die Record-Daten.
Also eigentlich so wie es oben im Screenshot steht.
 
Es geht um ein ProfiNet Gerät, ich möchte per ADS auf die API 0x0003d00 Slot 0x0001 Subslot 0x0001 und Index 0x1001 zugreifen. Am besten aus der IDE, wie oben zu sehen. Ich habe mir folgende Write-Data zusammengebaut: 00 00 00 00 00 00 3d 00 00 01 00 01 10 01 00 00 00 00 00 00 Meine Read-Length beträgt 2 Byte. Jetzt war ich mir nicht ganz im klaren, wie sich die Index-Group und das Offset für den Befehl zusammen bauen muss.
 
Ich sitz auf der Leitung.
Im Screenshot oben nutzt du einen ADS-Aufruf mit IndexGroup 0xF823 und IndexOffset 0x0 um dann einen Record des ProfiNet-Gerätes zuzugreifen. Damit sind doch die beiden Werte definiert.
Auf was beziehst du dich denn jetzt?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es muss immer ein ADS ReadWrite sein. Ich glaube du musst deine Daten noch drehen wenn du es über den ADS Karteireiter machst...
00 00 00 00 00 00 3d 00 01 00 01 00 01 10 00 00 00 00 00 00
Am besten prüfst du das mal mit wireshark was du da sendest ... Filter einfach auf dcerpc
Das Telegramm macht auf jedenfall ein Read weil die ersten beiden Bytes bei dir 00 00 sind. Sonst müsste ja auch am Ende noch eine Länge und die Daten kommen...
Wie schon gesagt sind die ADS Group und Offset hier immer gleich Group = 0xF823 und Offset 0
 
Zurück
Oben