Что я еще не знал о LinuxCNC, что нам еще предстоит сделать
- torvn77
- Мастер
- Сообщения: 2442
- Зарегистрирован: 02 июн 2012, 22:12
- Репутация: 215
- Откуда: Россия,Санкт-Петербург
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Когда я писал newsig я думал про типизацию данных.
Сначала создавать в h.hal сигналы,а потом по мере подключения блоков хала с компонентами рассаживать их по пинам.
Ну вот значит есть уже два повода оставить эту команду.
Учитывая второй повод для удобства тиражирования сигнала может добавить в newsig возможность установки значения параметра?
Типа чтоб по эфекту получилось как newsig + sets ?
Сначала создавать в h.hal сигналы,а потом по мере подключения блоков хала с компонентами рассаживать их по пинам.
Ну вот значит есть уже два повода оставить эту команду.
Учитывая второй повод для удобства тиражирования сигнала может добавить в newsig возможность установки значения параметра?
Типа чтоб по эфекту получилось как newsig + sets ?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Суть в том, что до старт состояние пина будет таким, какое стоит по умолчанию... как мне кажется...
точнее как состояние по умолчанию для конкретного компонента.
В этой цепочке, по идее должно быть так:
После первого net - pid enable остается по умолчанию
net hm2_...1.analogena - тоже самое
net axis.0.amp-enable-out - вот тут все приняло значение axis.0.amp-enable-out. - который по умолчанию FALSE
В твоем случае,
сигнал становится false
После первого net - pid enable становится false
net hm2_...1.analogena - становится false
net axis.0.amp-enable-out - вот тут все приняло значение axis.0.amp-enable-out. - который по умолчанию FALSE
С виду разница есть, но есть одно но, наружу этот сигнал выйти не должен, т.е. на реальном пине hm2_...1.analogena сигнала не будет, т.к. hm2_pci еще не разу не отработал, т.к. не запущен серво поток. PID тоже не отработает. Т.е. этот sets ни на что не повлияет.
Повлиять он может на компонент в userspace - loadusr, т.к. он работает отдельно и не зависит от потоков hal.
И в заключении, чтобы не мучаться с такими проблемами, нужно всегда сначала к сигналу подключать пин источник.
точнее как состояние по умолчанию для конкретного компонента.
В этой цепочке, по идее должно быть так:
Код: Выделить всё
net emcmot.00.enable => pid.0.enable
net emcmot.00.enable => hm2_[HOSTMOT2](BOARD).0.7i77.0.1.analogena
net emcmot.00.enable <= axis.0.amp-enable-out net hm2_...1.analogena - тоже самое
net axis.0.amp-enable-out - вот тут все приняло значение axis.0.amp-enable-out. - который по умолчанию FALSE
В твоем случае,
сигнал становится false
После первого net - pid enable становится false
net hm2_...1.analogena - становится false
net axis.0.amp-enable-out - вот тут все приняло значение axis.0.amp-enable-out. - который по умолчанию FALSE
С виду разница есть, но есть одно но, наружу этот сигнал выйти не должен, т.е. на реальном пине hm2_...1.analogena сигнала не будет, т.к. hm2_pci еще не разу не отработал, т.к. не запущен серво поток. PID тоже не отработает. Т.е. этот sets ни на что не повлияет.
Повлиять он может на компонент в userspace - loadusr, т.к. он работает отдельно и не зависит от потоков hal.
И в заключении, чтобы не мучаться с такими проблемами, нужно всегда сначала к сигналу подключать пин источник.
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
а в какой момент он запускается?Nick писал(а):т.к. не запущен серво поток.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
когда поступает команда start. По идее должно быть после загрузки всех hal.
- torvn77
- Мастер
- Сообщения: 2442
- Зарегистрирован: 02 июн 2012, 22:12
- Репутация: 215
- Откуда: Россия,Санкт-Петербург
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
В принципе если уберут команду newsig можно будет грузить or2 или sum2 и присваивать значение его пину.
Но годится ли это в качестве типового решения,не лучше ли оставить newsig?
С другой стороны,вот вы говорите,не пользуйся мастером,пиши хал руками и выкладываете простыню для probe_rfx2
Не такую уж для простыни и длинную...
Я вот стараюсь сделать её редактирование более простым для чего растаскиваю её по мелким файлам,
)Сначала в указанном в HALFILE = файле с помошью source подключаются соответсвующие компонентам h-файлы в которых с помощью newsig создаютcz все межбочные сигналы.
Особо выделяется ext-estop ,который не только создаётся,но и ставится в false
Если будет загружен лищний h фаил,то просто будут созданы сигналы,которые потом останутся без подключения
)Потом грузятся фаилы *.in.hal *.out.hal *.par.hal в которых грузятся компоненты,разводятся по пинам сигналы и ставятся их параметры,создаётся обвязка компонента вспомогательными компонентами (or2 и т.д).
)В конце файла ext-estop унсетится и линкуется с сигналом ext-estop-in,который экспортируется устройством ввода вывода
Только вот линковать придётся через костыль,так как net линковать сигналы между собой не умеет.
Если затея получится настройка логики работы под станок должна будет свестись к добавлению или убавлению комманд source подключающих файлы с типовым назначением.
Ну и в куче мелких файлов с типовыми функциями проще изучать и редактировать.
Но годится ли это в качестве типового решения,не лучше ли оставить newsig?
С другой стороны,вот вы говорите,не пользуйся мастером,пиши хал руками и выкладываете простыню для probe_rfx2
Не такую уж для простыни и длинную...
Я вот стараюсь сделать её редактирование более простым для чего растаскиваю её по мелким файлам,
)Сначала в указанном в HALFILE = файле с помошью source подключаются соответсвующие компонентам h-файлы в которых с помощью newsig создаютcz все межбочные сигналы.
Особо выделяется ext-estop ,который не только создаётся,но и ставится в false
Если будет загружен лищний h фаил,то просто будут созданы сигналы,которые потом останутся без подключения
)Потом грузятся фаилы *.in.hal *.out.hal *.par.hal в которых грузятся компоненты,разводятся по пинам сигналы и ставятся их параметры,создаётся обвязка компонента вспомогательными компонентами (or2 и т.д).
)В конце файла ext-estop унсетится и линкуется с сигналом ext-estop-in,который экспортируется устройством ввода вывода
Только вот линковать придётся через костыль,так как net линковать сигналы между собой не умеет.
Если затея получится настройка логики работы под станок должна будет свестись к добавлению или убавлению комманд source подключающих файлы с типовым назначением.
Ну и в куче мелких файлов с типовыми функциями проще изучать и редактировать.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
ЗАЧЕМ???torvn77 писал(а):В принципе если уберут команду newsig можно будет грузить or2 или sum2 и присваивать значение его пину.
Но годится ли это в качестве типового решения,не лучше ли оставить newsig?
- torvn77
- Мастер
- Сообщения: 2442
- Зарегистрирован: 02 июн 2012, 22:12
- Репутация: 215
- Откуда: Россия,Санкт-Петербург
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Ну так если newsig не станет,то надо же будет как-то адаптироваться.
И если разработчики вредничают,то почему нельзя вредничать и пользователям?
А так да,с точки зрения программирования как результата newsig не нужен.
Но вот с точки зрения работы с кодом это вешь полезная.
И если разработчики вредничают,то почему нельзя вредничать и пользователям?
А так да,с точки зрения программирования как результата newsig не нужен.
Но вот с точки зрения работы с кодом это вешь полезная.
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
так и есть...Nick писал(а):когда поступает команда start. По идее должно быть после загрузки всех hal.
тогда в чем проблема?
этот кусок
Код: Выделить всё
newsig emcmot.00.enable bit
sets emcmot.00.enable FALSE
net emcmot.00.enable => pid.0.enable
net emcmot.00.enable => hm2_[HOSTMOT2](BOARD).0.7i77.0.1.analogena
net emcmot.00.enable <= axis.0.amp-enable-out до этого все должно быть выключено ...
то есть - я хочу сказать ,что все работает...
наверно ,если бы мы попытальсь sets emcmot.00.enable True
тогда может возникли бы проблемы
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Работает. Проблема в ненужности
Скорее всего нет, т.к. на привода True не ушел бы. Пока не запустился бы servo-thread, а он не запустится до start, а старт будет только после того как весь hal обработается. И к тому времени сигнал уже будет подключен к пину amp-enable и sets уже никак на него не будет влиять.nkp писал(а):наверно ,если бы мы попытальсь sets emcmot.00.enable True
тогда может возникли бы проблемы
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
вывод:
всё имеет прово на жизнь,но лишняя строка : sets emcmot.00.enable FALSE
так так новый сигнал по дефолту и так FALSE
всё имеет прово на жизнь,но лишняя строка : sets emcmot.00.enable FALSE
так так новый сигнал по дефолту и так FALSE
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Тогда и newsig тоже лишняяnkp писал(а):всё имеет прово на жизнь,но лишняя строка : sets emcmot.00.enable FALSE
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
получается - да!Nick писал(а):Тогда и newsig тоже лишняя
Хмм...
тогда не понятно - зачем так городили??
(и это не в одном халфайле так встречал)
- torvn77
- Мастер
- Сообщения: 2442
- Зарегистрирован: 02 июн 2012, 22:12
- Репутация: 215
- Откуда: Россия,Санкт-Петербург
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Есть логика работы,а есть логика написания...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Раньше net не создавал сигнал, поэтому надо было обязательно писать newsig.nkp писал(а):тогда не понятно - зачем так городили??
(и это не в одном халфайле так встречал)
Точнее раньше писали
newsig и linkps и linksp
---------
О оказываеся еще и такое было:
Код: Выделить всё
linkpp pinname1 [arrow] pinname2
(OBSOLETE - use net instead) (link pin to pin) Shortcut for
linkps that creates the signal (named like the first pin), then
links them both to that signal. halcmd treats this just as if
it were:
halcmd newsig pinname1
halcmd linksp pinname1 pinname1
halcmd linksp pinname1 pinname2
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
О, а еще вот такая штука есть:
может от нее остались newsig?
может от нее остались newsig?
Код: Выделить всё
linkpp pinname1 [arrow] pinname2
(OBSOLETE - use net instead) (link pin to pin) Shortcut for
linkps that creates the signal (named like the first pin), then
links them both to that signal. halcmd treats this just as if
it were:
halcmd newsig pinname1
halcmd linksp pinname1 pinname1
halcmd linksp pinname1 pinname2
- torvn77
- Мастер
- Сообщения: 2442
- Зарегистрирован: 02 июн 2012, 22:12
- Репутация: 215
- Откуда: Россия,Санкт-Петербург
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Был у меня план написать библиотеку типовых хал файлов для подключения джойстика,
компенсации кривизны поверхности материала,
типовые панели управления..
Ну и предлагать новичкам это к их LinuxCNC прикручивать к своему халу просто написав source ну и раздав по пинам те или иные сигналы.
Но сейчас я опять столкнулся с трем,что при попытке повторной загрузки компонента,пусть даже и с другим именем возникает ошибка:
Не возможность повторной загрузки компонента означает,что для подключения хала ещё и вносить имена компонентов в общею для всего конфига строку загрузки.
Это очень не удобно,так как место загрузки и использования компонента будут находится в разных частях кода,что осложнит внесение в них согласованных изменений.
К тому же редактирование строки будет влиять на загрузку компонентов сразу для всех модулей,
и при большом размере будет сложно найти ошибку.
В общем может получится так что сделать конфиг с несколькими стандартными конфигами из библиотеки будет довольно сложно...
Особенно начинающим пользователям - тем,кто больше всех в такой библиотеке нуждается.
Нельзя ли сделать так,чтобы компоненты можно было грузить в конфиге не сразу,а по мере надобности?
компенсации кривизны поверхности материала,
типовые панели управления..
Ну и предлагать новичкам это к их LinuxCNC прикручивать к своему халу просто написав source ну и раздав по пинам те или иные сигналы.
Но сейчас я опять столкнулся с трем,что при попытке повторной загрузки компонента,пусть даже и с другим именем возникает ошибка:
Код: Выделить всё
administrator@administrator-desktop:~$ halrun
halcmd: loadrt sum2 names=gg
halcmd: loadrt sum2 names=hh
insmod: error inserting '/usr/realtime-2.6.32-122-rtai/modules/linuxcnc/sum2.ko': -1 File exists
<stdin>:2: exit value: 1
<stdin>:2: insmod failed, returned -1
See the output of 'dmesg' for more information.
halcmd:
Это очень не удобно,так как место загрузки и использования компонента будут находится в разных частях кода,что осложнит внесение в них согласованных изменений.
К тому же редактирование строки будет влиять на загрузку компонентов сразу для всех модулей,
и при большом размере будет сложно найти ошибку.
В общем может получится так что сделать конфиг с несколькими стандартными конфигами из библиотеки будет довольно сложно...
Особенно начинающим пользователям - тем,кто больше всех в такой библиотеке нуждается.
Нельзя ли сделать так,чтобы компоненты можно было грузить в конфиге не сразу,а по мере надобности?
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Нельзя-ли родить двойню, но не сразу, а с перерывом в пару-тройку месяцев?.. 
пользуйте make, grep, sed и будет вам счастье.
пользуйте make, grep, sed и будет вам счастье.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Тоже с этим сталкивался, но так и не нашел решения...
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
В данном случае решения нет т.к. компонент один на все свои клоны.
Теоретически можно было-бы при дозагрузке сначала выгрузить уже загруженный компонент, и загрузить заново в нужном количестве, но проблема в том, что это нарушит работу уже загруженных.
Ну и опять-же возникает неоднозначность с именами экземпляров.
Теоретически можно было-бы при дозагрузке сначала выгрузить уже загруженный компонент, и загрузить заново в нужном количестве, но проблема в том, что это нарушит работу уже загруженных.
Ну и опять-же возникает неоднозначность с именами экземпляров.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
По идее при загрузке, он должен выполнять что-то вроде add instance, для всех каналов, фактически это и надо сделать... но такой уж сильной необходимости вроде нет...
