Mode d'emploi | Irai Automdaq Manuel utilisateur

Ajouter à Mes manuels
24 Des pages
Mode d'emploi | Irai Automdaq Manuel utilisateur | Fixfr
AUTOMDAQ
© 2012 IRAI
révision 2
1
AUTOMDAQ
Sommaire
AUTOMDAQ ............................................................................................................... 1
Généralités.............................................................................................................. 5
Pré requis................................................................................................................ 5
Création des schémas ............................................................................................ 5
Principe de fonctionnement..................................................................................... 5
Liste des blocs ...................................................................................................... 10
Acquisition ......................................................................................................... 11
Affichage ........................................................................................................... 13
Math .................................................................................................................. 15
Saturation .......................................................................................................... 15
Filtre .................................................................................................................. 15
Vers Automlab / Moyenne ................................................................................. 15
Blocs utilisateurs................................................................................................ 15
3
AUTOMDAQ
Généralités
AUTOMDAQ est un module d’AUTOMGEN permettant de réaliser des acquisitions,
du traitement de données ainsi que l'affichage de celles-ci.
Pré requis
AUTOMDAQ nécessite AUTOMGEN V>=8.105.
AUTOMDAQ peut fonctionner avec les cartes d'acquisitions LabJack U12, National
Instrument (6008,6009 par exemple) ou avec tout système capable d'envoyer des
données sur une liaison série (une carte Arduino par exemple).
Création des schémas
La création des schémas est réalisée sur des folios AUTOMSIM d’AUTOMGEN. Les
schémas ainsi réalisés peuvent cohabiter avec les autres éléments d’une application
AUTOMGEN. Les blocs sont accessibles par un clic droit sur le folio AUTOMSIM
puis la sélection de « Ajouter un objet » puis la rubrique « Automdaq ».
Principe de fonctionnement
Chaque bloc peut posséder une ou plusieurs entrées sur la partie gauche du bloc et
une ou plusieurs sorties sur la partie droite. Les blocs peuvent également contenir
des paramètres.
L'objet "Acquisition" permet de recevoir des valeurs provenant d'un ou plusieurs
canaux d'une source d'acquisition (cartes LabJack U12,National Instrument ou
liaison série).
5
AUTOMDAQ
L'objet "Affichage" permet d'afficher les données collectées et éventuellement de les
exporter vers Microsoft Excel.
Exemple : création d'un oscilloscope affichant un signal reçu sur le canal 1 d'une
carte National Instrument 6009 avec un temps d'échantillonnage de 10 Khz.
6
AUTOMDAQ
7
AUTOMDAQ
8
AUTOMDAQ
9
AUTOMDAQ
Copie des données vers Excel
En cliquant avec le bouton droit de la souris sur un bloc affichage, un menu permet
de copier les données vers Excel. Exemple :
10
AUTOMDAQ
Liste des blocs
Acquisition
ACQUISITION
Ce bloc permet de réaliser l'acquisition de données.
11
AUTOMDAQ
"Source de données" permet de sélectionner le type de système d'acquisition :
LabJack U12, NI (National Instrument), COM PORT (liaison série).
Les zones "Status" permettent d'observer d'éventuelles erreurs lors de l'initialisation
du système d'acquisition (paramètres non supportés par exemple) ou pendant
l'acquisition.
Par défaut, un aperçu des données est affiché sur l'objet pendant l'acquisition,
l'option "Ne pas afficher les valeurs sur l'objet" permet de désactiver cet affichage.
Paramètres spécifiques à la carte LabJack U12
Nombre d'entrées analogiques à lire : choix du nombre de canaux à utiliser : 1, 2 ou
4
Nombre de lectures réalisées à chaque acquisition : nombre d'échantillons transférés
pour chaque canaux de la carte LabJack U12 vers le PC. Ce paramètre peut être
modifié en accord avec la fréquence d'échantillonnage.
Nombre de valeurs stockées dans l'objet pour chaque canal : l'objet mémorise en
interne le nombre de valeurs spécifié par ce paramètre pour chaque canal. Exemple :
pour une fréquence d'échantillonnage de 1000 Hz, si ce paramètre est égal à 10000,
on stockera des échantillons correspondant à 10 secondes de temps d'acquisition.
Nombre d'acquisitions par seconde : la fréquence d'échantillonnage pour chaque
canal. Cette fréquence est limitée par constitution par la carte LabJack12 : entre 400
et 8192 échantillons / seconde.
Valeurs mini et maxi : la plus petite et la plus grande valeur pouvant être acquise par
la carte.
Paramètres spécifiques aux cartes NI
Nombre d'entrées analogiques à lire : choix du nombre de canaux à utiliser : 1, 2 ou
4
Nombre d'acquisition par seconde : la fréquence d'échantillonnage pour chaque
canal. Cette fréquence est limitée par constitution pour chaque type de cartes
National Instrument (se référer aux informations fournies par National Instrument).
Nombre de lectures réalisées à chaque acquisition : nombre d'échantillons transférés
pour chaque canal de la carte NI vers le PC. Ce paramètre peut être modifié en
accord avec la fréquence d'échantillonnage.
Nombre de valeurs stockées dans l'objet pour chaque canal : l'objet mémorise en
interne le nombre de valeurs spécifié par ce paramètre pour chaque canal. Exemple :
pour une fréquence d'échantillonnage de 1000 Hz, si ce paramètre est égal à 10000,
on stockera des échantillons correspondant à 10 secondes de temps d'acquisition.
12
AUTOMDAQ
Nom des canaux : doit être en accord avec la syntaxe NI du canal associé à chaque
voix de la carte. Par exemple Dev1/ai0 = première voix analogique de la carte Dev1.
Valeurs mini et maxi : la plus petite et la plus grande valeur pouvant être acquise par
la carte.
Paramètres spécifiques l'acquisition sur liaison série
Numéro de port COM : numéro du port de communication, par exemple 2 pour
utiliser COM2.
Vitesse en baud : la vitesse en bits/seconde, par exemple 115200 pour 115200
bauds.
Nombre d'entrées analogiques à lire : choix du nombre de canaux à utiliser : 1, 2, 3
ou 4
Nombre de lectures réalisées à chaque acquisition : nombre d'échantillons
composant les paquets de données transférés pour chaque canal de l'objet
acquisition vers les objets connectés. Ce paramètre peut être modifié en accord avec
la fréquence d'échantillonnage.
Nombre de valeurs stockées dans l'objet pour chaque canal : l'objet mémorise en
interne le nombre de valeurs spécifié par ce paramètre pour chaque canal. Exemple :
pour une fréquence d'échantillonnage de 1000 Hz, si ce paramètre est égal à 10000,
on stockera des échantillons correspondant à 10 secondes de temps d'acquisition.
Affichage
#1
#2
AFFICHAGE
Cet objet permet d'afficher les données, il peut être utilisé à la manière d'un
oscilloscope ou d'un afficheur de courbes de tendance.
13
AUTOMDAQ
"Nombre d'entrées" permet de spécifier le nombre de canaux à afficher (maximum
4).
Paramètres
Nom des canaux : modifie le nom affiché pour chaque canal ainsi que le libellé de la
colonne associée lorsqu'on exporte les données vers Excel.
Valeurs mini et maxi : défini les valeurs pour une mise à l'échelle des données
affichées. Si par exemple mini=0 et maxi=5 alors 0 correspondra au bas de la zone
d'affichage et 5 au haut de celle-ci.
Nombre de valeurs stockées : défini la nombre de valeurs qui seront stockées dans
l'objet et affichées. Le côté droit de l'affichage affiche les données acquises le plus
récemment.
14
AUTOMDAQ
Synchronisation : permet de définir un des canaux pour la synchronisation des
données, une valeur et le type de front. L'affichage est synchronisé (à la manière de
la fonction trigger sur un oscilloscope) lorsque la valeur acquise sur le canal
sélectionné franchi le niveau spécifié avec le type de front spécifié. Le paramètre
"Espacement des valeurs" permet de tester une variation sur des échantillons
espacés afin d'éviter une fausse synchronisation sur un signal parasité.
Math
ADD
SUB
MUL
DIV
MOYENNE
Ces blocs réalisent des opérations mathématiques entre le ou les canaux d'entrée et
le canal de sortie.
Saturation
SATURATION
Ce bloc réalise une saturation par rapport à ses paramètres min et max.
Filtre
FILTRE
Ce bloc réalise un filtrage par calcul de moyenne sur le nombre d'échantillons défini
dans ses paramètres.
Vers Automlab / Moyenne
Calcul la moyenne sur le nombre d'échantillons mémorisé dans l'objet et place le
résultat sur un connecteur Automlab.
Blocs utilisateurs
Les blocs utilisateurs permettent de créer des blocs personnalisés programmés en
langage littéral ST (seules les équations numériques sont supportées) ou en langage
C. Les blocs utilisateurs possèdent de 1 à 4 canaux en entrées et de 1 à 4 canaux en
sortie. Les blocs proposés dans la bibliothèque utilisent les blocs utilisateurs, pour
observer l'ensemble de leurs paramètres, y compris le code, laissez la touche Shift
enfoncée lorsque vous accédez aux propriétés de l'objet. Exemple :
15
AUTOMDAQ
16
AUTOMDAQ
Flux de données
Le principe de fonctionnement des flux de données est le suivant dans Automdaq : à
chaque acquisition d'un paquet de données sur l'ensemble des canaux d'un système
d'acquisition par un objet "Acquisition", le paquet est transmis à chaque objet
connecté sur chaque connexion de sortie, cette transmission est réalisée en cascade
sur les objets connectés à cet objet et ainsi de suite jusqu'à la fin de la chaîne.
Chaque objet possède un buffer interne dont la longueur est modifiable dans les
paramètres des objets. Si ce buffer ne peut pas contenir les données transmises
alors les données les plus anciennes sont supprimées.
Le code écrit dans les blocs utilisateurs est exécuté à chaque fois qu'un paquet de
donnée arrive.
17
AUTOMDAQ
Pour accéder au code des objets utilisateurs, maintenez la touche Shift du clavier
enfoncée lors de l'accès aux propriétés de ceux-ci.
Bloc utilisateur langage ST
Le code littéral écrit pour ce type de bloc défini une équation pour mettre en relation
un ou plusieurs flux de sortie avec un ou plusieurs flux d'entrée. Le code s'applique
uniquement au paquet de données qui vent d'être reçu par l'objet. Le code ne peut
pas accéder aux valeurs présentent dans le buffer de l'objet. L'objet Bloc utilisateur
Langage C ne possède pas cette limitation (voir plus loin).
L'équation est de la forme :
flux de sortie=F(flux d'entrée)
Exemple d'équation :
OUTPUT0:=INPUT0+INPUT1;
qui signifie : Premier flux de sortie = premier flux d'entrée + deuxième flux d'entrée
La syntaxe OUTPUTx avec x compris entre 0 et 3 permet de référencer les flux de
sorties 1 à 4, la syntaxe INPUTx avec x compris entre 0 et 3 permet de référencer les
flux d'entrée 1 à 4.
La syntaxe ETIME permet de référencer la valeur du temps écoulé entre 2
scrutations exprimée en seconde (valeur décimale).
La syntaxe TIME permet de référencer la valeur du temps écoulé depuis la première
acquisition.
Bloc utilisateur langage C
Le code écrit en langage C pour ce type de bloc défini une fonction qui reçoit en
paramètre des pointeurs sur chacun des flux d'entrée et de sortie du bloc ainsi que la
longueur du paquet de données arrivées et la longueur des données dans le buffer
de l'objet.
Le prototype de la fonction est :
__declspec(dllexport)
void compute2(
float *fi0,
float *fi1,
float *fi2,
float *fi3,
float *fo0,
float *fo1,
float *fo2,
float *fo3,
unsigned len,
18
AUTOMDAQ
unsigned fullen,
float ETIME,
float TIME,
int b0)
fi0 à fi3 : pointeurs sur le début de chacun flux de données possibles correspondant
au 4 entrées possibles du bloc. Si un canal n'est pas défini, le pointeur est NULL.
len : longueur du paquet de données arrivé en nombre de valeurs. On assume que la
même quantité de données vient d'arriver sur chaque canal.
fo0 à fo3 : pointeurs sur le buffer correspondant au flux de sortie associé à chaque
sortie du bloc. Si un canal de sortie n'est pas défini, le pointeur est NULL. Chaque
buffer de sortie à une taille de 'len' valeurs (il sort autant de données du bloc que
celles qui entrent).
fullen : longueur des données du buffer interne pour chaque canal.
ETIME : temps écoulé en seconde entre deux appels
TIME : temps écoulé depuis le début des acquisitions
b0 : 1 au premier appel, 0 ensuite
Remarques :
- lorsque la fonction est appelée, le paquet de données nouvellement arrivé est
comptabilisé dans fullen.
Exemple de l'évolution des valeurs de len et fullen pour une taille de paquet de
données de 100 et un buffer interne de 500 :
Appel numéro
1
2
3
4
5
6 et suivants
Len
100
100
100
100
100
100
fullen
100
200
300
400
500
500
- les valeurs du buffer interne sont accessibles en décrémentant les pointeurs fi0 à
fi3.
Paramètres
La zone "paramètres utilisateurs" de l'objet permet de définir des paramètres
accessibles à l'utilisateur du bloc. La syntaxe {nom de paramètre} permet de
référencer ceux-ci.
19
AUTOMDAQ
Exemple de code : génération de la moyenne sur un flux de sortie à partir d'un flux
d'entrée :
__declspec(dllexport) void compute2(float *fi0,float *fi1,float *fi2,float
*fi3,float *fo0,float *fo1,float *fo2,float *fo3,unsigned len,unsigned
fullen,float ETIME,float TIME,int b0)
{
unsigned count;
// Boucle de génération de chaque valeur du flux de sortie
for(count=0;count<len;count++)
{
float sum; // Pour totaliser les n valeurs précédentes
int count2;
int flen;
// Calcul de ma longueur des données disponibles pour le calcul
// de la moyenne
flen=count+(fullen-len);
sum=fi0[count];
for(count2=1;count2<=flen;count2++)
{
sum+=fi0[count-count2];
}
// Calcul de la moyenne : total/nombre de valeurs
fo0[count]=sum/(flen+1);
}
}
20
AUTOMDAQ
Bloc utilisateur hybride "vers Automlab"
Ce bloc permet de générer des valeurs sur des sorties (1 à 4) sur lesquels ont peut
connecter des blocs AUTOMLAB à partir des entrées de flux Automdaq. Ces blocs
sont programmés en langage C. Les mots clés OUTPUT0 à OUTPU3 permettent de
référencer les sorties Automlab du bloc.
Exemple de code d'un bloc de calcul d'une moyenne.
float sum=0;
BEGINLOOP
sum=sum+INPUT0;
ENDLOOP
OUTPUT0=sum/LOOPLEN;
21
AUTOMDAQ
Informations spécifiques à l'acquisition de données par liaison
série
Le mode "COM PORT" de l'objet acquisition permet d'utiliser une simple liaison série
pour acquérir des données.
Principe
Système d'acquisition
(une carte Arduino par
exemple)
PC +
AUTOMDAQ
Dans ce mode, la fréquence d'acquisition est automatiquement calculée en fonction
de la fréquence des données reçues par la liaison série.
Le système d'acquisition doit émettre des données de façon continue et régulier sur
la liaison série. La vitesse d'acquisition est automatiquement calculée par l'objet
AUTOMDAQ en fonction de la fréquence des données reçues.
Format liaison série
Le format des données au niveau liaison série est 8 bits de données, 1 bit de stop,
sans parité. La vitesse est paramétrée dans les propriétés de l'objet acquisition.
Format des données
Chaque acquisition est représentée par 4 octets codant un flottant IEEE 754 par
voie. Si plusieurs voies sont utilisées, les données sont envoyées alternativement et
dans l'ordre pour chaque voie. Exemple pour 4 voies :
Voie 1
Voie 2
Voie 3
Voie 4
Voie 1
Voie 2
Voie 3
Voie 4
Synchronisation
Le protocole actuel ne prévoit pas d'octet de synchronisation (seules les données
sont transmises), il convient donc que l'application AUTOMDAQ soit en mode RUN
avant que les données commencent à être émises pour éviter une
désynchronisation.
22
AUTOMDAQ
Exemple avec une carte Arduino
Programme côté Arduino (exemple pour une voie):
unsigned int convertedValue; // variable to store the converted value
float voltageValue;
// variable to store the voltage applied to the analog pin
byte analogPin = 0;
// analog input pin
void setup(void) {
Serial.begin(115200);
}
void loop(void){
convertedValue = analogRead(analogPin);
voltageValue = 5.0 * convertedValue / 1023;
Serial.write((byte *)&voltageValue,4);
}
Ce programme fait simplement l'acquisition d'une valeur analogique, calcule la valeur
en volt et émet la valeur codée flottant IEEE sur la liaison série avec une vitesse de
115200 bauds (vitesse maximale compatible avec la liaison série de base de la carte
Arduino et le PC).
Programme côté Arduino (exemple pour deux voies):
unsigned int convertedValue; // variable to store the converted value
float voltageValue;
// variable to store the voltage applied to the analog pin
byte analogPin = 0;
// analog input pin
void setup(void) {
Serial.begin(115200);
}
void loop(void){
convertedValue = analogRead(analogPin);
voltageValue = 5.0 * convertedValue / 1023;
Serial.write((byte *)&voltageValue,4);
23
AUTOMDAQ
convertedValue = analogRead(analogPin+1);
voltageValue = 5.0 * convertedValue / 1023;
Serial.write((byte *)&voltageValue,4);
}
Calcul de la vitesse d'acquisition : l'action significative en terme de temps est
l'émission des caractères sur la liaison série. Avec une vitesse de 115200 bauds, la
durée d'émission de 4 caractères (une mesure sur une voie) est :
115200 / 10 (8 bits de données, 1 bit de start, 1 bit de stop) = 11520 octets par
secondes.
La fréquence maximale d'acquisition pour une voie est donc : 11520/4 4 (4 octets
pour une valeur) = 2880 Hz.
Pour 2 voies, cette fréquence sera 1440 Hz, pour 3 : 960Hz, pour 4 : 720 Hz.
Des fréquences supérieures peuvent être envisagées en utilisant les liaisons séries
supplémentaires d'une carte Arduino pouvant permettre d'utiliser des vitesses de
communication plus élevées en adéquation avec les vitesses de communications
disponibles sur certains port série de PCs.
24
AUTOMDAQ

Manuels associés