**TI92P*mainJ:6&t~J::V%̾ROscMonoMvZ() Prgm Oscillatore monomassa a regime Local Vers,Data,Tit *********************** "Oscillatore monomassa a regime"Tit Autori: ing. P.Benetti : prof.A.Carotti "03/04/2005"Data " 1.0.2"Vers *********************** Global OldMode,ValRis Inizio del programma*** Local OldDir getFold()OldDir Try NewFold Temp Else ClrErr SetFold(Temp) EndTry ZLib\ChngMode() SetMode ("Complex Format","Rectangular") NewProb Define DispFreq(Om0,F)=Prgm Dialog Title "Confronto valori" Text "0: "&String(Om0)&" Hz" Text " : "&String(2.**F)&" Hz" EndDlog EndPrgm Local M,K,Csi0,D1,D2,f0,Omega0,Temp Local FcImp,SFCImp,FoMax,FCudm,OutR,OutV Local Q,D1,D2,Freq,CDen,Modu,Fase 0M:0K:0Csi0:0D1:0D2:0f0:0Omega0 0Temp:1FcImp:{"Spostam.","Velocit","Acceleraz."}SFCImp:0FoMax:{"m","m/s","m/s"}FCudm:1OutR:1OutV 0Q:0D1:0D2:0Freq:0CDen {0,0,0,0,0,0}ValRis:{0,0,0}Modu {0,0,0}Fase ZLib\Splash(Tit,Vers,Data) Lbl start If f00 AND Csi00 Then 1/(2*Csi0)Q (1+1/Q^2*(Freq/f0)^2)D1 ((1-(Freq/f0)^2)^2+1/Q^2*(Freq/f0)^2)D2 EndIf Toolbar Title "File" Item "About...",blabout Item "Esci",blexit Title "Car. meccaniche",blcm Title "Forzante" Item "Cinem. alla base",blfc Item "Dinam. su massa",blfs EndTBar Goto Start Lbl blcm {M,K,Csi0}Temp String(M)M String(K)K String(Csi0)Csi0 Dialog Title "Caratteristiche meccaniche" Request "Massa [kg]",M Request "Rigid. [daN/m]",K Request "rapp.smorz 0",Csi0 EndDlog If OK=0 Then Temp[1]M Temp[2]K Temp[3]Csi0 Else Expr(M)M Expr(K)*10K Expr(Csi0)Csi0 (K/M)Omega0 Omega0/(2)f0 EndIf Goto Start Lbl blfc Dialog Title "Forzante cinematica armonica" Text "Applicata alla base" Dropdown "Impongo: ",SFCImp,FCimp EndDlog If ok=0 Then Goto Start EndIf {FoMax,Freq}Temp String(FoMax)FoMax String(Freq)Freq Dialog Title SFCImp[FCImp]&" imposto/a" Request "Valore ["&FCudm[Fcimp]&"]", FoMax Request "Frequenza [Hz]",Freq EndDlog If ok=0 Then Temp[1]FoMax Temp[2]Freq Goto Start Else Expr(FoMax)FoMax Expr(Freq)Freq EndIf Dispfreq(Omega0,Freq) {OutR,OutV}Temp Dialog Title "Selezione output" DropDown "Risposta: ", {"Relativa", "Assoluta", "Entrambe"},OutR DropDown "Valore: ",Augment(SFCImp, {"Tutti"}),OutV EndDlog If ok=0 Then Temp[1]OutR Temp[2]OutV Goto Start EndIf Calcoli 1/(2*Csi0)Q (1+1/Q^2*(Freq/f0)^2)D1 ((1-(Freq/f0)^2)^2+1/Q^2*(Freq/f0)^2)D2 f0^2*D2CDen If FCImp=1 Then Freq^2/CDenValRis[1] 2*Freq^3/CDenValRis[2] 4*^2*Freq^4/CDenValRis[3] D1/D2ValRis[4] 2*Freq*D1/D2ValRis[5] 4*Freq^2*D1/D2ValRis[6] ElseIf FCImp=2 Then Freq/(2*CDen)ValRis[1] Freq^2/CDenValRis[2] 2*Freq^3/CDenValRis[3] D1/(2*Freq*D2)ValRis[4] D1/D2ValRis[5] 2*Freq*D1/D2ValRis[6] ElseIf FCImp=3 Then 1/(4*^2*CDen)ValRis[1] Freq/(2*CDen)ValRis[2] Freq^2/CDenValRis[3] D1/(4*^2*Freq^2*D2)ValRis[4] D1/(2*Freq*D2)ValRis[5] D1/D2ValRis[6] EndIf Moltiplico per il valore della forzante FoMax*ValRisValRis If OutR=1 OR OutR=3 Then If OutV<4 Then Dialog Title "Risposta relativa / forzante" Text SFCImp[OutV]&": "&String( ValRis[OutV])&FCudm[OutV]&"/("&FCudm[FCImp]&")" EndDlog ElseIf OutV=4 Then Dialog Title "Risposta relativa / forzante" Text SFCImp[1]&": "&String(ValRis[1]) &" "&FCudm[1]&"/("&FCudm[FCImp]&")" Text SFCImp[2]&": "&String(ValRis[2]) &" "&FCudm[2]&"/("&FCudm[FCImp]&")" Text SFCImp[3]&": "&String(ValRis[3]) &" "&FCudm[3]&"/("&FCudm[FCImp]&")" EndDlog EndIf EndIf If OutR=2 OR OutR=3 Then If OutV<4 Then Dialog Title "Risposta assoluta / forzante" Text SFCImp[OutV]&": "&String( ValRis[OutV+3])&FCudm[OutV]&"/("&FCudm[FCImp]&")" EndDlog ElseIf OutV=4 Then Dialog Title "Risposta assoluta / forzante" Text SFCImp[1]&": "&String(ValRis[4]) &" "&FCudm[1]&"/("&FCudm[FCImp]&")" Text SFCImp[2]&": "&String(ValRis[5]) &" "&FCudm[2]&"/("&FCudm[FCImp]&")" Text SFCImp[3]&": "&String(ValRis[6]) &" "&FCudm[3]&"/("&FCudm[FCImp]&")" EndDlog EndIf EndIf Goto Start Lbl blfs {FoMax,Freq}Temp String(FoMax/10.)FoMax String(Freq)Freq Dialog Title "Forza imposta" Request "Valore [daN]", FoMax Request "Frequenza [Hz]",Freq EndDlog If ok=0 Then Temp[1]FoMax Temp[2]Freq Goto Start Else Expr(FoMax)*10FoMax Expr(Freq)Freq EndIf DispFreq(Omega0,Freq) OutVTemp Dialog Title "Selezione output" DropDown "Valore: ",Augment(SFCImp, {"Tutti"}),OutV EndDlog If ok=0 Then TempOutV Goto Start EndIf K*(1-(Freq/f0)^2)+/Q*(Freq/f0)CDen 1/CDenValRis[1] *2*Freq/CDenValRis[2] 4*(*Freq)^2/CDenValRis[3] Abs(Left(ValRis,3))Modu 180/*Angle(Left(ValRis,3))Fase Moltiplico per il valore della forzante FoMax*ValRisValRis If OutV<4 Then Dialog Title "Risposta assoluta / forzante" Text SFCImp[OutV]&": "&String(Modu[OutV]) &FCudm[OutV]&"/(N)" Text "Fase: " &String(Fase[OutV])&" " EndDlog ElseIf OutV=4 Then Dialog Title "Risposta assoluta/ forzante" Text SFCImp[1]&": "&String(Modu[1])&" "&FCudm[1]&"/(N)" Text "Fase: "&String(Fase[1])&" " Text SFCImp[2]&": "&String(Modu[2])&" "&FCudm[2]&"/(N)" Text "Fase: "&String(Fase[2])&" " Text SFCImp[3]&": "&String(Modu[3])&" "&FCudm[3]&"/(N)" Text "Fase: "&String(Fase[3])&" " EndDlog EndIf Goto Start Lbl blAbout zlib\about(Vers,Data) Goto Start Lbl blexit Dialog Title "fine programma" Text " " EndDlog If ok=0 Then Goto Start EndIf SetMode(OldMode) DelVar OldMode,ValRis,DispFreq SetFold(#OldDir) DispHome EndPrgm ܁w