User Documentation
Anhang: Tutorial - C-Funktionen aus der IEC aufrufen
Systemhandbuch
2696780000/02/04.2020
130
● Der Rückgabewert der C-Funktion soll das doppelte der Variable des
Typs DWORD betragen
Die geänderten Werte der Variablen sollen danach wieder in der IEC-Appli-
kation zur Verfügung stehen.
Dazu sind folgende Schritte notwendig:
● Erstellen der IEC-Funktion
● Erstellen der C-Funktion und Download auf die Steuerung
● Aufruf der IEC-Funktion in der IEC-Applikation und Download
22.3 Erstellen der C-Funktion und Download
Nach dem Starten vom u-create studio C++ wird ein neues Projekt über File
► New ► C/C++ Target Application in der Menüleiste angelegt.
In dem sich öffnenden Dialog werden folgende Parameter eingestellt:
Parameter Wert
Project name myProject
Location C:\myProjects
Target
● UC20-SL2000: Control PLC V<VersionNr> ARMHF Linux
● KEBA-Steuerung: Control PLC V<VersionNr> X86 Linux
Project Type CoDeSys IEC Functions in C
Mittels Finish wird das Projekt angelegt und im Projektbaum angezeigt.
In diesem Projekt sind bereits eine C-Funktion und die vordefinierte Schnitt-
stelle angelegt.
Im Projektbaum wird unter myIEC_C_Call ► include die Datei
MyIEC_C_Call.h mittels Doppelklick geöffnet. In dieser Datei werden die
Strukturen für die Eingangs- und Ausgangsvariablen entsprechend deklariert
und somit die Schnittstelle an die IEC-Schnittstelle angepasst.
In der Struktur struct func1_IN werden die Eingangsparameter der IEC-
Funktion entsprechend abgebildet. Die Anzahl muss übereinstimmen und es
muss ein korrektes Typmapping erfolgen. Dazu wird in diesem Beispiel der
darin existierende Code durch Folgenden ersetzt:
struct func1_IN {
int32_t *in_dword;
const char *in_string;
float *in_real; };
In der Struktur struct func1_OUT werden die Ausgangsparameter der IEC-
Funktion entsprechend abgebildet. Die Anzahl muss übereinstimmen und es
muss ein korrektes Typmapping erfolgen. Dazu wird in diesem Beispiel der
darin existierende Code durch Folgenden ersetzt:
struct func1_OUT {
float *out_dword;
char *out_string; };