Télécharger @EVN_IDT.procedur

Retour à la liste

Numérotation des lignes :

  1. * @EVN_IDT PROCEDUR MB234859 18/11/21 21:15:01 10007
  2. ***********************************************************************
  3. *
  4. * CETTE PROCEDURE A ETE MISE GRACIEUSEMENT A DISPOSITION DES
  5. * UTILISATEURS PAR LE LTDS - Ecole Centrale Lyon (S. Fouvry et S.Garcin)
  6. *
  7. ***********************************************************************
  8. * IDENTIFICATEUR D'EVENEMENTS (@EVN_IDT)
  9. *
  10. * Determine les 4 booleens suivant :
  11. * - InPhasUs : VRAI si T_inc est dans l'intervalle [T_INI_US;T_FIN_US]
  12. * - YesCANPU : VRAI si le profil d'usure doit etre applique
  13. * - EntreeNC : VRAI si T_inc correspond a un instant de debut de cycle
  14. * - TermineC : VRAI si T_inc correspond a un instant de fin de cycle
  15. * Et l'entier NCNECC qui donne le numero du cycle en cours
  16. *
  17. * Ces booleens sont utilises par la procedure @EVN_MNG qui appelle
  18. * ou non en consequence les procedures de calculs (@PRCAi, i=1,5)
  19. *
  20. * Entrees :
  21. * T1 : Table de PASAPAS
  22. * ID_BU : Entier donnant le numero de la BOITE D'USURE a considerer
  23. *
  24. * Sortie :
  25. * T1 : Table de PASAPAS avec les booleens mis a jour
  26. *
  27. * Appelee par PERSO1
  28. *
  29. ***********************************************************************
  30. DEBP @EVN_IDT T1*'TABLE' ID_BU*'ENTIER';
  31. *
  32. BOITE_US = T1.'BOITES_USURES'. ID_BU ;
  33. T_INI_US = BOITE_US.'T_INI_US' ;
  34. T_FIN_US = BOITE_US.'T_FIN_US' ;
  35. PERIODCY = BOITE_US.'PERIODCY' ;
  36.  
  37. * Initialisation des tables si elles n'existent pas
  38. BOITE_US = @ChCoTaE BOITE_US ID_BU;
  39. *
  40. * Instant de calcul T_inc
  41. T_inc = T1.'ESTIMATION'.'TEMPS' ;
  42. T_usu = T_inc - T_INI_US ;
  43.  
  44. * Numero du Cycle Numerique En Cours Temp : NCNECTmp
  45. * Temps du Cycle Numerique En Cours Temp : TCNECTmp
  46. NCNECTmp = ENTI 'SUPERIEUR' ( T_usu / PERIODCY ) ;
  47. TCNECTmp = T_usu - ((NCNECTmp - 1) * PERIODCY) ;
  48.  
  49. * A t-on T_inc dans l'intervalle [T_INI_US;T_FIN_US]?
  50. SI ((T_inc >EG (T_INI_US - 1.e-10))
  51. ET (T_inc <EG (T_FIN_US + 1.e-10)));
  52. InPhasUs = VRAI ;
  53. SINON ;
  54. InPhasUs = FAUX ;
  55. FINSI ;
  56.  
  57. * A t-on T_Inc qui correspond a un instant de debut ou de fin de cycle
  58. * Beginning Or Ending Of Cycle BOEOC
  59. DT2EOC = ABS (TCNECTmp) ;
  60. DT2BOC = ABS (TCNECTmp - PERIODCY) ;
  61. SI (InPhasUs ET ((DT2EOC <EG 1.e-10) OU (DT2BOC <EG 1.e-10))) ;
  62. BOEOC = VRAI ;
  63. SINON ;
  64. BOEOC = FAUX ;
  65. FINSI ;
  66. *
  67. SI BOEOC ;
  68. SI ((ABS (T_inc - T_INI_US)) <EG 1.e-10) ;
  69. NCNECC = 1 ;
  70. TCNECC = 0. ;
  71. EntreeNC = VRAI ;
  72. TermineC = FAUX ;
  73. SINON ;
  74. NCNECC = ENTI 'PROCHE' (T_usu/PERIODCY) ;
  75. TCNECC = PERIODCY ;
  76. TermineC = VRAI ;
  77. SI ((ABS (T_inc - T_FIN_US)) <EG 1.e-10) ;
  78. EntreeNC = FAUX ;
  79. SINON ;
  80. EntreeNC = VRAI ;
  81. FINSI ;
  82. FINSI ;
  83. SINON ;
  84. EntreeNC = FAUX ;
  85. TermineC = FAUX ;
  86. NCNECC = NCNECTmp ;
  87. TCNECC = TCNECTmp ;
  88. FINSI ;
  89.  
  90. * Creation des listes d'instants de chaque cycle qui servira a la
  91. * construction des evolutions (cf. @PRCA5).
  92. * Particularite, certains increments sont communs a deux cycles, et
  93. * doivent apparaitre pour les deux cycles.
  94. FirstInc = ET EntreeNC (NON TermineC) ;
  95. TT = T1 . 'TEMPS' ;
  96. Inc = (DIME TT) - 1 ;
  97. SI (T_inc <EG 1.e-10) ;
  98. Inc = 0 ;
  99. FINSI ;
  100. BOITE_US.'INDICE-STOCKAGE' = Inc ;
  101.  
  102. SI InPhasUs ;
  103. * Cas de l'entree dans un nouveau cycle => Creation de la liste du
  104. * NCNECC + 1 cycle (sauf cas premier increment d'usure)
  105. SI EntreeNC ;
  106. LstIncNC = LECT Inc ;
  107. LstTpsNC = PROG T_inc ;
  108. SI FirstInc;
  109. NumCycle = 1 ;
  110. BOITE_US.'LISTE_INCREMENTS_DU_CYCLE' = TABL ;
  111. BOITE_US.'LISTE_TEMPS_DU_CYCLE' = TABL ;
  112. SINON ;
  113. NumCycle = NCNECC + 1 ;
  114. FINSI;
  115. BOITE_US.'LISTE_INCREMENTS_DU_CYCLE' . NumCycle = LstIncNC ;
  116. BOITE_US.'LISTE_TEMPS_DU_CYCLE' . NumCycle = LstTpsNC ;
  117. FINSI ;
  118.  
  119. * Cas autre que premier increment d'usure : On ajoute le numero d'increment
  120. * a la liste. Ce traitement convient ainsi aussi bien pour les increments
  121. * non extremes au cycle, mais aussi pour les increments de fin
  122. SI (NON FirstInc) ;
  123. LstIncCC = BOITE_US.'LISTE_INCREMENTS_DU_CYCLE' . NCNECC ;
  124. LstTpsCC = BOITE_US.'LISTE_TEMPS_DU_CYCLE' . NCNECC ;
  125. LstIncCC = ET LstIncCC Inc ;
  126. LstTpsCC = ET LstTpsCC T_inc ;
  127. BOITE_US.'LISTE_INCREMENTS_DU_CYCLE' . NCNECC = LstIncCC ;
  128. BOITE_US.'LISTE_TEMPS_DU_CYCLE' . NCNECC = LstTpsCC ;
  129. FINSI ;
  130. FINSI ;
  131.  
  132. * Doit-on appliquer le profil d'usure?
  133. TauxComp = TCNECC / PERIODCY ;
  134.  
  135. SI (BOITE_US.'USURE_CYCLIQUE') ;
  136. * Cas Usure cyclique
  137. SI (InPhasUs ET (TauxComp EGA 1.)) ;
  138. YesCANPU = VRAI ;
  139. SINON ;
  140. YesCANPU = FAUX ;
  141. FINSI ;
  142. SINON ;
  143. * Cas Usure incrementale
  144. SI (InPhasUs ET (T_usu >EG 1.e-10)) ;
  145. YesCANPU = VRAI ;
  146. SINON ;
  147. YesCANPU = FAUX ;
  148. FINSI ;
  149. FINSI ;
  150.  
  151. * Stockage des valeurs
  152. BOITE_US.'NCNECC' = NCNECC ;
  153. BOITE_US.'InPhasUs' = InPhasUs ;
  154. BOITE_US.'YesCANPU' = YesCANPU ;
  155. BOITE_US.'EntreeNC' = EntreeNC ;
  156. BOITE_US.'TermineC' = TermineC ;
  157. *
  158. FINP T1;
  159.  
  160.  
  161.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales