И снова про регулировку высоты плазмореза (THC)
- 
				MIX
 - Кандидат
 - Сообщения: 89
 - Зарегистрирован: 23 авг 2015, 09:48
 - Репутация: 34
 - Настоящее имя: Михаил
 - Откуда: С. Петербург
 - Контактная информация:
 
И снова про регулировку высоты плазмореза (THC)
Здравствуйте коллеги! Хочу всех поблагодарить за помощь. Благодаря Вам я с друзьями собрал портальный плазморез с полем 1,5Х3,0м. В ответ хочу поделиться своей находкой.
Речь пойдет о постоянной головной боли - регулировке высоты резака над листом. Здесь уже неоднократно вставал подобный вопрос и сначала я шел традиционным путем. Т.е. сделал механическую регулировку, затем купил польскую PROMA THC, которая выдает битовые сигналы вверх/вниз.
Оба эти решения меня не устроили. Первое по причине слабости приводов на моем станке и не слишком жесткого портала (думаю, что сделать жесткий портал такой длины будет трудно и дорого). Если механика встречала какое-то препятствие это отображалось на качестве реза. Второе оказалось гораздо лучше но имеет свои проблемы. О них подробнее:
1. Только два сигнала поднять/опустить независимо от скорости резки и кривизны листа
2. (проистекает из первого) Необходимость городить решение, чтобы преобразовывать эти сигналы в STEP-DIR (решено на данном форуме средствами LinuxCNC)
3. Решение выполненное на базе сигналов Вверх/Вниз просто не в состоянии управлять головой плазмореза плавно. Т.к. имеет логику идти по сигналу вверх/вниз на фиксированной скорости. Эту скорость приходится подбирать под станок, и (что гораздо хуже) под скорость резки (точнее режим резки). Соответственно имеем возможность на большой скорости "впилиться" в лист резаком из-за задания недостаточной скорости, либо получить на малой скорости "пилу" из-за постоянных скачков резака при задании слишком большой. И это при том, что обычно резка осуществляется на разных скоростях даже в пределах одного листа (например отверстия маленького диаметра нужно резать существенно медленнее, чем прямые отрезки)
4. Устанавливать напряжение на отдельной "коробочке" THC не удобно и чревато ошибками (в идеале напряжение и остальные параметры желательно задавать программно прямо в G кодах)
5. Я заметил некоторую закономерность - а именно что напряжение дуги задается скорее как параметр от скорости реза. Соответственно появилась мысль автоматизировать задание напряжение по таблице скорость-напряжение. Это, по замыслу, поможет решить проблему "клевков резака в углах" при вынужденном изменении скорости реза в будующем.
			
			
													Речь пойдет о постоянной головной боли - регулировке высоты резака над листом. Здесь уже неоднократно вставал подобный вопрос и сначала я шел традиционным путем. Т.е. сделал механическую регулировку, затем купил польскую PROMA THC, которая выдает битовые сигналы вверх/вниз.
Оба эти решения меня не устроили. Первое по причине слабости приводов на моем станке и не слишком жесткого портала (думаю, что сделать жесткий портал такой длины будет трудно и дорого). Если механика встречала какое-то препятствие это отображалось на качестве реза. Второе оказалось гораздо лучше но имеет свои проблемы. О них подробнее:
1. Только два сигнала поднять/опустить независимо от скорости резки и кривизны листа
2. (проистекает из первого) Необходимость городить решение, чтобы преобразовывать эти сигналы в STEP-DIR (решено на данном форуме средствами LinuxCNC)
3. Решение выполненное на базе сигналов Вверх/Вниз просто не в состоянии управлять головой плазмореза плавно. Т.к. имеет логику идти по сигналу вверх/вниз на фиксированной скорости. Эту скорость приходится подбирать под станок, и (что гораздо хуже) под скорость резки (точнее режим резки). Соответственно имеем возможность на большой скорости "впилиться" в лист резаком из-за задания недостаточной скорости, либо получить на малой скорости "пилу" из-за постоянных скачков резака при задании слишком большой. И это при том, что обычно резка осуществляется на разных скоростях даже в пределах одного листа (например отверстия маленького диаметра нужно резать существенно медленнее, чем прямые отрезки)
4. Устанавливать напряжение на отдельной "коробочке" THC не удобно и чревато ошибками (в идеале напряжение и остальные параметры желательно задавать программно прямо в G кодах)
5. Я заметил некоторую закономерность - а именно что напряжение дуги задается скорее как параметр от скорости реза. Соответственно появилась мысль автоматизировать задание напряжение по таблице скорость-напряжение. Это, по замыслу, поможет решить проблему "клевков резака в углах" при вынужденном изменении скорости реза в будующем.
					Последний раз редактировалось MIX 23 авг 2015, 13:28, всего редактировалось 4 раза.
									
			
									
						- 
				MIX
 - Кандидат
 - Сообщения: 89
 - Зарегистрирован: 23 авг 2015, 09:48
 - Репутация: 34
 - Настоящее имя: Михаил
 - Откуда: С. Петербург
 - Контактная информация:
 
