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 

Dieses Thema hat akzeptierte Lösungen:

Motorsteuerung K8097 mit DLL



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!

11.03.2014, 15:11
Beitrag #1

Scuba Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: May 2012

8.6
2012
DE



Motorsteuerung K8097 mit DLL
Hallo,

ich möchte einen Schrittmotor mit der Motorsteuerung K8097 von Velleman ansteuern http://www.velleman.eu/products/view/?id=386156
Mit der beigefügten Software von Vellemann klappt das auch super.
Nur möchte ich den Motor natürlich in LabView ansteuern. Also habe ich versucht die beigefügte DLL mit CLF Knoten einzubinden (Ich muss dazu sagen, dass ich erst vor 2 Tagen angefangen habe, mich in dieses Thema einzulesen, aber auch nach langer Hilfesuche komm ich grad keinen Schritt mehr weiter.)

In meinem Test VI versuch ich also einfache Funktionen aufzurufen. Mein größtes Problem dabei ist die Übergabe der richtigen Datentypen. Zum Beispiel haben viele Funtionen den Rückgabewert BOOL, welcher ja nicht einfach so konfiguriert werden kann. Daher weiß ich auch nicht ob die Funktion SMCConnect überhaupt richtig ausgeführt wurde. Ich kanns mir nur denken, da andere einfache Funktionen wie SMCGetInputs oderr SMCGetMotor die richtigen Werte für die Anzahl der Inputs und der Motoren ausspucken. Von der Karte zu lesen scheint also irgendwie zu klappen..

Aber leider bewegt sich der Motor bei Verwendung von SMCMove kein Stück.

Wenn es zu der DLL eine Headerdatei gäbe, könnte ich das natürlich mit diesem LabView Assistent versuchen. Aber die fehlt leider. Außerdem wurden auch 2 DLLs mitgeliefert. Einmal eine "Native DLL" mtrapi.dll und einmal diese MotorLibNET.dll zu der es auch eine Hilfsdatei gibt. In der letzteren DLL findet LabView aber irgednwie die Funktionen gar nicht.

Ich hab mir auch mal die Textdateien dieser DLLs angeschaut, da ich den Verdacht habe, dass ich eben einfach die falschen Datentypen übergebe. Daher verwende ich für die Motorsteuerung jetzt unsigned 32 bit integer, was ja dem DWORD aus dem Quelltext entsprechen sollte.

Also vielleicht könnt Ihr mir ja irgendwie helfen. Weiß grad nicht was ich noch versuchen könnte.

Gruß


Angehängte Datei(en)
8.5 .vi  Motor_Test.vi (Größe: 21,29 KB / Downloads: 397)

0.0 .dll  mtrapi32.dll (Größe: 3,44 MB / Downloads: 465)

0.0 .dll  MotorLibNET.dll (Größe: 5 KB / Downloads: 302)

0.0 .txt  mtrapi.txt (Größe: 4,01 KB / Downloads: 572)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.03.2014, 17:22
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Motorsteuerung K8097 mit DLL

Akzeptierte Lösung

(11.03.2014 15:11 )Scuba schrieb:  Hallo,

ich möchte einen Schrittmotor mit der Motorsteuerung K8097 von Velleman ansteuern http://www.velleman.eu/products/view/?id=386156
Mit der beigefügten Software von Vellemann klappt das auch super.
Nur möchte ich den Motor natürlich in LabView ansteuern. Also habe ich versucht die beigefügte DLL mit CLF Knoten einzubinden (Ich muss dazu sagen, dass ich erst vor 2 Tagen angefangen habe, mich in dieses Thema einzulesen, aber auch nach langer Hilfesuche komm ich grad keinen Schritt mehr weiter.)

In meinem Test VI versuch ich also einfache Funktionen aufzurufen. Mein größtes Problem dabei ist die Übergabe der richtigen Datentypen. Zum Beispiel haben viele Funtionen den Rückgabewert BOOL, welcher ja nicht einfach so konfiguriert werden kann. Daher weiß ich auch nicht ob die Funktion SMCConnect überhaupt richtig ausgeführt wurde. Ich kanns mir nur denken, da andere einfache Funktionen wie SMCGetInputs oderr SMCGetMotor die richtigen Werte für die Anzahl der Inputs und der Motoren ausspucken. Von der Karte zu lesen scheint also irgendwie zu klappen..

Aber leider bewegt sich der Motor bei Verwendung von SMCMove kein Stück.

Wenn es zu der DLL eine Headerdatei gäbe, könnte ich das natürlich mit diesem LabView Assistent versuchen. Aber die fehlt leider. Außerdem wurden auch 2 DLLs mitgeliefert. Einmal eine "Native DLL" mtrapi.dll und einmal diese MotorLibNET.dll zu der es auch eine Hilfsdatei gibt. In der letzteren DLL findet LabView aber irgednwie die Funktionen gar nicht.

Wie der Name schon sagt ist das keine normale DLL, sondern eine .Net Assembly. Die spricht man in LabVIEW nicht mit der Call Library Node an sondern mit der Create .Net Instance und dann der Property Node und der Method Node auf der zurückgegebenen Refnum.

BOOL ist ein Microsoft Datentyp und entspricht im Prinzip einem int32.

Aber wenn ich Dich wäre würde ich sicher die .Net assembly benützen, dann brauchst Du Dich nicht so um C typische Dinge zu bekümmern.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.03.2014, 09:19
Beitrag #3

Scuba Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: May 2012

8.6
2012
DE



RE: Motorsteuerung K8097 mit DLL
Vielen Dank für die schnelle Antwort. War mir bis jetzt noch gar nicht klar, dass es verschiedene Arten von DLLs gibt.
Ich hab dann auch gleich versucht mit der Constructor Node die MotorLibNET.dll zu öffnen und bekam prompt die Fehlermeldung, dass das keine gültige Net Assembly sei. Daraufhin hab ich mich ein wenig schlau gemacht und LV mittels einer Configurationsdatei dazu veranlasst auch .Net 4.0 dlls zu akzeptieren.
Jetzt kann ich die dll zumindest auswählen aber sie wird trotzdem nicht angenommen. Also ich kann nicht mit dem OK-Button bestätigen.
Statt dessen steht da nur, dass dieses SMC Klasse keine öffentlichen Konstruktoren enthält.

Liegt das jetzt evtl. an der erzwungenen Konfiguration? Also sollte ich lieber irgendwie versuchen die dll in ein .NET 2.0 Framework umzuwandeln? Würde das überhaupt gehen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.03.2014, 10:44
Beitrag #4

Scuba Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: May 2012

8.6
2012
DE



RE: Motorsteuerung K8097 mit DLL
Jetzt hab ichs doch noch mit der .NET Assembly hinbekommen! Also nochmal vielen Dank für den Denkanstoß!

Es gab dabei aber noch einige Sachen zu beachten. Anscheinend ist es sehr wichtig, dass die DLLs im selben Verzeichnis wie das VI oder wie ein Projekt mit dem VI liegen. Da es danach aber immer noch nicht bei mir geklappt hat, kann ich nicht sagen, wiie wichtig das ist ^^

Mein Problem war, dass die ganzen Klassen als static definiert waren und LabView die nicht über die Constructor Node erkennt. Man bringt also gleich eine Invoke Node aufs Diagramm, macht rechts-klick auf Select Class, .NET und kann da dann nochmal auf Browse gehen. So hats dann letztendlich funktioniert...falls jmd. mal ähnliche Probleme haben sollte Wink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.03.2014, 11:42 (Dieser Beitrag wurde zuletzt bearbeitet: 12.03.2014 12:01 von Lucki.)
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Motorsteuerung K8097 mit DLL
Viele Firmen liefern zusätzlich zur DLL noch sog. "Labview-Treiber" mit. Das sind im einfachsten Fall weiter nichts als eine Sammlung von SubVis, von denen jede auf eine DLL-Funktion zugeift. Würde Dir empfehlen, selbst so eine SubVI-Sammluing zu erstellen, damit Übersicht in Dein VI reinkommt. Habe mal ein Beispiel gemacht. ""NET" ist da nicht berücksuichtigt, es soll nur eine Anregung sein.
Zweiter Tip: Den DLL-Pfad muss man im allgemeinen nicht angeben, LV findet den von selbst, wenn die DLL in bestimmten Verzeichnissen liegt: In der aktuellen Dir, in der Win32-Dir, in der.. (Mehr weiß ich jetzt nicht)


Angehängte Datei(en)
8.5 .vi  Motor_Test.vi (Größe: 15,83 KB / Downloads: 405)

8.5 .vi  SMCConnect.vi (Größe: 30,49 KB / Downloads: 358)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: