Différences entre les versions de « Utilisation des variables »

De GCE Electronics
Aller à la navigation Aller à la recherche
 
(47 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 7 : Ligne 7 :
  | famille      = IPX800 V5
  | famille      = IPX800 V5
  | date-create  = 14/07/2023
  | date-create  = 14/07/2023
  | date-update  =14/07/2023
  | date-update  =20/07/2023
  | auteur = @Grocrabe
  | auteur = @Grocrabe, avec l'aide
active de @fgtoul.
}}
}}


== Introduction ==
== Introduction ==
Le but de ce tuto est de montrer l'utilisation de variables dans les fonctions en se basant sur un exemple concret : à partir de valeurs de variables présentes dans l'IPX, calculer automatiquement la durée de filtration en fonction de la T° de l'eau ainsi que les heures de démarrage et d'arrêt, sachant que la période de filtration sera centrée sur le jour solaire.
Le but de ce tuto est de montrer l'utilisation de variables dans les '''objets Mails et Fonctions''' en se basant sur un exemple concret : à partir de variables présentes dans l'IPX, calculer automatiquement la durée de filtration en fonction de la T° de l'eau ainsi que les heures de démarrage et d'arrêt, sachant que la période de filtration sera centrée sur le jour solaire.


'''Rappel :'''  toutes les entrées/sorties digitales ou analogiques, virtuelles ou physiques, présentes sur l'IPX800 V5 possèdent un ID unique.
Astuce : vous trouverez les ID de toutes les E/S physiques de tous les modules dans l'onglet Système -> Mémoire -> Mapping Mémoire. Celles des variables sont dans les Collections de Variables.
Elles peuvent alors être utilisées dans de nombreux objets comme les Push,  Mails ou encore les formules de fonctions, en utilisant leur ID sous la forme $ID$
Exemple avec l'horloge interne de l'ipx800, contenue dans une Analogique 32 bits (Ana<sup>32</sup>)
[[Fichier:Ipx.clock.png|sans_cadre]]
Son id est le 327687, la valeur de l'horloge est utilisable sous la désignation $327687$.
== Le principe ==
== Le principe ==
On va utiliser le module Météo qu'il faudra activer et configurer et des Objets "Fonction", accessibles dans l'onglet Liens.
La première étape va consister à trouver l'heure du milieu de la journée solaire. La formule sera :  
La première étape va consister à trouver l'heure du milieu de la journée solaire. La formule sera :  


'''-> Heure médiane = ((heure de coucher-heure de lever)/2)+heure de lever'''
'''-> Médiane solaire = ((heure de coucher-heure de lever)/2)+heure de lever'''


Puis on va calculer la durée de filtration. Il y a plusieurs formules, ici on utilise la plus simple :   
Puis on calcule la durée de filtration. Il y a plusieurs formules, ici on utilise la plus simple :   


'''-> Durée de filtration = T°eau/2  en heures.'''
-> Durée de filtration = T°eau/2  en heures.  


Pour pouvoir l'utiliser dans les formules avec les TimeStamp (voir ci-dessous) on la convertit en secondes, la formule devient donc :  Durée de filtration = T°eau/2 x 3600 en secondes, formule simplifiée en :
Pour calculer les heures de démarrage et d'arrêt il nous faut diviser cette durée par 2 et pour pouvoir l'utiliser dans les formules avec les TimeStamp (voir ci-dessous) on la convertit en secondes, la formule devient donc :  Demi durée de filtration =( T°eau/2) /2 x 3600 en secondes, formule simplifiée en :


'''-> Durée de filtration = T°eau x 1800 en secondes'''
'''-> Demi durée de filtration = T°eau x 900 en secondes'''


On va ensuite déterminer l'heure de démarrage de la filtration. La formule sera :
On détermine ensuite l'heure de démarrage de la filtration. La formule sera :


'''->''' '''Heure démarrage = Heure médiane - (Durée de filtration/2)'''
'''->''' '''Début filtration = Heure médiane - Demi durée de filtration'''


Puis on va  déterminer l'heure de démarrage de la filtration. La formule sera :
Puis on détermine l'heure d'arrêt de la filtration. La formule sera :


'''->''' '''Heure arrêt = Heure médiane + (Durée de filtration/2)'''
'''->''' '''Fin filtration = Heure médiane + Demi durée de filtration'''


Enfin on comparera cette Heure de démarrage à l'heure courante pour enclencher le relai :
Pour la suite on utilise deux Règles regroupées dans une Scène, accessible dans l'onglet Scénario.


-> '''Heure courante > Heure démarrage => Relai ON'''
On compare cette Heure de démarrage à l'heure courante pour enclencher le relais :


Et on comparera cette Heure d'arrêt à l'heure courante pour déclencher le relai :
-> '''Heure courante > Heure démarrage => Relais ON'''


-> '''Heure courante > Heure d'arrêt => Relai OFF'''
Et on compare cette Heure d'arrêt à l'heure courante pour déclencher le relais :
 
-> '''Heure courante > Heure d'arrêt => Relais OFF'''


== Les variables utilisées ==
== Les variables utilisées ==
Ligne 71 : Ligne 86 :
!Système
!Système
|-
|-
!Heure médiane
!Heure médiane solaire
!
!
!327703
!327703
Ligne 83 : Ligne 98 :
!Usager
!Usager
|-
|-
!Durée de filtration
!Demi durée de filtration
!
!
!327718
!327713
!RAW
!RAW
!Usager
!Usager
Ligne 105 : Ligne 120 :
Vous les retrouvez en regardant les collections :
Vous les retrouvez en regardant les collections :


[[Fichier:Collection.png|sans_cadre]]
[[Fichier:Collection.png|sans_cadre|538x538px]]


=== Définition du TimeStamp ===
=== Définition du TimeStamp ===
Un système d’horodatage a été mis en place depuis le 1er janvier 1970 : le TimeStamp qui donne le temps en secondes écoulé depuis le 1er janvier 1970 à 00 h. Par exemple, le 14/07/2023 à 15:00:00 correspond au TimeStamp : 1689339600.  
Un système d’horodatage a été mis en place depuis le 1er janvier 1970 : le TimeStamp qui donne le temps en secondes écoulé depuis le 1er janvier 1970 à 00 h. Par exemple, le 14/07/2023 à 15:00:00 correspond au TimeStamp : 1689339600.  


L'intérêt du TimeStamp est qu'il permet de comparer facilement les dates en faisant une simple opération de différence.
L'intérêt du TimeStamp est qu'il permet de faire des calculs sur les dates et heures ou de faire des comparaisons.
L'IPX V5 stocke le TimeStamp dans une Ana<sup>32</sup> RAW donc la valeur la plus grande pourra être 4 294 967 295, soit le 7 février 2106 à 7 h 28 min 15 s, ce qui nous laisse encore le temps de profiter de nos automates ...


Remarque : la plupart des systèmes informatiques le stocke dans une Ana<sup>32</sup> réelle (les dates antérieures au 01/01/1970 sont négatives) donc la valeur à venir la plus grande pourra être 2 147 483 647, soit le 19 janvier 2038 à 3 h 14 min 7 s. Ce qui nous laisse encore le temps de profiter de nos piscines...
== Le diagramme ==
== Utilisation des Fonctions ==
Le diagramme ci-dessous montre les liens entre les objets et les variables.
Suite à un souci sur l'utilisation des soustractions, pas encore corrigé à la date d'écriture de ce wiki, il faut séparer la formule en 2 Fonctions.


== Utilisation des Règles ==
Les flêches en trait plein représentent les liens de type LINK ou SETVAL à créer sur l'IPX800 V5.
bla


Les liens en pointillés ne sont là que pour la compréhension des formules utilisant les variables sous la forme de leur id entouré du symbole $.


Les horaires de début et de fin de filtration sont sans cesse comparés à l'heure courante de l'ipx800. La sortie du comparateur associé active ou désactive une bascule RS.
Cette bascule RS pilote le relais de filtration. Un mail est envoyé à chaque changement d'état du relais.
[[Fichier:$variables$ v5.png|centré|sans_cadre|1292x1292px]]
== Cas des Fonctions ==
Suite à un souci avec les valeurs négatives, pas encore corrigé à la date d'écriture de ce wiki, dans certains cas il faut scinder les formules utilisant une soustraction en 2 Fonctions. Pour cela il suffit de '''lier''' la sortie de la 1<sup>ère</sup> à l'entrée X de la 2<sup>nde</sup>. 
=== Médiane solaire ===
La variable résultante est la $327703$.
[[Fichier:Milieu1.png|sans_cadre|450x450px]] -> [[Fichier:Milieu2.png|sans_cadre|450x450px]]
=== Demi durée de filtration ===
x est la T° de l'eau en °C (résultat d'une Fonction selon le type de sonde utilisée).
La variable résultante est la $327713$.
[[Fichier:Duree.png|sans_cadre|450x450px]]
=== Début filtration ===
La variable résultante est la $327710$.
[[Fichier:Debut filtration.png|sans_cadre|450x450px]]
=== Fin filtration ===
La variable résultante est la $327708$.
[[Fichier:Fin filtration.png|sans_cadre|450x450px]]
== Cas du mail ==
Il est possible d'insérer des variables dans le corps des mails.
Nous allons insérer la température de l'eau dans chaque mail envoyé lors du changement d'état du relais.
[[Fichier:Variables-mail.png|sans_cadre|603x603px]]
== Cas des IO ==
L'ID des variables de type IO est utilisable de la même manière. La variable vaut alors 1 ou 0 selon l'état de l'IO.
[[Fichier:$id$ d'une IO.png|sans_cadre|616x616px]]
== Utilisation des Règles à la place de la bascule RS ==
Au lieu d'utiliser l'objet de type "Bascule RS" pour enclencher/déclencher le relais, il est également possible de créer 2 règles équivalentes dans le moteur de scénario.
=== Enclenchement du relais ===
[[Fichier:ON RELAI.png|sans_cadre|750x750px]]
=== Déclenchement du relais ===
[[Fichier:OFF RELAI.png|sans_cadre|750x750px]]
== Résultat ==
== Résultat ==
Voici ce que ça donne dans un DashBoard (je l'ai mis en hauteur pour faciliter la lecture sur téléphone). Il y a plus de Widgets que vraiment nécéssaire mais ça permet de voir les valeurs intermédiaires :
Voici ce que ça donne dans un Dashboard (je l'ai mis en hauteur pour faciliter la lecture sur téléphone).  
 
[[Fichier:DashboardGC.png|sans_cadre]]


Deux versions : à gauche, Il y a plus de Widgets que vraiment nécessaire mais ça permet de voir les valeurs intermédiaires, à droite ce qui est réellement utile :


Pour ceux que ça intéresse, voici un export de mon dashBoard. Pour l'utiliser il faudra faire pointer les widgets vers '''vos''' variables.
[[Fichier:DashboardGC.png|sans_cadre]]  [[Fichier:DashboardGC 2.png|sans_cadre]]

Version actuelle datée du 3 août 2024 à 19:56


$variable$

Formules.jpeg
Nom $variable$
Famille IPX800 V5
Wiki créé le 14/07/2023
Wiki mis à jour le 20/07/2023
Auteur @Grocrabe, avec l'aide

active de @fgtoul.

Introduction

Le but de ce tuto est de montrer l'utilisation de variables dans les objets Mails et Fonctions en se basant sur un exemple concret : à partir de variables présentes dans l'IPX, calculer automatiquement la durée de filtration en fonction de la T° de l'eau ainsi que les heures de démarrage et d'arrêt, sachant que la période de filtration sera centrée sur le jour solaire.


Rappel : toutes les entrées/sorties digitales ou analogiques, virtuelles ou physiques, présentes sur l'IPX800 V5 possèdent un ID unique.

Astuce : vous trouverez les ID de toutes les E/S physiques de tous les modules dans l'onglet Système -> Mémoire -> Mapping Mémoire. Celles des variables sont dans les Collections de Variables.

Elles peuvent alors être utilisées dans de nombreux objets comme les Push, Mails ou encore les formules de fonctions, en utilisant leur ID sous la forme $ID$

Exemple avec l'horloge interne de l'ipx800, contenue dans une Analogique 32 bits (Ana32)

Ipx.clock.png

Son id est le 327687, la valeur de l'horloge est utilisable sous la désignation $327687$.

Le principe

On va utiliser le module Météo qu'il faudra activer et configurer et des Objets "Fonction", accessibles dans l'onglet Liens.

La première étape va consister à trouver l'heure du milieu de la journée solaire. La formule sera :

-> Médiane solaire = ((heure de coucher-heure de lever)/2)+heure de lever

Puis on calcule la durée de filtration. Il y a plusieurs formules, ici on utilise la plus simple :

-> Durée de filtration = T°eau/2 en heures.

Pour calculer les heures de démarrage et d'arrêt il nous faut diviser cette durée par 2 et pour pouvoir l'utiliser dans les formules avec les TimeStamp (voir ci-dessous) on la convertit en secondes, la formule devient donc : Demi durée de filtration =( T°eau/2) /2 x 3600 en secondes, formule simplifiée en :

-> Demi durée de filtration = T°eau x 900 en secondes

On détermine ensuite l'heure de démarrage de la filtration. La formule sera :

-> Début filtration = Heure médiane - Demi durée de filtration

Puis on détermine l'heure d'arrêt de la filtration. La formule sera :

-> Fin filtration = Heure médiane + Demi durée de filtration

Pour la suite on utilise deux Règles regroupées dans une Scène, accessible dans l'onglet Scénario.

On compare cette Heure de démarrage à l'heure courante pour enclencher le relais :

-> Heure courante > Heure démarrage => Relais ON

Et on compare cette Heure d'arrêt à l'heure courante pour déclencher le relais :

-> Heure courante > Heure d'arrêt => Relais OFF

Les variables utilisées

Nous allons utiliser plusieurs variables Ana32 :

Définition Nom N° identification Format Propriétaire
Heure du lever du soleil [WEATHER]SUNRISE DAY 327688 TimeStamp Système
Heure du coucher du soleil [WEATHER]SUNSET DAY 327689 TimeStamp Système
Heure courante [IPX]CLOCK 327687 TimeStamp Système
Heure médiane solaire 327703 RAW Usager
Température de l'eau 327691 RAW Usager
Demi durée de filtration 327713 RAW Usager
Heure de démarrage 327710 RAW Usager
Heure d'arrêt 327708 RAW Usager

Les N° d'identification des variables sont propres à mon installation. Vous devez relever celles utilisées par votre IPX V5.

Vous les retrouvez en regardant les collections :

Collection.png

Définition du TimeStamp

Un système d’horodatage a été mis en place depuis le 1er janvier 1970 : le TimeStamp qui donne le temps en secondes écoulé depuis le 1er janvier 1970 à 00 h. Par exemple, le 14/07/2023 à 15:00:00 correspond au TimeStamp : 1689339600.

L'intérêt du TimeStamp est qu'il permet de faire des calculs sur les dates et heures ou de faire des comparaisons.

L'IPX V5 stocke le TimeStamp dans une Ana32 RAW donc la valeur la plus grande pourra être 4 294 967 295, soit le 7 février 2106 à 7 h 28 min 15 s, ce qui nous laisse encore le temps de profiter de nos automates ...

Le diagramme

Le diagramme ci-dessous montre les liens entre les objets et les variables.

Les flêches en trait plein représentent les liens de type LINK ou SETVAL à créer sur l'IPX800 V5.

Les liens en pointillés ne sont là que pour la compréhension des formules utilisant les variables sous la forme de leur id entouré du symbole $.

Les horaires de début et de fin de filtration sont sans cesse comparés à l'heure courante de l'ipx800. La sortie du comparateur associé active ou désactive une bascule RS.

Cette bascule RS pilote le relais de filtration. Un mail est envoyé à chaque changement d'état du relais.

$variables$ v5.png

Cas des Fonctions

Suite à un souci avec les valeurs négatives, pas encore corrigé à la date d'écriture de ce wiki, dans certains cas il faut scinder les formules utilisant une soustraction en 2 Fonctions. Pour cela il suffit de lier la sortie de la 1ère à l'entrée X de la 2nde.

Médiane solaire

La variable résultante est la $327703$.

Milieu1.png -> Milieu2.png

Demi durée de filtration

x est la T° de l'eau en °C (résultat d'une Fonction selon le type de sonde utilisée).

La variable résultante est la $327713$.

Duree.png

Début filtration

La variable résultante est la $327710$.

Debut filtration.png

Fin filtration

La variable résultante est la $327708$.

Fin filtration.png

Cas du mail

Il est possible d'insérer des variables dans le corps des mails.

Nous allons insérer la température de l'eau dans chaque mail envoyé lors du changement d'état du relais.

Variables-mail.png

Cas des IO

L'ID des variables de type IO est utilisable de la même manière. La variable vaut alors 1 ou 0 selon l'état de l'IO. $id$ d'une IO.png

Utilisation des Règles à la place de la bascule RS

Au lieu d'utiliser l'objet de type "Bascule RS" pour enclencher/déclencher le relais, il est également possible de créer 2 règles équivalentes dans le moteur de scénario.

Enclenchement du relais

ON RELAI.png

Déclenchement du relais

OFF RELAI.png

Résultat

Voici ce que ça donne dans un Dashboard (je l'ai mis en hauteur pour faciliter la lecture sur téléphone).

Deux versions : à gauche, Il y a plus de Widgets que vraiment nécessaire mais ça permet de voir les valeurs intermédiaires, à droite ce qui est réellement utile :

DashboardGC.png DashboardGC 2.png