Poniższy algorytm został przedstawiony w odcinku nr 207:
--> kill(all)$ Obliczenia sprężyny naciskowej - schemat obliczeniowy #2 1 Wstęp Zadanie: Oblicz parametry sprężyny naciskowej, znając wymiary rzeczywistej sprężyny 2 Dane: --> L:[ /*1, Średnica drutu [mm]:*/ 2, /*2, Średnica zewnętrzna [mm]:*/ 17.6, /*3, Długość swobodna [mm]:*/ 46, /*4, Liczba zwojów [-]:*/ 8.5, /*5, Liczba zwojów nieczynnych [-]:*/ 2, /*6, Metoda zakończenia zwojów [-]:*/ -0.5, /*7, Moduł Kirchhoffa [GPa]:*/ 81 ]; 3 Funkcje --> LiczWskaznikSprezyny(d, D):= ( (D-d)/d )$ --> LiczWspolczynnikPoprawkowy(w):= ( 1+(5/4)*(1/w)+(7/8)*(1/w)^2+(1/w)^3 )$ --> LiczZaleznoscWskaznikaISrednicyDrutu(w, d):= /*Poniższa funkcja prawdziwa tylko dla w: <6; 10>*/ ( if d<0.8 then x:0.03*w+0.04 else x:0.03*w-0.04 )$ --> LiczZwojeCzynne(z, z_n):= ( z-z_n )$ --> LiczSumePrzeswitowMiedzyzwojowych(d, z_c, x):= ( x*z_c*d )$ --> LiczDlugoscScisnietejSprezyny(d, z_n, z_c, x, p):= ( d*z_n+(d*x+d)*z_c+d*p )$ --> LiczDlugoscZablokowanejSprezyny(d, z, p):= ( d*(z+p) )$ --> LiczStrzalkeUgiecia(L_0, l_n):= ( L_0-l_n )$ --> LiczSileRoboczaSprezyny(d, D, f_n, z_c, G):= ( G*10^3*d^4*f_n/(8*D^3*z_c) )$ --> LiczSztywnosc(F, f_n):= ( F/f_n )$ --> MyRound(val, gain):= ( float(round(val*10^gain)/10^gain) )$ --> DrukujWyniki(results):= ( for i:1 thru length(results) step 1 do print(results[i]) )$ 4 Obliczenia --> ( tolerancjaSily:10, /*całkowita*/ D:L[2]-L[1], w:LiczWskaznikSprezyny(L[1], D), k:LiczWspolczynnikPoprawkowy(w), x:LiczZaleznoscWskaznikaISrednicyDrutu(w, L[1]), z_c:LiczZwojeCzynne(L[4], L[5]), a:LiczSumePrzeswitowMiedzyzwojowych(L[1], z_c, x), l_n:LiczDlugoscScisnietejSprezyny(L[1], L[5], z_c, x, L[6]), l_bl:LiczDlugoscZablokowanejSprezyny(L[1], L[4], L[6]), f_n:LiczStrzalkeUgiecia(L[3], l_n), F:LiczSileRoboczaSprezyny(L[1], D, f_n, z_c, L[7]), F_min:F-(F*0.5*tolerancjaSily/100), F_max:F+(F*0.5*tolerancjaSily/100), F:[F_min, F, F_max], c:LiczSztywnosc(F, f_n) )$; --> PrintList:[ concat("Średnica drutu d = ", L[1], " mm"), concat("Średnica podziałowa sprężyny D = ", D, " mm"), concat("Średnica wewnętrzna sprężyny Dw = ", MyRound(D-L[1], 2), " mm"), concat("Średnica zewnętrzna sprężyny Dz = ", MyRound(D+L[1], 2), " mm"), concat("Wskaźnik sprężyny w = ", MyRound(w, 2)), concat("Liczba zwojów czynnych z_c = ", z_c), concat("Całkowita liczba zwojów z = ", L[4]), concat("Długość sprężyny w stanie swobodnym L_0 = ", MyRound(L[3], 2), " mm"), concat("Długość sprężyny w stanie ściśniętym l_n = ", MyRound(l_n, 2), " mm"), concat("Ugięcie sprężyny pod działaniem siły F = ", MyRound(F[2], 2), " N wynosi f_n = ", MyRound(f_n, 2), " mm"), concat("Zakres siły roboczej uwzględniając tolerancję siły, F = ", MyRound(F_min, 2), " N - ", MyRound(F_max, 2), " N, c = ", MyRound(c[2], 2), " [N/mm]"), concat("Sztywność sprężyny c = ", MyRound(c[1], 2), " N/mm - ", MyRound(c[3], 2), " N/mm") ]$ 5 Wyniki --> DrukujWyniki(PrintList)$