[637] | 1 |
|
---|
| 2 | // Les données télémesure sont formées de blocks de type block_tm
|
---|
| 3 | // la table de transfert de ces blocks est la structure table_tm
|
---|
| 4 | // la longueur de table telemesure est longueur_table_tm
|
---|
| 5 |
|
---|
| 6 |
|
---|
| 7 | //#define nb_per_block*2 24 // nombre de demi periodes dans un block télémesure
|
---|
| 8 | //#define longueur_table_tm 20 // nb de blocks dans la table pour transmettre les télémesures
|
---|
| 9 | //#define longueur_table_tc 100 // nb de datas dans la table de télécommandes
|
---|
| 10 |
|
---|
| 11 | //longueur definies dans choix_param
|
---|
| 12 |
|
---|
| 13 |
|
---|
| 14 | // ----- pour detection synchrone
|
---|
| 15 | typedef struct
|
---|
| 16 | {
|
---|
| 17 | int ii[nb_max_bolo]; // compteur position dans la periode
|
---|
| 18 | short dstable[nb_max_mes_per]; // table les différents ds
|
---|
| 19 | short dsnorme; // norme des detections synchrones
|
---|
| 20 | long sommeA[nb_max_bolo];
|
---|
| 21 | long sommeB[nb_max_bolo];
|
---|
| 22 | } detec_sync;
|
---|
| 23 |
|
---|
| 24 |
|
---|
| 25 |
|
---|
| 26 | typedef struct // block telemesure pour dialogue avec les interruptions
|
---|
| 27 | {
|
---|
| 28 | unsigned long temps_cntl[nb_per_block*2]; // temps du controlleur en µsec
|
---|
| 29 | unsigned long temps_mac[nb_per_block*2]; // temps du mac en sec
|
---|
| 30 | reglage_bolo reglage; // parametr de reglage des bolos
|
---|
| 31 | int chauf_regul;
|
---|
| 32 |
|
---|
| 33 | short flag_bolo[nb_max_bolo]; // flag de lecture detail de la forme de modulation
|
---|
| 34 | short bol_per[nb_max_bolo][nb_max_mes_per]; // table une periode detail de la forme de modulation
|
---|
| 35 | F_donne don[nb_per_block*2]; // donnees bolo et synchro pour "nb_per_block*2" periodes
|
---|
| 36 | //*****************************************************************************************
|
---|
| 37 | #ifdef _archeops //--------- pour Archeops ------------------------------ ***
|
---|
| 38 | //*****************************************************************************************
|
---|
| 39 | block_type_modele tmtrx;
|
---|
| 40 | //*****************************************************************************************
|
---|
| 41 | #endif //-------------------------------------------------------------------- ***
|
---|
| 42 | //*****************************************************************************************
|
---|
| 43 | } block_tm;
|
---|
| 44 |
|
---|
| 45 |
|
---|
| 46 | typedef struct // block telecommande pour dialogue avec les interruptions
|
---|
| 47 | {
|
---|
| 48 | char mot[10]; // 10 mots de commande
|
---|
| 49 | }
|
---|
| 50 | block_tc;
|
---|
| 51 |
|
---|
| 52 |
|
---|
| 53 |
|
---|
| 54 |
|
---|
| 55 | typedef struct // table courante telemesure pour dialogue avec les interruptions
|
---|
| 56 | {
|
---|
| 57 |
|
---|
| 58 | int pos_ecrit; // position dans la table
|
---|
| 59 | int pos_lit;
|
---|
| 60 | block_tm btm[longueur_table_tm]; // longueur_table_tm blocks de telemesure
|
---|
| 61 | }
|
---|
| 62 | table_tm;
|
---|
| 63 |
|
---|
| 64 | typedef struct // table courante telemesure pour dialogue avec les interruptions
|
---|
| 65 | {
|
---|
| 66 |
|
---|
| 67 | int pos_ecrit; // position dans la table
|
---|
| 68 | int pos_lit;
|
---|
| 69 | block_tc btc[longueur_table_tc]; // longueur_table_tc blocks de telecommande
|
---|
| 70 | }
|
---|
| 71 | table_tc;
|
---|
| 72 |
|
---|
| 73 |
|
---|
| 74 | typedef struct // parametres de regul dans les interruptions
|
---|
| 75 | {
|
---|
| 76 | regul_p_i_d pid;
|
---|
| 77 |
|
---|
| 78 | long valeur;
|
---|
| 79 | long anc_ecart;
|
---|
| 80 | int compteur;
|
---|
| 81 | double tint;
|
---|
| 82 | int cc;
|
---|
| 83 | // int per_raz; // nombre de periode entre 2 raz (zero tension sur la modulation)
|
---|
| 84 | // int nb_raz; // nombre de periode courant
|
---|
| 85 | }
|
---|
| 86 | param_regul;
|
---|
| 87 |
|
---|
| 88 |
|
---|
| 89 | //*****************************************************************************************
|
---|
| 90 | // ***
|
---|
| 91 | #ifdef _archeops //--------- pour Archeops ------------------------------ ***
|
---|
| 92 | // ***
|
---|
| 93 | //*****************************************************************************************
|
---|
| 94 |
|
---|
| 95 |
|
---|
| 96 |
|
---|
| 97 | typedef struct // variables internes du programme d'interruption pour Archeops
|
---|
| 98 | {
|
---|
| 99 | unsigned long temps_cntl; // temps courant du controlleur en unite de 4.8 µsec ??? en demi periodes
|
---|
| 100 |
|
---|
| 101 | int a; // compteur pour check debut et fin de block
|
---|
| 102 | int b; // compteur de mot 32 bit dans un block
|
---|
| 103 | int c; // compteur de bytes dans un mot 32 bit
|
---|
| 104 |
|
---|
| 105 | block_type_modele btt; // le plus gros des blocs telemesure transputer dans arc_com.h
|
---|
| 106 | //*****************************************************************************************
|
---|
| 107 | #ifdef _sans_transputer //--------- pour Archeops avec ctb ------------- ***
|
---|
| 108 | char bkb[nb_per_block*nb_max_mes_per*5]; // le block brut venant des bebo
|
---|
| 109 | #endif //-------------------------------------------------------------------- ***
|
---|
| 110 | //*****************************************************************************************
|
---|
| 111 | }
|
---|
| 112 | var_internes;
|
---|
| 113 |
|
---|
| 114 | //*****************************************************************************************
|
---|
| 115 | // ***
|
---|
| 116 | #else //--------- pour Diabolo ------------------------------ ***
|
---|
| 117 | // ***
|
---|
| 118 | //*****************************************************************************************
|
---|
| 119 |
|
---|
| 120 | typedef struct // variables internes du programme d'interruption pour diabolo
|
---|
| 121 | {
|
---|
| 122 | int aa; // pour deux lectures fifo par point
|
---|
| 123 | int a; // compteur bit dans un mot
|
---|
| 124 | int i; // compteur position générale dans la periode
|
---|
| 125 | long debut_per; // flag debut de periode
|
---|
| 126 |
|
---|
| 127 | int numbol; // le numero de bolo en cours de lecture par la bebo
|
---|
| 128 | long mot[nb_max_bolo]; // mot pour lecture de chaque voie ADC (phase en bit 12)
|
---|
| 129 | long motsauve[nb_max_bolo][nb_max_mes_per]; // mot pour sauve mot precedent
|
---|
| 130 |
|
---|
| 131 | char synchro[nb_sync]; // pour calcul interne des synchro avant de les envoyer
|
---|
| 132 |
|
---|
| 133 |
|
---|
| 134 | int flag_ecriture_data; // flag pour ecrire les data sur le bus PCI
|
---|
| 135 | int pos_block_tm; // position pour ecriture des données dans un block tm
|
---|
| 136 |
|
---|
| 137 | unsigned long temps_cntl; // temps courant du controlleur en µsec ou demi-periodes
|
---|
| 138 |
|
---|
| 139 | param_regul reg; // ------ parametres de la regulation
|
---|
| 140 |
|
---|
| 141 | }
|
---|
| 142 | var_internes;
|
---|
| 143 |
|
---|
| 144 | //*****************************************************************************************
|
---|
| 145 | // ***
|
---|
| 146 | #endif //-------------------------------------------------------------------- ***
|
---|
| 147 | // ***
|
---|
| 148 | //*****************************************************************************************
|
---|
| 149 |
|
---|
| 150 |
|
---|
| 151 |
|
---|
| 152 | //---------------------- structure complete tm + tc + interne tache
|
---|
| 153 |
|
---|
| 154 |
|
---|
| 155 | typedef struct // global connu de la tache et du prog principal
|
---|
| 156 | {
|
---|
| 157 | int PCI_actif; // le PCI est actif
|
---|
| 158 |
|
---|
| 159 |
|
---|
| 160 | table_tm tm; // table de telemesure
|
---|
| 161 | table_tc tc; // table de télécommande
|
---|
| 162 |
|
---|
| 163 | table_erreur te; // table courante pour gestion des erreurs de bus PCI
|
---|
| 164 |
|
---|
| 165 | int nb_lec_fofo_int; // nombre maxi de lectures dans la fifo en un coups d'interrupt
|
---|
| 166 | int nb_lec_fofo_ext; // communication avec le prog principal: remis a zero apres lecture
|
---|
| 167 |
|
---|
| 168 | int signal_scan_immediat; // signal scan immediat pour savoir avant
|
---|
| 169 |
|
---|
| 170 |
|
---|
| 171 | param_bolo param; // liste bolo dans le programme d'interruption
|
---|
| 172 | reglage_bolo reglage; // etat bolo dans le programme interruption
|
---|
| 173 |
|
---|
| 174 | detec_sync ds; // registres pour detection synchrone numerique
|
---|
| 175 | // ----- communication directe avec le prog de lecture_fifo en interruption
|
---|
| 176 |
|
---|
| 177 |
|
---|
| 178 | var_internes vi; // variables internes du programme d'interruption
|
---|
| 179 | }
|
---|
| 180 | tmtc;
|
---|
| 181 |
|
---|
| 182 | extern tmtc *tt;
|
---|
| 183 |
|
---|