Помогите настроить hal для запуска программы.

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение nkp »

VAV77 писал(а):S1G03
M66 P0 L1 Q01 (ставил и Q10)
G05
G==M ??
VAV77
Кандидат
Сообщения: 43
Зарегистрирован: 28 мар 2013, 08:55
Репутация: 0
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение VAV77 »

Сейчас попробую.
А в hal я правильно написал
в строке "net wait <= parport.0.pin-17-in"
поставил "pin-11-in", т.к. у меня сигнал приходит на 11 пин?
VAV77
Кандидат
Сообщения: 43
Зарегистрирован: 28 мар 2013, 08:55
Репутация: 0
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение VAV77 »

Поставил L2 - все нормально заработало. Значит действительно был инвертирован.
А можно время поставить бесконечным - просто в режиме наладки я прерываю сигнал на регулятор и перевожу на управление отдельной кнопкой, и не хочется, что бы в тот момент, когда оператор подстраивает электроды машина поехала дальше?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение Nick »

Можно поставить условно бесконечный - Q360000 - 100 часов ;). Или сделать аварийный останов или паузу, если не пришел сигнал готовности

Я все же посоветовал бы сделать отдельную функцию для цикла сварки, чтобы там можно было делать дополнительный контроль, а оператора обучить писать:
(скажем для трех точек)
O<melt> CALL [100] [200]
O<melt> CALL [110] [200]
O<melt> CALL [120] [200]

если надо делать дополнительный режим - можно дописывать дополнительный параметр:
O<melt> CALL [120] [200] [1]
И потом его использовать как условие, или сделать вторую функцию
O<melt-2>
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение Nick »

Можно поставить условно бесконечный - Q360000 - 100 часов ;). Или сделать аварийный останов или паузу, если не пришел сигнал готовности

Я все же посоветовал бы сделать отдельную функцию для цикла сварки, чтобы там можно было делать дополнительный контроль, а оператора обучить писать:
(скажем для трех точек)
O<melt> CALL [100] [200]
O<melt> CALL [110] [200]
O<melt> CALL [120] [200]

если надо делать дополнительный режим - можно дописывать дополнительный параметр:
O<melt> CALL [120] [200] [1]
И потом его использовать как условие, или сделать вторую функцию
O<melt-2>
VAV77
Кандидат
Сообщения: 43
Зарегистрирован: 28 мар 2013, 08:55
Репутация: 0
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение VAV77 »

Вот ссылка на короткое видео работы.
http://youtu.be/i5jU5QbZZ-k
Как вставить сюда видео - не нашел.
VAV77
Кандидат
Сообщения: 43
Зарегистрирован: 28 мар 2013, 08:55
Репутация: 0
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение VAV77 »

А можно уточнить по процедурам - просто так никогда не писал.
Т.е. в начале программы пишу :

Код: Выделить всё

O<melt12> SUB
  G0 X#1 Y#1
  S1M3
  M66 P1 L2 Q360000 
  M5
O<melt12> ENDSUB
O<melt22> SUB
  G0 X#1 Y#1
  S1M4
  M66 P1 L2 Q360000 
  M5
O<melt22> ENDSUB
А потом в программе только пишу
O<melt12> CALL [10] [20]
или
O<melt22> CALL [10] [20]
Где CALL [10] [20] это координаты по осям X и Y.
А названия melt12 и melt22 я специально взял такие, что бы человек, пишущий программу, не путал их - т.е. 12 -это разные диаметры, а 22 - одинаковые. Или так нельзя их называть?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение Nick »

По процедурам есть три варианта можно называть цифрами -
O100 SUB
можно буквами, (в названии могут быть ._- и цифры) тогда название нужно заключать в <>
O<melt-23.w> SUB
Можно записать процедуру в файл с названием как буквы и тогда она будет вызываться из файла
файл melt-23.w.ngc в нем обязательно должна быть O<melt-23.w> SUB

http://linuxcnc.org/docs/html/gcode/o-c ... ubroutines


Потом вызываем через O123 CALL и параметры в квадратных скобках, до 30 штук.
VAV77 писал(а):G0 X#1 Y#1
X#1 Y#2
#1, #2 - параметры передаваемые в процедуру.

Добавь вот такое условие, оно будет информировать, что цикл прошел неверно:
После M66, только номер O во втором случае поменяй.

Код: Выделить всё

O100 IF [#5399 EQ 1] 
  (DEBUG, Внимание! Недождались окончания сварки!)
O100 ENDIF

PS как у тебя с английским?
VAV77
Кандидат
Сообщения: 43
Зарегистрирован: 28 мар 2013, 08:55
Репутация: 0
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение VAV77 »

Nick писал(а):Потом вызываем через O123 CALL и параметры в квадратных скобках, до 30 штук.
А если у меня 60 или 100 точек?
Или это различные параметры - а их значений может быть множество?
И как я понял если в процедуре записаны два параметра X#1 Y#2 , то их обязательно нужно указывать в CALL - а то их связь с процедурой только в последовательности. Я правильно понял?
С английским очень плохо - даже в закладках есть переводчик Google :cry:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение Nick »

VAV77 писал(а):И как я понял если в процедуре записаны два параметра X#1 Y#2 , то их обязательно нужно указывать в CALL - а то их связь с процедурой только в последовательности. Я правильно понял?
Про порядок - да. Про обязательно указывать - нет, но если не укажешь их значения могут быть не предсказуемыми, хотя, скорее всего будут равны 0.

Чтобы сделать 50 дырок в линию, можно использовать код G91 - относительные координаты:

Код: Выделить всё

# делаем первую сварку 
O<melt> CALL [100] [200]
# относительные координаты
G91 
# шаг 10 мм, 4 сварки
O<melt> CALL [10] [0]
O<melt> CALL [10] [0]
O<melt> CALL [10] [0]
O<melt> CALL [10] [0]
# возвращаем абсолютные координаты
G90 
Или можно воспользоваться циклом:

Код: Выделить всё

# делаем первую сварку 
O<melt> CALL [100] [200]
# относительные координаты
G91 
# шаг 10 мм, 50 сварки
O100 REPEAT [50]
  O<melt> CALL [10] [0]
O100 ENDREPEAT [50]
O100 REPEAT [50]
G90
А можем написать процедуру, которая будет варить сетку целиком :):

Код: Выделить всё

O<grid> SUB
	# параметры X0, Y0, ШагX, ШагY, к-во X, к-во Y
	#<x0> = #1
	#<y0> = #2
	#<stepx> = #3
	#<stepy> = #4
	#<nx> = #5
	#<ny> = #6
	#<x> = #<x0>
	O<grid-1> REPEAT [#<nx>]
		#<y> = #<y0>
		O<grid-1> REPEAT [#<ny>]
			O<melt> CALL [#<x>] [#<y>]
			#<y> = [#<y>+#<stepy>]
		O<grid-1> ENDREPEAT
		#<x> = [#<x>+#<stepx>]
	O<grid-1> ENDREPEAT
O<grid> ENDSUB
VAV77
Кандидат
Сообщения: 43
Зарегистрирован: 28 мар 2013, 08:55
Репутация: 0
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение VAV77 »

Nick писал(а):А можем написать процедуру, которая будет варить сетку целиком
Может не получиться, т.к. в клетке есть и ажурные элементы (это верх клетки может быть радиусным или в китайском стиле или под углом), плюс есть элементы для кормушек, где привариваются короткие проволочки. Да и объяснить человеку, далекому от программирования все эти нюансы - тяжело. Легче посадить его возле кондуктора с линейкой, показать где ноль и пусть отмеряет координаты линейкой и записывает в программу.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение Nick »

Радиусную и параллелограмную сетку тоже можно сделать :).
Но если проще с линейкой, пусть просто копирует строку с вызовом процедуры и все.
Ответить

Вернуться в «LinuxCNC»