Méthodes de débogage d'un logiciel de microcontrôleur dans un entraînement électrique
Comment déboguer des programmes de microcontrôleur? Le JTAG est pris, l'oscilloscope est un couple de jours / semaines et le programme est débogué. Ce sera une réponse typique, et dans la plupart des cas elle sera correcte ... Mais pas toujours. Les microcontrôleurs résolvent des problèmes très différents, et dans cet article, nous examinerons ce qu'il faut faire si vous avez besoin de développer un logiciel de bas niveau encombrant pour contrôler tout équipement électrique de puissance, par exemple, les convertisseurs de fréquence pour les moteurs électriques, les convertisseurs de charge de batterie DC / DC pour les trains, les correcteurs de puissance, les servos et etc. Équipement, où les kiloampères circulent et kilovolts PWM, où chaque commutation des clés de l'onduleur IGBT est comptée, où le temps de réponse du microcontrôleur à une situation anormale est mesuré en microsecondes, et l'équipement lui-même dans des cas scellés est installé et utilisé quelque part dans les usines de Yakoutie.Si vous voulez savoir quelles fonctionnalités cela impose aux méthodes de débogage, bienvenue dans cat.Caractéristiques des systèmes de contrôle de débogage
Quelles sont les caractéristiques du débogage des microcontrôleurs (MK) qui effectuent de telles tâches? Premièrement, lorsque MK fonctionne avec un équipement électrique, il ne peut pas être arrêté.MK à l'aide de PWM contrôle les touches de puissance, régule de nombreuses valeurs dans ses couloirs - courants des phases du moteur, tension du circuit intermédiaire, vitesse, position du corps de travail, etc. Si vous arrêtez le MK tout en travaillant au point d'arrêt, alors dans le meilleur des cas, l'équipement s'éteindra en raison de la protection matérielle, et dans le pire des cas, tout explosera simplement (si les interrupteurs d'alimentation restent allumés en position "un" ou avec un cycle de service). Par conséquent, la méthode classique de débogage consiste à «parcourir les étapes avec le débogueur» dans de telles tâches. Vous ne pouvez donc exécuter sur la table que des modules logiciels «complètement bruts» avant leur première intégration sur des équipements réels.
Deuxièmement, c'est la complexité des logiciels de bas niveau. La taille de la section de code de programme .text est de 50 à 200 Ko pour le code de programme qui contrôle exclusivement le matériel (sans pilotes de communication de haut niveau, etc.) - c'est une situation typique pour un microcontrôleur de certains servo variateurs industriels. Par conséquent, les microcontrôleurs de la série motorcontrol sont utilisés pour de telles tâches, qui combinent à la fois des périphériques très développés, de hautes performances et une taille de mémoire relativement grande (pour MK). Comme exemple des MK importés, on peut citer les instruments MK 32 bits de la série Texas Instruments C2000, de la puce K1921VK01T domestique de NIIET OJSC. Les logiciels pour ces MK contiennent généralement des dizaines ou des centaines de milliers de lignescode C / C ++ optimisé parfait, qui ne peut tout simplement pas être débogué en "clignotant une LED", "printfom in UART" ou en observant le fonctionnement des jambes d'un oscilloscope externe.
Troisièmement, le contrôleur du système de commande de l'entraînement électrique se trouve le plus souvent à l'intérieur du convertisseur de puissance, dont le boîtier est fermé, et parfois même scellé. Par conséquent, l' accès via JTAG est déjà un gros problème, ne serait-ce que pour le firmware (hors tension). Et un problème encore plus grave est le débogage JTAG avec la mise sous tension. Ici, le JTAG nécessairement isolé galvaniquement et insonorisé doit être utilisé (nous utilisons pour MK TI JTAG SAURIS avec isolation galvanique intégrée - cher, mais cela fonctionne).
Quatrièmement, pas de systèmes d'exploitation!Nous pouvons prévoir comment certaines personnes ont l'idée «eh bien, puisque vous avez une tâche si difficile, mettez un microcontrôleur normal avec Linux et écrivez des applications régulières pour cela, en mettant à jour le logiciel à partir d'un lecteur flash». Les systèmes de contrôle des équipements électriques sont des systèmes en temps réel très difficiles. Ce n'est pas que Linux, même tous les systèmes d'exploitation spécialisés en temps réel ne conviennent pas à de telles tâches. Par exemple, l'interruption de l'ADC par la lecture et la moyenne des données analogiques peut être provoquée avec une fréquence allant jusqu'à 100 kHz. En même temps, il ne contiendra qu'une douzaine ou deux lignes de code - collecte de données des canaux analogiques, quelques vérifications des protections à haute vitesse et sortie - tout, rien d'autre à faire. Si vous indiquez une telle interruption à un planificateur de tâches du système d'exploitation, alors simplement sa propre exécution prendra plus de ressources. Sans oublier que, en particulier,pour Linux, au lieu d'une puce MK, vous devez en mettre deux de plus sur la carte - RAM externe et mémoire flash, allouer un tas de pattes en cristal précieuses, utiliser une carte à six couches pour un câblage approprié, obtenir un temps de démarrage MK énorme (parfois en cas de panne de courant ou d'une minuterie de surveillance) commencer à travailler avant l'arrêt du moteur!), avoir des problèmes avec l'intégrité du système de fichiers, etc.Eh bien, la cinquième caractéristique - les systèmes de contrôle de bas niveau pour les entraînements électriques et autres équipements électriques (contrairement aux tâches de communication sur différentes interfaces, les automates programmables, les contrôleurs de toutes sortes d'alarmes, les télécommandes, etc.) implémentent principalement des algorithmes de systèmes de contrôle automatique. À savoir: la moitié du logiciel se compose de différents types de structures fermées avec des contrôleurs PID, des blocs de saturation, des zones mortes, des tableaux de dépendance les uns des autres, des filtres, des observateurs, des ajusteurs d'intensité, des planificateurs de mouvement et autres. Les calculs dans ces logiciels sont effectués avec une certaine fréquence - disons, à une fréquence de 10 kHz, une interruption est déclenchée et calcule tous les blocs répertoriés, qui forment ensemble la structure de contrôle de l'équipement nécessaire. Dans de tels algorithmes, le débogage étape par étape n'aide pas - le plus souvent, à chaque étape, chaque module génère cece qu'on attend de lui - en fait, tous ces filtres, régulateurs, etc. sont déjà débogués depuis des années et il y a peu de surprises là-bas.Des problèmes surviennent pendant le fonctionnement de l'ensemble de la structure dans son ensemble - chaque unité fonctionne individuellement et le processus de réglementation souhaité ne se produit pas comme prévu . Et les problèmes se trouvent dans l'ajustement de centaines de paramètres et de coefficients de ces blocs, ainsi que dans la structure assemblée à partir d'eux - il peut s'avérer que vous devez ajouter un nouveau circuit de stabilisation quelque part, ajouter un bloc de prédiction, des restrictions, etc. Par conséquent, c'est une autre "pierre dans le jardin" des messages de débogage étape par étape et de débogage printf: vous devez déboguer plus souvent qu'autrement le code du programme lui-même, mais la structure de contrôle automatique assemblée. Si quelqu'un a peu d'idée de ce que c'est (structure), alors voici la structure la plus simple d'une commande vectorielle sans capteur d'un moteur synchrone:
Chaque case est parfois constituée de quelques formules, et parfois d'un module sur une douzaine ou deux pages de code. Le module possède des entrées / sorties, ainsi que certaines variables d'état (par exemple, la partie intégrante du régulateur PI, etc.). Ceux qui le souhaitent peuvent également voir une structure similaire sur la page Wikipedia . Étant donné que le système de commande est fermé, le mauvais fonctionnement d'une unité (ou son réglage incorrect) conduit à l'inopérabilité de l'ensemble de la structure. Et trouver exactement où est le problème - c'est une autre tâche.Comment le déboguer?
Alors que faire, comment le déboguer? Un oscilloscope externe? N'aidera pas. L'oscilloscope, bien sûr, est nécessaire pour déboguer certains problèmes purement matériels, mais ils ne peuvent voir que les valeurs d'entrée et de sortie du microcontrôleur, et des centaines de variables à l'intérieur de la structure resteront dans les coulisses. Eh bien, vous verrez que le courant de phase du moteur saccade étrangement et que la tension de sortie de l'onduleur saccade étrangement. Et pourquoi - quel bloc à l'intérieur du logiciel MK conduit à cela (ou un moteur ou un capteur de position ou autre chose conduit à cette courbe) - reste incertain.
Modèle? Oui, c'est une bonne aide.Le plus souvent, le développement de structures de gestion complexes commence par la modélisation. En termes de TAU et sous forme d'équations différentielles, l'objet de contrôle est décrit, le système de contrôle proposé est construit (comme dans la figure ci-dessus, par exemple), puis tout cela est réalisé ... eh bien, qui aime quoi, mais la norme de facto est Simulink Matlab. Dans ce document, vous pouvez «dessiner» une structure avec un modèle de l'objet de contrôle, en utilisant «lâche» sous la forme d'intégrateurs, d'additionneurs, de fonctions de transition, etc. Vous pouvez utiliser son package pour modéliser des circuits électriques, où il y a des clés IGBT prêtes à l'emploi, des moteurs électriques, des résistances, des condensateurs et plus encore, donnant à la merci des programmeurs matlab la mise en œuvre du tracé sous la forme d'équations différentielles, et dessiner la structure de contrôle elle-même déjà sous la forme de «feuilles mobiles» elle-même.Et vous pouvez écrire tous les blocs nécessaires dans matlab en C. Cette méthode est pratique dans la mesure où le code de programme débogué dans le matlab peut simplement être copié sur le microcontrôleur. Habituellement, cette étape suit toujours le «dessin», lorsque la structure du système de contrôle après un travail de recherche approximatif sur la modélisation est plus ou moins formée. Mais souvent, les paramètres de l'objet sont inconnus a priori, ou ils sont connus de manière très imprécise - jamais auparavant le logiciel fonctionnant dans le modèle n'a commencé à fonctionner aussi bien sur l'objet. Il est également impossible de mettre "tout" dans le modèle - transistors de commutation transitoires, saturation du circuit magnétique, courants de Foucault, couplage capacitif, paramètres flottants de la température et d'instance en instance, interférences ici et là ... Et parfois, l'objet de régulation est si compliqué,qu'il est plus facile de faire le développement d'une structure de contrôle pour elle directement sur le site., , () - . , , «» – , , - ? ( – , « », ).
Il existe également un certain nombre de produits qui vous permettent de "dessiner" des programmes directement pour les microcontrôleurs. Y compris le même Matlab est capable de générer du code C pour les marques célèbres MK basées sur le modèle de Simulink. Apparemment, vous pouvez dessiner et déboguer la structure dessinée du système de contrôle sur l'ordinateur dans le modèle, puis la télécharger sur MK - et vous avez terminé, c'est parti! Et même de tels environnements vous permettent de déboguer des structures de contrôle dessinées directement à l'intérieur du MK, de surveiller les variables, etc., et sur les sites de ces produits, il existe un tas de projets de démonstration pour les systèmes les plus complexes, «programmés» de cette façon. Mais comme tous les projets réels sont toujours programmés avec des «mains» pour une raison quelconque, nous pouvons deviner que quelque chose ne va pas avec le «dessin». Mais ici, il est même difficile de décrire ce qui est exactement, sinon, c'est tout. Le principal argument contre– . Vous appuyez sur un bouton dans un tel environnement «bien faire» et espérez que le générateur de code fera le reste pour vous. Pour certains systèmes simples, où les performances MK sont «derrière les yeux», le calendrier de développement est très serré, et personne ne sait comment programmer dans l'entreprise qui a lancé le projet ... alors oui, vous pouvez probablement essayer de «dessiner» le programme. Mais si cela ne fonctionne pas comme il se doit, ou aura un problème très spécifique, il n'y aura plus aucune chance de le déboguer. Et pour une tâche complexe, où même lorsque la programmation avec les mains avec des performances MK est toujours un problème, le dessin ne convient pas simplement en raison du manque de ressources - tout langage de programmation qu'il est de niveau supérieur (beaucoup plus élevé que le dessin) génère un code machine moins optimal. Et les optimisations de bas niveau qu'un programmeur C feraitun tel système ne sera pas en mesure de le faire (calcul de blocs de la même structure avec des horloges différentes, utilisation de valeurs mises en cache de sinus et cosinus, remplacement des fonctions de division par multiplication par une valeur pré-préparée, ou des choses absolument délicates commetels , etc.).Ainsi, vous devez écrire votre logiciel et écrire en C. Et d'une manière ou d'une autre, vous devez déboguer votre logiciel, et c'est nécessaire sur l'objet. Probablement, tout le monde à ce stade de l'article a déjà compris que la structure de contrôle ne peut être déboguée qu'en consultant les oscillogrammes des variables internes , c'est-à-dire voir les graphiques au fil du temps, comment telle ou telle variable en C change - disons, "la sortie de ce bloc, le cinquième à partir de la gauche, simultanément avec les entrées du troisième à partir de la droite". Obtenir des images comme celle-ci:Et cela ne peut se faire qu'au moyen du microcontrôleur lui-même. Vous ne pouvez pas simplement prendre et mettre en place l'interface de communication rapide externe et envoyer «en haut» la valeur d'une variable, aussi rapidement que possible, et créer un graphique dans le système de niveau supérieur. Parce qu'aucune interface de communication MK n'aura le temps de le faire avec la fréquence à laquelle les transitoires régulés se produisent. Et si vous réussissez, toutes les ressources MK iront à la maintenance de cette interface de communication. Par conséquent, ils le font - ils enregistrent la forme d'onde dans la RAM de MKjuste dans un tableau. Habituellement, beaucoup de points ne sont pas nécessaires - il suffit de saisir le bon moment pour écrire exactement les données: mettez le bon déclencheur au début de l'enregistrement. Et puis vous pouvez voir ce que ces ou ces blocs du système de contrôle distribuaient au moment de l'échec, comment il se développait, ce que MK essayait de faire. Bien sûr, toutes les variables ne peuvent pas être immédiatement oscillées simultanément - mais dans la pratique, selon notre expérience, il y a, disons, quatre tableaux de 256 points chacun - une sorte d'oscilloscope à quatre canaux utilisant des outils MK. Si l'équipement fonctionne plus d'une fois par semaine, le débogage n'est pas un problème - dans une expérience, nous examinons ces 4 variables, dans la suivante, nous remplaçons la moitié par les autres, regardons à nouveau ... jusqu'à ce qu'une unité défectueuse soit trouvée, ou jusqu'à ce que nous supprimions tout ce qui se passe sur tous les blocs et ne laissez pas regarder les "images", gratter l'endroit qui pense quoi ...
Comment filmer de tels oscillogrammes? Quel logiciel peut faire cela? Quelle interface de communication cela transmet-il? En fait, Texas Instruments est donc le leader dans la production de microcontrôleurs de motocontrôle, car il a tout fait pour cela: Code Composer Studio (leur environnement de développement) plus MK en temps réel. Le mode temps réel est lorsque, via le JTAG, l'environnement de développement peut demander et écrire des données dans la mémoire RAM du MK sans l'arrêter. Même pas seulement sans s'arrêter, mais sans la moindre interruption de son travail. Ce mode est disponible dans tous les MK de la série C2000, mais il nécessite le JTAG cher et rapide pour l'utiliser, ce qui le prend en charge. Mais en plus du mode lui-même, le MK devrait avoir quelque chose de correspondant à l'arrière du câble: l'environnement de développement Code Composer Studio est capable de créer des formes d'onde hors de la boîte.De plus, à la fois dans le mode le plus simple, lorsque l'utilisateur définit le nom de la variable C et voit son changement dans le temps sur le graphique, et que l'environnement demande des données avec la fréquence à laquelle il peut (généralement bon, si Hertz 10), et dans le mode d'affichage du tableau en mémoire dans forme d'onde - c.-à-d. juste ce qui est décrit ci-dessus. , , , Code Composer Studio JTAG .Dans le même temps, l'appareil peut continuer à fonctionner comme si de rien n'était. Cet outil est utilisé avec succès depuis plus de dix ans et, en fait, une telle idéologie de débogage (il semble, mais je peux me tromper) a été proposée par le Texas. Dans tous leurs projets de démonstration, il existe un module d'enregistreur de données (qui enregistre des tableaux de formes d'onde) et les manuels décrivent comment l'utiliser. Au fait, ici, vous devez jeter une pierre dans le jardin ARM. Ils ont également un mode en temps réel, et sur cette architecture, il y a des MK qui peuvent contrôler les moteurs électriques. Cependant, dans aucun environnement de développement, je suis tombé sur une fonction graphique, même si le mode temps réel est pris en charge. Par exemple, dans Keil est le bien-aimé de tout le monde, il est même impossible de changer normalement la valeur d'une variable sur un MK en cours d'exécution - elle est constamment mise à jour,et la nouvelle valeur entrée par l'utilisateur dans la fenêtre est effacée ... Sans parler des graphiques. Peut-être que quelqu'un dans les commentaires suggérera une option de travail? Ou est-ce "personne n'a besoin" et ne fonctionne donc pas?Mais il y a un problème avec cette méthode de débogage, même via Code Composer Studio. Et ce problème est JTAG. Comme cela a été dit, son connecteur n'est pas toujours disponible, et le plus souvent sur des équipements en marche et n'est pas du tout disponible. Et, franchement, ce n'est pas très confortable de s'asseoir à quelques mètres du convertisseur mégawatt, de regarder ses oscillogrammes de travail, et très concentré et concentré pour contourner le bouton "stop" du microcontrôleur avec la souris, et si un doigt tremblait en cours de route? Savez-vous comment le pavé tactile est bogué lors de l'utilisation d'un PWM puissant? Et si l'environnement échoue? Et JTAG? Tout, larges?De plus, les formes d'onde dans l'environnement de développement sont affichées dans les valeurs «telles quelles» en C, sans aucune mise à l'échelle, dans différentes fenêtres des graphiques, sans unités de mesure personnalisées (rappelez-vous que dans ce graphique 0,342 sont des volts, ils doivent être multipliés dans l'esprit par 540 pour obtenir des unités physiques, et ici 1,2 sont des ampères avec une échelle de 800A). Et inconfortable et effrayant. Et pourtant, tous les MK et environnements de développement ne peuvent pas regarder les oscillogrammes! Soudain, ce n'est pas le Texas? Par conséquent, nous avons décidé d'inventer une autre façon.Notre décision
En fait, si nous n'avons pas besoin d'un débogage étape par étape, quel est le problème? Nous remplaçons tout ce que nous faisons via JTAG par toute autre interface de communication et créons notre propre shell de niveau supérieur, qui construit les graphiques comme nous le souhaitons. Profit!Nous l'avons donc fait. Interface de communication que nous avons choisie CAN, protocole - CANopen. Pourquoi? CAN est une très bonne interface de communication industrielle, résistante au bruit, a un arbitrage matériel, un accès non destructif au bus, une confirmation matérielle des packages, et en même temps - seulement deux fils et la terre. C'est mieux que tous les RS, et moins monstrueux qu'Ethernet (ce qui est plutôt exotique sur motorcontrol MK). Pourquoi canopen? En fait, il existe deux protocoles communs pour CAN, ce sont J1939 («automobile») et CANopen (machines-outils, automatisation, capteurs, etc.). Il n'y a pas beaucoup de différence entre eux, mais CANopen nous a semblé plus flexible, nous l'avons donc implémenté dans notre propre pile (driver). Qui ne sait rien de CANopen - sa fonction principale, comme de nombreux protocoles pour MK, est de donner accès au dictionnaire des objets (liste des variables en C MK) à une adresse spécifique. Cela peut se faire de deux manières principales:Messages SDO du type requête-réponse, ainsi que messages PDO sous forme de valeurs d'envoi constantes par temporisateur ou événement (définit le niveau supérieur de ce qui doit être envoyé et quand). Il existe également divers services de services tels que des messages d'urgence, des messages sur la présence d'appareils sur le réseau (battement de cœur), etc. Un assistant sur le réseau n'est pas nécessaire: celui qui veut - envoie, à qui il veut - accepte.
Nous avons créé la pile CANopen non seulement pour MK, mais aussi pour l'ordinateur sous la forme d'une bibliothèque. Et déjà sur sa base, Windows a écrit son propre environnement de haut niveau. D'abord, ils ont simplement rendu l'accès aux variables du dictionnaire d'objets afin qu'il était possible de regarder et de modifier les paramètres du système de contrôle (et il y en a des centaines, en passant!), Ensuite, ils ont fait des graphiques en interrogeant périodiquement le paramètre du dictionnaire d'objets sur le réseau, puis ont ajouté le chargement des formes d'onde des tableaux MK (de plus, le choix de l'oscillographe est également fait à partir des objets variables du dictionnaire). Nous avons tout de même pour le débogage via JTAG. Ou pas? Non, car j'avais également besoin de la fonction de mise à jour du logiciel via CAN. Malgré la présence d'un chargeur de démarrage CAN au Texas MK, nous avons décidé de faire le notre, car celui standard n'était pas CANopen et pouvait interférer avec le fonctionnement d'autres appareils sur le réseau pendant que nous en cousions un, ainsi que les appareils pouvaient interférer avec le firmware. De plus, il y a eu des problèmes de correction d'erreurs et de perte de messages (bien que CAN soit très bon, il se bloque parfois, et le firmware est une chose très importante pour ne pas faire de vérification ou réessayer d'envoyer une pièce cassée). Nous avons donc implémenté notre «programmeur» sur le réseau CAN , mais dans le cadre du protocole CANOpen. Maintenant c'est tout. Nous avons maintenant pu abandonner complètement JTAG, en l'utilisant une seule fois, pour programmer un nouveau MK.Dans le même temps, cette approche a ouvert de nouveaux horizons de débogage que nous n'avions pas vus auparavant. Puisque nous avons créé l'environnement de premier niveau en tenant compte non seulement des programmeurs, mais également des «personnes ordinaires», nous avons créé tous les paramètres en russe et rédigé la documentation pour l'installateur pour chaque paramètre (la documentation n'est pas l'environnement, mais le périphérique, bien sûr). Et cela a été bénéfique - maintenant, s'il y a un problème avec le lecteur, vous n'avez pas à "tirer" le développeur- dans certains cas, le personnel du service client peut diagnostiquer indépendamment les problèmes. Maintenant, nous pouvons obtenir un e-mail comme «Notre lecteur a commencé à faire des sons étranges parfois, j'ai regardé l'oscillogramme du capteur de position, c'est ce que j'ai vu (photo). J'ai vérifié la mise à la terre de l'écran, elle est tombée, j'ai soudé et tout a fonctionné comme il se doit! » Et absolument pas besoin d'aller n'importe où ou de voler! La deuxième "découverte" - s'il y a un problème, nous demandons au client de connecter l'ordinateur à l'équipement et de donner le contrôle du bureau à distance sur Internet - nous lançons notre environnement de haut niveau, nous allons tout osciller nous-mêmes, nous corrigeons les paramètres / firmware / nous disons qu'il s'est cassé - profit! Encore une fois, vous n'avez pas besoin d'aller n'importe où (l'essentiel est qu'Internet soit installé dans l'établissement, au moins via un réseau cellulaire).Au fil des ans, ce programme de haut niveau a acquis de petites fonctions, comme les champignons (un processus naturel pour les logiciels qu'ils utilisent). Cela inclut l'utilisation du journal des plantages du périphérique, l'enregistrement / le chargement d'un nugget de tous les paramètres dans un fichier sur l'ordinateur, et la configuration du panneau de contrôle du périphérique à la "panneau de contrôle", et la gestion des journaux réseau dans un fichier et le retour du trafic réseau CAN sur TCP / IP, et le firmware / paramétrage multiple automatique d'appareils similaires sur le réseau (s'il y a des dizaines d'appareils, alors tout flasher avec vos mains est paresseux, vous avez besoin d'un script), etc.
Eh bien, maintenant de la publicité. Maintenant, c'est déjà un outil très puissant (nous l'avons appelé autant que UniCON), qui dans certaines tâches semble plus fonctionnel que les logiciels similaires de marques célèbres pour configurer leurs lecteurs et appareils. De plus, il n'est pas lié à un appareil spécifique - vous pouvez configurer au moins un entraînement électrique, au moins un poêle, au moins un chargeur - seul le dictionnaire des objets change. Maintenant, dans notre entreprise, nous ne voyons pas l'opportunité de mener à bien un nouveau projet complexe sans nos outils de débogage CANopen. Pour travailler avec UniCON, il vous suffit d'intégrer notre pile CANopen dans MK, après quoi MK se transforme en laboratoire numérique. Nous sommes sûrs que toutes les entreprises qui font des systèmes de contrôle sérieux sur MK disposent d'outils de débogage similaires. Mais nous proposons notre solution CANopen sous la forme d'un produit logiciel indépendant, car il est universellement mis en œuvre en termes d'indépendance par rapport aux fonctions de l'appareil. Actuellement, nous avons implémenté la pile CANopen avec les fonctions avancées décrites pour le Texas Instruments C2000 MK, leurs microcontrôleurs ARM (par exemple, la famille Concerto) et pour le K1921VK01T du NIIET OJSC. Par conséquent, si vous avez besoin de développer un système de contrôle pour un entraînement électrique ou un autre objet de contrôle complexe, nous vous invitons à coopérer.
PSDans les commentaires, nous attendons avec impatience les critiques de la forme "Il y a donc *** - ça fait tout de même et gratuitement." Depuis que nous recherchons depuis longtemps des outils de débogage similaires pour ARM pour la fonctionnalité, nous sommes même tombés sur des environnements de développement célèbres.UPD: Merci aux commentaires d' Indemsys , olekl et LeonidLeninnous avons trouvé des fonctions de cartographie dans les environnements de développement pour ARM Keil et STMStudio lors de l'utilisation de SWD. Cependant, ils ne savent pas comment afficher un tableau de données de la mémoire MK sous la forme d'un graphique, ce qui est juste ce qui est nécessaire pour observer les processus rapides des systèmes de contrôle (mais STMStudio peut afficher des graphiques avec un temps d'échantillonnage d'environ 1 ms en utilisant la mise en cache des données). L'outil NXP FreeMaster est également intéressant - dans sa description et son objectif, il est très similaire à notre développement UniCON, mais avec ses propres caractéristiques. De plus, le Segger J-Link possède son propre outil d' affichage de forme d'onde .Source: https://habr.com/ru/post/fr389123/
All Articles