Page d'accueil de Aeropassion
Partenaires du site :
Envoyé par Robert 
Robert
Machine virtuelle
dimanche 2 novembre 2008 21:09
Bonjour,
Est-il possible de savoir comment est codé le fichier "machine virtuelle.txt" ?
Re: Machine virtuelle
lundi 3 novembre 2008 22:23
Bonjour,

Pour l'instant le fichier machine virtuelle est codé en fonction de mes besoins de débuggage... Donc pour l'utilisateur lambda, il n'est pas très utile... winking smiley

Jerome
Robert
Re: Machine virtuelle
jeudi 6 novembre 2008 13:35
Bonjour Jérôme,
Merci pour tes réponses.
J'envisage de me créer une carte compatible MM2001 à base de C8051F32x avec une liaison USB HID pure (sans driver supplémentaire et sans adaptateur USB vers DB25) et des FET de puissance pour remplacer les ULN.
Ne voulant pas t'obliger à créer une DLL supplémentaire je pense qu'il me serait possible de dialoguer en utilisant XavierHID.dll et j'espérais trouver dans "machinevirtuelle.txt" des éléments qui me manquent pour cette réalisation.
Pourrais-tu m'indiquer la structure des élément du dialogue (PID,VID,"reports" USB que tu envoies et que tu reçois grace à la DLL XavierHID.dll ?
Re: Machine virtuelle
dimanche 9 novembre 2008 00:57
Bonjour,

Pourquoi simplement ne pas construire l'adaptateur de Xavier qui est un périphérique HID également ? Pour répondre à ta question, jette un oeil sur le site de Xavier. Je pense que le protocole et tout le nécessaire est disponible. Si ce n'est pas le cas, j'irai voir dans le code de la dll et je te répondrai winking smiley

Jerome
Robert
Re: Machine virtuelle
dimanche 9 novembre 2008 09:52
Bonjour Jérome,

Je vois que tu travailles tard (ou tôt) dans la nuit ...
Je veux créer une carte compacte car je trouve que la carte MM2001 + adaptateur USB + adaptateurs TURBO pour les FET de puissance celà fait un un ensemble hétérogène encombrant et sujet à de multiples problèmes de connectique.
Je n'ai pas trouvé les renseignements qui m'intéressent sur le site de XavTronic.
Je les lui ai demandé par le biais d'une question sur son forum.

Je te reconctacte dès que j'ai sa réponse.
Robert
Re: Machine virtuelle
dimanche 9 novembre 2008 19:15
Salut,

C'est une excellente idée et je suppose que tu sais dans quoi tu t'embarques... ça demande beaucoup de travail winking smiley Pourquoi ne pas ouvrir ton propre site pour sur aeropassion afin de présenter tes créations, tes essais techniques et autres expériences modélistiques ? Rien qu'une nouvelle carte pourrait en intéresser plus d'un winking smiley

Jerome
Robert
Re: Machine virtuelle
dimanche 9 novembre 2008 23:56
Bonsoir,
J'ai eu des infos de Xavtronic qui m'a listé les données transmises en indiquant la strucure et les valeurs admises de chaque donnée.
Mais j'aurais besoin de savoir comment circulent ces données, certainement sous forme de block(s) de données identifié(s) et structuré(s)...
Pourrais-tu m'en dire plus au sujet de ces blocks, appelés rapports (ou reports) dans certaines doc, leur numéro d'identification et leur structure ?
Nous pourrions peut-être continuer par e-mail car je pense que ce sujet ne doit pas passionner grans monde.
Créer un site sur Aéropassion, pourquoi pas...mais il faut que je réalise et que je programme la carte d'abord...et comme tu dis celà représente un peu de travail.
Robert
Re: Machine virtuelle
lundi 10 novembre 2008 20:39
Bonjour,

On peut continuer à discuter dans ce fil de discussion, ça pourrait m'éviter de recommencer à apporter les mêmes réponses plus tard :p

