Výpočet parametrov predpätej skrutky podľa ČSN 014010
Delphi & Pascal (česká wiki)
Kategórie: Programy v Pascalu
Program: Skrutka.pas
Soubor exe: Skrutka.exe
Soubor ubuntu: Skrutka
Potřebné: Tabulky.pas
Program: 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 rzneho 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 rzneho 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.