INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Parameter auf Frequenzumrichter mittels NI CanOpen Library schreiben



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

25.06.2010, 15:30 (Dieser Beitrag wurde zuletzt bearbeitet: 25.06.2010 16:11 von jg.)
Beitrag #1

suamikim Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Feb 2006

2009
2006
de

4060
Oesterreich
Parameter auf Frequenzumrichter mittels NI CanOpen Library schreiben
Hallo zusammen,

ich stehe gerade vor einem riesigen Problem und weiß nicht mehr weiter:

Ich muss ua. gewisse Parameter eines Frenquenzumrichters der Firma Schneider Electric (pDrive MX Pro 4V) mittels Can-Bus beschreiben bzw. umstellen.

Das Manual des FU's sagt mir dabei zum Protokoll folgendes:

Der Schreibvorgang sieht prinzipiell folgendermaßen aus:
SDO Request schreiben (Request Code, der sagt, dass Parameter geschrieben werden, zu schreibende Parameter, ...) -> SDO Response erhalten (geschriebene Daten verivizieren)

Der Lesevorgang:
SDO Request schreiben (Request Code, der sagt, dass Parameter gelesen werden) -> SDO Response erhalten (angeforderte Daten)

Das heißt, Lese- & Schreibvorgang unterscheiden sich eigentlich nur durch den Request-Code im 1. Packet & den Daten.

Die Telegramme SDO Request & Response sollten dabei folgendermaßen aussehen:
   

Nun stehen mir in der CANOpen Library von NI ja die beiden VI's "CANopen SDO Write Object" & "CANOpen SDO Read Object" zur Verfügung. Soweit, so gut.

Meine 1. Frage:
Das lesen der Parameter mittels "SDO Read Object" funktioniert soweit, obowhl ich ja die Normierung (Request schicken -> Response erhalten) eigentlich nicht einhalte.
Ich rufe lediglich das VI "CANopen SDO Read Object" mit den entsprechenden Parametern auf und erhalte von diesem als Ausgang meine Daten.
Meine nun: Ist das Protokoll vom obigem Bild CAN-Standard und wird intern vom SDO Read Object so eingehalten (also intern 1 Packet verschicken und danach 1 erhalten)?
Wenn nicht verstehe ich nicht ganz, wie ich überhaupt die richtigen Daten erhalte, da ich dem VI zB. den im Bild ersichtlichen "Request code" gar nicht mitteile (nicht mitteilen kann...).

Meine 2. Frage:
Das schreiben schlägt bei mir immer fehl. Der Completion Code hat dabei immer die Nummer 134217728 und "CANopen SDO Completion Code to String.vi" sagt mit, dass es sich dabei um den Fehler COE_SDO_GENERAL (General error) handelt. Hat irgendjemand eine genauere Beschreibung zu diesem Fehler?
Auch hier verstehe ich nicht ganz, wie ich die Daten nun genau schicken soll:
Eingangsobjekte hab ich folgende zur Verfügung:
- SDO object in, object index, object sub-index (sind soweit klar und passen auch sicher, da ich mit den selben Parametern/Objekten die Daten erfolgreich lesen kann)
- data:
Sind das die reinen Rohdaten (Byte 4 - 7 im Bild oben) oder stellt das mein ganzes Telegramm dar (also Request code, Objekt index, Sub-Index & 4 Daten-Bytes)?
Zweiteres wäre eher unlogisch, da sonst die Eingänge für object index und sub-index ja nicht nötig wären, allerdings stellt sich wieder die Frage, wie ich im 1. Fall meinen Request code in die Daten packen müsste/kann...

Hab jedenfalls schon beides in vielen verschiedenen Varianten versucht und gelange immer wieder zum oben genannten "General error".

Wäre wirklich sehr dankbar, wenn mir hier irgendwer speziell zum 2. Punkt ein wenig Hilfestellung oder Anregungen geben könnte. Der 1. Punkt würde mich zwar interessieren, ist aber nicht so wichtig, da es ja soweit funktioniert...

