Changeset 643 in Sophya for trunk/Poubelle/archediab.old/archediab.sources/c/dilution.c
- Timestamp:
- Nov 25, 1999, 2:26:53 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Poubelle/archediab.old/archediab.sources/c/dilution.c
r639 r643 16 16 17 17 18 #define val_multiplex(i) (0.0003052*(double)(blk->ADC_dil[i]-0x8000)) 19 //#define val_temperature(i) (34.+ (300./4.4)*(4.4-val_multiplex(i)) ) 20 //#define val_temperature(i) ((1146.3/(val_multiplex(i)-0.1)) - 245.13) 21 #define val_temperature(i) ((val_multiplex(i)<0.2)?-99:((1146.3/(val_multiplex(i)-0.1)) - 245.13)) 22 #define cnt_temperature(i) (20+(int)val_temperature(i)) 18 #define cnt_temperature(i) (20+(int)val_temperature(blk->ADC_dil[i])) 23 19 24 20 #define ecrit_switch(val,ii,bit) {if(val) ii=ii | bit ;else ii=ii& (0xffffffff^bit) ;} 25 21 #define calib(j) litD(fenetre_dilution_calibration,j,0L) 26 22 23 24 void ecrit_moteur_dilution(int valeur); // valeur sur 10 bit: poid fort=on/off 25 26 void ecrit_moteur_dilution(int valeur) 27 { 28 int i; 29 char mot_tc[10]; 30 31 i=litD(fenetre_dilution,dil_switch_1,0); 32 i=i<<8; i+=litD(fenetre_dilution,dil_switch_2,0); 33 i=i<<8; i+=litD(fenetre_dilution,dil_switch_3,0); 34 i=i<<8; // les 3 octets en poid fort, rien dans le dernier octet 35 i=i& 0x003fffff; 36 i = i| ( (valeur & 0x3ff)<<22); 37 ecritD(fenetre_dilution,dil_switch_1,(i>>24)&0xff); 38 ecritD(fenetre_dilution,dil_switch_2,(i>>16)&0xff); 39 ecritD(fenetre_dilution,dil_switch_3,(i>>8 )&0xff); 40 41 mot_tc[0]=tc_switch_dil; 42 mot_tc[1]=0; 43 mot_tc[2]=0; 44 mot_tc[3]=0; 45 mot_tc[4]=(i>>8 )&0xff; 46 mot_tc[5]=(i>>16)&0xff; 47 mot_tc[6]=(i>>24)&0xff; 48 mot_tc[7]=0; 49 emission_telecommande(tc_dir_transputer,mot_tc); 50 } 27 51 28 52 … … 139 163 // case dil_dac_1 : 140 164 // case dil_dac_2 : 141 case dil_envoi_dac : ecrit_dac_dilution(); break; 165 // case dil_envoi_dac : ecrit_dac_dilution(); break; 166 case dil_envoi_dac : ecrit_moteur_dilution((int)litD(fenetre_dilution,dil_dac_2,0)); // les 12 bits 167 break; 142 168 143 169 default : break; … … 220 246 // les pressions et debits metres des injections de la dilution 221 247 ecritD(fenetre_dilution,dil_p_d_3He,"3He: %4.1fb -> %5.2fµm/s -> %4.1fb" 222 ,40. * val_multiplex( p_R3) -1.6 // 200 bars pour 5V et 1.6 bar d'offset223 ,2. * val_multiplex( d_3He) // 10 MICRO MOLES pour 5V224 ,20. * val_multiplex( p_C3) // 100 bars pour 5V248 ,40. * val_multiplex(blk->ADC_dil[ p_R3]) -1.6 // 200 bars pour 5V et 1.6 bar d'offset 249 ,2. * val_multiplex(blk->ADC_dil[ d_3He]) // 10 MICRO MOLES pour 5V 250 ,20. * val_multiplex(blk->ADC_dil[ p_C3]) // 100 bars pour 5V 225 251 ); 226 252 ecritD(fenetre_dilution,dil_p_d_4He,"4He: %4.1fb -> %5.2fµm/s -> %4.1fb" 227 ,40. * val_multiplex( p_R4) // 200 bars pour 5V228 ,8. * val_multiplex( d_4He) // 40 MICRO MOLES pour 5V229 // ,4. * val_multiplex( d_4He) // 20 MICRO MOLES pour 5V230 ,20. * val_multiplex( p_C4) // 100 bars pour 5V253 ,40. * val_multiplex(blk->ADC_dil[ p_R4]) // 200 bars pour 5V 254 ,8. * val_multiplex(blk->ADC_dil[ d_4He]) // 40 MICRO MOLES pour 5V 255 // ,4. * val_multiplex(blk->ADC_dil[ d_4He]) // 20 MICRO MOLES pour 5V 256 ,20. * val_multiplex(blk->ADC_dil[ p_C4]) // 100 bars pour 5V 231 257 ); 232 258 233 259 ecritD(fenetre_dilution,dil_p_air,"Van=%4.1fb charb=%4.1fb mmb=%4.3fb haut=%4.3fb" 234 ,20.*val_multiplex( p_air),20.*val_multiplex(p_charb)235 ,0.2*val_multiplex( p_memb),0.2*val_multiplex(p_haut) );260 ,20.*val_multiplex(blk->ADC_dil[ p_air]),20.*val_multiplex(blk->ADC_dil[ p_charb]) 261 ,0.2*val_multiplex(blk->ADC_dil[ p_memb]),0.2*val_multiplex(blk->ADC_dil[ p_haut]) ); 236 262 237 263 ecritD(fenetre_dilution,dil_piles," Trp=%4.1fV Dil=%4.1fV / %4.1fV \rBebo=%4.1fV / %4.1fV / %4.1fV Ch=%4.1fV" 238 ,2.03*val_multiplex( p_10T),3.90*val_multiplex(p_p18D),3.90*val_multiplex(p_m18D)239 ,2.03*val_multiplex( p_10B),3.90*val_multiplex(p_p18B),3.90*val_multiplex(p_m18B)240 ,3.8*val_multiplex( p_Ch));264 ,2.03*val_multiplex(blk->ADC_dil[ p_10T]),3.90*val_multiplex(blk->ADC_dil[ p_p18D]),3.90*val_multiplex(blk->ADC_dil[ p_m18D]) 265 ,2.03*val_multiplex(blk->ADC_dil[ p_10B]),3.90*val_multiplex(blk->ADC_dil[ p_p18B]),3.90*val_multiplex(blk->ADC_dil[ p_m18B]) 266 ,3.8*val_multiplex(blk->ADC_dil[ p_Ch])); 241 267 242 268 /* valeur seuil au mini (5.3 ou 15.3V) , *17 = +5.9 V au maxi */ 243 269 244 270 245 ecritD(fenetre_dilution,dil_p_10T,(int)(17*(2.03*val_multiplex( p_10T)-5.3)));246 ecritD(fenetre_dilution,dil_p_p18D,(int)(17*(3.90*val_multiplex( p_p18D)-15.3)));247 ecritD(fenetre_dilution,dil_p_m18D,(int)(17*(-3.90*val_multiplex( p_m18D)-15.3)));248 ecritD(fenetre_dilution,dil_p_10B,(int)(17*(2.03*val_multiplex( p_10B)-5.3)));249 ecritD(fenetre_dilution,dil_p_p18B,(int)(17*(3.93*val_multiplex( p_p18B)-15.3)));250 ecritD(fenetre_dilution,dil_p_m18B,(int)(17*(-3.93*val_multiplex( p_m18B)-15.3)));251 ecritD(fenetre_dilution,dil_p_Ch,(int)(10*(3.8*val_multiplex( p_Ch)-25))); /* 25 a 35 V */271 ecritD(fenetre_dilution,dil_p_10T,(int)(17*(2.03*val_multiplex(blk->ADC_dil[ p_10T])-5.3))); 272 ecritD(fenetre_dilution,dil_p_p18D,(int)(17*(3.90*val_multiplex(blk->ADC_dil[ p_p18D])-15.3))); 273 ecritD(fenetre_dilution,dil_p_m18D,(int)(17*(-3.90*val_multiplex(blk->ADC_dil[ p_m18D])-15.3))); 274 ecritD(fenetre_dilution,dil_p_10B,(int)(17*(2.03*val_multiplex(blk->ADC_dil[ p_10B])-5.3))); 275 ecritD(fenetre_dilution,dil_p_p18B,(int)(17*(3.93*val_multiplex(blk->ADC_dil[ p_p18B])-15.3))); 276 ecritD(fenetre_dilution,dil_p_m18B,(int)(17*(-3.93*val_multiplex(blk->ADC_dil[ p_m18B])-15.3))); 277 ecritD(fenetre_dilution,dil_p_Ch,(int)(10*(3.8*val_multiplex(blk->ADC_dil[ p_Ch])-25))); /* 25 a 35 V */ 252 278 253 279 // -- les voyants de switch de piles … … 257 283 258 284 ecritD(fenetre_dilution,dil_temperatures,"temp-Haut = %4.1f° %4.1f° %4.1f° %4.1f° \rtemp-Bas = %4.1f° %4.1f° %4.1f° %4.1f° " 259 ,val_temperature( t_h1),val_temperature(t_h2),val_temperature(t_h3),val_temperature(t_h4)260 ,val_temperature( t_b1),val_temperature(t_b2),val_temperature(t_b3),val_temperature(t_b4)285 ,val_temperature(blk->ADC_dil[ t_h1]),val_temperature(blk->ADC_dil[ t_h2]),val_temperature(blk->ADC_dil[ t_h3]),val_temperature(blk->ADC_dil[ t_h4]) 286 ,val_temperature(blk->ADC_dil[ t_b1]),val_temperature(blk->ADC_dil[ t_b2]),val_temperature(blk->ADC_dil[ t_b3]),val_temperature(blk->ADC_dil[ t_b4]) 261 287 ); 262 288 … … 277 303 // les afficheurs analogiques de pression helium et pirani 278 304 279 ecritD(fenetre_dilution,dil_RP_He,(int)(2500*val_multiplex( RP_He)-7500));305 ecritD(fenetre_dilution,dil_RP_He,(int)(2500*val_multiplex(blk->ADC_dil[ RP_He])-7500)); 280 306 // je veux 10000 pour 0.8 bars soit alors que l'on a 5V pour 1 bar ou 1V = 0.2 bar 281 307 // soit multiplier par 2500 282 308 // puis j'enleve 0.6 bars soit 7500 283 ecritD(fenetre_dilution,dil_pirani,(int)(1000*val_multiplex( pirani)));309 ecritD(fenetre_dilution,dil_pirani,(int)(1000*val_multiplex(blk->ADC_dil[ pirani]))); 284 310 285 311 … … 295 321 ecritT(fenetre_dilution_lecture_brute,fin_f,"dil_switch= %x \n",blk->switch_dil); 296 322 297 for(i=0;i<16;i++) ecritT(fenetre_dilution_lecture_brute,fin_f,"%2d=%6.3f ",i<8?i+11:i+13,val_multiplex( i));323 for(i=0;i<16;i++) ecritT(fenetre_dilution_lecture_brute,fin_f,"%2d=%6.3f ",i<8?i+11:i+13,val_multiplex(blk->ADC_dil[ i])); 298 324 ecritT(fenetre_dilution_lecture_brute,fin_f,"\n"); 299 for(i=16;i<32;i++) ecritT(fenetre_dilution_lecture_brute,fin_f,"%2d=%6.3f ",i<24?i+15:i+17,val_multiplex( i));325 for(i=16;i<32;i++) ecritT(fenetre_dilution_lecture_brute,fin_f,"%2d=%6.3f ",i<24?i+15:i+17,val_multiplex(blk->ADC_dil[ i])); 300 326 ecritT(fenetre_dilution_lecture_brute,fin_f,"\n"); 301 for(i=32;i<48;i++) ecritT(fenetre_dilution_lecture_brute,fin_f,"%2d=%6.3f ",i<40?i+19:i+21,val_multiplex( i));327 for(i=32;i<48;i++) ecritT(fenetre_dilution_lecture_brute,fin_f,"%2d=%6.3f ",i<40?i+19:i+21,val_multiplex(blk->ADC_dil[ i])); 302 328 ecritT(fenetre_dilution_lecture_brute,fin_f,"\n"); 303 329 } … … 311 337 // printf("dilution : numero de block = %d \n",numero_block(blk)); 312 338 changecontrole(fenetre_dilution,dil_niveau_helium,idem,idem,idem,idem,calrefcon(0,0,rouge,blanc,blanc),""); 313 y[0]=val_multiplex( j_he1)-calib(dil_j_he1);314 y[1]=val_multiplex( j_he2)-calib(dil_j_he2);315 y[2]=val_multiplex( j_he3)-calib(dil_j_he3);316 y[3]=val_multiplex( j_he4)-calib(dil_j_he4);317 y[4]=val_multiplex( j_he5)-calib(dil_j_he5);318 y[5]=val_multiplex( j_he6)-calib(dil_j_he6);319 y[6]=val_multiplex( j_he7)-calib(dil_j_he7);320 y[7]=val_multiplex( j_he8)-calib(dil_j_he8);339 y[0]=val_multiplex(blk->ADC_dil[ j_he1])-calib(dil_j_he1); 340 y[1]=val_multiplex(blk->ADC_dil[ j_he2])-calib(dil_j_he2); 341 y[2]=val_multiplex(blk->ADC_dil[ j_he3])-calib(dil_j_he3); 342 y[3]=val_multiplex(blk->ADC_dil[ j_he4])-calib(dil_j_he4); 343 y[4]=val_multiplex(blk->ADC_dil[ j_he5])-calib(dil_j_he5); 344 y[5]=val_multiplex(blk->ADC_dil[ j_he6])-calib(dil_j_he6); 345 y[6]=val_multiplex(blk->ADC_dil[ j_he7])-calib(dil_j_he7); 346 y[7]=val_multiplex(blk->ADC_dil[ j_he8])-calib(dil_j_he8); 321 347 if(blk->switch_dil & switch_helium) 322 348 {
Note:
See TracChangeset
for help on using the changeset viewer.