Двух осевой ЧПУ на шаговиках

AVR
Как-то весной ко мне обратился человек с просьбой помочь ему сделать станочек с управлением на шаговиках. После непродолжительных бла-бла-бла я согласился ему помочь. Затея проста — необходимо сверлить отверстия в пластиковых заготовках по определенным координатам (они жесткие и не меняются). Настал сентябрь и мы опять встретились обсудить поверхностные моменты этой задачи (кнопки и тд). Применять комп и мак3 не было никакой необходимости — слишком простая задача для этого и я решил все повесить на Мегу 8. Прикинув у меня получилось:
Моя на фото слева

2 датчика на крайнее положение по оси Х (правый и левый)
2 датчика на крайнее положение по оси У (ближний и дальний)
3 датчика на положение по оси Z (нижний и верхний а еще средний (безопасная точка) о нем позже)
4 кнопки для перемещения по отверстиям (2 вправо-влево по ряду и 2 вперед-назад те между рядами)
4 кнопки — пуск, стоп, автомат, реверс.
2 выхода на ось Х (step dir)
2 выхода на ось Y (step dir)
1 выход для подачи оси Z в прямом направлении
1 выход для подачи оси Z в реверсивном (обратном) направлении
1 выход для… так и не решили но сделали
Больше ног у меги8 не осталось а мне этого хватает.
Двигатели применили биполярные, в режиме полушага жрут 400 step на оборот. В качестве драйверов использовали связку L297+IR2104+IRFZ44 эта комбинация на мой взгляд и опыт самая оптимальная для недорогих решений и не лишне будет про неё сказать что IR2104 надо брать ТОЛЬКО в smd исполнении, я об этом слышал раньше, но как многие пока не н@тр@х@лся c dip не понял этого.
Вот схема ВЗЯТА С www.cncmasterkit.ru/viewtopic.php?f=3&t=159 — очень интересный ресурс по ЧПУ

а вот фотка готового драйвера

И еще для тех кто интересуется режимом шаг/полушаг скажу свое мнение — в режиме дробления шагов двигатель работает гораздо приятней и пожалуй лучше чем в режиме полного шага.
Так теперь опишу саму суть станка и его алгоритм
PL57H76 и PL57H110 это биполярные ШД с током 2.5 и 4.0 А. Винтовые пары стоят с шагом винта 5мм. По одной оси прямолинейные направляющие а по второй оси (Х) криволинейки легкие на понимание но не простые в изготовлении.
Форма этой «рельсы» такова что отверстия будут сверлится веером.

Всего необходимо просверлить 6 рядов по 17/18 отверстий в ряду.
Ось Z построена на прообразе коленвала те вращательное движение на редукторе превращается в поступательное движение сверла. Сверло вращается от другого движка. Таким образом заготовка всегда сверлится на фиксированную (выставленную) глубину.
Алгоритм: При включении станка проверяется нахождение сверла в верхней точке если нет то ждет нажатия клавиши «реверс» (по клавише подымает сверло вверх и ) стол движется в ближний левый угол. Когда нашел то это место считается точкой отсчета всей системы координат. Дальше сверло перемещается в точку где оно не мешает менять заготовки и эта позиция называется «условный ноль» хотя на самом деле это уже не нулевая координата. Теперь станок ждет когда оператор будет что-то нажимать. По клавишам вверх/вниз сверло перемещается между рядами а по клавишам вправо/влево — внутри ряда. При нажатии клавиши РЕВЕРС свело бежит из текущей координаты отверстия в положение «условный ноль» либо наоборот если находится в «условном нуле». При нажатии СТАРТ сверло начинает сверлить с того отверстия на которое нацелил оператор клавишами вправо/влево/вверх/вниз или с первой координаты если никуда не нацеливал. Когда отверстие просверлено то идет перемещение на следующую координату причем перемещение начинается по среднему датчику на оси Z. Дальше опрашивается клавиша АВТОМАТ и если она нажата то сверлится следующее отверстие причем подача сверла остановится если к моменту среднего концевика (датчика) перемещение не закончилось и возобновится когда закончилось и тд пока не выключат клавишу АВТОМАТ. Когда все отверстия закончились то сверло переходит в «условный ноль» и опять ждет команды оператора станка.
Аварийной ситуацией в работе станка является если хоть один из концевиков на осях Х или У сработал (после первичной инициализации стола) или же оператор нажал любой из 2-х СТОПов (программный или аварийный на обесточивание силовой части)
На этом пожалуй все для тех кому не интересна программная часть. Для спецов она тоже пожалуй не станет интересной, а вот для новичков в АВРах может что-то и пригодится.
Скажу сразу — Я АСМатик.
Итак первое — шаги на ось Х и У выдаются по прерыванию от таймеров в режиме переполнения Timer/Counter Overflow
Если тупо выдавать шаги на движок то очень скоро можно упереться в то что трудно получить качественное вращение на частоте выше 1кГц дело в том что движку приятно стартовать с плавным разгоном потом работать на нужной частоте а если вы еще и сделаете плавное торможение то он Вам будет просто благодарен. Параметры разгона подбираются так сказать опытным путем причем если движок просто лежит на тумбочке и крутит флажок из изоленты то это не сложно а вот если его поставить на станок и по криволинейным направляющим заставить таскать стол весом 5 кг то это совсем другое дело при этом надо помнить почему были выбраны шаговые движки — хорошая и дешевая точность без обратной связи. Если наплевать на стабильное выполнение шагов то появляются пропуски и вся точность летит в тар-тарары и как следствие через 15-20 минут надо заново выставлять «ноль» и повторно все выполнять если ничего еще не испортили.
Чето я отвлекся от кода. начинаем с таблицы разгона:
CSEG_array_accel_Db: .db	25,21,19,17,15,13,11,9,7,6,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,	4,4,4,4,3

Это значения которых будет «не хватать» до переполнения в таймерах во время разгона и торможения а основная работа будет идти по последнему значению в этой таблице, точнее по значению до которого мы дойдем. Скажу сразу что реально я ипользовал до 25 значения хотя как видно из таблицы и их много.
Теперь описание некоторых процедур RCALLов:
DELTA_XYT — процедура находит дельту между регистрами Х и У (НЕ ПУТАТЬ С ОСЯМИ Х И У), помещает результат в Х а флагом Т (который в SREGe) сигнализирует то где было больше в Х или У. Применяется эта процедура для вычисления «сколько шагов надо сделать чебы перейти из текущей координаты в новую по конкретной оси и в каком направлении»
Set_Step_parametr_for_Timers02 — процедура подготавливает данные для регистров в RAMе отвечающих за отведенное количество шагов на разгон/работу/торможение
Run_T0_for_stepY и Run_T2_for_stepX — запускают таймеры для выполнения шагов + флаги занятости +…
Sverlo_move_job — пожалуй главная процедура которая объединяет предыдущие и отвечает за перемещение из одной координаты в другую одновременно по двум осям (это необходимо учитывать при выборе блока питания ШД)
Теперь приведу код прерывания для шагов движка на оси Х для У тоже самое просто регистры RAMки другие
Move_generator_stepper_motorX:
; версия со скоростями размером в .byte и на таймере Т2
PUSHF	;+R16 temp
PUSH ZL
PUSH ZH
PUSH XL
PUSH XH	 
DO_STEPX:	;здесь мы будем делать шаг		
		SETB PORTSX,SBitX,TEMP    ;.MACRO установить бит SBitX в порту PORTSX
		nop
		nop
		nop		;надо покурить ато совсем куда то бежим
		nop
		CLRB PORTSX,SBitX,TEMP     ;.MACRO очистить бит SBitX в порту PORTSX	
;====================================================================================
		;теперь скорректируем положение в системе координат
		in temp,PINVX
		sbrc temp,VBitX	;если бит очищен то пропустим следующую команду и наше движение  в сторону 
                                ;концевика
		rjmp DSX_move_left	
		LDZ Poz_X        ;.MACRO берем в Z адрес метки регистра  хранящего координату по Х
		RDXZ		;.MACRO читаем слово в Х по адресу Z 
		ADXD 1		;.MACRO увеличить Х на 1
		WDXZ		;.MACRO записать слово Х по адресу Z
		rjmp assay_razgonX
DSX_move_left:		
		LDZ Poz_X
		RDXZ
		ADXD -1        ;.MACRO увеличить Х на -1 те убавить на 1
		WDXZ
;====================================================================================
;теперь займемся пониманием того когда нам в следующий раз дергать ногу
assay_razgonX:	;анализируем регистр разгона
lds temp,razgonX	;поехали  razgonX- регистр в RAM размер .byte хранит число шагов для разгона 
tst temp		;сравним с 0
breq assay_operationX	;ну раз так то бежим к регистру ровного функционирования
		dec temp		;а если не 0 то сразу убавим и
		sts razgonX,temp	;быстренько сохраним
		lds temp,offset_array_realX	;теперь прочитаем реальное смещение по разгону/тормозу
                    ;offset_array_realX регистр в RAM размер .byte отображает смещение в таблице разгона для оси Х
		inc temp	;теперь увеличиваем реальное смещение на 1
		sts offset_array_realX,temp		; и сэйвим		
		LDZ	array_accel_DB	 ;.MACRO берем в Z адрес таблици скоростей			
			ADZR temp		;.MACRO увеличим содержимое Z на temp
			ld temp,Z		;читаем содержимое по адресу Z
			neg temp		; обернем в доп код поскольку таймер по переполнению
			out TCNT2,temp		; грузим сразу в регистр счета
			rjmp EXIT_MGSX		;на выход				

assay_operationX:	;проверяем ровную работу при стабильном вращении 2 байта данных
LDZ operationX     ;.MACRO берем в Z адрес регистра хранящего необходимое число шагов ровной работы 
RDXZ         ;.MACRO читаем слово в Х по адресу Z 
tst XH	;;проверим старший байт данных
brne lable_operationXM1	;если старший не 0 то сразу приступаем к формированию нового задания Т
cpi XL,0x00			;проверяем на 0
breq assay_tormozX		;если 0 то уходим тормоза проверять
		lable_operationXM1:
		ADXD -1			;всетаки что-то еще есть хорошо убавим и 
		WDXZ			;сохраним
		lds temp,offset_array_realX	;прочитаем наше реальное смещение и ничего с ним делать не будем
		LDZ	array_accel_DB		;			
			ADZR temp
			ld temp,Z
			neg temp
			out TCNT2,temp					; грузим сразу в регистр счета
			rjmp EXIT_MGSX		;на выход
					
assay_tormozX:
lds	temp,tormozX	;работа с торможением
cpi temp,0x00		;проверяем необходимое кол-во шагов
breq CLOSE_MGSX		;если 0 то закрываем таймер и ставим всякие флаги
		dec temp						;иначе убавляем  регистр торможения
		sts tormozX,temp				;
		tst temp
		breq CLOSE_MGSX
		lds temp,offset_array_realX		;читаем смещение
		dec temp						;теперь уменьшим реальное смещение на 1
		sts offset_array_realX,temp		; и сэйвим
		LDZ	array_accel_DB		;			
			ADZR temp
			ld temp,Z
			neg temp
			out TCNT2,temp					; грузим сразу в регистр сравнения
			rjmp EXIT_MGSX		;на выход

CLOSE_MGSX:	
	clr temp
	out TCCR2,temp		
	CLRB TIMSK,TOIE2,temp	;	
	CLRB flag_step,1,temp	

EXIT_MGSX:
POP XH
POP XL
POP ZH
POP ZL
POPF
RETI


Теперь попытаюсь объясснить еще один массив чисел

PORYADOK_SVERLOVKI:		.db	 1, 2, 3, 4, 5, 6, 7, 8 , 9,10,11,12,13,14,15,16,17, 	35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,	   36, 37, 38, 39, 40, 41,42,43,44,45,46,47,48,49,50,51,52
						.db	69,68,67,66,65,64,63,62,61,60,59,58,57,56,55,54,53,	70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,	   104,103,102,101,100,99,98,97,96,95,94,93,92,91,90,89,88
						.db	00,00

