Einbinden in LabVIEW™
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
- TcAdsDll.dll - Dynamische Funktions-Bibliothek
Die TcAdsDll.dll befindet sich im ‚System32'-Verzeichnis von Windows.
LabVIEW™-Funktion: Call Library Function
Konfiguration des Dll-Aufrufs
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
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™:
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:
AmsAdr
C: Deklaration
typedef struct {
AmsNetId netId;
USHORTport;
} AmsAddr, *PAmsAddr;
Wird in LabVIEW™ als Cluster aus AmsNetId und einem U16 Wert gebildet:
Aus dem so gebildeten Cluster kann natürlich auch ein LabVIEW™-Control, z. B. für Adresseingaben gebildet werden:
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! |