Files
shipheart-appli/sources/circuits.h
T

120 lines
5.3 KiB
C

//**********************************************************************************************************************************************************************************
// Fichier CIRCUITS.H
//
// Contient tous les define liés aux circuits
//**********************************************************************************************************************************************************************************/
// Maximums :
#define MAX_NOMBRE_CIRCUITS 256 // Nombre maximal de circuits commandés par ShipHeart, quelle que soit la carte sur laquelle ils sont.
#define MAX_CONSIGNE_CIRCUIT 100
#define MAX_NOMBRE_VARIABLES_CIRCUITS 7
#define MAX_TAILLE_NOM_CIRCUITS 80 // Lié à dimension du champs 'Nom' dans TB_Circuits
#define MAX_CIRCUITS_PAR_MODULE_SHIPBASE_V1 2 // ShipBase proprement-dit et ports USB en face avant
#define MAX_CIRCUITS_PAR_MODULE_SHIPBASE_V2 3 // ShipBase proprement-dit, ports USB en face avant et port USB à l'arrière
#define MAX_CIRCUITS_PAR_MODULE_SP8XX 8 // Valable pour les SP812 et SP8DC
#define MAX_CIRCUITS_PAR_MODULE_SP4AC 4
#define MAX_CIRCUITS_PAR_MODULE MAX_CIRCUITS_PAR_MODULE_SP8XX
#define MAX_COURANT_MASSES_SP8DC 25.4 // En A (la limite vient du fait que la valeur est ensuite transmise aux SP8DC sous forme de uint_8).
// Timings :
#define CIRCUITS_TEMPO_INIT 100 // En x 10ms
#define CIRCUITS_PERIODE_MISE_A_JOUR 10 // En x 10ms
#define CIRCUIT_TEMPO_INIT 20 // En x 10ms
// Général :
#define CIRCUITS_TENSION_CARTE_OK 0
#define CIRCUITS_TENSION_CARTE_UNDERVOLTAGE 1
// Etat de commande carte :
#define CIRCUITS_ETAT_COMMANDE_CARTE_OK 0
#define CIRCUITS_ETAT_COMMANDE_CARTE_UNDERVOLTAGE 1
#define CIRCUITS_ETAT_COMMANDE_CARTE_TEST 2
// Modes de commande circuits :
#define CIRCUITS_MODE_COMMANDE_ON_OFF 0 // Ne peut prendre que deux états ON/OFF
#define CIRCUITS_MODE_COMMANDE_ON_OFF_SOFT 1 // Ne peut prendre que deux états ON/OFF mais la transition de l'un à l'autre se fait de façon douce
#define CIRCUITS_MODE_COMMANDE_VARIABLE_SOFT 2 // Peut prendre toute valeur entre 0 et 100 et start/stop soft
#define CIRCUITS_MODE_COMMANDE_CADENCE 3
// Origine consigne :
#define CIRCUITS_ORIGINE_CONSIGNE_SHIPBASE 0
#define CIRCUITS_ORIGINE_CONSIGNE_TIME_OUT 1
#define CIRCUITS_ORIGINE_CONSIGNE_EVENT 2
#define CIRCUITS_ORIGINE_CONSIGNE_DEFAUT 3
// SHIPBASE :
#define SB_CIRCUIT_NO_SHIPHEART 0
#define SB_CIRCUIT_NO_USB_AVANT 1
#define SB_CIRCUIT_NO_USB_ARRIERE 2
// SP4AC :
#define SP4AC_NOMBRE_CIRCUITS 4
// SP8XX = SP812 ou SP8DC indifféremment
// ATTENTION : il est important de s'assurer que tous les defines ci-dessous s'appliquent indifféremment à SP812 et SP8DC !!!!
#define SP8XX_NOMBRE_CIRCUITS 8
#define SP8XX_MAX_COURANT_TOTAL_CIRCUITS 50.00 // En A. Si 0, aucune surveillance du courant maxi
#define SP8XX_TEMPO_COURANT_TOTAL_CIRCUITS_CHECK 10 // En secondes.
#define SP8XX_TYPE_CIRCUIT_ON_OFF 0 // Ne peut prendre que deux états ON/OFF
#define SP8XX_TYPE_CIRCUIT_ON_OFF_SOFT 1 // Ne peut prendre que deux états ON/OFF mais la transition de l'un à l'autre se fait de façon douce
#define SP8XX_TYPE_CIRCUIT_VARIABLE_SOFT 2 // Peut prendre toute valeur entre 0 et 100 et start/stop soft
#define SP8XX_MODE_CDE_CIRCUIT_ON_OFF 0 // Ne peut prendre que deux états ON/OFF
#define SP8XX_MODE_CDE_CIRCUIT_ON_OFF_SOFT 1 // Ne peut prendre que deux états ON/OFF mais la transition de l'un à l'autre se fait de façon douce
#define SP8XX_MODE_CDE_CIRCUIT_VARIABLE_SOFT 2 // Peut prendre toute valeur entre 0 et 100 et start/stop soft
#define SP8XX_MODE_CDE_CIRCUIT_AUTO 3 // Mode de commande hérité du type
// Etats d'un circuit :
#define ETAT_CIRCUIT_OK 0 // Tout va bien...
#define ETAT_CIRCUIT_LIMITATION 1
#define ETAT_CIRCUIT_PROTECTION 2
#define ETAT_CIRCUIT_DISJONCTE 3
#define ETAT_CIRCUIT_CC_BATTERIE 4
#define ETAT_CIRCUIT_DELESTE 5
#define ETAT_CIRCUIT_UNDERVOLTAGE 6
#define ETAT_CIRCUIT_INVERSION_PHASE_NEUTRE 7 // Sur SP4AC uniquement
#define ETAT_CIRCUIT_ABSENCE_TERRE 8 // Sur SP4AC uniquement
#define ETAT_CIRCUIT_ABSENCE_MASSE 9 // Sur SP8DC uniquement
#define ETAT_CIRCUIT_INCONNU 99
// Variables du circuit :
#define CIRCUIT_VARIABLE_CONSIGNE 0
#define CIRCUIT_VARIABLE_TENSION 1
#define CIRCUIT_VARIABLE_COURANT 2
#define CIRCUIT_VARIABLE_FREQUENCE 3
#define CIRCUIT_VARIABLE_PUISSANCE 4
#define CIRCUIT_VARIABLE_ENERGIE 5
#define CIRCUIT_VARIABLE_TENSION_SECTEUR 6
// NB : ces valeurs doivent rester strictement inférieures à MAX_NOMBRE_VARIABLES_PAR_CIRCUIT
// Validation des commandes par des évènements du circuit :
#define CIRCUIT_VALIDATION_COMMANDES_EVENTS_OFF 0
#define CIRCUIT_VALIDATION_COMMANDES_EVENTS_ON 1
// Etat séquenceur Circuits :
#define ETAT_SEQUENCEUR_CIRCUITS_INIT 0
#define ETAT_SEQUENCEUR_CIRCUITS_REPOS 1
// Etat séquenceur circuit :
#define ETAT_SEQUENCEUR_CIRCUIT_INIT 0
#define ETAT_SEQUENCEUR_CIRCUIT_REPOS 1
#define ETAT_SEQUENCEUR_CIRCUIT_CHECK_LIMITATION 2