Страница 10 из 12
Re: HAL2Arduino
Добавлено: 16 янв 2014, 15:18
Nick
aftaev писал(а): c.newpin("hal_manualtoolchange.number",HAL_S32,hal.HAL_OUT)
На это по идее должно было ругнуться... хотя, нет. не должно. Должно создать новый пин
Hal2Arduino.hal_manualtoolchange.number и все. Он ни с кем не конфликтует...
Вообще - надо создавать пины с именами, которые будут говорить о пине, а не о его назначении. Т.е. например digital-in-01. И уже потом эти пины привязываются в hal. Пин относится к железу, а не к LinuxCNC. В этом и есть оснавная задумка HAL - абстрагировать железо от программы. У железа свои пины, у программы свои, а hal просто связывает эти пины вместе.
Re: HAL2Arduino
Добавлено: 16 янв 2014, 15:39
aftaev
допустим сделали digital-in-01 и в него Ардуина передала с пульта нужный мне номер №5. Как ЕМС заставить сменить инструмент с текущего на №5
Re: HAL2Arduino
Добавлено: 16 янв 2014, 15:41
Nick
Из лс:
Nick писал(а):Смотри можно сделать так - из ардуины берем два пина, первый будет давать номер инструмента, второй - требовать смену. (точнее номер берем от твоего галетника, как написал uavpilot)
на выходе weighted sum будет число. А нет, лучше не через weighted, а через mux - у него выход в float, а не signed
Итак загружаем и настраиваем mux:
Код: Выделить всё
loadrt mux8 count=1
addf mux8.0 servo-thread
setp mux8.0.in0 1
setp mux8.0.in1 2
setp mux8.0.in2 3
setp mux8.0.in3 4
setp mux8.0.in4 5
setp mux8.0.in5 6
net tool_in0 arduino.Dout1 mux8.0.sel0 # к галетнику
net tool_in1 arduino.Dout2 mux8.0.sel1 # к галетнику
net tool_in2 arduino.Dout3 mux8.0.sel2 # к галетнику
Подключаем выход mux к motion, чтобы можно было читать значение через Gкод:
Код: Выделить всё
net tool_out <= mux8.0.out => motion.analog-in-00
Привязываем кнопку
Код: Выделить всё
net change_tool_request <= сюда пин ардуины от кнопки
net change_tool_request => halui.mdi-command-00
И добавляем команду в ini :
Код: Выделить всё
[HALUI]
MDI_COMMAND = M66 E0 L0 (читаем значение пина analog in в переменную #5399)
T#5399 M6 (меняем интсрумент)
Re: HAL2Arduino
Добавлено: 16 янв 2014, 16:55
sr480
А переименовать пин hal_manualtoolchange.number в i_toolNumber не пробовал?
Re: HAL2Arduino
Добавлено: 16 янв 2014, 17:05
nkp
Nick писал(а):Из лс:
а если вариант не через mdi,а сразу в ладдер...
разделить ,чтоб при авто работало как работает,а при ручном режиме от кнопок и галетника работал тот же ладдер...
как то это будет "прямее" ( имхо)...
Re: HAL2Arduino
Добавлено: 16 янв 2014, 17:08
Nick
nkp писал(а):а если вариант не через mdi,а сразу в ладдер...
Вроде как инструмент можно сменить только через Gкод... (если официально менять и чтобы linuxCNC об этом знал (со всеми вытекающими - типо выставление поправок на длинну и радиус)).
Т.е. надо обязательно выполнить M6, без этого никак. Поэтому нужен mdi.
Или я чего-то не знаю?

Re: HAL2Arduino
Добавлено: 16 янв 2014, 17:25
nkp
галетник с кнопками зачем ?
он нужен - чтоб на чпу токарке можно было работать в ручном режиме, и ,что еще более восстребовано , менять инструмент при наладке.
И в том,и в другом случае можно обойтись и без mdi...
нам просто нужно в manual_mode провернуть голову до нужного положения...
зы
то есть обычно мы ждем сигнала для смены на iocontrol.0.tool-change ,
а в ручном режиме мы просто сами ладдеру (кнопкой) разрешаем начать процедуру смены,(и вот
тут как раз наш галетник выходит на авансцену - он то в отсутствии iocontrol.0.tool-prep-number и задает номер желаемого инструмента...
Re: HAL2Arduino
Добавлено: 16 янв 2014, 17:33
Nick
А, если просто повернуть голову, тогда нет вопросов. Надо просто логику правильно прописать для поворотной башки и все...
А вот если надо именно "сменить инструмент" - тогда надо через Gкод.
Re: HAL2Arduino
Добавлено: 16 янв 2014, 17:34
sr480
А зачем в HAL читать энкодер галетника???? Этож одной строкой в arduino можно сделать и передать число сразу...
Re: HAL2Arduino
Добавлено: 16 янв 2014, 17:36
nkp
sr480 писал(а):А зачем в HAL читать энкодер галетника???? Этож одной строкой в arduino можно сделать и передать число сразу...
это как?
Re: HAL2Arduino
Добавлено: 16 янв 2014, 17:38
nkp
Nick писал(а):А, если просто повернуть голову, тогда нет вопросов. Надо просто логику правильно прописать для поворотной башки и все...
ну не знаю - может кто из токарей (настоящих) назовет мне потребность в "полной" процедуре смены в ручном режиме...
интерпретатор остановлен,даже кинематика не работает ...нам просто тупо)) надо покрутить головой...
Re: HAL2Arduino
Добавлено: 16 янв 2014, 18:26
aftaev
sr480 писал(а):А зачем в HAL читать энкодер галетника????
были предложения подключить панельку без Ардуины напрямую к Меса
Но 4 галетника по 5выходов + 15кнопок еще на панельке

