From Saturday, Nov 23rd 7:00 PM CST - Sunday, Nov 24th 7:45 AM CST, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discussions au sujet des autres produits NI

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Extaire la valeur utile d'une trame série

Bonjour,
Dans le cardre d'un projet de fin d'étude, nous envisagons controler un système de régulation de niveau d'eau utiliant un micro controlleur Burkert 1110.
On a pu établir la communication via une liaison RS232 avec le Burkert en utilisant labview, le problème c'est que en essayant de recevoir une valeur d'une varialble (KP : amplifcation) on la reçois sous la forme :
 
[STX][ADRESSE][INDEX][VALEUR][CHECKBLOC][ETX]
Exemple : 02303138443431373030303030363903
 
02 ==> STX
3031==> ADRESSE (01 en décimal)
3844==> INDEX (141 en décimal)
3431373030303030 ==>VALEUR DE KP (15 en décimal)
3639==> CHECK BLOC (la somme)
03==> ETX
 
Dans notre interface sous labview on est amener à afficher la valeur décimal dans un afficheur, nous cherchons comment pouvont nous extraire la valeur utile qu'est dans cet exemple 3431373030303030 la convertir du standard IEEE au décimal et l'afficher dans l'interface que vous trouvez en pièce jointe.
et l'opération inverse aussi c à d pour changer depuis l'interface la valeur de KP nous devonsl'introduire en décimale et la convertir sous la forme du trame précedement citée.
 
Nous comptons vraiment sur votre aide, et nous vous adressons nos remerciements les plus destingués.
0 Compliments
Message 1 sur 19
7 256 Visites

Bonjour,

Pour récupérer une partie de la trame vous pouvez utiliser le VI ‘Sous-ensemble d’une chaine’ puis utiliser le VI ‘Chaine décimal en nombre’ pour convertir le sous ensemble de la trame en décimal.

N’hésitez pas à revenir pour toute autre question.  

    Benjamin R.


Senior LabVIEW Developer @Neosoft


Message 2 sur 19
7 222 Visites


   Hum...
