Пожаробезопасность при работе с компьютером
Помещение, в котором установлено рабочее место инженера-программиста, относится к категории Д по взрывопожароопасности, так как не содержит горючих веществ, но лишь негорючие вещества и материалы в холодном состоянии. Пожары в помещении, в котором находится ЭВМ, представляют особую опасность, так как сопряжены с большими материальными потерями. Площадь помещения, в котором ведется проектирование, невелика и составляет 8 м2. Как известно пожар может возникнуть при взаимодействии горючих веществ, окисления и источников зажигания. В помещении присутствуют все три основные фактора, необходимые для возникновения пожара. Горючими компонентами являются: строительные материалы для акустической и эстетической отделки помещений, двери, полы, бумага, изоляция кабелей и др. Противопожарная защита - это комплекс организационных и технических мероприятий, направленных на обеспечение безопасности людей, на предотвращение пожара, ограничение его распространения, а также на создание условий для успешного тушения пожара. Источниками зажигания в помещении, содержащем ЭВМ, могут быть электронные схемы от ЭВМ, приборы, применяемые для технического обслуживания, устройства электропитания, где в результате различных нарушений образуются перегретые элементы, электрические искры и дуги, способные вызвать загорания горючих материалов. В современных ЭВМ очень высока плотность размещения элементов электронных схем. В непосредственной близости друг от друга располагаются соединительные провода, кабели. При протекании по ним электрического тока выделяется значительное количество теплоты. При этом возможно оплавление изоляции. Для отвода избыточной теплоты от ЭВМ служат системы вентиляции и кондиционирования воздуха. При постоянном действии эти системы представляют собой дополнительную пожарную опасность. Одной из наиболее важных задач пожарной защиты является защита строительных помещений от разрушений и обеспечение их достаточной прочности в условиях воздействия высоких температур при пожаре. Учитывая высокую стоимость электронного оборудования, а также категорию его пожарной опасности, здания, в которых предусмотрено размещение ЭВМ, должны быть 1 и 2 степени огнестойкости. К средствам тушения пожара, предназначенных для локализации небольших возгораний, относятся пожарные стволы, внутренние пожарные водопроводы, огнетушители, сухой песок, асбестовые одеяла и т. п. В соответствии с “Типовыми правилами пожарной безопасности для промышленных предприятий” залы ЭВМ, помещения для внешних запоминающих устройств, подготовки данных, сервисной аппаратуры, архивов, копировально-множительного оборудования и т.п. необходимо оборудовать дымовыми пожарными извещателями. Так как в этих помещениях при возгорании различных пластмассовых, изоляционных материалов и бумажных изделий выделяется значительное количество дыма и мало теплоты. Помещение, в котором производится разработка данного проекта, необходимо оборудовать средствами оповещения о пожаре, а также средствами для тушения пожара. Электрические установки представляют для человека большую потенциальную опасность, так как в процессе эксплуатации или проведении профилактических работ человек может коснуться частей, находящихся под напряжением. Специфическая опасность электроустановок: токоведущие проводники, корпуса стоек ЭВМ и прочего оборудования, оказавшегося под напряжением в результате повреждения (пробоя) изоляции, не подают каких-либо сигналов, которые предупреждают человека об опасности. Реакция человека на электрический ток возникает лишь при протекании последнего через тело человека. Разрядные токи статического электричества чаще всего возникают при прикосновении к любому из элементов ЭВМ. Такие разряды опасности для человека не представляют, но кроме неприятных ощущений они могут привести к выходу из строя ЭВМ. Для снижения величины возникающих зарядов статического электричества покрытие технологических полов следует выполнить из однослойного поливинилхлоридного антистатического линолеума. В ходе дипломного работы были выявлены вредные факторы, влияющие на работоспособность инженера-программиста. Для обеспечения безопасных условий труда инженера-программиста были выдвинуты требования к электро- и пожаробезопасности на рабочем месте. Также был произведен расчет общего освещения, в результате которого была выявлена недостаточность освещения. Предлагаемые меры: замена ламп на лампы с большим световым потоком.
ЗАКЛЮЧЕНИЕ В ходе дипломной работы было разработано ПО, позволяющее решать задачу автоматизированного пересчёта программного кода для станков с ЧПУ с использованием различных систем программирования. Программа была написана на языке высокого уровня Object Pascal в среде разработки Borland Delphi 7. В процессе разработки были досконально исследованы системы программирования станков с ЧПУ, такие как (Вм, Маяк, Sinumerik). Результаты тестирования показали что, программа верно пересчитывает программный код в различные системы программирования при этом устраняет ошибки допущенные программистом, а так же имеет много вспомогательных настроек. Что значительно упрощает человеко-машинное взаимодействие и повышает время разработки программного кода и ввод его в эксплуатацию. СПИСОК ЛИТЕРАТУРЫ 1. Корн Г., Корн Т. Справочник по математике для научных работников и инженеров. - М.: Наука, 1979. – 720с. 2. Никита Культин Delphi 6. Программирование на Object Pascal. – СПб.: БХВ – Петербург, 2002. – 528 с.: ил. 3. http://tnr.kulichki.com/techedit/te.html - TechEdit 2.1.1 относится к разряду специального ПО. С его помощью можно автоматизировать процесс разработки программ для ЧПУ. 4. Гофман В. Э., Хомоненко А. Д. Delphi 6. – СПБ.: БХВ – Петербург, 2002. – 1152 с.: ил 5. ГОСТ 12.0.002-80. Система стандартов безопасности труда. Термины и определения. – М.: ИПК Издательство стандартов, 2002 6. СанПиН 2.2.4. 548 – 96. Гигиенические требования к микроклимату производственных помещений. – М.: Госкомсанэпиднадзор, 1996. 7. ГОСТ 12.1.006–84. ССБТ. Электромагнитные поля радиочастот. Допустимые уровни на рабочих местах и требования к проведению контроля - М.: Издательство стандартов, 1985. 8. СанПиН 2.2.2. 542-96. Гигиенические требования к видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работы. – М.: Госкомсанэпиднадзор, 1996. 9. ГОСТ 12.1.038-83. Система стандартов безопасности труда. Электробезопасность. Термины и определения. – М.: Издательство стандартов, 1983. 10. ГОСТ 12.1.004-91. Система стандартов безопасности труда. Пожарная безопасность. Общие положения. – М.: Издательство стандартов, 1991. 11. ГОСТ 12.1.003–83. ССБТ. Шум. Общие требования безопасности (с изменениями по И-1-III-89). 12. Почерняев С.В., Килин И.В., Сенилов М.А. Методические указания по дипломному проектированию. – Ижевск: Издательство ИжГТУ, 1994. 13. ГОСТ 19.701-90 ЕСПД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения. – М.: Издательство стандартов, 1991 14. ГОСТ 19.105-78 ЕСПД. Общие требования к программным документам. – М.: Издательство стандартов, 1988 15. ГОСТ 19.401-78 ЕСПД. Текст программы. Требования к содержанию и оформлению. – М.: Издательство стандартов, 1988 16. ГОСТ 19.404-79 ЕСПД. Пояснительная записка. Требования к содержанию и оформлению. – М.: Издательство стандартов, 1988 17. ГОСТ 19.504-79 ЕСПД. Руководство программиста. Требования к содержанию и оформлению. – М.: Издательство стандартов, 1988 18. ГОСТ 19.505-79 ЕСПД. Руководство оператора. Требования к содержанию и оформлению. – М.: Издательство стандартов, 1988
ПРИЛОЖЕНИЕ 1 ТЕКСТ ПРОГРАММЫ Файл Project1.dpr program Project1;
uses Forms, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {Form2}, Unit3 in 'Unit3.pas' {AboutBox}, Unit5 in 'Unit5.pas' {Form5}, Unit6 in 'Unit6.pas' {Form6};
{$R *.res}
begin Application.Initialize; Application.Title := 'Наладчик 1.6.1'; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm5, Form5); Application.CreateForm(TForm6, Form6); Form1.Label3.Caption:= 'Всего строк'; Application.CreateForm(TForm2, Form2); Application.CreateForm(TAboutBox, AboutBox); Application.Run; end. Файл Unit1.pas
unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus, ExtCtrls, ToolWin, ComCtrls, ImgList, Printers, DBCtrls, Registry, IniFiles;
type TForm1 = class(TForm) memo1: TMemo; MainMenu1: TMainMenu; OpenDialog1: TOpenDialog; FontDialog1: TFontDialog; PrinterSetupDialog1: TPrinterSetupDialog; PrintDialog1: TPrintDialog; fayl: TMenuItem; Nastroyki: TMenuItem; fond: TMenuItem; Printery: TMenuItem; ToolBar1: TToolBar; ToolButton1: TToolButton; ImageList1: TImageList; Parametry: TMenuItem; ToolButton2: TToolButton; SaveDialog1: TSaveDialog; ToolButton3: TToolButton; Label1: TLabel; Help: TMenuItem; Versia: TMenuItem; Vyhod: TMenuItem; Save: TMenuItem; Open: TMenuItem; Print: TMenuItem; ToolButton4: TToolButton; ToolButton6: TToolButton; NomerKadra: TCheckBox; Probel: TCheckBox; Pustostr: TCheckBox; PanelSostoyaniya: TStatusBar; Indikator: TProgressBar; ToolButton9: TToolButton; ReplaceDialog1: TReplaceDialog; Cancel: TButton; Obrabotka: TButton; Label2: TLabel; Label3: TLabel; Panel1: TPanel; Panel2: TPanel; ToolButton5: TToolButton; ToolButton8: TToolButton;
procedure ButPrinterClick(Sender: TObject); procedure ButPechatClick(Sender: TObject); procedure fondClick(Sender: TObject); procedure PrinteryClick(Sender: TObject); procedure PechatClick(Sender: TObject); procedure ButParametrClick(Sender: TObject); procedure FormResize(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormCreate(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure ParametryClick(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure VersiaClick(Sender: TObject); procedure VyhodClick(Sender: TObject); procedure SaveClick(Sender: TObject); procedure OpenClick(Sender: TObject); procedure PrintClick(Sender: TObject); procedure CancelClick(Sender: TObject); procedure ToolButton6Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject); procedure ToolButton9Click(Sender: TObject); procedure ReplaceDialog1Replace(Sender: TObject); procedure ObrabotkaClick(Sender: TObject); procedure memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure ToolButton5Click(Sender: TObject); procedure ToolButton8Click(Sender: TObject);
private { Private declarations } public { Public declarations } end;
const st = ' Параметры: '; // текст в строке состояния + в модуле 2 Code_Begin = 100; var Form1: TForm1; Code_My, nach, oshibka, m, uslovie: Integer; Code_Reg: longint; proverka_sushesvovania_ini: byte; reestra, reestrc, reestrb, reestrMy_Code, reestrReg_Code: integer; reestrversia: string[20]; nach_period, Hac: integer; Stroka: TStrings; memo1mod: boolean; I, J, I_sled, J_sled: real; X_nast, X_pred, X_sled, Y_nast, Y_pred, Y_sled: real; Z, A, Uvmmayak, K : real;
implementation
uses Unit2, Unit3, Unit5;
{$R *.dfm}
procedure TForm1.ButPrinterClick(Sender: TObject); begin PrinterSetupDialog1.Execute end;
procedure TForm1.ButPechatClick(Sender: TObject); begin PrintDialog1.Execute end;
procedure TForm1.FondClick(Sender: TObject); begin if FontDialog1.Execute then Memo1.Font:= FontDialog1.Font; end;
procedure TForm1.PrinteryClick(Sender: TObject); begin PrinterSetupDialog1.Execute end;
procedure TForm1.PechatClick(Sender: TObject); begin ToolButton3Click(Sender); end;
procedure TForm1.ButParametrClick(Sender: TObject); begin Form2.ShowModal; end;
Procedure TForm1.FormResize( Sender: TObject); // Изменение размера формы begin Memo1.Left:= 10; // Положение слева Memo1.Top:= 60; // Положение сверху Memo1.Width:= Form1.ClientWidth-130; // Ширина Memo1.Height:= Form1.ClientHeight-100; // Высота NomerKadra.Left:= Form1.ClientWidth-15-NomerKadra.Width; Probel.Left:= Form1.ClientWidth-15-Probel.Width; Pustostr.Left:= Form1.ClientWidth-15-Pustostr.Width; Cancel.Left:= Form1.ClientWidth-20-Cancel.Width; Obrabotka.Left:= Form1.ClientWidth-20-Obrabotka.Width; Label2.Left:= Form1.ClientWidth-40-Cancel.Width; Label3.Left:= Form1.ClientWidth-40-Cancel.Width; Panel1.Left:= Form1.ClientWidth-18-Panel1.Width; Panel2.Left:= Form1.ClientWidth-18-Panel2.Width; end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if Memo1mod then // Если поле Мемо1 изменилось begin CanClose:= MessageDlg(' Содержимое редактора изменилось '#10#13' Хотите сохранить данные?', mtConfirmation,[mbYes, mbNo], 0) = mrYes; if CanClose then ToolButton2Click(Sender); CanClose:= true; end; end;
procedure TForm1.FormCreate(Sender: TObject); const Reg_Code = 1234567890; My_Code = 469103; var RegIni: TRegistry; Ini: TIniFile; data: TDatetime; begin DateSeparator:= '.'; DecimalSeparator:= '.'; ShortDateFormat:= 'dd/mm/yyyy'; memo1mod:= false; reestrMy_Code:= 0; reestrReg_Code:= 0; data:= Date; // получаем сегодняшнюю дату nach_period:= Trunc(data); Ini:= TIniFile.Create('Nal.ini'); proverka_sushesvovania_ini:= Ini.ReadInteger('START', 'CountStart', 0); if proverka_sushesvovania_ini = 0 then begin ini.WriteInteger('START', 'CountStart', 1); ini.WriteDate('DateBegin', 'DateBegin', data); //в формате дд.мм.гггг ini.WriteDate('DateEnd', 'DateEnd', data + 30); //в формате дд.мм.гггг ini.WriteString('Versia', 'Versia', Application.Title); ini.WriteInteger('CodeBegin', 'CodeBegin', Code_Begin); ini.WriteInteger('Hac','Hac', nach_period); end else begin Code_My:= ini.ReadInteger('Code_My', 'Code_My', 0); Code_Reg:= ini.ReadInteger('Code_Reg', 'Code_Reg', 0); Hac:= Ini.ReadInteger('Hac','Hac',0); end; Ini.Free; Form1.Caption:= Application.Title; Form1.memo1.Clear; Form1.PanelSostoyaniya.Panels[0].Text:= st + ' Не обрабатывать '; Form1.Panel1.Caption:= '0'; Form1.Panel2.Caption:= '0'; RegIni:= TRegistry.Create; RegIni.RootKey:= HKEY_LOCAL_MACHINE; RegIni.OpenKey('Software\Naladchik', true); if not RegIni.KeyExists('a') then // Если нет этого ключа то прописываем. begin RegIni.CreateKey('a'); RegIni.WriteInteger('a', 100); RegIni.WriteString('Versia', Application.Title); RegIni.WriteInteger('b', nach_period); // в формате 00000 RegIni.WriteInteger('c', nach_period + 30); // в формате 00000 RegIni.CloseKey; RegIni.Free; end; RegIni:= TRegistry.Create; RegIni.RootKey:= HKEY_LOCAL_MACHINE; RegIni.OpenKey('Software\Naladchik', false); reestra:= RegIni.ReadInteger('a'); reestrversia:= RegIni.ReadString('Versia'); reestrb:= RegIni.ReadInteger('b'); reestrc:= RegIni.ReadInteger('c'); if proverka_sushesvovania_ini = 2 then begin reestrMy_Code:= RegIni.ReadInteger('d'); reestrReg_Code:= RegIni.ReadInteger('e'); end; RegIni.CloseKey; RegIni.Free; if Hac > nach_period then nach_period:= Hac // защита от перевода даты else Hac:= nach_period; Ini:= TIniFile.Create('Nal.ini'); ini.WriteInteger('Hac', 'Hac', Hac); ini.Free; // Code_My и Code_Reg из ini файла if (Code_My = My_Code) and (Code_Reg = Reg_Code) and (reestrMy_Code = My_Code) and (reestrReg_Code = Reg_Code) then Form1.Caption:= Application.Title + '(Зарегистрированная версия)' else begin if reestrc > nach_period then Form1.Caption:= Application.Title + ' (Осталось '+IntToStr(reestrc - nach_period)+' дней)'; if reestrc <= nach_period then begin ShowMessage('Демонстрационный период закончен' + #13 + 'За регистрацией обратитесь к разработчику'+#13'[email protected]'); Halt(1); end; end; end;
procedure TForm1.ToolButton1Click(Sender: TObject); var kol: integer; begin Indikator.Position:= 0; Form1.PanelSostoyaniya.Panels[1].Text:= ''; Memo1.Clear; if OpenDialog1.Execute then begin Memo1.Lines.LoadFromFile(OpenDialog1.FileName); label1.Caption:= OpenDialog1.FileName; kol:= Memo1.Lines.Count; Panel2.Caption:= '0'; Panel1.Caption:= IntToStr(kol - 1); end; Form2.PC_VM.Enabled:= true; Form2.PC_MAYAK.Enabled:= true; Form2.VM_MAYAK.Enabled:= true; Form2.MAYAK_VM.Enabled:= true; Form2.FormActivate(Sender); end;
procedure TForm1.ParametryClick(Sender: TObject); begin Form2.ShowModal; end;
procedure TForm1.ToolButton2Click(Sender: TObject); begin if SaveDialog1.Execute then begin Memo1.Lines.SaveToFile(SaveDialog1.FileName); Memo1.Modified:= false; end; end;
procedure TForm1.ToolButton3Click(Sender: TObject); // Печать var line: System.TextFile; i: integer; begin if PrintDialog1.Execute then begin AssignPrn(line); rewrite(line); Printer.Canvas.Font:= Memo1.Font; for i:= 0 to memo1.Lines.Count-1 do writeln(line,' ', Memo1.Lines[i]); System.CloseFile(line); end; end;
procedure TForm1.VersiaClick(Sender: TObject); begin AboutBox.ShowModal; end;
procedure TForm1.VyhodClick(Sender: TObject); begin Form1.Close; end;
procedure TForm1.SaveClick(Sender: TObject); begin ToolButton2Click(Sender); end;
procedure TForm1.OpenClick(Sender: TObject); begin ToolButton1Click(Sender); end;
procedure TForm1.PrintClick(Sender: TObject); begin ToolButton3Click(Sender); end;
procedure TForm1.CancelClick(Sender: TObject); begin Form1.Close; end;
procedure NaytiKoordinatu(kadr: string; koordinata: char; var poluchenaya: string); var p : integer; poz_10: string[100]; per : string[10]; r: real; begin per:=' '; kadr:= Concat(kadr, ' '); nach:= pos(koordinata,kadr); nach:= Succ(nach); poz_10:= copy(kadr, nach, 100); val(poz_10,r,oshibka); for p:=1 to oshibka - 1 do per[p]:= poz_10[p]; if poz_10 = ' ' then oshibka:= 1; poluchenaya:= TrimRight(per); end;
function DobavitTochku( f: string): string; // Добавляет точку, если её нет begin if pos('.', f) = 0 then f:= Concat(f, '.'); Result:= f; end;
procedure Podhod_G41_G42_radius; begin // Х и Y уже найдены if pos('G3', Stroka.Strings[Succ(m)]) <> 0 then begin if (I > 0) and (J >= 0) then begin I_sled:= 1; J_sled:= -1; exit; end; if (I < 0) and (J <= 0) then begin I_sled:= -1; J_sled:= 1; exit; end; if (I <= 0) and (J > 0) then begin I_sled:= 1; J_sled:= 1; exit; end; if (I >= 0) and (J < 0) then begin I_sled:= -1; J_sled:= -1; exit; end; end; if pos('G2', Stroka.Strings[Succ(m)]) <> 0 then begin if (I >= 0) and (J > 0) then begin I_sled:= -1; J_sled:= 1; exit; end; if (I <= 0) and (J < 0) then begin I_sled:= 1; J_sled:= -1; exit; end; if (I < 0) and (J >= 0) then begin I_sled:= -1; J_sled:= -1; exit; end; if (I > 0) and (J <= 0) then begin I_sled:= 1; J_sled:= 1; exit; end; end; end;
// Преобразует строку, удаляет и вставляет подстроку ВМ function preobrazovanieVM( vhod_v_preobrazovanie: real ;var kadr: string): string; var stroka: string[10]; begin delete(kadr,nach,oshibka-1); stroka:= FloatToStr(vhod_v_preobrazovanie); // Преобразуем в число строку insert(stroka, kadr, nach); end;
// Преобразует строку, удаляет и вставляет подстроку МАЯК function preobrazovanieMAYAK( vhod_v_preobrazovanie: real ;var kadr: string): string; var stroka: string[10]; begin delete(kadr,nach,oshibka-1); if vhod_v_preobrazovanie <> 0 then begin stroka:= FloatToStrF(vhod_v_preobrazovanie, fffixed, 12, 3); // Преобразуем в число строку vhod_v_preobrazovanie:= StrToFloat(stroka); // Был глюк при конвертации stroka:= FloatToStr(vhod_v_preobrazovanie); // Сейчас вроде работает stroka:= DobavitTochku(stroka); // Добавляет точку, если её нет end else stroka:= '0'; // вставляем без точки insert(stroka, kadr, nach); end;
procedure Podhod_G41_G42_line; var str: String; begin str:= stroka.Strings[Succ(m)]; if Pos('X', str) <> 0 then begin NaytiKoordinatu(str, 'X', str); X_sled:= StrToFloat(str); end else begin if (Form2.PC_VM.Checked) or (Form2.MAYAK_VM.Checked) then X_sled:= X_nast / 1000 else X_sled:= X_nast; end; str:= stroka.Strings[Succ(m)]; if Pos('Y', str) <> 0 then begin NaytiKoordinatu(str, 'Y', str); Y_sled:= StrToFloat(str); end else begin if (Form2.PC_VM.Checked) or (Form2.MAYAK_VM.Checked) then Y_sled:= Y_pred / 1000 else Y_sled:= Y_nast; end; if (Form2.PC_VM.Checked) or (Form2.MAYAK_VM.Checked) then begin X_sled:= X_sled * 1000; Y_sled:= Y_sled * 1000; X_sled:= X_sled - X_nast; Y_sled:= Y_sled - Y_nast; end else begin X_sled:= X_sled - X_nast; Y_sled:= Y_sled - Y_nast; end; end;
function FindVstavki(koordinata: char; kadr: string): integer; begin case koordinata of 'X': begin if pos('Y', kadr) <> 0 then Result:= pos('Y', kadr) else if pos('I', kadr) <> 0 then Result:= pos('I', kadr) else if pos('J', kadr) <> 0 then Result:= pos('J', kadr) else if pos('F', kadr) <> 0 then Result:= pos('F', kadr) else if pos('M', kadr) <> 0 then Result:= pos('M', kadr) else Result:= Length(kadr) + 1; end; 'Y': begin if pos('I', kadr) <> 0 then Result:= pos('I', kadr) else if pos('J', kadr) <> 0 then Result:= pos('J', kadr) else if pos('F', kadr) <> 0 then Result:= pos('F', kadr) else if pos('M', kadr) <> 0 then Result:= pos('M', kadr) else Result:= Length(kadr) + 1; end; 'I': begin if pos('J', kadr) <> 0 then Result:= pos('J', kadr) else if pos('F', kadr) <> 0 then Result:= pos('F', kadr) else if pos('M', kadr) <> 0 then Result:= pos('M', kadr) else Result:= Length(kadr) + 1; end; 'J': begin if pos('F', kadr) <> 0 then Result:= pos('F', kadr) else if pos('M', kadr) <> 0 then Result:= pos('M', kadr) else Result:= Length(kadr) + 1; end; else Result:= Length(kadr) + 1; end; end;
procedure TForm1.ObrabotkaClick(Sender: TObject); label metka; var kol, buf: integer; Proc, proci, u: integer; vyh: string; PolChisla_1Proc, uvel: real; bufer: string; Priz_pusto_memo: boolean;
procedure DelProbel(var kadr: string); // Удаление пробелов var k: integer; begin while pos(' ', kadr) <> 0 do begin k:= pos(' ', kadr); delete(kadr, k, 1); end; end;
procedure pustostroka; begin stroka.Delete(m); // Удаляем пустую строку Dec(kol); // Уменьшаем кол-во строк на 1 Dec(m); // Уменьшаем на одну стороку end;
procedure nomerkadra(var kadr: string); var error, nach, x: integer; poz_N7: string [10]; begin poz_N7:= ' '; nach:= pos('N',kadr); // Номер позиции 'N' if nach <> 0 then // Позиция найдена begin Inc(nach); // Наращиваем на 1 poz_N7:= copy(kadr, nach, 10); val(poz_N7,x,error); // проверяем на ошибку if error = 1 then else begin delete(kadr,nach,error-1); // Удаляем старое значение Inc(buf); // Наращиваем кадр на 1 insert(IntToStr(buf), kadr, nach); // Вставляем новое число end; end; end;
Procedure PC_MAYAK(var kadr: string); var I_est: boolean; st: string; s: string[10]; 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 begin X_nast:= StrToFloat(vyh); PreobrazovanieMayak(X_nast, kadr); // не было точки end; end else if I_est then // Добавление Х Если нет begin uslovie:= FindVstavki('X', kadr); s:= FloatToStr(X_nast); if X_nast <> 0 then s:= DobavitTochku(s); insert(Concat('X', s), kadr, uslovie); end; if pos('Y',kadr) <> 0 then begin NaytiKoordinatu(kadr,'Y', vyh); if oshibka <> 1 then begin Y_nast:= StrToFloat(vyh); PreobrazovanieMayak(Y_nast, kadr) // не было точки end; end else if I_est then // Добавление Y Если нет begin uslovie:= FindVstavki('Y', kadr); s:= FloatToStr(Y_nast); if Y_nast <> 0 then s:= DobavitTochku(s); insert(Concat('Y',s), 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 если нет uslovie:= FindVstavki('X', kadr); s:= FloatToStr(X_nast); // В позиции X Y I J F M if X_nast <> 0 then s:= DobavitTochku(s); Insert('X' + s, kadr, uslovie); end; if pos('Y', kadr) = 0 then begin uslovie:= FindVstavki('Y', kadr); s:= FloatToStr(Y_nast); if Y_nast <> 0 then s:= DobavitTochku(s); Insert('Y' + s, 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 + Y_nast; if (I_sled = -1) and (J > 0) then J:= -J; // ЛОГИЧЕСКИЙ ПЕРЕСЧЁТ if (I_sled = 1) and (J < 0) then J:= -J; I:= I + X_nast; 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', st); PreobrazovanieMayak(I, kadr); end else begin uslovie:= FindVstavki('J', kadr); Insert('J' + FloatToStr(I), kadr, uslovie); end; if pos('I', kadr) <> 0 then begin NaytiKoordinatu(kadr, 'I', st); PreobrazovanieMayak(J, kadr); end else begin uslovie:= FindVstavki('I', kadr); Insert('I' + FloatToStr(J), kadr, uslovie); end; X_pred:= X_nast; Y_pred:= Y_nast; exit; end else begin Podhod_G41_G42_line; // ЛИНЕЙНЫЕ ПОДХОДЫ РАСЧЁТ if pos('I', kadr) <> 0 then begin NaytiKoordinatu(kadr, 'I', st); PreobrazovanieMayak(X_sled, kadr); end else begin uslovie:= FindVstavki('I', kadr); Insert('I' + FloatToStr(X_sled) + '.', kadr, uslovie); end; if pos('J', kadr) <> 0 then begin NaytiKoordinatu(kadr, 'J', st); PreobrazovanieMayak(Y_sled, kadr); end else begin uslovie:= FindVstavki('J', kadr); Insert('J' + FloatToStr(Y_sled) + '.', kadr, uslovie); end; exit; end; end; uslovie:= pos('I',kadr); // расчёт радиусов if uslovie <> 0 then begin NaytiKoordinatu(kadr,'I',vyh); if oshibka = 1 then else begin I:= StrToFloat(vyh); I:= X_pred + I; preobrazovanieMAYAK(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); J:= Y_pred + J; preobrazovanieMAYAK(J,kadr); end; end; X_pred:= X_nast; Y_pred:= Y_nast; end;
Function VM_MAYAK(var kadr: string): string; var 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; uslovie:= pos('X',kadr); if uslovie <> 0 then begin NaytiKoordinatu(kadr,'X', vyh); if oshibka = 1 then else begin vyh:= TrimRight(vyh); // Удаляем лишние пробелы справа X_nast:= StrToFloat(vyh) / 1000; preobrazovanieMAYAK(X_nast,kadr); end; end else if I_est = true then // Добавление Х Если нет begin uslovie:= pos('Y',kadr); insert('X'+ vyh, kadr, uslovie); end; uslovie:= pos('Y',kadr); if uslovie <> 0 then begin NaytiKoordinatu(kadr,'Y', vyh); if oshibka = 1 then else begin vyh:= TrimRight(vyh); // Удаляем лишние пробелы справа Y_nast:= StrToFloat(vyh) / 1000; preobrazovanieMAYAK(Y_nast,kadr); end; end else if I_est = true then // Добавление Y Если нет begin uslovie:= pos('I',kadr); insert('Y' + vyh, 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 если нет uslovie:= FindVstavki('X', kadr); s:= FloatToStr(X_nast); // В позиции X Y I J F M if X_nast <> 0 then s:= DobavitTochku(s); Insert('X' + s, kadr, uslovie); end; if pos('Y', kadr) = 0 then begin uslovie:= FindVstavki('Y', kadr); s:= FloatToStr(Y_nast); if Y_nast <> 0 then s:= DobavitTochku(s); Insert('Y' + s, 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:= J + Y_nast; if (I_sled = -1) and (J > 0) then J:= -J; if (I_sled = 1) and (J < 0) then J:= -J; I:= I / 1000; I:= I + X_nast; 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', st); PreobrazovanieMayak(I, kadr); end else begin uslovie:= FindVstavki('J', kadr); Insert('J' + FloatToStr(I), kadr, uslovie); end; if pos('I', kadr) <> 0 then begin NaytiKoordinatu(kadr, 'I', st); PreobrazovanieMayak(J, kadr); end else begin uslovie:= FindVstavki('I', kadr); Insert('I' + FloatToStr(J), kadr, uslovie); end; X_pred:= X_nast; Y_pred:= Y_nast; exit; end else begin // Линейный подход st:= Stroka.Strings[Succ(m)]; uslovie:= Pos('X', st); if uslovie <> 0 then begin NaytiKoordinatu(st, 'X', st); X_sled:= StrToFloat(st) / 1000; X_sled:= X_sled - X_nast; end else X_sled:= 0; // Если нет в кадре то 0 st:= stroka.Strings[Succ(m)]; uslovie:= Pos('Y', st); if uslovie <> 0 then begin NaytiKoordinatu(st, 'Y', st); Y_sled:= StrToFloat(st) / 1000; Y_sled:= Y_sled - Y_nast; end else Y_sled:= 0; if pos('I', kadr) <> 0 then begin NaytiKoordinatu(kadr, 'I', st); PreobrazovanieMayak(X_sled, kadr); end else begin uslovie:= FindVstavki('I', kadr); Insert('I' + FloatToStr(X_sled) + '.', kadr, uslovie); end; if pos('J', kadr) <> 0 then begin NaytiKoordinatu(kadr, 'J', st); PreobrazovanieMayak(Y_sled, kadr); end else begin uslovie:= FindVstavki('J', kadr); Insert('J' + FloatToStr(Y_sled) + '.', kadr, uslovie); end; exit; end; end; uslovie:= pos('Z',kadr); if uslovie <> 0 then begin NaytiKoordinatu(kadr,'Z', vyh); if oshibka = 1 then else begin vyh:= TrimRight(vyh); // Удаляем лишние пробелы справа Z:= StrToFloat(vyh) / 1000; preobrazovanieMAYAK(Z,kadr); end; end; uslovie:= pos('I',kadr); if uslovie <> 0 then begin NaytiKoordinatu(kadr,'I',vyh); if oshibka = 1 then else begin vyh:= TrimRight(vyh); // Удаляем лишние пробелы справа I:= StrToFloat(vyh) / 1000; I:= X_pred + I; preobrazovanieMAYAK(I,kadr); end; end; uslovie:= pos('J',kadr); if uslovie <> 0 then begin NaytiKoordinatu(kadr,'J',vyh); if oshibka = 1 then else begin vyh:= TrimRight(vyh); // Удаляем лишние пробелы справа J:= StrToFloat(vyh) / 1000; J:= Y_Pred + J; preobrazovanieMAYAK(J,kadr); end; end; uslovie:= pos('U',kadr); if uslovie <> 0 then begin NaytiKoordinatu(kadr,'U', vyh); if oshibka = 1 then else begin vyh:= TrimRight(vyh); // Удаляем лишние пробелы справа Uvmmayak:= StrToFloat(vyh) / 1000; preobrazovanieMAYAK(Uvmmayak,kadr); end; end; uslovie:= pos('K',kadr); if uslovie <> 0 then begin NaytiKoordinatu(kadr,'K', vyh); if oshibka = 1 then else begin vyh:= TrimRight(vyh); // Удаляем лишние пробелы справа K:= StrToFloat(vyh) / 1000; preobrazovanieMAYAK(K,kadr); end; end; X_pred:= X_nast; Y_pred:= Y_nast; end;
Function MAYAK_VM(var kadr: string): string; var I_est: boolean; uslovie: integer; strok: string[10]; s, st: string; begin if pos('%', kadr) <> 0 then exit; if pos('$', kadr) <> 0 then exit; I_est:= False; uslovie:= pos('I',kadr); if uslovie <> 0 then I_est:= true; uslovie:= pos('X',kadr); if uslovie <> 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); strok:= FloatToStr(X_pred); // Преобразуем в число строку insert('X' + strok, kadr, uslovie); end; uslovie:= pos('Y',kadr); if uslovie <> 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); strok:= FloatToStr(Y_pred); // Преобразуем в число строку insert('Y' + strok, 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 если нет uslovie:= FindVstavki('X', kadr); // В позиции X Y I J F M Insert('X' + FloatToStr(X_nast), kadr, uslovie); end; if pos('Y', kadr) = 0 then begin uslovie:= FindVstavki('Y', kadr); 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); J:= J * 1000; I:= I * 1000; I:= I - X_nast; J:= J - Y_nast; Podhod_G41_G42_radius; if (I_sled = -1) and (J > 0) then J:= -J; if (I_sled = 1) and (J < 0) then J:= -J; 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', st); PreobrazovanieVM(I, kadr); end else begin uslovie:= FindVstavki('J', kadr); Insert('J' + FloatToStr(I), kadr, uslovie); end; if pos('I', kadr) <> 0 then begin NaytiKoordinatu(kadr, 'I', st); PreobrazovanieVM(J, kadr); end else begin uslovie:= FindVstavki('I', kadr); Insert('I' + FloatToStr(J), kadr, uslovie); end; X_pred:= X_nast; Y_pred:= Y_nast; exit; end else begin Podhod_G41_G42_line; if pos('I', kadr) <> 0 then begin NaytiKoordinatu(kadr, 'I', st); PreobrazovanieVM(X_sled, kadr); end else begin uslovie:= FindVstavki('I', kadr); Insert('I' + FloatToStr(X_sled), kadr, uslovie); end; if pos('J', kadr) <> 0 then begin NaytiKoordinatu(kadr, 'J', st); PreobrazovanieVM(Y_sled, kadr); end else begin uslovie:= FindVstavki('J', kadr); Insert('J' + FloatToStr(Y_sled), kadr, uslovie); end; exit; end; end; uslovie:= pos('I',kadr); if uslovie <> 0 then begin NaytiKoordinatu(kadr,'I',vyh); 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
Популярное: Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (175)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |