Sauter la navigation

Documentation FlexPro 2025

Python

Python est un langage d'interprétation open source facile à apprendre, pour lequel de nombreuses bibliothèques sont disponibles dans des domaines tels que l'intelligence artificielle, les statistiques, le numérique et bien d'autres encore. Une introduction au langage de programmation Python n'est pas l'objet de cette documentation. Vous les trouverez par exemple sur https://www.python.org/doc/.

Python est très facilement extensible, ce qui a permis une intégration harmonieuse dans FlexPro. Les types de données Array nécessaires au traitement des données de mesure sont fournis par la bibliothèque Python bien connue NumPy. Celles-ci constituent la base de l'échange de données avec FlexPro, raison pour laquelle NumPy est également installé lors de l'installation de FlexPro. Vous trouverez des informations sur NumPy sur https://numpy.org/doc/stable/.

Le module flexpro

Lors de l'initialisation de Python dans FlexPro, le module Python flexpro est enregistré et représente l'interface avec FlexPro.

Les classes Python flexpro.DataObject et flexpro.Object représentent des objets de données FlexPro et d'autres objets FlexPro, ce qui vous permet d'accéder à leurs propriétés. Vous créez des objets de ces classes à l'aide de la fonction flexpro.object(), à laquelle vous transmettez comme argument le chemin et le nom dans la base de données d'objets de l'objet auquel vous souhaitez accéder.

o = flexpro.object(r'\Data\Dataset1') crée un DataObject qui représente l'ensemble de données "\Data\Dataset1".

La variable this est déjà initialisée dans chaque formule Python et contient le DataObject qui représente la formule Python elle-même.

this.name renvoie le nom de la formule Python sous forme de chaîne de caractères.

this.data = np.linspace(0, 10, 100) renvoie une série de données linéaires comme résultat de la formule.

Remarque  Dans FPScript, chaque instruction fournit un résultat qui est automatiquement attribué à la formule comme résultat. Ce n'est pas le cas en Python, où vous devez utiliser une affectation explicite this.data = ... . Cela vaut également pour les résultats intermédiaires que vous souhaitez voir s'afficher dans la fenêtre d’espionnage à l'issue du calcul de la formule, lorsque vous effectuez un débogage.

L'objet flexpro.Data

Les données de FlexPro se distinguent des données de Python ou de NumPy en ce sens qu'elles peuvent avoir des unités et des structures de données composées avec des composantes Y, X et Z. Il existe également des listes en Python, mais celles-ci ne prennent pas en charge les éléments nommés. C'est pourquoi le module flexpro met à disposition le type flexpro.Data, qui peut représenter les données FlexPro avec toutes leurs propriétés.

Vous créez un objet flexpro.Data avec des données FlexPro simples ou composées à l'aide du constructeur flexpro.Data().

flexpro.Data(80.3, "dB") crée une valeur scalaire en virgule flottante avec l'unité "dB".

Cet exemple crée un signal sinusoïdal avec des composantes Y et X unitaires et renvoie le résultat sous forme de formule :

x = np.linspace(0, 10, 100)
y = np.sin(x)
this.data = flexpro.Data(y, "V", x, "s")

Si vous souhaitez omettre les unités, par exemple parce que vous les avez déjà saisies dans la boîte de dialogue des propriétés de la formule, vous devez nommer les arguments :

this.data = flexpro.Data(value_y = y, value_x = x)

Pour créer une liste FlexPro comportant deux éléments de liste nommés, procédez par exemple comme suit :

list = flexpro.named_list("Signal1", s1, "Signal2", s2)

Pour concaténer des listes FlexPro, vous devez utiliser la fonction flexpro.concat() au lieu de l'opérateur +, car celui-ci ajouterait les éléments de la liste élément par élément :

list = flexpro.concat(list, flexpro.named_list("Signal3", s3))

De la même manière, pour concaténer à une liste FlexPro, utilisez la fonction flexpro.append() au lieu de l'opérateur += :

