Articles taggés codesys

Utilisation de la fonction affichage de texte [PLCLink CodeSys]

Une des grandes faiblesse dans l’utilisation de PLCLink était le fait que l’on ne pouvais afficher des messages que numérique, ou des messages texte pré enregistré, ce problème était due au fait que l’automate ne peut échanger que des données numérique (Plugin SSI ou Modbus).

Aujourd’hui (ou demain, quand Apple aura publier la mise a jour) la nouvelle fonction livré avec la version 1.5.7 vient régler ce problème.

En effet la fonction « Affichage du contenu direct d’un url » vas lire les données d’une URL ou contenue dans un fichier pour les afficher sur votre iBidule.

Le message ce limite a 32 caractères.

 

CodeSys

 

Le principe est simple, une action (ACT_ST_CHEEK_FILE) va détecter le changement de texte dans le message puis va lancer l’exécution d’un bloc fonction qui va aller écrire le texte dans un fichier stocké sur votre automate, PLCLink ce chargera ensuite d’aller lire le contenu du fichier et de l’afficher sur votre device.

 

Pour exécuter les actions de lecture et d’écriture de fichier nous aurons besoin de la bibliothèque SysLibFile.

 

Penser a mettre la variable string qui contient le texte en global, cela vous permettra de l’écrire depuis n’importe quel endroit de votre programme.

 

Que ce passe t’il dans le bloc de fonction :

 

On va commencer par aller ouvrir le fichier demandé, puis si tout c’est bien passé on écrit les infos a l’intérieur, et pour finir on fait une sauvegarde.

En entrée, on trouve : le non de notre fichier, avec son extension

le texte a écrire dans le fichier

un bool qui lance l’écriture

 

En sortie: un texte et un int qui vous donnent l’état de la fonction.

 

 

Mis a part la page de lancement l’ensemble du programme est en structured texte.

 

Il vous faudra donner le non du fichier avec sont extension, par exemple « message1.txt »

Vous trouverez également une visu qui vous permettra de modifier votre texte et le non de votre fichier

 

 

Attention : dans votre message texte il vous faudra ne pas utiliser le symbole de l’exclamation ‘ car celui-ci sert a délimiter les éléments string.

(Lire la suite…)

Base de l’utilisation de codesys, mise en route programme [Codesys]

2

Suite a plusieurs questions et demandes, je vais vous faire part des principes de base pour exécuter votre programme sur votre automate

 

Le pré requis est que votre programme soit fait et soit correcte.

 

 

 

  • Régler les paramétrés de communication

La première étape consiste a régler les paramètres de communication

Disons que en général vous avez le choix entre deux méthodes de transfert, pour certains automate seul le transfert part le cordon série sera possible

 

 

Rendez vous dans le menu « En ligne », puis « Paramètres de communication… »

 

(Lire la suite…)

Fonction MultiClick, Click Long, Multi actions sur un poussoir [Codesys]

0

Beaucoup d’entre vous souhaitent utiliser un même poussoir (interrupteur) pour effectuer diverses actions, par exemple : simple click allume la luniere, double click met en marche la ventilation, et un appui long baisse les volets

 

Je savais que Gilles Sassatelli l’avais deja mis en place, et comme j’avais aussi besoin de cette fonction, et que en plus je suis feignant ;-) je lui ai demander de me faire part de son travail, je l’ai remise en forme (enfin je devrais dire a ma forme, chacun ses habitudes) et j’ai ajouter les commentaires afin que cela soit bien plus facile a comprendre

 

 

Le principe de la fonction est simple :

Quand vous presser le bouton affecté a la fonction (b_in) un timer est lancé et l’on va regarder ce qui ce passe pendant l’écoulement de ce timer

(Lire la suite…)

Utilisation de Date et Heure dans Codesys [CodeSys]

12

Suite a plusieurs demande, je vais vous faire quelques petits Tuto sur la gestion de la date et de l’heure dans votre programme codesys
D’ailleurs n’hésiter pas a m’indiquer les sujets qui vous intéressent

 

Date & Heure

Afin de récupérer les infos, l’automate se synchronise à un serveur NTP

Vous aurez effectué cette configuration en vous rendant sur les pages de paramétrage de votre automate

Pour info si vous avez une FreeBox V6 sur votre réseau, celle-ci assure la fonction de serveur NTP, sinon grâce a google vous trouverez plusieurs adresses

 

Dans les bibliothèques, il faudra ajouter la SYSTIME.LIB qui ajoute les fonctions qui permettent d’extraire le temps de l’automate

Cette Bibliothèque inclus deux fonctions et deux structures

 

(Lire la suite…)

Mise a Jour de PLCLink, Mise en place code PIN

0

Comme de maniéré régulière, PLCLink a été mis a jour en version 1.5.2

Depuis maintenant deux versions le logiciel est compatible iOs5 (la version 1.4.2, n’étant donnée compatible que sur iOs 4.x), ce qui a nécessité un peut plus de travail car il a et a été développé sur le nouveau SDK (Obligation faite par Apple pour valider les applications)

 

 

 

 

Au programme des nouveautés (depuis la version 1.4.2) :
- Un nouvel Icône, Radiateur (Heather)

- Corrections de bugs

- Maintenant le fichier d’échange n’est plus en wml, mais en xml

- Possibilité de mettre un code Pin sur les pages pour en empêcher l’accès

(Lire la suite…)

Mesure de la pression atmosphérique sur carte analogique [Wago - PLCLink - Fer a souder]

0

Jean-François Pautex nous propose un montage de plus a connecter a votre automate wago, j’espère pour vous que vous aviez pris une carte analogique a quatre entrées

 

Aujourd’hui, enfin plutôt depuis hier vous pourrez trouver les plans et les instructions pour la réalisation d’un baromètre, celui-ci comme les précédents montages ce connecte a votre carte analogique et vous permet de voir les infos sur votre iphone, ou dans la visu de codesys sur votre navigateur (en option suivant le modèle d’automate que vous avez)

Le montage réalisé a partir de composant CMS a l’avantage de tenir dans une borne de connexion (il semble que ce soit une borne Leroy Sommer qui ai été utilisé et non pas une borne Wago :-) )

 

Bon il devient nécessaire que je trouve une borne analogique

 

 

Comme d’habitude vous retrouvez l’ensemble des instructions, liste de composants, plans… sur le site Pautex     

 

 

Mesure de la consommation d’eau [Codesys, PLCLink, Plomberie]

1

Dans la catégorie on continue de mesurer (âpres le courant et la température) ce que l’on consomme pour être économe, il y a l’eau

La consommation de l’eau n’est pas une chose très évidente a mesurer, bien souvent pour pouvoir la contrôler il faut aller voir son compteur qui est situé au fond d’un vieux placard, sous une grosse dalle et des gros bloc de polystyrène au bout de son jardin, bref un truc pas évident (chez moi, c’est dans le cellier derrière le chauffe eau)

Mais heureusement dans la plupart des cas l’arrivé d’eau est situé a proximité de l’arrivé électrique et donc de votre automate, bien souvent l’ensemble des energies sont passé dans la même tranché lors de la construction de la maison

Ce qui n’est pas le cas chez moi, l’eau arrivant a l’arriéré de la maison, et l’électricité a l’avant, heureusement pour moi, j’avais passé un câble avec 8 conducteurs entre l’automate et le cellier dans lequel le compteur est situé

Et pour pouvoir mesurer cette consommation (a moins d’être déjà équipé sans le savoir) il va falloir ce mouiller :-)

Tout d’abord il va vous falloir mettre en place un nouveau compteur ou un compteur supplémentaire, pour moi ce sera un compteur supplémentaire, je ne vais pas toucher a mon compteur déjà en place

ce nouveau compteur est équipé d’une sortie contact sec :-) , pour résumer c’est un interrupteur qui va ce fermer tout les x Litre d’eau

Lors de mes recherche je n’ai trouvé que deux modelés ayant cette fonction (j’ai peut être pas assez cherché)

compteur a 42 € + capteur a 79 € le tout de marque Sappel

Le second chez Planète Domotique, REF: USLF-20 c’est un compteur de fabrication italienne (GIOANOLA) , et il est fournit complet, c’est a dire compteur plus sonde plus raccords pour 75.80€, ce modelé autorise un debit de 2.5 m3/ h ce qui pour une utilisation courante sera largement suffisant (mon compteur de base est un 1.5m3/h), des modelés plus gros existent ci besoin ->

Attention ses compteurs sont uniquement destiné a l’eau froide, pour l’eau chaude il y a un modèle spécial chez Gioanola

J’ai donc choisi le modelé de chez planète domotique dans la version, une impulsion tout les 0.25L, sa sera plus facile de calculer un débit ainsi

(Lire la suite…)

La Fonction Bascule [CodeSys]

2

J’ai deja parlé a plusieur reprise de cette fonction, celle-ci est la fonction dont vous aurez sans doute le plus besoins

Son But

Permettre de changer l’etat d’un element par une simple impulsion

Simplement permettre d’allumer une lampe lorsque l’on appuie sur un poussoir, permettre d’éteindre  cette meme lampe lorsque l’on appuie sur ce même poussoir, en gros c’est l’équivalent d’un telerupteur

Realisation

Nous allons donc insérer un nouvel objet de type Bloc Fonctionnel et en langage Ladder LD

Voyon tout de suite a quoi va resembler votre petit morceau de programme

Clic pour zommer

Les declarations des variables

en VAR_INPUT vous avez un boolean « Interupteur: BOOL », c’est donc lui qui provoquera l’action

en VAR_OUTPUT vous avez un boolean  » Lampe: BOOL », c’est lui qui recevra l’action

en VAR vous avez « Front: R_TRIG » qui est la declaration de la fonction Front Montant et « A:BOOL », qui n’a d’autre utilité que d’eviter d’avoir des erreurs lors de la compilation

Fonctionnement

Reseau 1: lorsque interupteur passe a 1 on genere donc le front montant et R_Trig ce retrouve actionné

Reseau 2: on a le Font montant de l’interupteur Front.Q et si la lampe n’est pas actionner on va setter la lampe et sortir de la fonction (le return) le Front.Q retombe a 0

Comme on travaille avec un front montant vous pouvez laisser l’interrupteur actionner le Front.Q restera a 0 donc plus aucune action ne ce produira dans cette routine

Reseau 3 : comme pour le reseau 2 quand on a le front montant de l’interupteur mais que la lampe est allumé on viendra reseter la lampe (passage de 1 a 0) puis on sort de la fonction (return)

vous allez me dire que l’on aurez pu simplifier un peut en mettant l’interrupteur et la fonction R_Trig a la place du Front.Q sur les réseau 2 et 3, mais j’ai pris pour habitude de n’utiliser q »une seule fois le front montant ou descendant d’une donnée car sur certains automate (en particulier telemecanique) on rencontrait des problemes lorsque le front d’une même donnée était utilisé a plusieurs reprises

Integration de la fonction dans le programme

Pour ajouter la fonction a votre programme vous allez aller la chercher dans Bloc Fonctionnel puis routine définie
Dans le programme cette fonction va s’interger simplement dans vos routines sur l’entrée interupteur vous affecterer tout les interupteurs que vous souhaitez
Dans notre exemple pour l’eclairage du cellier nous allons avoir :
dint_cellier qui est l’interupteur physique a l’entrée du cellier
b_Lum_Cellier qui correspond a l’interupteur utilisé dans les visualisations codesys
PRG_ST_COM_MW1_ECLAIRAGE_RDC.b_pilote28 qui correspond a l’interupteur de wagoLink
Et en sortie nous avons doLampe_Cellier qui correspond a la lampe de mon cellier
Dans une même routine vous pouvez en mettre autant que vous le souhaitez du moment quelle ne porte pas le meme non

 

