Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение torvn77 »

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

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Nick »

Суть в том, что до старт состояние пина будет таким, какое стоит по умолчанию... как мне кажется...
точнее как состояние по умолчанию для конкретного компонента.
В этой цепочке, по идее должно быть так:

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

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 - 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.

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

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение nkp »

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

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Nick »

когда поступает команда start. По идее должно быть после загрузки всех hal.
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение torvn77 »

В принципе если уберут команду 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 подключающих файлы с типовым назначением.
Ну и в куче мелких файлов с типовыми функциями проще изучать и редактировать.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Nick »

torvn77 писал(а):В принципе если уберут команду newsig можно будет грузить or2 или sum2 и присваивать значение его пину.
Но годится ли это в качестве типового решения,не лучше ли оставить newsig?
ЗАЧЕМ???
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение torvn77 »

Ну так если newsig не станет,то надо же будет как-то адаптироваться.
И если разработчики вредничают,то почему нельзя вредничать и пользователям? :D
А так да,с точки зрения программирования как результата newsig не нужен.
Но вот с точки зрения работы с кодом это вешь полезная.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение nkp »

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 
включает пид и привода (через hm2_[HOSTMOT2](BOARD).0.7i77.0.1.analogena) по F2
до этого все должно быть выключено ...
то есть - я хочу сказать ,что все работает...
наверно ,если бы мы попытальсь sets emcmot.00.enable True
тогда может возникли бы проблемы :thinking:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Nick »

Работает. Проблема в ненужности :)
nkp писал(а):наверно ,если бы мы попытальсь sets emcmot.00.enable True
тогда может возникли бы проблемы
Скорее всего нет, т.к. на привода True не ушел бы. Пока не запустился бы servo-thread, а он не запустится до start, а старт будет только после того как весь hal обработается. И к тому времени сигнал уже будет подключен к пину amp-enable и sets уже никак на него не будет влиять.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение nkp »

вывод:
всё имеет прово на жизнь,но лишняя строка : sets emcmot.00.enable FALSE
так так новый сигнал по дефолту и так FALSE
Выделение_035.png (2714 просмотров) <a class='original' href='./download/file.php?id=30584&mode=view' target=_blank>Загрузить оригинал (95.26 КБ)</a>
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Nick »

nkp писал(а):всё имеет прово на жизнь,но лишняя строка : sets emcmot.00.enable FALSE
Тогда и newsig тоже лишняя ;).
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение nkp »

Nick писал(а):Тогда и newsig тоже лишняя
получается - да!
Хмм...
тогда не понятно - зачем так городили??
(и это не в одном халфайле так встречал)
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение torvn77 »

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

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Nick »

nkp писал(а):тогда не понятно - зачем так городили??
(и это не в одном халфайле так встречал)
Раньше net не создавал сигнал, поэтому надо было обязательно писать newsig.
Точнее раньше писали
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, что нам еще предстоит сдел

Сообщение Nick »

О, а еще вот такая штука есть:
может от нее остались 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, что нам еще предстоит сдел

Сообщение torvn77 »

Был у меня план написать библиотеку типовых хал файлов для подключения джойстика,
компенсации кривизны поверхности материала,
типовые панели управления..
Ну и предлагать новичкам это к их 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, что нам еще предстоит сдел

Сообщение Serg »

Нельзя-ли родить двойню, но не сразу, а с перерывом в пару-тройку месяцев?.. :)

пользуйте make, grep, sed и будет вам счастье. ;)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Nick »

Тоже с этим сталкивался, но так и не нашел решения...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Serg »

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

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Nick »

По идее при загрузке, он должен выполнять что-то вроде add instance, для всех каналов, фактически это и надо сделать... но такой уж сильной необходимости вроде нет...
Ответить

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