···Pratique'P4ti~gog{qite
-AIDE INFORMATIQUE A LA VERIFICATION
DE LA DUREE DE VIE DES ROULEMENTS
A BILLES A CONTACT OBLIQUE
OU A ROULEAUX CONIQUES
Le Programme qui est donné dans les pages suivantes, et qui est écrit en Turbo-Pascal 6, permet de vérifier la durée de vie des roulements réalisant une liaison pivot à hyper-statisme axial : deux roulements à un rang de rouleaux coniques, ou à un rang de billes à contact oblique montés en "X" ou en "0".
En classe de Mathématique Spéciale Technologique T, lors d'un T.P de 2 heures, l'élève doit compléter certaines procédures et tester la validité des différents chemins du programme à partir de l'organigramme fourni. Enfin, quand il a réalisé le programme complet il peut vérifier la durée de vie de quelques montages proposés.
La trame du programme permet à l'élève d'analyser et d'apprécier quelques procédures intéressantes : par exemple ...
=>En Turbo-Pascal6, l'instruction READ oblige à une entrée numérique au clavier. Lors de l'utilisation de petits logiciels, le nombre de données à entrer peut être important alors que pour des tests, on a souvent besoin de ne chan-ger qu'une seule valeur. Turbo-Pascal 6 oblige à répéter l'entrée de toutes les données à chaque fois, ce qui est long est fastidieux. La procédure ENTRE remédie à cet inconvénient en permettant de conserver la valeur déjà stockée, qu'il suffit de valider par la touche entrée ; c'pst beaucoup plus rapide !
Michel BANGUET est professeur au lycée Baggio à Lille
Par Michel BANGUET
En outre, la procédure ENTRE protège contre les erreurs de frappe et évite ainsi une sortie inopinée du programme, en perdant toutes les valeurs déjà rentrées.L'initiation à l'utilisation de fenêtres apparaît dans les procédures AFFICHINF (écriture des messages dans une fenêtre infé-rieure), et AFFICHSUP (entrées ou résultats dans la fenêtre supérieure indépendante).
=> La procédure INIT permet simple-ment d'avoir des valeurs initiales stockées, ce qui permet de vérifier rapidement que le programme <<tourne» lors de sa mise au point.
=> La procédure ENTREEDONNEES montre l'intérêt de rappeler l'ancienne valeur stockée (avec formatage de l'écriture : exemple Ka:8:0) avant d'appeler la procédure EN1RE. Un message dans la fenêtre inférieure précise alors : «Validez ou non puis entrez nouvelle valeur>>.
=> Le programme principal par son REPEAT ... UNTIL montre l'intérêt d'avoir un programme qui tourne « en boucle » ... ; pas besoin de le relancer à chaque fois par un RUN ... qui perdrait les données stockées. En outre, on pourra noter l'appel conditionnel de procé-dures utilisant des IF THEN ... ELSE
{ ROULCONI.PAS }
{
}
PROGRAM ROULCONI; {=version du 12/09/1993 }
{
}
{CALCUL D'UN MONTAGE HYPERSTATIQUE SUR 2 ROULEMENTS}
{ à 1 rang de rouleaux coniques ou 1 rang de billes à contact oblique } Uses Crt;
VAR
Fr1,Fr2,Ka, Y1, Y2,n,X1,X2,e1,e2,P1 ,P2,C1,C2, A1,A2,Kalim,Lh1,Lh2,m,Fa1,Fa2j :real; i,code :integer; choix,touche :char; titre,suite :string[80]; OK :boolean; chain :string; {---} PROCEDURE ENTRE (var entree:real);
begin {procédure permettant de conserver les valeurs déjà entrées en } {appuyant sur "entrée"; toute autre touche permet de modifier } { la valeur stockée - en outre, une entrée }
{différente d'un nombre n'est pas acceptée }
code:=O; {initialisation du code à zéro pour accepter } { directement la première donnée déjà stockée }
REPEAT { à répéter tant que les touches ne correspondent ni à la }
{000000} {touche [entrée] ni à une valeur numérique }
chain:=";
touche:=readkey; { arrête le programme et lit la touche frappée } { sans l'afficher à l'écran }
if(touche <> chr(13)) then {si appui sur touche<> [entrée] alors } begin
while touche<>chr(l3) do {tant qu'on n'appuie pas sur [entrée] } begin
write(touche); {écrit la touche frappée à l'écran }
chain:=chain+touche; { on construit une chaine de caractères } touche:=readkey; { regroupant les touches frappées }
end; { successivement }
val( chain,entree,code ); { convertit la chaine en nombre stocké } {dans la variable "entree" et renvoie }
{ le code 0 si celle-ci est bien un }
{ nombre correct }
aptep-info N° 70 - décembre 1996
Pratiq#l~pétJ4gQiiquè
-. ·- •·· .' . . ...
if code <>0 then begin
textcolor( 4 ); {rouge} { avertissement si } writeln(' ... Entrez un N 0 M BR E ... '); { "entree" n'est pas}
textcolor(14);{jaune} {un nombre }
end; end;
if (touche= chr(l3)) then writeln; { si appui sur "entrée" alors } { sautez une ligne pour écrire l'entrée suivante} UNTIL code= 0; . {sortie de la boucle repeat..until}
c
0000} {si on a bien écrit un nombre }
end;
{---} PROCEDURE EFFACEINF; {effacement fenêtre inférieure}
begin
window(1,24,80,25);clrscr; end;
{---} PROCEDURE AFFICBINF; {création d'une fenêtre inférieure }
begin { 2 lignes en bas de l'écran pour affichage des messages } window(1,24,80,25);
end;
{---} PROCEDURE EFFACESUP; {effacement fenêtre supérieure}
begin
window(l, 1,80 ,23);clrscr; end;
{---~---} PROCEDURE AFFICHSUP; { création d'une fenêtre supérieure }
begin
window(1,1,80,23); {23 premières lignes} gotoxy(l,l);
end;
{---} PROCEDURE INIT(var Ka,Frl,Fr2,Cl,C2,Xl,X2,Yl,Y2,el,e2,n:real;var I:integer);
begin
Ka:=l ;Frl:=l ;Fr2:=1 ;Cl :=1 ;C2:=1 ;Xl :=1 ;X2:=1; YI :=1; Y2:=1;el:=l;e2:=1;n:=l;j:=l;
end;
-;~~..o.~C.::._~c•=·~-~~ ;". :1.: "r.;\:.." .. 1.::_.;::::,..~~~-',~~-. ~ -·--::.:. .. ~,...;~.<~;:~,:.:.~ .:l~>1:·~~;-:
---IPt.~qJie;pei.fif#i!ll!lt'll!e·'
"'';,:;:' .. ,:-..·
PROCEDURE ENTREEDONNEES(var Ka,Frl,Fr2,Cl,C2,Xl,X2,Yl,Y2,
el,e2,n,m,Al,A2,Kalim:real;var I:integer); begin
EFF ACEINF;AFFICHINF;textcolor(9);
write(' [validez] ou [N]on puis entrez nouvelle valeur'); EFF ACESUP;AFFICHSUP;textcolor(l4 );
writeln(titre); writeln( suite);
writeln('Arbre ou moyeu isolé');
writeln('Roulement 1 tel que Fal de même sens que Ka d"où Fa2 = Fal + Ka');
writeln(' ');
write('effort axial extérieur en N Ka= ',Ka:8:0,' N ');ENTRE(Ka); write('effort radial!roul.l en N Frl = ',Frl :8:0,' N ');ENTRE(Frl ); write('effort radial/rou1.2 en N Fr2 = ',Fr2:8:0,' N ');ENTRE(Fr2); write('charge de base dynamique en N Cl= ',Cl:lO:O,' N ');ENTRE( Cl); write('charge de base dynamique en N C2 = ',C2:10:0,' N ');ENTRE(C2); write('coefficient de charge radiale Xl =',Xl :8:3,' ');ENTRE(Xl ); write('coefficient de charge radiale X2 = ',X2:8:3,' ');ENTRE(X2); write('coefficient de charge axiale YI= ',Y1:8:3,' ');ENTRE(Yl); write('coefficient de charge axiale Y2 = ',Y2:8:3,' ');ENTRE(Y2); write('limite Fa/Fr: el= ',el:6:3,' ');ENTRE( el);
write('limite Fa/Fr: e2 = ',e2:6:3,' ');ENTRE(e2);
write('vitesse de rotation en tr/min n = ',n:5:0,' tr/min ');ENTRE(n); repeat
write('entrer <1> si rouleaux coniques ou <2> si billes à contact oblique:< 'j:l:O,' >'); ENTRE(j); until (j=l) or (j=2); ifj=l then m:=l0/3; ifj=2 then m:=3; Al:=Frl/2Nl;A2:=Fr2/2N2;Kalim:=A2-Al; end; {---}
PROCEDURE CALCULAl(var e2,Fal,Al,Fa2,Ka,Pl,Frl,P2,X2,Fr2,Y2:real);
begin
Fal:=Al;Fa2:=Al+Ka;Pl:=Frl;
if (Fa2/Fr2)<=e2 then P2:=Fr2 else P2:=((X2*Fr2)+(Y2*Fa2)); end;
{---}
PROCEDURE CALCULA2(var el,Fa2,A2,Fal,Ka,P2,Fr2,Pl,Xl,Frl,Yl:real);
begin
Fa2:=A2;Fal :=A2-Ka;P2:=Fr2;
if(Fal/Frl)<=el then Pl :=Frl else Pl:=((Xl *Frl)+(Yl *Fal)); end;
{---} aptep-info N° 70 - décembre 1996
- ··; ., ... ~ ~ .. '". .., ,_ .. ' --· .
•Pr~quepédagf!_gique
PROCEDURE CALCULLh(var Lhl,Cl,Pl,n,Lh2,C2,P2:real); begin
Lhl :=exp(m*ln(Cl/Pl )+ln(le6/60/n)); Lh2 :=exp( m *ln( C2/P2 )+ln( 1 e6/60/n) ); end;
{---} PROCEDURE AFFICHRESULT(var el,e2,Frl,Fal,Al,Xl,Yl,Pl,Cl,Lhl,
Fr2,Fa2,A2,X2, Y2,P2, C2,Lh2 :real;var I:integer ); begin
clrscr;writeln(' RE S U L TA T S'); writeln( titre);
ifj=l then writeln(' à 1 rang de rouleaux coniques');
if j=2 then writeln(' à 1 rang de billes à contact oblique');writeln;
writeln('Roulement 1 tel que Fal de même sens que Ka= ',Ka:6:0,' N soit: Fa2 = Fal + Ka'); writeln;
writeln(' Vitesse de rotation relative des bagues= ',n:5:0,' tr/min');
writeln(' ');
writeln('Frl = ',Frl :6:0,' N Fal = ',Fal:6:0,' N < Fal mini= ',A1:6:0,' N >'); writeln(Xl = ',X1:5:2,' YI= ',Y1:5:2,' el =',e1:5:2);
writeln('Pl =',Pl :6:0,' N et Cl = ',Cl:8:0,' N); writeln;
ifFal =Al then begin
writeln('Roulement 1 <PORTEUR> "voit le jeu axial": durée ',Lh1:12:0,' heures');
writeln(' ');
end;
ifFal <>Al then begin
writeln('Roulement 1 < à priori :MIXTE> fonctionne "calé": durée ',Lhl: 12:0,' heures');
writeln(' ');
end;
writeln('Fr2 = ',Fr2:6:0,' N Fa2 = ',Fa2:6:0,' N < Fa2 mini= ',A2:6:0,' N >'); writeln;
writeln(X2 = ',X2:5:2,' Y2 = ',Y2:5:2,' e2 =',e2:5:2); writeln;
writeln('P2 = ',P2:6:0,' N et C2 = ',C2:8:0,' N'); writeln;
ifFa2=A2 then begin
writeln(Roulement 2 <PORTEUR> "voit le jeu axial": durée ',Lh2:12:0,' heures');
writeln(' ');
ifFa2<>A2 then begin
writeln('Roulement 2 <à priori MIXTE> fonctionne "calé": durée ',Lh2:12:0,' heures');
w r i t e l n ( ' ' = = = = = = = = = = = = = = = = = = = = = = = = = = = ' ) ; end; end; {---~-} { programme principal } BEGIN INIT(Ka,Frl,Fr2,Cl,C2,Xl,X2,Yl,Y2,el,e2,n,I); REPEAT clrscr;textbackground(O ); AFFICHSUP;textcolor(14);
titre:='V érification de durée d"un montage hyperstatique sur 2 roulements'; suite:='< rouleaux coniques ou billes à contact oblique 1 rang>';
ENTREEDONNEES(Ka,Frl,Fr2,Cl,C2,Xl,X2,Y1,Y2,el,e2,n,m,Al,A2,Kalim,I); if Al>A2 then CALCULAI(e2,Fa1,A1,Fa2,Ka,P1,Fr1,P2,X2,Fr2,Y2)
else ifKa<Kalim then CALCULA2(el,Fa2,A2,Fa1;Ka,P2,Fr2,P1,X1,Fr1,Y1) else CALCULA1(e2,Fa1,A1,Fa2,Ka,P1,Fr1,P2,X2,Fr2,Y2);
CALCULLh(Lh1,Cl,Pl,n,Lh2,C2,P2);
AFFICHRESULT(e1,e2,Fr1,Fa1,A1,X1,Y1,P1,C1,Lh1,Fr2,Fa2,A2,X2,Y2,P2,C2,Lh2,I); EFF ACEINF;AFFICHINF;
gotox.y(30,2);textcolor(9);
writeln('voulez-vous continuer < 0/N > ?');choix:=readkey;
UNTIL ( choix='N')or( choix='n');
END.
{---}
LA COMPRESSION DES DONNEES
(suite de la page 17)
Pour finir, il est possible de dire que les programmes ARJ et PKZIP se valent : le premier est peut-être un peu moins performant en taux de compression (à un fraction de% !)
mais le code ajouté pour rendre une archive auto-extractible est moins important et au final une archive de ce type sera plus compacte qu'avec PKZIP.
Enfin, il faut savoir que les performances des archiveurs sont mesurées par 3 paramètres:
- le ratio de compression : rapport taille des
fichiers originaux 1 taille des fichiers compressés.
- le taux de réduction : l'inverse du ratio. - le gain : 1 moins la réduction
Pour les collègues intéressés , envoyer une disquette 3"5 formatée, avec l'emballage pré-affranchi pour le retour à :
GUILHEM André
18, rue de l'Hôtel de Ville
88430 CORCIEUX