Pilule bleue STM32F103 comme PLC

Présentation


Certes, tous ceux qui ont commencé ou commencent à étudier les microcontrôleurs STM32 ont une carte de débogage de fabrication chinoise, surnommée à juste titre les touristes étrangers Blue Pill (tablette bleue).

Cette carte est basée sur la puce STM32F103C8T6, qui est un processeur 32 bits basé sur le noyau Cortex - M3. L'image ci-dessous montre l'affectation classique de la carte et des broches.

L'apparition de la planche classique
Mon image

Affectation des broches
Mon image

Comment faire du PLC à partir de moyens improvisés en 5 minutes?


Comme cela arrive souvent, les leçons tirées d'Internet vous ont appris à travailler avec des minuteries, USART, changer d'état de sortie et même travailler avec DMA! Et après tous les tests, la carte prend place en toute sécurité sur le plateau des pièces de rechange - une bonne chose, mais jusqu'à présent aucune application décente n'a été trouvée.

Si vous lisez cet article, il est temps de retirer la carte de l'étagère et de la souffler, car nous allons maintenant créer un contrôleur logique programmable basé sur celui-ci qui sera conforme à la norme internationale IEC61131-3.

Une fois que le microprocesseur aura flasqué avec le firmware attaché (hélas, jusqu'à ce que la publication des codes sources dans les plans soit disponible), il pourra déjà fonctionner comme un automate. Et la chose la plus intéressante est que la carte peut être programmée à l'aide du logiciel GX Developer FX standard conçu pour la programmation des contrôleurs Mitsubishi FX2N. Ce logiciel (et russifié) que j'ai téléchargé gratuitement sur le site officiel de Mitsubishi après l'enregistrement.

Alors, quelles nouvelles fonctionnalités notre petite carte bleue a-t-elle acquises après le firmware?

Tout d'abord, vous pouvez maintenant le connecter à un ordinateur à l'aide du connecteur micro-USB. Afin de permettre l'échange de données entre l'environnement de programmation et le contrôleur, vous devez installer les pilotes de port COM virtuel. Ils peuvent être téléchargés à partir du lien du document bluepill_update.pdf en pièce jointe. Après avoir installé le pilote et connecté la carte à USB, un nouveau périphérique apparaîtra dans les périphériques de l'ordinateur personnel, comme indiqué dans l'image.

Type de configuration matérielle du contrôleur après l'installation des pilotes
Mon image


Vous pouvez maintenant exécuter le GX Developer FX que nous avons installé. Après avoir démarré le programme, vous aurez la fenêtre suivante:

Premier lancement de GX Developer FX
Mon image

L'étape suivante consiste à créer un nouveau projet. Dans le menu Projet - Nouveau projet. Cette fenêtre s'ouvrira pour vous:

Nouveau projet chez GX Developer FX
image

Vous ne pouvez rien changer ici, puis cliquez sur OK. Donc - nous avons un projet vide, et maintenant nous devons configurer une connexion en ligne à la carte.

Pour ce faire, sélectionnez dans le menu En ligne - Paramètres de transfert. Cette fenêtre s'ouvrira pour vous:

Configuration de la connectivité dans GX Developer FX
image

Vous ne pouvez rien changer ici, puis cliquez sur OK. Donc - nous avons un projet vide, et maintenant nous devons configurer une connexion en ligne à la carte.

Pour ce faire, sélectionnez dans le menu En ligne - Paramètres de transfert. Cette fenêtre s'ouvrira pour vous:

Configuration de la connectivité dans GX Developer FX
image

Dans la série des interfaces PC, sélectionnez Ordinal (ici, il est mal traduit - il doit être

Serial) et vous verrez cette fenêtre:

Configuration du port série
image

Ici, nous sélectionnons le numéro de port COM correspondant à celui qui est visible dans les appareils informatiques personnels. Il s'agit du port COM virtuel STMicroelectronics (COM2) dans notre cas. Nous pouvons maintenant vérifier s'il existe une connexion. Pour ce faire, cliquez sur le bouton Tester la connexion dans la boîte de dialogue précédente. Si tout est en ordre, vous aurez un message comme dans la figure ci-dessous:

Vérification de la connexion
Mon image

Et maintenant, nous pouvons procéder en toute sécurité à la chose la plus intéressante - la programmation du contrôleur. Cette version prend en charge trois langues: IL - langue d'instruction, type d'affichage de chaîne. CONT - langage logique d'escalier, type d'affichage visuel. SFC - langue des blocs consécutifs, type d'affichage visuel. Et vous pouvez toujours basculer entre l'affichage des langues IL et LAD et vice versa. Voici un programme LAD typique:

Programme de gestion - LAD
Mon image

Et voici le même programme, mais en langage IL:

Programme de gestion - IL
Mon image

Bien sûr, tout cela est bien, mais je veux examiner la logique du programme - pour comprendre ce qui se passe là-bas. Pour ce faire, appuyez sur la touche F3 - et si le programme est écrit sur le contrôleur, l'affichage passera en mode de surveillance en ligne. Pour enregistrer le programme, vous devez le sélectionner dans le menu Online - Write to the controller.

La fenêtre suivante s'affiche:

Sélection des éléments du projet pour l'écriture sur le contrôleur
Mon image

Dans la fenêtre, sélectionnez les options d'enregistrement (ici l'ensemble du programme et les paramètres du contrôleur sont sélectionnés), puis cliquez sur le bouton Exécuter. Le programme vous avertira que pour l'enregistrement, le contrôleur passera en mode STOP (vous le verrez par l'extinction de la LED connectée au PC13), il enregistrera et mettra le contrôleur en mode RUN.

Et voici comment le code source du programme CONT sera affiché en ligne:

Type de partie du programme en langage LAD en mode de surveillance en ligne
Mon image

Et le même morceau d'un programme IL en ligne:

Type de partie du programme de surveillance en ligne IL
Mon image

Et voici le code source SFC:

SFC - l'apparence du programme
Mon image

Pour faciliter les tests, j'utilise d'anciens développements de test du matériel du contrôleur, qui pour une raison ou une autre n'ont pas été utilisés. L'une de ces cartes est illustrée dans la figure ci-dessous:

Carte de débogage - Contrôleur intermédiaire
Mon image

Cette carte fournit une isolation galvanique pour les bus UART1, UART2 et 1 fil. Les entrées et sorties discrètes sont également isolées galvaniquement. Les mnémoniques suivantes sont acceptées pour le programme: X1 est l'entrée avec l'adresse 1, Y2 est la sortie avec l'adresse 2, M104 est l'opérande de bit avec l'adresse 104, D1000 est le registre général avec l'adresse 1000. La version du micrologiciel qui est dans la pièce jointe a les restrictions suivantes: Le nombre d'étapes du programme est de 1000 (le maximum possible est de 8000).
Nombre de registres - 2000 (plage D0000-D1999). Nombre de variables binaires - 3072 (plage M0-M3071). UART1 - prise en charge Modbus RTU maître / esclave, nombre d'esclaves en mode maître -2 (maximum possible - 128) .UART2 - prise en charge Modbus RTU maître / esclave, le nombre d'esclaves en mode maître -2 (maximum possible - 128).

Par défaut, les paramètres de communication série sont 57600, 8N1. UART1 - en mode esclave avec l'adresse 1, UART2 - également en mode esclave avec l'adresse 2.

Pour le bus 1 fil, qui ne prend actuellement en charge que des capteurs comme le DS18B20, le nombre d'esclaves est de -2 (le maximum possible est de 128).

Décharger le programme du contrôleur et le convertir en une forme lisible par l'homme est également pris en charge (je préfère LAD).

Le programme est construit en utilisant le système d'exploitation en temps réel ChibiOS RT.

Les paramètres de communication sur les bus Modbus RTU et 1 fil sont configurés à l'aide du programme que vous pouvez trouver dans la pièce jointe. Par exemple, nous envisageons maintenant de configurer et de rechercher des capteurs avec des adresses inconnues. Après avoir démarré le programme, vous aurez cette fenêtre:

Apparence du programme de configuration après le démarrage
Mon image

Accédez à l'onglet 1 fil et sélectionnez maître 1 fil, et assurez-vous de cliquer sur le bouton Write to PLC pour écrire sur le contrôleur:

Configuration de l'assistant 1 fil
Mon image

Et maintenant, après avoir cliqué sur le bouton Rechercher un esclave, une fenêtre s'ouvre où vous pouvez sélectionner une adresse dans la zone D0000-D2000, à partir de laquelle les valeurs de température enregistrées par les capteurs seront enregistrées sous la forme d'un nombre à virgule flottante.

Fenêtre de recherche esclave de bus 1 fil
Mon image

Et la fenêtre ci-dessous s'affiche après une recherche réussie de tous les capteurs connectés au bus d'échange de données.

Fenêtre de recherche des esclaves - 3 capteurs de température connectés trouvés
Mon image


Ici, nous pouvons ajouter les capteurs trouvés à la configuration actuelle ou remplacer complètement le capteur actuel par un nouveau. Dans notre cas, les données de température seront transmises à la zone de registre du contrôleur aux adresses D1500, D1502 et D1504 sous la forme d'un nombre à virgule flottante. Il ne reste plus qu'à appuyer sur le bouton Write to PLC et à redémarrer la carte pour activer la nouvelle configuration matérielle.

Téléchargement d'une nouvelle configuration sur le contrôleur
Mon image

Quoi d'autre peut être ajouté sur le programme de configuration? Il y a un point - c'est la représentation des nombres à virgule flottante dans le contrôleur FX2N. Pour simplifier la saisie des constantes dans ce format, nous avons dû utiliser un enregistrement constant avec le modificateur H. Dès que l'interpréteur de contrôleur rencontre un tel modificateur, il comprend qu'un nombre au format à virgule flottante sera transmis avec lui, mais sous la forme d'un enregistrement IEE754 avec une seule précision. La fenêtre du programme sur l'onglet Convertisseur est illustrée ci-dessous.

Convertir des formats de nombres à virgule flottante
Mon image

Conclusion - qu'avons-nous obtenu:


Le moment est venu de se poser la question - mais en fait, quelle est la vitesse d'un tel contrôleur? Tout est simple ici - lors de l'interrogation des deux ports de communication via Modbus RTU (contrôleur esclave - les deux ports) à une vitesse de 500 kbps et une longueur de requête de 122 registres, interroge 17 capteurs de température et exécute le programme le plus «lourd» (composé d'opérandes binaires) à partir de 7745 pas, le cycle d'exécution était de 21 ms. Et bien sûr, il y a aussi des inconvénients dans un tel contrôleur. Le premier est que les cartes bleues diffèrent par la faible qualité des composants, et je recommande donc d'appliquer une alimentation externe à la carte avant de connecter un mini-USB. Le second est, bien sûr, qu'il n'y a pas de mémoire non volatile (plus précisément, elle existe - mais seulement 9 registres dans la zone supportée par la batterie). Et vous comprenez vous-même qu'un tel appareil est préférable de ne pas être utilisé pour des applications critiques ou en production. Mais pour la maison ou pour la formation - c'est le plus bon marché, abordable et compréhensible.

J'ai essayé d'étoffer la critique - et si vous avez des problèmes, écrivez. Je serai particulièrement heureux si vous trouvez des erreurs dans la mise en œuvre du programme. J'espère que l'article sera instructif et que vous n'avez pas perdu votre temps à le lire.

Les téléchargements de cet article sont ci-dessous.

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


All Articles