Nouveau microcontrôleur domestique de contrôle moteur K1921VK01T de OJSC NIIET


D'une manière ou d'une autre, la nouvelle de l'apparition d'un nouveau microcontrôleur K1921VK01T de OJSC NIIET a été passée . Comment est-il remarquable? Ses périphériques destinés à contrôler les moteurs électriques (motocontrôle). Ce ne sont pas seulement quelques canaux PWM. Il s'agit de neuf modules PWM sophistiqués à deux canaux (PWM), dont trois modules (HRPWM) avec un mode de résolution «haute». Il s'agit de six modules de capture CAP 32 bits distincts. Vingt-quatre (!) Canaux d'ADC 12 bits avec un gestionnaire de lancement flexible, un moyenneur intégré et des comparateurs numériques. Deux décodeurs en quadrature (QEP), un tas d'interfaces de communication, une mémoire utilisateur interne, des horloges - tout cela sur le cœur ARM Cortex-M4F avec un mégaoctet de mémoire flash «à bord» et une performance de 100 MIPS! Intéressant?

En fait, afin de ne pas lister toutes les caractéristiques techniques du produit dans l’article, je l’envoie sur la page du site du fabricant . Il y a à la fois une courte liste et une fiche technique complète (même si elle se cache toujours dans différents coins du site et au moment de la rédaction, vous pouvez la télécharger ... à partir du tableau des développements en cours ). Et dans l'article, je ferais mieux de vous dire quelque chose qui n'est pas écrit dans les fiches techniques.

Un peu d'histoire


Les travaux sur le microcontrôleur (ci-après dénommé MK) ont débuté en 2012 par la société NPP Digital Solutions, sur ordre d' OJSC NIIET(Voronej.). Des licences ont été acquises pour le cœur ARM Cortex-M4F et certains modules périphériques de communication, et certains des modules ont été développés par cette société indépendamment: modules PWM, un contrôleur ADC (pas l'ADC lui-même, mais un gestionnaire pour sa gestion), un module de capture CAP et un module décodeur en quadrature QEP. NPP Digital Solutions a d'abord produit une maquette de microcontrôleur sur le FPGA Kintex7, qui a implémenté toute la logique du futur microcontrôleur, y compris le cœur ARM. Mais FPGA est un produit librement reprogrammable qui vous permet de corriger les erreurs dans la logique MK si elles sont détectées après avoir passé les tests (ceci en plus des tests sur simulateur). Mais comment tester un microcontrôleur Motorcontrol? En plus des tests synthétiques, bien sûr, sur la vraie tâche de contrôler un moteur électrique! Pour cela, NPP "Digital Solutions" s'est tourné vers nous - enNPF Vector LLC , car nous avons beaucoup d'expérience dans le domaine des entraînements électriques basés sur MK Texas Instruments , mais plutôt parce que nous sommes assis dans un bâtiment voisin. Lors de discussions conjointes lors de la conception de périphériques pour la commande de moteurs électriques, il a été décidé de prendre TMS320F28335 Texas Instruments (TI) comme modèle, car ce microcontrôleur possède probablement les périphériques de commande de motocyclette les plus puissants et flexibles, à juste titre respectés dans le monde entier. Par conséquent, armé de fiches techniques TI, «Digital Solutions» a créé sur leur base la logique interne des modules PWM, CAP et QEP pour le K1921VK01T. En outre, sur la base de notre expérience avec TI MK, nous avons également proposé certaines améliorations qui manquent à TI. Il s'agit d'un filtre d'impulsions courtes dans un module PWM (tous les pilotes de touches d'alimentation comme l'ouverture / la fermeture pendant une très courte période de temps, l'IGBT peut passer en mode linéaire), ce sont certaines des nuances du module de décodeur en quadrature, qui vous permettent de vous débarrasser des problèmes de commutation des diviseurs de compteur sur le pouce etc.Les «solutions numériques» les ont prises en compte et ont étendu les fonctionnalités périphériques en conséquence par rapport aux modules TI.

Alors que NPP Digital Solutions a développé la logique interne des modules, NPF Vector a organisé un stand pour tester le futur microcontrôleur. C'était un petit convertisseur de fréquence avec six transistors ("servo amplificateur"), qui était connecté par des circuits de commande au microcontrôleur prototype sur le FPGA, et la partie puissance était connectée à un petit servomoteur avec des capteurs de position Hall (pour vérifier le module CAP) et un capteur de position en quadrature (pour vérifier le module QEP ) Notre objectif était le suivant: écrire un logiciel pour le microcontrôleur pour assurer un contrôle vectoriel à part entière du moteur électrique en utilisant n'importe quel capteur de position de votre choix ou les deux à la fois. Et, bien sûr, de signaler tous les problèmes détectés dans la périphérie à «Digital Solutions».

Malgré de nombreux tests de MK à Digital Solutions, de nombreuses erreurs ont été trouvées lors des tests sur un moteur électrique sous tension. Fondamentalement, ils étaient associés à une implémentation inexacte de la logique de bloc interne, qui n'était pas explicitement décrite dans les fiches techniques de Texas Instruments. Par exemple, que devrait produire le module PWM si le point de consigne de comparaison est défini au-dessus de la période de temporisation? Ou si un diviseur de signal d'entrée est inclus pour un décodeur en quadrature, le module doit-il détecter un changement dans le sens de rotation par un signal divisé ou par l'entrée d'origine? Les réponses à ces questions peuvent être évidentes pour l'entraînement électrique, mais pas évidentes pour l'architecte de la logique du microcontrôleur. Dans la mesure du possible, nous avons détecté des bogues similaires avec Digital Solutions. Le variateur a fonctionné avec succès en contrôle vectoriel sans aucun problème.Cependant, bien sûr, nous n'avons pas pu couvrir tous les bogues avec de tels tests - à coup sûr, dans d'autres tâches, les erreurs recommenceront à apparaître. Mais pour cela, il y a des errata et de nouvelles révisions de microcontrôleurs: pour corriger les bugs, il faut d'abord les collecter. Après avoir débogué la logique MK sur le FPGA avec "Digital Solutions", le "câblage" du MK (ou autre) a été faits'appelle-t-il des microcontrôleurs? Topologie?), Après quoi tous les résultats des travaux ont été transférés au NIIET. Soit dit en passant, nous avons déjà trouvé plusieurs erreurs après la sortie de MK dans la "pierre", mais NIIET les a considérées suffisamment critiques pour changer la disposition de MK: elles s'accumulent davantage - elles vont la réparer.

Titre



Je dois aussi dire que le microcontrôleur a survécu à plusieurs noms. Au début, pendant le développement, il avait le nom de code «MS01», puis le lot expérimental de pierres s'appelait NT32M4F1, puis il est devenu K1921VK01T (en outre, à certains endroits, les lettres sont écrites en russe, dans d'autres lettres anglaises). Par conséquent, si vous voyez ces noms dans les premiers articles et publications sur ce MK, ne soyez pas surpris.

Combien cher?


Actuellement (début 2016), le NIIET est prêt à vendre le premier lot de microcontrôleurs, qui a déjà commencé à arriver chez les clients. Les cristaux sont en partie en plastique, en partie en céramique (de sorte que dans les applications critiques, cela ne fonctionne pas comment vous -même_vous savez_ce_) Il semble que le prix de la pierre en plastique à la fin de 2015 soit légèrement inférieur à 3 tr, ce qui est supérieur au prix du TI TMS320F28335 lors de l'achat en Russie (au moment de la rédaction du présent document, le coefficient de conversion de «leurs» prix en «les nôtres» était de 76). Cependant, dans le TMS320F28335, il n'y a pas de mémoire utilisateur et d'heures, vous devez en définir des externes, car le coût devient finalement comparable. Cela rend K1921VK01T prometteur non seulement en termes de substitution des importations, mais aussi pour de simples «intérêts commerciaux». Bien que cette comparaison, bien sûr, ne soit pas tout à fait correcte - vous pouvez trouver un tas d'exemples de cristaux moins chers sur le Cortex-M4F et avec une fréquence d'horloge plus élevée, mais avec moins de périphériques. Par conséquent, pour des tâches simples, le K1921VK01T sera excessivement grand et coûteux. Mais pour l'application principale (contrôle des moteurs électriques et électronique de puissance complexe) - elle est compétitive.

Qu'avons-nous des performances?


