# direkter Zugriff auf SDO's



## Judge (6 September 2010)

hallo,

ich habe ein projekt übernommen und es stellen sich einige fragen.

wir  verwenden ein hilscher ethercat slave (comx-ca-re) welches das canopen  protokoll verwendet. als master wird twincat verwendet. die  kommunikation funktioniert soweit, die nötigen sdo's sind angelegt und  über die pdo's lassen sich daten hin und her schicken. in twincat werden  alle sdo's angezeigt.

ich habe nun begonnen via labview auf die daten in der pdo zuzugreifen, das funktioniert soweit auch.

nun  würde ich gern wissen ob es eine möglichkeit gibt, via labview auch auf  die sdo's direkt zuzugreifen, die nicht in die pdo's gemapped sind.


----------



## Judge (15 September 2010)

ich bins mal wieder.

ich hab den SDO zugriff jetzt über die ethercat library von twincat plc gelöst. und zwar verwende ich die funktionen FB_EcCoeSdoRead und FB_EcCoeSdoWrite. die kommunikation funktioniert schonmal.

nun hab ich eine frage dazu, wenn die funktion (write) einmal aufgerufen wurde, lässt sie sich nichtmehr verwenden, es wird also mit der funktion nur einmal gesendet, beim erneuten aufruf passiert nichts. ich vermute das man die funktion irgendwie zurücksetzen muss, weiss da einer was?


----------



## bits'bytes (15 September 2010)

Hallo,
ich denke da bist du sicher auf dem richtigen Weg. Kenne das leider nur bei B&R und da ist es tatsächlich so, dass nach einem SDO Read/Write ein spezieller Aufruf gemacht werden muss, damit der SDO Kanal wieder frei wird. Wie der in deinem System heißt, kann ich dir aber leider nicht sagen...

bg
bb


----------



## Judge (16 September 2010)

das komische ist, wenn ich mehere funktionen in den lokalen variablen deklariere (Write1, Write2 ...), kann ich pro deklaration einen wert senden.

macht da jede deklaration einen kanal auf?


----------



## bits'bytes (16 September 2010)

Hallo,
für mich siehts so aus. Ich habe es genau anders herum verwendet. Einen globalen SDO-Read und Write. Also gings bei mir nur einmal, egal obs die selbe Variable war oder eine andere. Mein "Reset" Aufruf war jedoch in der Doku schön beschrieben und das Problem war schnell behoben...

Aber wie gesagt, ist bei B&R. Was sagt deine Helpline dazu, die müssten das aus dem FF wissen was los ist ... ?

bg
bb


----------



## Judge (21 September 2010)

das zurücksetzen der funktion funktioniert über die eingangsvariable bExecute, am besten man setzt sie direkt im funktionsaufruf auf FALSE, dann klappts auch mit den nachbarn.

in einem datenblatt zu einem ethercat steuerbaren motor hab ich das ganze gefunden (Beckhoff woll ich nicht nerven, da wir derzeit nur die 30 Tage Testversion verwenden, da ist Telefonsupport wahrscheinlich zu viel verlangt).

in dem datenblatt wirds wie folgt gemacht:

man fragt das Busy Flag der funktion ab, wenn es FALSE ist, stellt man bExecute auf TRUE, im ELSE zweig ist dann der funktionsaufruf bei dem bExecute gleich wieder FALSE gesetzt wird.


----------



## bits'bytes (21 September 2010)

Judge schrieb:


> ... (Beckhoff woll ich nicht nerven, da wir derzeit nur die 30 Tage Testversion verwenden, da ist Telefonsupport wahrscheinlich zu viel verlangt). ....



Halli-Lo,
gerade in der Testphase wären sie wahrscheinlich wirklich nett, da sie ja einen neuen Kunden gewinnen möchten (würde ich mir denken)... 

bg
bb


----------

