Début des tests du système SCADA intégré au programme FLProg


Bon après-midi Pendant très longtemps, FLProg n'a eu aucune nouvelle. Cela est justifié par le fait que j'étais occupé par la grande tâche de créer un système Scada intégré dans le programme. Et donc la première version bêta de ce système est sortie.

Au cours du processus de développement, de temps en temps, je parlais du site Web du programme de la situation au travail.

Historique du système
Le premier rapport d'avancement du projet du 29 juin 2017 année



Le deuxième rapport sur l'état d'avancement du projet du 6 septembre 2017 année




Je vais d'abord parler de l'idéologie du système.

Actuellement, je n'ai pas trouvé un seul système Scud qui me conviendrait en termes de niveau d'entrée et de facilité de création de projets. Presque tous sont des monstres conçus pour un usage industriel, et pour commencer à les utiliser, vous devez suivre une formation sérieuse. Et après la formation (par exemple, je suis un développeur certifié sur WinCC), le début du travail sur eux nécessite un temps considérable. En outre, leurs prix commencent à des dizaines de milliers de roubles. Il existe bien sûr des versions gratuites, mais le plus souvent elles sont limitées soit par un très petit nombre de tags, soit par la durée de fonctionnement. Il y a FreeScada. Mais je ne comprenais toujours pas comment travailler avec elle. Et si je ne pouvais pas faire cela, alors les gens qui ne sont pas familiers avec la programmation (qui sont la majorité des utilisateurs du programme) ne pourront pas faire face.

De plus, dans tous les skads que j'ai envisagés pour créer la logique de comportement du skad lui-même, certains langages de programmation textuels sont utilisés. Autrement dit, il est nécessaire d'étudier leur syntaxe, les règles d'écriture, un ensemble de commandes. Cela contredit également la devise du projet FLProg - «Programmation pour les non-programmeurs».

En général, je voulais quelque chose de léger, avec un seuil d'entrée bas et la possibilité de programmer la logique interne en utilisant la programmation visuelle. Et bien sûr, c'est gratuit. Rien de convenable n'a été trouvé, ce qui signifie que nous allons réinventer notre vélo.



Pour le concept de base, j'ai pris l'idée d'implémenter non pas un scad, mais de présenter l'ordinateur comme un microprocesseur avec un écran, un clavier et une souris intégrés. En conséquence, les principales parties du programme sont immédiatement apparues.

Editeur graphique



À titre d'exemple, j'ai pris le programme WinCC très préféré de Siemens, intégré au package TiaPortal. Il a supprimé ce que je n'aime pas à ce sujet, a ajouté ce qui me semble manquer, a pris un peu de Windows Paint, un peu de CorelDraw, un peu de moi. Dans tous les autres skads que j'ai vus, j'étais le plus gêné par la tâche rigide des tailles d'écran. Lorsque ces écrans étaient affichés sur des moniteurs avec une résolution différente, soit des cadres noirs étaient obtenus, soit certains éléments dépassaient l'écran et étaient simplement invisibles. Cela s'applique pleinement, par exemple, au même WinCC. Je le vois au travail tous les jours. Dans mon scud, la taille de l'écran est également définie, mais lors de la lecture d'un projet dans le lecteur, vous pouvez redimensionner la fenêtre du programme, tandis que les éléments s'adapteront automatiquement à la nouvelle taille. Quelque chose comme la mise à l'échelle, mais intelligente, sans perte de qualité (tous les widgets skada sont vectoriels).

Jusqu'à présent dans la première version bêta du programme de widgets. Il s'agit d'un rectangle, d'un cercle, d'une polyligne, d'un texte. De plus, il y a des contrôles. Il s'agit d'un champ d'entrée / sortie, d'un simple bouton, d'un indicateur rond.

Tous les widgets ont une animation. En utilisant les variables attachées, ils peuvent changer dynamiquement leur position, visibilité, couleur de contour (qui a le contour), couleur de remplissage (qui peut remplir). Un widget texte peut changer son texte, et un widget rectangle et un champ de saisie peuvent avoir un mode de remplissage dynamique (le niveau de remplissage change en fonction de la valeur de la variable liée).

Il est également possible de lier des événements à n'importe quel widget. Il s'agit de survoler le widget, de déplacer le curseur hors du widget, de cliquer sur le bouton de la souris, de relâcher le bouton de la souris, de cliquer, de double-cliquer. Réactions possibles aux événements - modification de la valeur d'une variable, inversion de la valeur d'une variable de type booléen, passage à un autre écran, ouverture d'une boîte de dialogue de service.

Ce n'est certes pas beaucoup, mais pour la première version pour l'instant c'est suffisant. De plus, le nombre de widgets et leurs capacités augmenteront.

Petite démonstration


Éditeur de schéma



Ici, bien sûr, j'ai pris l'éditeur FBD comme base, qui est utilisé lors de la programmation du contrôleur dans le programme FLProg. L'interface de l'éditeur n'a pas beaucoup changé, ce qui permettra aux utilisateurs du programme de travailler facilement dans l'éditeur du schéma skad. Mais le remplissage a radicalement changé. Pendant le travail sur le programme FLProg (c'était la cinquième année déjà), j'ai eu beaucoup d'idées sur l'optimisation du travail de l'éditeur de programme et du compilateur. J'ai appliqué toutes ces idées dans l'éditeur de diagramme scada, et après l'avoir exécuté, je les transférerai également dans le programme principal. En ce qui concerne le support du langage LAD dans le scad, je n'ai pas encore pris de décision, s'il y a suffisamment d'utilisateurs intéressés, je le ferai.

Petite démonstration


Les communications

Et bien sûr les communications, quel scad sans eux.

  1. Protocole interne FLProg. Il s'agit de l'échange de variables de tout type via ComPort (pour un ordinateur) avec le port UART du microcontrôleur. Il fonctionne rapidement, mais uniquement pour le microprogramme de contrôleur créé dans le programme FLProg.
  2. Modbus RTU, Modbus TCP, Modbus RTU sur TCP. Vous pouvez créer un nombre illimité de connexions à l'aide de ces protocoles. Les fonctions 1, 2, 3, 5, 6, 15, 16 sont prises en charge. Le pilote de protocole est auto-écrit, les bibliothèques externes ne sont pas utilisées. J'ai essayé de me conformer autant que possible à la norme Modbas. Les tests montreront comment j'ai réussi. Il fonctionne sous Windows et Linux. Cependant, pour Linux, il existe certaines limitations qui échappent à mon contrôle. Le fait est que Modbus TCP Slave soulève un serveur TCP sur un port spécifique. Pour Modbus, le port standard est -502. Mais sous Linux, les ports inférieurs à 1024 ne sont pas autorisés à être ouverts par un utilisateur normal. Par conséquent, vous devez soit créer un esclave sur le port avec un nombre plus élevé, soit démarrer le lecteur à partir de la racine (ce qui n'est pas bon). Avec le maître, puisqu'il est client, il n'y a pas de tels problèmes.

Pour toutes les communications, il est possible dans le processus d'exécution d'activer, de désactiver la connexion, de configurer entièrement la connexion, d'activer et de désactiver l'interrogation des esclaves, de surveiller l'état de la connexion, ainsi que l'état de la connexion de l'esclave avec le maître. Bien sûr, pour chaque maître et esclave, il existe des variables de service qui stockent le code de la dernière erreur lors de l'interrogation.

À tout moment pendant le développement d'un projet, vous pouvez ouvrir ce projet pour exécution et voir comment cela fonctionnera. Pour jouer dans le lecteur, un fichier Runtime est créé.

Petite démonstration
Réception - transfert de variables via UART



Modbus RTU



Modbus RTU



Joueur

Le lecteur de fichiers d'exécution est une application autonome. Le package du lecteur comprend trois exécutables pour Windows et deux pour Linux.

Fichier Start.exe (version Windows uniquement). Au démarrage, il recherche un fichier d'exécution (extension .fsp) à ses côtés. S'il le trouve, il le lance pour exécution. Si ce n'est pas le cas, il recherche les entrées du gestionnaire de projet. Ces entrées recherchent le projet par défaut, qui est lancé pour exécution. Si les enregistrements du gestionnaire de projet ne sont pas trouvés, ou si le projet par défaut n'y est pas marqué, le gestionnaire lui-même démarre. À l'aide du gestionnaire, vous pouvez rechercher des fichiers d'exécution sur l'ordinateur, en faire une liste et en attribuer un par défaut. Le fichier Start.exe ne peut pas être renommé et aucun fichier d'exécution (extension .fsp) ne peut y être attaché. Vous ne pouvez pas supprimer ce fichier du package.

Fichier Pleer.exe. Le comportement est similaire au fichier Start.exe, mais il n'y a aucune restriction sur le changement de nom et la liaison des fichiers d'exécution. Si ces fonctions ne sont pas nécessaires, ce fichier peut être supprimé du package (cela ne s'applique qu'à Windows, sous Linux, il s'agit du fichier de démarrage principal).

Fichier Manager.exe. Sert au lancement sans ambiguïté du chef de projet. Si cette fonction n'est pas nécessaire, ce fichier peut être supprimé du package.

Les fichiers restants dans le package sont directement le lecteur.

Petite démonstration


Entraînement!




Le principal objectif du projet FLprog est d'attirer des jeunes vers la profession de programmeur industriel, d'ingénieur en électronique et tout simplement dans la profession technique. Il y a trop de programmeurs ordinaires et de directeurs des ventes dans notre pays. Partout où vous crachez, soit un programmeur jouet pour un android, soit un programmeur web de pages de vente, soit un gestionnaire "avancé". Mais vous ne trouverez pas un bon ajusteur ou développeur d'un système automatisé de gestion des incendies. À cet égard, je me réjouis de l'apparition de deux cercles de robotique, qui ont choisi FLProg comme programme de travail principal. L'un dans la ville de Shatura , l'autre à Mytishchi (photo de ce cercle). Dans cette optique, la scada a également été développée. J'ai essayé pour que tout enseignant puisse faire une application interactive, par exemple, pour démontrer le fonctionnement de la logique de base, sans difficultés, l'apprentissage des langages de programmation, les principes de construction de programmes. De plus, avec l'aide de cette scada, il est possible d'effectuer n'importe quel travail de laboratoire sur la construction de circuits logiques, une formation sur la création de systèmes d'automatisation industrielle.



Je n'ai pas de cadeau d'enseignant, mais je pense qu'un vrai enseignant peut trouver le bon matériel. Eh bien, j'ai essayé de fournir l'outil.



Je dois immédiatement avertir que la version actuelle du programme est FORTEMENT test. Étant donné que le personnel du projet FLProg est composé d'une seule personne (moi), j'utilise sans vergogne les utilisateurs du programme en tant que service d'assurance qualité. Et ils sont heureux de faire ce travail. À ce jour, de nombreuses erreurs ont été détectées. Par conséquent, dans un proche avenir, la version de test sera mise à jour sur le serveur. Le temps de test estimé est d'un mois, après quoi une version stable sera publiée.

Si ce sujet intéressera les lecteurs de Geektimes, je continuerai à publier des articles avec une description plus détaillée des fonctions du programme.

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


All Articles