Программа для расчета припусков на механическую обработку (язык программирования GI)

Приложение

Главная программа:
CALL pri }c
FR "M" mane$ }
EX k% "GR.EXE" "SLD.KX" 1 1 33 78 "a" }
rmax=309
rmin=19
PR "~c14m1" }
PR "~c15" }
MV 23 40 "" i%=3
"Наибольший размер детали " rmax
"Наименьший размер детали " rmin
"Продолжить работу " }

PR "~c15" }
MV 26 45 "Тип сплава" i%=1
"Черный нетермообрабатываемый" m1
"Черный термообрабатываемый" m2
"Цветной нетермообрабатываемый" m3
"Цветной термообрабатываемый" } GO m4

m1:
ts=1
GO m5
m2:
ts=2
GO m5
m3:
ts=3
GO m5
m4:
ts=4
m5:

CALL pri }c

DE 1 1 2 0 15
"Диапазон класса размерной"
"точности отливки выбирается"
"из таблицы 9 ГОСТ 26645-85" }

k%=0

GBD p% "t9_"+mane$ k% "ngab>=" rmax }

IF p% GO en }i

CALL case }c

PRINT "~x20y5X59Y9f1w" "~v_Класс размерной точности отливки:_bl7p34",krt$ }

DE 1 1 3 0 15
"Допуск смещения формы отливки"
"по плоскости разъема устанавливается"
"по таблице 1 ГОСТ 26645-85 на уровне"
"класса размерной точности отливки"
"Допуск смещения, вызваный перекосом"
"стержня устанавливается в диаметральном"
"выражении по таблице 1 ГОСТ 26645-85 на"
"1-2 класса точнее" }

DE 9 40 2 0 15
"Класс размерной точности"
"отливки выбирается из диапазона"
"в зависимости от группы сложности"
"(для данной отливки - 2 группа)" }

krto%=9

MV 14 18 "Тип сплава" i%=2
"Класс размерной точности отливки: " krto%
"Продолжить работу
 " }

DE 31 29 4 0 14
"Нажмите любую клавишу..." }
KEY s$

k%=0
GBD p% "t1" "nomr<=" nr }
CALL kkrtt }c
DE "Припуск на размер"
nomr1
"состовляет"
prips }
k%=0
GBD p% "t1" "nr>=" nomr2 }
CALL kkrtt }c
DE "Припуск на размер"
nomr1
"состовляет"
prips }

k%=0
GBD p% "t1" "nr>=" nomr2 }
CALL kkrtt }c
DE "Припуск на размер"
nomr1
"состовляет"
prips }

IF p% <> 0 GO en }i

ktnr$=krto%
nomr=19
MV 19 20 "" i%=3
"Номинальный размер " nomr
"Класс точности данного размера " ktnr$
"Продолжить работу " }
CALL rr }c
nomr1=nomr
dop1=dop
nomr=60
ktnr$=8
MV 19 20 "" i%=3
"Номинальный размер " nomr
"Класс точности данного размера " ktnr$
"Продолжить работу " }
CALL rr }c
nomr2=nomr
dop2=dop

nomr=266
ktnr$=11т
MV 19 20 "" i%=3
"Номинальный размер " nomr
"Класс точности данного размера " ktnr$
"Продолжить работу " }
CALL rr }c
nomr3=nomr
dop3=dop

DE 31 29 4 0 14
"Нажмите любую клавишу..." }
KEY s$

; Пункт 2.2;

d=rmin/rmax

PRINT "~i" }

DE 1 1 1 0 15
"Отношение максимального"
"и минимального размера"
"отливки"
""
d
"" }

DE 6 20 2 0 15
"Диапазон степени коробления"
"отливки определяется по"
"таблице 10 ГОСТ 26645-85" }
n%=0

GBD p% "t10" n% "div<=" d }
IF p% THEN GO en }i

FR "M" sk1$ sk2$ }
IF ts=1 THEN sk$=sk1$ }i
ELSE IF ts=2 THEN sk$=sk2$ }i
ELSE IF ts=3 THEN sk$=sk1$ }i
ELSE IF ts=4 THEN sk$=sk2$ }i
}e }e }e }e

DE 10 34 1 0 15
"Диапазон степени"
"коробления отливки"
""
sk$
"" }
sko=5

MV 18 31 "" i%=2
"Степень коробления элементов отливки " sko
"Продолжить работу " }

;Пункт 2.3;

DE 19 48 2 0 15
"Допуск формы и расположения"
"поверхностей отливки"
"с учетом степени коробления"
"определяется по таблице 2"
"ГОСТ 26645-85" }
nomr=nomr1
CALL rr1 }
dopc1=dop

MV 18 31 "" i%=2
"Степень коробления элементов отливки " sko
"Продолжить работу " }

nomr=nomr2
CALL rr1 }
dopc2=dop

MV 18 31 "" i%=2
"Степень коробления элементов отливки " sko
"Продолжить работу " }

nomr=nomr3
CALL rr1 }
dopc3=dop
DE 31 29 4 0 14
"Нажмите любую клавишу..." }
KEY s$

PRINT "~i" }

DE 1 1 5 0 15
"Общий допуск необходимо определить"
"по таблице 16 ГОСТ 26645-85" }
GBD p% "t16" }

DE 1 1 5 0 15
"Степень точности поверхности выбираем"
"по таблице 11 ГОСТ 26645-85 в соответствии"
"c типом литья." }
GBD p% "t11_"+mane$ k% "nq>=" rmax }

IF p% GO en }i

FR "M" q1$ q2$ q3$ q4$ }

IF ts=1 THEN krt$=q2$ }i
ELSE IF ts=2 THEN krt$=q4$ }i
ELSE IF ts=3 THEN krt$=q1$ }i
ELSE IF ts=4 THEN krt$=q3$ }i
}e
}e
}e


DE 9 25 2 0 15
"Диапазон cтепени точности поверхности"
""
krt$
"" }

stp=14
MV 14 37 "" i%=2
"Cтепени точности поверхности " stp
"Продолжить работу " }

DE 17 5 2 0 15
"Определяем вид"
"окончательной "
"обработки" }
PR "~c10m14" }
PR "~c11C13" }
MV 20 26 "Квалитет Rz обработка " i%=1
" 16-17 Rz 320 обдирка " v10
" 14 Rz 100 черновая " v14
" 12 Rz 50 получистовая" v14
" 10-11 Rz 25 чистовая " v14
" 7-9 Rz 5 тонкая " }
v10:
v14:
PR "~i" }
DE 1 1 1 0 15
"Ряд припусков на механическую"
"обработку определяют по "
"таблице 14 ГОСТ26645-85" }

GBD p% "t14" k% "stt>="stp }

;IF k% GO en }i;

FR "M" rpr$ }


DE 5 28 1 0 15
"Ряд припусков"
""
rpr$
"" }

prt%=5
PR "~c15m1" }
MV 14 29 "" i%=2
"Ряд припуска " prt%
"Продолжить работу " }

GBD p% "t5" k% "rrr>="prt% }
FR "M" minpr }

DE 7 52 2 0 15
"Минимальный припуск"
"определяем по таблице 5"
"ГОСТ 26645-85" }

DE 15 52 1 0 15
"Минимальный припуск"
"равен ", minpr }
DE 31 29 4 0 14
"Нажмите любую клавишу..." }
KEY s$

CALL pri }

us=1.0

MV 19 20 "" i%=3
"Номинальный размер " nomr
"Процент усадки сплава " us
"Продолжить работу " }

usn=(nomr*us)/100

DE 13 29 1 0 15
"Допуск на усадку:"
""
usn
"" }

DE "Общий допуск на сторону складывается"
"из значений найденных в таблицы 16"
"и вида окончательной механической обработки"
"и ряда припуска отливки" }

nomrr=nomr+dop+usn

KEY q$

MV 1 1 "" i%=1
"Класс точности массы" klm
"Продолжить " }
en:
}p
Подпрограмма выбора типа литья:
CALL pri }c
mans1:
PR "~i" }
DE 1 1 8 0 14
">>>>>>>>>>>>>>>>> 1 <<<<<<<<<<<<<<<<<<<"
"Литье под давлением в металлические формы"
"и по выжигаемым моделям с применением"
"малотерморасширяющихся огнеупорных"
"материалов (корунд,плавленный кварц и т.п.)" }

DE 10 1 8 0 14
">>>>>>>>>>>>>>>>>>> 2 <<<<<<<<<<<<<<<<<<<"
"Литье по выжигаемым моделям с применением"
"кварцевых огнеупорных материалов." }

DE 17 1 8 0 14
">>>>>>>>>>>>>>>>>>> 3 <<<<<<<<<<<<<<<<<<<<<"
"Литье по выплавляемым моделям с применением"
"кварцевых огнеупорных материалов." }

DE 24 1 8 0 14
">>>>>>>>>>>>>>>>>>> 4 <<<<<<<<<<<<<<<<<<<"
"Литье под низким давлением и в кокиль без"
"песчаных стержней." }

DE 9 50 2 9 14 "Технологический" "процесс литья" }

MV 15 54 "" i%=5
"1" mas1
"2" mas2
"3" mas3
"4" mas4
"Следующий" mans2
"Выход " } GO end
mas1:
mane$="1"
GO end1
mas2:
mane$="2"
GO end1
mas3:
mane$="3"
GO end1
mas4:
mane$="4"
GO end1
mans2:
PR "~i" }
DE 1 1 8 0 14
">>>>>>>>>>>>>>>>> 5 <<<<<<<<<<<<<<<<<<<<"
"Литье в песчано-глинистые сырые формы из"
"низковлажных (до 2.8%) высокопрочных (более"
"160 кПа) смесей, с высоким однородным"
"уплотнением до твердости не ниже 90 едениц."
"Литье по газифицированным моделям в песчаные"
" формы. "
"Литье в формы,отвержденные в контакте с холодной"
" оснасткой. "
"Литье под низким давлением и в кокиль с песчаными"
" стержнями. "
"Литье в облицованный кокиль." }

DE 16 1 8 0 14
">>>>>>>>>>>>>>>>>>> 6 <<<<<<<<<<<<<<<<<<<<<"
"Литье в песчано-глинистые формы из смесей с"
"влажностью 2.8-3.5% и прочностью 120-160 кПа"
"и уплотненностью не менее 80 ед."
"Литье центробежное (внутренние поерхности)"
"Литье в формы, отверждаемые в контакте"
" с горячей оснасткой. "
"Литье в вакуумно-пленочные песчаные формы." }

DE 9 56 2 9 14 "Технологический" "процесс литья" }
MV 15 59 "" i%=3
"5" mas5
"6" mas6
"Следующий" mans3
"Предыдущий" mans1
"Выход " } GO end

mas5:
mane$="5"
GO end1
mas6:
mane$="6"
GO end1

mans3:
PR "~i" }
DE 1 1 8 0 14
">>>>>>>>>>>>>>>> 7 <<<<<<<<<<<<<<<<<<"
"Литье в песчано-глинистые сырые формы"
"из смесей с влажностью от 3.5% до 4.5%"
"и прочностью от 60 до 120 кПа с уровнем "
"уплотнения до твердости не ниже 70 едениц."
""
"Литье в оболочковые формы из"
"термореактивных смесей."
""
"Литье в формы, отверждаемые вне контакта"
"с оснасткой без тепловой сушки."
""
"Литье в песчано-глинистые подсушенные"
" и сухие формы. " }

DE 19 1 8 0 14
">>>>>>>>>>>>>> 8 <<<<<<<<<<<<<<<<<<<<"
"Литье в песчано-глинистые сырые формы"
"из высоковлажных (более 4.5%), низкопрочных"
"(до 60 кПа) смесей с низким уровнем"
"уплотнения до твердости ниже 70 едениц." }

DE 9 50 2 9 14 "Технологический" "процесс литья" }
MV 15 53 "" i%=1
"7" mas7
"8" mas8
"Предыдущий" mans2
"Выход " } GO end

mas7:
mane$=7
GO end1
mas8:
mane$="8"
GO end1

end1:
FW "M" mane$ }
GI "ppo.gi"
end:

}p
INC "wait.gi"

Комплекс подпрограмм выбора по условию:
INC "wait.gi"

case: }c
FR "M" ts1$ ts2$ ts3$ ts4$ }
IF ts = 1 THEN krt$=ts1$ }i
ELSE IF ts = 2 THEN krt$=ts4$ }i
ELSE IF ts = 3 THEN krt$=ts1$ }i
ELSE IF ts = 4 THEN krt$=ts3$ }i
}e
}e
}e
}s
rr: }c

n%=0

GBD p% "t1" n% "nr>=" nomr }

IF p% <> 0 GO en }i

FR "M" d6 d7t d7 d8 d9t d9 d10 d11t d11 d12 d13t d13 d14 d15 d16 }

IF ktnr$ = "6" THEN dop=d6 }i
ELSE IF ktnr$ = "7т" THEN dop=d7t }i
ELSE IF ktnr$ = "7" THEN dop=d7 }i
ELSE IF ktnr$ = "8" THEN dop=d8 }i
ELSE IF ktnr$ = "9т" THEN dop=d9t }i
ELSE IF ktnr$ = "9" THEN dop=d9 }i
ELSE IF ktnr$ = "10" THEN dop=d10 }i
ELSE IF ktnr$ = "11т" THEN dop=d11t }i
ELSE IF ktnr$ = "11" THEN dop=d11 }i
ELSE IF ktnr$ = "12" THEN dop=d12 }i
ELSE IF ktnr$ = "13т" THEN dop=d13t }i
ELSE IF ktnr$ = "13" THEN dop=d13 }i
ELSE IF ktnr$ = "14" THEN dop=d14 }i
ELSE IF ktnr$ = "15" THEN dop=d15 }i
ELSE IF ktnr$ = "16" THEN dop=d16 }i
}e }e }e }e }e }e }e }e }e }e }e }e }e }e

DE 25 28 1 0 15
"Допуск размерной точности:"
"для размера"
nomr
"будет"
dop }
}s
rr1: }c
n%=0

GBD p% "t2" n% "nrr>=" nomr }


FR "M" dr5 dr6 dr7 dr8 dr9 dr10 dr11 }

IF sko = 5 THEN dop=dr5 }i
ELSE IF sko = 6 THEN dop=dr6 }i
ELSE IF sko = 7 THEN dop=dr7 }i
ELSE IF sko = 8 THEN dop=dr8 }i
ELSE IF sko = 9 THEN dop=dr9 }i
ELSE IF sko = 10 THEN dop=dr10 }i
ELSE IF sko = 11 THEN dop=dr11 }i
}e }e }e }e }e }e

DE 22 20 1 0 15
"Допуск формы и расположения:"
"для размера"
nomr
"будет"
dop
"" }
}s
kkrtt: }c
IF ktnr$ = "6" THEN FR "M" prips"d6$" } }i
ELSE IF ktnr$ = "7t" THEN FR "M" prips"d7t$" } }i
ELSE IF ktnr$ = "7" THEN FR "M" prips"d7$" } }i
ELSE IF ktnr$ = "8" THEN FR "M" prips"d8$" } }i
ELSE IF ktnr$ = "9t" THEN FR "M" prips"d9t$" } }i
ELSE IF ktnr$ = "9" THEN FR "M" prips"d9$" } }i
ELSE IF ktnr$ = "10" THEN FR "M" prips"d10$" } }i
ELSE IF ktnr$ = "11t" THEN FR "M" prips"d11t$" } }i
ELSE IF ktnr$ = "11" THEN FR "M" prips"d11$" } }i
ELSE IF ktnr$ = "12" THEN FR "M" prips"d12$" } }i
ELSE IF ktnr$ = "13t" THEN FR "M" prips"d13t$" } }i
ELSE IF ktnr$ = "13" THEN FR "M" prips"d13$" } }i
ELSE IF ktnr$ = "14" THEN FR "M" prips"d14$" } }i
ELSE IF ktnr$ = "15" THEN FR "M" prips"d15$" } }i
ELSE IF ktnr$ = "16" THEN FR "M" prips"d16$" } }i
}e }e }e }e
}e }e }e }e
}e }e }e }e
}e }e }e
}s
Подпрограмма выбора серийности производства:
CALL pri }c
PR "~c14a3" }

MV 13 25 "Серийность производства" i%=1
"Массовое " m1
"Крупносерийное " m1
"Серийное " m2
"Мелкосерийное " m2
"Единичное " } GO m2

