Das Plug-in C-Code-Integration ermöglicht die Einbindung von extern implementierten C-Code-Dateien in CODESYS-Projekte und das Erzeugen von C-Stubs aus IEC-Objekten.
Dazu steht Ihnen in CODESYS der Objekttyp „C-Code-Modul“ zur Verfügung. Unter einem „C-Code-Modul“ liegen die C-Code-Dateien und die verwendeten IEC-Objekte. Jedem C-Code-Modul ist ein Dateiverzeichnis auf der Festplatte mit C-Code-Dateien zugewiesen.
Im Projekt können Sie aus einer C-Code-Datei des Formats *.h oder *.hpp (Header-Datei) IEC-Objekte erzeugen um sie in anderen POUs zu verwenden.
Die Erzeugung von C-Stubs ist für folgende Anwendungsfälle vorgesehen:
-
Zugriff einer C-Code-Datei auf ein IEC-Objekt: Eine C-Code-Datei kann nicht direkt auf ein IEC-Objekt zugreifen, sondern nur auf das C-Stub, das aus dem IEC-Objekt erzeugt wurde.
-
Erzeugung von vorkompilierten Modulen, die Sie in ein Bibliotheksprojekt einbinden können.
Die importierten Quellcodedateien sind nach dem Import Teil des CODESYS-Projekts und damit entkoppelt von den ursprünglichen Dateien auf der Platte.
Beim Übersetzen wird aus einem C-Code-Modul ein dynamisches Modul erzeugt und als Teil des Projekts gespeichert. Informationen, Warnungen und Fehler werden im Meldungsfenster in der Kategorie „C-Code-Modul“ angezeigt.
Alle dynamischen Module einer Applikation werden beim Download auf das Laufzeitsystem übertragen und geladen. Hierfür muss das Laufzeitsystem dynamisches Linken 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 dynamische Module beim Download nicht gelinkt werden und der Download wird abgebrochen.
Die dynamischen Module sind Bestandteil der Bootapplikation und werden beim Neustart der Steuerung wieder geladen und aktiviert. Der Befehl „Rest Ursprung“ entlädt alle C-Code-Module der Applikation. 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 das Monitoring von Variablen in C-Code-Dateien und nicht das Setzen von Haltepunkten in C-Quellcode.
Vorkompiliertes Modul in Bibliothek:
Die C-Code-Integration bietet die Möglichkeit ein vorkompiliertes Laufzeitmodul (zum Beispiel *.dll) in der Bibliothek einem Gerät zuzuweisen und in der Bibliothek zu speichern. Diese Module sind anschließend dynamisch ladbar.
C-Code-Modul konfigurieren
Voraussetzung: Ein Projekt, das bereits ein C-Code-Modul enthält, ist geöffnet.
-
Klicken Sie auf das Objekt
„C-Code-Modul“ im Gerätebaum.
-
Wählen Sie im Kontextmenü den Befehl „Eigenschaften“.
-
Öffnen Sie im Dialog „Eigenschaften“ die Registerkarte „Build“.
-
Geben Sie den Dateipfad der Installation von Visual Studio auf Ihrem Rechner an. Es stehen Ihnen dazu auch die Eingabehilfe
und das Lupenwerkzeug zur Verfügung.
-
Geben Sei den Dateipfad der Installation des MS Windows SDK auf Ihrem Rechner an. Es stehen Ihnen dazu auch die Eingabehilfe
und das Lupenwerkzeug zur Verfügung.
-
Geben Sie einen Dateipfad an, wo CODESYS die temporären Übersetzungsdateien speichern soll.
Ordner mit C-Quelldateien aus dem Dateiverzeichnis importieren
Voraussetzung: Ein Projekt ist geöffnet. Die Steuerung des Projekts unterstützt die Integration von C-Code.
-
Selektieren Sie „Application“ im Gerätebaum und wählen Sie den Befehl „Projekt Objekt hinzufügen C-Code-Modul“
-
Geben Sie im Dialog „C-Code-Module hinzufügen“ bei Bedarf einen neuen Namen für Ihr C-Code-Modul ein. Ansonsten erhält Ihr Objekt den Standardnamen „C-Code-Modul“.
-
Klicken Sie auf
hinter dem Eingabefeld „Quellverzeichnis“.
-
Der Dialog „Ordner suchen“ öffnet sich.
-
Wählen Sie im Dialog „Ordner suchen“ den Ordner aus, der die C-Quelldateien (
*.c
, *.cpp
, *.h
, oder*.hpp
) enthält. -
Wenn Sie die Option „Ordner auf Quellcodeänderungen überwachen“ aktivieren, meldet CODESYS, wenn in den C-Quelldateien des ausgewählten Ordners des Dateisystems Änderungen vorgenommen werden.
-
Klicken Sie auf „Hinzufügen“.
CODESYS fügt das C-Code-Modul mit den Ordnern „Erweiterungen“, „IEC-Schnittstelle“, „Quelldateien“ im Gerätebaum ein.
-
Klicken Sie im Gerätebaum auf das „+“ des Ordners „Quelldateien“.
Im geöffneten Ordner werden die importierten C-Quelldateien aufgelistet.
-
Wenn Sie auf eine der
C-Quelldateien doppelklicken, öffnet sich die C-Code-Datei in Ihrem Editor.
Einzelne C-Code-Datei importieren
Voraussetzung: Ein Projekt, das bereits ein C-Code-Modul enthält, ist geöffnet.
-
Klicken Sie auf das Objekt
„C-Code-Modul“ im Gerätebaum.
-
Wählen Sie den Befehl „Projekt Objekt hinzufügen C-Code-Datei“.
-
Wählen Sie im Dialog „C-Code-Datei hinzufügen“ über die Eingabehilfe
eine Datei des Formats
*.c
, *.cpp
, *.h
, oder*.hpp
aus und klicken Sie auf „ Hinzufügen“.CODESYS fügt die auswählte C-Code-Datei im Gerätebaum unter dem
„C-Code-Modul“ ein.
-
Wenn Sie die neue
C-Code-Datei im Gerätebaum doppelklicken, öffnet sie sich im Editor und Sie können darin editieren.
Leere C-Code-Datei erzeugen
Voraussetzung: Ein Projekt, das bereits ein C-Code-Modul enthält, ist geöffnet.
-
Klicken Sie auf das Objekt
„C-Code-Modul“ im Gerätebaum.
-
Wählen Sie den Befehl „Projekt Objekt hinzufügen C-Code-Datei“.
-
Geben Sie im Dialog „C-Code-Datei hinzufügen“ den Namen für die neue C-Code-Datei mit der entsprechenden Dateiendung an und klicken Sie auf „Hinzufügen“.
CODESYS fügt die auswählte C-Code-Datei im Gerätebaum unter dem
„C-Code-Modul“ ein.
-
Wenn Sie die neue
C-Code-Datei im Gerätebaum doppelklicken, öffnet sie sich im Editor und Sie können darin editieren.
C-Code-Datei in IEC-Objekte umwandeln, um sie als Programmierobjekte in der Applikation zu verwenden.
Voraussetzung: Ein Projekt mit einem C-Code-Modul und
C-Code-Dateien ist geöffnet. Beispielsweise enthält die C-Code-Datei folgenden C-Code:
int adder(int a, int b);
-
Klicken Sie auf eine
C-Code-Datei mit Dateierweiterung
*.h
, im Beispieltest.h
-
Wählen Sie den Befehl „Erstellen C-Integration IEC-Schnittstelle erzeugen“.
Der Dialog „C-Schnittstelle erzeugen“ öffnet sich und listet die Datei
test.h
und deren 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 im Ordner „IEC-Schnittstelle“ im Gerätebaum ein.
-
Wenn Sie das Objekt „adder (FUN)“ doppelklicken, öffnet es sich im Editor.
Es enthält folgenden Deklarationsteil:
-
Sie können nun die Funktion
adder
im Implementierungsteil einer POU aufrufen, beispielsweiseadder (diVar1, diVar2);
C-Stub erzeugen
Voraussetzung: Ein Projekt mit einem C-Code-Modul ist geöffnet. Dem C-Code-Modul haben Sie eine POU hinzugefügt und
in dieser POU haben Sie Code implementiert.
-
Klicken Sie im Gerätebaum auf die POU unterhalb des C-Code-Moduls und wählen Sie im Kontextmenü den Befehl „C-Integration Stub-Implementierung in C erzeugen“.
CODESYS erzeugt die Objekte „iec_external.c“ und „iec_external.h“ und fügt Sie im Gerätebaum dem Ordner „Erweiterungen“ hinzu.
Im Meldungsfenster in der Kategorie „C-Code-Modul“ finden Sie eine Meldung, dass eine m4-Datei erfolgreich erzeugt wurde.
Wenn Sie den Befehl „Stub-Implementierung in C erzeugen“ auswählen, wird die Applikation automatisch übersetzt. Wenn dabei Fehler auftreten, werden diese im Meldungsfenster angezeigt. Beachten Sie auch die Meldungen in der Kategorie „C-Code-Modul“.
Vorkompiliertes Laufzeitmodul einem Gerät zuweisen und in einer Bibliothek speichern
Voraussetzung: Ein Bibliothek (*.library) ist in CODESYS geöffnet.
-
Wählen Sie den Befehl „Ansicht POUs“.
Die Ansicht „POUs“ öffnet sich und zeigt das Bibliotheksprojekt und seine Objekte an.
-
Selektieren Sie das Bibliotheksprojekt und wählen Sie den Befehl „Projekt Objekt hinzufügen C-implementierte Bibliothek“.
-
Klicken Sie im Dialog „C-implementierte Bibliothek hinzufügen“ auf „Hinzufügen“.
CODESYS fügt das Objekt
„C-implementierte Bibliothek“ in der Ansicht „POUs“ ein.
-
Doppelklicken Sie das Objekt
„C-implementierte Bibliothek“.
Das Objekt öffnet sich in seinem Editor
-
Klicken Sie in diesem Editor auf „Hinzufügen“.
Der Dialog „Gerät auswählen“ öffnet sich.
-
Geben Sie im Eingabefeld „Objektdatei“ den Namen eines dynamisch ladbaren Modul des Format: *.dll oder *.so ein.
HINWEIS
Die Datei *.dll muss im Namen den Titel des Bibliotheksprojekts enthalten. Beispiel: Wenn das Bibliotheksprojekt den Namen XYlib hat, dann muss die „Objektdatei“ heißen:
<Name>_XYlib.dll
-
Wählen Sie im Fenster „Gerät“ ein Gerät, dem Sie die „Objektdatei“ zuweisen wollen.
-
Klicken Sie auf „Gerät auswählen“.
CODESYS zeigt die erstellte Zuweisung Gerät-Datei im Editor in der Registerkarte „Kompilierte Komponenten“ an.
-
Speichern Sie das Bibliotheksprojekt.
Siehe auch