Ну из названия в принципе все должно быть понятно. Сверло проходит первый ряд с вправа на лево а второй ряд наоборот (идея украдена у трактористов пахарей). Кто-то скажет что это лишнее и можно было бы просто разместить порядок координат в нужной последовательности и не изобретать велосипед, но дело в том что если сделать просто нужной последовательностью то придется утр@х@тся чтобы нормально организовать перемещение сверла кнопками вверх/вниз/вправо/влево о которых я говорил выше.
Осталось рассказать про раздел действий при АВАРИИ.
Опрос 4-х концевиков и СТОПов происходит по прерыванию от Таймера1 (который включается на старте еще до инициализации и выключается только из розетки). Если словили подряд 4 сигнала значит это не помеха а твердое нарушение правильной работы. В этом случае выход из прерывания Таймера1 осуществляется по новому адресу (благодаря подмене адресов в стеке для возврата). Первым делом тормозим подачу и вращение сверла и ничего не делаем если сверло не в верхнем положении. Клавиша РЕВЕРС разрешает вывести сверло на верх. Если зафиксирован сбой по датчику то начинается медленный отъезд от этого датчика пока он не погаснет. Дальше станок ждет клавишу ПУСК которая произведет переход на начало программы где происходит повторная инициализация стола. Из подводных камней — это то что обязательно при выходе в начало программы необходимо проинициализировать стек заново поскольку мы не знаем не какую глубину он был продавлен когда мы подменяли адреса на выходе из прерывания по Таймеру1. И тем более категорически нельзя пользоваться стеком когда мы гуляем в подпрограмме аварии.
В принципе это наверное все. Видео будет но немного попозже когда станок приобретет «мажорный» внешний вид. И там есть еще одна проблема — сверло движется по оси Z очень быстро и если оно плохо заточено то начинает «вязнуть» в заготовке (полипропилен) и даже останавливается поэтому щас решено повысить мощность движка вращения сверла и снизить скорость подачи за счет установки частотника.
Если есть вопросы или пожелания то можете высказаться (конечно сразу могу не ответить поскольку не сижу постоянно у компа)
Чего не сделал в программе так это не опробовал WDT который так хотел прикрутить но надеюсь еще прикручу.
Проект сделан в Студии6 кому интересно смотрите.
Вот фото что и для чего делалось как говорится «фирма веников не вяжет»

вот ссылка на ютуб youtu.be/Ck2KMao52KU
Вот ссылка на Ядиск 81Мб
yadi.sk/d/mG_NvkKdB9DmY
  • +5
  • 15 октября 2013, 22:53
  • deses
  • 2
Файлы в топике: chpu_2osi.zip, bipolar_smd_0108_PCAD.zip

Комментарии (56)

RSS свернуть / развернуть
Хоть бы картинками покормили народ… графиками… схемками… фотками… результатами…
+3
  • avatar
  • kalik
  • 16 октября 2013, 01:56
Да, куча унылого текста без иллюстраций — и читать что-то неохота…
+2
Там же есть ассемблерный код!
В прочем от него ещё больше неохота…
+2
по хардкору все=))
+1
наоборот. вот он, последний гвоздь — ЧПУ станку таки быть
0
а я думал хардкор это комплиент :)
0
Это мой первый пост. Щас вот только научусь оформлять.
0
не лишне будет про неё сказать что IR2104 надо брать ТОЛЬКО в smd исполнении, я об этом слышал раньше, но как многие пока не н@тр@х@лся c dip не понял этого
Понял — поделись с другими подробностями. Чем именно плохи IR2104 в DIP исполнении, какие возникают проблемы?
по второй оси криволинейки легкие на понимание но не простые в изготовлении
Как будто из этого описания что-то понятно. Ни картинки, иллюстрирующей форму, ни пояснения, нафига оно надо.
Из подводных камней — это то что обязательно при выходе в начало программы необходимо проинициализировать стек заново поскольку мы не знаем не какую глубину он был продавлен когда мы подменяли адреса на выходе из прерывания по Таймеру1. И тем более категорически нельзя пользоваться стеком когда мы гуляем в подпрограмме аварии.
Не лучше ли было воздержаться от хаков вроде подмены адреса?
0
  • avatar
  • Vga
  • 16 октября 2013, 09:39