Je pense que c'est un peu plus compliqué, tout au moins pour la partie conversion : la réponse du controleur Burker contient la donnée (nombre en simple précision : IEEE/4 octets), codée sous la forme d'une chaine de caractères...hexadécimale. J'ai rarement vu plus tordu !!!
Du coup, la conversion, après extraction des 8 caractères utilisés pour en transmettre 4 (bonjour l'efficacité...) consiste à transformer la chaine en nombre hexadécimal, puis à recoder le nombre en flottant simple précision.

 

Le vi attaché réalise l'ensemble des opérations. Avec en prime l'extraction des valeurs des divers champs dans la trame...

 



Message Edité par chilly charly le 05-09-2008 11:09 AM
Chilly Charly    (aka CC)
Tout télécharger
Message 3 sur 19
7 216 Visites

Bonjour,

Merci  beaucoup BenjaminR pour tes proposition mais je n’arrive pas à trouver ces VI.

chilly  charly ton aide est vraiment précieuse, c’est parfaitement ce que nous voulions atteindre (moi et mon binômeJ), mille merci.

On essaie de comprendre ce que vous avez faits pour faire l’opération inverse, c'est-à-dire construire la trame série (sous le format cité ci-dessus) à partir d’un décimal tout en sachant l’index et l’adresse qui seront fixes par champs.

Ceci nous sera utile si on veut permettre à l’utilisateur du programme de commander le Burkert en introduisant la valeur de KP ou d’autre paramètre.

Labview est un univers inconnu pour nous, on essaie vraiment de débuter… mais il est tellement immense…

Nous vous remercions vivement pour votre aide.

 

0 Compliments
Message 4 sur 19
7 191 Visites
L'avantage de la solution que je vous ai proposé est qu'elle est presque directement inversible.
L'inconvénient est qu'elle fait appel à la fonction avancée "Type Cast", que les débutants ne connaissent généralement pas, qui permet de changer le type d'une variable. Cette fonction est extrêmement pratique pour décoder les trames échangées sur un port série. On prend toute la trame, on explique à LabVIEW qu'il s'agit d'un cluster dont on passe la structure... et hop ! Il ne reste plus qu'à utiliser la fonction "Unbundle by name" pour récupérer chaque élément de la trame.
L'opération inverse consiste à reconstruire le cluster à partir des différentes valeurs et à utiliser à nouveau "Type cast" pour en faire une chaîne de caractères... Il y a exactement le même nombre d'étapes. Je vous laisse le soin de réaliser vous-même l'opération (qui demande moins d'une minute d'effort), et je vous conseille d'explorer de manière plus approfondie les fonctionnalités de "Type Cast" si vous voulez pouvoir répondre aux questions que votre tuteur ne manquera pas de vous poser. En particulier, pourquoi faut-il passer par un entier 64 bits ? Sachant qu'il y a peu de temps ce type de variable n'était pas disponible dans LabVIEW, existe-t-il une autre solution ? Sauriez-vous la coder ? A vous de répondre à ces questions pour, d'une part, faire la preuve de votre investissement personnel et d'autre part, apprendre quelque chose... Car écrire un programme LabVIEW ne consiste pas à mettre bout à bout les exemples fournis et les solutions proposées "brutes de décoffrage" sur le forum 😉

Bon courage !..
Chilly Charly    (aka CC)
Message 5 sur 19
7 155 Visites
Bonjour,
Nous avons essayé d'établir le sens inverse de la conversion que vous avez proposé, mais on n'a pas aboutit à grande chose. Même s'il s'agit d'un effort d'une minute comme vous l'avez cité.
Nous sommes vraiment des néophytes en LABVIEW, ce programme ne figure pas dans nos programmes d'études mais  selon la proposition de notre encadreur nous essayons de débuter.
Ci-joint un essaie qui n'a pas donné de résultats 😞 😞 😞
Pouvez-vous nous aider ?
Pouvez-vous nous fournir une petite documentation sur la fonction type cast ??
Merci d'avance.
0 Compliments
Message 6 sur 19
7 124 Visites
Transformer un single en single comme vous le faites n'a pas beaucoup de sens. Regardez de plus près la solution que je vous ai proposé : quel sont les types numériques utilisés ? Pourquoi ?
Ensuite, la moindre des choses serait de respecter l'ordre des opérations...
Avant de "faire", essayez de comprendre. Sinon vous n'arriverez jamais à rien.
Chilly Charly    (aka CC)
0 Compliments
Message 7 sur 19
7 117 Visites

salut chilly comment faire ecrasé une valeur dans la trame car avec le cluster je voie que je peut seulement extraire ensuite comment le Block sum va changer chaque changement du valeur ?

Merci

0 Compliments
Message 8 sur 19
7 087 Visites
Désolé, votre question est incompréhensible. Essayez en anglais si vous maîtrisez mieux cette langue. Par ailleurs, je ne réaliserai pas ce projet à votre place. Je vous aiderai si vous faites la démonstration de votre investissement personnel. Par exemple en répondant aux questions que je vous ai posé.
Cordialement,
Chilly Charly    (aka CC)
0 Compliments
Message 9 sur 19
7 047 Visites
Bonsoir cher Mr,
On vous demande pas de faire le travail à notre place, d'ailleur le travail qu'on nous demande ne se limite pas à ça !
Nous essayons de toute les manières de comprendre ce que c'est le Labview, je ne l'ai jamais touché de ma vie et là dans 1 mois et demi on me demande de faire un programme en l'utilisant et sans aucune assitance. Notre encadreur ne connais du labview que ses domaines d'application, pour tout le reste c'est par magie que nous devons le faire !!!
 
On veux trés bien apprendre ce qu'on fait, d'ailleur je relis plusieurs fois le fichier que vous avez proposé !!! et je n'arrive pas à comprendre grande chose !!! et si ça vous parez bizarre, je suis désolé, c'est le cas des débutants !
 
Demander de l'aide ou de la documentation sur la fonction type cast ne signifie en aucun cas faire le projet à note place.
De toute façon on vous remercie infiniment pour votre aide, on continuera à chercher, et je t'assure qu'on s'investi dans ce projet meme si ceci ne vous semble pas evident !
--
Patager la connaissance, c'est l'idée meme d'un forum.
On vous remercie tout de meme
0 Compliments
Message 10 sur 19
7 021 Visites