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.
SUBROUTINE CAMIL(U,Y,PARA) PARAMETER(NBCM=$NBCM,NBUM=$NBUM,NSING=$NTO,NBIEF=$IB) PARAMETER(NPOIN=$NPOIN,NSECT=$NSC) CHARACTER CFIC1*3 DIMENSION Y(*),U(*),PARA(*) C-----index of the current controller (INURE), C-----current number of calls of the controller n (INUAP(n)) COMMON/P1/IFIC1,INURE,INUAP(NBCM),IFIC2 COMMON/P2/INU,IFIC3(2),FIC1(3) COMMON/REGU/IFIC4,CFIC1(NBUM),IFIC5(NBUM,2),NSUG(NBUM) 1 ,IFIC6(NBUM),NKSU(NBUM),FIC2(NBUM,2) COMMON/REG2/NUD(NBCM),IFIC7(NBCM),BFIC1(NBCM) COMMON/NGEO/IFIC8(NBIEF,2),IP1(NSECT),IFIC9(NSECT,2) COMMON/RGEO/IFIC10,FIC3(NSECT),YGEO(NPOIN),FIC4(NPOIN,3) 1 ,FIC5(NSECT,3) COMMON/RSIN/FIC6(NSING),ZS0(NSING),FIC7(NSING,3) C-----Equations de Goussard C-----Affectations C-----PARA(1) Modele (D parmis LISTD) de vanne AMIL D=PARA(1) Dec=PARA(2) R=PARA(3) HA=PARA(4) C-----On met un filtre d'ordre 1 : S/E = (1-a)Z-1 / 1-aZ-1 (FILTRE = a) FILTRE=PARA(5) C-----ZD : hauteur du radier % cote de fond ZD=ZS0(NKSU(NUD(INURE)))-YGEO(IP1(NSUG(NUD(INURE)))) C-----Calcul pour cette methode alfmax=asin(0.45*D/R)-asin(0.2205*D/R) alfb=HA/R alfb=min(alfb,1.) alfb=max(alfb,-1.) alfb=acos(alfb) alfc=alfb+alfmax UMAX=HA-R*cos(alfc) C-----Y(1) est en tirant d'eau (mode TYS obligatoire sur le fichier .REG) Z=Y(1)-HA-ZD C-----Initialisation de Zold au premier appel IF(INUAP(INURE).EQ.1) PARA(10)=Z Z=FILTRE*PARA(10)+(1.0-FILTRE)*Z C-----On stocke Zold filtré dans PARA(10) pour le filtre PARA(10)=Z C-----Regular setting if (Z.LE.-Dec) then alfa=0 c=0 elseif (z.GE.0.) then alfa=alfmax c=1 else alfa=alfmax-asin(-Z/Dec*sin(alfmax)) c=(1 - (0.45*D/R)**2)**0.5 * sin(alfa) 1 / (0.2295*D/R) + 1.9608 * (1 - cos(alfa)) endif C-----Calcul de la commande U(1)=c*UMAX C-----Si plusieurs U (SIMO) on duplique la meme ouverture C-----(interessant dans le cas de plusieurs vannes identiques en parallele C en mode V par exemple) IF(INU.GT.1) THEN DO 10 I=2,INU U(I)=U(1) 10 CONTINUE ENDIF C-----Calcul du debit C En réglage classique Zmax=0, en réglage alternatif Zmax=Dec C Kj=1 + 2.2*zmax/D - 1.6*(zmax/D)**2 C Kq=1 + 2.82*zmax/D - 34.8*(zmax/D)**2 + 164*(zmax/D)**3 C x=Y(1)-z2 C if (x.LT.0) then C Q=0. C elseif (x.LE.(0.45*(1 - 0.7211*c**0.3)*Kj*D)) then C Q=0.7096*c*Kq*D**2.103*x**0.397 C else C Q=0.3113*c*Kq*Kj**0.397*D**2.5 C endif END