Appel d'une fonction externe
Ce mécanisme permet d'appeler une fonction externe dans une application IEC via un Unix Domain Socket. Cela vous permet de créer vos propres fonctionnalités. Dans le même temps, la séparation des processus est réalisée. En tant qu'interface dans CEI, le EXTAPI.UDSExternalFunction
bloc de fonction est fourni dans le ExtensionAPI
bibliothèque.En Python, la ExternalFunctionBase
class est utilisé à cette fin, ce qui est fourni dans l'exemple fourni.
Cet exemple explique également comment utiliser le mécanisme. L'exemple contient un projet CEI avec appel implémenté d'une fonction externe. De plus, l'exemple contient l'implémentation de la fonction appelée myExternalFunction
en Python.
Après CODESYS Control Extension Package l'installation, vous trouverez l'exemple UDSExternalCallExample.project
et le script Python uds_external_function.py
dans le répertoire suivant : C:\Program Files\CODESYS <version>\CODESYS\CODESYS Control SL Extension Package\<version>\Examples\ExternalCall
.
Exemple, application CEI
Dans le UDSExternalCallExample.project
exemple de projet, un nouveau myExternalFunction
bloc fonction est créé. Cela étend la EXTAPI.UDSExternalFunction
FB avec entrées et sorties de type DINT
.D'autres types de données sont également possibles.Au début, il faut passer le nom de la fonction à appeler en Python.Cette adresse doit être unique.
Le code suivant permet d'ajouter les entrées de la fonction externe de l'interface :
Result := THIS^.AddParameter('parameterIn1', 'DINT', TO_STRING(diIn1));
Le code suivant est ensuite utilisé pour appeler la fonction externe :
Result := THIS^.Call();
Le code suivant est utilisé pour interroger la valeur de retour de la fonction implémentée en Python :
Result := THIS^.GetParameter('parameterOut', 'DINT', ADR(sValue));
Les paramètres sont de type string
. En conséquence, il doit être transtypé dans le type de données souhaité.
Exemple, script Python
Important
Les exemples Python fournis pour l'API d'extension nécessitent Python 3.0.
Le inclus uds_external_function.py
l'échantillon fournit le ExternalFunctionBase
classe, qui fournit la communication Unix Domain Socket avec le système d'exécution pour cette fonctionnalité.
le myExternalFunction
la classe implémentée dans l'exemple étend la ExternalFunctionBase
classe.La Call()
fonction est nécessaire, qui est appelée à partir du mécanisme d'IEC. Les paramètres d'entrée et de sortie sont passés sous la forme de tuples de chaînes.
Exemple: {'parameterIn1': ('DINT', '11'), 'parameterIn2': ('DINT', '22')}
Dans l'exemple, le Call()
La fonction implémente une simple addition des deux paramètres d'entrée :
def Call(self, dictParams): in1 = int(dictParams['parameterIn1'][1]) in2 = int(dictParams['parameterIn2'][1]) dictRetParams = {} dictRetParams['parameterOut'] = 'DINT', in1 + in2 return dictRetParams
Copiez le script
uds_external_function.py
(situé dans le répertoireC:\Program Files\CODESYS <version>\CODESYS\CODESYS Control SL Extension Package\<version>\Examples\ExternalCall
après l'installation du CODESYS Control Extension Package) sur le dispositif cible.Exécutez le script
uds_external_function.py
.Lancez ensuite le
UDSExternalCallExample.project
exemple de projet dans CODESYS.Vous pouvez voir que le projet appelle le
myExternalFunction()
fonction du script Python et les deux paramètres d'entrée sont ajoutés.
Utilisation de l'interface uniquement en tant que membre de Linux | Oui |
Séparation de processus | Oui |