Skip to main content

SDK di estensione

Con Extension SDK è possibile implementare le proprie funzioni in C e richiamarle dall'applicazione IEC.

Per questo collegamento, il codice C è integrato nel sistema di runtime sotto forma di un componente dinamico separato (shared object).

Ci sono due modi per includere:

  • Preparato sul controller: il componente dinamico è già configurato su CODESYS sistema di esecuzione (a shared object esiste ed è configurato sul sistema Linux). Quindi, è richiesta solo la rispettiva libreria IEC.

  • Sotto forma di libreria IEC con un componente dinamico integrato. Non è necessario preparare nulla sul sistema Linux stesso. Quando si utilizza la libreria IEC, il componente dinamico viene aggiunto automaticamente al file CODESYS sistema di runtime e utilizzato.

In entrambi i casi, l'utente deve essere in grado di creare un file shared object che è adatto per l'architettura del sistema di runtime (x64/ARM6/ARM7/AARCH64). L'SDK di estensione ti supporta nella creazione di questo tipo di componente dinamico (shared object).

Di seguito viene descritto come creare la libreria e il componente dinamico per entrambe le varianti.

Sviluppo dell'ambiente

. Sviluppo dell'ambiente
  • Aprire CODESYS e creare una nuova libreria.

  • Imposta il titolo della libreria(Informazioni di progetto, Riepilogo scheda) e salvare la libreria con lo stesso nome.

  • Aggiungere le funzioni desiderate e contrassegnarle come Implementazione esterna.

    • Nel menu contestuale della funzione nel navigatore di progetto, fare clic su Proprietà. Sul Costruire scheda, seleziona Implementazione esterna.

    • Nota: la funzione deve contenere "_cext" nel nome.

  • Ora genera i file *ce *m4:

    • Clic Compila → Genera file di sistema di runtime.

    • Selezionare File di interfaccia M4 e File stub C.

    • Seleziona la posizione di salvataggio.

Linux

  1. Copiare Extension SDK su un sistema Linux che dispone dell'ambiente di compilazione corrispondente per il sistema di destinazione.

    Per impostazione predefinita, trovi Extension SDK in:

    C:\Program Files\CODESYS <version>\CODESYS\CODESYS Control SL Extension Package\<version>\ExtensionSDK. La directory verrà denominata <SDK DIR> nei passaggi seguenti.

  2. Crea una nuova cartella in cui crei l'implementazione C. Questa cartella è la seguente <PROJECT DIR>.

  3. Navigare verso <PROJECT DIR> e corri: $ make -f <SDKDIR>/makefile newproject

  4. Copia i file *ce *m4 che hai creato nell'ambiente di sviluppo in <PROJECT DIR>.

  5. Implementare le funzioni in C.

  6. Crea l'oggetto condiviso: $ make all

    Il shared object è generato e si trova in <PROJECT DIR>/out/libCmpMyTest.so.

Di conseguenza, è stato creato un componente dinamico che ora può essere richiamato dall'applicazione IEC tramite la propria libreria IEC. Dettagli sul processo di compilazione (make) si trovano anche nei makefile e README file nell'SDK di estensione.

Ora scegli uno dei due modi seguenti per includere il componente:

Compreso il componente dinamico

Sono disponibili le seguenti opzioni per includere il componente:

Compreso il componente dinamico sul dispositivo di destinazione

Questo metodo consente di includere l'oggetto condiviso precedentemente creato in C nel sistema di runtime. Non sono richieste autorizzazioni di sistema aggiuntive per l'utente e la libreria può essere implementata sui dispositivi utilizzando metodi familiari.

  1. Copia l'oggetto condiviso creato sopra nel sistema di runtime.

  2. Copia l'oggetto condiviso in /usr/lib/ o una directory di libreria equivalente in cui le librerie vengono trovate dal sistema.

  3. Arrestare il sistema di runtime (esempio: $ sudo /etc/init.d/codesyscontrol stop)

  4. Aprire /etc/CODESYSControl_User.cfg con autorizzazioni di amministratore: $ sudo nano /etc/CODESYSControl_User.cfg

  5. Nel [ComponentManager] sezione, aggiungi gli oggetti condivisi creati:

    [ComponentManager]
    Component.1=CmpFirstTest
    Component.2=CmpSomeOtherComponent
    ...

    Nota: il numero è un numero incrementale che non deve entrare in conflitto con i componenti esistenti.

  6. Avvia il sistema di runtime: $ sudo /etc/init.d/codesyscontrol start

    Ora puoi verificare se il componente è stato caricato: $ cat /tmp/codesyscontrol.log

Incluso il componente dinamico nella libreria IEC

Aggiungi il componente dinamico alla libreria IEC utilizzando la funzionalità "Integrazione codice C". Per ulteriori informazioni, vedere Integrazione del codice C nell'aiuto generale.

  1. Aprire la libreria IEC.

  2. In POU, aggiungere un Libreria C-Implementata oggetto.

  3. In questo oggetto, aggiungi un File oggetto per dispositivi:

    • Seleziona il componente dinamico (file) creato in precedenza e aggiungilo.

    • Specificare un nome componente adatto.

    • Seleziona il dispositivo adatto.

    Ora, quando si utilizza questa libreria con il dispositivo selezionato, il componente dinamico viene aggiunto automaticamente al sistema di runtime e può essere richiamato utilizzando le POU della libreria.

Altro

Restrizioni:

  • Con Extension SDK è possibile includere solo il codice C.

  • Non è possibile utilizzare un debugger per esaminare o eseguire il debug del codice C (ad esempio, come nel sistema di programmazione).

  • Il codice C non può "interagire" con il sistema di runtime o l'applicazione IEC. Questo significa:

    • L'accesso automatico alle variabili dell'applicazione IEC non è possibile.

    • L'accesso alla funzionalità del sistema runtime non è possibile. Tuttavia, l'accesso alle variabili dell'applicazione IEC è ovviamente possibile passandole a una funzione implementata in codice C by reference (ad esempio via POINTER).

Utilizzo dell'interfaccia solo come membro di Linux codesysuser gruppo di utenti

No

Separazione del processo

No