* @USTMPS PROCEDUR MB234859 21/10/21 21:15:02 11111 ************************************************************************ * PROCEDURE @USTMPS * * Cette procedure determine la liste des instants a calculer pour le * prochain cycle. * Si AJUSTE_PAS = VRAI, les pas de temps sont recalcules * Si AJUSTE_PAS = FAUX, les pas de temps sont ceux du cycle precedent * qui ont ete conserves dans BOITE_US.'INFOS'.'INSTANTS_CYCLE'. * * Entree : * T1 : TABLE transmise a PASAPAS * * Appelee par @USURE * ************************************************************************ * BOITE_US = T1.'BOITES_USURE' ; NbIncDC = BOITE_US.'INFOS'.'NB_INCREMENTS_PAR_CYCLE' / 2 ; NCycle = BOITE_US.'DONNEES'.'NB_CYCLES' ; * Periode = BOITE_US.'DONNEES'.'PERIODE' ; DemiPer = Periode / 2. ; QuartPer = Periode / 4. ; * *----------------------------------------------------------------------* * - DEFINITION "STANDARD" D'UN CYCLE * *----------------------------------------------------------------------* 'SI' ('NEG' T1.'PERSO1_APPEL' 1) ; Tactu = BOITE_US.'INFOS'.'T_DEBUT_DEPI' ; Tactu = (Periode * BOITE_US.'INFOS'.'INDICE_CYCLE_ACTUEL') + Tactu ; * 'SI' (BOITE_US.'INFOS'.'AJUSTE_PAS') ; 'REPE' BU (BOITE_US.'DONNEES'.'N_BOITES') ; LDeltaT = BOITE_US. &BU .'DELTA_T' ; 'SI' ('<' DltaTca DltaTMin) ; DltaTMin = DltaTca ; 'FINSI' ; LElmt = BOITE_US. &BU .'LELT' ; 'SI' ('<' LElmt LElmtMin) ; LElmtMin = LElmt ; 'FINSI' ; 'FIN' BU ; TauxGlPa = DltaTMin '/' BOITE_US.'INFOS'.'DEPLA_IMPOSE' ; TauxElCo = LElmtMin '/' BOITE_US.'INFOS'.'DEPLA_IMPOSE' ; * * NbIncPe points sur la pente soit ]Tactu;T_Pente[ T_Pente = DemiPer * TauxGlPa ; DT_Pent = T_Pente / NbIncPe ; * * NbIncPl points sur le plateau soit [T_pente;DemiPer] * -> -1 pour avoir le bon nombre de pas de temps car on ajoute * QuartPer a la liste. NbIncPl = NbIncDC - NbIncPe - 1 ; T_Plate = DemiPer - T_Pente ; DT_Plat = T_Plate / NbIncPl ; * 'SI' ('<EG' NbIncPe 1) ; 'SINON' ; DemiCyc = 'PROG' DT_Pent 'PAS' DT_Pent T_Pente 'PAS' DT_Plat DemiPer ; 'FINSI' ; CycleStd = DemiCyc 'ET' (DemiCyc '+' DemiPer) ; NbIncCyc = BOITE_US.'INFOS'.'NB_INCREMENTS_PAR_CYCLE' ; 'SI' ('NEG' DimeCycl NbIncCyc) ; 'MESS' 'Incoherence entre :' ; 'FINSI' ; BOITE_US.'INFOS'.'INSTANTS_CYCLE' = CycleStd ; 'SINON' ; CycleStd = BOITE_US.'INFOS'.'INSTANTS_CYCLE' ; 'FINSI' ; * 'SINON' ; * * Instants a calculer (premier appel a PERSO1) Tactu = BOITE_US.'INFOS'.'T_DEBUT_DEPI' ; T_Pente = DemiPer ; DT_Pent = T_Pente / NbIncDC ; CycleStd = 'PROG' DT_Pent 'PAS' DT_Pent DemiPer 'PAS' DT_Pent Periode ; BOITE_US.'INFOS'.'INSTANTS_CYCLE' = CycleStd ; 'FINSI' ; * *----------------------------------------------------------------------* * - MISE A JOUR DES INSTANTS A CALCULER/SAUVEGARDER * *----------------------------------------------------------------------* Distrib = CycleStd '+' Tactu ; PasCalc = T1.'TEMPS_CALCULES' 'ET' Distrib ; T1.'TEMPS_CALCULES' = PasCalc ; T1.'WTABLE'.'TEMPS_CALCULES' = PasCalc ; * * Instants ou les resulats sont conserves T1.'TEMPS_SAUVES' = T1.'TEMPS_SAUVES' 'ET' PasSvgd ; T1.'WTABLE'.'IPRESU' = T1.'WTABLE'.'IPRESU' 'ET' PasSvgd ; * * Instants pour une sauvegarde sur disque **'SI' (T1.'WTABLE'.'ISAUVEGL') ; ** T1.'TEMPS_SAUVEGARDES' = T1.'TEMPS_SAUVEGARDES' 'ET' PasSvgd ; ** T1.'WTABLE'.'ISAUVEGA' = T1.'WTABLE'.'ISAUVEGA' 'ET' PasSvgd ; **'SINON' ; ** T1.'TEMPS_SAUVEGARDES' = PasSvgd ; ** T1.'WTABLE'.'ISAUVEGA' = PasSvgd ; **'FINSI' ; **T1.'WTABLE'.'ISAUVEGL' = VRAI ; * 'FINP' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales