Конвертування вихідного тексту програм для верстатів з ЧПК з однієї системи програмування в іншу

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Федеральне агентство з освіти РФ
ГОУ ВПО «Іжевський державний технічний університет»
Факультет «Інформатика і ОБЧИСЛЮВАЛЬНА ТЕХНІКА»
Кафедра «ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ»
ПОЯСНЮВАЛЬНА ЗАПИСКА
до дипломної роботи на тему:
«Конвертування вихідного тексту програм для верстатів з ЧПК з однієї системи програмування в іншу»
Дипломник
студент групи 12-19-4з ... ... ... ... ... ... ... ... ... ... ... ... ... ... .... Д.В. Стерхов
Керівник
вед. інженер - програміст
ВАТ «Концерн ІЖМАШ» ... ... ... ... ... ... ... ... ... ... ... ... ... ... В.М. Токарев
Консультант з економічної частини
к.е.н., доцент ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... І.І. Радигіна
Консультант з безпеки
і екологічності к.т.н., доцент ... ... ... ... ... ... ... ... ... ... ... ... А.С. Чаузов
Нормоконтроль ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... В.П. Соболєва


Рецензент
вед. інженер - програміст
ВАТ «Іжмаш - Станко» ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. І.П. Буторін
Завідувач кафедрою
«Програмне забезпечення»
д.т.н, професор ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ....... А.І. Муринов
ІЖЕВСЬК 2008
Реферат
Пояснювальна записка до дипломної роботи на тему «Конвертування вихідного тексту програм для верстатів з ЧПК з однієї системи програмування в іншу» оформлена на 100 аркушах, містить 38 малюнків, 19 таблиць.
Метою даної роботи є розробка системи, яка б підвищувала коефіцієнт корисної дії програмістів за верстатів із числовим та програмним керуванням (ЧПК), яке полягає в автоматизованому перекладі вихідного тексту програм верстатів з ЧПК в різні системи програмування.
Для написання відповідного програмного забезпечення були досконально вивчені матеріали з програмування верстатів з ЧПК різних систем, зокрема: Маяк, Сінумерік, Вм.
У результаті проведеної роботи було розроблено програмне забезпечення для аналізу програм їх автоматичного перерахунку і конвертації, а так само виправлення основних помилок у тексті, послідовної нумерації кадрів, видалення порожніх рядків та прогалин.
На сьогоднішній день існує велика кількість програмних продуктів, що надають можливість конвертування програмного тексту. Однак ці програми складні в настройці і експлуатації, або вартість їх непомірно велика.
Розроблене програмне забезпечення постійно знаходиться в розробці, додаються нові можливості конвертації, а так само у міру використання програми усуваються чисто людські помилки програміста.
ПЕРЕЛІК УМОВНИХ ПОЗНАЧЕНЬ, СКОРОЧЕНЬ, СИМВОЛІВ І СПЕЦІАЛЬНИХ ТЕРМІНІВ З ЇХ ВИЗНАЧЕННЯ
ЧПУ - верстати з числовим програмним управлінням і
ПЗ - програмне забезпечення
ОС - операційна система
ЕОМ - електронно - обчислювальна машина
ВТ - обчислювальна техніка

ВСТУП

Науково-технічний прогрес - це безперервний процес відкриття нових знань і застосування їх у суспільному виробництві, що дозволяє по-новому з'єднувати і комбінувати наявні ресурси в інтересах збільшення випуску високоякісних кінцевих продуктів при найменших витратах. Від науково-технічного потенціалу країни багато в чому залежить і науково-виробничий потенціал її національних фірм і підприємств, їх здатність забезпечувати високий рівень і темпи НТО, їх "виживання" в умовах конкурентної боротьби. Науково-технічний потенціал країни створюється як зусиллями національних науково-технічних організацій, так і використанням світових досягнень науки і техніки. Аналіз та оцінка цього потенціалу дозволяє зробити висновки про рівень економічного розвитку країни та її галузей, про ступінь її науково-технічної самостійності, про можливості її економічного і науково-технічного співробітництва.
У наш час проїзводсво не може обійтися без верстатів з ЧПК. Хоча вони дорогі і складні в експлуатації, але не замінні в технології виробництва на сучасних підприємствах.
На виробництві дуже багато верстатів ЧПУ різних модифікацій і можливостей. На нашому виробництві використовується 3 системи програмування ВМ, МАЯК і Сінумерік. Використовується загальновідома програма Unigraphics - це графічний редактор, в якому отрісовивается деталь, який потім генерує (текст програми) для системи Сінумерік. Програма Налагоджувальник регенерує код з системи Сінумерік на МАЯК або ВМ. Ні якої графіки в написаній програмі немає. Графічних редакторів багато і в написанні чергового немає необхідності.
На початку програма планувалася, як програма для роботи тільки в умовах конкретного виробництва, але у міру зростання, як обсягу програми, так і її функціональності вирішено написати документацію до неї і випустити на простори Інтернету.
Програма називається Налагоджувальник 1.6.1, на сьогоднішній день це остання повністю протестована і працездатна версія програми.

1. РОЗРОБКА СИСТЕМИ АВТОМАТИЧНОГО КОН ВЕРТІРОВАНІЯ вихідного тексту програми для ВЕРСТАТІВ З ЧПУ

1.1. Обгрунтування доцільності розробки системи автоматичного конвертування тексту вихідних програм для верстатів з ЧПК

1.1.1. Призначення системи

Система автоматичного конвертування призначена для обробки текстових програм для верстатів з ЧПК їх подальшого перерахунку в різні системи програмування. У результаті обробки повністю або частково виключається правка програми вручну, зменшується до мінімуму людський фактор (помилки) у написанні програм.

1.1.2. Характеристика функціональної структури системи

Обробка тексту складається з наступних методів:
- Підсистема вибору методу конвертації. Дозволяє задати один з алгоритмів методу перерахунку в залежності від вибору програміста.
- Підсистема оптимізації розроблена для видалення порожніх рядків, зайвих пробілів і почергової нумерації кадрів у тексті програми, який зменшує розмір початкового тексту та збільшує його читаність.
- У підсистемі аналізу працює алгоритм автоматичного виправлення помилок функцій заходу G41 і G42, що сприяє правильної відпрацювання верстатом заходів, як на радіус, так і на лінійну координату, а так само перерахунок радіусів з функцій G2, G3 (кругова інтерполяція).
- Підсистема конвертації реалізує перерахунок координат з заданим алгоритмом обробки.

1.1.3. Обгрунтування мети створення системи

Завдання конвертації тексту програм для верстатів з ЧПК мають широкий спектр, принаймні, на Російських підприємствах. Зараз дуже багато різних програм для верстатів ЧПУ, в тому числі і графічних. У яких при побудові графічного образу деталі програма видає текст для верстатів ЧПУ. Проте це ПЗ не російського виробництва і розраховане для верстатів останнього покоління. Однак, як водиця в Росії, обладнання в основному на підприємствах старе, але цілком робочий. У зв'язку з цим виникла ситуація коли програміст, згенерувавши програмний текст в графічних редакторах, перераховував його вручну на наші вітчизняні верстати старого виробництва. Це займало дуже багато часу і зростала ймовірність суто «людських» помилок.
Метою даної роботи є розробка, впровадження і супровід
такої програми, яка могла б замінити рутинну працю програміста з перерахунку вихідного тексту і виправлення помилок.

1.1.4. Обгрунтування складу автоматизуються завдань

Реалізація програми «Налагоджувальник» дозволить інтегрувати в єдиному інтерфейсі всі етапи обробки вихідного тексту:
- Конвертація вихідного тексту програм;
- Виправлення помилок програмування;
- Приведення тексту до більш читабельним увазі;
- Зменшення розміру програми.

Функціональна схема програми конвертації «Налагоджувальник»

SHAPE \ * MERGEFORMAT
Допоміжні налаштування обробки
Основні методи конвертації
Діалог вибору
Вибір файлу для відкриття
Діалог вибору
Поділ файла на кол - во частин
Діалог вибору
Обробка заданими методами (методом)
візуальний контроль виконання
Обробка поділ файлу
Збереження файлу
Діалог вибору
Збереження файлів

Рис. 1

1.2. Аналітичний огляд

Текстовий редактор TechEdit 2.1.1 відноситься до розряду спеціального ПЗ. З його допомогою можна автоматизувати процес розробки програм для ЧПУ. C допомогою TechEdit можна перетворити історію команд Autocad (історія команд, що містить координати виділених точок) в чорновий варіант програми для ЧПУ, а потім за допомогою функцій TechEdit провести перетворення координат і їх значень, чистку програми від непотрібних символів і автоматичну нумерацію кадрів. TechEdit забирає на себе багато рутинних повторювані операції з текстом програми, хоча звичайно, на жаль, не позбавляє розробника від складного інтелектуальної праці. TNR TechEdit успішно використовується на Стахановському вагонобудівному заводі вже на протязі 2-х років.

Рис.1.1
Програма TechEdit 2.1.1 по суті є текстовим редактором і не має функцій конвертації. / Http://tnr.kulichki.com/techedit/te.html/
Графічний редактор T-FLEX
Програма, призначена для створення керуючих програм (УП) на обладнання з числовим програмним керуванням (ЧПК). Програма T-FLEX ЧПУ підтримує різні типи систем управління 2D, 2,5 D, 3D і 5D і розділена на дві незалежні системи T-FLEX ЧПУ 2D і T-FLEX ЧПУ 3D.
Програма підготовки КП для верстатів з ЧПК T-FLEX ЧПУ є вбудовуваним модулем для САПР T-FLEX CAD і функціонує виключно спільно з нею. Таким чином, виходить повноцінне CAD / CAM-рішення / www.tflex.ru/.
Даний підхід забезпечує:
- Повну асоціативність конструкторсько-технологічних даних (одного разу створена траєкторія обробки буде автоматично перебудовуватися після зміни геометрії деталі);
- Єдність інтерфейсів (користувач, знайомий з принципами роботи в T-FLEX CAD, без праці опанує програмою підготовки КП для верстатів з ЧПК T-FLEX ЧПУ);
- Все багатство інструментарію конструкторської системи для доопрацювання технологом приходить інформації під свої потреби (адже не секрет, що геометрію деталі доводиться яким-небудь чином допрацьовувати, наприклад, перерахувати геометрію деталі в середину поля допуску, а конструкторська система може зробити це автоматично).
Програма підготовки КП для верстатів з ЧПК T-FLEX ЧПУ - гнучко настроюється система, побудована за модульним принципом (до базового модулю можна підключати будь-який набір методів обробки).
Програма багатофункціональна і складна в експлуатації.

1.3. Основні вимоги до системи

1.3.1. Основні цілі створення системи та критерії ефективності її функціонування

Створення програми конвертації тексту дозволяє автоматизувати процес перерахунку програм для верстатів із ЧПК в різні системи програмування в будь-якій послідовності. Зручний і простий інтерфейс, а так само необхідний мінімум налаштувань забезпечують повне взаєморозуміння «людина - комп'ютер».

1.3.2. Функціональне призначення системи

Автоматизація процесу конвертації вихідного тексту програм для верстатів з ЧПК увазі реалізацію в системі певних засобів і функцій. Слід виділити ряд функціональних особливостей, якими володіє програма:
- Можливість автоматичного й ручного редагування;
- Гнучкі налаштування програми;
- Можливість вибору режиму перерахунку;
- Розрахунок, як відносних, так і абсолютних розмірів;
- Автоматичне виправлення помилок у тексті;
- Вибір кольору і розміру шрифту в процесі редагування;
- Можливість друку вмісту поля редагування;
- Коригування заходу інструменту на еквідістанту контуру деталі;
- Режим пошуку і заміни;
- Перетворення до верхнього регістру всього тексту програми.

1.3.3. Особливості програми та умови її експлуатації

При роботі з програмою «Налагоджувальник» ні яких особливих вимог не висувається. Файли, оброблювані програмою, повинні бути в текстовому форматі. Файли можуть бути будь-якого об'єму - це залежить тільки від оперативної пам'яті комп'ютера і підтримуваної пам'яттю програми блокнот.

1.3.4. Вимоги до функціональної структури

Побудова програми конвертації вихідного тексту програм для верстатів з ЧПК передбачає модульну структуру. Загальний інтерфейс і можливість доступу до всіх модулів у складі системи забезпечує оболонка. З оболонки програми викликаються наступні модулі: підсистема вибору методу конвертації, підсистема оптимізації, підсистема аналізу, підсистема конвертації.
Підсистема вибору методу конвертації служить для вибору системи програмування, в яку буде, здійсняться перерахунок. Підсистема має в своєму розпорядженні графічним інтерфейсом вибору. Результатом є обрана система перерахунку.
Підсистема оптимізації тексту програми виконує функції: видалення пробілів (для зменшення розміру програми), нумерації кадрів і видалення порожніх рядків (для кращої читабельності). Результатом є оптимізований програмний текст.
Підсистема конвертації перетворює вихідні координати до заданих. Результатом роботи є перетворені дані.
Підсистема аналізу реалізує перерахунок і перевірку правильності заданих координат при заході фрези на еквідістанту контуру оброблюваної деталі, а так само перевірку і при необхідності перерахунок заданої кругової інтерполяції (G2, G3). Результатом є повністю готовий і перетворений програмний текст для верстатів з ЧПК.

1.3.5. Вимоги до технічного забезпечення

Програма обробки вихідного тексту не вимагає особливих ресурсів від комп'ютера. Програмний продукт працює вже не перший рік і доведена практично до ідеалу за швидкістю обробки і витрачається комп'ютером ресурсів. Чим вище частота процесора, тим швидше відбувається конвертація програмного тексту. Вимоги наведені у таблиці 1.
Таблиця 1
Технічні характиристики персонального комп'ютера
Вид пристрою
Характеристика
процесор
486 і вище
оперативна пам'ять
від 32 мб і вище
дозвіл екрану
800х600 і більш
операційна система
Windows 98, XP, Vista

1.3.6. Вимоги до інформаційного забезпечення

Програма конвертації призначена тільки для роботи з файлами в текстовому форматі. В іншому форматі роботи програма не тестувалася, і можуть бути непередбачувані результати аж до зависання комп'ютера. Програмний продукт орієнтований на досвідчену людину в області програмування верстатів з ЧПК (наладчика або програміста). Введення свідомо не вірних даних (координат (букв) не передбачених у програмуванні верстатів) призведе до ігнорування програмою цих значень.

1.3.7 Вимоги до програмного забезпечення

Програму доцільно використовувати для функціонування під операційною системою сімейства Windows, так як ОС даного класу найбільш широко поширені в сучасному світі. Платформою для розробки вибрано Delphi7. Це середовище підтримує алгоритмічну мову Object Pascal і володіють при цьому можливостями швидкої розробки і проектування візуальних інтерфейсів, що особливо важливо при роботі з будь-якою інформацією.

1.4. Основні технічні рішення проекту системи

1.4.1. Рішення по комплексу технічних засобів

Як вже зазначалося в п. 1.3.5 «Вимоги до технічного забезпечення», для досягнення зручного користувачеві режиму функціонування системи необхідно наступна мінімальна конфігурація персонального комп'ютера: частота процесора 486 МГц, обсяг оперативної пам'яті 32 Мб, монітор, що підтримує роздільну здатність 800х600 пікселів. Також бажано наявність наступних периферійних технічних засобів: чорно - білий лазерний принтер для виведення на друк результатів обробки тексту.

1.4.2. Опис системи програмного забезпечення

Для реалізації і функціонування проекту необхідно наступне програмне забезпечення: ОС Windows 98, XP, Vista в основі, якої лежить ядро, що характеризується 32-розрядною обчислювальною архітектурою та повністю захищеною моделлю пам'яті, що забезпечує надійну обчислювальне середовище.
Розробка програми «Налагоджувальник» та її підсистем буде вестися з використанням середовища для розробки додатків Borland Delphi 7. Середовища розробки включають в себе високопродуктивний 32-бітний компілятор, що дозволяє оптимізувати створюваний код. До складу кожної середовища включений великий набір засобів, які підвищують продуктивність праці програмістів і скорочують тривалість циклу розробки. Зручність розробки та ефективність створених в даних середовищах розробки програм роблять їх оптимальним вибором для побудови конвертує системи, якою є програма «Налагоджувальник».

2. РОЗРОБКА ЗАВДАННЯ «Конвертування вихідного тексту програм для верстатів з ЧПК»

2.1. Опис постановки завдання

2.1.1. Характеристика задачі

Варто зазначити, що текст програми повинен бути написаний синтаксично правильно. Програма, звичайно виправить деякі не правильно написані координати (їх значення), але писав повинен бути професіонал у своїй справі і допускати, як можна менше помилок програмування.
Для зменшення розміру оброблюваної текстової програми були наведені такі функції як: видалення порожніх рядків, прогалин і для наочності упорядкована нумерація кадрів.
Таким чином, завдання обробки тексту програм для верстатів з ЧПК може бути розбита на кілька підзадач:
- Розробка алгоритмів реалізують конвертування вихідних текстів програм;
- Розробка алгоритму виправлення помилок програмування;
- Розробка та реалізація алгоритмів сприяють зменшенню обсягу програми і одночасно збільшення читабельності тексту.

2.1.2. Вхідна інформація

Вхідний інформацією для завдання є файл *. ТХТ отриманий після обробки, або у графічній програмі, або набраний в ручну.

2.1.3. Вихідна інформація

Вихідною інформацією завдання є файл *. ТХТ оброблений заданим методом обробки.

2.1.4. Математична простановка завдання

Слід зазначити, що вся машинна арифметика грунтується на декартовій системі координат, де X, Y, Z - основні програмні координати, I, J, K - додаткові (при розрахунку кругової інтерполяції та входів на еквідістанту оброблюваного контуру). Координата A - поворотний пристрій.
SHAPE \ * MERGEFORMAT
X f
Y
Z

Рис. 2.1

2.1.4.1. Математична постановка задачі ПК - Маяк

Розрахунок радіусів по G2, G3 (кругової інтерполяції)
Це завдання призначена для перерахунку кругової інтерполяції та входів на еквідістанту контуру деталі.
Алгоритм розрахунку радіусів заснований на відстані видалення точки центру радіусу від початкової точки радіуса (у відносній системі числення) і від нуля деталі до центру радіусу (в абсолютній системі числення).
На рис. 2.2 зображено ескіз оброблюваної деталі (контуру).


Рис. 2.2
Лінії a і b відображають різницю розрахунків радіусів при програмуванні системи Вм і Маяк.
Лінія зі стрілкою a система Маяк (абсолютна система).
Лінія зі стрілкою b система Вм (відносна система).
Формула перерахунку радіусів.
I - значення I координати в оброблюваному кадрі.
J - значення J координати в оброблюваному кадрі.
X_divd - значення координати X у попередньому кадрі.
Y_divd - значення координати Y в попередньому кадрі.
I = X_divd + I;
J = Y_divd + J
Результати наведені в таблиці 2.
Таблиця 2
Результати обробки
Вхідні дані
Вихідні дані
N1 G0 X0 Y0
N1 X10 Y10 F100
N1 G42 D30 X17.59 Y18.83
N1 G1 X47.59
N1 G3 X47.59 Y40.83 I0 J11
N1 G1 X17.59
N1G0X0Y0
N2X10.Y10.F100
N3G42D30X17.59Y18.83I30.J0
N4G1X47.59
N5G3X47.59Y40.83I47.59J29.83
N6G1X17.59
Як ми бачимо, нумерація кадрів в обробленій програмі відновилася, зайві пробіли видалені.
У кадрі N2 розставлені пропущені точки (такий синтаксис програми обробки для верстатів з ЧПК).
У кадрі N3 розраховані і додані відсутні координати заходу.
У кадрі N5 перераховані координати I і J у відповідності із заданим методом обробки.
Розрахунок лінійних входів на еквідістанту контуру деталі по G41 G42 рис 2.3.


Рис 2.3
Точка заходу знаходиться на лінійній ділянці контуру.
Знаходиться за формулою:
I - значення I координати в оброблюваному кадрі.
J - значення J координати в оброблюваному кадрі.
X_sled - значення Х в наступному кадрі.
X_nast - значення Х у цьому кадрі.
Y_sled - значення Y в наступному кадрі.
Y_nast - значення Y в цьому кадрі.
I = X_sled - X_nast;
J = Y _ sled - Y _ nast
Результати наведені в таблиці 3.

Таблиця 3
Результати обробки
Вхідні дані
Вихідні дані
N1G0X0Y0
N2X40Y10
N3G42D30X47.59Y18.83
N4G3X47.59Y40.83I0J11
N1X17.59
N1Y18.83
N1X47.59
N1G0X0Y0
N2X40.Y10.
N3G42D30X47.59Y18.83I29.83J47.59
N4G3X47.59Y40.83I47.59J29.83
N5X17.59
N6Y18.83
N7X47.59
Як видно з таблиці кадри № 2, 3, 4 змінилися в результаті обробки
Розрахунок заходів по радіусу на еквідістанту контуру деталі по G41 G42

Рис 2.4
Розрахунок заходу на радіус дещо відрізняється від заходу на лінійний розмір. Тут чимало важливу роль відіграє вектор напрямку в залежності від чверті, на яку спрямований вектор рис.2.5.
Формули:
J_nast - значення J в оброблюваному кадрі.
J_sled - значення J в наступному кадрі.
I_nast - значення I в цьому кадрі.
I_sled - значення I в наступному кадрі.
Y_nast - значення Y в цьому кадрі.
X_nast - значення X у цьому кадрі.
I і J - служать для визначення знака у вираженні.
З початку розраховуємо значення (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

Рис 2.5

2.2. Опис алгоритму методу вибору обробки

2.2.1. Призначення і характеристика алгоритму

Алгоритм описує метод вибору обробки користувачем в залежності від призначення кінцевого результату.

2.2.2. Використовувана інформація

В алгоритмі використовується графічна оболонка методу вибору обробки.

2.2.3. Результати рішення

У результаті реалізації алгоритму програма налаштовується для обробки заданим методом.

2.2.4. Алгоритм рішення

1. Якщо Form 2. PC _ MAYAK. Checked, то перехід до п. 2
2. Pc _ mayak (bufer);
3. Якщо Form 2. PC _ VM. Checked, то перехід до п. 4
4. Pc _ vm (bufer);
5. Якщо Form 2. VM _ MAYAK. Checked, то перехід до п. 6
6. Vm _ mayak (bufer);
7. Якщо Form 2. MAYAK _ VM. Checked, то перехід до п.8
           8. mayak_vm (bufer);
9. Bufer: ='';
         10. Inc (m);
11. кінець

2.2.5. Список умовних позначень

Умовні позначення, які використовуються в описі алгоритму, наведені в табл. 4.
Таблиця 4
Умовні позначення
Позначення
Розшифровка
bufer
Рядок значення процедури
pc_mayak (bufer);
Процедура перерахунку заданим методом
pc_vm (bufer);
Процедура перерахунку заданим методом
vm_mayak (bufer);
Процедура перерахунку заданим методом
mayak_vm (bufer);
Процедура перерахунку заданим методом
Form2.MAYAK_VM.Checked
Властивості перемикача
Bufer
Змінна зберігання рядки
Inc ()
Функція збільшення

Схема алгоритму методу вибору обробки

SHAPE \ * MERGEFORMAT
Так
Ні
Ні
Ні
Ні
Ні
Ні
Ні
Так
Так
Так
Так
Так
Так
Початок
If DelProbel
DelProbel (bufer);
pc_mayak (bufer);
pc_vm (bufer);
nomerkadra (bufer);
vm_mayak (bufer);
Mayak_vm (bufer);
If pc_mayak
If pc_vm
If nomerkadra
If vm_mayak
If Mayak_vm
Bufer: =''; Inc (m);    
Кінець файлу
Кінець

Рис 2.6

2.3 Опис алгоритму вибору допоміжних методів обробки

2.3.1. Призначення і характеристика алгоритму

Алгоритм описує додаткові (допоміжні) методи вибору обробки даних. У результаті вибору підключаються додаткові можливості (видалення пробілів, порожніх рядків і послідовна нумерація кадрів).

2.3.2. Використовувана інформація

В алгоритмі використовується графічна оболонка методу вибору обробки.

2.3.3. Результати рішення

У результаті реалізації алгоритму програма налаштовується для обробки додатковими методами.

2.3.4. Алгоритм рішення

1. Якщо Form 1. Probel. Checked, переходимо до п. 2
2. DelProbel (bufer);
3. Якщо Form 1. NomerKadra. Checked, то переходимо до п. 4
4. Nomerkadra (bufer);
5. Якщо Form 1. PustoStr. Checked, то перехід до п. 6
          6. pustostroka;
7. Bufer: ='';
8. Inc (m);
           9. кінець
Таблиця 5
Список умовних позначень
Назва
Опис
Bufer
Змінна зберігання рядки
Inc ()
Функція збільшення значення
DelProbel (bufer);
Функція видалення пробілів
nomerkadra (bufer);
Функція відновлення нумерації кадрів
pustostroka;
Функція видалення порожніх рядків

2.4. Опис алгоритму конвертації

2.4.1. Призначення і характеристика алгоритму

Алгоритм описує конвертування вихідного тексту програми для верстатів з ЧПК. У результаті програма перераховує всі вихідні координати з даної системи програмування в задану.

2.4.2. Алгоритм рішення

1. Якщо (pos ('%', kadr) <> 0) or (pos ('$', kadr) <> 0), то перехід до п. 28
2. Якщо pos ('X', kadr) <> 0, то перехід до п. 3 інакше до п. 5
         3. NaytiKoordinatu (kadr, 'X', vyh);
4. PreobrazovanieMayak (X_nast, kadr);
5. uslovie: = FindVstavki ('X', kadr);
6. DobavitTochku (s);
7. insert (Concat ('X', s), kadr, uslovie);
         8. Якщо (pos ('G 42', kadr) <> 0) or (pos ('G 41', kadr) <> 0), те пер до п. 9
9. Якщо pos ('X', kadr) = 0, то перехід до п. 10
         10. uslovie: = FindVstavki ('X', kadr);
11. Insert ('X' + s, kadr, uslovie);
12. Якщо (pos ('I', Stroka.Strings [Succ (m)]) <> 0) and (pos ('J', Stroka.Strings [Succ (m)]) <> 0), то перехід до п. 13 інакше до п. 16
13. Naytikoordinatu (Stroka.Strings [Succ (m)], 'I', st);
14. Naytikoordinatu (Stroka.Strings [Succ (m)], 'J', st);
15. Podhod_G41_G42_radius;
16. Podhod_G41_G42_line;
         17. Якщо pos ('I', kadr) <> 0, то перехід до п. 18
         18. NaytiKoordinatu (kadr, 'I', st);
19. PreobrazovanieMayak (X_sled, kadr);
20. uslovie: = pos ('I', kadr);
21. Якщо uslovie <> 0, то перехід до п. 22
22. NaytiKoordinatu (kadr, 'I', vyh);
23. Якщо oshibka = 1, то перехід до п. 24
24. I: = X_divd + I;
25. divobrazovanieMAYAK (I, kadr);
26. X_divd: = X_nast;
27. Y_divd: = Y_nast;
         28. кінець
Таблиця 6
Список умовних позначень
Позначення
Розшифровка
Kadr
Поточний рядок обробки
NaytiKoordinatu (kadr, 'X', vyh);
Функція знаходження значення координати
vyh
Вихідна значення процедури
PreobrazovanieMayak (X_nast, kadr);
Функція перетворення координати
X_nast і X_divd
Числова мінлива сьогодення і попереднього значення Х
uslovie
Числова змінна
FindVstavki ('X', kadr);
Функція пошуку вставки значення заданої координати в рядку
DobavitTochku (s);
Функція вставляє крапку в рядок, якщо її немає
insert (Concat ('X', s), kadr, uslovie);
Функція вставляє і зв'язує рядки
(Pos ('I', Stroka.Strings [Succ (m)])
Функція пошуку та перевірки заданої позиції в рядку
Podhod_G41_G42_radius
Функція розрахунку радіусів на заходах
Podhod_G41_G42_line;  
Функція розрахунку лінійних входів
I і J
Координати кругової інтерполяції в програмі
Y_nast і Y_divd
Числова мінлива сьогодення і попереднього значення Y

Схема опис алгоритму конвертації

SHAPE \ * MERGEFORMAT
Ні
Так
Ні
Так
Ні
Ні
Так
if (pos ('I', Stroka.Strings [Succ (m)]) <> 0) and (pos ('J', Stroka.Strings [Succ (m)]) <> 0)
Так
Так
Ні
Ні
Так
Початок
pos ('%', kadr) <> 0) or (pos ('$', kadr) <> 0)
NaytiKoordinatu (kadr, 'X', vyh);
pos ('X', kadr) <> 0
If oshibka <> 1
insert (Concat ('X', s), kadr, uslovie);
pos ('Y', kadr) <> 0
PreobrazovanieMayak (X_nast, kadr);
NaytiKoordinatu (kadr, 'Y', vyh);
If oshibka <> 1
PreobrazovanieMayak (Y_nast, kadr);
insert (Concat ('Y', s), kadr, uslovie);
if (pos ('G42', kadr) <> 0) or (pos ('G41', kadr) <> 0)
Insert ('X' + s, kadr, uslovie);
Insert ('Y' + s, kadr, uslovie);
Podhod_G41_G42_radius;
Podhod_G41_G42_line;
NaytiKoordinatu (kadr, 'I', vyh);
divobrazovanieMAYAK (I, kadr);
NaytiKoordinatu (kadr, 'J', vyh);
divobrazovanieMAYAK (J, kadr);
X_divd: = X_nast;
Y_divd: = Y_nast;
Кінець
Кінець

Рис. 2.7

2.5 Опис програми «Налагоджувальник»

2.5.1. Водна частина

Програма «Налагоджувальник» застосовується для автоматизації процесу перерахунку вихідного тексту (коди) програм для верстатів з ЧПК. При цьому програма використовує людино-машинний інтерфейс: людина вибирає, чим оперувати і параметри обробки даних, а програма виконує всі необхідні розрахунки.
Для початку роботи слід завантажити текстовий файл (програмний код для верстата з ЧПУ), і задати параметри його обробки. Після цього програма робить перерахунок координат з даної в задану систему програмування.
Програма має позначення «Налагоджувальник», розроблена в середовищі програмування Borland Delphi 7.

2.5.2. Функціональне призначення

Програма виконує конвертацію (перерахунок) вихідних координат в задану систему ЧПУ. Програма використовує алгоритми, описані в підрозділах 2.2-2.4.
Для функціонування програми необхідний наступний комплекс технічних засобів:
- Процесор IBM сумісний 486 і вище;
- Підсистема «Налагоджувальник» займає близько 5 Мб оперативної пам'яті. Додатково до цього програма виділяє додаткову пам'ять під текстові файли, завантажені в її оболонку;
- Для розміщення ОС Windows XP і прикладних задач на жорсткому диску необхідно мінімально 1,5 Гб вільного простору. На диску програма займає 625 кілобайт пам'яті. Додаткове місце на диску займають текстові файли використовуються програмою, а також файли створювані програмою. З урахуванням цього на диску необхідно виділити достатній простір для всіх файлів (від 10 Мб і вище);
- Відеопідсистема з об'ємом пам'яті 32 Мб;
- Кольоровий SVGA монітор з діагоналлю не менше 15''і роздільною здатністю не нижче 800x600 (рекомендується 1024x768);
- Русифікована клавіатура;
- Маніпулятор «миша».

2.5.3. Опис інформації

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

2.5.4. Використовувані підпрограми

У програмі використано такі підпрограми:
- NaytiKoordinatu - знаходження значення заданої координати;
- DobavitTochku - додавання необхідної точки;
- Podhod_G41_G42_radius - розрахунок радіусів при заході інструменту на еквідістанту контуру оброблюваної деталі;
- DivobrazovanieVM - перетворить рядок, видаляє і вставляє підрядок (система ВМ);
- DivobrazovanieMAYAK - Перетворює рядок, видаляє і вставляє підрядок (система Маяк);
- Podhod_G41_G42_line - розрахунок лінійних входів на еквідістанту контуру оброблюваної деталі;
- FindVstavki - пошук місця вставки заданої координати;
- DelProbel - видалення всіх прогалин;
- Pustostroka - видалення всіх порожніх рядків;
- Nomerkadra - відновлення послідовної нумерації кадрів;
- PC_MAYAK - перерахунок координат з системи Сінумерік в систему Маяк;
- VM_MAYAK - перерахунок координат з системи Вм в систему Маяк;
- MAYAK_VM - перерахунок координат з системи Маяк у систему Вм;
- PC_VM - перерахунок координат з системи Сінумерік в систему Вм.

2.5.5. Опис логіки

Опис логіки програми «Налагоджувальник» наведено на рис. 2.8.
Логічна схема
SHAPE \ * MERGEFORMAT
Ні
Так
Так
Ні
Ні
Так
початок
Відкриття
файлу
Редактор не порожній і метод заданий
Обробка заданими методом
кінець
Вибір основного методу обробки
Вибір додаткових методів обробки

Рис. 2.8

2.6. Опис контрольного прикладу

2.6.1. Призначення

Контрольний приклад призначений для перевірки коректності роботи програми.

2.6.2. Вихідні дані

В якості вихідних даних використовувався текстовий файл програми обробки.

2.6.3. Результати розрахунку

У результаті обробки (конвертації) повинна вийти повністю працездатна програма для верстатів з ЧПК. Обробка увазі використання всіх методів конвертації. А так само з використанням завед7омо невірних координат, з метою їх автоматичного перетворення програмою, і створення виняткових ситуацій для обробки та їх усунення.

2.6.4. Результати випробування

У результаті обробки даних контрольного прикладу отримані текстові файли для різних систем програмування. Вони були перевірені і прораховані вручну і повністю відповідають обраній системі конвертації.

3. ОРГАНІЗАЦІЙНО-ЕКОНОМІЧНА ЧАСТИНА

3.1. Обгрунтування необхідності розробки системи конвертування тексту програм для верстатів з ЧПК

Система конвертації є самостійною програмою призначеної для повного аналізу, перерахунку та виправлення помилок у текстах програм для верстатів з ЧПК. Система, що розробляється служить на виробництві протягом вже декількох років і зарекомендувала себе з кращого боку.
- Програма дозволяє виправляти помилки, отримані в результаті не правильних дій програміста;
- Практично виключає правку програми вручну;
- Зменшує обсяг програмного тексту.
Таким чином, розробка системи дозволить, крім виконання основного завдання, заощадити на обсязі пам'яті пристроїв зберігання інформації і знизити навантаження і вимоги по швидкості розробки та впровадження програм для верстатів з ЧПК.

3.2. Планування розробки

Планування розробки програмного забезпечення дозволяє правильно організувати робочий процес, розподілити обов'язки, позначити перелік необхідних робіт і виконати його у встановлені терміни.
Розрахунок трудомісткості розробки завдання наведено в табл.7
Таблиця 7
Розрахунок трудомісткості розробки завдання
Найменування етапу розробки
Виконавці
Трудомісткість робіт, чол-год
Посада
Кількість
1. Вивчення постановки задачі і методів розв'язання
інженер-програміст
1
84
2. Розробка алгоритмів
інженер-програміст
1
168
3. Реалізація та налагодження алгоритмів
інженер-програміст
1
168
4. Документування системи
інженер-програміст
1
84
РАЗОМ
1
504

3.3. Розрахунок витрат на створення системи

Для визначення величини витрат на створення системи, використовуємо метод прямого рахунку. Розрахунок витрат здійснюється за наступними статтями:
- Витрати на матеріали;
- Витрати на оплату праці виконавців;
- Соціальні податки;
- Витрати на утримання ВТ;
- Накладні витрати;
- Інші витрати.
У статтю "Витрати на матеріали" включають вартість основних і допоміжних матеріалів, покупних виробів, а також витрати енергії і запчастин необхідних для створення системи. Витрати по статті наведені в табл. 8

Таблиця 8
Витрати на матеріали
Найменування матеріалу
Кількість
Ціна од, руб
Витрати
Папір писальний
1 пачка (500л)
100.00
100.00
Диск перезаписуваний CD-RW
1 шт.
40.00
40.00
Картридж для принтера Canon BJC-1000
1 шт.
150.00
150.00
Інші канцелярські товари
50.00
РАЗОМ
340.00
Розрахунок витрат по оплаті праці виконавців.
Оклад інженера-програміста на період розробки (Пм = 3 місяці) становить у середньому ЗПМ = 4500.00 рублів на місяць. Тоді витрати на оплату праці:
Рот тариф = ЗПМ * Пм (3.1)
Рот тариф = 4500.00 * 3 = 13500.00 руб.
З урахуванням уральського коефіцієнта (15%) загальні витрати на оплату праці виконавців складуть:
Рот = Зп + Кур (3.2)
Кур = 13500.00 * 0.15 = 2025.00 руб.
Рот = 13500.00 +2025.00 = 15525.00 руб.
Відрахування у фонди резерву відпусток (10%) від витрат на оплату праці виконавців:
Р Резо = Рот * 0.1 (3.3)
Р Резо = 15525.00 * 0.1 = 1552.50 руб.
Стаття "Соціальні податки" складає 26,2% від оплати праці і призначена для перерахування у позабюджетні державні фонди:
- Пенсійний (20%);
- Обов'язкового медичного страхування (3,1%);
- Соціального страхування (2,9%);
- Обов'язкове страхування від нещасних випадків (0,2%).
Сума за статтею становить:
Р соц нал = (Рот + Р Резо) * 26.2/100 (3.4)
Р соц нал = (15525.00 +1552.50) * 26.2/100 = 4474.31 руб.
Стаття "Витрати на утримання ВТ" включає витрати, пов'язані з орендою ОТ та обслуговуванням Вт Ці витрати включають в себе амортизаційні відрахування, відсоток за оренду (комісійні), витрати на запчастини, вартість електроенергії (якщо вони не включені в матеріальні витрати), а також інші витрати, пов'язані з утриманням Вт
Вартість одного машинного години розраховується за формулою:
Ач = Сісп / (ЧС * Кч), (3.5)
де Аг - оренда за годину використання;
Сісп - загальна вартість використання устаткування (розраховується за формулою);
Чм - число місяців у році;
Кч - кількість робочих годин у місяці.
Сісп = Акомп + Апо + ЗПобсл + СЗЧ + Сел, (3.6)
де Акомп - амортизація комп'ютера і принтера за рік експлуатації;
А ПО - амортизація програмного забезпечення;
ЗПобсл - витрати обслуговуючого персоналу за рік експлуатації;
СЗЧ - вартість запчастин для комп'ютера за рік експлуатації;
Сел - вартість витраченої електроенергії за рік експлуатації.
Акомп = Скомп / Спи, (3.7)
де Скомп - вартість комп'ютера і принтера;
Спи - строк корисного використання (5 років).
Акомп = 34000 / 5 = 6800 руб.
А ­ по = Спо / Спи, (3.8)
де Спо - вартість програмного забезпечення;
Спи - строк корисного використання (5 років).
Апо = 10000 / 5 = 2000 руб.
Витрати на споживану від мережі електроенергію визначаються за формулою:
Сел = N * Тексп * Се, (3.9)
де N - споживана потужність, кВт.; (220 * (0.24 +1.5 +4) / √ 2 = 0.893 кВт)
Тексп - тривалість експлуатації за рік; (1920 год)
Cе - вартість 1 кВт.-ч. силової енергії. (1.26 р. / кВт)
Сел = 0.893 * 1920 * 1.26 = 2160.35 руб.
Вартість річного використання складає:
Сісп = 6800 +2000 +2000 +1000 +2160.35 = 13960.35 руб.
Відповідно оренда за годину використання:
Ач = 13960.35 / (12 * 160) = 7.27 руб.
ВТ використовувалася на всіх етапах розробки системи (див. табл. 3.1) Загальний час експлуатації ЗТ склала Тисп = 504 години. Отже, сума витрат на ВТ, тобто на оренду становить:
РВТ = А = Тисп * Ач (3.10)
РВТ = 504 * 7.27 = 3664.08 руб.
Стаття "Накладні витрати" включає в себе витрати, пов'язані з утриманням управлінського персоналу, на підприємстві становить до 130% основної заробітної плати:
Нр = Рот * 1.30 (3.11)
Нр = 15525.00 * 1.30 = 20182.5 руб.
Стаття "Інші витрати" включає в себе витрати, невраховані у попередніх статтях (до 10% від основної заробітної плати):
Пр = Рот * 0.10 (3.12)
Пр = 15525.00 * 0.10 = 1552.5 руб.
Табл. 9 відображає витрати за статтями і частку цих витрат у загальній сумі. Часткове співвідношення витрат представлено на малюнку 3.1
Таблиця 9
Кошторис витрат на розробку системи
Статті витрат
Сума витрат, руб.
Витрати на матеріали
340
Витрати на оплату праці виконавців
17080
Соціальні податки
4470
Витрати на утримання ВТ
3660
Накладні витрати
20190
Інші витрати
1550
Разом
47290
Структура витрат на розробку


\ S
Рис 3.1

4. БЕЗПЕКА І ЕКОЛОГІЧНІСТЬ ПРОЕКТУ

Комп'ютери в даний час широко використовуються у всіх сферах людської діяльності. Вони стали основним робочим інструментом людини в його щоденній діяльності. У зв'язку з цим необхідно приділяти увагу охороні праці при роботі з ПК. Недотримання санітарно-гігієнічних правил і норм при роботі з комп'ютером може спричинити за собою розвиток ряду захворювань.
Охорона праці має не лише соціальний, а й економічний аспект. У результаті покращення умов праці спостерігається підвищення продуктивності праці, зниження непродуктивних витрат часу, збільшення фонду робочого часу, економія витрат на оплату лікарняних та компенсації за роботу в несприятливих умовах праці.
У даному розділі дипломного проекту висвітлюються основні питання техніки безпеки та екології праці.

4.11 Аналіз шкідливих і небезпечних виробничих факторів

Постійна напруга очей
Робота з комп'ютером характеризується високою напруженістю зорової роботи. Постійна напруга очей може призвести до зниження гостроти зору. Екран відеомонітора повинен знаходитися від очей користувача на оптимальній відстані 600 ... 700 мм, але не ближче 500 мм з урахуванням розмірів алфавітно-цифрових знаків і символів. Також для зменшення навантаження на рекомендується робити 15-хвилинні перерви в роботі за комп'ютером протягом кожної години.
Вплив електростатичних і електромагнітних полів
Точне дію електромагнітних полів не вивчено, проте дослідження показали, що випромінювання ускладнює серцево-судинні захворювання, негативно впливає на розвиток вагітності, знижує імунітет. Враховуючи, що програміст проводить багато часу з комп'ютером, вплив електромагнітних полів може негативно відбитися на його здоров'ї.
Допустимі значення параметрів неіонізуючих електромагнітних випромінювань від монітора комп'ютера представлені в табл. 4.1.
Максимальний рівень рентгенівського випромінювання на робочому місці оператора комп'ютера звичайно не перевищує 10 мкбер / ч, а інтенсивність ультрафіолетового і інфрачервоного випромінювань від екрану монітора лежить в межах 10 ... 100 мВт / м 2 / 18 /.
Таблиця 4.1
Допустимі значення параметрів неіонізуючих електромагнітних випромінювань (відповідно до СанПіН 2.2.2.542-96)
Найменування параметра
Допустимі значення
Напруженість електричної складової електромагнітного
поля на відстані 50см від поверхні відеомонітора
10В / м
Напруженість магнітної складової електромагнітного
поля на відстані 50см від поверхні відеомонітора
0,3 А / м
Напруженість електростатичного поля не повинна перевищувати:
для дорослих користувачів
для дітей дошкільних установ і що вчаться
середніх спеціальних і вищих навчальних закладів
20кВ / м
15кВ / м
Для зниження дії цих видів випромінювання рекомендується застосовувати монітори із зниженим рівнем випромінювання (MPR-II, TCO-92, TCO-99), встановлювати захисні екрани, а також дотримуватися регламентовані режими праці та відпочинку.
Тривалий незмінне положення тіла
Робота з комп'ютером характеризується значною розумовою напругою і нервово-емоційним навантаженням операторів, високою напруженістю зорової роботи і достатньо великим навантаженням на м'язи рук при роботі з клавіатурою ЕОМ. Велике значення має раціональна конструкція і розташування елементів робочого місця, що важливо для підтримки оптимальної робочої пози людини-оператора.
Шум
Шум погіршує умови праці, роблячи шкідливий вплив на організм людини. Працюючі в умовах тривалої шумової дії випробовують дратівливість, головні болі, запаморочення, зниження пам'яті, підвищену стомлюваність, зниження апетиту, біль у вухах і т. д. У табл. 4.2 вказані граничні рівні звуку залежно від категорії тяжкості і напруженості праці, що є безпечними відносно збереження здоров'я і работоспособності/21 /.
Таблиця 4.2
Граничні рівні звуку, дБ, на робочих місцях
Категорія
напруженості праці
Категорія важкості праці
I. Легка
II. Середня
III. Важка
IV. Дуже важка
I. Мало напружений
80
80
75
75
II. Помірно напружений
70
70
65
65
III. Напружений
60
60
-
-
IV. Дуже напружений
50
50
-
-
Рівень шуму на робочому місці інженерів-програмістів і операторів відеоматеріалів не повинен перевищувати 50дБА, а в залах обробки інформації на обчислювальних машинах - 65дБА. Для зниження рівня шуму стіни і стеля приміщень, де встановлені комп'ютери, можуть бути облицьовані звукопоглинальними матеріалами.

4.2. Техніка безпеки при роботі з комп'ютером

Принцип захисту відстанню
Основну небезпеку при роботі з комп'ютером представляє електромагнітне випромінювання. Найбільш сильно воно виявляється в зоні до 30 см від екрану, а також від задньої і бічних поверхонь. Тому монітор необхідно розташовувати так, щоб очі знаходилися на відстані не ближче 60 - 70 см від екрану. Між бічними поверхнями сусідніх комп'ютерів повинно бути не менше 1,2 м. При розташуванні рядами: між тильними сторонами комп'ютерів повинно бути не менше 2м. Рекомендується розташовувати комп'ютери уздовж стіни.
Принцип захисту часом
За санітарними правилами і нормами СанПиН 2.2.2.542-96 «Гігієнічні вимоги до відеодисплейних терміналів, персональних електронних обчислювальних машин і організації роботи» / 18 / види трудової діяльності поділяються на три групи:
- Група А - робота з зчитування інформації з екрана;
- Група Б - робота з введення інформації;
- Група В - творча робота в режимі діалогу з ЕОМ.
Діяльність розробника програмного забезпечення відноситься до групи В. При виконанні робіт, що відносяться до різних видів трудової діяльності, за основну роботу з ЕОМ приймають таку, яка займає не менше 50% часу протягом робочої зміни або робочого дня.
Для видів трудової діяльності встановлюються три категорії тяжкості і напруженості робіт з ЕОМ і відеотерміналом (табл. 4.3).
Таблиця 4.3
Категорії тяжкості і напруженості робіт
Категорія роботи з ПК
Рівень навантаження за робочу зміну при роботі з ПК (max)
Сумарний час регламентованих перерв, хв.
Група А,
кол-во знаків
Група Б,
кол-во знаків
Група В,
к-ть годин
При 8-ми годинний зміні
При 12-ти годинній зміні
I
20 000
15 000
2
30
70
II
40 000
30 000
4
50
90
III
60 000
40 000
6
70
120
При 8-ми годинний робочій зміні і роботі на ПК регламентовані перерви слід встановлювати:
- Для I-ої категорії робіт через 2 години від початку робочої зміни і через 2 години після обідньої перерви тривалістю 15 хвилин кожний;
- Для II-ої категорії робіт через 2 години від початку робочої зміни і через 1,5 - 2 години після обідньої перерви тривалістю 15 хвилин кожен або 10 хвилин через кожну годину роботи;
- Для III-ої категорії робіт через 1,5 - 2 години від початку робочої зміни і через 1,5 - 2 години після обідньої перерви тривалістю 20 хвилин кожен або 15 хвилин через кожну годину роботи.
При 12-ти годинній зміні і роботі на ПК регламентовані перерви слід встановлювати: у перші 8 годин роботи аналогічно перервам при 8-ми годинному робочій зміні, а протягом наступних 4-х годин роботи не залежно від категорії і виду робіт 15 хвилин через кожну год.

4.3. Електробезпека при роботі з комп'ютером

Електричні установки, до яких відноситься практично все обладнання ЕОМ, представляють для людини велику потенційну небезпеку, тому що в процесі експлуатації або проведенні профілактичних робіт людина може торкнутися частин, що знаходяться під напругою.
Будь-який вплив струму може призвести до електричної травми, тобто до пошкодження організму, викликаному дією електричного струму або електричної дуги / 19 /.
При розгляді питання забезпечення електробезпеки розробника необхідно виділити три основні чинники:
- Електроустановки робочого місця програміста;
- Допоміжне електроустаткування;
- Навколишнє середовище приміщення.
До електропристрої робочого місця належать: комп'ютер, відеомонітор, принтер. До допоміжного обладнання відносяться лампи місцевого освітлення, вентилятори і інші електричні прилади. Електрообладнання, перераховане вище, відноситься до установок напругою до 1000 В, виняток становлять лише дисплей, електронно-променеві трубки, яких мають напругу в кілька кіловольт.
Навколишнє середовище приміщень, в яких працює програміст, впливає на електричну ізоляцію приладів і пристроїв, електричний опір тіла людини і може створювати умови для ураження електричним струмом.
Приміщення, обладнані обчислювальною технікою, як правило, відносяться до категорії приміщень без підвищеної небезпеки так як:
- Відносна вологість повітря не перевищує 75%;
- Немає струмопровідного пилу;
- Температура не перевищує тривалий час 30 ° С;
- Відсутня можливість одночасного дотику людини з мають з'єднання із землею металевими конструкціями;
- Відсутність доступу до струмоведучих частин обладнання;
- Немає струмопровідних підлог.
Таким чином, для запобігання електротравматизму користувача, необхідно дотримуватись вимог безпеки, як при роботі зі звичайною побутовою технікою.

4.4. Вимоги до освітлення робочого місця та його розрахунок

4.4.1. Вимоги до освітлення робочого місця

До сучасного освітлення приміщень, де працюють з обчислювальною технікою, висувають високі вимоги як гігієнічного, так і технічного характеру. Правильно спроектоване і виконане висвітлення забезпечує високий рівень працездатності, робить позитивний психологічний вплив, сприяє підвищенню продуктивності праці. Умови діяльності користувача в системі "людина-машина" пов'язані з явною перевагою зорової інформації - до 90% загального обсягу.
У приміщеннях з комп'ютерною технікою застосовується поєднана система освещенія/17 /. До таких систем висувають такі вимоги:
- Відповідність рівня освітленості робочих місць характером виконуваних зорових робіт;
- Досить рівномірний розподіл яскравості на робочих поверхнях і в навколишньому просторі;
- Відсутність різких тіней, прямий і відображеної бляклості;
- Сталість освітленості у часі;
- Оптимальна спрямованість випромінюваного освітлювальними приладами світлового потоку;
- Довговічність, економічність, електро-та пожежобезпечність, естетичність, зручність і простота експлуатації.
Для штучного освітлення приміщень з обчислювальною технікою слід використовувати головним чином люмінесцентні лампи, у яких висока світлова віддача (до 75 лм / Вт і більше); тривалий термін служби (до 10 000 год), мала яскравість світної поверхні, близький до природного спектр випромінювання, що забезпечує гарну передачу кольору. Найбільш прийнятними є люмінесцентні лампи білого світла і тепло-білого світла потужністю 20, 40, 80 Вт.
Для виключення засвічення екранів дисплеїв прямим світловим потоком, світильники загального освітлення мають в своєму розпорядженні збоку від робочого місця, паралельно лінії зору оператора і стіні з вікнами. Таке розташування світильників дозволяє виробляти їх послідовне включення в міру необхідності і виключає роздратування очей чергуються смугами світла і тіні, що виникає при поперечному розташуванні світильників.
Рекомендоване освітлення для роботи з екраном дисплея складає 150 лк, а при роботі з екраном в поєднанні з роботою над документами - 300 лк. Рекомендована яскравість у полі зору програміста повинна лежати в межах 1:5-1:10.

4.4.2. Розрахунок освітленості робочого місця

Розрахунок освітленості робочого місця зводиться до вибору системи освітлення, визначенню необхідного числа світильників, їхнього типу і розміщення. Процес роботи програміста в таких умовах, коли природне освітлення недостатньо або відсутній. Виходячи з цього, розрахуємо параметри штучного освітлення.
Розрахунок освітлення проводиться для кімнати площею 42 м 2: довжина - 7 м , Ширина - 6 м , Висота - 3 м . Рівномірне освітлення горизонтальної робочої поверхні досягається при певних відносинах відстані між центрами світильників L, м (L = 1,75 * Н) до висоти їх підвісу над робочою поверхнею Н , М (у розрахунках Н = Н).
L = 1,75 * Н = 1,75 * 3 = 5,25 м .
Число світильників з люмінесцентними лампами (ЛЛ)
, (4.1)
де S - площа приміщення, м ;
М - відстань між паралельними рядами, м.
М 0,6 Н
М 0,6 * 3 = 1,8 приймаємо М = 2;
;
Для досягнення рівномірної горизонтальної освітленості світильники з ЛЛ рекомендується розташовувати суцільними рядами, паралельно стінам з вікнами або довгим сторонам приміщення.
Для розрахунку загального рівномірного освітлення горизонтальної робочої поверхні використовують метод світлового потоку, що враховує світловий потік, відбитий від стелі та стін.
Для визначення кількості світильників визначимо світловий потік, падаючий на поверхню за формулою:
, (4.2)
де F p - розраховується світловий потік, Лм;
Е n - нормована мінімальна освітленість, Лк (визначається за таблицею). Роботу програміста, відповідно до цієї таблиці, можна віднести до розряду точних робіт, отже, мінімальна освітленість буде Е = 300 Лк при газорозрядних лампах;
S - площа освітлюваного приміщення (у нашому випадку S = 42 м 2 );
Z - відношення середньої освітленості до мінімальної (звичайно приймається рівним 1.1-1.2, нехай Z = 1.1);
К - коефіцієнт запасу, враховує зменшення світлового потоку лампи в результаті забруднення світильників у процесі експлуатації (його значення визначається за таблицею коефіцієнтів запасу для різних приміщень і в нашому випадку К = 1.5);
η - коефіцієнт використання, (виражається відношенням світлового потоку, що падає на розрахункову поверхню, до сумарного потоку всіх ламп і обчислюється в частках одиниці; залежить від характеристик світильника, розмірів приміщення, фарбування стін і стелі, якi характеризуються коефіцієнтами відображення від стін (Рс) і стелі (Рп)), значення коефіцієнтів Рс і Рп визначимо по таблиці залежностей коефіцієнтів відображення від характеру поверхні: Рс = 30%, Рп = 50%. Значення η визначимо за таблицею коефіцієнтів використання різних світильників. Для цього обчислимо індекс приміщення по формулі:
, (4.3)
де S - площа приміщення, S = 42 м 2 ;
h - розрахункова висота підвісу, h = 3 м ;
A - ширина приміщення, А = 6 м ;
В - довжина приміщення, В = 7 м.
Підставивши значення отримаємо:

Знаючи індекс приміщення I, Рс і Рп, по таблиці знаходимо η = 0.3
Підставимо всі значення у формулу для визначення світлового потоку F:
Лм
Враховуючи, що у світильнику по 4 лампи, світловий потік однієї лампи буде дорівнює . Для освітлення вибираємо люмінесцентні лампи типу ЛБ20, світловий потік яких F л = 1180 Лм.

(I) Розраховуємо споживану потужність освітлювальної установки відповідно до формули:

, (4.4)
де р - потужність лампи, Вт;
N - число світильників, шт. N = 4;
n - число ламп в світильнику; для ЛЛ n = 4.
P = 20 * 4 * 4 = 320 Вт = 0,32 кВт.
Розрахуємо дійсне освітлення.
У робочому приміщенні є 4 світильників, у кожному з яких використовується по 4 лампи ЛДЦ20. Розрахуємо світловий потік:
Ф = 820 * 4 * 4 = 3280 лк;
Розрахуємо значення нормованої освітленості:
Е = (Ф * N * η) / (S * Z * K) = 227 лк ≤ 300 лк.
Отримане значення нормованої освітленості виявилося менше нормованої мінімальної освітленості. Рекомендується замінити використовувані лампи, на лампи з великим світловим потоком.

4.5. Параметри мікроклімату, забруднення повітря робочої зони шкідливими речовинами

Під метеорологічними умовами розуміють поєднання температури, відносної вологості, швидкості руху та запилення повітря. Перераховані параметри впливають на функціональну діяльність людини, її самопочуття та здоров'я і на надійність засобів обчислювальної техніки. Ці мікрокліматичні параметри впливають як кожен окремо, так і в різних поєднаннях.
Температура повітря є одним з основних параметрів, що характеризують тепловий стан мікроклімату. Сумарне тепловиділення в приміщенні надходить від таких джерел:
- ЕОМ;
- Допоміжного обладнання;
- Приладів освітлення;
- Людей;
- Зовнішніх джерел.
Найбільша кількість теплоти виділяють ЕОМ і допоміжне обладнання. Середня величина тепловиділення від комп'ютерів коливається до 100 Вт / м 2. Тепловиділення від приладів освітлення також великі. Питома величина яких становить 35 Вт / м 2. При цьому, чим більше рівень освітленості, тим вище питомі величини тепловиділень. Кількість теплоти від обслуговуючого персоналу незначно. Воно залежить від числа працюючих у приміщенні, інтенсивності роботи, що виконується людиною.
До зовнішніх джерел надходження теплоти відносять теплоту, що надходить через вікна від сонячної радіації, приплив теплоти через непрозорі огородження конструкцій. Інтенсивність цих джерел залежить від розташування будинку, орієнтації по частинам світу, колірної гами і прочее/15 /.
З метою створення нормальних умов праці програміста встановлені оптимальні і допустимі значення всіх параметрів мікроклімату (табл. 4.4.).
Таблиця 4.4
Параметри мікроклімату виробничих приміщень
Параметри
Значення параметрів
оптимальні
допустимі
Температура
20-22 ° С
17-22 ° С
Відносна вологість
40-60%
до 75%
Швидкість руху повітря
0,1 м / с
не більше 0,3 м / с
З метою підтримки температури і вологості повітря в приміщенні можна використовувати системи опалення, вентиляції та кондиціонування повітря.
На досліджуваному робочому місці температура повітря, вологість та швидкість руху повітря тримається в рамках оптимальних параметрів. Шкідливі речовини в повітрі робочої зони не перевищують граничної допустимої концентрації.

4.6. Пожежна безпека при роботі з комп'ютером

Приміщення, в якому встановлено робоче місце інженера-програміста, відноситься до категорії Д по вибухопожежонебезпечності, тому що не містить горючих речовин, але лише негорючі речовини і матеріали в холодному стані.
Пожежі в приміщенні, в якому знаходиться ЕОМ, представляють особливу небезпеку, тому що пов'язані з великими матеріальними втратами. Площа приміщення, в якому ведеться проектування, невелика і складає 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_divd, X_sled, Y_nast, Y_divd, 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'dimasoft1 @ mail.ru ');
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 divobrazovanieVM (vhod_v_divobrazovanie: real; var kadr: string): string;
var
stroka: string [10];
begin
delete (kadr, nach, oshibka-1);
stroka: = FloatToStr (vhod_v_divobrazovanie); / / Перетворимо до числа рядок
insert (stroka, kadr, nach);
end;
/ / Перетворює рядок, видаляє і вставляє підрядок МАЯК
function divobrazovanieMAYAK (vhod_v_divobrazovanie: real; var kadr: string): string;
var
stroka: string [10];
begin
delete (kadr, nach, oshibka-1);
if vhod_v_divobrazovanie <> 0 then
begin
stroka: = FloatToStrF (vhod_v_divobrazovanie, fffixed, 12, 3); / / Перетворимо до числа рядок
vhod_v_divobrazovanie: = StrToFloat (stroka); / / Був глюк при конвертації
stroka: = FloatToStr (vhod_v_divobrazovanie); / / Зараз начебто працює
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_divd / 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); / / У позиції XYIJFM
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_divd: = X_nast;
Y_divd: = 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_divd + I;
divobrazovanieMAYAK (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_divd + J;
divobrazovanieMAYAK (J, kadr);
end;
end;
X_divd: = X_nast;
Y_divd: = 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;
divobrazovanieMAYAK (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;
divobrazovanieMAYAK (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); / / У позиції XYIJFM
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_divd: = X_nast;
Y_divd: = 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;
divobrazovanieMAYAK (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_divd + I;
divobrazovanieMAYAK (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;
divobrazovanieMAYAK (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;
divobrazovanieMAYAK (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;
divobrazovanieMAYAK (K, kadr);
end;
end;
X_divd: = X_nast;
Y_divd: = 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); / / відкидаємо дробову частину
divobrazovanieVM (X_nast, kadr);
end;
end
else
if I_est then
begin
uslovie: = pos ('Y', kadr);
strok: = FloatToStr (X_divd); / / Перетворимо до числа рядок
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); / / відкидаємо дробову частину
divobrazovanieVM (Y_nast, kadr);
end;
end
else
if I_est then
begin
uslovie: = pos ('I', kadr);
strok: = FloatToStr (Y_divd); / / Перетворимо до числа рядок
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); / / У позиції XYIJFM
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_divd: = X_nast;
Y_divd: = 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_divd;
divobrazovanieVM (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_divd;
divobrazovanieVM (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); / / відкидаємо дробову частину
divobrazovanieVM (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); / / відкидаємо дробову частину
divobrazovanieVM (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); / / відкидаємо дробову частину
divobrazovanieVM (K, kadr);
end;
end;
X_divd: = X_nast;
Y_divd: = 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); / / відкидаємо дробову частину
divobrazovanieVM (X_nast, kadr);
end;
end
else
if I_est then
begin
uslovie: = pos ('Y', kadr); / / Перетворимо до числа рядок
insert ('X' + FloatToStr (X_divd), 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); / / відкидаємо дробову частину
divobrazovanieVM (Y_nast, kadr);
end;
end
else
if I_est then
begin
uslovie: = pos ('I', kadr); / / Перетворимо до числа рядок
insert ('Y' + FloatToStr (Y_divd), 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; / / У позиції XYIJFM
Insert ('X' + FloatToStr (X_nast), kadr, uslovie);
end
else
begin
X_nast: = X_divd;
uslovie: = FindVstavki ('X', kadr); / / У позиції XYIJFM
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_divd: = X_nast;
Y_divd: = 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); / / відкидаємо дробову частину
divobrazovanieVM (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); / / відкидаємо дробову частину
divobrazovanieVM (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); / / відкидаємо дробову частину
divobrazovanieVM (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); / / відкидаємо дробову частину
divobrazovanieVM (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); / / відкидаємо дробову частину
divobrazovanieVM (K, kadr);
end;
end;
X_divd: = X_nast;
Y_divd: = 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.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
N73X90.91Y-160.881
N74G3X91.643Y-166.402I514.603J-107.419
N75X92.657Y-173.301I442.283J-118.404
N76G1X91.625Y-178.443
N77G2X91.623Y-178.442I93.651J-171.743
N78X90.181Y-177.736I93.064J-173.682
N79G1X89.494Y-177.174
N80X89.242Y-176.969
Принцип перерахунку:
Перерахунок радіусів
I наст = X перед + I наст   Це формули перерахунку радіусів з відносною в
J наст = Y перед + J наст абсолютну систему координат.
Тобто, для кадру N74 (програма 2) беремо з кадру N0800 (програма 1) X, Y з N0810 беремо I, J отримуємо:
I наст = X 90.91 + I423.693 = 514.603 результат обробки в програмі 2 (кадр N74)
J наст = Y -160.881 + J 53.462 = -107.419
Розрахунок лінійних входів (функції G 41, G 42) на еквідістанту контуру оброблюваної деталі.
Таблиця П4.11
Додавання відсутнього координат
до обробки (програма 1)
після обробки (програма 2)
N5G1Z-25.F500M8
N6G90G42D20X-104.6Y0F20
N7Y-23.
N5G1Z-25.F500M8
N6G90G42D20X-104.6Y0I0J-23.F20
N7Y-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
Розрахунок входів на радіус (функції G 41, G 42) на еквідістанту контуру оброблюваної деталі.
З початку розраховуємо значення (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.F500M8
N6G90G42D20X-104.6Y0I0J-23.F20
N8G3X-102.1Y-25.5I2.5J0.0
N1G1Z-25.F500M8
N2G90G42D20X-104.6Y0I0J-102.1F20
N3G3X-102.1Y-25.5I-102.1J0
Не перераховуйте програму двічі. Зазвичай буває так - програміст згенерував програму в   (Unigraphics) або десь в іншому редакторі на МАЯК або ВМ у "наладчик» і забув ще вставити код, він його додає і знову відкриває і перераховує. Взагалі-то програма не дасть перерахувати двічі, але якщо відкрити і закрити файл то можна прорахувати ще раз (скільки завгодно разів можна перераховувати лише номери кадрів, порожні рядки і прогалини, без шкоди для програми). Тут же чисто математичний розрахунок і програма, перерахована двічі, не буде правильною.
ЗМІСТ
\ U ВСТУП .. 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
Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Диплом
330.2кб. | скачати


Схожі роботи:
Перетворення чисел з однієї системи числення в іншу
Правове регулювання переведення земель з однієї категорії в іншу
Програмування циклічних та типових програм на Асемблері для мікропроцесора КР580ИК80
Складання програм для вирішення задач на мові програмування Turbo Pascal
Створення вихідного матеріалу для селекції сорго різного напряму використання
Система моделей для CADCAE верстатів
Розробка програм у середовищі програмування Turbo Pascal 7 0
Розробка програм у середовищі програмування Turbo Pascal 70
Проектування двошвидкісного асинхронного двигуна для приводу деревообробних верстатів
© Усі права захищені
написати до нас