Re: И снова про регулировку высоты плазмореза (THC)
Теперь что я предлагаю к рассмотрению мое решение (которое на сегодняшний момент работает) и позволяет реализовать PID регулирование высоты резака в доп панели AXIS, либо напрямую из G кода.
Состоит оно из двух частей аппаратной и программной.
Про аппаратную часть я смогу рассказать только идею и показать программу интерфейса аппаратуры с LinuxCNC.
Задача аппаратной части передавать в LinuxCNC значение напряжения дуги. Эту часть для меня делал электронщик. Выполнена она на процессоре ATMEGA и чипе преобразователе USB-UART FTDI. Но судя по всему ее можно реализовать достаточно большим количеством способов на различных устройствах. Например на ардуине со встроенным датчиком напряжения и USB. Основная проблема - помехи.
Мне же оставалось только написать пользовательскую программу для чтения из стандартного потока TTY значения напряжения простой программой на питоне. Что я и сделал.
Программа в простейшем случае выглядит так:
То-есть она создает в HAL пин 'analog-out-0' и постоянно пишет туда цифру, которую ей передает плата измерения напряжения.
У меня были опасения, что поскольку это приложение не является RT, то будут задержки в сигнале. Однако осциллограф показал что скорости вполне достаточно. Да и процесс довольно медленный и обновление сигнала один раз в 0,001сек вполне достаточно (по факту получается гораздо быстрее)
			
			
													Состоит оно из двух частей аппаратной и программной.
Про аппаратную часть я смогу рассказать только идею и показать программу интерфейса аппаратуры с LinuxCNC.
Задача аппаратной части передавать в LinuxCNC значение напряжения дуги. Эту часть для меня делал электронщик. Выполнена она на процессоре ATMEGA и чипе преобразователе USB-UART FTDI. Но судя по всему ее можно реализовать достаточно большим количеством способов на различных устройствах. Например на ардуине со встроенным датчиком напряжения и USB. Основная проблема - помехи.
Мне же оставалось только написать пользовательскую программу для чтения из стандартного потока TTY значения напряжения простой программой на питоне. Что я и сделал.
Программа в простейшем случае выглядит так:
Код: Выделить всё
#!/usr/bin/python
import serial
import hal
import sys
PORT = "/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A602R5WZ-if00-port0"
c = hal.component("read_voltage")
c.newpin("analog-out-0", hal.HAL_FLOAT, hal.HAL_OUT)
c.ready()
try:
    ser = serial.Serial(PORT, 57600, timeout=1)
except:
    while 1:
        c['analog-out-0'] = 0
else:
    try:
        ser.write(chr(0))
        c['analog-out-0'] = ord(ser.read())
    except:
         while 1:
             c['analog-out-0'] = 1
    else:
        while 1:
             c['analog-out-0'] = ord(ser.read())У меня были опасения, что поскольку это приложение не является RT, то будут задержки в сигнале. Однако осциллограф показал что скорости вполне достаточно. Да и процесс довольно медленный и обновление сигнала один раз в 0,001сек вполне достаточно (по факту получается гораздо быстрее)
					Последний раз редактировалось MIX 23 авг 2015, 13:30, всего редактировалось 8 раз.
									
			
									
						- 
				MIX
 - Кандидат
 - Сообщения: 89
 - Зарегистрирован: 23 авг 2015, 09:48
 - Репутация: 34
 - Настоящее имя: Михаил
 - Откуда: С. Петербург
 - Контактная информация:
 
Re: И снова про регулировку высоты плазмореза (THC)
Теперь про идеи заложенные в самом LinuxCNC:
Для управления резаком по идее надо было бы писать специальную функцию в RT. Однако я обошелся средствами HAL.
В HAL у меня для этих целей прописан PID регулятор и дополнительный STEP в режиме скорости. Осталось это все правильно "собрать".
Схема получилась следующая:
- Сигнал напряжения поступает на вход PID, на второй вход PID поступает значение заданного напряжения (это можно сделать и чтением из G-кода)
- Выход PID подключается ко входу STEPGEN в режиме скорости (тоесть скорость генерации шагов будет пропорциональна выходу PID)
- Остается подмешать выходной сигнал к стандартному каналу Z. Но тут есть хитрость как это сделать.
Дело в том, что стандартно на STEPGEN канала Z приходит значение координаты, а как нам его получить? Оказалось очень просто. Нужно через сумматор объединить значение, которое выдает AXIS axis.N.motor-pos-cmd и stepgen.N.position-fb (моего дополнительного STEPGEN, который работает в режиме скорости).
Каналы stepgen.N.step и stepgen.N.dir моего дополнительного STEPGEN оказываются не задействованными.
Что я при этом получаю в качестве бонуса? Ну во первых полноценный PID для регулировки напряжения, во вторых полноценный STEPGEN для регулятора высоты со всеми опциями типа задания максимальной скорости, ускорения,....
На последок остается добавить что эту схему пришлось дооснастить коммутаторами входов PID для возврата корректора в нулевое положение. В этом режиме на первый вход PID просто подается 0, а на второй подается значение stepgen.N.position-fb с дополнительного STEPGEN. Таким образом происходит плавное возвращение системы в нулевое состояние.
Я выложил пока только концепцию системы. Конкретные HAL файлы и листинги программ (была написана специальная панель для задания параметров резки) выложу по Вашему желанию.
P/S работа по развитию этого решения продолжается, но уже заметно более плавное (без скачков резака) регулирование. Раньше приходилось долго подбирать под толщину листа и скорость реза скорость регулировки высоты. Теперь PID полностью закрыл эту проблему. Требуемое напряжение теперь пишу прямо в программе. Ушли ошибки оператора связанные с неправильным заданием параметра.
			
			
									
									
						Для управления резаком по идее надо было бы писать специальную функцию в RT. Однако я обошелся средствами HAL.
В HAL у меня для этих целей прописан PID регулятор и дополнительный STEP в режиме скорости. Осталось это все правильно "собрать".
Схема получилась следующая:
- Сигнал напряжения поступает на вход PID, на второй вход PID поступает значение заданного напряжения (это можно сделать и чтением из G-кода)
- Выход PID подключается ко входу STEPGEN в режиме скорости (тоесть скорость генерации шагов будет пропорциональна выходу PID)
- Остается подмешать выходной сигнал к стандартному каналу Z. Но тут есть хитрость как это сделать.
Дело в том, что стандартно на STEPGEN канала Z приходит значение координаты, а как нам его получить? Оказалось очень просто. Нужно через сумматор объединить значение, которое выдает AXIS axis.N.motor-pos-cmd и stepgen.N.position-fb (моего дополнительного STEPGEN, который работает в режиме скорости).
Каналы stepgen.N.step и stepgen.N.dir моего дополнительного STEPGEN оказываются не задействованными.
Что я при этом получаю в качестве бонуса? Ну во первых полноценный PID для регулировки напряжения, во вторых полноценный STEPGEN для регулятора высоты со всеми опциями типа задания максимальной скорости, ускорения,....
На последок остается добавить что эту схему пришлось дооснастить коммутаторами входов PID для возврата корректора в нулевое положение. В этом режиме на первый вход PID просто подается 0, а на второй подается значение stepgen.N.position-fb с дополнительного STEPGEN. Таким образом происходит плавное возвращение системы в нулевое состояние.
Я выложил пока только концепцию системы. Конкретные HAL файлы и листинги программ (была написана специальная панель для задания параметров резки) выложу по Вашему желанию.
P/S работа по развитию этого решения продолжается, но уже заметно более плавное (без скачков резака) регулирование. Раньше приходилось долго подбирать под толщину листа и скорость реза скорость регулировки высоты. Теперь PID полностью закрыл эту проблему. Требуемое напряжение теперь пишу прямо в программе. Ушли ошибки оператора связанные с неправильным заданием параметра.
- Nick
 - Мастер
 - Сообщения: 22776
 - Зарегистрирован: 23 ноя 2009, 16:45
 - Репутация: 1735
 - Заслуга: Developer
 - Откуда: Gatchina, Saint-Petersburg distr., Russia
 - Контактная информация:
 
Re: И снова про регулировку высоты плазмореза (THC)
Хммм... интересное решениеMIX писал(а):Дело в том, что стандартно на STEPGEN канала Z приходит значение координаты, а как нам его получить? Оказалось очень просто. Нужно через сумматор объединить значение, которое выдает AXIS axis.N.motor-pos-cmd и stepgen.N.position-fb (моего дополнительного STEPGEN, который работает в режиме скорости).
Как думаешь limit2 не смог бы заменить твой дополнительный stepgen?
ЗЫ я так понимаю, что функционала http://linuxcnc.org/docs/html/man/man9/thcud.9.html не хватает?
- Serg
 - Мастер
 - Сообщения: 21923
 - Зарегистрирован: 17 апр 2012, 14:58
 - Репутация: 5183
 - Заслуга: c781c134843e0c1a3de9
 - Настоящее имя: Сергей
 - Откуда: Москва
 - Контактная информация:
 
Re: И снова про регулировку высоты плазмореза (THC)
При управлении с помощью Up/Dn пробема появляется из-за ускорения оси - после снятия сигнала ось проезжает некоторое расстояние тормозя. Можно уменьшить скорость изменения высоты головы, но будет риск, что голова не будет успевать отслеживать кривой металл. Несколько улучшить ситуацию помогает плавное увеличение скорости головы пока сигнал управления активен.
			
			
									
									Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
						- 
				MIX
 - Кандидат
 - Сообщения: 89
 - Зарегистрирован: 23 авг 2015, 09:48
 - Репутация: 34
 - Настоящее имя: Михаил
 - Откуда: С. Петербург
 - Контактная информация:
 
Re: И снова про регулировку высоты плазмореза (THC)
Нет лимит не заменит степген.
В степген управляемый скоростью (да и позицией тоже) зашито множество опций, связанных с пределами по скорости и ускорению, блокировкой и разблокировкой и т.д. Скорее всего можно все это собрать на отдельных функциях HAL, но проще применить готовый стэпген. Тем более, что речь тут идет о связке с пид. Тоесть скорость и ускорение при корректировке будут функцией от отклонения напряжения дуги, а не константой.
Функционала UP/DOWN действительно крайне не хватает. Дело в том, что оптимальная скорость подъема/опускания оси зависит, а том числе, от скорости резки. А претставьте себе что будет, если у вас в программе элементы режутся с разной скоростью. Например мелкие отверстия нужно резать на гораздо меньшей скорости, чем основную геометрию. На отверстиях резак будет скакать из-за избыточной скорости, а на остальной геометрии будет рисковать впилиться в железо из-за недостаточной.
А еще я могу в своей системе в G кодах указывать необходимое мне напряжение почти для любого участка траектории.
А еще в планах попробовать задавать напряжение как функцию скорости. По моему скорость и сила тока основное, что определяет какое напряжение дуги длжно поддерживаться. Если удастся это реалозовать, тогда уходят ошибкики оператроа и проблемы клевков резака в углах.
			
			
									
									
						В степген управляемый скоростью (да и позицией тоже) зашито множество опций, связанных с пределами по скорости и ускорению, блокировкой и разблокировкой и т.д. Скорее всего можно все это собрать на отдельных функциях HAL, но проще применить готовый стэпген. Тем более, что речь тут идет о связке с пид. Тоесть скорость и ускорение при корректировке будут функцией от отклонения напряжения дуги, а не константой.
Функционала UP/DOWN действительно крайне не хватает. Дело в том, что оптимальная скорость подъема/опускания оси зависит, а том числе, от скорости резки. А претставьте себе что будет, если у вас в программе элементы режутся с разной скоростью. Например мелкие отверстия нужно резать на гораздо меньшей скорости, чем основную геометрию. На отверстиях резак будет скакать из-за избыточной скорости, а на остальной геометрии будет рисковать впилиться в железо из-за недостаточной.
А еще я могу в своей системе в G кодах указывать необходимое мне напряжение почти для любого участка траектории.
А еще в планах попробовать задавать напряжение как функцию скорости. По моему скорость и сила тока основное, что определяет какое напряжение дуги длжно поддерживаться. Если удастся это реалозовать, тогда уходят ошибкики оператроа и проблемы клевков резака в углах.
- 
				sinetr
 - Новичок
 - Сообщения: 1
 - Зарегистрирован: 12 сен 2015, 07:18
 - Репутация: 0
 - Настоящее имя: Виктор
 - Контактная информация:
 
Re: И снова про регулировку высоты плазмореза (THC)
Было бы интересно более подробно о регулировке высоты.
			
			
									
									
						- 
				MIX
 - Кандидат
 - Сообщения: 89
 - Зарегистрирован: 23 авг 2015, 09:48
 - Репутация: 34
 - Настоящее имя: Михаил
 - Откуда: С. Петербург
 - Контактная информация:
 
Re: И снова про регулировку высоты плазмореза (THC)
Какой именно момент интересует?
			
			
									
									
						- Serg
 - Мастер
 - Сообщения: 21923
 - Зарегистрирован: 17 апр 2012, 14:58
 - Репутация: 5183
 - Заслуга: c781c134843e0c1a3de9
 - Настоящее имя: Сергей
 - Откуда: Москва
 - Контактная информация:
 
Re: И снова про регулировку высоты плазмореза (THC)
MIX писал(а):проблемы клевков резака в углах.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
						- 
				MIX
 - Кандидат
 - Сообщения: 89
 - Зарегистрирован: 23 авг 2015, 09:48
 - Репутация: 34
 - Настоящее имя: Михаил
 - Откуда: С. Петербург
 - Контактная информация:
 
Re: И снова про регулировку высоты плазмореза (THC)
Блокировка в углах пока работает как обычно, за тем исключением, что я организовал возможность читать значение этого параметра прямо из программы. 
В программе, которая генерит G код есть возможность предопределить несколько значений для нескольких характерных размеров контуров. Например если лист толщиной 6мм и размер контура до 25мм у меня прописан процент блокировки 100%. Т.е. регулировка полностью блокируется. А вот для контуров с характерным размером свыше 25мм прописывается 95%(у меня получился довольно легкий портал, а потому приличные ускорения. Могу себе позволить такие цифры).
А вот в перспективе действительно есть планы отказаться от данного параметра и компенсировать эти клевки с помощью задания таблицы ''скорость реза/напряжение'' (напряжение дуги LinuxCNC у меня теперь знает). Тоесть при снижении скорости реза автоматом будет выбираться более высокое значение напряжения.
			
			
									
									
						В программе, которая генерит G код есть возможность предопределить несколько значений для нескольких характерных размеров контуров. Например если лист толщиной 6мм и размер контура до 25мм у меня прописан процент блокировки 100%. Т.е. регулировка полностью блокируется. А вот для контуров с характерным размером свыше 25мм прописывается 95%(у меня получился довольно легкий портал, а потому приличные ускорения. Могу себе позволить такие цифры).
А вот в перспективе действительно есть планы отказаться от данного параметра и компенсировать эти клевки с помощью задания таблицы ''скорость реза/напряжение'' (напряжение дуги LinuxCNC у меня теперь знает). Тоесть при снижении скорости реза автоматом будет выбираться более высокое значение напряжения.
- 
				bolt
 - Новичок
 - Сообщения: 6
 - Зарегистрирован: 15 ноя 2015, 10:39
 - Репутация: 0
 - Настоящее имя: Вадим
 - Контактная информация:
 
Re: И снова про регулировку высоты плазмореза (THC)
А на что влияет "процент блокировки" и какую программу используете для формирования g-кода?
			
			
									
									
						- 
				MIX
 - Кандидат
 - Сообщения: 89
 - Зарегистрирован: 23 авг 2015, 09:48
 - Репутация: 34
 - Настоящее имя: Михаил
 - Откуда: С. Петербург
 - Контактная информация:
 
Re: И снова про регулировку высоты плазмореза (THC)
Процент блокировки - обычно максимальный процент, который составляет текущая скорость от заданной скорости движения (подачи), при которой регулировка высоты блокируется (либо система перестает считывать напряжение дуги, либо просто перестает шевелить осью Z).
Дело в том, что напряжение дуги очень сильно зависит от скорости движения плазмореза (подачи). А в углах или на малых элементах (радиусах) система вынуждена снижать подачу. Чаще всего из-за малых аппаратных ускорений станка. Вы можете поставить малые ускорения в настройках LINUXNCN и увидеть этот эффект на экране. Значения скорости будут сильно падать при прохождении углов траектории.
Поскольку при снижении скорости напряжение дуги увеличивается (это связано с особенностями процесса), система регулировки высоты обычно дает команду уменьшить высоту. И резак плазмореза устремляется навстречу листу. При этом снижается качество реза, страдает живучесть расходников. А в крайнем случае происходит контакт сопла плазмореза с листом железа. Иногда с печальными последствиями.
Самый простой способ борьбы с этим эффектом - установить минимальную скорость (удобнее в процентах от подачи) при которой регулировка не осуществляется. Тоесть система перестает двигать ось Z. Поскольку это происходит на коротких участках (например в углах траектории), обычно в этих зонах не бывает больших перепадов высот. Так что временно блокировать ось Z безопаснее, чем наблюдать как она "клюет металл".
Раз уж пошел разговор, выложу текущее состояние своего проекта выглядит так: На картинке, надеюсь, видно выделена строчка подпрограммы с параметрами прожига и дальнейшей резки в том числе тот самый процент скорости.
Эти параметры читает моя панель и у оператора нет необходимости задавать параметры (если стоят отмеченные на рисунке галочки "авто.")
Кроме того удалось реализовать действие программы при внезапной остановке резки. Когда неожиданно гаснет дуга станок останавливается, поднимает ось Z (чтобы была возможность проверить расходники). Кроме того автоматом корректируется программа и записывается в отдельный файл (чтобы была возможность резки с места останова). При этом была проблема реализовать синтаксический разбор текста программы и корректировки строчке G2 и G3 для круговой интерполяции.
Зато работа оператора при сбоях сильно упростилась.
Очень радует возможность менять скорость реза в программе т.к. в строске подпрограммы задается и напряжение, которое должен поддерживать регулятор высоты. И оператору не нужно вмешиваться в процесс резки если скорость нужно существенно снизить (например при резке малых отверстий).
Программы я пишу в CncKad. Для него написан собственный постпроцессор, который параметры резки выбирает из таблиц, опираясь на ток, толщину листа и размер геометрии (для малого диаметра задает низкую скорость реза). Так что и мне не требуется напрягаться чтобы заполнять строчку подпрограммы.
			
			
									
									
						Дело в том, что напряжение дуги очень сильно зависит от скорости движения плазмореза (подачи). А в углах или на малых элементах (радиусах) система вынуждена снижать подачу. Чаще всего из-за малых аппаратных ускорений станка. Вы можете поставить малые ускорения в настройках LINUXNCN и увидеть этот эффект на экране. Значения скорости будут сильно падать при прохождении углов траектории.
Поскольку при снижении скорости напряжение дуги увеличивается (это связано с особенностями процесса), система регулировки высоты обычно дает команду уменьшить высоту. И резак плазмореза устремляется навстречу листу. При этом снижается качество реза, страдает живучесть расходников. А в крайнем случае происходит контакт сопла плазмореза с листом железа. Иногда с печальными последствиями.
Самый простой способ борьбы с этим эффектом - установить минимальную скорость (удобнее в процентах от подачи) при которой регулировка не осуществляется. Тоесть система перестает двигать ось Z. Поскольку это происходит на коротких участках (например в углах траектории), обычно в этих зонах не бывает больших перепадов высот. Так что временно блокировать ось Z безопаснее, чем наблюдать как она "клюет металл".
Раз уж пошел разговор, выложу текущее состояние своего проекта выглядит так: На картинке, надеюсь, видно выделена строчка подпрограммы с параметрами прожига и дальнейшей резки в том числе тот самый процент скорости.
Эти параметры читает моя панель и у оператора нет необходимости задавать параметры (если стоят отмеченные на рисунке галочки "авто.")
Кроме того удалось реализовать действие программы при внезапной остановке резки. Когда неожиданно гаснет дуга станок останавливается, поднимает ось Z (чтобы была возможность проверить расходники). Кроме того автоматом корректируется программа и записывается в отдельный файл (чтобы была возможность резки с места останова). При этом была проблема реализовать синтаксический разбор текста программы и корректировки строчке G2 и G3 для круговой интерполяции.
Зато работа оператора при сбоях сильно упростилась.
Очень радует возможность менять скорость реза в программе т.к. в строске подпрограммы задается и напряжение, которое должен поддерживать регулятор высоты. И оператору не нужно вмешиваться в процесс резки если скорость нужно существенно снизить (например при резке малых отверстий).
Программы я пишу в CncKad. Для него написан собственный постпроцессор, который параметры резки выбирает из таблиц, опираясь на ток, толщину листа и размер геометрии (для малого диаметра задает низкую скорость реза). Так что и мне не требуется напрягаться чтобы заполнять строчку подпрограммы.
- 
				bolt
 - Новичок
 - Сообщения: 6
 - Зарегистрирован: 15 ноя 2015, 10:39
 - Репутация: 0
 - Настоящее имя: Вадим
 - Контактная информация:
 
Re: И снова про регулировку высоты плазмореза (THC)
Мощно! Спасибо за ответ!
			
			
									
									
						- 
				aftaev
 - Зачётный участник

 - Сообщения: 34042
 - Зарегистрирован: 04 апр 2010, 19:22
 - Репутация: 6194
 - Откуда: Казахстан.
 - Контактная информация:
 
Re: И снова про регулировку высоты плазмореза (THC)
MIX, а конфиги для Lcnc мож вложить, чтоб посмотреть как и что сделано?

			
			
									
									Еще бы ток плазмы скидывать. Плазма когда прожигает металл - дуга стремиться сеть куда ей удобно и получается больше ширина резаMIX писал(а):Самый простой способ борьбы с этим эффектом - установить минимальную скорость (удобнее в процентах от подачи) при которой регулировка не осуществляется.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
						Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
- 
				MIX
 - Кандидат
 - Сообщения: 89
 - Зарегистрирован: 23 авг 2015, 09:48
 - Репутация: 34
 - Настоящее имя: Михаил
 - Откуда: С. Петербург
 - Контактная информация:
 
Re: И снова про регулировку высоты плазмореза (THC)
Конфиг выложу без проблем на днях. Но там не много. Только считывание напряжения с пользовательского компонента (не RT кстати), ПИД (на выходе скорость в зависимости от отклонения напряжения),  STEP (на входе скорость выдает коррекцию в зависимости от скорости, величину коррекции беру с фидбэка), и обвязка (включение, блокировка, возврат в нулевое состояние). Основное время сожрала именно панель. В ней не только интерфейс, но вся логика работы. Типа блокировки по расстоянию сразу после прожига, обработка потери дуги, считывание параметров из подпрограммы (кстати еще подпрограмму поднакрутить пришлось, чтоб кидала заданные параметры в пины и считывала ответ из панели), логика подачи напряжения на вход PID, корректировка программы при сбоях резки,..
В общем целый комплекс. В первых сообщениях это описано
			
			
									
									
						В общем целый комплекс. В первых сообщениях это описано
- 
				buka48
 - Новичок
 - Сообщения: 14
 - Зарегистрирован: 14 янв 2013, 18:20
 - Репутация: 0
 - Настоящее имя: Денис
 - Откуда: Одсса
 - Контактная информация:
 
Re: И снова про регулировку высоты плазмореза (THC)
попробуй сделать нелинейную отработку по напряжению дуги и вопрос с клевом на углах станет несущественным т.е. он будет но мешать резке не будет
и максимальную скрость отработки резака можеш взять в процентах от резки (или как у резки) так тоже будет хорошо )
а отверстия в подпрограммах писать сразу с уменьшенной скоростью проще
например для тройки при 45амперах
m3
g1 x3 f1200
g3 i-3
m5
g1 x-3 f1500
			
			
									
									
						и максимальную скрость отработки резака можеш взять в процентах от резки (или как у резки) так тоже будет хорошо )
а отверстия в подпрограммах писать сразу с уменьшенной скоростью проще
например для тройки при 45амперах
m3
g1 x3 f1200
g3 i-3
m5
g1 x-3 f1500
- 
				buka48
 - Новичок
 - Сообщения: 14
 - Зарегистрирован: 14 янв 2013, 18:20
 - Репутация: 0
 - Настоящее имя: Денис
 - Откуда: Одсса
 - Контактная информация:
 
Re: И снова про регулировку высоты плазмореза (THC)
ЗЫ )) смотря как реализовано остальное ,его может хватать может не хватать а может вообще не использоватся но все будет работать как часики ))Nick писал(а):Хммм... интересное решениеMIX писал(а):Дело в том, что стандартно на STEPGEN канала Z приходит значение координаты, а как нам его получить? Оказалось очень просто. Нужно через сумматор объединить значение, которое выдает AXIS axis.N.motor-pos-cmd и stepgen.N.position-fb (моего дополнительного STEPGEN, который работает в режиме скорости).![]()
Как думаешь limit2 не смог бы заменить твой дополнительный stepgen?
ЗЫ я так понимаю, что функционала http://linuxcnc.org/docs/html/man/man9/thcud.9.html не хватает?
- 
				MIX
 - Кандидат
 - Сообщения: 89
 - Зарегистрирован: 23 авг 2015, 09:48
 - Репутация: 34
 - Настоящее имя: Михаил
 - Откуда: С. Петербург
 - Контактная информация:
 
