В случае если данное условие не будет выполнятся, программа выдаст пользователю извещение об этом.
-условие долговечности:
Если данное условие не выполняется, то пользователь будет об этом информирован. И наконец, определив указанные выше параметры мы сможем посчитать ширину цепи:
Вторая часть расчетов посвящена геометрическому расчету звездочки. Программа рассчитывает и выводит на экран следующие параметры:
Половина углового шага τ, которая высчитывается по формуле:
Диаметр делительной окружности
:Радиальный зазор, е:
Высота зуба, h
Диаметр окружности впадин
:Расстояние между верхним краем рабочей грани звена и точкой, лежащей в плоскости измерения зуба, Р:
Радиус построения криволинейного профиля зуба R:
Наибольший зазор между рабочей гранью пластин и зубом, K:
Угол поворота звена на звездочке, φ:
Ширина зуба, b:
Расстояние от вершины зуба до линии центров
:Радиус закругления торца зуба и направляющей проточки r:
Глубина проточки
Ширина проточки, s1
5. Принцип работы программы
Программа состоит из одного главного окна.
Рисунок1.Главное окно программы
В левой стороне содержатся операторы, запоминающие данные вводимые пользователем. Диаметр ведущей звездочки вводится с клавиатуры путем нажатия кнопок несущих в себе числа (по умолчанию 69 мм). Число зубьев звездочки указывается в выпадающем спике при помощи левой кнопки мышки (по умолчаннию z=17). Передаточное отношения указывается также, как и число зубьев звездочки (по умолчанию u=1). Частота вращения звездочки заполняется вводом с клавиатуры, «не числовые» клавиши заблокированы (по умолчанию n=1500 об/мин). Характер работы цепи задается благодаря выпадающему списку по щелчку мыши. Температура окружающей среды вводится по средствам полосы прокрутки, правее полосы прокрутки указывается текущее значение температуры (по умолчанию 15 0 С). Максимально допустимая частота вращения ведущей звездочки (nmax) выбирается из выпадающего списка (по умолчанию nmax=3300 об/мин ). При помощи второй полосы прокрутки пользователь может задать передаваемую цепью мощность N в кВт (по умолчанию N=14 кВт). Далее после корректировки всех данных нужно нажать кнопку «Расчет».
Механизм программы обработает данные и окно программы примет следуюший вид:
Рисунок 2. Вид программы после нажатия кнопки «Расчет»
Как видно на картинке в правой части и в центре появились значения вычисленных геометрических величин. В центре, чуть ниже картинки располагается надпись «Типоразмер цепи З-12-2,4». Программа выдала нам стандартный типоразмер цепи, согласно указанным условиям.Далее пользователю необходимо нажать кнопку «Внести в базу». Окно изменится (см рисунок3)
Как видим на белом поле ниже кнопки «Внести в базу» появился ряд чисел. Каждое число соотвествует характеристике находящейся над ней. Соотвествие буквенных обозначений геометрическим параметрам можно найти на окне программы. Данная структура записи в этом поле не случайна. Дело в том, что впоследствии пользователь сможет сохранить результаты вычислений в файле «Цепь.txt» (путем нажатия из выпадающего главного меню «Файл» и выбора там функции «сохранить» ). Файл примет структуру аналогичную структуре записи окна. Данная структура является ничем иным как внешней базой, на которую можно сослаться при работе в программе T-Flex, с целью построения конкретного чертежа или 3D модели зубчатой цепи и звездочки. Для произведения указанных действий необходимо будет иметь уже готовый параметризованный чертеж цепи и звездочки, разработка которого находится в перспективе.
Рисунок 3 Окно программы после нажатия кнопки «Внести в базу»
Код программы содержит в себе механизмы предупреждения пользователя о его некорректной работе с программой. В коде прописаны условия предъявляемые к самой цепной передаче, невыполнение которых, из – за некорректно введенных данных ведет к появлению различного рода сообщений, информирующих пользователя и дающих ему совет.
6. Кодпрограммы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, jpeg, Menus;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
ComboBox1: TComboBox;
Label2: TLabel;
Button1: TButton;
Label3: TLabel;
Label4: TLabel;
Edit2: TEdit;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Edit3: TEdit;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
ComboBox2: TComboBox;
RadioButton1: TRadioButton;
Label11: TLabel;
RadioButton2: TRadioButton;
Label12: TLabel;
ScrollBar1: TScrollBar;
Label13: TLabel;
Label14: TLabel;
ComboBox3: TComboBox;
Label15: TLabel;
Label16: TLabel;
ScrollBar2: TScrollBar;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
ComboBox4: TComboBox;
Label25: TLabel;
Image1: TImage;
Panel1: TPanel;
Memo1: TMemo;
Button2: TButton;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
Button3: TButton;
Label26: TLabel;
Label27: TLabel;
Label28: TLabel;
Label29: TLabel;
Label30: TLabel;
Label31: TLabel;
Label32: TLabel;
Label33: TLabel;
Label34: TLabel;
Label35: TLabel;
Label36: TLabel;
Label37: TLabel;
Label38: TLabel;
Label39: TLabel;
Label40: TLabel;
Label41: TLabel;
Label42: TLabel;
Label43: TLabel;
Label44: TLabel;
Label45: TLabel;
Label46: TLabel;
Label47: TLabel;
Label48: TLabel;
Label49: TLabel;
Label50: TLabel;
Label51: TLabel;
Label52: TLabel;
Label53: TLabel;
Label54: TLabel;
Label55: TLabel;
Label56: TLabel;
Label57: TLabel;
Label58: TLabel;
Label59: TLabel;
Label60: TLabel;
Label61: TLabel;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Button1Click(Sender: TObject);
procedure Edit2Exit(Sender: TObject);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure ScrollBar1Change(Sender: TObject);
procedure ScrollBar2Change(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9']) then Key := #0;
end;
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9']) then Key := #0;
end;
procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9']) then Key := #0;
end;
procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9','-']) then Key := #0;
end;
procedure TForm1.Edit2Exit(Sender: TObject);
var De:real;
begin
De:=StrToFloat(Edit2.text);
if De<68 then ShowMessage('Значение диаметра ведущей звездочки введено некорректно')
else
end;
procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
Label13.Caption:=IntToStr(ScrollBar1.Position);
end;
procedure TForm1.ScrollBar2Change(Sender: TObject);
begin
Label17.Caption:=IntToStr(ScrollBar2.Position);
end;
procedure TForm1.Button1Click(Sender: TObject);
var A,s,Dmax,u,u1,De,n,h,V,P,Talpha,klambda,kt,T,kv,e,shag,B,Bkon,z,Lt,L,b2,c1,r1,tau,dd,Dt,R,K,fi,beta,gamma,bzuba,cL,h1,s1,ty,y:real;
begin
A:=StrToFloat(Edit1.text);
De:=StrToFloat(Edit2.text);
u:=StrToFloat(ComboBox1.text);
if ComboBox1.Text='1..4'
then Dmax:=(1.66*A)/(u+1)
else Dmax:=A/(u+1);
if Dmax<69 then ShowMessage('Значение максимального диаметра ведущей звездочки при данных параметрах слишком мало. Перезадайте межосевое расстояние или передаточное отношение')
else
if De>Dmax then ShowMessage('Значение диаметра ведущей звездочки превышает максимальный. Перезадайте межосевое расстояние,передаточное отношение или уточните диаметр ведущей зведочки')
else
label3.Caption:=formatfloat('#.##',De);
n:=StrToFloat(Edit3.text);
V:=(3.14*De*n)/60000;
label8.Caption:=formatfloat('###.##',V);
if (combobox2.ItemIndex=0) and (RadioButton1.Checked) then klambda:=1;
if (combobox2.ItemIndex=1) and (RadioButton1.Checked) then klambda:=1.25;
if (combobox2.ItemIndex=2) and (RadioButton1.Checked) then klambda:=1.4;
if (combobox2.ItemIndex=3) and (RadioButton1.Checked) then klambda:=1.6;
if (combobox2.ItemIndex=4) and (RadioButton1.Checked) then klambda:=1.8;
if (combobox2.ItemIndex=5) and (RadioButton1.Checked) then klambda:=1.9;
if (combobox2.ItemIndex=0) and (RadioButton2.Checked) then klambda:=1;
if (combobox2.ItemIndex=1) and (RadioButton2.Checked) then klambda:=1;
if (combobox2.ItemIndex=2) and (RadioButton2.Checked) then klambda:=1.1;
if (combobox2.ItemIndex=3) and (RadioButton2.Checked) then klambda:=1.25;
if (combobox2.ItemIndex=4) and (RadioButton2.Checked) then klambda:=1.45;
if (combobox2.ItemIndex=5) and (RadioButton2.Checked) then klambda:=1.5;
T:=StrToFloat(Label13.Caption);
if (T>-80) and (T<-25) then kt:=2.5;
if (T>-25) and (T<150) then kt:=1;
if (T>150) and (T<250) then kt:=1.25;
kv:=1-1.1*0.001*V*V;
if ComboBox3.Text='3300' then shag:= 12.7;