Страница 14 из 39
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 08 июл 2014, 10:54
torvn77
Когда я писал newsig я думал про типизацию данных.
Сначала создавать в h.hal сигналы,а потом по мере подключения блоков хала с компонентами рассаживать их по пинам.
Ну вот значит есть уже два повода оставить эту команду.
Учитывая второй повод для удобства тиражирования сигнала может добавить в newsig возможность установки значения параметра?
Типа чтоб по эфекту получилось как newsig + sets ?
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 08 июл 2014, 11:02
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.
И в заключении, чтобы не мучаться с такими проблемами, нужно всегда сначала к сигналу подключать пин источник.
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 08 июл 2014, 11:41
nkp
Nick писал(а):т.к. не запущен серво поток.
а в какой момент он запускается?
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 08 июл 2014, 12:01
Nick
когда поступает команда start. По идее должно быть после загрузки всех hal.
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 08 июл 2014, 12:07
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 подключающих файлы с типовым назначением.
Ну и в куче мелких файлов с типовыми функциями проще изучать и редактировать.
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 08 июл 2014, 12:13
Nick
torvn77 писал(а):В принципе если уберут команду newsig можно будет грузить or2 или sum2 и присваивать значение его пину.
Но годится ли это в качестве типового решения,не лучше ли оставить newsig?
ЗАЧЕМ???
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 08 июл 2014, 12:21
torvn77
Ну так если newsig не станет,то надо же будет как-то адаптироваться.
И если разработчики вредничают,то почему нельзя вредничать и пользователям?
А так да,с точки зрения программирования как результата newsig не нужен.
Но вот с точки зрения работы с кодом это вешь полезная.
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 08 июл 2014, 12:49
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
тогда может возникли бы проблемы

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 08 июл 2014, 12:55
Nick
Работает. Проблема в ненужности
nkp писал(а):наверно ,если бы мы попытальсь sets emcmot.00.enable True
тогда может возникли бы проблемы
Скорее всего нет, т.к. на привода True не ушел бы. Пока не запустился бы servo-thread, а он не запустится до start, а старт будет только после того как весь hal обработается. И к тому времени сигнал уже будет подключен к пину amp-enable и sets уже никак на него не будет влиять.
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 08 июл 2014, 13:13
nkp
вывод:
всё имеет прово на жизнь,но лишняя строка : sets emcmot.00.enable FALSE
так так новый сигнал по дефолту и так FALSE
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 08 июл 2014, 13:17
Nick
nkp писал(а):всё имеет прово на жизнь,но лишняя строка : sets emcmot.00.enable FALSE
Тогда и newsig тоже лишняя

.
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 08 июл 2014, 13:23
nkp
Nick писал(а):Тогда и newsig тоже лишняя
получается - да!
Хмм...
тогда не понятно - зачем так городили??
(и это не в одном халфайле так встречал)
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 08 июл 2014, 13:27
torvn77
Есть логика работы,а есть логика написания...
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 08 июл 2014, 14:12
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
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 08 июл 2014, 14:19
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
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 13 июл 2014, 12:10
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:
Не возможность повторной загрузки компонента означает,что для подключения хала ещё и вносить имена компонентов в общею для всего конфига строку загрузки.
Это очень не удобно,так как место загрузки и использования компонента будут находится в разных частях кода,что осложнит внесение в них согласованных изменений.
К тому же редактирование строки будет влиять на загрузку компонентов сразу для всех модулей,
и при большом размере будет сложно найти ошибку.
В общем может получится так что сделать конфиг с несколькими стандартными конфигами из библиотеки будет довольно сложно...
Особенно начинающим пользователям - тем,кто больше всех в такой библиотеке нуждается.
Нельзя ли сделать так,чтобы компоненты можно было грузить в конфиге не сразу,а по мере надобности?
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 13 июл 2014, 15:30
Serg
Нельзя-ли родить двойню, но не сразу, а с перерывом в пару-тройку месяцев?..
пользуйте make, grep, sed и будет вам счастье.

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 14 июл 2014, 14:59
Nick
Тоже с этим сталкивался, но так и не нашел решения...
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 14 июл 2014, 15:08
Serg
В данном случае решения нет т.к. компонент один на все свои клоны.
Теоретически можно было-бы при дозагрузке сначала выгрузить уже загруженный компонент, и загрузить заново в нужном количестве, но проблема в том, что это нарушит работу уже загруженных.
Ну и опять-же возникает неоднозначность с именами экземпляров.
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Добавлено: 14 июл 2014, 15:11
Nick
По идее при загрузке, он должен выполнять что-то вроде add instance, для всех каналов, фактически это и надо сделать... но такой уж сильной необходимости вроде нет...