Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

диссертация модальная логика

.pdf
Скачиваний:
17
Добавлен:
25.03.2016
Размер:
8.07 Mб
Скачать

-311 -

Приложение 1

Параметры пцршня ] Параметры кривошипа |

 

 

 

 

0.35

 

 

 

31дп/с1п-

0.67

г:-

 

0.14

Ьв / •

0.08

1

0.42

 

 

г

 

 

 

 

 

0.04

 

 

Готово

 

 

ь;:С)^|5мёНЙХЬ:'

 

 

 

Рисунок 8 - Выбор параметров поршня

 

 

Параметры поршня | Параметры кривошипа :|

I —- —'

I

1 ^ 1,

 

¡1 \

4

 

 

-1?

 

 

/ \

ч

с1кш/0 =

0.7

1кш / с1кш =

0.5

с1шш / 0 =

0,65

1шщ;/ Ьшш/^

0.8

^щ:да = :

1.15

Ьщ/;0 =•

0.23

Отменить'

Рисунок 9 - Выбор параметров кривошипа

После того, двигатель и вид паттерна определены можно строить сам паттерн работоспособности. После выбора соответствующей опции меню на экране появляется форма, позволяющая определить новую концепцию двигателя (Рисунок 10).

Параметр "Диаметр цилиндра" является одним из основных параметров двигателя. После его определенрм необходимо нажать кнопку "Готово". Далее пользователю будет предложено выбрать положение верхнего левого угла паттерна. Курсор мыши будет иметь соответствующую форму. После выбора положения курсор примет свой обычный вид и начнется построение паттерна работоспособности. Если в банке результатов будет не хватать каких-то данных, то будет произведен дополнительный расчет. Процесс расчета

-312-

Приложение 1

текущего паттерна работоспособности отражается в нижнем левом углу главной форму в виде шкалы прогресса. После произведения всех необходимых расчетов на экране появится серия диаграмм, которые и будут представлять из себя паттерн работоспособности. На Рисунке 11 изображен пример развернутой диаграммы.

Рисунок 10 - Выбор концепции двигателя

5|| С и л а Р

ш

 

РдН

 

^ ^ ^ ^ ^

В=130шл

; • -

А

Рисунок 11 - Развернутая диаграмма

Кнопки с изображением стрелок позволяют изменять ориентацию поверхности в окне, что позволит получить полную информацию о поверхности. Внизу диаграммы выводится информация о текущей концепции двигателя.

Диаграмма износа и полярная диаграмма строятся в одном окне (Рисунок 12).

^ И з н о с к ш 2

1

К . к Н

 

50 ^

 

^,^S^

 

 

•63,4

-9,7

Т ' . к Н

1600

2000

. 2400:

:2600

|

1

1

1

1

1

 

в=1зомм :

 

 

^1

Рисунок 12 - Диаграмма износа и полярная диаграмма

-313-

Приложение 1

Шкала в нижней части диаграммы отражает текущий режим работы двигателя. Изменяя положение бегунка можно соответственно менять изображение в окне. Таким образом можно получить информацию о характере изменений характеристик двигателя в различных режимах работы.

При желании изменить свойства какой-либо диаграммы необходимо выбрать соответствующую опцию меню. Развернутая диаграмма имеет следующее окно свойств (Рисунок 13).

-Цвет паттерна-

 

Точность

10

^

Простой

 

 

 

 

 

Г Цветной 1;;

 

 

 

 

 

 

 

 

 

 

" 3

 

I

Масштаб по X

=

 

 

10

МейгтаВпО;^ • , ^

:

 

10

л

Масштаб по 2

' =

'

 

 

 

 

Готово

 

Отменить

 

Применить

Рисунок 13 - Свойства развернутой диаграммы

 

Поля управления здесь имеют следующий смысл:

точность: отражает какая часть значений характеристики будет использоваться при построении поверхности; чем меньше точность, тем быстрее строится поверхность; файл-ресурс: имя файла, где содержатся значения характеристики двигателя;

прототип: имя диаграммы, данные которой будут использоваться при построении поверхности для сравнения; цвет паттерна: можно выбрать либо однотонный, либо тонированный;

инкремент угла: позволяет задать угол поворота поверхности при нажатии какой-либо кнопки со стрелкой в окне диаграммы.

Окно свойств диаграммы износа и полярной диаграммы изображено на Рисунке 14. Поля управления здесь имеют следующие значения:

точность: аналогично развернутой диаграмме; файл-ресурс: аналогично развернутой диаграмме;

показать полярную диаграмму: флаг включения/выключения полярной диаграммы; показать диаграмму износа: флаг включения/выключения диаграммы износа;

использовать собственный габарит: если флажок отключен, то все режимы работы двигателя демонстрируются при одних и тех же параметрах изображения (коэффициенты масштабирования и др.); иначе параметры изображения подстраиваются под соответствующую картинку, что, возможно, позволит лучше рассмотреть ее.

-314-

ПриложениеЛ

|7 показать полярную диаграмму 17 показать диаграмму износа

Г использовать собственный габарит

[ .Х^бдовр ^:^]"

Отменить

Применить

Рисунок 14 - Свойства диаграммы износа и полярной диаграммы

Для большего удобства в программе предусмотрена возможность получения экспериментальных данных без построения диаграмм. Это позволит не терять времени непосредственно во время исследования. Форма, позволяющая проделать эту операцию имеет вид, изображенный на Рисунке 15.

Минимальные оборотьс

1600

л.

 

120

/:;МИнимальнь1й диаметр:

 

 

Максимальные рбброть!: 2600

у •.Максимальный диаметр: 140

Шаг приращения:

400

1

Шаг приращения:

10

 

 

Выполнение процесса:

0%

Выполнить

Рисунок 15 - Формирование банка результатов

Здесь необходимо задать диапазон и шаг изменения параметров эксперимента: частоты вращения коленчатого вала (обороты) и диаметр цилиндра двигателя. Ход расчета отражается с помощью шкалы прогресса.

Получить информацию о программе и разработчике можно с помощью формы, изображенной на Рисунке 16.

-315-

Приложение 1

Pattern

Версия 1.0

Copyright;>Ине, т.е. Исаеву П.И.. Политех, Сапр-52, 2000 год.

ок

Рисунок 16 - Форма "О программе tl

Ниже приведены распечатки некоторых модулей программного обеспечения,

unit MainUnit;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, Buttons, ExtCtrls, Menus;

type TReestr=record Varl: integer; Var2: real;

NumbOfFile: word; end;

TMainForm = class(TForm) PanelTools: TPanel; sblnfo: TStatusBar; MainMenul: TMainMenu; miFile: TMenuItem; miWindow: TMenuItem; moFileNew: TMenuItem; moFileClose: TMenuItem; moSavePatt: TMenuItem; moLoadPatt: TMenuItem; moSaveDiag: TMenuItem;

-316-

Приложение 1

miOperation: TMenuItem; moSelDVS: TMenuItem; moSelPat: TMenuItem; MemoFuIl: TMemo; miAddBank: TMenuItem; miCaption: TMenuItem; miCloseAIl: TMenuItem; moSavelssIed: TMenuItem; moLoadlssled: TMenuItem; SaveDialogM: TSaveDialog; OpenDialogM: TOpenDialog; miHelp: TMenuItem; moAbout: TMenuItem;

procedure FormCreate(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure btMemoryClick(Sender: TObject);

procedure oFileNewClick(Sender: TObject); procedure moFileCloseClick(Sender: TObject); procedure moSavePattClick(Sender: TObject); procedure moLoadPattClick(Sender: TObject); procedure moSaveDiagClick(Sender: TObject); procedure moSelDVSClick(Sender: TObject); procedure moSelPatClick(Sender; TObject); procedure miCaptionCIick(Sender: TObject); procedure miAddBankClick(Sender: TObject); procedure miCloseAllClick(Sender: TObject); procedure moSaveIssledClick(Sender: TObject); procedure moLoadIssledClick(Sender: TObject); procedure moAboutClick(Sender: TObject); private

{ Private declarations } NameBankFile: string; NPartBFile: byte;

procedure SavePattern(OneActive: boolean); public

{ Public declarations} end;

var

-317- Приложение 1

MainForm: TMainForm;

NumberOfPattem: byte;

TAU: byte;

// тактность текущего двигателя

Oboroty: integer; // текущее значение обротов двигателя

DiamCyl: real;

// текущее значение объема цилиндра

Lambda: real;

// отношение радиуса кривошипа к длине шатуна

HodPorsh: real;

// ход поршня

KKR: integer;

UgolVs: array [1..12] of real; //углы вспышек в цилиндрах

NumbCyl: byte;

// количество цилиндров в текущем двигателе

NumbOfSh: byte;

// количество различных Кшш

NumbOfK: byte;

// количество коренных шеек в текущем двигателе

NumbRad: byte;

// рядность двигателя

BeMouseClick: boolean;

ListOfBF: TStrings;

RootDir: string;

implementation

uses CreatPatt, DForce, DIznos, Tools, PPropF, PPropI, SelDVS, FormBank, ChngeVar, DraftProp, About;

{$R *.DFM}

procedure TMainFonn.FormCreate(Sender: TObject); begin

Randomize;

ReadDVS;

NumberOfPattem:=0;

RootDir:=GetCurrentDir;

if not FileExists(RootDir+'/Bank') then CreateDir(RootDir+'/Bank');

if not FileExists(RootDir+'/Archiv') then CreateDir(RootDir+'/Archiv'); end;

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction); begin

miCloseAllClick(nil);

end;

-318-

Приложение 1

procedure TMainForm.btMemoryClick(Sender: TObject); begin

// выводим информацию о занимаемой памяти sbInfo.Panels[0].Text:='Memory AIlocated='+inttostr(AllocMemSize); end;

procedure TMainForm.oFileNewClick(Sender: TObject); const

Dobavka: integer = 2;

// расстояние между формами

WidthForm = 300;

 

// ширина новой формы

HeightForm = 300;

 

// высота новой формы

var

 

 

NewForm: TForm;

 

// новая форма

i,j,NumbZ: integer;

 

 

NumbDiag: byte;

 

// счетчик новых диаграмм

qweStr: string;

 

 

qweReal: real;

 

 

ResolZ: integer;

 

 

XPatt,YPatt: integer;

 

// координаты нового паттерна

CurRow,CurCol: byte;

// текущие строка и столбец

NewName: string;

 

// имя новой диаграммы

NewNumb; byte;

 

// номер новой диаграммы среди одинак. названий

NameOfF: string;

// имя силы в новой диаграмме

EdinOfF: string;

// единицы измерения силы в новой диаграмме

IndexOfP: string;

// индекс новой диаграммы в банковских файлах

TypeOfP: string;

// тип новой диаграммы

BName: string;

// базовое имя новых файлов

faBank, faRes: TFileStream; SizeOfPart: integer; CurBeg,CurEnd,CurStep: integer;

Mess: TMsg;

BeMouseClick: boolean;

pbnewPatt: TProgressBar;

-319-

Приложение 1

faTemp: file of real;

faParam: textfile; faLisp: textfile; faTelo: textfile; OldSeparator: char; begin

//проверка на наличие необходимых данных

///проверка на наличие данных о двигателе if (FileExists('dvs\dvig.dat')=false) or

(FileExists('dvs\massa.dat')=false) or (FiIeExists('dvs\indic.dat')=false) or

(FileExists('dvs\tepl.dat')=false) then begin

Beep;

ShowMessage('Heдocтaтoчнo данных о двигателе! I!');

exit;

end; {if}

/// проверка на наличие данных о паттерне if((NewPatt.lbSelForce.ltems.Count=0)and(NewPatt.cbDraft.Checked=false))

or (NewPatt.seMaxOb.Value<NewPatt.seMinOb.Value) then begin

Beep;

ShowMessage('HeflocTaT04HO данных о паттерне!!!'); exit;

end; {if}

// устанавливаем значенрм определяюхцих переменных ChangeVar.ShowModal;

MainForm.Repaint;

//

if NewPatt.cbDraft.Checked=true then begin assignfile(faParam,DraftP.NanieOfFile); assignfile(faLisp,'lisp.lsp'); assignfile(faTelo,'iisp.dat');

reset(faParam);

rewrite(faLisp);

writeln(faLisp,'; параметры, считываемые из характеристик двигателя'); 01dSeparator:=DecimalSeparator;

DecimalSeparator:='.';

writeln(faLisp,

-320-

Приложение 1

'(setq DCyl '+floattostrf(DiamCyl*1000,ffFixed,4,3)+')'); writeln(faLisp,

'(setq HodPorsh '+floattostrf(HodPorsh*1000,ffFixed,4,3)+')'); writeln(faLisp;(setq Lambda '+floattostrf(Lambda,ffFixed,4,3)+')'); DecimalSeparator:=01dSeparator;

writeln(faLisp,'; параметры поршня'); readln(faParam,qweStr);

writeln(faLisp;(setq DPorsh (* DCyl '+qweStr+'))'); readln(faParam,qweStr);

writeln(faLisp;(setq HPorsh (* DCyl 4-qweStr+'))'); readln(faParam,qweStr);

writeln(faLisp,'(setq Varh (* DCyl '+qweStr+'))'); readln(faParam,qweStr);

writeln(faLisp;(setq Varll (* DCyl '+qweStr+'))'); readln(faParam,qweStr);

writeln(faLisp,'(setq VarSig (* DCyl 4-qweStr+'))'); readln(faParam,qweStr);

writeln(faLisp;(setq Varb (* DCyl '+qweStr+'))'); readln(faParam,qweStr);

writeln(faLisp;(setq tRing (* DCyl '+qweStr+'))'); readln(faParam,qweStr);

writeln(faLisp,'(setq bRing '+qweStr+')'); readln(faParam,qweStr);

writeln(faLisp;(setq LPalec (* DCyl '+qweStr+'))'); readln(faParam,qweStr);

writeln(faLisp;(setq DPalec (* DCyl '+qweStr+'))'); readln(faParam,qweStr);

writeln(faLisp,'(setq D2PaIec (* DPalec '+qweStr+'))'); readln(faParam,qweStr);

writeln(faLisp;(setq TVtul (* DPalec '+qweStr+'))'); writeln(faLisp,'; параметры колена'); readln(faParam,qweStr);

writeln(faLisp,'(setq DKSh (* DCyl '-i-qweStr+'))'); read]n(faParam,qweStr);

writeln(faLisp,'(setq LKSh (* DKSh '+qweStr+'))'); readln(faParam,qweStr);

writeln(faLisp,'(setq DShSh (* DCyl '+qweStr+'))'); readln(faParam,qweStr);

writeln(faLisp,'(setq LShSh (* DShSh '+qweStr+'))'); readln(faParam,qweStr);