Exemple de routine de calcul CAMIL (Vannes Amil)

Voilà le module de régulation CAMIL utilisé pour les vannes AMIL. Vous pouvez vous inspirer de ce module de régulation pour en écrire d’autres. Les équations programmées proviennent d’un document de M. Goussard ancien ingénieur de Gec-Alsthom.

  1. SUBROUTINE CAMIL(U,Y,PARA)
  2. PARAMETER(NBCM=$NBCM,NBUM=$NBUM,NSING=$NTO,NBIEF=$IB)
  3. PARAMETER(NPOIN=$NPOIN,NSECT=$NSC)
  4. CHARACTER CFIC1*3
  5. DIMENSION Y(*),U(*),PARA(*)
  6. C-----index of the current controller (INURE),
  7. C-----current number of calls of the controller n (INUAP(n))
  8. COMMON/P1/IFIC1,INURE,INUAP(NBCM),IFIC2
  9. COMMON/P2/INU,IFIC3(2),FIC1(3)
  10. COMMON/REGU/IFIC4,CFIC1(NBUM),IFIC5(NBUM,2),NSUG(NBUM)
  11. 1 ,IFIC6(NBUM),NKSU(NBUM),FIC2(NBUM,2)
  12. COMMON/REG2/NUD(NBCM),IFIC7(NBCM),BFIC1(NBCM)
  13. COMMON/NGEO/IFIC8(NBIEF,2),IP1(NSECT),IFIC9(NSECT,2)
  14. COMMON/RGEO/IFIC10,FIC3(NSECT),YGEO(NPOIN),FIC4(NPOIN,3)
  15. 1 ,FIC5(NSECT,3)
  16. COMMON/RSIN/FIC6(NSING),ZS0(NSING),FIC7(NSING,3)
  17. C-----Equations de Goussard
  18. C-----Affectations
  19. C-----PARA(1) Modele (D parmis LISTD) de vanne AMIL
  20. D=PARA(1)
  21. Dec=PARA(2)
  22. R=PARA(3)
  23. HA=PARA(4)
  24. C-----On met un filtre d'ordre 1 : S/E = (1-a)Z-1 / 1-aZ-1 (FILTRE = a)
  25. FILTRE=PARA(5)
  26. C-----ZD : hauteur du radier % cote de fond
  27. ZD=ZS0(NKSU(NUD(INURE)))-YGEO(IP1(NSUG(NUD(INURE))))
  28. C-----Calcul pour cette methode
  29. alfmax=asin(0.45*D/R)-asin(0.2205*D/R)
  30. alfb=HA/R
  31. alfb=min(alfb,1.)
  32. alfb=max(alfb,-1.)
  33. alfb=acos(alfb)
  34. alfc=alfb+alfmax
  35. UMAX=HA-R*cos(alfc)
  36. C-----Y(1) est en tirant d'eau (mode TYS obligatoire sur le fichier .REG)
  37. Z=Y(1)-HA-ZD
  38. C-----Initialisation de Zold au premier appel
  39. IF(INUAP(INURE).EQ.1) PARA(10)=Z
  40. Z=FILTRE*PARA(10)+(1.0-FILTRE)*Z
  41. C-----On stocke Zold filtré dans PARA(10) pour le filtre
  42. PARA(10)=Z
  43. C-----Regular setting
  44. if (Z.LE.-Dec) then
  45. alfa=0
  46. c=0
  47. elseif (z.GE.0.) then
  48. alfa=alfmax
  49. c=1
  50. else
  51. alfa=alfmax-asin(-Z/Dec*sin(alfmax))
  52. c=(1 - (0.45*D/R)**2)**0.5 * sin(alfa)
  53. 1 / (0.2295*D/R) + 1.9608 * (1 - cos(alfa))
  54. endif
  55. C-----Calcul de la commande
  56. U(1)=c*UMAX
  57. C-----Si plusieurs U (SIMO) on duplique la meme ouverture
  58. C-----(interessant dans le cas de plusieurs vannes identiques en parallele
  59. C en mode V par exemple)
  60. IF(INU.GT.1) THEN
  61. DO 10 I=2,INU
  62. U(I)=U(1)
  63. 10 CONTINUE
  64. ENDIF
  65. C-----Calcul du debit
  66. C En réglage classique Zmax=0, en réglage alternatif Zmax=Dec
  67. C Kj=1 + 2.2*zmax/D - 1.6*(zmax/D)**2
  68. C Kq=1 + 2.82*zmax/D - 34.8*(zmax/D)**2 + 164*(zmax/D)**3
  69. C x=Y(1)-z2
  70. C if (x.LT.0) then
  71. C Q=0.
  72. C elseif (x.LE.(0.45*(1 - 0.7211*c**0.3)*Kj*D)) then
  73. C Q=0.7096*c*Kq*D**2.103*x**0.397
  74. C else
  75. C Q=0.3113*c*Kq*Kj**0.397*D**2.5
  76. C endif
  77. END

Télécharger