Wednesday, June 8, 2016

Un clignoteur avec BEREMIZ

L'objectif de ce premier programme est de mettre en œuvre la configuration minimum avec BEREMIZ pour faire tourner un premier programme. Notre programme est simplement composé de deux bits et de deux blocs de temporisation.
Le fonctionnement d'un programme dans Beremiz est basé:
- sur des taches automates
- sur de programme
- sur des blocs fonctions.

Il convient donc en premier lieu de créer un nouveau projet. Pour cela, cliquez sur l’icône de création de projet ou cliquez sur Fichier/Nouveau.
Créer ensuite un dossier pour votre programme et sélectionner ce dossier puis cliquez sur Ouvrir.

Le menu latéral gauche de Beremiz vous affiche l'arborescence du projet. Pour le moment, il est seulement composé du projet et d'un onglet de ressources.

Renommez le projet pour l'appeler Tempo.

Il faut maintenant définir une tache automate. Cliquez sur l'onglet ressource1 puis, cliquer sur + dans la zone Tâches.
Dans la zone Nom, tapez Main_Task, ce sera le nom de votre tache principale. Dans la zone Activation, cliquez sur l’ascenseur et sélectionner périodique. Notre tache principale s’exécutera donc de façon régulière et suivant la période que nous allons définir dans le paramètre Interval. Cliquez ensuite dans la zone Interval et taper 100 dans la zone millisecondes. Notre tache sera donc éxécutée toutes les 100 millisecondes.

Nous allons maintenant réaliser un petit programme pour tester Beremiz.
Dans la zone projet, faire un clic gauche et sélectionnez programme.
Une fenêtre s'ouvre dans laquelle vous allez donner le nom de ce programme, appeler le Main, ce sera le programme principal de notre application.
Dans Beremiz, les variables sont créées au fur et à mesure des besoins, ces variables sont soient locales, donc leur portée est limitée au bloc fonction ou au programme dans lequel elles sont définies, soient externes, leur définition est donc réalisée dans une autre partie du programme. Les variables peuvent être globales, elles sont alors définies dans la partie ressource de l'application, dans ce cas, leur portée est étendue à l'ensemble de l'application.
Nous allons définir pour cet exemple deux variables de type booléen locales dans le Main de notre application.
Double cliquez sur Main, et ajoutez deux variables M1 et M2 de type booléen dont la valeur initiale est 0. Ces variables seront de classe locale puisque notre application exemple n'a pas de lien avec le monde extérieur.


Nous allons maintenant écrire le bloc ladder du clignoteur. Dans le menu sélectionnez une barre d'alimentation et poser la. Sélectionnez barre d'alimentation gauche et deux pattes.
Sélectionner ensuite un contact NO, cliquez dans la zone ladder puis sélectionnez inversé et M1 dans la zone variable.
Le bloc TON est dans la zone Librairie sur la partie droite de l'écran, il s'agit d'une temporisation à l'apparition. La durée est réalisée à partir d'une variable que vous insérerez à partir du menu contacts.
Dessinez l'ensemble du bloc comme indiqué ci-dessus.

Une fois le programme créé, il s'agit maintenant de le faire exécuter. Pour le moment seule une tache automate a été créée, mais cette tache n'appelle aucun code. Nous allons donc, dans la zone ressource, créer une instance de la tache automate pour exécuter notre programme Main.

Dans la zone ressource, et dans la zone Instances, cliquez sur + pour ajouter une instance de tache. Dans la zone Nom, donnez un nom à cette instance de tache, nous l'avons appelé Main_Instance. Dans la zone type, sélectionner Main, il s'agit du programme associé à notre instance de tâche, dans la zone Tâche, sélectionnez Main_Task, il s'agit de la tache à laquelle est rattachée notre instance.
Ce mécanisme est particulièrement intéressant car il permet de créer plusieurs taches avec des temps de scrutation différents. Il est particulièrement utiles lorsque par exemple dans un programme cohabitent des taches de comptage et des tâches de process. Les premières devant être beaucoup plus rapide que les secondes.

Notre application est maintenant fonctionnelle, cliquez sur l'outil compilation puis sur l'outil 'connecter à l'automate cible'.