Re: И снова про регулировку высоты плазмореза (THC)
Ток плазмы скидывать - это как?aftaev писал(а):Еще бы ток плазмы скидывать. Плазма когда прожигает металл - дуга стремиться сеть куда ей удобно и получается больше ширина реза
Вообще-то ток в плазморезе не задается, а лимитируется. То есть ограничивается сверху. У плазмореза падающая ВАХ (как в большинстве сварочников). Поэтому растягивая плазму мы поднимем напряжение, соответственно падает ток. И это единственный способ управлять величиной тока в процессе резки.
В принципе мой плазморез позволяет установить доп. плату с интерфейсом к компьютеру для управления параметрами резки и диагностики (там Modbus через RS-485, если правильно понял обрывочную информацию). Но это во первых стоит денег, а во вторых не подходит в данном случае. Все-таки классическое управление - это через напряжение дуги.
Напряжение дуги примерно пропорционально ее длине, измеряем напряжение и делаем вывод о расстоянии до поверхности. Ток тут никого не интересует.
Это уже приходило мне в голову см. п.5 в первом сообщении. По факту я уже имею протестированную таблицу зависимости напряжения от скорости реза. Пока просто руки не дошли сделать табличную регулировку. Хотя перспективность этого направления чувствуется. Очень много преимуществ дает передача напряжения дуги в LINUXCNC.buka48 писал(а):попробуй сделать нелинейную отработку по напряжению дуги и вопрос с клевом на углах станет несущественным т.е. он будет но мешать резке не будет
У меня это выглядит примерно так:buka48 писал(а):а отверстия в подпрограммах писать сразу с уменьшенной скоростью проще
например для тройки при 45амперах
G0 X313.35815 Y49.83617
O<find_0_Z> call [3.8 ] [0.5 ] [1.5 ] [133] [100]
F990
M03
G3 X307.38781 Y49.24043 I-2.98517 J-0.29787
G3 X307.38781 Y49.24043 I7.61219 J0.75957
G3 X307.48895 Y48.5486 I7.61219 J0.75957
M05
G0 Z20.
G0 X-0.95 Y18.47346
O<find_0_Z> call [3.8 ] [0.5 ] [1.5 ] [127] [95]
F3100
M03
G1 X-0.95 Y24.47346
G1 X-0.95 Y75.52654
G1 X39.72754 Y100.95
G1 X290.27246 Y100.95
G1 X330.95 Y75.52654
G1 X330.95 Y24.47346
G1 X290.27246 Y-0.95
G1 X39.72754 Y-0.95
G1 X-0.95 Y24.47346
M05
G0 Z20.
В подпрограмму скорость заводить не стал.
Красным цветом выделен тот самый процент блокировки в углах. 100% - означает, что регулировка полностью заблокирована. Для мелких отверстий это дало наилучшее качество реза (по моему опыту). А вот 95% я использую практически на всех скоростях и размерах деталей. Это больше определяется ускорениями осей. Даже на максимальных скоростях при этом значении у меня блокировка происходит в 3-4 мм от угла. Сервы с редукторами - это ВЕЩЬ!!!
- 
				buka48
 - Новичок
 - Сообщения: 14
 - Зарегистрирован: 14 янв 2013, 18:20
 - Репутация: 0
 - Настоящее имя: Денис
 - Откуда: Одсса
 - Контактная информация:
 
Re: И снова про регулировку высоты плазмореза (THC)
у тебя один фиг управление Z от чпу так сделай скорость Z зависимой от скорости резки и клевки не будут превышать 20-30% зазора между резаком и металлом
и еще чем выше скорость резки тем быстрее должен отслеживатся резак и наоборот
а самое главное не нагромождай G код пожалуста
есть m3 m5 и все !!!!!!!
пы сы у меня отдельный контроллер и мне надо только 2 оси ))
пы пы сы но иногда возникает желание поэксперементировать ))
			
			
									
									
						и еще чем выше скорость резки тем быстрее должен отслеживатся резак и наоборот
а самое главное не нагромождай G код пожалуста
есть m3 m5 и все !!!!!!!
пы сы у меня отдельный контроллер и мне надо только 2 оси ))
пы пы сы но иногда возникает желание поэксперементировать ))
- 
				buka48
 - Новичок
 - Сообщения: 14
 - Зарегистрирован: 14 янв 2013, 18:20
 - Репутация: 0
 - Настоящее имя: Денис
 - Откуда: Одсса
 - Контактная информация:
 
Re: И снова про регулировку высоты плазмореза (THC)
ток плазмы скидывается не на всех источниках 
передача напряжения дуги в чпу должна быть изолирована
сервы с редукторами хороши но шаговики с редукторами тоже очень не плохи но намного дешевле ))
кстати китайские планетарки на серваках не фонтан в плане долговечности ))
			
			
									
									
						передача напряжения дуги в чпу должна быть изолирована
сервы с редукторами хороши но шаговики с редукторами тоже очень не плохи но намного дешевле ))
кстати китайские планетарки на серваках не фонтан в плане долговечности ))