Si Xavier t'a donné son protocole, je suppose que tu as du voir qu'il s'agit simplement de paquet de x bytes, ce nombre étant précisé par le périphérique HID. A part ru moment où je connais ce nombre, je construits les paquets correspondant à ce que Xavier t'a donné.

Est ce que c'est clair ou comment puis plus t'aider ?

Je suppose que tu sais programmer un firmware HID pour ton pic USB ? C'est lui qui traduit les paquets envoyés en ordre de rotation pour la MM2001.

Jerome



Modifié 1 fois. Dernière modification le 10/11/2008 20:40 par Jerome.
Robert
Re: Machine virtuelle
mardi 11 novembre 2008 01:30
Bonsoir,
Merci pout tres infos...

Rassure-toi j'ai déjà programmé quelques applications USB HID sur des F320.

Dans la doc de Xavtronic je ne retrouve pas avec précision la structure des paquets mais seulement la structure des infos élémentaires ( commande M par exemple) .XavTronic dit aussi que les paquets peuvent faire 64 octets mais sans préciser s'ils font toujours 64 octets...ce qui serait possible dans mon système mais il faudrait alors que chaque paquet soit identifié par un nombre pacé dans l'octet 0...
D'après ta réponse je crois maintenant comprendre que tant en émission qu'en réception les paquets font toujours 64 octets et qu'ils ne sont pas structurés .
Les infos élémentaires n'ont alors pas une place fixe dans les paquet et le programme doit analyser chaque paquet pour reconnaitre les infos transmises et les traiter.

Est-ce bien ça ?
Re: Machine virtuelle
mardi 11 novembre 2008 10:15
Bonjour,

Ce que tu décris correspond à ce que fait Jedicut, c'est à dire que chaque paquet ne contient qu'une commande (commande M par exemple). Mais ça c'est parce que je l'ai codé ainsi dans Jedicut. Le paquet en lui même est structuré dans le sens où il contient un succession de données répondant aux structures communiqués par Xavier. Si ma mémoire est bonne on pourrait même mettre un commande M suivit d'une commande I, l'interface HID serait capable de la comprendre. Mais Jedicut ne le fait pas actuellement car j'ai d'autres soucis d'optimisation que la structure des paquets de données.

Je n'y connais pas grand chose en électronique mais pour Jedicut la taille du paquet n'est pas figée. C'est à dire que si demain l'interface HID réclamait des paquets de 128 bytes, Jedicut pourrait quand même communiquer puisqu'il construit des paquets ne contenant qu'une commande à la fois, et il comble le reste du paquet avec des 0.

C'est sympa d'avoir une autre personne s'intéressant au HID sur le forum. Tes travaux intéressent beaucoup ne serait ce que sur la démarche, les tests de code du micro controleur, etc. C'est pour ça qu'au travers d'un site j'aurai pu suivre l'avancement de tes travaux ainsi que le raisonnement que tu suis, mais si tu préfères tout mettre au point avant de montrer le résultat, alors je patienterai :p

Si tu as besoin d'autres infos n'hésites pas winking smiley

Jerome
Robert
Re: Machine virtuelle
mardi 11 novembre 2008 17:43
Jérôme,

OK,
Actuellement tu transmets et tu reçois des paquets de 64 octets et dans chaque paquet il n'y a qu'une commande structurée à la fois et le reste est à zéro. Donc je m'adapterai à ça.

Un question encore sur le TIMER.
Quelle est l'utilité pour toi du timer extérieur qui peut être d'après la doc MM2001 à 2000Hz,4000Hz ou même 10000Hz dans la dernière version du PIC16f876 ? Je n'ai pas trouvé de commande dans le protocole XavTronic donc tu ne recois rien de XavTronic à ce sujet...
Est-ce qu'il n'y a que XavTronic qui est interessé éventuellement par les tops du Timer .
Si oui je trouve bizarre que ce soit lui qui cadence la transmission alors qu'à mon avis ce devrait être toi dans Jedicut puisque ton programme peut tourner sur des PC très lents à très rapides alors que le PIC de Xavtronic ne doit pas avoir de mal à faire son travail.

Robert
Re: Machine virtuelle
mercredi 12 novembre 2008 20:40
Bonjour,

Jedicut n'envoie qu'un ordre par paquet, mais il me semble que le firmware en supporte autant que possible winking smiley

Je ne pourrai pas vraiment répondre sur la fréquence des quartz, même si je pense qu'une fréquence élevé est indispensable pour les adaptateurs USB. Xavtronic pourra surement répondre à cette question. Mais je trouve plutôt ça bien de confier la gestion de la vitesse à l'adaptateur, car Jedicut n'a plus qu'à indiquer la vitesse qu'il souhaite, et c'est l'adaptateur qui s'en charge. Nous travaillons sur des systèmes d'exploitation temps partagé, donc si il y a des contraintes de temps que nous pouvons délégués, c'est une assurance de qualité dans la découpe, enfin selon moi winking smiley

Pour ce qui est des PC lent, Jedicut est "optimisé" pour eux lors de la transmission des ordres, et vu les temps de pause entre chaque pas, nous avons de la marge pour qu'un PC ne réussisse pas à tenir le rythme...

Jerome
Re: Machine virtuelle
mercredi 12 novembre 2008 21:57
Hello,

Je pense que tu cherche trop loin certains fonctionnement de tout ca. Avec les différentes données que soit Jérôme soit moi t'avons données et ce que tu peux trouver sur la MM2001 il est assez simple de comprendre le fonctionnement, l'adaptateur remplace juste un port //. Il n'y a aucun traitement de donnée plus évolué.

Comme j'ai cru comprendre tu compte refaire une puce USB et un driver pour piloter des moteurs plus puissant.
Je pense en faite qu'il serait intéressant d'utiliser des driver intégrés qui ont des régulation de courants et tout ce qu'il faut pour piloter des pas à pas simplement (et avec des performance incomparable avec celle de la mm2001) et de juste mettre le PIC de l'adaptateur USB-CNC et d'utiliser less patte de STEP et DIR pour piloter ces drivers. Il y a aussi la chauffe qui peut-etre implémenté.
Voila ce que je pense et ce que je voulais faire à un certain moment, mais le temps m'a manqué, donc je te soumets ces réflexions.

A+
Xavier
Robert
Re: Machine virtuelle
jeudi 13 novembre 2008 17:34
Jérôme,

Quand je te parle du TIMER il s'agit du signal qui est sur la patte 23 du connecteur DB25 du connecteur de la carte MM2001. Ca n'a rien à voir avec le quartz qui fixe l'oscillation du PIC 46F874. D'après la doc de la carte MM2001 le 16f874 peut sortir sur la patte 23 des créneaux dont la fréquence peut être 2000 Hz 4000Hz ou 10000hZ réglable par des combinaisons d'appuis sur les touches + ou -.
Normalement ,lorsqu'on travaille avec le port LPT //, ce signal devrait être lu et analysé par le logiciel présent sur le PC (Jedicut en l'espèce...) dans le but de déterminer sa fréquence et je pensais que dans le cas d'une liaison USB on devrait trouver l' information élémentaire correspondante par exemple T2000 ou T4000 ou T10000 dans le buffer de dialogue pour que le PC puisse la prendre en compte.
Je viens de voir qu'en fait Jedicut demande dans une vue de configuration la fréquence du TIMER donc il ne doit pas analyser la patte 23 du connecteur DB25. Alors je comprend pourquoi Xavtronic n'envoye pas cette info dans le paquet USB.
Reste une question pour Jérôme.
Que fais-tu de cette valeur de TIMER saisie dans la fenêtre de configuration de la communication?
Je pensais que ce TIMER servait sans doute à synchroniser l'évolution des moteurs pas à pas.....qu'en est-il exactement ?

Xavtronic,
Excuse ma curiosité mais avant de réaliser ma carte j'ai besoin de comprendre parfaitement certaines choses et la synchronisation de la commande des moteurs pas à pas me parait être un point important. Je pense que si on ne les synchronise pas correctement la qualité de la découpe doit être légérement dégradée...
Pour ce qui concerne la partie HARD je n'utiliserai pas les drivers de puissance dont tu partes genre L6208 (il y en a d'autres...)qui sont assez chers ,limités en courant à 2A environ et pour lesquels il suffit de travailler avec les signaux STEP et DIR
J'utiliserai pour piloter chaque phase des 4 moteurs pas à pas un MOSFET de 9A de type "LOGIC LEVEL" c'est à dire qui peut se commander directement depuis une patte de F320 (sans driver de FET intermédiaire).
Je pense ainsi réaliser une carte compacte économique et utilisable pour des applications ultérieures demandant de la puissance genre fraiseuse à métaux.
J'ai déjà fait l'étude théorique du circuit, reste à passer au concret: réaliser la carte , programmer le F320 et à tester le fonctionnement.
Re: Machine virtuelle
jeudi 13 novembre 2008 18:26
Hello,

C'est très bien d'être curieux (je le suis aussi beaucoup winking smiley) et j'essaye de te fournir le plus possible de détailles, mais c'est pas évidant, ca fait un moment que j'ai programmé la'daptateur.

Sinon pour je pense qu'il serait quand meme bien de réguler le courant dans les moteur, car commme ca tu peux augmenter la tension d'alimentation et ainsi gagner en couple au démarrage.
Voila de ce que je peux te dire pour avoir testé les 2 variantes.

Pour le TIMER il permet enfaite une meilleur fluidité selon ceux qui ont développé la MM2001. Mais je laisse Jérôme qui connait mieux que moi se sujet.

A+
Xavier
Re: Machine virtuelle
jeudi 13 novembre 2008 18:32
Hello,

Une petite précision pour Robert, peut-etre que tu as pris un peu de manière mitigé ma remarque du dessus (12 novembre), mais ce n'était vraiment pas mon but.

Donc je suis vraiment désolé si c'est le cas.

A+
Xavier
Robert
Re: Machine virtuelle
jeudi 13 novembre 2008 19:17
Bonsoir Xavtronic,

Rassure toi tout va bien. J'ai peur de paraître casse-pieds lorsque je pose des questions alors j'essaye d'expliquer pourquoi je les pose...
Pour ce qui concerne la régulation de l'intensité je suis d'accord avec toi ça amèliore le couple mais je ne pourrai pas le réaliser simplement.
Par contre j'ai prévu d'optimiser le couple au démarrage du moteur en réduisant les constantes de temps grace à l'utilisation sytématique d'une tension élevée et d'une résistance série adaptée avant chaque enroulement.
Si tu es intéressé par ce sujet il y a une adresse qui n'est pas mal :
http://www.stielec.ac-aix-marseille.fr/cours/abati/elecpas.htm
Sinon j'ai prévu une protection contre les surtensions par circuit clamp,une mesure permanente de l'intensité utilisée avec arrêt si dépassement du max autorisé, une mesure de la température avec pilotage d'un ventilateur.
Mais comme le F320 est un "petit" microcontroleur qui n'a que 32 pattes je ne pourrai pas rajouter grand chose d'autre.

A+
Re: Machine virtuelle
jeudi 13 novembre 2008 20:49
lut,

La configuration du timer ne sert qu'à une chose dans Jedicut : permettre le calcul d'estimation de vitesse de déplacement. Et plus tard je rajouterai une estimation du temps de découpe... Mais rien à voir avec le dialogue sur le port parallèle winking smiley

Jerome
Robert
Re: Machine virtuelle
mardi 2 décembre 2008 19:23
Bonsoir Jérôme,

Je suis en train de programmer mon F320 et j'aurais besoin de précisions...

Supposons que tu aies à commander deux déplacements simultanés de 10000 pas sur X1 et X2 (guillotine horizontale) .
Comment envoies-tu les commandes M ?

Je présume que tu divises chaque parcours en un certain nombre de tronçons assez courts et que tu envoies successivement des commandes M pour chaque tronçon par exemple M 1 10 xxxx/ attendre S /puis M 2 10 xxxx/ attendre S/ et ceci 1000 fois pour atteindre les 10000 pas.
Est-ce bien comme ça que sa fonctionne ?

Avec mon microcontrôleur F320 j'ai la possibilité de commander les 4 moteurs simultanément avec des timers internes en travaillant avec les interruptions.
Dans le cas de l'exemple précédent il suffirait que , dans le même paquet, tu envoies les 2 commandes M 1 10 xxxx M 2 10 xxxx pour que je comprenne que les deux moteurs doivent fonctionner ensemble. On gagnerait alors sur la fluidité de la découpe et sur le temps de découpe...

Qu'en penses-tu ?
Re: Machine virtuelle
mardi 2 décembre 2008 22:18
Bonjour,

En fait il faut que Jedicut ait un moyen, comme sur le port parallèle, d'ordonner soit un mouvement synchronisé des moteurs, soit un mouvement alterné. Avec le firmware de Xavier, les mouvements synchronisé sont possibles en mettant tous les mouvement des moteurs dans le même paquet. Si je demande 10 pas dans un paquet, la machine en fait 10, comme tu l'a décrit.

Cependant, pour assurer la précision nécessaire à la découpe de profils, Jedicut doit pouvoir contrôler les moteurs pas à pas. C'est à cause de ça que la plupart des ordres de rotation de Jedicut se font moteur par moteur, et pas par pas. La vitesse de transfert du PC est toujours largement supérieur à ce que peut supporter la partie mécanique de la machine donc il n'y a pas vraiment de soucis de vitesse.

Jerome
Robert
Re: Machine virtuelle
mercredi 3 décembre 2008 09:39
Jérôme,
Merci pour ta réponse.
Le 12 Novembre tu me disais ceci "Jedicut n'envoie qu'un ordre par paquet, mais il me semble que le firmware en supporte autant que possible" ....
Dans le cas que je te citais précédemment (guillotine horizontale de 10000 pas ) tu pourrais alors envoyer M 1 2710 xxxx M 2 2710 xxxx dans le me me buffer (10000 = H2710 ) .....
Donc je vais prévoir de travailler avec les 4 moteurs simultanément même si actuellement tu n'envoies qu'un ordre à la fois.
Par curiosité qu'envoies-tu exactement dans le cas de l'exemple de la guillotine horizontale de 10000 pas ?
Re: Machine virtuelle
mercredi 3 décembre 2008 22:45
Salut,

Tu as tout compris du fonctionnement des paquets envoyés sur le port USB. Dans l'exemple de la guillotine de 10000 pas, Jedicut pourrait envoyer un seul paquet à la machine. Si ce n'est pas ce que Jedicut fait, c'est parce que le calcul des pas est le même pour le port parallèle ou pour le port USB.

Dans le cas d'une guillotine, Jedicut vérifie l'option "lissage". Si c'est coché, alors les paquets ordonnent la rotation de 1 pas sur un moteur, puis un autre paquet pour un pas du moteur suivant, etc. Si ce n'est pas coché, Jedicut envoie un paquet avec un ordre de rotation pour chaque moteur concerné. Ces pas sont alors envoyés simultanément à la machine, à l'image de ce qui est fait sur le port parallèle.

winking smiley

Jerome
Robert
Re: Machine virtuelle
lundi 8 décembre 2008 13:32
Bonjour Jérôme,

J'ai réussi à faire dialoguer ma carte (R2009) à base de F320 avec Jedicut par le port USB HID pour les commandes D F M.

Pour P (Arrêt/Reprise) ça marche aussi mai j'ai besoin de précisions :
- lorsque je reçois un P j'arrête le moteur et je sauvegarde le nombre de pas effectués depuis la dernière commande M
ensuite lorsque je reçois un nouveau P (Reprise) je relance le moteur pour un nombre de pas= nb pas commande M - nb pas sauvegardés.
Ca paraît fonctionner correctement. Mais que se passe t'il si au lieu de Reprise on a Abandon. On ne recois alors pas le deuxième P.
Faut-il que je considère que la séquence "Pause" est terminée si après un P je reçois autre chose qu'un P ? Sans doute... mais je voudrais
en être sûr.

Pour la chauffe il y a les commandes C et I
Je pense que c'est Jedicut qui doit envoyer C xxx (0 à 100) et alors il faut que la carte adapte la température du fil.
Est-ce bien ça ?
Pour la commande I , à quoi sert-elle ? Qui l'envoie ? A quel moment est-elle envoyée ?

A l'avance merci pour tes réponses.
Re: Machine virtuelle
lundi 8 décembre 2008 15:05
Hello,

Je vois que tu avance bien! C'est super!!!

Pour la commande "C" tu as tout juste. Sinon pour "I", c'est Jedicut également qui l'envoie à l'adaptateur et ce dernier envoie la valeur de chauffe en cours. Ceci est utile si tu est en mode manuel ou en réglage, comme ceci Jedicut peut afficher l'état de la chauffe (toujours de 0 à 100).

Pour le reste je laisse Jérôme te répondre. Mais en faite il le "P" sert juste à arrêter un les motuers un moment et au moment ou tu resois denouveau le P ca repart (donc il faut mémoriser la valeur précédente comme tu le décrit). La commande F sert à dire que c'est la fin et peut-etre envoyer a tout moment.

J'espère de pas trop me planter dans les explications, mais je n'ai pas mes docs sous la main, attends une confirmation de Jérôme ca sera plus sur.

A+
Xavier
Re: Machine virtuelle
mardi 9 décembre 2008 22:48
Félicitation Robert, tu avances bien !

Rien que pour toi je me suis replongé dans le code de la dll de l'adatateur de Xavtronic et j'ai une drôle de nouvelle pour toi concernant ta question sur la pause : Jedicut ne la gère pas... En tout cas je n'ai rien trouvé dans mon code concernant cette fonction... Donc soit je me suis passé à côté de quelque chose dans mon code, soit tu as vu passé un P à partir d'un autre programme que Jedicut lol

Dans Jedicut, la pause de la découpe se fait au niveau du thread dédié à la communication avec la machine. C'est tout le thread qui est mis en pause. Si la découpe est abandonnée, l'ordre de coupure de l'alimentation des moteurs "M" est envoyé, puis Jedicut redonne la main à l'utilisateur.

Pour la chauffe Xavier a bien répondu. Le I est utilisé ponctuellement, lorsque Jedicut a besoin de connaitre la valeur de la chauffe de la machine ainsi que le mode de chauffe (PC ou manuel).

Bonne continuation winking smiley

Jerome
Robert
Re: Machine virtuelle
mercredi 10 décembre 2008 13:46
Jérôme,
Encore une petite précision....
Tu me dis "Le I est utilisé ponctuellement, lorsque Jedicut a besoin de connaitre la valeur de la chauffe de la machine ainsi que le mode de chauffe (PC ou manuel). "
Lorsque la carte n'est pas en manuel suffit-il de répondre < valeur du coeff de chauffe> ou I < valeur du coeff de chauffe> ?
Robert.
Re: Machine virtuelle
samedi 13 décembre 2008 13:40
Salut,

Si la carte est en mode chauffe PC, il suffit d'envoyer I puis 0. Dans tous les cas je lis la valeur de chauffe qui me sera indiqué dans le deuxième octet du paquet, mais je crois que je ne fais rien de cette valeur si la carte est en mode chauffe PC.
Si la carte est en mode chauffe manuelle, il me faut I, 1, puis la valeur de chauffe comprise entre 0 et 100.

J'ai vu ton mail. Merci pour le report du bug. Je regarderai ça quand j'aurai pu avancer sur l'assistant winking smiley

Jerome
Désolé, seuls les utilisateurs connectés peuvent envoyer des messages dans ce forum.

Cliquer ici pour se connecter



Et vous, vous venez d'où ?

Aeropassion

Paris en photo | Design by Le Flaketou, création de site internet

Phorum