Конвертирование исходного текста программ для станков с ЧПУ из одной системы программирования в другую
Разработка системы автоматического конвертирования исходного текста программ для станков с ЧПУ. Обоснование целесообразности создания такой системы. Критерии экономической эффективности ее функционирования. Оценка безопасности и экологичности проекта.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 23.06.2008 |
Размер файла | 2,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
if oshibka = 1 then
else
begin
I:= StrToFloat(vyh) * 1000;
I:= Int(I); // Отбрасываем дробную часть
I:= I - X_pred;
preobrazovanieVM(I,kadr);
end;
end;
uslovie:= pos('J',kadr);
if uslovie <> 0 then
begin
NaytiKoordinatu(kadr,'J',vyh);
if oshibka = 1 then
else
begin
J:= StrToFloat(vyh) * 1000;
J:= Int(J); // Отбрасываем дробную часть
J:= J - Y_pred;
preobrazovanieVM(J,kadr);
end;
end;
uslovie:= pos('Z',kadr);
if uslovie <> 0 then
begin
NaytiKoordinatu(kadr,'Z',vyh);
if oshibka = 1 then
else
begin
Z:= StrToFloat(vyh) * 1000;
Z:= Int(Z); // Отбрасываем дробную часть
preobrazovanieVM(Z,kadr);
end;
end;
uslovie:= pos('A',kadr);
if uslovie <> 0 then
begin
NaytiKoordinatu(kadr,'A',vyh);
if oshibka = 1 then
else
begin
A:= StrToFloat(vyh) * 1000;
A:= Int(A); // Отбрасываем дробную часть
preobrazovanieVM(A,kadr);
Delete(kadr, uslovie, 1);
Insert('U',kadr,uslovie);
end;
end;
uslovie:= pos('K',kadr);
if uslovie <> 0 then
begin
NaytiKoordinatu(kadr,'K',vyh);
if oshibka = 1 then
else
begin
K:= StrToFloat(vyh) * 1000;
K:= Int(K); // Отбрасываем дробную часть
preobrazovanieVM(K,kadr);
end;
end;
X_pred:= X_nast;
Y_pred:= Y_nast;
end;
procedure PC_VM(var kadr: string);
var
uslovie: integer;
I_est: boolean;
s, st: string;
begin
if (pos('%', kadr) <> 0) or (pos('$', kadr) <> 0) then exit;
I_est:= False;
if (pos('I',kadr) <> 0) or (pos('J',kadr) <> 0) then I_est:= true;
if pos('X',kadr) <> 0 then
begin
NaytiKoordinatu(kadr,'X',vyh);
if oshibka = 1 then
else
begin
X_nast:= StrToFloat(vyh) * 1000;
X_nast:= Int(X_nast); // Отбрасываем дробную часть
preobrazovanieVM(X_nast,kadr);
end;
end
else
if I_est then
begin
uslovie:= pos('Y',kadr); // Преобразуем в число строку
insert('X' + FloatToStr(X_pred), kadr, uslovie);
end;
if pos('Y',kadr) <> 0 then
begin
NaytiKoordinatu(kadr,'Y',vyh);
if oshibka = 1 then
else
begin
Y_nast:= StrToFloat(vyh) * 1000;
Y_nast:= Int(Y_nast); // Отбрасываем дробную часть
preobrazovanieVM(Y_nast,kadr);
end;
end
else
if I_est then
begin
uslovie:= pos('I',kadr); // Преобразуем в число строку
insert('Y' + FloatToStr(Y_pred), kadr, uslovie);
end;
if (pos('G42', kadr) <> 0) or (pos('G41', kadr) <> 0) then
begin
try
s:= Stroka.Strings[Succ(m)]; // ошибка нет строки вообще
except
on EStringListError do // добавляем пустую строку и исключаем ошибку
stroka.Add('');
end;
if pos('X', kadr) = 0 then
begin // Вставка Х и Y если нет
NaytiKoordinatu(Stroka.Strings[Succ(m)], 'X', s);
if oshibka <> 1 then
begin
uslovie:= FindVstavki('X', kadr);
s:= TrimRight(s);
X_nast:= StrToFloat(s) * 1000; // В позиции X Y I J F M
Insert('X' + FloatToStr(X_nast), kadr, uslovie);
end
else
begin
X_nast:= X_pred;
uslovie:= FindVstavki('X', kadr); // В позиции X Y I J F M
Insert('X' + FloatToStr(X_nast), kadr, uslovie);
end;
end;
if pos('Y', kadr) = 0 then
begin
uslovie:= FindVstavki('Y', kadr);
NaytiKoordinatu(Stroka.Strings[Succ(m)], 'Y', s);
s:= TrimRight(s);
Y_nast:= StrToFloat(s) * 1000;
Insert('Y' + FloatToStr(Y_nast), kadr, uslovie);
end;
if (pos('I', Stroka.Strings[Succ(m)]) <> 0) and (pos('J', Stroka.Strings[Succ(m)]) <> 0)
then
begin
Naytikoordinatu(Stroka.Strings[Succ(m)], 'I', st);
I:= StrToFloat(st);
Naytikoordinatu(Stroka.Strings[Succ(m)], 'J', st);
J:= StrToFloat(st);
Podhod_G41_G42_radius;
J:= J * 1000;
J:= Int(J);
if (I_sled = -1) and (J > 0) then J:= -J;
if (I_sled = 1) and (J < 0) then J:= -J;
if Pos('I', kadr) <> 0 then
begin
NaytiKoordinatu(kadr, 'I', s);
PreobrazovanieVM(J, kadr);
end
else
begin
uslovie:= FindVstavki('I', kadr);
Insert('I' + FloatToStr(J), kadr, uslovie);
end;
I:= I * 1000;
I:= Int(I);
if(J_sled = -1) and (I > 0) then I:= -I;
if(J_sled = 1) and (I < 0) then I:= -I;
if Pos('J', kadr) <> 0 then
begin
NaytiKoordinatu(kadr, 'J', s);
PreobrazovanieVM(I, kadr);
end
else
begin
uslovie:= FindVstavki('J', kadr);
Insert('J' + FloatToStr(I), kadr, uslovie);
end;
Exit;
end
else
begin
Podhod_G41_G42_line;
X_sled:= Int(X_sled);
if Pos('X', kadr) <> 0 then
begin
NaytiKoordinatu(kadr, 'I', s);
PreobrazovanieVM(X_sled, kadr);
end
else
begin
uslovie:= FindVstavki('Y', kadr);
Insert(FloatToStr(X_sled), kadr, uslovie);
end;
Y_sled:= Int(Y_sled);
if Pos('Y', kadr) <> 0 then
begin
NaytiKoordinatu(kadr, 'J', s);
PreobrazovanieVM(Y_sled, kadr);
X_pred:= X_nast;
Y_pred:= Y_nast;
exit;
end
else
begin
uslovie:= FindVstavki('X', kadr);
Insert(FloatToStr(Y_sled), kadr, uslovie);
end;
end;
end;
if pos('I',kadr) <> 0 then
begin
NaytiKoordinatu(kadr,'I',vyh);
if oshibka = 1 then
else
begin
I:= StrToFloat(vyh) * 1000;
I:= Int(I); // Отбрасываем дробную часть
preobrazovanieVM(I,kadr);
end;
end;
if pos('J',kadr) <> 0 then
begin
NaytiKoordinatu(kadr,'J',vyh);
if oshibka = 1 then
else
begin
J:= StrToFloat(vyh) * 1000;
J:= Int(J); // Отбрасываем дробную часть
preobrazovanieVM(J,kadr);
end;
end;
if pos('Z',kadr) <> 0 then
begin
NaytiKoordinatu(kadr,'Z',vyh);
if oshibka = 1 then
else
begin
Z:= StrToFloat(vyh) * 1000;
Z:= Int(Z); // Отбрасываем дробную часть
preobrazovanieVM(Z,kadr);
end;
end;
uslovie:= pos('A',kadr);
if uslovie <> 0 then
begin
NaytiKoordinatu(kadr,'A',vyh);
if oshibka = 1 then
else
begin
A:= StrToFloat(vyh) * 1000;
A:= Int(A); // Отбрасываем дробную часть
preobrazovanieVM(A,kadr);
Delete(kadr, uslovie, 1);
Insert('U',kadr,uslovie);
end;
end;
if pos('K',kadr) <> 0 then
begin
NaytiKoordinatu(kadr,'K',vyh);
if oshibka = 1 then
else
begin
K:= StrToFloat(vyh) * 1000;
K:= Int(K); // Отбрасываем дробную часть
preobrazovanieVM(K,kadr);
end;
end;
X_pred:= X_nast;
Y_pred:= Y_nast;
end;
// НАЧАЛО ОСНОВНОЙ ПРОГРАММЫ obrabotka
begin
if (Form1.NomerKadra.State = cbUnchecked) and (Form1.Probel.State = cbUnchecked) and
(Form1.Pustostr.State = cbUnchecked) and (Form2.Ne_obrabatyvat.Checked) then
begin
ShowMessage(' Обработка не задана ');
Goto metka;
end;
Priz_pusto_memo:= false;
kol:= Memo1.Lines.Count; // Количество строк
if kol = 0 then // Если поле пусто
begin
ShowMessage(' В поле редактирования пусто ');
Goto metka;
end;
memo1mod:= true;
Panel1.Caption:= IntToStr(kol);
buf:= 0; m:= 0; I:= 0; J:= 0;
PolChisla_1Proc:= kol div 100;
uvel:= PolChisla_1Proc;
Indikator.Position:= 0;
Proc:= Succ(Indikator.Position);
u:= 100 div kol;
Proci:= u;
stroka:= TStringList.Create();
stroka.Text:= Memo1.Text;
Memo1.Clear;
repeat
bufer:= stroka.Strings[m];
Panel2.Caption:= IntToStr(Succ(m));
Panel2.Refresh;
if (Form1.Probel.Checked)then
DelProbel(bufer); // Удаляем пробелы
if Form1.NomerKadra.Checked then // включен переключатель
nomerkadra(bufer);
if Form2.PC_MAYAK.Checked then
pc_mayak(bufer);
if Form2.PC_VM.Checked then
pc_vm(bufer);
if Form2.VM_MAYAK.Checked then
VM_MAYAK(bufer);
if Form2.MAYAK_VM.Checked then
Mayak_vm(bufer);
if kol >= 100 then
begin
if m >= PolChisla_1Proc then
begin
Indikator.Position:= Proc;
Form1.PanelSostoyaniya.Panels[1].Text:= ' Выполнено ' + IntToStr(Indikator.Position) + ' %';
PanelSostoyaniya.Refresh; // Перерисовка панели
Inc(proc);
PolChisla_1Proc:= PolChisla_1Proc + uvel;
end;
end
else
begin
Indikator.Position:= Proci;
Form1.PanelSostoyaniya.Panels[1].Text:= ' Выполнено ' + IntToStr(Indikator.Position) + ' %';
PanelSostoyaniya.Refresh; // Перерисовка панели
Inc(proci, u);
end;
stroka.Strings[m]:= bufer; // Для токарного станка
if Length(bufer) = 0 then
if Form1.PustoStr.Checked then
pustostroka;
Bufer:= ''; // Очистка строки Буфер
Inc(m); // Следующая строка (+1)
until m >= kol;
Panel1.Caption:= IntToStr(Stroka.Count); // Сколько реально осталось
Form1.PanelSostoyaniya.Panels[1].Text:= ' Выполнено ' + '100' + ' %';
Indikator.Position:= 100;
if (Form2.PC_MAYAK.Checked) or (Form2.PC_VM.Checked) or (Form2.VM_MAYAK.Checked) or (Form2.MAYAK_VM.Checked) then
begin
Form2.PC_VM.Enabled:= false;
Form2.PC_MAYAK.Enabled:= false;
Form2.VM_MAYAK.Enabled:= false;
Form2.MAYAK_VM.Enabled:= false;
Form2.Ne_obrabatyvat.Checked:= true;
end;
try // Ошибка если в Memo1 пробелы
if Stroka.Strings[0] <> '' then // Вставить пустую строку если её нет
Stroka.Insert(0, '');
except
on EStringListError do
end;
Memo1.Text:= Stroka.Text;
stroka.Free;
metka: // если Поле пустое то выход сюда
end;
procedure TForm1.ToolButton6Click(Sender: TObject); // Кнопка очистить
begin
Memo1.Clear;
Panel1.Caption:= '0';
Panel2.Caption:= '0';
Form2.PC_VM.Enabled:= true;
Form2.PC_MAYAK.Enabled:= true;
Form2.VM_MAYAK.Enabled:= true;
Form2.MAYAK_VM.Enabled:= true;
Label1.Caption:= '';
Form2.FormActivate(Sender);
Memo1.SetFocus;
Indikator.Position:= 0;
end;
procedure TForm1.ToolButton4Click(Sender: TObject); // Кнопка параметры
begin
Form2.ShowModal;
end;
procedure TForm1.Toolbutton9Click(Sender: TObject); // Кнопка найти и заменить
begin
ReplaceDialog1.Execute;
end;
procedure TForm1.ReplaceDialog1Replace(Sender: TObject); // Кнопка найти и заменить
label
10;
begin
Memo1.HideSelection:= true;
10:
if pos(ReplaceDialog1.FindText, Memo1.Text) <> 0 then
begin
Memo1.SelStart:= pos(ReplaceDialog1.FindText, Memo1.Text) - 1 ;
Memo1.SelLength:= Length(ReplaceDialog1.FindText);
Memo1.SelText:= ReplaceDialog1.ReplaceText;
goto 10;
end;
Memo1.HideSelection:= false;
end;
procedure TForm1.memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Panel1.Caption:= IntToStr(Memo1.Lines.Count);
end;
procedure TForm1.ToolButton5Click(Sender: TObject); // Кнопка в верхний регистр
begin
Memo1.Text:= UpperCase(Memo1.Text);
end;
procedure TForm1.ToolButton8Click(Sender: TObject);
begin
Form5.Visible:= true;
end;
end.
Файл Unit2.pas
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls;
type
TForm2 = class(TForm)
PereschotProg: TGroupBox;
PC_MAYAK: TRadioButton;
Ne_obrabatyvat: TRadioButton;
PC_VM: TRadioButton;
VM_MAYAK: TRadioButton;
MAYAK_VM: TRadioButton;
Button1: TButton;
Mayk223mp: TRadioButton;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormActivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure Sostoyanie_perekluchateley;
begin
if Form2.Ne_obrabatyvat.Checked then
Form1.PanelSostoyaniya.Panels[0].Text:= st + Form2.Ne_obrabatyvat.Caption
else
if Form2.PC_MAYAK.Checked then
Form1.PanelSostoyaniya.Panels[0].Text:= st + Form2.PC_MAYAK.Caption
else
if Form2.PC_VM.Checked then
Form1.PanelSostoyaniya.Panels[0].Text:= st + Form2.PC_VM.Caption
else
if Form2.VM_MAYAK.Checked then
Form1.PanelSostoyaniya.Panels[0].Text:= st + Form2.VM_MAYAK.Caption
else
if Form2.MAYAK_VM.Checked then
Form1.PanelSostoyaniya.Panels[0].Text:= st + Form2.MAYAK_VM.Caption
else
if Form2.Mayk223mp.Checked then
Form1.PanelSostoyaniya.Panels[0].Text:= st + Form2.Mayk223mp.Caption;
end;
procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
Sostoyanie_perekluchateley;
If Mayk223mp.Checked then
begin
Form2.Close;
end;
end;
procedure TForm2.FormActivate(Sender: TObject);
begin
Sostoyanie_perekluchateley;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
Sostoyanie_perekluchateley;
Form2.Close;
end;
end.
Файл Unit5.pas
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm5 = class(TForm)
GroupBox1: TGroupBox;
RadioButton1: TRadioButton;
Edit1: TEdit;
Label1: TLabel;
ButtonObpabotka: TButton;
ButtonNastroyka: TButton;
procedure FormActivate(Sender: TObject);
procedure ButtonObpabotkaClick(Sender: TObject);
procedure ButtonNastroykaClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
uses unit1, unit6;
{$R *.dfm}
procedure TForm5.FormActivate(Sender: TObject);
begin
Form5.Caption:= Application.Title;
end;
procedure TForm5.ButtonObpabotkaClick(Sender: TObject);
var
stroka, stroka1: TStrings;
Name_File, kol_v_stroka: integer;
chast, chot, ObshiySchot: integer;
st, name: WideString;
begin
stroka:= TStringList.Create();
stroka1:= TStringList.Create();
chot:= 0; Name_File:= 1; chast:= 0;
chast:= StrToInt(Edit1.Text) * 955;
kol_v_stroka:= 0;
ObshiySchot:= 0;
stroka1.Text:= Form1.memo1.Text;
repeat
try
st:= stroka1.Strings[ObshiySchot];
except
on EStringListError do
begin
Stroka.Free;
stroka1.Free;
Form1.memo1.Text:= ' Ошибка в редакторе: Возможно в поле редактирования пусто или одни пробелы';
Form5.Close;
Exit;
end;
end;
if chot <= chast then
begin
stroka.Insert(kol_v_stroka, st);
Inc(chot, Length(st)); // Увеличиваем на длину строки
Inc(kol_v_stroka);
Inc(ObshiySchot);
end
else
begin
name:= Concat('E:\Наладчик\Пров\', IntToStr(Name_File), '.txt');
stroka.SaveToFile(name);
stroka.Clear;
chot:= 0;
kol_v_stroka:= 0;
Name_File:= Succ(Name_File);
end;
if (stroka1.Count = ObshiySchot) and (Length(stroka.Text) <> 0) then
begin
name:= Concat('E:\Наладчик\Пров\', IntToStr(Name_File), '.txt');
stroka.SaveToFile(name);
end;
until stroka1.Count = ObshiySchot;
stroka.Free;
stroka1.Free;
Form5.Close;
ShowMessage(' Обработка завершена ');
end;
procedure TForm5.ButtonNastroykaClick(Sender: TObject);
var
NameF: WideString;
begin
Form6.Visible:= true;
end;
end.
Файл Unit6.pas
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Registry, FileCtrl;
type
TForm6 = class(TForm)
Panel1: TPanel;
Memo1: TMemo;
ButtonRedEndFile: TButton;
ButtonRedPapku: TButton;
Label1: TLabel;
SaveDialog1: TSaveDialog;
procedure FormActivate(Sender: TObject);
procedure ButtonRedPapkuClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
RegIni: TRegistry;
implementation
uses unit1;
{$R *.dfm}
procedure TForm6.FormActivate(Sender: TObject);
begin
Form6.Caption:= Application.Title;
RegIni:= TRegistry.Create;
RegIni.RootKey:= HKEY_LOCAL_MACHINE;
RegIni.OpenKey('Software\Naladchik', false);
Label1.Caption:= RegIni.ReadString('pach');
RegIni.CloseKey;
RegIni.Free;
end;
procedure TForm6.ButtonRedPapkuClick(Sender: TObject);
begin
if SaveDialog1.Execute then
begin
Label1.Caption:= SaveDialog1.FileName;
RegIni:= TRegistry.Create;
RegIni.RootKey:= HKEY_LOCAL_MACHINE;
RegIni.OpenKey('Software\Naladchik', true);
RegIni.CreateKey('a');
RegIni.WriteString('pach', SaveDialog1.FileName);
RegIni.CloseKey;
RegIni.Free;
end;
end;
end.
ПРИЛОЖЕНИЕ 2
РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ
Главное окно программы
При запуске программы, появляется главное окно, представленное на рис.П.2.1.
Рис.П. 2.1
При нажатии кнопки «Открыть», открывается диалоговое окно выбора файла рис. П.2.2.
Рис.П.2.2
Выбираем обработку рис.П.2.3. и нажимаем «Закрыть»
Рис.П.2.3
Нажимаем кнопку «Обработка» рис.П.2.4.
Рис.П.2.4
Всё программа полностью обработана заданным методом обработки
ПРИЛОЖЕНИЕ 3
РУКОВОДСТВО ПРОГРАММИСТА
3.1. Назначение программы
Программа «Наладчик» предназначена для конвертирования исходного текста программ для станков с ЧПУ. И предназначена для использования на производстве в различных областях.
Программа позволяет:
– конвертировать программный текст в любою из доступных программе систем;
– удалять лишние пробелы;
– удалять пустые строки;
– устанавливать периодическую нумерацию кадров;
– задавать шрифт(цвет, размер, тип);
– печать документа;
– визуальный контроль обработки;
– менять регистр букв к заглавным(что требует синтаксис программ);
– разбивать программу на заданное количество частей;
– осуществляет поиск и замену по образцу.
3.2. Условия применения программы
Разработанная программа является приложением MS Windows. Для ее работы требуется наличие на компьютере операционной системы MS Windows NT4.0/2000/XP и все вытекающее отсюда техническое обеспечение.
Кроме того, требуется:
– физическая память 1Mб + память на используемые и создаваемые текстовые файлы (не менее 5 Мб);
– оперативная память 2*размер текстового файла. При нехватке оперативной памяти может использоваться виртуальная память. А за счет того, что все данные находятся в памяти, сильно сокращается время решения задач.
Для написания программы использовалась среда разработки Borland Delphi 7.
3.3. Характеристики программы
После запуска программы пользователь может запускать решение задачи в следующей последовательности:
- выбор (открытие) текстового файла;
- выбор метода конвертирования;
- выбор шрифта;
- выбор дополнительных методов обработки
3.4. Обращение к программе
Запустить программу можно из оболочки Windows, посредством запуска файла Наладчик.ехе
3.5. Входные и выходные данные
В качестве входных и выходных данных используются текстовые файлы.
3.6 Сообщения
Сообщения, выдаваемые оператору приведены в табл. П.3.1.
Таб.П.3.1
Вид сообщения |
Описание |
Действие |
|
В поле редактирования пусто |
В поле редактирования нет ни какого текста |
Введите текст в поле редактирования |
|
Обработка не задана |
Не поставлена ни одна галочка задач обработки |
Задайте обработку |
ПРИЛОЖЕНИЕ 4
РУКОВОДСТВО ОПЕРАТОРА
4.1. Назначение программы
Программа «Наладчик» предназначена для конвертирования исходного текста программ для станков с ЧПУ. И предназначена для использования на производстве в различных областях.
Программа позволяет:
– конвертировать программный текст в любою из доступных программе систем;
– удалять лишние пробелы;
– удалять пустые строки;
– восстанавливать периодическую нумерацию кадров;
– задавать шрифт(цвет, размер, тип);
– печать документа;
– визуальный контроль обработки;
– менять регистр букв к заглавным(что требует синтаксис программ);
– разбивать программу на заданное количество частей;
– осуществляет поиск и замену по образцу.
4.2. Условия выполнения программы
Разработанная программа является приложением MS Windows. Для ее работы требуется наличие на компьютере операционной системы MS Windows 98/NT4.0/2000/XP и все вытекающее отсюда техническое обеспечение.
Кроме того, требуется:
– физическая память 1Mб + память на используемые и создаваемые из текстовые файлы (не менее 10 Мб);
– оперативная память 2*размер используемого файла. При нехватке оперативной памяти может использоваться виртуальная память. А за счет того, что все данные находятся в памяти, сильно сокращается время решения задач.
Для написания программы использовалась среда разработки Borland Delphi 7.
4.3. Выполнение программы
Программа представлена в виде формы, в главном окне которого производится выбор функции программы. Режим работы программы - диалоговый. Все выполняемые программой функции запускаются с помощью соответствующих кнопок.
Для запуска программы оператор из оболочки системы Windows должен произвести запуск файла Наладчик.ехе
Главное окно программы
Рис.П.4.1
Панель инструментов
Рис.П.4.2
----- открыть файл
----- сохранить файл
----- распечатать содержимое поля редактирования
----- при нажатии этой кнопки появляется дополнительный диалог обработки (см. далее)
----- очистить поле редактирования
----- при нажатии этой кнопки появляется дополнительный диалог замены (см. далее)
----- при нажатии всё содержимое поля редактирования преобразуется к верхнему регистру
------ при нажатии появляется дополнительный диалог (разбивка файла на несколько частей)
Меню файл
Выход - выход из программы;
Сохранить - вызов диалогового окна (Сохранить как);
Открыть - вызов диалогового окна (Сохранить как);
Печать - вызов диалогового окна (Печать).
Меню настройки
Шрифт - вызов диалогового окна(Шрифт);
Принтер - вызов диалогового окна(Настройка печати);
Параметры - вызов диалогового окна(Параметры).
Меню справка
Вызов диалогового окна(Версия) Рис.П.4.3.
Рис.П.4.3
Работа начинается с открытия текстового файла либо выбором пункта меню Файл - открыть. В результате открывается диалог выбора файла Рис. П.4.4.
Рис. П.4.4
Выбираем файл, нажимаем открыть. Следующим действием нажимаем, появляется диалог, в котором выбираем желаемый метод обработки.
Не обрабатывать - пересчет производится не будет.
ПК - МАЯК - выбрана обработка конвертирование системы (Sinumeric - Маяк).
ПК - ВМ - выбрана обработка конвертирование системы (Sinumeric - ВМ).
ВМ - МАЯК - выбрана обработка конвертирование системы (ВМ - Маяк).
МАЯК - ВМ - выбрана обработка конвертирование сис Рис.П.4.5 темы (Маяк - ВМ).
Кнопка «Закрыть» закрывает диалог, В результате выбранных вами действий результат выбора отображается в левом нижнем углу главной формы рис.П.4.6.
Рис.П.4.6
Выбрано обработка ПК - МАЯК
Дополнительная панель настройки обработки
Номера кадров - упорядочить номера кадров, начиная с 1.
Пробелы - будут удалены все пробелы.
Пустые строки - будут удалены все пустые строки.
Рис.П.4.7
4.4 Информация во время обработки
нажимаем кнопку <Обработка>
Рис.П.4.8
Это - информационная панель, отображающая в процентах и графически, сколько уже обработано данных файла во время обработки рис.П.4.9.
Рис.П.4.9
Во время обработки в верхней части окна показано, сколько обработано строк, в нижней сколько всего рис.П.4.9.1.
Рис.П.4.9.1
Всё файл обработан, сохраняем или меню файл - сохранить
В результате нажатия вышесказанной кнопки появляется следующий диалог.
Выберите желаемый файл из списка или напишите имя в поле «Имя файла» рис.П.4.9.2.
Рис.П.4.9.2
всё, можно закрывать программу кнопка «Закрыть»
Функция разделения файла
При нажатии кнопки на панели инструментов (Рис.П.4.9.3.) появляется диалог «Разбивка файла на несколько частей»
Рис.П.4.9.3
При нажатии на кнопку «Обработка» происходит разбивка файла на файлы заданной ёмкости. Нажимаем кнопку «Настройка» рис.П.4.9.3.
Рис.П.4.9.4
В этом диалоге при нажатии кнопки «Редактирование вставки в конец файла» текст набранный в поле редактора (находится внизу формы) вставляется в каждую часть файла рис.П.4.9.4.
При нажатии кнопки «Редактировать конечную папку» появляется диалог «Сохранить как» (Рис.П.4.9.2 ).
4.5. Дополнительные настройки
Меню - Настройки
Шрифт - выбор шрифта для поля редактирования рис.П.4.9.5.
Рис.П.4.9.5
Принтер - установка свойств принтера для вывода на печать рис.П.4.9.6.
Рис.П.4.9.6
Это диалог вызывается нажатием кнопки и работает как замена чего-то чем-то. В данном примере все вхождения X заменяются Y рис.П.4.9.7.
Рис.П.4.9.7
4.6. Инструкции по обработке исключительных ситуаций
Во время работы программы могут поступать сообщения пользователю (исключительные ситуации), которые запрограммированы лишь для повышения надёжности программы и исключения, как можно больше ошибок.
- Это сообщение поступает, когда вы нажимаете кнопку <Обработка>, но в поле редактирования пусто.
Действия - откройте не пустой файл и повторите обработку.
Рис.П.4.9.8
Сообщение появляется при попытке закрыть программу, не сохранив изменившееся поле редактирования.
Действия - если хотите сохранить изменённый файл нажмите <Yes> иначе <No>
рис.П.4.9.9
4.7. Дополнительные инструкции по программированию и математическая постановка
Как отмечалось выше, эта версия программы обрабатывает исходный код, который генерирует программа Unigraphics.
Пример кода из Unigraphics
Программа 1
N0800 X90.91 Y-160.881
N0810 G3 X91.643 Y-166.402 I423.693 J53.462
N0820 X92.657 Y-173.301 I350.64 J47.998
N0830 G1 X91.625 Y-178.443
N0840 G2 X91.623 Y-178.442 I2.026 J6.7
N0850 X90.181 Y-177.736 I1.441 J4.76
N0860 G1 X89.494 Y-177.174
N0870 X89.242 Y-176.969
Как видно из примера, координаты задаются в миллиметрах до 0.001 долей (при обработке в программе Наладчик размеры разрядностью более 0.001 отбрасываются).
Пример Unigraphics 0.0016 после обработки Наладчик 0.001
Центр радиуса задаётся относительно начальной точки радиуса (относительно).
N0810 G3 X91.643 Y-166.402 I423.693 J53.462
ПК - МАЯК
У Маяков, как известно координаты задаются тоже в миллиметрах, но I, J - координаты центра радиусов задаются относительно начала системы координат (абсолютно) таб.П.4.10.
Таблица П4.10
Программа до и после обработки.
Программа до обработки(программа 1) |
Программа после обработки ПК - МАЯК(программа 2) |
|
N0800 X90.91 Y-160.881N0810 G3 X91.643 Y-166.402 I423.693 J53.462N0820 X92.657 Y-173.301 I350.64 J47.998N0830 G1 X91.625 Y-178.443N0840 G2 X91.623 Y-178.442 I2.026 J6.7N0850 X90.181 Y-177.736 I1.441 J4.76N0860 G1 X89.494 Y-177.174N0870 X89.242 Y-176.969 |
N73X90.91Y-160.881N74G3X91.643Y-166.402I514.603J-107.419N75X92.657Y-173.301I442.283J-118.404N76G1X91.625Y-178.443N77G2X91.623Y-178.442I93.651J-171.743N78X90.181Y-177.736I93.064J-173.682N79G1X89.494Y-177.174N80X89.242Y-176.969 |
Принцип пересчёта:
Пересчёт радиусов
Iнаст = Xпред + Iнаст Это формулы пересчёта радиусов с относительной в
Jнаст = Yпред + Jнаст абсолютную систему координат.
То есть, для кадра N74 (программа 2) берём из кадра N0800 (программа 1) X, Y из N0810 берём I, J получаем:
Iнаст = X90.91 + I423.693 = 514.603 результат обработки в программе 2 (кадр N74)
Jнаст = Y-160.881 + J53.462 = -107.419
Расчёт линейных заходов (функции G41, G42) на эквидистанту контура обрабатываемой детали.
Таблица П4.11
Добавление недостающих координат
до обработки (программа 1) |
после обработки (программа 2) |
|
N5G1Z-25.F500M8N6G90G42D20X-104.6Y0F20N7Y-23. |
N5G1Z-25.F500M8N6G90G42D20X-104.6Y0I0J-23.F20N7Y-23. |
Здесь мы видим, что в программу были вставлены недостающие части кадра I и J координаты таб.П4.11.
I = X_sled - X_nast; Это формулы расчёта координат заходов на линейный
J = Y_sled - Y_nast контур детали.
То, есть для кадра N6 (программа 2) берём из кадра N6 и N7 (программа 1) настоящие и следующие значения координат X и Y.
I = (его нет значит значение то же, что и предыдущее) 104.6 - 104.6 = 0
J = 23 - 0 = 23
Расчёт заходов на радиус (функции G41, G42) на эквидистанту контура обрабатываемой детали.
С начала рассчитываем значение (I и J) из следующего кадра.
Логическое решение задачи
Если G3, то проверяем значение заданных координат:
Если I_sled > 0 и J_sled >= 0, то I = 1, J = -1;
Если I_sled < 0 и J_sled <= 0, то I = -1, J = 1;
Если I_sled < 0 и J_sled >= 0, то I = 1, J = 1;
Если I_sled > 0 и J_sled <= 0, то I = -1, J = -1
Если G2, то проверяем значение заданных координат:
Если I_sled > 0 и J_sled >= 0, то I = -1, J = 1;
Если I_sled < 0 и J_sled <= 0, то I = 1, J = -1;
Если I_sled < 0 и J_sled >= 0, то I = -1, J = -1;
Если I_sled > 0 и J_sled <= 0, то I = 1, J = 1
Следующее операция описана формулами:
I_nast = Y_nast + J_sled
J_nast = X_nast + I_sled
Заключительные вычисления:
если I = -1 и J > 0, то J_nast:= -J_nast;
если I = 1 и J < 0, то J_nast:= -J_nast;
если J = -1 и I > 0, то I_nast:= -I_nast;
если J = 1 и I < 0, то I_nast:= -I_nast.
В данном примере срабатывает условие, если I_sled > 0 и J_sled >= 0,
значит I = 1, J = -1, то есть I - будет положительным, а J - отрицательным
Далее по формулам: I_nast = Y_nast + J_sled; J_nast = X_nast + I_sled
находим: I_nast = 0 + 0 = 0; J_nast = 104.6 + (-2.5) = 102.1
Залючительные вычисления, если I = 1 и J < 0, то J_nast:= -J_nast;
J_nast = -102.1, что мы и видим в таб. П4.12.
Таблица П4.12
Расчёт заходов на радиус (функции G41, G42)
до обработки (программа 1) |
после обработки (программа 2) |
|
N5G1Z-25.F500M8N6G90G42D20X-104.6Y0I0J-23.F20N8G3X-102.1Y-25.5I2.5J0.0 |
N1G1Z-25.F500M8N2G90G42D20X-104.6Y0I0J-102.1F20N3G3X-102.1Y-25.5I-102.1J0 |
Не пересчитывайте программу дважды. Обычно бывает так - программист сгенерировал программу в (Unigraphics) или где-то в другом редакторе на МАЯК или ВМ в «Наладчике» и забыл ещё вставить код, он его добавляет и опять открывает и пересчитывает. Вообще-то программа не даст пересчитать дважды, но если открыть и закрыть файл то можно просчитать ещё раз (сколько угодно раз можно пересчитывать только номера кадров, пустые строки и пробелы, без урона для программы). Здесь же чисто математический расчёт и программа, пересчитанная дважды, не будет правильной.
СОДЕРЖАНИЕ
- ВВЕДЕНИЕ 4
- 1. РАЗРАБОТКА СИСТЕМЫ АВТОМАТИЧЕСКОГО КОН ВЕРТИРОВАНИЯ ИСХОДНОГО ТЕКСТА ПРОГРАММ ДЛЯ СТАНКОВ С ЧПУ 6
- 1.1. Обоснование целесообразности разработки системы автоматического конвертирования текста исходных программ для станков с ЧПУ 6
- 1.1.1. Назначение системы 6
- 1.1.2. Характеристика функциональной структуры системы 6
- 1.1.3. Обоснование цели создания системы 7
- 1.1.4. Обоснование состава автоматизируемых задач 7
- 1.2. Аналитический обзор 8
- 1.3. Основные требования к системе 10
- 1.3.1. Основные цели создания системы и критерии эффективности её функционирования 10
- 1.3.2. Функциональное назначение системы 10
- 1.3.3. Особенности программы и условия её эксплуатации 11
- 1.3.4. Требования к функциональной структуре 11
- 1.3.5. Требования к техническому обеспечению 12
- 1.3.6. Требования к информационному обеспечению 12
- 1.3.7 Требования к программному обеспечению 12
- 1.4. Основные технические решения проекта системы 13
- 1.4.1. Решение по комплексу технических средств 13
- 1.4.2. Описание системы программного обеспечения 13
- 2. РАЗРАБОТКА ЗАДАЧИ «Конвертирование исходного текста программ для станков с ЧПУ» 14
- 2.1. Описание постановки задачи 14
- 2.1.1. Характеристика задачи 14
- 2.1.2. Входная информация 14
- 2.1.3. Выходная информация 14
- 2.1.4. Математическая простановка задачи 15
- 2.2. Описание алгоритма метода выбора обработки 20
- 2.2.1. Назначение и характеристика алгоритма 20
- 2.2.2. Используемая информация 20
- 2.2.3. Результаты решения 20
- 2.2.4. Алгоритм решения 20
- 2.2.5. Список условных обозначений 21
- 2.3 Описание алгоритма выбора вспомогательных методов обработки 23
- 2.3.1. Назначение и характеристика алгоритма 23
- 2.3.2. Используемая информация 23
- 2.3.3. Результаты решения 23
- 2.3.4. Алгоритм решения 23
- 2.4. Описание алгоритма конвертирования 24
- 2.4.1. Назначение и характеристика алгоритма 24
- 2.4.2. Алгоритм решения 24
- 2.5 Описание программы «Наладчик» 27
- 2.5.1. Водная часть 27
- 2.5.2. Функциональное назначение 27
- 2.5.3. Описание информации 28
- 2.5.4. Используемые подпрограммы 28
- 2.5.5. Описание логики 29
- 2.6. Описание контрольного примера 30
- 2.6.1. Назначение 30
- 2.6.2. Исходные данные 30
- 2.6.3. Результаты расчета 30
- 2.6.4. Результаты испытания 30
- 3. ОРГАНИЗАЦИОННО-ЭКОНОМИЧЕСКАЯ ЧАСТЬ 31
- 3.1. Обоснование необходимости разработки системы конвертирования текста программ для станков с ЧПУ 31
- 3.2. Планирование разработки 31
- 3.3. Расчет расходов на создание системы 32
- 4. БЕЗОПАСНОСТЬ И ЭКОЛОГИЧНОСТЬ ПРОЕКТА 37
- 4.11 Анализ вредных и опасных производственных факторов 37
- 4.2. Техника безопасности при работе с компьютером 39
- 4.3. Электробезопасность при работе с компьютером 41
- 4.4. Требования к освещению рабочего места и его расчет 42
- 4.4.1. Требования к освещению рабочего места 42
- 4.4.2. Расчет освещенности рабочего места 44
- 4.5. Параметры микроклимата, загрязнение воздуха рабочей зоны вредными веществами 47
- 4.6. Пожаробезопасность при работе с компьютером 48
- ЗАКЛЮЧЕНИЕ 52
- СПИСОК ЛИТЕРАТУРЫ 52
- ПРИЛОЖЕНИЕ 1 ТЕКСТ ПРОГРАММЫ 54
- ПРИЛОЖЕНИЕ 2 РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ 84
- ПРИЛОЖЕНИЕ 3 РУКОВОДСТВО ПРОГРАММИСТА 86
- ПРИЛОЖЕНИЕ 4 РУКОВОДСТВО ОПЕРАТОРА 88
Подобные документы
Модели конвертирования образовательного контента. Основные объекты разрабатываемой автоматизированной системы. Диаграмма деятельностей для прецедента "Извлечение структуры документа". Структурная модель системы конвертирования контента, модель интерфейса.
реферат [3,6 M], добавлен 30.03.2011Особенности графической среды разработки и Visual C++. Разработка проекта с использованием функций библиотеки MFC для удаления комментариев из текстов программ, автоматического выбора языка, на котором написана утилита и сохранения результата в файл.
курсовая работа [22,7 K], добавлен 07.11.2010Классификация программ обработки текстовых документов. Общие принципы оформления издания. Правила набора текста. Системы распознавания текста (OCR). Комплекс программного обеспечения для настольных издательских систем. Примеры текстовых редакторов.
презентация [75,0 K], добавлен 13.08.2013Цели, задачи и виды, методы и направления обработки информации, современные системы. Проблемы, связанные с компьютерными способами обработки информации. Конвертирование текста из DJVU в PDF, преобразование из PDF в WORD, редактирование полученного текста.
дипломная работа [1,8 M], добавлен 18.06.2011Структура заданного исходного файла и структуры данных, соответствующие данным файла. Подпрограмма проверки принадлежности текста к одной из шести кодовых таблиц. Алгоритмы перекодировки файла в cp1251. Алгоритм сортировки записей исходного файла.
курсовая работа [63,7 K], добавлен 12.12.2010Построение компилятора с языка высокого уровня как одного из элементов системы программирования. Разработка компилятора ассемблера, модификация базы данных исходного макета. Загрузчик, эмулятор, отладчик. Использование Flex и Bison для программирования.
курсовая работа [599,0 K], добавлен 04.11.2014Обзор существующих моделей параллельного программирования, основные средства отладки эффективности MPI-программ, общие проблемы всех средств трассировки. Создание экспериментальной системы отладки эффективности MPI-программ, этапы работы анализатора.
дипломная работа [767,2 K], добавлен 14.10.2010Характеристика предприятия ТОО "Com Sales Group". Составление программ на языке программирования. Составление алгоритмов, разработка численных методов решения задач. Методы откладки программ. Анализ технологии машинной обработки экономической информации.
отчет по практике [1,3 M], добавлен 19.04.2016Степень переносимости исходного кода между различными платформами. Первый язык программирования высокого уровня, имеющий транслятор. Программа Fortran, ее версии, отличия от других программ. Составление программ на языке программирования Fortran.
курсовая работа [45,5 K], добавлен 04.06.2014Перевод - процесс создания на основе исходного текста на одном языке равноценного ему в коммуникативном отношении текста на другом языке, требования к обеспечению его эквивалентности. Машинные технологии перевода; характеристика систем Translation Memory.
презентация [347,8 K], добавлен 06.01.2014