m1:
DE 28 22 11 15 0 "Выбираем металлическую модель" }
GO m3
m2:
DE 28 24 11 15 0 "Выбираем деревянную модель" }
m3:
EX k% "GR.EXE" "SLD_1_3.KX" 2 1 17 50 "a" }
EX k% "GR.EXE" "VID3.GR" 2 51 17 78 }

FILE "*.*" g$
}p

Подпрограмма вывода авторских записей:
pri: }c
PR "~ic14x40Y35l35p40w" "(C) Дубовой В.В. & Каспревич П.В." }
PR "~c15x1Y33" }
}s

DE 1 1 2 0 14
"text" }
}p
Программа рисования графика для вставки 
в Auto CAD 12 (язык программирования Auto LISP):

(defun graf( / x y sp tmp temp1 temp3 f1 tmp1 step)
;открываю файл с данными
(setq f1 (open "$$u$$.dan" "r"))

(setq tmp 0);сбил nil со счетчика
(setq sp nil)
(setq temp1 (atoi (read-line f1))); извлекаю начальную температуру
(setq temp3 (atoi (read-line f1))); извлекаю конечную температуру

(setq sp (list (list (atoi (read-line f1)) (atof (read-line f1))))); начинаю список данных
(while tmp
(setq tmp1 (read-line f1))
(setq tmp (read-line f1))
(if tmp1 (setq sp (cons (list (atoi tmp) (atof tmp1)) sp)))
); end while
(close f1)
(setq sp (reverse sp))
;(COMMAND "PLINE" '(temp3 0) '(temp1 0) )

(COMMAND "PLINE" (nth 1 sp))
(setq step 2)
(repeat (- (length sp) 1)
(COMMAND (nth step sp))
(setq step (1+ step))
); end repeat
)
(defun c:kurs ( / )
(graf)
)
Программы для расчета скорости затвердевания и
относительной скорости затвердевания (язык 
программирования Turbo Pascal 7.0):
Начальные данные для расчета:
Удельная теплоемкость отливки
C1:=838; Дж/кг К
Плотность расплава
1:=7000; кг/м3
Приведенный размер отливки
Ro:=0.004; м
Температура заливки
Tзал:=1643; K
Темперетура ликвидуса
Tликв:=1473; K
Масса отливки
Co:=40; кг
Коэффициент тепловой аккумуляции формы
Bф:=1377;
Температура формы
Tф:=293; K
Удельная теплота кристаллизации отливки
Le:=215Е3; Дж/кг
Плотность отливки
3:=7500; кг/м3
Температура эвтектики
Tэвт:=1470; K


{1 программа}
uses crt;
const A=3.7;
m=0.38;

type point = record
X,Y:integer;
end;
var
Co:real;
VremZal,TempZal,Tn,Tf,Bf,Tlikv,Ro1,Ro,C1:real;
T1,T3:real;
Le,Ro3,Tevt,U:real;
t:Longint;
fil:text;
spis:array[1..4] of point;
{Функция возведения в дробную степень:
вход основание степени,сама степень}
function pow(osnovanie,stepen:real):real;
begin
pow:=exp(stepen*ln(osnovanie));
end;
procedure out(per:real);
begin
Writeln(' ',per);
end;
begin

{********************************************************}
writeln;
writeln;
{Время заполнения формы металлом}
VremZal:=A*pow(Co,M);
Tn:=(TempZal+TLikv)/2;
T1:=sqr((C1*Ro1*Ro*(Tn-Tlikv)/(1.128*Bf*(Tn-Tf)))+sqrt(VremZal));
T3:=sqr(Le*Ro3*Ro/(1.13*Bf*(Tevt-Tf))+sqrt(T1));
out(t1);
out(t3);
{Линейная скорость затвердевания эквивалентной плоскости отливки}
assign(fil,'$$u$$.dan');
rewrite(fil);
t:=round(t1);
writeln(fil,round(t1));
writeln(fil,round(t3));

while t<=round(t3) do begin
U:=Bf*Tevt/(Le*Ro3*Sqrt(pi*t));
writeln(fil,U*500000:2:2);
writeln(fil,t);
writeln(u:2:8,' текущее ',t,' всего до ',round(t3));
inc(t);
end;

close(fil);
assign(fil,'params.dat');
rewrite(fil);
{spis[1].X:=round(t3+20);
spis[1].Y:=round(Bf*Tevt/(Le*Ro3*Sqrt(pi*t3)))*500000-20;
spis[2].X:=round(t1-20);
spis[2].Y:=spis[1].Y;
spis[3].X:=spis[2].X;
spis[3].Y:=round(Bf*Tevt/(Le*Ro3*Sqrt(pi*t1)))*500000+20;
spis[4].X:=spis[1].X;
spis[4].Y:=spis[3].Y;
writeln(fil,spis[1].X);
writeln(fil,spis[1].Y);
writeln(fil,spis[2].X);
writeln(fil,spis[2].Y);
writeln(fil,spis[3].X);
writeln(fil,spis[3].Y);
writeln(fil,spis[4].X);
writeln(fil,spis[4].Y);}
writeln(fil,'Температура конечная ',round(t3));
writeln(fil,'Температура начальная ',round(t1));
writeln(fil,'U верхнее ', Bf*Tevt/(Le*Ro3*Sqrt(pi*t1)));
writeln(fil,'U нижнее ', Bf*Tevt/(Le*Ro3*Sqrt(pi*t3)));
close(fil);
end.
{2 программа}
uses crt;
const A=3.7;
m=0.38;
k=0;

var
Co:real;
VremZal,TempZal,Tn,Tf,Bf,Tlikv,Ro1,Ro,C1:real;
T1,T3,x:real;
Le,Ro3,Tevt,Ue:real;
t:Longint;
fil:text;
{Функция возведения в дробную степень:
вход основание степени,сама степень}
function pow(osnovanie,stepen:real):real;
begin
pow:=exp(stepen*ln(osnovanie));
end;
procedure out(per:real);
begin
Writeln(' ',per);
end;
begin

{Начальные данные}

{Удельная теплоемкость отливки Дж/Кг*К}
C1:=838;
{Плотность расплава Кг/м3}
Ro1:=7000;
{Приведенный размер отливки}
Ro:=0.004;
{Температура заливки}
TempZal:=1643; {K.}
{Темперетура ликвидуса}
Tlikv:=1473; {K.}
{Co Масса отливки }
Co:=40; {кг.}
{Коэффициент тепловой аккумуляции формы}
Bf:=1377;
{Температура формы }
Tf:=293; {K.}
{Удельная теплота кристаллизации отливки}
Le:=215e3; {Дж/Кг}
{Плотность отливки}
Ro3:=7500;
{Температура эвтектики}
TEvt:=1470; {K.}
{******************************************************}
writeln;
writeln;
{Время заполнения формы металлом}
VremZal:=A*pow(Co,M);
Tn:=(TempZal+TLikv)/2;
T1:=sqr((C1*Ro1*Ro*(Tn-Tlikv)/(1.128*Bf*(Tn-Tf)))+sqrt(VremZal));
T3:=sqr(Le*Ro3*Ro/(1.13*Bf*(Tevt-Tf))+sqrt(T1));
assign(fil,'$$u$$2.dan');
rewrite(fil);
writeln(round(t1));
writeln(round(t3));
x:=0;
while x<=Ro do begin
{Линейная скорость затвердевания эквивалентной плоскости отливки}
Ue:=2*(k+1)*sqr(Bf*Tevt)/(Ro*sqr(sqrt(pi)*Le*Ro3))*
(1/(1+{-pow(}x/Ro{,k+1)}+(1.13*(k+1)*Bf*Tevt/(Le*Ro3*Ro))*sqrt(T1)));
{Ue:=2*(k+1)*sqr(Bf*Tevt)/(Ro*sqr(sqrt(pi)*Le*Ro3))*
(1/(1+pow(x/Ro,k+1)+(1.13*(k+1)*Bf*Tevt/(Le*Ro3*Ro))*sqrt(T1)));}
writeln(fil,ue*100000:2:3);
writeln(ue*100000:2:8,' текущее ',x:2:6,' всего до ',Ro:2:6);
x:=x+0.0001;
end;
close(fil);
end.