Výpočet parametrov predpätej skrutky podľa ČSN 014010

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategórie: Programy v Pascalu
skrutka.pngProgram: Skrutka.pas
Soubor exe: Skrutka.exe
Soubor ubuntu: Skrutka
Potřebné: Tabulky.pas

Tak to už ani nieje pravda že tento program prežil rok 2000. Vznikol ešte na strednej škole. V 1990 som ho naprogramoval so svojím najlepším kamarátom dnes už Ing. Richardom Helmeczym. Program vypočíta rozmery predpätej skrutky. Dnes už to dokáže každý CADovský systém zameraný na strojné projektovanie, ale toto Vám vypíše každý krok výpočtu a to je teda pomoc. Sám viem že zadanie mi trvalo 3 dni len kvôli tomu, že na konci výpočtu som zistil chybu a musel som začať znova. Najzaujímavejšie je romantické chápanie odčítavanie hodnôt z grafov.
{ TABULKY.PAS               Copyright (c) TrSek alias Zdeno Sekerak }
{ Kniznica pre SKRUTKA.PAS a TLAKSPOJ.PAS blizsie informacie        }
{ v tychto suboroch. Data z STK 2 a Strojnickych tabuliek.          }
{                                                                   }
{ Datum:04.08.1992                             http://www.trsek.com }
 
unit tabulky;
 
interface
 function obr90(lk,d,Da,m:integer):real;
 procedure obr107(da,db,dt:real;var c2a,c2b:real);
{              VYMENOVANE TABULKY V UNITE               }
      {Metricke zavity ,Vyber pre skrutky a matice
       STK  str.151  CSN 01 4010 "MetrickeZavity"}
      {Pozadovana bezpecnost
       STK 2  str 90 "tab9"}
      {Predbezna volba priemeru skrutky
       STK 2  str.92  tab.11  "tab11"}
      {Mechanicke vlastnosti ocelovych skrutiek a matic
       STK 2  str.92   tab.10 "tab10"}
      {Smerne hodnoty sucinitela utahovania Ku
       STK 2  str.94  tab.13  "tab13"}
      {Maximalne dovolene sily predpatia a utahovacie momenty pre
       normalizovane skrutky
       STK 2   str. 96   tab.14  "tab14"}
      {Smerne hodnoty unavovej pevnosti skrutkovych spojov
       sigma a MPa
       STK 2  str.97  tab.15  "tab15"}
      {Smerne hodnoty dovoleneho tlaku Pd MPa pri stlaceni
       suciastok z r“zneho materialu
       STK 2  str.98  tab.16  "tab16"}
      {Diagram na urcenie siloveho pomeru @(fi)c
       STK 2  str.93   obr.88  "obr88"}
      {Stupne presnosti ozubenych kolies
       STT  str.334  tab.1  "ktab1"}
      {Prevadzkovy sucinitel Ki
       STT  str.335  tab.2  "ktab2"}
      {Sucinitele vnutornych dynamickych sil Kv
       STT  str.335  tab.3  "ktab3"}
      {Casova pevnost materialov v ohybe ëfc a v dotyku ëhc
       STT  str.336-337  tab.4  "ktab4"}
      {Pruzna poddajnost spojovanych casti c2
       STK 2   str.95  obr.90  "function obr90"}
      {Hodnoty konstant pruznosti  C2a,C2b
       STK 2  str.112   obr.107}
      {Tolerancie ulozeni s presahom
       STT str. 122-128  "ulozenia"}
      {Tolerancie ulozeni s presahom u ulozeni H
       STT str. 128  "ulozeniah"}
 
const
 
      {Metricke zavity ,Vyber pre skrutky a matice
       STK  str.151  CSN 01 4010 "MetrickeZavity"}
      MetrickeZavity:array[1..11,1..4] of real=
                    ((4,3.545,3.141,7),(5,4.48,4.019,8),
                     (6,5.35,4.773,10),(8,7.188,6.466,14),
                     (10,9.026,8.16,17),(12,10.863,9.853,19),
                     (14,12.701,11.546,22),(16,14.701,11.546,24),
                     (20,18.376,16.933,30),(24,22.051,20.319,36),
                     (30,27.727,25.706,46));
 
      {Pozadovana bezpecnost
      STK 2  str 90 "tab9"}
      tab9:array[1..2,1..9] of real=
           ((4,5,6,8,10,12,16,30,30),(2.2,1.9,1.7,1.5,1.4,1.3,1.2,1.2,1.2));
 
 
      {Predbezna volba priemeru skrutky
      STK 2  str.92  tab.11  "tab11"}
      tab11:array[1..12,1..10] of real=
          ((1.6,1,0.32,2.5,6,5,4,4,4,4),
           (2.5,1.6,0.5,4,8,6,5,5,4,4),
           (4,2.5,0.8,6.3,10,8,6,6,5,5),
           (6.3,4,1.25,10,12,10,8,8,6,5),
           (10,6.3,2,16,16,12,10,8,8,8),
           (16,10,3.15,25,20,16,12,10,10,8),
           (25,16,5,40,24,20,14,14,12,10),
           (40,25,8,63,27,24,18,16,14,12),
           (63,40,12.5,100,33,30,22,20,16,16),
           (100,63,20,160,30,30,27,24,20,20),
           (160,100,31.5,250,30,30,30,30,27,24),
           (250,160,50,400,30,30,30,30,30,30));
 
      {Mechanicke vlastnosti ocelovych skrutiek a matic
      STK 2  str.92   tab.10 "tab10"}
      tab10:array[1..3,1..10] of real=
           ((0,1,2,3,4,5,6,7,8,9),
            (350,500,500,600,800,800,1000,1000,1000,1200),
            (210,300,400,480,650,640,800,900,900,1080));
 
      {Smerne hodnoty sucinitela utahovania Ku
      STK 2  str.94  tab.13  "tab13"}
      tab13:array[1..3] of real=(3,1.4,2);
 
      {Maximalne dovolene sily predpatia a utahovacie momenty pre
      normalizovane skrutky
      STK 2   str. 96   tab.14  "tab14"}
      Tab14:array[1..14,1..13] of real=
            ((4,1.3,1.8,2.4,3.9,5.45,6.55,1,1.35,1.8,2.9,4.1,4.9),
             (5,2.1,3,3.95,6.35,8.95,10.7,2,2.8,3.8,6,8.5,10),
             (6,3,4.2,5.6,9,12.6,15.1,3.3,4.7,6.3,10,14,17),
             (8,5.4,7.7,10.3,16.5,23.2,27.9,8.2,12,16,25,35,41),
             (10,8.6,12.3,16.4,26.2,36.9,44.3,16,23,31,42,69,83),
             (12,12.6,18,23.9,38.3,54,64.5,28,40,54,86,120,145),
             (14,17.2,24.6,32.8,52.5,74,88.5,44,63,84,135,190,230),
             (16,24,34.2,45.6,73,102,123,69,98,131,210,295,355),
             (18,29,41,55,88,124,148,95,136,181,290,405,485),
             (20,37,53,71,114,160,192,134,192,256,410,580,690),
             (22,46,66,88,141,199,239,180,258,345,550,780,930),
             (24,54,77,102,164,230,276,233,335,445,710,1000,1200),
             (27,71,101,134,215,302,363,345,490,655,1050,1500,1800),
             (30,85,123,164,262,368,442,475,680,905,1450,2000,2400));
 
         {Smerne hodnoty unavovej pevnosti skrutkovych spojov
          sigma a MPa
          STK 2  str.97  tab.15  "tab15"}
          TAB15:array[1..6,1..5] of real=
                ((4,4,40,34,27),(5,4,45,38,30),(6,5,55,45,35),
                 (8,6,60,50,40),(10,8,70,60,50),(12,8,70,60,50));
 
         {pomocne, doplnil trsek}
          pomoc:array[0..9] of integer=
             (1,2,3,3,4,4,5,5,6,6);
 
         {Smerne hodnoty dovoleneho tlaku Pd MPa pri stlaceni
          suciastok z r“zneho materialu
          STK 2  str.98  tab.16  "tab16"}
          tab16:array[1..4,1..2] of real=
               ((180,120),(750,500),(500,330),(900,600));
 
         {Diagram na urcenie siloveho pomeru @(fi)c
          STK 2  str.93   obr.88  "obr88"}
          obr88:array[1..3,1..11,1..6] of real=
               (((0.75,0.63,0.50,0.37,0.51,0.64),
                 (0.75,0.63,0.50,0.37,0.51,0.64),
                 (0.75,0.63,0.50,0.37,0.51,0.64),
                 (0.75,0.63,0.50,0.37,0.51,0.64),
                 (0.75,0.63,0.50,0.37,0.51,0.64),
                 (0.75,0.63,0.50,0.37,0.51,0.64),
                 (0.75,0.63,0.50,0.37,0.51,0.64),
                 (0.75,0.63,0.50,0.37,0.51,0.64),
                 (0.75,0.63,0.50,0.37,0.51,0.64),
                 (0.75,0.63,0.50,0.37,0.51,0.64),
                 (0.75,0.63,0.50,0.37,0.51,0.64)),
                 ((0.75,0.63,0.50,0.37,0.51,0.64),
                 (0.69,0.57,0.42,0.27,0.42,0.55),
                 (0.62,0.50,0.37,0.24,0.38,0.49),
                 (0.59,0.45,0.30,0.21,0.32,0.45),
                 (0.54,0.395,0.275,0.17,0.27,0.4),
                 (0.5,0.37,0.25,0.15,0.25,0.35),
                 (0.45,0.32,0.22,0.13,0.22,0.31),
                 (0.42,0.29,0.195,0.118,0.19,0.28),
                 (0.38,0.26,0.175,0.105,0.175,0.26),
                 (0.36,0.24,0.158,0.09,0.155,0.24),
                 (0.33,0.22,0.145,0.085,0.14,0.22)),
                 ((0.75,0.63,0.50,0.37,0.51,0.64),
                 (0.62,0.49,0.35,0.23,0.35,0.49),
                 (0.53,0.39,0.27,0.17,0.28,0.39),
                 (0.48,0.35,0.24,0.14,0.24,0.35),
                 (0.42,0.29,0.19,0.12,0.19,0.28),
                 (0.37,0.25,0.16,0.1,0.16,0.25),
                 (0.34,0.23,0.14,0.08,0.14,0.23),
                 (0.29,0.19,0.12,0.07,0.12,0.19),
                 (0.26,0.17,0.11,0.06,0.11,0.16),
                 (0.23,0.15,0.09,0.055,0.09,0.14),
                 (0.22,0.14,0.08,0.047,0.08,0.13)));
 
         {Stupne presnosti ozubenych kolies
          STT  str.334  tab.1  "ktab1"}
          ktab1:array[1..3,1..12] of real=
               ((1,2,3,4,5,6,7,8,9,10,11,12),
                (0,0,0,12,12,4,4,0.8,0.8,0,0,0),
                (0,0,0,60,60,12,12,4,4,0.8,0.8,0.8));
 
         {Prevadzkovy sucinitel Ki
          STT  str.335  tab.2  "ktab2"}
          ktab2:array[1..3,1..3] of real=
               ((1,1.25,1.75),(1.25,1.5,2),(1.5,1.75,2.25));
 
         {Sucinitele vnutornych dynamickych sil Kv
          STT  str.335  tab.3  "ktab3"}
          ktab3:array[1..2,1..4,1..2,1..5] of real=
               ((((0,1,1.2,1.3,1.45),(0,1,1.15,1.25,1.35)),
                 ((1,1.15,1.35,1.45,0),(1,1.15,1.25,1.35,0)),
                 ((1,1.25,1.45,0,0),(1,1.2,1.35,0,0)),
                 ((1.1,1.45,0,0,0),(1.1,1.35,0,0,0))),
                (((0,1,1,1.1,1.2),(0,1,1,1,1.1)),
                 ((1,1,1,1.2,1.3),(1,1,1,1.1,1.1)),
                 ((1,1.1,1.3,1.4,0),(1,1.1,1.2,1.3,0)),
                 ((1,1.3,1.4,0,0),(1,1.2,1.3,0,0))));
 
 
 
         {Casova pevnost materialov v ohybe ëfc a v dotyku ëhc
          STT  str.336-337  tab.4  "ktab4"}
          ktab4:array[1..44,1..4] of real=
               ((422420,200,40,370),(422425,250,45,380),
                (422430,300,50,390),(422550,500,120,420),
                (422304,420,135,380),(422306,600,135,470),
                (422307,700,135,500),(422650,520,145,500),
                (422460,600,155,530),(422750,650,165,560),
                (422719,700,170,570),(422719,750,175,590),
                (422750,800,185,620),(11500,500,140,490),
                (11523,520,145,500),(11600,600,155,530),
                (11700,700,170,570),(12050,550,150,510),
                (12050,650,165,560),(12061,670,175,590),
                (12061,750,185,620),(13240,800,185,620),
                (14140,900,200,670),(15241,950,210,690),
                (16440,900,200,670),(422660,600,100,1220),
                (422719,700,110,1240),(11600,600,100,1220),
                (11700,700,110,1240),(12051,650,110,1240),
                (14140,800,125,1260),(15241,1000,140,1300),
                (12010,450,185,1320),(12020,500,195,1340),
                (14220,800,270,1460),(14223,900,295,1500),
                (16220,900,295,1500),(16420,950,305,1520),
                (15230,800,270,1250),(15330,800,270,1250),
                (14140,1600,270,1500),(12020,400,160,600),
                (12060,600,185,750),(14140,800,210,900));
 
         {Vybrane mechanicke vlastnosti materialov
          STK 2  str.114  tab.19}
          tab19:array[1..4,1..8] of real=
                ((205000,95000,125000,80000,110000,70000,40500,90000),
                 (0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.25),
                 (11,10,16,18,16,23,26,10),
                 (-8.5,-8,-14,-16,-14,-18,-21,-8));
 
         {Sucinitel zovretia
          STK 2  str.113  tab.18}
          tab18:array[1..5,1..3] of real=
                ((0.13,0.35,0.09),(0.14,0.35,0.09),(0.08,0.15,0.05),
                 (0.055,0.15,0.05),(0,0,0.055));
 
         {Tolerancie ulozeni s presahom
          STT str. 122-128  "ulozenia"}
          ulozenia:array[1..15,1..26] of real=
          ((40,12,53,17,64,20,93,27,121,55,175,97,256,164,364,256,428,
           302,712,568,871,709,1089,911,1347,1153),
          (34,6,46,10,56,12,72,18,97,31,136,58,196,100,264,156,373,
           247,497,353,606,444,749,571,917,723),
          (32,4,41,5,50,6,60,6,81,15,109,31,148,56,198,90,27,148,356,
           212,431,269,524,336,637,443),
          (28,4,35,5,43,6,51,6,62,36,95,31,132,56,179,90,250,147,330,
           212,402,269,492,346,603,443),
          (24,0,31,1,38,1,46,1,56,2,68,4,83,7,106,17,132,37,168,58,
           210,77,247,101,295,135),
          (0,0,0,0,0,0,66,21,88,34,120,56,166,90,226,137,315,212,
           624,294,506,373,619,473,757,597),
          (0,0,0,0,0,0,0,0,108,43,153,89,220,144,308,219,443,340,492,
           474,731,702,909,763,1097,937),
          (24,0,33,3,41,4,50,5,61,7,73,9,89,13,108,19,131,28,156,38,
           179,46,203,57,229,69),
          (28,8,35,11,43,13,51,15,62,27,85,35,117,57,159,89,210,150,
           282,218,367,263,447,333,553,427),
          (0,0,0,0,0,0,0,0,54,20,70,29,94,45,126,69,171,106,225,150,
           272,188,330,237,400,297),
          (24,4,31,7,38,8,46,10,56,14,58,18,83,23,106,36,132,60,
           168,212,210,263,247,333,295,428),
          (24,4,31,7,38,8,46,10,56,14,68,18,83,23,106,36,132,60,168,
           212,210,263,247,333,295,427),
          (16,0,23,3,28,4,34,5,41,7,50,9,60,11,73,16,88,25,106,34,
           126,42,144,51,166,63),
          (20,12,27,11,32,14,39,17,48,22,59,27,78,40,101,57,133,83,
           169,111,202,138,244,172,292,212),
          (16,6,23,10,28,13,34,15,41,19,42,10,62,30,76,39,93,50,113,
           64,130,75,150,89,172,105));
 
         {Tolerancie ulozeni s presahom u ulozeni H
          STT str. 128  "hulozenia"}
          ulozeniah:array[1..5,1..13] of real=
          ((4,5,6,8,9,11,13,15,18,20,23,25,27),
           (6,8,9,11,13,16,19,22,25,29,32,36,40),
           (10,12,15,18,21,25,30,35,40,46,52,57,63),
           (14,18,22,27,33,39,46,54,63,72,81,89,97),
           (25,30,36,43,52,62,74,87,100,115,130,140,155));
 
   rozmery:array[1..13] of integer =
          (3,6,10,18,30,50,80,120,180,250,315,400,500);
 
   naz_ulozenia:array[1..14] of string =
          ('H8/z8','H8/x8','H8/u8','H8/u7','H8/s7','H8/v7','H8/y7',
           'H8/r7','H7/u7','H7/t6','H7/s7','H7/r6','H6/s6','H6/r5');
 
 
implementation
 
   {Pruzna poddajnost spojovanych casti c2
    STK 2   str.95  obr.90  "function obr90"}
   function obr90(lk,d,Da,m:integer):real;
    const
      pz:array[1..2,1..12] of real=
        ((0,1.25,1.75,2.25,2.75,3.25,3.75,4.25,4.75,5.25,5.75,100),
        (50,39,30,24,19,15,11,8,5,3,0,0));
 
      vz:array[1..4,1..24] of real=
        ((0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115),
        (100,85,70,59,49,41,35,29,24,20,17,14,12,9.5,8,6.8,5.5,4.7,3.9,3.2,2.8,2.2,1.9,1.7),
        (175,150,125,100,85,72,60,50,41,35,29,25,20,17,14,13,10,8.1,6.9,5.8,4.8,4,3.2,2.8),
        (300,250,210,175,150,125,100,85,70,60,50,41,34,29,25,20,17,14,12,9.7,8.1,6.9,5.5,4.7));
 
      var x,y,c:real;
          a,p:integer;
 
      begin
        if m=4 then m:=3;
        if m=3 then m:=1
               else if m=1 then m:=3;
        if lk/d>10 then y:=pz[2,11];
        if lk/d<0 then y:=pz[2,1];
        for a:=1 to 11 do
          if (lk/d>=pz[1,a]) and (lk/d<pz[1,a+1]) then y:=pz[2,a];
          if Da/d<=1.5 then p:=1;
          if (Da/d>1.5) and (Da/d<=3) then p:=2;
          if Da/d>3 then p:=3;
        case p of
          1:x:=1.04*y;
          2:x:=(34*y+1000)/50;
          3:x:=(25*y+1650)/50;
               end;
        case d of
          4:c:=0;
          5:c:=60*6;
          6:c:=60*11;
          8:c:=60*14;
         10:c:=60*26;
         12:c:=60*30;
         14:c:=60*34;
         16:c:=60*38;
         18:c:=60*41;
         20:c:=60*45;
         22:c:=60*47;
         24:c:=60*49;
         27:c:=60*52;
         30:c:=60*55;
               end;
       y:=(59*x+c)/60;
       for a:=1 to 23 do
         if (y>=vz[1,a]) and (y<vz[1,a+1]) then obr90:=vz[m+1,a];
     end;
 
      {Hodnoty konstant pruznosti  C2a,C2b
       STK 2  str.112   obr.107}
      procedure obr107(da,db,dt:real;var c2a,c2b:real);
        const vyb:array[1..3,1..12] of real=
             ((0,1.15,1.3,1.5,1.8,2.25,2.75,3.5,4.5,6.5,9,11),
              (0.1,0.17,0.27,0.35,0.43,0.48,0.52,0.545,0.565,0.57,0.573,-1),
              (0.1,0.16,0.24,0.3,0.375,0.43,0.45,0.47,0.48,0.49,0.5,-1));
        var a,b:real;
            i:integer;
        begin
          if (dt<0) or (da<0) then begin
                                     c2a:=0;c2b:=0;exit;
                                   end;
          if db>0 then b:=dt/db;
          a:=da/dt;
          if a>10 then a:=10;
          for i:=1 to 11 do
            begin
              if (vyb[1,i]<a) and (vyb[1,i+1]>=a) then c2a:=vyb[2,i];
              if db>0 then
               if (vyb[1,i]<b) and (vyb[1,i+1]>=b) then c2b:=vyb[3,i];
            end;
          if db<=0 then c2b:=1;
      end;
 
 
 
 
      function kobr1(d,m,it,p,ze,ea:real;var kfa,kha:real):boolean;
 
       begin
         kobr1:=false;
         if (m<0) or (m>20) then exit;
         if (d<12) or (d>1600) then exit;
         if (it<3) or (it>12) then exit;
 
      end;
 
end.