Einbinden in LabVIEW™

Einbinden in LabVIEW™ 1:

Nutzen Sie das TwinCAT 3 Interface for LabVIEW™

Wenn Sie eine ADS-Kommunikation zwischen LabVIEW™ und der TwinCAT 3 Laufzeit aufbauen möchten, nutzen Sie in jedem Fall das umfänglich supportete und dokumentierte Produkt TwinCAT 3 Interface for LabVIEW™, siehe TF3710. Die im Folgenden dargestellte händische Einbindung von kostenfreien ADS-Komponenten stellt lediglich Anwendungsbeispiele dar. Diese unterliegen nicht dem Beckhoff-Support.

Notwendige Dateien

Die TcAdsDll.dll befindet sich im ‚System32'-Verzeichnis von Windows.

 

LabVIEW™-Funktion: Call Library Function

Einbinden in LabVIEW™ 2:

Konfiguration des Dll-Aufrufs

Einbinden in LabVIEW™ 3:

Einbinden in LabVIEW™ 4:

Library Name or Path

Über den Button "Browse..." oder direkt wird der Pfad der TcAdsDll eingetragen.

Function Name

Nach der Auswahl der TcAdsDll lässt sich die aufzurufende Dll-Funktion auswählen.

Calling Conventions

Es wird die Aufrufkonvention stdCall verwendet.

Parameter

Die Parameterliste muss an die aufzurufende Funktion angepasst werden. Über die Buttons 'Add a Parameter Before', 'Add a Parameter After' und 'Delete this Parameter' wird die Parameterliste des Aufrufs vervollständigt. Anschließend werden die Datentypen der Aufrufparameter angepasst. Bei Pointer-Übergabe von Strukturen wird der Typ 'Adapt to Type' und Format 'Handles by Value' ausgewählt.

Beispiel: Parameter pAddr der Funktion AdsSyncReadReq

Einbinden in LabVIEW™ 5:

Function Prototype

Der Funktionsprototyp der Aufgerufenen Funktion muss mit dem Funktionsprototypen der TcAdsDll übereinstimmen. Die Funktionsprototypen sind in der Dokumentation der TcAdsDll-Funktionen aufgeführt.

Beispiel für die Funktion AdsSyncReadReq

C Deklaration:

LONG AdsSyncReadReq(
  PAmsAddr pAddr,
  ULONGnIndexGroup,
  ULONGnIndexOffset,
  ULONGnLength,
  PVOIDpData);

LabVIEW™:

Einbinden in LabVIEW™ 6:

 

Strukturen

Für alle bei den Funktionsaufrufen verwendeten Strukturen werden im LabVIEW™ entsprechende Cluster gebildet.

AmsNetId

C Deklaration:

typedef struct {
  UCHARb[6];
} AmsNetId, *PAmsNetId;

Wird in LabVIEW™ als Cluster aus 6 x U8 Werten gebildet:

Einbinden in LabVIEW™ 7:

AmsAdr

C: Deklaration

typedef struct {
  AmsNetId netId;
  USHORTport;
} AmsAddr, *PAmsAddr;

Wird in LabVIEW™ als Cluster aus AmsNetId und einem U16 Wert gebildet:

Einbinden in LabVIEW™ 8:

Aus dem so gebildeten Cluster kann natürlich auch ein LabVIEW™-Control, z. B. für Adresseingaben gebildet werden:

Einbinden in LabVIEW™ 9:

Parameterübergabe

Bei der Parameterübergabe ist es sehr wichtig, dass an den Dll-Aufruf für alle Parameter Variablen übergeben werden. Insbesondere an die in der Dokumentation mit [out] gekennzeichneten Parameter müssen unbedingt entsprechende Platzhaltervariablen übergeben werden, damit entsprechend Speicher reserviert wird.

Hinweis

Systemabsturz

Falsche Parameterübergabe verursacht Speicherschutzverletzungen und kann das LabVIEW™-System zum Absturz bringen!