Discussions au sujet de NI LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Problèmes plusieurs trames RS232

Solved!
Go to solution

Bonjour,

Merci pour ta réponse, Je t'explique..

Le but: Communiquer avec un banc qui date des années 1999.
Je n'ai aucun documents j'ai du tout comprendre et chercher seule. 

Le code de base est en code entierement en C/C++ mais il est completement beuggé..

Du coup j'ai du lancer le code beuggé et espionner la trame (car des fois cela marche). J'ai donc récuperer une trame comme celle que je viens de t'envoyer avec les caractéristiques données (nbre cycle, etc..).

Cependant en appelant le constructeur du controleur j'ai pu avoir un semblant de VI ! Celui de la traduction RS232 (celui ou tu m'as dit que le code était brouillon ahah). Bref j'ai repris ce code (en faisant deux trois modifs quand meme moins lourdes que celui de base).  et ca a marché j'ai retourvé les bonnes trames.

Le probleme ne vient donc pas de la mais du fait que j'envoie bien 4 trames au lieux d'une seule au controleur. 

Et le choux blanc ... j'ai fait une machine d'états (celle que je t'ai envoyé, rien n'y fait..), j'ai fait une structure séquence déroulé rien n'y fait ... 

Je n'ai plus trop d'idées... 
En gros ce que j'ai pu analyser de la trame, c'est:
if (ParamLen == 2) {
ParamWrite[0] = 0x7;
/* rs485=0 pour essai*/
ParamWrite[1] = 0;
ParamWrite[2] = 0x2;
ParamWrite[3] = address & 0xff;
ParamWrite[4] = (address & (int)0xff00) / 0x100;
ParamWrite[5] = (int)(value & 0xffL);
ParamWrite[6] = (int)((value & 0xffffff00L) / 0x100L);
sumcheck = 0;
i = 0;
while (i <= 6) {
sumcheck += ParamWrite[i];
i++;
}
ParamWrite[7] = sumcheck & 0xff;
}
else {
ParamWrite[0] = 0x9;
/*RS485=0 pour essai*/
ParamWrite[1] = 0;
ParamWrite[2] = 0x2;
ParamWrite[3] = address & 0xff;
ParamWrite[4] = (address & (int)0xff00) / 0x100;
ParamWrite[5] = (int)(value & 0xffL);
ParamWrite[6] = (int)((value & 0xffffff00L) / 0x100L);
ParamWrite[7] = (int)((value & 0xff0000L) / 0x10000L);
ParamWrite[8] = (int)((value & 0xff000000L) / 0x1000000L);
sumcheck = 0;
i = 0;
while (i <= 😎 {
sumcheck += ParamWrite[i];
i++;
}
ParamWrite[9] = sumcheck & 0xff;
}

ce que j'ai essaye de traduire en LabVIEW...

0 Kudos
Message 11 of 17
(1,766 Views)

Bon,

 

J'ai remis un peu d'ordre dans ton main, avec une remarque critique à prendre en compte (cf commentaire dans le code).

 

Sinon j'ai revu ta mise en forme de trame, et d'après le code C fourni, pour moi la traduction en labview correspond au code en pièce jointe, par contre, les trames exemples fournis ne respecte pas toute cette règle c'est bizarre.

 

 

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Kudos
Message 12 of 17
(1,764 Views)

Mouarf,je viens de trouver 😄

 

Par réflexion, je considérais ton sous vi comme une FGV, et donc boucle while en unitaire.

Or là tu as mis un critère de répétition de ta boucle, qui comme de pas hasard, renvoit la trame jusqu'à 4 fois en cas de non réponse de ton produit.


Ton problème vient de là, tu as un souci dans ta condition d'arrêt de la boucle.


Met une constate true directement sur le terminal d'arrêt de la boucle while, et tu auras bien le  bon nombre de trame envoyé au produit.

 

FAit le test avec ce sous-vi.

 

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
Message 13 of 17
(1,764 Views)

Effectivement cela me parait être une bonne suggestion ! 😉

 

Je vais au banc tester cela dessuite et je te tiens au courant ! 

Si je reviens pas d'ici deux heures c'est qu'il m'a explosé dessus 😛

ahah

Mais merci !! je reviens 

0 Kudos
Message 14 of 17
(1,758 Views)

Bon le banc n'a pas explosé mais c'est pas gagné !

C'est bon j'ai une seule trame qui s'affiche à l'oscilloscope par contre il faut que je modifie le code car j'ai pas du tout les bonnes trames ! 😕

Je refais le code lundi et je te tiens au courant ! 

merci beaucoup et bon weekend 🙂

0 Kudos
Message 15 of 17
(1,754 Views)
Solution
Accepted by llllSSSS

bonjour ! 

ALors voila ! 

J'ai modifier le code, avec te conseils et un peu de calculs savnts pour avoir les bonnes trames et .... *suspens*

Ca marche !! 🙂 

Je mets le code en PJ pour ceux que ca interessent. 

Et merci encore Michael pour ton aide ! 🙂

Bonne semaine 🙂

0 Kudos
Message 16 of 17
(1,731 Views)

Cool.

Félicitation, bon courage pour la suite.

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
Message 17 of 17
(1,680 Views)