Страница 1 из 1

Условия в HAL

Добавлено: 28 авг 2017, 00:35
cdtt
Добрый день. Весь интернет перерыл. Прошу помощи:

Хочу сделать на PyVCP панели выбор скорости подачи из 3-х переключателей: Медленно, средне и быстро.

custompanel.xml

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

<radiobutton>
	<choices>["slow","medium","fast"]</choices>
	<halpin>"jog-feed"</halpin>
</radiobutton>
В HAL необходимо задать скорость движения:
setp halui.jog-speed СКОРОСТЬ

Но вот в чем проблема, в панели 3 переменные jog-feed.slow, jog-feed.medium, jog-feed.fast - тип BIT
А необходимо, чтоб при выборе:
jog-feed.slow = TRUE было halui.jog-speed 10
jog-feed.medium = TRUE было halui.jog-speed 100
jog-feed.fast = TRUE было halui.jog-speed 1000

Может есть какое то простое решение?

Re: Условия в HAL

Добавлено: 28 авг 2017, 01:02
Serg
cdtt писал(а):Но вот в чем проблема, в панели 3 переменные jog-feed.slow, jog-feed.medium, jog-feed.fast - тип BIT
В HAL нет ни условий, ни переменных, это вообще не язык программирования. Это язык описания схем (логических).
cdtt писал(а):Может есть какое то простое решение?
например mux8

Re: Условия в HAL

Добавлено: 28 авг 2017, 01:55
torvn77
UAVpilot писал(а):. Это язык описания схем (логических).
Нет, hal правильнее определить как язык описания потоков данных между источниками, обработчиками и приёмниками.

Re: Условия в HAL

Добавлено: 28 авг 2017, 02:04
torvn77
cdtt писал(а):Может есть какое то простое решение?
Простого решения нет, выдери из какого userspace приложения на питоне создание пинов и подключение нужных библиотек и сделай свой вариант мультиплексора.
Так же можно на много проще с помощью halcompile написать ядерный модуль на С, но его придётся всякий раз переустанавливать при обновлении ядра во избежание глюков и паник.
В прочем linuxcnc можно запускать скриптом и делать переустановку модуля всякий раз при её запуске.

Re: Условия в HAL

Добавлено: 28 авг 2017, 08:20
nkp
torvn77 писал(а):Простого решения нет
почему сложным тебе кажется решение ,предложенное выше(mux8) ?

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

loadrt mux8 count=1
addf mux8.0 servo-thread 
 
setp mux8.0.in1    10.0
setp mux8.0.in2    100.0
setp mux8.0.in4    1000.0

net sel0 mux8.0.sel0  pyvcp.jog-feed.slow
net sel1 mux8.0.sel1  pyvcp.jog-feed.medium
net sel2 mux8.0.sel2  pyvcp.jog-feed.fast

net out-mux mux8.0.out  halui.jog-speed

Re: Условия в HAL

Добавлено: 28 авг 2017, 09:23
Сергей Саныч
torvn77 писал(а):Простого решения нет, выдери из какого userspace приложения на питоне создание пинов и подключение нужных библиотек и сделай свой вариант мультиплексора.
Так же можно на много проще с помощью halcompile написать ядерный модуль на С, но его придётся всякий раз переустанавливать при обновлении ядра во избежание глюков и паник.
В прочем linuxcnc можно запускать скриптом и делать переустановку модуля всякий раз при её запуске.
Да, трансректальная тонзиллэктомия - операция сложная и опасная :hehehe:

Re: Условия в HAL

Добавлено: 28 авг 2017, 11:06
Serg
torvn77 писал(а):Нет, hal правильнее определить как язык описания потоков данных между источниками, обработчиками и приёмниками.
Не надо выдумывать! :)
Есть такие языки как Verilog - HAL в LinuxCNC очень упрощённый вариант такого языка.

Re: Условия в HAL

Добавлено: 29 авг 2017, 03:35
torvn77
nkp писал(а):
torvn77 писал(а):Простого решения нет
почему сложным тебе кажется решение ,предложенное выше(mux8) ?

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

net sel0 mux8.0.sel0  pyvcp.jog-feed.slow
Потому что я ошибочно думал что выпадающий список выдаёт число с номером выбранного элемента.

Re: Условия в HAL

Добавлено: 29 авг 2017, 04:21
torvn77
UAVpilot писал(а):
torvn77 писал(а):Нет, hal правильнее определить как язык описания потоков данных между источниками, обработчиками и приёмниками.
Не надо выдумывать! :)
Есть такие языки как Verilog - HAL в LinuxCNC очень упрощённый вариант такого языка.
1) Хал не может быть языком отношений, каким к примеру является Пролог, по той причине, что в нём присутствует время.
Например в прологе двойное отрицание будет выполнятся сразу, в хале правильный результат будет приходить с задержкой.
2) продолжая сравнение с тем же прологом встаёт вопрос, как осуществить получение новых значений с пина, ведь датчик может быть замкнут или разомкнут(в Прологе вообще нового значения нет как понятия).
В Прологе скорее всего это будет какая то всё возрастающей глубины рекурсия от первоначального запроса, то есть хал должен был бы хранить все свои предыдущие состояния и забить ими всё ОЗУ.
Но хал не хранит свои состояния и не ищет ответ как рекурсию от начала, он просто передаёт данные о состоянии пина, что больше похоже не на логическое описание, а на описание связей элементов с императивным программированием.
3) Если воспринимать хал как язык логических отношений, то если я при запущенной программе что либо меняю в хал с помощью halcmd то это будет две разных программы.
Но по факту то программа остаётся той же, перезагрузки её в ОЗУ не происходит, и на этот момент программа выпадает из твоей концепции хала как языка описания логических отношений.
А вот если смотреть на хал как на язык описания потоков, то выпадения программы из концепции не происходит, с этой точки зрения либо осуществляется прокладка трубы(net), либо подкручивание краника(setp,sets)


Я не настаиваю на придуманных мной терминах источник, приёмник и обработчик, может есть другие слова,
но для меня именно эти слова лучше всего описывают то, как хал ощущается при непосредственной с ним работе.

У гуманитариев есть наблюдение:
"Смысл литературного произведения состоит из трёх вещей:
1. То, что писатель сказал
2. То что писатель хотел сказать, но не смог
3. и то, что писатель не собирался говорить, но тем не менее сказал.
Вот по п.3 хал и является языком описания потоков, хотя как я тебя понимаю он происходит от языка описания логических отношений.

Re: Условия в HAL

Добавлено: 29 авг 2017, 10:45
Сергей Саныч
Вот есть же люди, умеющие невероятно сложно объяснить простые вещи! :hehehe:

Re: Условия в HAL

Добавлено: 29 авг 2017, 12:47
Serg
torvn77 писал(а):выпадает из твоей концепции хала как языка описания логических отношений.
Не выдумывай отсебятины, я его так не называл.
И вот это не просто так появилось, а там нет никаких потоков и краников. :)

Re: Условия в HAL

Добавлено: 31 авг 2017, 02:05
torvn77
UAVpilot писал(а):Не выдумывай отсебятины, я его так не называл.
Действительно, меня с перепугу несколько занесло, извини пожалуйста.
UAVpilot писал(а):И вот это не просто так появилось, а там нет никаких потоков и краников. :)
"Краники" образ не удачный, но вот остальное там есть.
Screenshot at 2017-08-31 01-48-41.png (3182 просмотра) <a class='original' href='./download/file.php?id=119358&mode=view' target=_blank>Загрузить оригинал (136.92 КБ)</a>
На самом деле оба и твоё и моё описания корректны, ты описываешь социальное значение, я описываю внутреннее и практическое содержание.

Re: Условия в HAL

Добавлено: 31 авг 2017, 02:44
Serg
Любой электронщик скажет, что на картинке схема из логических элементов и связей между ними. Возможно сантехник увидит в этом потоки... :)

Re: Условия в HAL

Добавлено: 31 авг 2017, 03:07
torvn77
UAVpilot писал(а):Возможно сантехник увидит в этом потоки... :)
Точно сантехник?
Screenshot at 2017-08-31 03-03-05.png (3175 просмотров) <a class='original' href='./download/file.php?id=119362&mode=view' target=_blank>Загрузить оригинал (49.43 КБ)</a>

Re: Условия в HAL

Добавлено: 31 авг 2017, 10:24
Serg
Тяжёлый случай...
Ты вот это хоть читал: http://linuxcnc.org/docs/devel/html/hal ... techniques ? :)