Nous avons fait une présentation à l'exposition à ce sujet il y a un an, la présentation peut être trouvée ici. Nos tests, bien sûr, ne prétendent pas être particulièrement précis - après tout, nous n'avons pas exécuté de véritables repères, mais nous avons «enroulé» le même système de contrôle vectoriel dans le test (et quoi d'autre peut exciter les entraînements électriques?). Mais une brève relecture de la présentation est la suivante: l'architecture ARM Cortex-M4F est en retard sur le DSP de base C28 TI dans les calculs moyens requis pour les tâches d'entraînement. Si vous réduisez la précision des calculs, lorsque cela est possible, en utilisant des fonctions trigonométriques approximatives, etc., vous pouvez réduire cet écart à environ 15%. Mais en même temps, la fréquence d'horloge des cœurs C28 supérieurs (le même TMS320F28335) est de 150 MHz, et la fréquence de K1921VK01T est de 100 MHz. Par conséquent, avec toutes les optimisations de bibliothèque, le K1921VK01T est équivalent en puissance de calcul quelque part à la série TI piccolo MK avec une fréquence de 90 MHz. Ce qui peut être interprété comme ... très bien, à notre avis,car si vous utilisez correctement toutes les cloches et sifflets matériels du nouveau MK comme le DMA et les mesures ADC auto-filtrantes, vous pouvez économiser beaucoup sur les cycles d'horloge. D'une manière ou d'une autre, nous avons réussi à «bourrer» dans K1921VK01T notre projet de performance le plus exigeant, basé sur le TMS320F2810 (150 MHz, cœur C28), qui tombe déjà dans ce même 2810.

?


Et qu'est-ce qui pourrait leur arriver, c'est ARM! Normal, sans "mais". Prenez n'importe quel JTAG, n'importe quel environnement de développement, mais ... non, après tout, aucun ne fonctionnera. «Mais» est le firmware de la mémoire flash. Malgré le fait que le noyau ARM lui-même soit normalisé et que tout JTAG et environnement se connecte au K1921VK01T, ce n'est pas si simple avec le firmware flash. Il semble que chaque fabricant de microcontrôleurs considère qu'il est de son devoir de faire ses propres registres pour travailler avec le firmware de sa mémoire flash, donc les créateurs d'outils de développement sont tourmentés avec le soutien de tout ce zoo. Le K1921VK01T n'est pas loin derrière à cet égard non plus - il existe également des méthodes de travail avec le flash. Mais si pour les éminents fabricants, les programmeurs de mémoire flash (pilote, clignotant ou comment dois-je l'appeler?) Dans les environnements de développement sont écrits et fonctionnent prêts à l'emploi, alors pour K1921VK01T, tout ne fonctionne que pour ces environnementspour lequel les programmeurs ont écrit au NIIET. Heureusement, pour IAR et Keil, tout est prêt et des exemples de projets avec des instructions de firmware peuvent être trouvés surForum NIIET , ainsi que dans le référentiel ouvert sur Bitbucket , qui est maintenu par NIIET. De plus, chez NPF Vector, nous avons écrit la prise en charge de la programmation du flash K1921VK01T pour OpenOCD(Ouvrir le débogueur sur puce). C'est une telle couche entre le débogueur GDB et le fer sous la forme de différents émulateurs JTAG et de différentes pierres. Mais pendant que nous tirions la «révision de code» dans le référentiel OpenOCD avec la résolution des conflits, les développeurs NIIET ont écrit la même chose, mais la leur était meilleure (ils ont également ajouté la fonction de gravure utilisateur en plus de graver la mémoire flash principale), mais ... ce sont toutes les paroles. Que donne cet OpenOCD? Il s'agit d'une sorte de couche d'abstraction du fer, qui vous permet de créer votre propre environnement de développement gratuit et gratuit pour K1921VK01T basé sur n'importe quel IDE populaire. Nous, dans le «Vector», aimons Eclipse (parce que l'environnement TI Code Composer Studio, basé sur la v4, est basé sur lui, nous y sommes habitués et généralement, il n'y a pas de meilleur IDE au monde qu'Eclipse) Et les développeurs de NIIET ont créé un environnement de développement sur Qt Creator. Mais, en général, le sens est le même ici et là: il prend l'environnement, prend l'ensemble des outils de développement croisé gratuits pour GCC, prend le plug-in pour travailler avec OpenOCD, OpenOCD lui-même, quelques configurations, un peu de magie ... et vous travaillez déjà pleinement avec K1921VK01T, en oubliant IAR et Keil. Au moment d'écrire ces lignes, nous avons publié notre assemblage Eclipse (nous l'avons nommé VectorIDE) pour K1921VK01T sur notre site Web , voir la recette de Qt Creator sur le forum NIIET . Personnellement, nous menons tous les projets pour K1921VK01T dans un environnement gratuit et nous vous conseillons - l'ensemble des compilateurs GCC n'est pas vraiment à la traîne des IAR de marque (voir notre même présentation), mais si vous êtes une entreprise réputée, vous n'avez pas besoin d'acheter des logiciels importés coûteux (déjà avec un facteur de conversion de 76, Karl! 78!).
Ah oui. Il y a encore une chose. Il s'appelle Codemaster ++ [ARM] . Il s'agit d'un environnement de développement 100% national, y compris les compilateurs, et également conçu pour K1921VK01T. Nous avons examiné ses premières versions il y a un an, mais nous avons constaté qu'il n'était pas encore prêt, un peu en termes de compilateurs et beaucoup en termes de facilité d'édition de code (bien que cela puisse rivaliser avec l'IAR, qui sait ce que je veux dire). Mais il est petit et rapide, et sur l'interface, il ressemble à une sorte de débogueur "hacker" comme OllyDbg (comparer: un et deux ). En général, quelqu'un sera peut-être intéressé. Je dois dire que les développeurs (entreprise«Fiton» ) a fait de gros efforts, a même demandé à un moment donné notre benchmark à la «vector engine control» afin d'optimiser ses compilateurs.

Qu'avons-nous avec les kits de débogage?



Début 2016, quatre cartes de débogage sur K1921VK01T sont connues dans la nature. Il s'agit de notre VectorCARD K1921BK01T et d'autres ... de concurrents. Ok, tant pis , voici les liens LDM-HELPER-K1921BK01T et MBS-K1921VK01T . Il semble également que le NIIET lui-même ait sa propre carte NIIET_1921BK01T, mais sur son site, il me semble que je me cache - si quelqu'un trouve un lien, je serai heureux de compléter l'article. Quelle est la différence entre eux? Nous ne vendons pas une carte nue, mais un kit avec un onduleur, un moteur électrique, un contrôle vectoriel dans les codes source C (basé sur ce que nous avons écrit à l'époque pour Digital Solutions), ainsi qu'un programme de haut niveau et un pilote CANopen pour surveiller tous les processus à l'intérieur du lecteur - voir notre premier article. Par conséquent, si vous voulez simplement jouer avec le nouveau MK, faire clignoter une LED ou envoyer des données via diverses interfaces de communication, il est préférable d'acheter des cartes de débogage concurrentes (bien que nous ayons également une option de carte nue pour 15 tr, mais elle est complètement "nue" - quelques conclusions). Cependant, si vous souhaitez créer un entraînement électrique sur le nouveau MK, notre kit et logiciel de débogage peuvent vous faire économiser une demi-année ou un an de temps de développement (ou peut-être plus, selon que vous connaissez la théorie de l'entraînement électrique et si vous avez vos propres outils de débogage et d'oscilloscope). similaire au nôtre). Si vous lisez attentivement le premier article, alors, souvenez-vous probablement que le débogage d'un système de commande pour un entraînement électrique sans moyen de visualiser les processus à l'intérieur est impossible. Et si chez Texas Instruments l'environnement de développement est capable d'afficher des oscillogrammes «prêts à l'emploi» basés sur les données de la matrice de mémoire de MK, pour ARM dans des environnements de développement universels (pas d'un fabricant spécifique de MK), une telle fonction n'a pas encore été observée (si les développeurs Fiton l'ont lu - Souhaitez-vous finaliser votre Codemaster ++ [ARM] avec le générateur d'oscilloscope? C'est facile à faire!). Dans notre kit de débogage, de tels moyens de visualisation des formes d'onde sont présents, vous pouvez donc voir immédiatement tout ce qui est censé contrôler les moteurs électriques: la forme des courants de phase, les tensions, les entrées / sorties de tous les régulateurs, etc. Le prix de notre kit est important, environ 130 tr.(un seul moteur électrique avec tous les capteurs de position coûte actuellement environ 30 tr). Mais pour une organisation souhaitant apprendre un nouveau produit, cela ne devrait pas être critique - un environnement de développement commercial pour ARM seul peut coûter plus cher.

Inconvénients de K1921VK01T


Quels sont les principaux inconvénients du nouveau K1921VK01T?
• Premièrement, il s'agit sans aucun doute d'un produit brut, car il a été réellement programmé jusqu'à présent par 10 à 20 personnes. Lorsque plus de développeurs y seront installés, des bugs seront détectés - de nouvelles révisions seront publiées. Alors préparez-vous. Mais, néanmoins, ils peuvent tordre les moteurs - tordus personnellement.
• Pour le moment, la documentation est également humide. Il y a peu d'erreurs, mais certaines choses sont expliquées ... ce n'est pas tout à fait clair. On pourrait peindre un peu plus en détail, donner des exemples. Je pense qu'avec le temps, ce sera finalisé.
• Le microcontrôleur est très grand et sophistiqué. C'est pour quelqu'un un plus, pour quelqu'un un moins. Très peu d'applications couvrent la gamme complète de ses capacités. NIIET pense déjà à une série de MK basée sur lui, avec différents bâtiments et un ensemble de périphériques. Mais pour l'instant - il n'y a que K1921VK01T.
• Il a un ADC spécifique. Souvent, les fabricants MK installent un module ADC rapide (12 MS / s) et le multiplexent sur plusieurs canaux - par exemple, cela a été fait par Texas Instruments dans la série C2000. Mais dans le K1921VK01T, il y a 12 modules ADC lents (1.7MS / s) à deux canaux fonctionnant en parallèle. Pourquoi est-ce mauvais en plus de l'incapacité de mesurer quelque chose très rapidement? S'il y a un ADC dans le MK, alors sur la carte contrôleur, vous pouvez envoyer des signaux de référence calibrés, disons 1V et 2V, à deux canaux inutilisés, et les utiliser pour calculer et compenser l'erreur multiplicative et l'erreur de biais de cet ADC, étendant la correction à tous les canaux (l'ADC en est un ) Quand il y a beaucoup d'ADC dans MK, une telle astuce ne fonctionnera pas - ils auront tous leurs propres erreurs personnelles. Nous avons utilisé l'astuce d'étalonnage sur le Texas Instruments MK type TMS320F2810 (cela est décrit dans la fiche technique et recommandé),ici dans K1921VK01T sans étalonnage, nous avons obtenu une précision inférieure de l'ADC par rapport au TMS320F2810 étalonné. Nous avons dû créer un support spécial pour calibrer chaque module ADC K1921VK01T indépendamment et assembler la table de calibrage dans la mémoire utilisateur intégrée. Ensuite, la précision des mesures analogiques s'est avérée comparable (l'étalonnage ne flotte presque pas loin de la température - il a été vérifié). Probablement, NIIET devrait flasher une telle table en usine, ce serait pratique. Mais alors que le flash est vide.Ensuite, la précision des mesures analogiques s'est avérée comparable (l'étalonnage ne flotte presque pas loin de la température - il a été vérifié). Probablement, NIIET devrait flasher une telle table en usine, ce serait pratique. Mais alors que le flash est vide.Ensuite, la précision des mesures analogiques s'est avérée comparable (l'étalonnage ne flotte presque pas loin de la température - il a été vérifié). Probablement, NIIET devrait flasher une telle table en usine, ce serait pratique. Mais alors que le flash est vide.
• La fréquence de 100 MHz, bien sûr, est plutôt basse, je voudrais qu'elle soit plus rapide. Mais c'est-à-dire. Bien qu'à certains endroits, ils écrivent la fréquence de 125 MHz - tout dépend de la température ambiante. "Digital Solutions" a rapporté de telles informations non officielles: l'intérieur du cristal est conçu pour un maximum de 125 degrés. La température est d'environ 15 degrés supérieure à celle de l'environnement. Selon le projet, K1921VK01T devrait fonctionner à 85 degrés de l'environnement + réserve, ce qui est garanti d'être atteint à 100 MHz. En fait, MK peut être accéléré au-dessus de 100 MHz, les échantillons individuels fonctionnaient à 140-170 MHz, mais cela dépend de l'échantillon. Par conséquent, si le cristal n'est pas surchauffé, il peut être dispersé si quelqu'un en a besoin. Mais si dans votre application il fait chaud (+85), alors il vaut mieux ne pas intimider au dessus de 100 MHz.
• Il n'y a pas de chargeur de démarrage officiel (programmeur) via les interfaces de communication (CAN, RS). La couture MK n'est possible que via JTAG / SWD. Par conséquent, si le contrôleur de produit est dans un boîtier fermé, vous devez écrire votre chargeur de démarrage pour l'interface de communication souhaitée. Ou attendez que NIIET écrive. Jusqu'à présent, non, mais je pense que cela apparaîtra.

Conclusion


Bien que quoi d'autre soit la conclusion? Tout ne fait que commencer! Enfin, il y a un microcontrôleur domestique sur lequel vous pouvez vraiment faire un entraînement électrique! Avant cela, tous les MK nationaux existants étaient soit faibles par le noyau, soit faibles par la périphérie afin de faire face aux tâches de contrôle de la motocyclette. Mais maintenant - liberté totale pour les structures de contrôle les plus complexes et l'unité de puissance la plus complexe. Je voudrais surtout noter les perspectives de ce microcontrôleur pour servo variateurs de machine. Jusqu'à présent, en Russie, il n'était pas possible de fabriquer une machine de précision multiaxes entièrement domestique, car (l'une des raisons) il n'y avait rien pour faire fonctionner un servomoteur de haute qualité. Il existe maintenant un tel microcontrôleur.

Source: https://habr.com/ru/post/fr389129/


All Articles