Danke, mfg

mik
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
25.06.2010, 16:11
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Parameter auf Frequenzumrichter mittels NI CanOpen Library schreiben
Offtopic2
Bitte LVF-Regeln beachten. Anhänge hier im Forum hochladen. Danke.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.06.2010, 16:30
Beitrag #3

suamikim Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Feb 2006

2009
2006
de

4060
Oesterreich
Parameter auf Frequenzumrichter mittels NI CanOpen Library schreiben
Sorry, wurde mir eigentlich schonmal gesagt, da es aber schon länger her ist, dass ich in LabVIEW aktiv war hab ich das auch schon wieder vergessen Rolleyes
Da du den Beitrag editiert hast kann ich ihn nun anscheinend nicht mehr editieren und muss mich dafür schämen, dass ich verivizieren geschrieben habe...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.06.2010, 19:07
Beitrag #4

IchSelbst Online
LVF-Guru
*****


Beiträge: 3.693
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Parameter auf Frequenzumrichter mittels NI CanOpen Library schreiben
Ich hab bisher nur mit PDO's gearbeitet. SDO's sind aber wohl genauso einfach.

Es sollte auch bei SDO's ausreichend sein, einen einfachen "SDO Read" und einen einfachen "SDO Write" zu machen. Das ganze Management mit dem Response und auf Request warten etc. macht alles das CANOpen-Modul. Dass bei "SDO Read" alles so einfach geht (Frage 1) ist also richtig.

Warum das Schreiben von Daten nicht klappt, kann ich aus der Ferne ohne genaue Information nicht sagen. Ich vermute mal, dass die Daten im SDO-Paket (also die Bytes 4 bis 7 !) formal zwar richtig sind, aber inhaltlich falsch. Formal heißt, dass das Datenarray, das in SDO-Schreiben reingeht, aus vier (Byte 4 bis 7!) Stück U8 (Byte!) besteht. Inhaltlich heißt, dass der Wert, der übertragen werden soll, z.B. außerhalb eines Bereiches liegt. (Beispiel: Eine Frequenz im Bereich 0 bis 10000 kann gesetzt werden. Würde aus dem U8-Array hervor gehen, dass die Frequenz 30000 ist, wäre der Inhalt falsch).

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.06.2010, 07:41 (Dieser Beitrag wurde zuletzt bearbeitet: 27.06.2010 07:42 von suamikim.)
Beitrag #5

suamikim Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Feb 2006

2009
2006
de

4060
Oesterreich
Parameter auf Frequenzumrichter mittels NI CanOpen Library schreiben
' schrieb:Ich vermute mal, dass die Daten im SDO-Paket (also die Bytes 4 bis 7 !) formal zwar richtig sind, aber inhaltlich falsch. Formal heißt, dass das Datenarray, das in SDO-Schreiben reingeht, aus vier (Byte 4 bis 7!) Stück U8 (Byte!) besteht. Inhaltlich heißt, dass der Wert, der übertragen werden soll, z.B. außerhalb eines Bereiches liegt. (Beispiel: Eine Frequenz im Bereich 0 bis 10000 kann gesetzt werden. Würde aus dem U8-Array hervor gehen, dass die Frequenz 30000 ist, wäre der Inhalt falsch).

Danke für die Anregung aber ich denke ausschließen zu können, dass die Daten inhaltlich falsch sind. Hab mittlerweile auch schon mit dem Wert 0 (also Byte 4 - 7 = 0) getestet, um zum einen genau diese Geschichte (zulässiger Wertebereich) ausschließen zu können (die Parameter erlauben lt. Doku einen Wert von 0) und zum anderen sicherzustellen, dass eben kein formaler Fehler vorliegt (vertauschen von MSB & LSB, Fehler beim erstellen des Datenarrays, ...).

Übrigens denke ich, dass mir das SDO Write mittels des Completion Code einen aussagekräftigeren Fehler zurückliefern würde, wenn es sich um so eine Sache wie den falschen Wertebereich handeln würde. Wenn ich zB. eine nicht vorhandene Index-Subindex-Kombi übergebe kriege ich eine Fehlermeldung, die genau das sagt (sinngemäß, "Index unbekannt")...

Dabei fällt mir gerade ein:
Beim falschen Index-Paar liefert mir nur das SDO Read den aussagekräftigen Fehler ("Index unbekannt"). Das SDO Write liefert trotzdem den "General error".
Riecht doch ein wenig nach einem Bug...

Naja, mal schaun, was der NI-Tel-Support am Mo zu sagen hat.

danke, lg

ps.:
' schrieb:Warum das Schreiben von Daten nicht klappt, kann ich aus der Ferne ohne genaue Information nicht sagen.
Welche Daten könnte ich dir noch zukommen lassen, mit denen du vll etwas anfangen könntest? Werde später noch ein Bild meines VI's hier reinstellen...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.06.2010, 13:26 (Dieser Beitrag wurde zuletzt bearbeitet: 27.06.2010 13:29 von schrotti.)
Beitrag #6

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
Parameter auf Frequenzumrichter mittels NI CanOpen Library schreiben
Da liegt kein Bug vor, da bin ich mir ganz sicher. Du musst nur alles richtig verdrahten. Der Function Code wird automatisch gesetzt, den musst du nicht vorgeben. Bei Data übergibst du logischerweise ein Array mit maximal 4 Byte.

Edit: Das VI oder zumindest ein Bild davon wäre zur Fehlersuche ungemein hilfreich.

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.06.2010, 09:56 (Dieser Beitrag wurde zuletzt bearbeitet: 28.06.2010 10:04 von jg.)
Beitrag #7

suamikim Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Feb 2006

2009
2006
de

4060
Oesterreich
Parameter auf Frequenzumrichter mittels NI CanOpen Library schreiben
Etwas später als eigentlich gedacht, aber doch: hier noch ein Test-VI mit eingeschränkter Funktionalität (samt Screenshot dessen), welches den Fehler ziemlich einschränken sollte...

Noch was: Meine Profilangaben stimmen nicht mehr ganz: Aktuell arbeite ich nicht mehr mit LabVIEW Version 7.1, sondern mit LabVIEW 2009.

   
Lv09_img2
Sonstige .vi  Parameter_Write_Test.vi (Größe: 47,85 KB / Downloads: 264)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.06.2010, 17:17
Beitrag #8

IchSelbst Online
LVF-Guru
*****


Beiträge: 3.693
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Parameter auf Frequenzumrichter mittels NI CanOpen Library schreiben
Was genaues kann ich nicht sagen. Aber:

Hast du denn die aktuelle CANOpen-Software?

Ich bin bisher immer so vorgegangen: [list]
[*]Interface Create<>
[*]Reset Node<>
[*]Stop remote none<>
[*]PDO create<>
[*]SDO create ??<>
[*]Start remote node
<>
[*]Jetzt erst Datenaustausch<>
[st]

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Frequenzumrichter el_pablone 3 5.102 13.10.2015 13:25
Letzter Beitrag: GerdW
Question Kommunikation mit einem Frequenzumrichter mit PROFIBUS DP RoboBurger 16 17.256 17.09.2014 15:06
Letzter Beitrag: GerdW
  CANopen mit NI-Industrial Communications for CANopen 1.0.x flasch 1 4.475 26.11.2013 07:54
Letzter Beitrag: Y-P
  Input Parameter is invalid dbuckl 3 4.185 01.10.2013 14:42
Letzter Beitrag: dbuckl
  CanOpen Netzwerk, VI schließen kalle 6 7.567 05.03.2012 20:25
Letzter Beitrag: schrotti
  Library mit VIs für LV 2009 YipYip 4 4.309 12.11.2010 08:16
Letzter Beitrag: jg

Gehe zu: