Mit dem C-Code-Integrations-Plugin können extern implementierte C-Code-Dateien in CODESYS Projekte eingebunden und C-Stubs aus IEC-Objekten generiert werden.
In CODESYS steht dafür der Objekttyp „C-Code-Modul“ zur Verfügung. Die C-Code-Dateien und die verwendeten IEC-Objekte befinden sich unter einem „C-Code-Modul“. Jedem C-Code-Modul wird ein Dateiverzeichnis auf der Festplatte mit C-Code-Dateien zugewiesen.
Im Projekt können Sie IEC-Objekte aus einer C-Code-Datei im Format *.h oder *.hpp (Header-Datei) erzeugen, um sie in anderen Bausteinen zu verwenden.
Die Erstellung von C-Stichproben ist für die folgenden Anwendungsfälle vorgesehen:
-
Eine C-Code-Datei greift auf ein IEC-Objekt zu: Eine C-Code-Datei kann nicht direkt auf ein IEC-Objekt zugreifen. Es kann nur auf den C-Stub zugreifen, der aus dem IEC-Objekt erzeugt wurde.
-
Erzeugung von vorkompilierten Modulen, die Sie in ein Bibliotheksprojekt einbinden können.
Nach dem Import sind die importierten Quellcodedateien Teil des Projekts CODESYS und daher von den Originaldateien auf der Festplatte entkoppelt.
Bei der Kompilierung wird ein dynamisches Modul aus einem C-Code-Modul erzeugt und als Teil des Projekts gespeichert. Informationen, Warnungen und Fehler werden im Meldungsfenster in der Kategorie „C-Code-Modul“ angezeigt.
Beim Download werden alle dynamischen Module einer Anwendung in das Laufzeitsystem übertragen und geladen. Dazu muss das Laufzeitsystem dynamisches Linking unterstützen.
Lizenz für das Laufzeitsystem
Lizenz für das Laufzeitsystem
Das Laufzeitsystem benötigt eine Lizenz, die das Laden von C-Modulen erlaubt. Ohne diese Lizenz können die dynamischen Module während des Downloads nicht verknüpft werden, so dass der Download abgebrochen wird.
Die dynamischen Module sind Teil der Boot-Anwendung und werden bei einem Neustart des Controllers neu geladen und aktiviert. Der Befehl „Reset origin“ entlädt alle C-Code-Module in der Anwendung. Die Befehle „Reset kalt“ und „Reset warm“ führen nicht zu einer erneuten Initialisierung der C-Code-Module.




HINWEIS

Kein C-Code für den Simulationsbetrieb
Im Simulationsbetrieb wird kein C-Code erzeugt und auf das Laufzeitsystem geladen. Wenn Sie den in den C-Modulen enthaltenen Code dennoch simulieren möchten, können Sie ihn zu diesem Zweck in den zugehörigen IEC-Objekten des C-Code-Moduls implementieren.
CODESYS unterstützt nicht die Überwachung von Variablen in C-Code-Dateien oder das Setzen von Haltepunkten in C-Quellcode.
User Library POUs werden auf Input Assisted (F2) aufgelistet, aber die Funktion liefert keine sinnvollen Ergebnisse im Kontext eines C-Code POUs. Diese Bausteine sind als Standard und nicht als benutzerdefinierte Funktionen/Funktionsblöcke/Programme aufgeführt.
Vorkompilierte Module in Bibliotheken
Die C-Code-Integration bietet die Möglichkeit, ein vorkompiliertes Laufzeitmodul (Beispiel: *.dll) in der Bibliothek einem Gerät zuzuordnen und es dann in der Bibliothek zu speichern. Diese Module können dann dynamisch geladen werden.
C-Code-Module konfigurieren
Erfordernis: Es ist ein Projekt geöffnet, das bereits ein C-Code-Modul enthält.
-
Klicken Sie im Gerätebaum auf das Objekt
„ C-Code-Modul“.
-
Wählen Sie im Kontextmenü den Befehl „Eigenschaften“.
-
Öffnen Sie die Registerkarte „Build“ im Dialogfeld „Eigenschaften“.
-
Geben Sie den Dateipfad der Visual Studio-Installation auf Ihrem Computer an. Der Eingabeassistent (
) und das Suchwerkzeug (Lupe) sind ebenfalls verfügbar.
-
Geben Sie den Dateipfad der MS Windows SDK-Installation auf Ihrem Computer an. Der Eingabeassistent (
) und das Suchwerkzeug (Lupe) sind ebenfalls verfügbar.
-
Geben Sie einen Dateipfad für CODESYS an, um die temporären Kompilierdateien zu speichern.
Importieren von Ordnern mit C-Quelldateien aus dem Dateiverzeichnis
Erfordernis: Ein Projekt ist eröffnet. Die Projektsteuerung unterstützt die Integration von C-Code.
-
Wählen Sie „Anwendung“ im Gerätebaum und klicken Sie auf „Projekt Objekt hinzufügen C-Code-Modul“.
-
Geben Sie ggf. einen neuen Namen für Ihr C-Code-Modul im Dialogfeld „C-Code-Module hinzufügen“ an. Wenn Sie dies nicht tun, erhält Ihr Objekt den Standardnamen „C-Code-Modul“.
-
Klicken Sie auf das Symbol (
) neben dem Eingabefeld „Quellverzeichnis“.
-
Das Dialogfeld „Ordner suchen“ wird geöffnet.
-
Wählen Sie im Dialogfeld „Ordner suchen“ den Ordner aus, der die C-Quelldateien enthält (
*.c
,*.cpp
,*.h
oder*.hpp
). -
Wenn Sie die Option „Ordner für Quellcode-Änderungen überwachen“ wählen, zeigt CODESYS eine Meldung an, wenn Änderungen an den C-Quelldateien im ausgewählten Ordner des Dateisystems vorgenommen wurden.
-
Klicken Sie auf „Hinzufügen“.
CODESYS fügt das C-Code-Modul in den Gerätebaum mit den Ordnern „Erweiterungen“, „IEC-Schnittstelle“, und „Quelldateien“ ein.
-
Klicken Sie im Gerätebaum auf das Plus-Symbol („+“) des Ordners „Quelldateien“.
Die importierten C-Quelldateien werden in dem geöffneten Ordner aufgelistet.
-
Wenn Sie auf eine der C-Quelldateien doppelklicken (
), wird die C-Code-Datei in Ihrem Editor geöffnet.
Importieren einzelner C-Code-Dateien
Erfordernis: Es ist ein Projekt geöffnet, das bereits ein C-Code-Modul enthält.
-
Klicken Sie im Gerätebaum auf das Objekt
„ C-Code-Modul“.
-
Klicken Sie auf „Projekt Objekt hinzufügen C-Code-Datei“.
-
Wählen Sie im Dialogfeld „C-Code-Datei hinzufügen“ mit dem Eingabeassistenten (
) eine Datei im Format
*.c
, *.cpp
, *.h
oder*.hpp
aus, und klicken Sie dann auf „Hinzufügen“.CODESYS fügt die ausgewählte C-Code-Datei in den Gerätebaum unterhalb des
„C-Code-Moduls“ ein.
-
Wenn Sie auf die neue C-Code-Datei (
) im Gerätebaum doppelklicken, wird sie im Editor zur Bearbeitung geöffnet.
Erzeugen von leeren C-Code-Dateien
Erfordernis: Es ist ein Projekt geöffnet, das bereits ein C-Code-Modul enthält.
-
Klicken Sie im Gerätebaum auf das Objekt
„ C-Code-Modul“.
-
Klicken Sie auf „Projekt Objekt hinzufügen C-Code-Datei“.
-
Geben Sie im Dialogfeld „C-Code-Datei hinzufügen“ den Namen für die neue C-Code-Datei mit der entsprechenden Dateierweiterung an und klicken Sie auf „Hinzufügen“.
CODESYS fügt die ausgewählte C-Code-Datei in den Gerätebaum unterhalb des
„C-Code-Moduls“ ein.
-
Wenn Sie auf die neue C-Code-Datei (
) im Gerätebaum doppelklicken, wird sie im Editor zur Bearbeitung geöffnet.
Konvertierung von C-Code-Dateien in IEC-Objekte zur Verwendung als Programmierobjekte in Anwendungen
Erfordernis: Ein Projekt ist geöffnet, das ein C-Code-Modul und
C-Code-Dateien enthält. Die C-Code-Datei enthält zum Beispiel folgenden C-Code:
int adder(int a, int b);
-
Klicken Sie auf eine
C-Code-Datei mit der Dateierweiterung
*.h
. In diesem Beispiel ist estest.h
. -
Klicken Sie auf „Build C-Integration IEC-Schnittstelle erstellen“.
Das Dialogfenster „C-Schnittstelle erstellen“ öffnet sich und listet die Datei
test.h
und ihre Funktionadder (int, int)
auf. Beide sind für den Import aktiviert. -
Klicken Sie auf „Importieren“.
-
CODESYS erzeugt die Funktion „adder (FUN)“ und fügt sie als Objekt in den Ordner „IEC-Schnittstelle“ im Gerätebaum ein.
-
Wenn Sie auf das Objekt „adder (FUN)“ doppelklicken, wird es im Editor geöffnet. Sie enthält den folgenden Erklärungsteil:
-
Sie können nun die Funktion
adder
im Implementierungsteil einer POE aufrufen (Beispiel:adder (diVar1, diVar2);
).
Erstellen von C-Stubs
Erfordernis: Ein Projekt ist geöffnet, das ein C-Code-Modul enthält. Dem C-Code-Modul wird eine POE hinzugefügt, die über implementierten
Code verfügt.
-
Markieren Sie im Gerätebaum die POE unterhalb des C-Code-Moduls und klicken Sie auf „C-Integration Stub-Implementierung in C erstellen“.
CODESYS erstellt die Objekte „iec_external.c“ und „iec_external.h“ und fügt sie dem Ordner „Extensions“ im Gerätebaum hinzu.
Im Meldungsfenster (Kategorie„C-Code-Modul“ ) finden Sie eine Meldung, dass eine m4-Datei erfolgreich erstellt wurde.
Wenn Sie auf „Stub-Implementierung in C erstellen“ klicken, wird die Anwendung automatisch kompiliert. Treten dabei Fehler auf, so werden diese im Meldungsfenster angezeigt. Bitte beachten Sie auch die Meldungen in der Kategorie „C-Code-Modul“.
Zuweisung von vorkompilierten Laufzeitmodulen zu Geräten und Speicherung in Bibliotheken
Erfordernis: Eine Bibliothek (*.library) ist in CODESYS geöffnet.
-
Klicken Sie auf „Ansicht POEs“.
Die Ansicht „POUs“ wird geöffnet und zeigt das Bibliotheksprojekt und seine Objekte an.
-
Wählen Sie das Bibliotheksprojekt aus und klicken Sie auf „Projekt Objekt hinzufügen C implementierte Bibliothek“.
-
Klicken Sie im Dialogfeld „Add C implemented library“ auf „Add“.
CODESYS fügt das Objekt
„C-implementierte Bibliothek“ zur Ansicht „POUs“ hinzu.
-
Doppelklicken Sie auf das Objekt
„C implemented library“.
Das Objekt öffnet sich in seinem Editor
-
Klicken Sie auf „Hinzufügen“ in diesem Editor.
Das Dialogfeld „Gerät auswählen“ wird geöffnet.
-
Geben Sie im Eingabefeld „Objektdatei“ den Namen eines dynamisch ladbaren Moduls im Format *.dll oder *.so an.
HINWEIS
Die *.dll-Datei muss den Titel des Bibliotheksprojekts in ihrem Namen enthalten. Wenn das Bibliotheksprojekt zum Beispiel XYlib heißt, dann muss die „Objektdatei“ heißen:
<Name>_XYlib.dll
. -
Wählen Sie im Fenster „Gerät“ ein Gerät für die Zuordnung der „Objektdatei“ aus.
-
Klicken Sie auf „Gerät auswählen“.
CODESYS zeigt die erstellte Gerätedateizuordnung im Editor auf der Registerkarte „Kompilierte Komponenten“ an.
-
Speichern Sie das Bibliotheksprojekt.