flexpro.append(list, flexpro.named_list("Signal4", s4))

Vous pouvez créer des listes sans nom d'élément soit avec l'opérateur Python [ ... ], soit avec la fonction flexpro.list(). Cette dernière option est légèrement plus efficace, car elle ne nécessite aucune conversion au format de données FlexPro lors du transfert vers FlexPro.

La propriété data de la classe flexpro.DataObject fournit les données de l'objet de données en tant qu'objet flexpro.Data.

data = flexpro.object(r'\Data Set').data

Si vous souhaitez accéder directement aux données, utilisez la fonction flexpro.call() :

data = flexpro.call(r'\Data Set')

Pour appeler une fonction FPScript ou Python, vous devez passer les arguments à flexpro.call() :

data = flexpro.call(r'\MyFunction', flexpro.call(r'\Data Set'), flexpro.Data(5, 'V'))

La classe flexPro.Data dispose des propriétés value et unit. value fournit les données numériques comme type de données Python ou NumPy Array et unit l'unité comme chaîne de caractères.

flexpro.Data(1.3, "V").value renvoie 1.3 sous forme de nombre à virgule flottante.

flexpro.Data(1.3, "V").unit renvoie "V" sous forme de chaîne de caractères.

Dans le cas d'une structure de données composée, vous sélectionnez d'abord la composante :

signal = flexpro.call(r'\Data\Signal1')

signal.y renvoie un objet flexpro.Data qui représente la composante Y avec l'unité.

signal.y.value renvoie les données du composant Y sous forme de tableau NumPy.

signal.y.unit renvoie "V" comme chaîne de caractères.

Si une liste est disponible, commencez par sélectionner l'élément :

list["Signal1"] renvoie un objet flexpro.Data qui représente les données de l'élément de liste "Signal1".

Pour les listes sans nom ou les noms non uniques, vous devez utiliser un index numérique :

list[0]

A un objet flexpro.Data qui provient d'un objet de données, FlexPro attache les informations d'en-tête de cet objet de données. Il s'agit essentiellement des propriétés que vous pouvez indiquer dans l'onglet Général de l'objet de données.

Vous pouvez accéder à ces propriétés en lecture et en écriture :

data = flexpro.call(r'\Signal')

data.unit_y renvoie l'unité Y de l'objet de données dont provient la valeur, c'est-à-dire de "Signal".

data.comments_x = "heure"        Affecte un commentaire X aux données. L'accès en écriture ne se fait toutefois pas sur l'objet de données "Signal" dont provient data, mais sur une copie locale de cet attribut affectée à l'objet Data.

Utiliser les fonctions FPScript dans Python

Le module flexpro vous permet d'accéder à toutes les fonctions FPScript dans Python. Les arguments sont convertis par l'appel en objets flexpro.Data s'ils ne sont pas déjà de ce type. Le résultat est renvoyé sous forme d'objet flexpro.Data.

Opérations Python prises en charge

Vous pouvez également utiliser un grand nombre d'opérations Python avec des objets flexpro.Data. Les opérations arithmétiques, l'opération de comparaison et quelques fonctions de conversion de type sont prises en charge. Lors du calcul avec des objets flexpro.Data en Python, les unités sont également prises en compte, comme dans FPScript.

Le tableau suivant vous donne un aperçu et renvoie à l'opérateur FPScript équivalent qui est utilisé dans chaque cas.

Opérateur/Fonction Python

Opérateur/Fonction FPScript

A + B, A += B

Addition (+)

A - B, A -= B

Soustraction (-)

-A

Négation (-)

A * B, A *= B

Multiplication (*)

A / B, A /= B
A // B, A //= B

Division (/)

A % B, A %= B

Reste de la division (Mod)

A @ B, A @= B

MatrixMultiplication()

abs(A)

Absolute()

A ** B, pow(A, B. C)

Exponentation (^)

~A

NON binaire (~)

A | B, A |= B

OU binaire (|)

A & B, A &= B

ET binaire (&)

A ^ B, A ^= B

Ou exclusif par bit (XOr)

A >> B, A >>= B

Décalage binaire vers la droite (>>)

A << B, A <<= B

Décalage binaire vers la gauche (<<)

int(A)

Integer64

float(A)

FloatingPoint64

bool(A)

Booléen

A == B

Égal à (==)

A >= B

Supérieur-ou égal à (>=)

A > B

Supérieur à (>)

A <= B

Inférieur ou égal à (<=)

A < B

Inférieur à (<)

A != B

Inégal à (<>)

Pour les opérateurs FPScript pour lesquels Python n'a pas d'opérateur équivalent, il existe des fonctions correspondantes dans le module flexpro.

Le tableau suivant présente les opérateurs et les fonctions Python correspondantes :

Opérateur FPScript

Fonction Python

Signe de polarité (#)

flexpro.sign()

Concaténer

flexpro.bundle()

Série de données

flexpro.lin_series()

Liste

flexpro.list(), flexpro.named_list()

Concaténation ( 🙂

flexpro.concat()

Multiplication (#)

flexpro.mult()

Conversion de type de données *)

flexpro.ChangeDataType()

AbsoluteTime

flexpro.absolute_time()

RelativeTime

flexpro.relative_time()

Unité *)

flexpro.ChangeUnit()

Value

flexpro.value()

Nombre de complexes

flexpro.complex()

Complexe conjugué

flexpro.conj()

Index

flexpro.idx()

Indice de valeur

flexpro.validx()

Indirection

flexpro.call(), flexpro.object()

Élément de liste

flexpro.listidx()

Ajouter

flexpro.append()

Affectation indexée

flexpro.idx_assign(), flexpro.validx_assign()

*) Il n'existe pas de fonction Python pour cet opérateur, car la fonctionnalité est déjà couverte par la fonction FPScript mentionnée.

Voir aussi

Propriétés de Python

 

 

 

 

 

 

 

 

 

Documentation FlexPro 2025

Python

Python est un langage d'interprétation open source facile à apprendre, pour lequel de nombreuses bibliothèques sont disponibles dans des domaines tels que l'intelligence artificielle, les statistiques, le numérique et bien d'autres encore. Une introduction au langage de programmation Python n'est pas l'objet de cette documentation. Vous les trouverez par exemple sur https://www.python.org/doc/.

Python est très facilement extensible, ce qui a permis une intégration harmonieuse dans FlexPro. Les types de données Array nécessaires au traitement des données de mesure sont fournis par la bibliothèque Python bien connue NumPy. Celles-ci constituent la base de l'échange de données avec FlexPro, raison pour laquelle NumPy est également installé lors de l'installation de FlexPro. Vous trouverez des informations sur NumPy sur https://numpy.org/doc/stable/.

Le module flexpro

Lors de l'initialisation de Python dans FlexPro, le module Python flexpro est enregistré et représente l'interface avec FlexPro.

Les classes Python flexpro.DataObject et flexpro.Object représentent des objets de données FlexPro et d'autres objets FlexPro, ce qui vous permet d'accéder à leurs propriétés. Vous créez des objets de ces classes à l'aide de la fonction flexpro.object(), à laquelle vous transmettez comme argument le chemin et le nom dans la base de données d'objets de l'objet auquel vous souhaitez accéder.

o = flexpro.object(r'\Data\Dataset1') crée un DataObject qui représente l'ensemble de données "\Data\Dataset1".

La variable this est déjà initialisée dans chaque formule Python et contient le DataObject qui représente la formule Python elle-même.

this.name renvoie le nom de la formule Python sous forme de chaîne de caractères.

this.data = np.linspace(0, 10, 100) renvoie une série de données linéaires comme résultat de la formule.

Remarque  Dans FPScript, chaque instruction fournit un résultat qui est automatiquement attribué à la formule comme résultat. Ce n'est pas le cas en Python, où vous devez utiliser une affectation explicite this.data = ... . Cela vaut également pour les résultats intermédiaires que vous souhaitez voir s'afficher dans la fenêtre d’espionnage à l'issue du calcul de la formule, lorsque vous effectuez un débogage.

L'objet flexpro.Data

Les données de FlexPro se distinguent des données de Python ou de NumPy en ce sens qu'elles peuvent avoir des unités et des structures de données composées avec des composantes Y, X et Z. Il existe également des listes en Python, mais celles-ci ne prennent pas en charge les éléments nommés. C'est pourquoi le module flexpro met à disposition le type flexpro.Data, qui peut représenter les données FlexPro avec toutes leurs propriétés.

Vous créez un objet flexpro.Data avec des données FlexPro simples ou composées à l'aide du constructeur flexpro.Data().

flexpro.Data(80.3, "dB") crée une valeur scalaire en virgule flottante avec l'unité "dB".

Cet exemple crée un signal sinusoïdal avec des composantes Y et X unitaires et renvoie le résultat sous forme de formule :

x = np.linspace(0, 10, 100)
y = np.sin(x)
this.data = flexpro.Data(y, "V", x, "s")

Si vous souhaitez omettre les unités, par exemple parce que vous les avez déjà saisies dans la boîte de dialogue des propriétés de la formule, vous devez nommer les arguments :

this.data = flexpro.Data(value_y = y, value_x = x)

Pour créer une liste FlexPro comportant deux éléments de liste nommés, procédez par exemple comme suit :

list = flexpro.named_list("Signal1", s1, "Signal2", s2)

Pour concaténer des listes FlexPro, vous devez utiliser la fonction flexpro.concat() au lieu de l'opérateur +, car celui-ci ajouterait les éléments de la liste élément par élément :

list = flexpro.concat(list, flexpro.named_list("Signal3", s3))

De la même manière, pour concaténer à une liste FlexPro, utilisez la fonction flexpro.append() au lieu de l'opérateur += :

flexpro.append(list, flexpro.named_list("Signal4", s4))

Vous pouvez créer des listes sans nom d'élément soit avec l'opérateur Python [ ... ], soit avec la fonction flexpro.list(). Cette dernière option est légèrement plus efficace, car elle ne nécessite aucune conversion au format de données FlexPro lors du transfert vers FlexPro.

La propriété data de la classe flexpro.DataObject fournit les données de l'objet de données en tant qu'objet flexpro.Data.

data = flexpro.object(r'\Data Set').data

Si vous souhaitez accéder directement aux données, utilisez la fonction flexpro.call() :

data = flexpro.call(r'\Data Set')

Pour appeler une fonction FPScript ou Python, vous devez passer les arguments à flexpro.call() :

data = flexpro.call(r'\MyFunction', flexpro.call(r'\Data Set'), flexpro.Data(5, 'V'))

La classe flexPro.Data dispose des propriétés value et unit. value fournit les données numériques comme type de données Python ou NumPy Array et unit l'unité comme chaîne de caractères.

flexpro.Data(1.3, "V").value renvoie 1.3 sous forme de nombre à virgule flottante.

flexpro.Data(1.3, "V").unit renvoie "V" sous forme de chaîne de caractères.

Dans le cas d'une structure de données composée, vous sélectionnez d'abord la composante :

signal = flexpro.call(r'\Data\Signal1')

signal.y renvoie un objet flexpro.Data qui représente la composante Y avec l'unité.

signal.y.value renvoie les données du composant Y sous forme de tableau NumPy.

signal.y.unit renvoie "V" comme chaîne de caractères.

Si une liste est disponible, commencez par sélectionner l'élément :

list["Signal1"] renvoie un objet flexpro.Data qui représente les données de l'élément de liste "Signal1".

Pour les listes sans nom ou les noms non uniques, vous devez utiliser un index numérique :

list[0]

A un objet flexpro.Data qui provient d'un objet de données, FlexPro attache les informations d'en-tête de cet objet de données. Il s'agit essentiellement des propriétés que vous pouvez indiquer dans l'onglet Général de l'objet de données.

Vous pouvez accéder à ces propriétés en lecture et en écriture :

data = flexpro.call(r'\Signal')

data.unit_y renvoie l'unité Y de l'objet de données dont provient la valeur, c'est-à-dire de "Signal".

data.comments_x = "heure"        Affecte un commentaire X aux données. L'accès en écriture ne se fait toutefois pas sur l'objet de données "Signal" dont provient data, mais sur une copie locale de cet attribut affectée à l'objet Data.

Utiliser les fonctions FPScript dans Python

Le module flexpro vous permet d'accéder à toutes les fonctions FPScript dans Python. Les arguments sont convertis par l'appel en objets flexpro.Data s'ils ne sont pas déjà de ce type. Le résultat est renvoyé sous forme d'objet flexpro.Data.

Opérations Python prises en charge

Vous pouvez également utiliser un grand nombre d'opérations Python avec des objets flexpro.Data. Les opérations arithmétiques, l'opération de comparaison et quelques fonctions de conversion de type sont prises en charge. Lors du calcul avec des objets flexpro.Data en Python, les unités sont également prises en compte, comme dans FPScript.

Le tableau suivant vous donne un aperçu et renvoie à l'opérateur FPScript équivalent qui est utilisé dans chaque cas.

Opérateur/Fonction Python

Opérateur/Fonction FPScript

A + B, A += B

Addition (+)

A - B, A -= B

Soustraction (-)

-A

Négation (-)

A * B, A *= B

Multiplication (*)

A / B, A /= B
A // B, A //= B

Division (/)

A % B, A %= B

Reste de la division (Mod)

A @ B, A @= B

MatrixMultiplication()

abs(A)

Absolute()

A ** B, pow(A, B. C)

Exponentation (^)

~A

NON binaire (~)

A | B, A |= B

OU binaire (|)

A & B, A &= B

ET binaire (&)

A ^ B, A ^= B

Ou exclusif par bit (XOr)

A >> B, A >>= B

Décalage binaire vers la droite (>>)

A << B, A <<= B

Décalage binaire vers la gauche (<<)

int(A)

Integer64

float(A)

FloatingPoint64

bool(A)

Booléen

A == B

Égal à (==)

A >= B

Supérieur-ou égal à (>=)

A > B

Supérieur à (>)

A <= B

Inférieur ou égal à (<=)

A < B

Inférieur à (<)

A != B

Inégal à (<>)

Pour les opérateurs FPScript pour lesquels Python n'a pas d'opérateur équivalent, il existe des fonctions correspondantes dans le module flexpro.

Le tableau suivant présente les opérateurs et les fonctions Python correspondantes :

Opérateur FPScript

Fonction Python

Signe de polarité (#)

flexpro.sign()

Concaténer

flexpro.bundle()

Série de données

flexpro.lin_series()

Liste

flexpro.list(), flexpro.named_list()

Concaténation ( 🙂

flexpro.concat()

Multiplication (#)

flexpro.mult()

Conversion de type de données *)

flexpro.ChangeDataType()

AbsoluteTime

flexpro.absolute_time()

RelativeTime

flexpro.relative_time()

Unité *)

flexpro.ChangeUnit()

Value

flexpro.value()

Nombre de complexes

flexpro.complex()

Complexe conjugué

flexpro.conj()

Index

flexpro.idx()

Indice de valeur

flexpro.validx()

Indirection

flexpro.call(), flexpro.object()

Élément de liste

flexpro.listidx()

Ajouter

flexpro.append()

Affectation indexée

flexpro.idx_assign(), flexpro.validx_assign()

*) Il n'existe pas de fonction Python pour cet opérateur, car la fonctionnalité est déjà couverte par la fonction FPScript mentionnée.

Voir aussi

Propriétés de Python