Re: HAL2Arduino
Добавлено: 16 янв 2014, 20:18
aftaev
Ардуинка читает пины и выплевывает данные (это работало еще вчера)
А вот Питон не получается побороть

Питон в режиме симуляции(чтобы ЕМС не запускать)
Код: Выделить всё
simulation = True #Enable for console debugging.
Re: HAL2Arduino
Добавлено: 16 янв 2014, 20:22
sr480
701 это разве не зарезервированные команы для осей? они состоят из 4х частей:
номер номерОси значение кс=номер+значение
Re: HAL2Arduino
Добавлено: 16 янв 2014, 20:25
aftaev
sr480 писал(а):когда из ардинки передаешь похоже забыл ; в конце сообщения
вроде как имеется
Re: HAL2Arduino
Добавлено: 16 янв 2014, 20:27
aftaev
sr480 писал(а):а еще 701 это разве не зарезервированные команы для осей? они состоят из 4х частей:
у меня было 313 решил попробовать 701 как в твоем примере
sr480 писал(а):#define toolNumberID 701 //Номер пина в сообщении, такой же должен быть описан в HAL.py файле
Re: HAL2Arduino
Добавлено: 16 янв 2014, 20:36
aftaev
sr480 писал(а):701 это разве не зарезервированные команы для осей?
переделал на 400 результат такой же
Re: HAL2Arduino
Добавлено: 16 янв 2014, 21:47
aftaev
sr480, какие из команд у тебя работают? Попробуй 135
100 motion.adaptive-feed - (float, in)
101 motion.analog-in-00 - (float, in)
102 motion.analog-in-01 - (float, in)
103 motion.analog-in-02 - (float, in)
104 motion.analog-in-03 - (float, in)
135 motion.spindle-revs - (float, in)
136 motion.spindle-speed-in - (float, in)
222 axis.N.jog-scale - (float, in)
Так у меня ЕМС запускается
#define commandsRequested "133 137"
А вот так уже нет
#define commandsRequested "133 137 135"
Re: HAL2Arduino
Добавлено: 17 янв 2014, 09:05
sr480
Похоже я понял....
Сообщение строится так:
command data1 data2 checksum
checksum = data1+data2
значение должно передаваться в data2, а data1 это для указания номера оси.
тогда нужно написать так:
Код: Выделить всё
Serial.print(toolNumberID); //Номер сообщения
Serial.print(" 0 "); //!!!!!!!!!!!!!!!!!!Вот тут у меня косяк был
Serial.print(curTool); //номер инструмента
Serial.print(" ");
Serial.print(checkSum); //контрольная сумма
Serial.println(";");
Я неправильно разобрался с протоколом.
Re: HAL2Arduino
Добавлено: 17 янв 2014, 09:16
asutpka
и того - профиксенный скетч во вложении для порядку не помешает а напротив...