Ignore:
Timestamp:
Nov 25, 1999, 2:26:53 PM (26 years ago)
Author:
ansari
Message:

archediab 26

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Poubelle/archediab.old/archediab.sources/c/dilution.c

    r639 r643  
    1616
    1717
    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]))
    2319
    2420#define  ecrit_switch(val,ii,bit) {if(val) ii=ii | bit ;else ii=ii& (0xffffffff^bit) ;}
    2521#define  calib(j)               litD(fenetre_dilution_calibration,j,0L)
    2622
     23
     24void  ecrit_moteur_dilution(int valeur);        // valeur sur 10 bit: poid fort=on/off
     25
     26void  ecrit_moteur_dilution(int valeur)
     27{
     28int i;
     29char mot_tc[10];
     30
     31                i=litD(fenetre_dilution,dil_switch_1,0);
     32i=i<<8;         i+=litD(fenetre_dilution,dil_switch_2,0);
     33i=i<<8;         i+=litD(fenetre_dilution,dil_switch_3,0);
     34i=i<<8;         // les 3 octets en poid fort, rien dans le dernier octet
     35i=i& 0x003fffff;
     36i = i| ( (valeur & 0x3ff)<<22);
     37ecritD(fenetre_dilution,dil_switch_1,(i>>24)&0xff);
     38ecritD(fenetre_dilution,dil_switch_2,(i>>16)&0xff);
     39ecritD(fenetre_dilution,dil_switch_3,(i>>8 )&0xff);
     40
     41mot_tc[0]=tc_switch_dil;
     42mot_tc[1]=0;
     43mot_tc[2]=0;
     44mot_tc[3]=0;
     45mot_tc[4]=(i>>8 )&0xff;
     46mot_tc[5]=(i>>16)&0xff;
     47mot_tc[6]=(i>>24)&0xff;
     48mot_tc[7]=0;   
     49emission_telecommande(tc_dir_transputer,mot_tc);
     50}
    2751
    2852
     
    139163//    case dil_dac_1 :
    140164//   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;
    142168
    143169    default  :   break;
     
    220246// les pressions et debits metres des injections de la dilution
    221247ecritD(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'offset
    223         ,2.     *       val_multiplex(d_3He)            //  10 MICRO MOLES  pour  5V
    224         ,20.    *       val_multiplex(p_C3)             //      100 bars pour 5V
     248        ,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
    225251        );
    226252ecritD(fenetre_dilution,dil_p_d_4He,"4He: %4.1fb -> %5.2fµm/s -> %4.1fb"
    227         ,40.    *       val_multiplex(p_R4)             //      200 bars pour 5V
    228         ,8.     *       val_multiplex(d_4He)            //  40 MICRO MOLES  pour  5V
    229 //      ,4.     *       val_multiplex(d_4He)            //  20 MICRO MOLES  pour  5V
    230         ,20.    *       val_multiplex(p_C4)             //      100 bars pour 5V
     253        ,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
    231257        );
    232258
    233259ecritD(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])      );
    236262                       
    237263ecritD(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]));
    241267
    242268/* valeur seuil au mini (5.3 ou 15.3V) , *17 =  +5.9 V au maxi  */
    243269
    244270
    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  */
     271ecritD(fenetre_dilution,dil_p_10T,(int)(17*(2.03*val_multiplex(blk->ADC_dil[ p_10T])-5.3)));
     272ecritD(fenetre_dilution,dil_p_p18D,(int)(17*(3.90*val_multiplex(blk->ADC_dil[ p_p18D])-15.3)));
     273ecritD(fenetre_dilution,dil_p_m18D,(int)(17*(-3.90*val_multiplex(blk->ADC_dil[ p_m18D])-15.3)));
     274ecritD(fenetre_dilution,dil_p_10B,(int)(17*(2.03*val_multiplex(blk->ADC_dil[ p_10B])-5.3)));
     275ecritD(fenetre_dilution,dil_p_p18B,(int)(17*(3.93*val_multiplex(blk->ADC_dil[ p_p18B])-15.3)));
     276ecritD(fenetre_dilution,dil_p_m18B,(int)(17*(-3.93*val_multiplex(blk->ADC_dil[ p_m18B])-15.3)));
     277ecritD(fenetre_dilution,dil_p_Ch,(int)(10*(3.8*val_multiplex(blk->ADC_dil[ p_Ch])-25)));        /* 25 a 35 V  */
    252278
    253279//  --  les voyants de switch de piles
     
    257283
    258284ecritD(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])   
    261287        );
    262288
     
    277303//  les afficheurs analogiques de pression helium et pirani 
    278304
    279 ecritD(fenetre_dilution,dil_RP_He,(int)(2500*val_multiplex(RP_He)-7500));
     305ecritD(fenetre_dilution,dil_RP_He,(int)(2500*val_multiplex(blk->ADC_dil[ RP_He])-7500));
    280306//  je veux 10000 pour 0.8 bars  soit    alors que l'on a 5V pour 1 bar ou 1V = 0.2 bar
    281307//  soit multiplier par 2500
    282308// puis j'enleve 0.6 bars soit 7500
    283 ecritD(fenetre_dilution,dil_pirani,(int)(1000*val_multiplex(pirani)));
     309ecritD(fenetre_dilution,dil_pirani,(int)(1000*val_multiplex(blk->ADC_dil[ pirani])));
    284310
    285311
     
    295321        ecritT(fenetre_dilution_lecture_brute,fin_f,"dil_switch= %x  \n",blk->switch_dil);
    296322
    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]));
    298324        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]));
    300326        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]));
    302328        ecritT(fenetre_dilution_lecture_brute,fin_f,"\n");
    303329        }
     
    311337//      printf("dilution :  numero de block = %d  \n",numero_block(blk));
    312338        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);
    321347        if(blk->switch_dil & switch_helium)
    322348                {
Note: See TracChangeset for help on using the changeset viewer.