История с ИРками такова. Дважды магазин мне привозил их в количестве 24 штуки и из этих двух привозов хорошими оказались лишь 5 штук а остальные либо работали на половину либо вообще не работали. Эпопея продлилась аж 2 месяца. Как только их не пытались раскачать — бесполезно. После обкатки одного драйвера сделали платку под smd, заказали, они все заработали — ну прям все.
Почему решил тупо подменить адрес в аварийном прерывании — наверно только потому что нет обратной связи и понять в какой координате находится стол нет никакой возможности. Все рабочее поле рассчитано так что никак случайно ни один из датчиков не сработает. Именно по этому любой сработавший концевик это сигнал о неправильном положении стола. По кнопке СТОП конечно можно было сделать другое развитие сценария но просто решил не заморачиваться поскольку кнопкой СТОП не предусмотренно пользоваться кроме как по крайней необходимости.
Завтра поеду снимать кино про станочек. Но вот только надо бы разобраться как еще это кино сюда прицепить.
Вложений больше добавлять не могу — рейтинг не позволяет.
0
Нда, картинка не особо поясняет назначение рельсы) Ну да ладно.
А не стоило бы между транзисторами проложить какую-нибудь прокладку? Небольшое касание любого — и будет коротыш по питанию.
0
Полностью согласен но надеюсь кроме меня туда никто не полезет, а так вообще-то транзюки как вкопанные стоят.
0
без радиаторов не греются?
0
На 4А после 4 часов градусов 30-35 (в помещении 17-18 градусов)
Очень сильно греются если на 11 ногу ( CONTROL) микросхемы L297 подать +5В
0
IR2104 в дипе имеют логику поведения не соответствующую даташиту. Они не бракованные, ноги «неправильно» стоят по сути.
Силовуха управления ШД с узлом работа/удержание появилась на cncmasterkit.ru- не реклама, разработана была местными форумчанами. Автору было бы неплохо это указать.
0
Извиняюсь — авторство схемы указал.
0
:)
0
Какова точность позиционирования? Не думали добавить задание координат файлом (типа примитивного гербера). Есть ли режим обучения, т.е. оператор вручную сверлит отверствие и добавляет точку в последовательность? Такие доработки нехитрые, а устройство делается универсальным. «Тракторный» подход очень неэкономичен по времени, энергии и износу. Я бы переделал на ХУ позиционирование сразу. Это не сложно.
0
Точность достаточно высокая для «домашних» условий — 400 шагов/5мм — 0,0125 мм
Потери шагов не наблюдаются.
Задание координат файлом в принципе возможно с некоторыми переделками, но правильнее тогда написать «препроцессор lite» и тупо вгонять G код (без всяких смена инструмента и тд)
«Тракторный» подход как раз таки является кратчайшим путем прохода по отверстиям, а перемещение работает по ХУ одновременно (диагональное перемещение)
Режим обучения обсуждался но без дисплея это будет полная херь (нажал кнопку ЗАПОМНИТЬ или не нажал и еще очень много трудностей когда оператор не видит данных, не может что то удалить/изменить ) Задача ставилась — быстро и дешево.
0
Сверло проходит первый ряд с вправа на лево а второй ряд наоборот (идея украдена у трактористов пахарей).
Я просто понял что сверло проходит змейкой весь стол. Или оно ходит по ступенчатой линии X1Y1-X2Y2?
0
Если я правильно понял, сверлить нужно матрицу дырок. А для нее действительно обход змейкой вполне оптимален. А на очередную дырку — кратчайшим путем.
0
А если дырки идут по диагонали? Или по дуге?
0
Вот поэтому и был сделан PORYADOK_SVERLOVKI в котором был составлен кротчайший путь сверления. Всего 6 рядов и соответственно 6 значений по оси У а по Х 17 и 18 координат. Всего 104 отверстия.
0
Седня сниму кино и постараюсь выложить — все станет понятно что, зачем, и для чего
0
Хорошая идея. В кине обратите внимание на механику станка, как она сделана.
0
Я почему-то думал здесь это (механика) никого не может заинтересовать.
ОБЯЗАТЕЛЬНО!!!
0
Я почему-то думал здесь это (механика) никого не может заинтересовать

это почему?:) положа руку на главный орган — в станке механика всё же занимает минима 2/3:) а уж прошивки/электроника — остатки:)
0
Я механикой занимаюсь 11 лет и поверте мне что если ей не дать мозгов то это просто набор «ферума с углеродом» и чьих-то амбициозных идей…
0
Иногда механника(технические решения) намного интереснее всего остального=))
+1
да я понимаю :) (сам конструктор). но ведь согласись, если будет нечему давать мозги — нахер они тогда вообще нужны?:)

зы. сам я исповедаю «теорию совмещенности» — под любой софт надо достойную железяку (и наоборот)
+3
Да согласен. Но для меня механика давно стала унылой обыденностью. А вот электроника это что-то новое. Иногда сижу до 3-х утра что-то придумываю как правильнее написать какую-то процедуру, наконец придумываю, а с утра жена меня не может разбудить, и вот я такой не выспавшийся уезжаю на работу. Но это такая приятная усталость.
0
Да, знакомая ситуация.
Иногда бывает и так что = утром встал уехал на работу, приехал домой сел за комп, уехал на работу, приехал домой и сразу в кровать :D

Если так происходит подряд 2 недели, то в конце недели к вечеру уже невменяемое состояние, невозможно понять что происходит вокруг.
+1
Так все дырки ж захардкожены, значит идти могут только так, как заложено в программу.
0
Видео не прикрутилось
0
  • avatar
  • kalik
  • 18 октября 2013, 09:07
