Liste des variables pour le programme optimiseur ************************************************ Indice(18) = Tableau des 18 indices du "Menu" et des variables programme LimitBas(18) = Tableau des Valeurs minimums autorisées LimitHaut(18) = Tableau des Valeurs maximums autorisées Divise(18) = Tableau des diviseurs (pour ramener à l'unité) Format(18) = Tableau du format des variables. Le chiffre de gauche représente le nombre de chiffres, l'autre représente le nombre de décimales. (=99 si affichage hh:mm) +----------------------------------------------------------------------------+ | Indice() ' Decription | | ' Alias | +----------------------------------------------------------------------------+ | Indice(1) ' Numéro du cycle (1 à 4) exprimé en unité | | ' | | Indice(2) ' Jour en cours (1 à 7) exprimé en unité | | ' | | Indice(3) ' Hystérésis de la T° ambiante (0,1 à 1,0) exprimé en dixièmes | | ' | | Indice(4) ' Hystérésis de la T° chaudière (0,5 à 5,0) exprimé en demi-degré| | ' | | Indice(5) ' Hystérésis de la T° ECS (0,5 à 5,0) exprimé en demi-degré | | ' | | Indice(6) ' Année en cours (0 à 99) exprimé en unité | | ' | | Indice(7) ' Mois en cours (1 à 12) exprimé en unité | | ' | | Indice(8) ' Jour-Date (1 à 31) exprimé en unité | | ' | | Indice(9) ' Heures (0 à 23) exprimé en unité | | ' | | Indice(10)' Minutes (0 à 59) exprimé en unité | | ' | | Indice(11)' T° ECS (60 à 85) exprimé en unité | | ' | | Indice(12)' T° chaudière (50 à 90) exprimé en unité | | ' | | Indice(13)' Numéro de Plage (1 à 28) par Cycle | | ' | | Indice(14)' T° minimum extérieure (-15,0 à 0,0) exprimé en demi-degré | | ' | | Indice(15)' T° de consigne de jour (10,0 à 25,0) exprimé en demi-degré | | ' | | Indice(16)' T° de consigne de nuit (10,0 à 25,0) exprimé en demi-degré | | ' | | Indice(17)' Quart d'heure de début de plage (1 à 96) exprimé en unité | | ' | | Indice(18)' Nombre de quart d'heure de la plage (1 à 96) exprimé en unité | +----------------------------------------------------------------------------+ +-------------------+-------------------+---------------+-------------+ | LimitBas() | LimitHaut() | Divise() | Format() | +-------------------+-------------------+---------------+-------------+ | LimitBas(1) = 1 | LimitHaut(1) = 4 | Divise(1) = 1 | Form(1) =10 | | LimitBas(2) = 1 | LimitHaut(2) = 7 | Divise(2) = 1 | Form(2) =10 | | LimitBas(3) = 1 | LimitHaut(3) = 10 | Divise(3) =10 | Form(3) =11 | | LimitBas(4) = 1 | LimitHaut(4) = 10 | Divise(4) = 2 | Form(4) =11 | | LimitBas(5) = 1 | LimitHaut(5) = 10 | Divise(5) = 2 | Form(5) =11 | | LimitBas(6) = 0 | LimitHaut(6) = 99 | Divise(6) = 1 | Form(6) =20 | | LimitBas(7) = 1 | LimitHaut(7) = 12 | Divise(7) = 1 | Form(7) =20 | | LimitBas(8) = 1 | LimitHaut(8) = 31 | Divise(8) = 1 | Form(8) =20 | | LimitBas(9) = 0 | LimitHaut(9) = 23 | Divise(9) = 1 | Form(9) =20 | | LimitBas(10)= 0 | LimitHaut(10)= 59 | Divise(10)= 1 | Form(10)=20 | | LimitBas(11)= 60 | LimitHaut(11)= 85 | Divise(11)= 1 | Form(11)=20 | | LimitBas(12)= 50 | LimitHaut(12)= 90 | Divise(12)= 1 | Form(12)=20 | | LimitBas(13)= 1 | LimitHaut(13)= 96 | Divise(13)= 1 | Form(13)=20 | | LimitBas(14)= -30 | LimitHaut(14)= 0 | Divise(14)= 2 | Form(14)=20 | | LimitBas(15)= 20 | LimitHaut(15)= 50 | Divise(15)= 2 | Form(15)=21 | | LimitBas(16)= 20 | LimitHaut(16)= 50 | Divise(16)= 2 | Form(16)=21 | | LimitBas(17)= 1 | LimitHaut(17)= 96 | Divise(17)= 1 | Form(17)=99 | | LimitBas(18)= 1 | LimitHaut(18)= 96 | Divise(18)= 1 | Form(18)=99 | +-------------------+-------------------+---------------+-------------+ I - Variable de travail & de comptage J - Variable de travail & de comptage K - Variable de travail & de comptage L - Variable de travail & de comptage M - Variable de travail & de comptage N - Variable de travail & de comptage MoletteCompteur - Compteur de l'encodeur rotatif, modifié par interruption. Variable INTEGER pour pouvoir être négative. [IntBouton] MoletteComptOld - Ancienne valeur de MoletteCompteur, pour contrôler la variation. Variable INTEGER pour pouvoir être négative. [IntBouton] MoletteDelta - Contient la variation du compteur de molette. Variable INTEGER pour pouvoir être négative. [IntBouton],[LitEncodeur],[MENU] Bouton - Appuis de l'encodeur rotatif. [IntBouton],[LitEncodeur] BoutonOld - Etat précédent de l'appuis de l'encodeur rotatif. [IntBouton],[LitEncodeur] CompteurBtn - Compteur incrémenté par interruption pour le calcul de la durée d'appuis de l'encodeur rotatif. [IntTempo],[LitEncodeur] CompteurTps - Compteur incrémenté par intéruption pour le calcul du Timeout. [IntTempo],[LitEncodeur],[MENU] Mode - Mode de fonctionnement de l'optimiseur. 1= Veille ou Off, 2= Nuit, 3= Jour, 4= Horloge, 5= Dérogation [LitEncodeur] TConsNuitOld - T° de Consigne de nuit temporaire lors du changement de T°. [LitEncodeur] Indice(16) - Température de consigne en régime de nuit. [LitEncodeur] TConsJourOld - T° consigne de jour temporaire lors du changement de T°. [LitEncodeur] Indice(15) - Température de consigne en régime de jour. [LitEncodeur] Derogabit - Etat du mode de dérogation, 0 = Normal, 1 = Dérogation. [LitEncodeur] Plage - Etat de la plage en cours dans le cycle. 0 = Consigne de nuit, 1 = Consigne de jour. [LitEncodeur] TpsDemiSeconde - Constante qui reprend le nombre d'interruption pour une temporisation d'une demi-seconde. [LitEncodeur], [MENU] AffiNombre - Variable qui reprend un nombre à afficher sur le LCD, c'est une variable numérique qui sera transformée en une chaine de charactères par la routine "ConvNumAsc". Cette variable est toujours entière et doit-être divisée par "AffiDiviseur" avant d'être convertie. [LitEncodeur], [ConvNumAsc], [MENU] AffiFormat - Format (unités et décimales) de la variable "AffiNombre". [LitEncodeur], [ConvNumAsc], [MENU] AffiDiviseur - Diviseur qui permet de calculer la valeur numérique à convertir en chaîne de charactère. [LitEncodeur], [ConvNumAsc], [MENU] Ligne1$ - Première ligne à afficher sur le LCD. Dans le menu, le contenu de Ligne1$ vient de l'EEprom. [LitEncodeur], [AffiLCD], [Menu],[AffiLCD] Ligne2$ - Deuxième ligne à afficher sur le LCD. Dans le menu, le contenu de Ligne2$ vient de l'EEprom. [LitEncodeur], [AffiLCD], [Menu],[AffiLCD] NbAsc$ - Chaîne de charactère convertie contenant "AffiNombre". [LitEncodeur], [ConvNumAsc], [MENU] Oldmode - Etat précedent de "Mode". [LitEncodeur] Nombre - Variable de travail contenant le nombre décimal à convertir en une chaîne de charactère (AffiNombre/AffiDiviseur). [ConvNumAsc] Digit$(5) - Variable de travail contenant séparément les charactères issus de la conversion de "AffiNombre" en chaîne de charactère. [ConvNumAsc] NbChar - Variable de travail contenant le nombre de charatères nécessaires à l'affichage de "AffiNombre" en "texte". [ConvNumAsc], [MENU] BoucleMenu - Etat de la boucle de la routine MENU, 0 = Sortie de la boucle et 1 = Reste dans la boucle. [MENU] MnuNum - Numéro de la ligne de menu. Détermine quelles lignes doivent être affichées dans le menu et quelles actions entreprendre en fonction de l'action sur la molette. [MENU] MnuAdres - Adresse calculée pour aller rechercher dans l'EEprom, les valeurs utiles pour les différentes action du menu. [MENU] BaseAdres - Adresse de base des données du menu stockées dans l'EEprom. [MENU] MnuPosCur - Indique la position du curseur dans l'affichage du menu. Variable dont le contenu est lu dans l'EEprom. [MENU] MnuActHorlo - Indique l'action à réaliser si la roulette est tournée dans le sens horlogique. Variable dont le contenu est lu dans l'EEprom. [MENU] MnuActAntiH - Indique l'action à réaliser si la roulette est tournée dans le sens anti-horlogique. Variable dont le contenu est lu dans l'EEprom. [MENU] MnuActRet - Indique l'action à réaliser lorsque le Bouton de la molette est enfoncé. Variable dont le contenu est lu dans l'EEprom. [MENU] MnuIndiVar - Contient l'index de la variable à modifier dans le menu lorsque l'option du menu concerne une variable. Variable dont le contenu est lu dans l'EEprom. [MENU] Tmp$ - Contient la ligne d'affichage de manière temporaire. Permet la construction progressive de la ligne. [MENU] NumCycle - Numéro du Cycle en cours (1 à 4). [MENU], [ModifPlage] Jour - Jour de 1 à 7 correspondant au jour en cours (Lundi = 1). [MENU], [ModifPlage] TypeVanne - 0 = vanne à positionement, 1 = vanne analogique. [MENU] BaseAdresPlage - Adresse mémoire du premier octet des plages horaires. [CreaVarPlag] PlDe(4) - Début de plage de consigne de jour pour la journée. [CreaVarPlag], [ModifPlage] PlDu(4) - Durée de plage de consigne de jour pour la journée. [CreaVarPlag], [ModifPlage] PlI - Variable de comptage pour le calcul de la plage. [CreaVarPlag], [ModifPlage] PlPosCyc - Adresse du cycle. [CreaVarPlag], [ModifPlage] PlPosJou - Adresse du jour. [CreaVarPlag], [ModifPlage] PlPlage - Numéro de la plage en cours de traitement. [CreaVarPlag] PlAdrOct - Adresse de l'octet à adresser. [CreaVarPlag] PlValOct - Valeur de l'octet adressé. [CreaVarPlag] PlAdrBit - Numéro du bit à tester. [CreaVarPlag] PlBitAnt - Valeur du bit testé précédement. [CreaVarPlag] PlDuree - Durée de la plage en cours de traitement. [CreaVarPlag] PlOctet - Octet à adresser. [CreaVarPlag] BitAction - Action sur une plage. 0 = effacement, 1 = écriture. [Menu], [ModifPlage] PlOctCal - Octet en cours de calcul. [ModifPlage] PlBitCal - Bit en cours de calcul. [ModifPlage] PlPosMem - Adresse mémoire de l'octet contenant l'heure et les minutes. [ModifPlage] PlValMem - Valeur de l'octet contenant l'heure et les minutes. [ModifPlage] PlPosBit - Position du bit à adresser dans l'octet sélectionné. [ModifPlage] PlValBit - Valeur du bit dans l'octet sélectionné. [ModifPlage] ------------------------------------------------------------------------------ Variables "Hardwares" ********************* Les sorties (Relais & Leds) sont connectés sur deux 74595 raccordés en cascade. Il faudra dont envoyer deux octets, le premier octet envoyé concerne les leds, le second concerne les sorties (relais). L'idéal pour utiliser les sorties, est de définir pour chaque bit de sortie un Alias qui reprend la position du bit dans le mot de sortie. Nous aurons donc une variable mot définie (Par exemple "Sorties"). DECLARE Sorties AS Word Et nous aurons alors les Alias suivants : DECLARE Led1 AS Sorties.Bit0 ' Circulateur d'eau de la chaudière (Rouge). DECLARE Led2 AS Sorties.Bit1 ' Circulateur d'ECS (Rouge). DECLARE Led3 AS Sorties.Bit2 ' Chaudière ON | V3V ouverte (Rouge). DECLARE Led4 AS Sorties.Bit3 ' Fermeture V3V | commande analogique (Rouge). DECLARE LedA AS Sorties.Bit4 ' Mode veille (Jaune). DECLARE LedB AS Sorties.Bit5 ' Mode Nuit (Rouge). DECLARE LedC AS Sorties.Bit6 ' Mode Jour (Verte). DECLARE LedD AS Sorties.Bit7 ' Mode Horloge (Bleue). DECLARE RetroLcd As Sorties.Bit8 ' Activation de l'éclairage du LCD. DECLARE CircChau AS Sorties.Bit9 ' Sortie relais Circulatuer chauffage DECLARE CircEcs AS Sorties.Bit10' Sortie relais Circulateur ECS DECLARE ChaudOn AS Sorties.Bit11' Sortie relais Chaudière ou V3V On DECLARE ChaudOff AS Sorties.Bit12' Sortie relais Vanne-3-Voies Off LcdLedBtn = Bouton a appuyer pour allumer le rétro-éclairage du LCD. BaseAdresMenu - Première adresse des Data "MENU" dans la mémoire EEprom. BaseAdresPlage - Première adresse des Data "Programmation" dans l'EEprom. Bouton = Bouton poussoir sur encodeur. Conso = Pourcentage d'utilisation de la chaudière sur 24 heures. FlagDerogation = Drapeau pour le suivi d'une dérogation en Mode horloge. FlagTempIntMax = Drapeau Température intérieure maximum (Bit). FlagTempIntMin = Drapeau Température intérieure minimum (Bit). Jours = RTC + Affichage + Menu (Lun = 1, Mar = 2, ..., Dim = 7). JourPlage = Jour de 1 à 7 correspondant au jour programmé (Lundi = 1). Ligne1 = Texte à afficher sur la ligne 1 du LCD. Ligne2 = Texte à afficher sur la ligne 2 du LCD. MnuActAntiH = Action à réaliser lorsque Molette tourne dans le sens antihorlo. MnuActHorlo = Action à réaliser lorsque Molette tourne dans le sens horloger. MnuActRet = Action à réaliser lorsque Bouton est appuyé. MnuAdres = Adresse calculée dans la mémoire EEprom du micro-contrôleur. MnuIndiVar = Variable contenant la valeur de la cellule dans "Indice()". MnuNum = Numéro de la ligne dans "Menu". MnuPosCur = Position du Curseur sur le LCD (Clignote ou fixe). Molette = Encodeur à molette ( impulsions ). NumCycle = Numéro du Cycle (1 à 4). NumPlage = Numéro de plage sera calculé dans le programme. Pente = Pente de la courbe de chauffe. Pivot = Température d'eau pour température extérieure de 0°C. Regul = Sortie Régulation (lié aux Leds 1,2,3,4). Seconde = RTC. Secondes = Secondes. TempCons = Temp. de consigne prend la valeur Temp_Jour ou Temp_Nuit. TempCons = Température consigne. TempConsECS = Température de consigne ECS. TempEau = Température chaudière. TempEau1 = Température maximum chaudière donnée par le constructeur. TempECS = Température eau chaude sanitaire. TempExt = Température extérieure (Byte). TempExt1 = Valeur donnée par le tableau des températures (fichier). TempInt = Température intérieure. TempIntMax = Température intérieure maximum (Byte). TempIntMin = Température intérieure minimum (Byte). TempJour = Température programmée pour le jour. TempMoy = Température moyenne. TempNuit = Température programmée pour la nuit. Tempobtn = Temporisation pour tester la durée d'appuis sur le bouton. TempoEnco = Durée d'inaction dans le Menu, si dépassement = sortie du Menu. TypRegulation = 0 = Chaudière, 1 = Vanne à 3 voies. TypVanne = 0 = vanne à positionement, 1 = vanne analogique. Valeur = Variable de travail. Cycle = Var. de 96 bits contenant le N° du cycle et la plage horaire. ------------------------------------------------------------- NumCycle(4) = Numéro de Cycle de 1 à 4. TCycleJour(4) = Température pour le cycle de Jour x 4. TCycleNuit(4) = Température pour le cycle de nuit x 4. ------------------------------------------------------------- PlagAdresse : Adresse mémoire du premier octet. PlagCycle : Cycle en cours (varie de 0 à 3). PlagJour : Jour en cours (varie de 0=Lu à 6=Di). PlagHeure : Heure en cours (varie de 0 à 23). PlagMinute : Minute en cours (varie de 0 à 59). PlagQuart : Quart d'heure en cours (Varie de 0 à 3). 0 = de 00 à 14 minutes. 1 = de 15 à 29 minutes. 2 = de 30 à 44 minutes. 3 = de 45 à 59 minutes. PlagPosCyc : Adresse de base du cycle. PlagPosJou : Adresse de base du Jour dans le cycle. PlagPosHeu : Adresse de base de l'heure dans le jour. PlagPosMem : Adresse mémoire de l'octet contenant l'heure et les minutes. PlagValMem : Valeur de l'octet contenant l'heure et les minutes. PlagPosBit : Position du bit à adresser dans l'octet sélectionné. PlagValBit : Valeur du bit dans l'octet sélectionné. PlagPlDe(4) : Début de plage de consigne de jour pour la journée (Varie de 0 à 95). PlagPlDu(4) : Durée de plage de consigne de jour pour la journée (Varie de 0 à 95). PlagConsign : Etat de la consigne de chauffe; Nuit = 0 et Jour = 1. --------------------------------------------------- Routine de recherche des plages de consigne de jour *************************************************** PlDe(4) : Début de plage de consigne de jour pour la journée. PlDu(4) : Durée de plage de consigne de jour pour la journée. PlPosCyc : Adresse du cycle. PlPosJou : Adresse du jour. PlPlage : Numéro de la plage en cours de traitement. PlAdrOct : Adresse de l'octet à adresser. PlValOct : Valeur de l'octet adressé. PlAdrBit : Numéro du bit à tester. PlBitAnt : Valeur du bit testé précédement. PlDuree : Durée de la plage en cours de traitement. PlOctet : Octet à adresser. --------------------------------------------- Ecriture ou effacement d'une plage en mémoire ********************************************* Adresse : Adresse mémoire du premier octet. Cycle : Cycle en cours (varie de 0 à 3). Jour : Jour en cours (varie de 0=Lu à 6=Di). PlDe(Cycle) : Début de plage. PlDu(Cycle) : Durée de plage. BitAction : 0 = effacement, 1 = écriture. PlI : Variable de travail. PlOctCal : Octet en cours de calcul. PlBitCal : Bit en cours de calcul. PlPosCyc : Adresse de base du cycle. PlPosJou : Adresse de base du Jour dans le cycle. PlPosMem : Adresse mémoire de l'octet contenant l'heure et les minutes. PlValMem : Valeur de l'octet contenant l'heure et les minutes. PlPosBit : Position du bit à adresser dans l'octet sélectionné. PlValBit : Valeur du bit dans l'octet sélectionné. -------------------------------------------------------- Lecture d'un bit de consigne de température dans la mémoire *********************************************************** Adresse : Adresse mémoire du premier octet. Cycle : Cycle en cours (varie de 0 à 3). Jour : Jour en cours (varie de 0=Lu à 6=Di). Heure : Heure en cours (varie de 0 à 23). Minute : Minute en cours (varie de 0 à 59). PlConsign : Nuit = 0 ; Jour = 1. PlPosCyc : Adresse de base du cycle. PlPosJou : Adresse de base du Jour dans le cycle. PlPosMem : Adresse mémoire de l'octet contenant l'heure et les minutes. PlPosHeu : Adresse de base de l'heure dans le jour. PlQuart : Quart d'heure en cours (Varie de 0 à 3). PlValMem : Valeur de l'octet contenant l'heure et les minutes. PlPosBit : Position du bit à adresser dans l'octet sélectionné. ----------------------------------------------------------------------------------