История №787102
В конце 80-х станки с числовым программным управлением в нашей стране потихоньку стали распространяться и по обычным предприятиям, выйдя за пределы "почтовых ящиков"... А вот специалистов по ремонту и обслуживанию станков было очень мало. А уж по ремонту микроЭВМ, этими станками управляющими - единицы. Посему были созданы региональные Центры по ремонту и обслуживанию этих монстров и "инженеГры" стали разъезжать по предприятиям и решать проблемы...
На одном заводе Автопрома фрезерный станок исправно делал множество сложных деталей, но напрочь отказывался делать единственную простую. Причем, делал деталь практически всю: несколько круглых углублений разного диаметра получались, но при резании последнего(!) отверстия, когда до окончания операции (и,собственно изготовления детали) оставались доли секунды, стол станка с деталью внезапно шарахался в сторону так, что ломалась фреза и деталь портилась полностью..
Ну, приехали мы на завод. Запустили станок "по воздуху"- программу без детали... Смотрим - дергается.
Стойка управления, приводы, датчики - все исправны, тесты проходят... Что называется - ЗАДАЧА :(
Однако запустили программу по шагам и заметили, что координаты точки окончания той окружности и самой программы имеют координаты X=0, Y=0.... И тут родилась идея - мы сместили привязку станка (точка от которой отсчитываются координаты детали) на несколько миллиметров и программа стала проходить на ура!
Причина была проста: разработчик ПО станка "изобрел формулу".. Дело в том, что движение фрезы по кривой, например окружности, представляет интерполяцию: это микроперемещения по двум направлениям, в виде ступенечек. И не одновременное, а последовательное- микроЭВМ тех лет имело очень низкую производительность...А тут еще "рационализатор" заставил компьютер высчитывать перемещение координаты X по значению координаты Y. А формула представляла дробь, в которой этот Y был в знаменателе. Когда координата становилась равной 0... Ну, вы поняли. :)
Деление на 0 даёт бесконечность. Вот в бесконечность то и стремился станок.
>и в управляющей "Электронике-60", точнее, в мониторном блоке, сгорела ПЗУ
ПЗУ было небось на РТ5 -х собрано азербаджанского производства - то ещё гавно было. Из пяти штук прошивалась без ошибок в среднем одна микросхема.
Программист придумавший формулу - лошара ! Я в 1989 году заставил фотокоординатограф МИНСК-2005 рисовать окружности аппроксимируя её ступенечками (предварительно пришлось заменить фотосчитыватель с перфоленты на ввод управляющей программы с магнитной ленты, иначе бы такие объёмы информации ни на какую бумажную бобину не поместились бы)! Там всё просто, чтобы станок не загнал головку в ограничитель вначале даёшь приращение по "Х" и вычисляешь по нему приращение "Y". Как только дельта "Y" начинает превышать дельта "Х", то меняешь ветвление программы и начинаешь делать приращение по "Y" и вычисляешь от него координату "X". И никакого деления на ноль не может быть в принципе.
Если бы не ребята из Ижевского терцентра микроЭВМ, мы с коллегой имели шанс "покататься", и не один раз, между Одессой и Ижевском. В 1990м налаживали установку на одном из оборонных заводов, и в управляющей "Электронике-60", точнее, в мониторном блоке, сгорела ПЗУ знакогенератора. На экране - мешанина букв, в которой с трудом угадывались управляющие команды.Как мы выносили платы за территорию на диагностику, а потом вносили обратно - это было целое приключение, а в центре нам помогли с диагностикой, и за литр спирта "подарили" набор ПЗУ.