Прикрутил с Яндекс диска. Значит надо по-другому. А как прикрутить там 86 метров?
0
На ютуб его заливать надо.
0
а ссылочкой на яндекс-диск не поделитесь?
0
выложил ссылку
+2
спасибо
0
да не за что пользуйтесь на здоровье
0
Вот теперь всё понятно стало — и тракторный ход, и позиционирование. Солидная механическая часть. Делали на мощностях веникозавода или на стороне какой-то слесарь сделал? Если не присматриваться, станок за фабричный сойдёт.
0
Изначально была только «клюющая башка» все остальное — готовые детали (ШВП, линейные направляющие, муфты и тд) и на заказ всякие плиты, рельсы, кронштейны, колеса. Очень многое, как и сборку, заказчик сам сделал. Он щас придает ему «заводской вид», красит, закрывает все — там стружка летит мама не горюй.
0
Вот ссылку на ютуб (только не уверен, можно ли на youtu.be или обязательно на youtube.com) и нужно засовывать в тег video.
<video>http://youtube.com/watch?v=Ck2KMao52KU</video>
0
Спасибо Vga — сработало А я засовывал в тег video вот так
<video>http://youtu.be/Ck2KMao52KU</video>
0
в режиме дробления шагов двигатель работает гораздо приятней

это да, базару нет. только для новичков следовало бы уточнить, что при снятии питания с обмотки ротор движка может свалиться на полшага:) я понимаю, что для данного станка это похер, но для обшего развития, наверное, следует напомнить
+2
Не просто может свалиться а обязательно свалиться если стоит в положении «между шагом» но ведь это при отключении питания, а во время работы точнее во время простоя движок находиться в режиме удержания (ток регулируется на драйвере)… хотя да может и свалиться, я почему-то не подумал о магнитах которые не идеальны.
0
во время простоя движок находиться в режиме удержания

ну да, потому я и написАл:

для данного станка это похер

:)
0
заглянь в личку
0
Ну неужели для производства метёлок нужно дополнительный станок городить, да ещё и с такой низкой производительностью ~40 шт/час!
нужно было идти в направлении доработки прессформы термопласта, чтобы пины в форму вводились/выводились, таким образом время на дополнительную обработку не тратится, лишний рабочий не нужен, опилки вторички собирать не надо, при отливке меньше материала расходуется
Станок конечно интересный получился, но зачем плодить лишние сущности?
0
А можно по подробней о форме в которой 52 пина двигаются в разных направлениях, на сколько такая форма будет дороже? А если форма льет сразу 4 колодки то надо двигать 208 пинов и каждый в своём направлении.
+1
Наверняка у литейщиков есть на этот вопрос готовый правильный ответ. Во первых разных направлений не 52, а 34, во вторых воздействие на пин не обязательно должно быть колинеарным, в третьих привод может быть одностороннего действия с пружинным возвратом. Эти допущения сильно упрощают задачу
0
Мило, значит Вы не литейщик, а зачем тогда обсуждение? Я тоже не литейщик я вообще «формовщик», а станок по просчетам заказчика выгоднее.
0
Перевод разговора на персоналии — признак троля.
Какая цена у такой метелки?
0
Мммм… Хотел спросить, но потом посмотрел видео :)
Всё равно спрошу — не про этот станок, а вообще, теоретически. Если ломается сверло — это же нештатная ситуация? И оператор жмёт «СТОП»! Как предусматривают в станках режим продолжения после замены сверла?
0
В данной ситуации поведение такое: при нажатии «стоп с фиксацией» обесточивается все кроме платы управления и программа ждет отпускания клавиши «стоп», далее программа проверяет концевик «сверло вверху» и если нет то ждет от оператора нажатия клавиши «подъем сверла» далее когда сверло наверху программа ждет от оператора разрешение на повторное позиционирование относительно «нуля» т.е. заного выставляется ноль, далее оператор может переместить сверло на нужную позицию и нажать «пуск» и программа запустится с указанного отверстия дальше.
З.Ы. с тех пор как пост был написан программа дорабатывалась — добавили частотник на привод подачи сверла и получается что заготовку (25% от периода) сверло проходит на скорости 1 (заданной в частотнике) а все остальное время (75%) на скорости 2 т.е. на максимальной это понадобилось в связи с тем что заготовка льется далеко не из «первички» и имеет разную плотность материала и оператор изходя из плотности регулирует энкодером скорость 1 на частотнике
0
заного
изходя
АААаааа!!!!.. Казнить! Нельзя помиловать!!!
это совсем не опечатки.
+2
:)ь
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.