SDK d'extensions
Avec le SDK d'extension, vous pouvez implémenter vos propres fonctions en C et les appeler depuis l'application IEC.
Pour cette connexion, le code C est intégré dans le système d'exécution sous la forme d'un composant dynamique séparé (shared object
).
Il existe deux manières d'inclure :
Préparé sur le contrôleur : Le composant dynamique est déjà configuré pour le CODESYS système d'exécution (un
shared object
existe et est configuré sur le système Linux). Ensuite, seule la bibliothèque CEI correspondante est requise.Sous la forme d'une bibliothèque CEI avec un composant dynamique intégré. Rien ne doit être préparé sur le système Linux lui-même. Lors de l'utilisation de la bibliothèque CEI, le composant dynamique est automatiquement ajouté à la CODESYS système d'exécution et utilisé.
Dans les deux cas, l'utilisateur doit pouvoir créer un shared object
qui convient à l'architecture du système d'exécution (x64/ARM6/ARM7/AARCH64). Le SDK d'extension vous aide à créer ce type de composant dynamique (shared object
).
La section suivante décrit comment créer la bibliothèque et le composant dynamique pour les deux variantes.
Environnement de développement
Ouvert CODESYS et créer une nouvelle bibliothèque.
Définir le titre de la bibliothèque(Renseignements sur le projet, Résumé onglet) et enregistrez la bibliothèque sous le même nom.
Ajoutez les fonctions souhaitées et marquez-les comme Implémentation externe.
Dans le menu contextuel de la fonction dans le navigateur de projet, cliquez sur Propriétés. Sur le Construire onglet, sélectionnez Implémentation externe.
Remarque : La fonction doit contenir "
_cext
" dans le nom.
Générez maintenant les fichiers *c et *m4 :
Cliquez sur
.Sélectionner Fichier d'interface M4 et fichier stub C.
Sélectionnez l'emplacement de sauvegarde.
Linux
Copiez le SDK d'extension sur un système Linux qui dispose de l'environnement de compilation correspondant pour le système cible.
Par défaut, vous trouverez le SDK d'extension sous :
C:\Program Files\CODESYS <version>\CODESYS\CODESYS Control SL Extension Package\<version>\ExtensionSDK
. Le répertoire sera appelé<SDK DIR>
dans les étapes suivantes.Créez un nouveau dossier dans lequel vous créez l'implémentation C. Ce dossier est dans le suivant
<PROJECT DIR>
.Aller vers
<PROJECT DIR>
et courir:$ make -f <SDKDIR>/makefile newproject
Copiez les fichiers *c et *m4 que vous avez créés dans l'environnement de développement pour
<PROJECT DIR>
.Implémenter les fonctions en C.
Créez l'objet partagé :
$ make all
le
shared object
est généré et situé dans<PROJECT DIR>/out/libCmpMyTest.so
.
Vous avez ainsi créé un composant dynamique qui peut désormais être appelé depuis l'application CEI via votre bibliothèque CEI. Détails sur le processus de construction (make
) peut également être trouvé dans les makefiles et README file
dans le SDK d'extension.
Choisissez maintenant l'une des deux manières suivantes d'inclure le composant :
Y compris le composant dynamique
Vous disposez des options suivantes pour inclure le composant :
Inclure le composant dynamique sur l'appareil cible
Cette méthode vous permet d'inclure l'objet partagé précédemment créé en C dans le système d'exécution. Aucune autorisation système supplémentaire n'est requise pour l'utilisateur et la bibliothèque peut être déployée sur les périphériques à l'aide de méthodes familières.
Copiez l'objet partagé créé ci-dessus dans le système d'exécution.
Copiez l'objet partagé dans
/usr/lib/
ou un répertoire de bibliothèque équivalent où les bibliothèques sont trouvées par le système.Arrêtez le système d'exécution (exemple :
$ sudo /etc/init.d/codesyscontrol stop
)Ouvert
/etc/CODESYSControl_User.cfg
avec les autorisations d'administrateur :$ sudo nano /etc/CODESYSControl_User.cfg
Dans le
[ComponentManager]
section, ajoutez les objets partagés créés :[ComponentManager] Component.1=CmpFirstTest Component.2=CmpSomeOtherComponent ...
Remarque : Le numéro est un numéro incrémentiel qui ne doit pas entrer en conflit avec les composants existants.
Démarrez le système d'exécution :
$ sudo /etc/init.d/codesyscontrol start
Vous pouvez maintenant vérifier si le composant a été chargé :
$ cat /tmp/codesyscontrol.log
Inclusion du composant dynamique dans la bibliothèque IEC
Ajoutez le composant dynamique à la bibliothèque CEI à l'aide de la fonctionnalité "Intégration du code C". Pour plus d'informations, voir Intégration du code C dans l'aide générale.
Ouvrez la bibliothèque CEI.
Dans POU, ajouter un Bibliothèque implémentée en C objet.
Dans cet objet, ajoutez un Fichier objet pour les appareils:
Sélectionnez le composant dynamique (fichier) créé précédemment et ajoutez-le.
Spécifiez un nom de composant approprié.
Sélectionnez l'appareil approprié.
Désormais, lors de l'utilisation de cette bibliothèque avec l'appareil sélectionné, le composant dynamique est automatiquement ajouté au système d'exécution et peut être appelé à l'aide des POU de la bibliothèque.
Autre
Restrictions :
Avec le SDK d'extension, seul le code C peut être inclus.
Un débogueur ne peut pas être utilisé pour examiner ou déboguer le code C (par exemple, comme dans le système de programmation).
Le code C ne peut pas "interagir" avec le système d'exécution ou l'application CEI. Ça signifie:
L'accès automatique aux variables de l'application CEI n'est pas possible.
L'accès aux fonctionnalités du système d'exécution n'est pas possible. Cependant, l'accès aux variables de l'application CEI est bien sûr possible en les passant à une fonction implémentée en code C
by reference
(par exemple, viaPOINTER
).
Utilisation de l'interface uniquement en tant que membre de Linux | Non |
Séparation de processus | Non |