C-Module integrieren

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:

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.

Bemerkung

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.

Siehe auch

C-Code-Modul konfigurieren

Voraussetzung: Ein Projekt, das bereits ein C-Code-Modul enthält, ist geöffnet.

  1. Klicken Sie auf das Objekt C-Code-Modul im Gerätebaum.

  2. Wählen Sie im Kontextmenü den Befehl Eigenschaften.

  3. Öffnen Sie im Dialog Eigenschaften die Registerkarte Build.

  4. 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.

  5. 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.

  6. 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.

  1. Selektieren Sie Application im Gerätebaum und wählen Sie den Befehl Projekt ‣ Objekt hinzufügen ‣ C-Code-Modul

  2. 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.

  3. Klicken Sie auf hinter dem Eingabefeld Quellverzeichnis.

  4. Der Dialog Ordner suchen öffnet sich.

  5. Wählen Sie im Dialog Ordner suchen den Ordner aus, der die C-Quelldateien ( *.c, *.cpp, *.h, oder *.hpp) enthält.

  6. 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.

  7. Klicken Sie auf Hinzufügen.

    ⇒ CODESYS fügt das C-Code-Modul mit den Ordnern Erweiterungen, IEC-Schnittstelle, Quelldateien im Gerätebaum ein.

  8. Klicken Sie im Gerätebaum auf das + des Ordners Quelldateien.

    ⇒ Im geöffneten Ordner werden die importierten C-Quelldateien aufgelistet.

  9. 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.

  1. Klicken Sie auf das Objekt C-Code-Modul im Gerätebaum.

  2. Wählen Sie den Befehl Projekt ‣ Objekt hinzufügen ‣ C-Code-Datei .

  3. 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.

  4. 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.

  1. Klicken Sie auf das Objekt C-Code-Modul im Gerätebaum.

  2. Wählen Sie den Befehl Projekt ‣ Objekt hinzufügen ‣ C-Code-Datei .

  3. 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.

  4. 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);

  1. Klicken Sie auf eine C-Code-Datei mit Dateierweiterung *.h, im Beispiel test.h

  2. 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 Funktion adder (int,int) auf. Beide sind für den Import aktiviert.

  3. Klicken Sie auf Importieren.

  4. CODESYS erzeugt die Funktion adder (FUN) und fügt sie als Objekt im Ordner IEC-Schnittstelle im Gerätebaum ein.

  5. Wenn Sie das Objekt adder (FUN) doppelklicken, öffnet es sich im Editor.

    ⇒ Es enthält folgenden Deklarationsteil:

  6. Sie können nun die Funktion adder im Implementierungsteil einer POU aufrufen, beispielsweise adder (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.

  1. 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.

    Bemerkung

    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.

  1. Wählen Sie den Befehl Ansicht ‣ POUs .

    ⇒ Die Ansicht POUs öffnet sich und zeigt das Bibliotheksprojekt und seine Objekte an.

  2. Selektieren Sie das Bibliotheksprojekt und wählen Sie den Befehl Projekt ‣ Objekt hinzufügen ‣ C-implementierte Bibliothek .

  3. 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.

  4. Doppelklicken Sie das Objekt C-implementierte Bibliothek.

    ⇒ Das Objekt öffnet sich in seinem Editor

  5. Klicken Sie in diesem Editor auf Hinzufügen.

    ⇒ Der Dialog Gerät auswählen öffnet sich.

  6. 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

  7. Wählen Sie im Fenster Gerät ein Gerät, dem Sie die Objektdatei zuweisen wollen.

  8. Klicken Sie auf Gerät auswählen.

    ⇒ CODESYS zeigt die erstellte Zuweisung Gerät-Datei im Editor in der Registerkarte Kompilierte Komponenten an.

  9. Speichern Sie das Bibliotheksprojekt.

Siehe auch