L’integration du switch [WagoLink-CodeSys]

0

Le switch, est en fait composé de 2 fonctions

-Il agit comme un bouton lors d’une pression

-Il lit la valeur ou l’état d’un objet et le reflète par la position du switch I ou O

Code dans WagoLink

 

Comme vous le voyez sur la ligne <IW> on va lire l’adresse QX2.3 qui correspond a une sortie de l’automate suivant l’etat de cette sortie le switch sera a 1 ou 0

Sur la ligne <wagolink> on va ecrire sur l’automate dans le mot MW3 la valeur 4, nous avons déjà vue dans « les bases pour utiliser wagolink » la routine a mettre en place pour utiliser les mots comme si c’était de simples bouton poussoir

Code dans Codesys

De ce coté la il n’y a absolument rien de particulier a faire.

Vous allez utiliser le Boolean que génère le passage de MW3 a la valeur 4 comme un simple poussoir

L’integration du Slider [WagoLink-CodeSys]

0

Le slider que l’on retrouve sur l’iphone pour le réglage du volume par exemple, vas vous servir a ajuster la valeur d’un numérique a l’intérieur d’une plage donné.

Affichage dans WagoLink

On peut l’utiliser pour ajuster une durée comme ici pour la durée d’allumage d’une lampe

ou bien pour ajuster un volume

L’exemple traité dans la suite concerne le slider de réglage de volume.

Code dans WagoLink

Vous trouverez beaucoup plus de détail sur le site de JF.Pautex, l’auteur de WagoLink

Cliquer sur l’image pour agrandir

L’écriture vers l’automate s’exécute au moment ou vous lâcher le slider

Il est a noté que la <description> peut être utilisé pour afficher une valeur, cela est très utile si vous avez appliqué un coef ou un offset a votre valeur dans ce cas vous ecrirez de cette maniere

<description><!–#READPI ADR=MW6&FORMAT=%d–></description>

on lit la valeur de %MW6 et elle est affiché, vous pouvez bien sur faire afficher tout autre type de valeur

Code dans Codesys

J’utilise aussi, en  plus de WagoLink, les pages de visualisation de CodeSys (elle sont accessible depuis tout navigateur exécutant le java ou afficheur Wago Perspecto), donc j’ai besoin que les valeurs soit synchronisé entre ce qui ce passe sur mon iPhone et ce qui ce passe sur le Navigateur, de plus je voulais que quand l’amplis était a l’arrêt le volume retombe a 0 (c’est juste esthétique) et que quand on le rallume, il reprenne sa précédente valeur

J’ai donc fait ce petit affichage composé de boutons et d’un afficheur a barre

L’afficheur lit la valeur %MW6 comme CodeSys

Les boutons + et – viennent frapper les variables

PRG_ST_VOLUME_AMPLI.b_bout_sdb_up

PRG_ST_VOLUME_AMPLI.b_bout_sdb_down

La programmation est faite en ST (Structured Texte)

(* Augmentation volume SDB *)
IF b_bout_sdb_up=TRUE THEN
IF b_SDB_up_Pressed=FALSE THEN
IF %MW6<10 THEN
%MW6:=%MW6+1;
END_IF
END_IF
b_SDB_up_Pressed:=TRUE;
ELSE
b_SDB_up_Pressed:=FALSE;
END_IF
(*Diminution volume SDB *)
IF b_bout_sdb_down=TRUE THEN
IF b_SDB_down_Pressed=FALSE THEN
IF %MW6>0 THEN
%MW6:=%MW6-1;
END_IF
END_IF
b_SDB_down_Pressed:=TRUE;
ELSE
b_SDB_down_Pressed:=FALSE;
END_IF

Le programme est fait de maniere a prendre seulement en compte les pression sur la touche, vous pouvez rester appuyer sa ne montera que d’une unité.

Défauts


Il ne faut pas l’utiliser sur une plage trop grande car vous n’aurer pas de précision lors du réglage de votre valeur.

Haut de page