ADS: Zugriff auf viele Klemmen

Macbeth

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

ich habe hier ein Problem...

Nehmen wir an ich hätte eine Anlage mit vielen Klemmen, die immer wieder umgesteckt werden.

PC mit Profibus-Harte
BK3100 Profibus-Koppler)
... jede Menge KLxxxx ...

Ziel ist es, mit einer externen Anwendung über TwinCAT IO bzw ADS auf die Variablen zugreifen zu können.

Ich habe ein paar Möglchkeiten durchgespielt und keine ist richtig praktisch.

zB.

1. Zugriff per ADS dll direkt auf die Klemmen (ohne Verlinkung auf Variablen eines zusätzlichen Tasks), mit AdsSyncReadReq.
-> damit kann ich immer nur einen Wert lesen/schreiben. Unglaublich langsam bei vielen Klemmen. Ich kann aber nicht zB alle DIs auf einmal lesen. (Oder geht das doch? Hab ich nicht geschafft. Man sollte ja denken, dass die DIs nur im Offset verscheiden sind und daher auch Byte-weise ausgelesen werden könnten... geht aber bei mir nicht)

2. Man legt einen zusätzlichen Task an, da generiert man ein Array und mappt die EAs per Hand...
-> Dieses Array kann ich dann mit einem einzigen Zugriff auslesen. Top. Aber alle Klemmen per Hand zu verknüpfen gibt GrauesHarr++.

Hat jemand noch eine andere Lösung?
Gibt es eine (einfache) Möglichkeit, mit TwinCAT IO alle E/A-Werte automatisch in ein Array zu mappen? Kleines Skript oder so?

Ich hätte auch gerne einfach das Prozessabbild geschnappt und dann in meiner App zerlegt, aber da komme ich nicht ran (Port? iGrp? Offset?).

Ich würde mich freuen, wenn einer von den Profis hier im Forum Licht in meinen Nebel bringen würde!!!
 
Bau dir dein Prozeßabbild der Busstation mit deiner App, so dass deine App dynamisch auf Veränderungen reagiert.

Die meiste Information bekommst du aus C:\TwinCAT\Io\TcTerminals.xml für die Klemmen und Koppler!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hast du im SystemManager für die IO auch die Eigenschaft "Symbole erzeugen" eingeschaltet?

Kannst auch über Ring3 die Variablen in eine C/C++ Task mappen (R3IO im InfoSys).

Kannst dir eine Task anlegen, in dem du die Variablen mappst und dann direkt von dort per ADS abholst.

In ADS gibt es auch Summen-Kommandos um mehrere Variablen mit einem Aufruf auszulesen.
 
Zurück
Oben