Lorsque vous cliquez sur l'outil connecter, si une fenêtre s'ouvre, cliquez sur Locale. Nous verrons ultérieurement que Beremiz peux s’exécuter sur la machine locale ou sur une machine distante sur le réseau.
Le menu automate a donc maintenant cet aspect:


Cliquez sur 'Transférer l'automate' puis sur 'Démarrer l'automate'.

Félicitations !! vous venez maintenant de créer votre premier programme automate avec Beremiz. Il s'agit maintenant de vérifier qu'il fonctionne !!

Une fois l'automate démarré, cliquez sur Main dans le menu projet puis cliquez sur les lunettes dans la zone ressources ( sous la fenêtre projet ).
Dans la fenêtre Débogueur, vous verrez apparaître l'état des variables M1 et M2 en temps réel.
zone ressource pour activer le Debug
 

Zone de Debug


Notre premier programme fonctionne !! Toutefois, certaines limitations apparaissent:

le programme n'a aucun lien avec l'extérieur

Nous verrons dans un prochain billet comment utiliser les GPIO du Raspberry pour interagir avec Beremiz

Le programme ne tourne qu'à l’intérieur de l'environnement Beremiz

Beremiz dans sa version originale ne permet pas d'être exécuté à partir de la ligne de commande du Raspberry. Nous avons écrit un patch qui permet de lancer une application automate à partir de la ligne de commande au boot du Raspberry par exemple. Nous vous le proposerons dés que nous aurons Forké le projet sur GitHub.

Tuesday, June 7, 2016

BEREMIZ sur RASPBERRY

Beremiz est un environnement de développement open source pour la création d'application d'automatisme. Il est conforme au standard IEC-61131.
Avec Beremiz, il est donc possible d'utiliser le Raspberry comme un automate programmable. Le principe est le suivant:
- écriture des blocs Ladder ou grafcet
- compilation
- démarrage de l'application.
La première étape est donc d'installer cet environnement sur votre Raspberry. Pour cela un certain nombre de modules python sont indispensables. Il faut ensuite compiler Matiec qui convertit le code ST en C et le compile.

Téléchargez d'abord Beremiz et matiec sur le site officiel: http://www.beremiz.org/code

Décompressez Beremiz et matiec dans un même dossier, vous devriez obtenir quelque chose ressemblant à ça:
Commencez par renommer le dossier matiec-7518955c875a en matiec

Il faut ensuite installer les modules python nécessaires au fonctionnement de Beremiz, dans un terminal:

sudo apt-get install python-simplejson python-wxgtk2.8 python-matplotlib python-lxml pyro python-nevow


Compilez ensuite le compilateur matiec, installez d'abord automake, bison et flex.
Pour cela, ouvrez un terminal dans le dossier matiec et tapez:

sudo apt-get install automake bison flex


compilez ensuite matiec:

autoreconf -i
./configure
make

Votre environnement de développement Ladder est maintenant prêt à être utilisé. Allez dans le dossier de Beremiz et tapez:

python Beremiz.py



Beremiz est maintenant installé sur votre Raspberry.

Saturday, June 4, 2016

Pourquoi Ladder Open Source ?

Dans de nombreux domaines, le langage Ladder est aujourd'hui devenu incontournable pour réaliser des séquences d'automatisme de la plus simple à la plus compliquée. De nombreuses solutions propriétaires sont disponibles sur le marché, souvent couteuses, mais jamais ouvertes ni partagées.
Utilisant ce langage régulièrement, et développant des produits embarqués pour l'industrie, j'ai cherché des solutions open source permettant de réduire le besoin de composants externes et permettant de réaliser de petits automatismes rapidement tournant à coté d'applications plus importantes pour la supervision notamment.
Ces articles se veulent courts, décrivant des expériences vécues et pédagogiques.
Les informations que vous trouverez ici ne viennent pas de recherches sur le web mais de solutions trouvées à force de persévérance.
Les principaux sujets abordés concerneront dans le désordre, le RASPBERRY PI, BEREMIZ, OLINUXINO et Python. Ces outils seront tous utilisés en lien avec le langage Ladder.