Страница 1 из 2
HAL соеденить два сигнала
Добавлено: 23 июн 2017, 12:24
Гагарин
Есть желание соединить два сигнала. но net соединяет только сигнал и пин. После того как пин соединен с каким-то сигналом, с другим сигналом его уже нельзя соединить.
Есть может быть какие-нибудь очевидные способы объединить сигналы? Как вариант можно накидать по быстрому компонент у которого вход и выход равны. Но стоит ли изобретать велосипед)
Re: HAL соеденить два сигнала
Добавлено: 23 июн 2017, 12:34
PKM
Странное желание, не вписывается в логику Hal.
Если оба сигнала подключены к пинам out, соединить их не получится.
Re: HAL соеденить два сигнала
Добавлено: 23 июн 2017, 12:39
Сергей Саныч
Попробуйте более конкретно сформулировать задачу. А то непонятно, что за сигналы без пинов и зачем их соединять.
Re: HAL соеденить два сигнала
Добавлено: 23 июн 2017, 12:57
Гагарин
Не вписывается. Но очень хочется. Попробую объяснить желание.
Один же выход можно соединить с несколькими входами.
Допустим имеем компонент с выходами. Они соединены с сигналами
Код: Выделить всё
net s0 ioboard.0.chanel-in-0
net s1 ioboard.0.chanel-in-1
net s2 ioboard.0.chanel-in-2
net s3 ioboard.0.chanel-in-3
net s4 ioboard.0.chanel-in-4
net s5 ioboard.0.chanel-in-5
net s6 ioboard.0.chanel-in-6
net s7 ioboard.0.chanel-in-7
Далее мне требуется индикация и эти сигналы используются для подключения лампочек в pyvcp. В данном случае названия s0-s7 удобны для меня.
Код: Выделить всё
net s0 pyvcp.led0
net s1 pyvcp.led1
net s2 pyvcp.led2
net s3 pyvcp.led3
net s4 pyvcp.led4
net s5 pyvcp.led5
net s6 pyvcp.led6
net s7 pyvcp.led7
Кроме того эти сигналы нужны мне для создания дальнейших логических условий :and, or, xor и т.д.
А там мне уже не удобно и не наглядно использовать сигналы под именами s0-s7. И нужны менее абстрактные названия типа : lube-is-on, gear-is-set, tool-is-fixed и т.д.
Но соединить напрямую s3, например, и tool-is-fixed с помощью net нельзя.
В общем весь вопрос в удобстве. Можно конечно и без этого обойтись
Re: HAL соеденить два сигнала
Добавлено: 23 июн 2017, 13:15
Сергей Саныч
Понятно. Значит, речь идет про имена цепей. Насколько мне известно, HAL в LCNC не предусматривает создание псевдонимов (alias) для имен цепей.
Re: HAL соеденить два сигнала
Добавлено: 23 июн 2017, 13:16
Гагарин
Как вариант:
Код: Выделить всё
component equality ;
pin in bit in
pin out bit out;
function _ nofp;
license "GPL";
;;
FUNCTION(_) {out=in;}
Re: HAL соеденить два сигнала
Добавлено: 23 июн 2017, 13:20
Гагарин
Понят, значит будет компонент. Просто hal хотелось бы использовать в дальнейшем как шаблон и чтоб быстро можно было переназначить номера выходов конкретным не абстрактным сигналам.
Re: HAL соеденить два сигнала
Добавлено: 23 июн 2017, 15:57
merkwurdigliebe
Сергей Саныч писал(а):HAL в LCNC не предусматривает создание псевдонимов (alias) для имен цепей.
а я себе их сделал. конфиги делаю как-то так:
Код: Выделить всё
# стандартная часть - названия физических входов-выходов
net in1 sscii.0.gpio.0.in-not
net in2 sscii.0.gpio.1.in-not
net in3 sscii.0.gpio.2.in-not
...
# назначение логических имен физическим входам
alias sig in4 x-neg-limit
alias sig in1 x-pos-limit
alias sig in5 y-neg-limit
...
# подключение сигналов используюя логические имена
net x-pos-limit => axis.0.pos-lim-sw-in
net x-neg-limit => axis.0.neg-lim-sw-in axis.0.home-sw-in
тet y-pos-limit => axis.1.pos-lim-sw-in
..
# postgui.hal - диагностика - индикация лампочками состояния входов
net in1 => yssc2p.in0
net in2 => yssc2p.in1
net in3 => yssc2p.in2
...
правда тоже не всегда помогает...
Re: HAL соеденить два сигнала
Добавлено: 23 июн 2017, 16:19
Serg
Помоему это какой-то "заворот кишок"...
Просто вместо своих sN используете нормальные имена сигналов, и лампочки в pyvcp подключайте к тем сигналам, которые надо контролировать. Я б ещё и сами лампочки назвал нормальными именами по контролируемым сигналам для наглядности.
Гагарин писал(а):Как вариант:
Плохой, никуда не годный вариант. На другом компе сразу не заработает, после апгрейда/переустановки LinuxCNC работать перестанет.
Лучше использовать штатные компоненты типа and2, or2, logic...
Гагарин писал(а):Просто hal хотелось бы использовать в дальнейшем как шаблон и чтоб быстро можно было переназначить номера выходов конкретным не абстрактным сигналам.
Просто вынесите подключения сигналов к портам в отдельный файл...
merkwurdigliebe писал(а):а я себе их сделал.
А может лучше штатные средства? Например Tcl...
Re: HAL соеденить два сигнала
Добавлено: 23 июн 2017, 16:58
merkwurdigliebe
UAVpilot писал(а):А может лучше штатные средства? Например Tcl...
мне не нравится мой вариант с алиасами потому, что если пин подключен к сети его нельзя исползовать в setp. а как с тиклем это можно реализовать?
я хочу конфиги побить на 4 части:
1. названия физических входов-выходов на используемом железе: например по номеру контакта в разъеме или по имени в PLC: X037, Y010. у мицубиси номера восьмричные, а при использовании mb2hal получаются десятичные. поэтому нужны названия
2. коммутация: назначение логических имен сигналов по именам из пункта 1. например, in1 - x-neg-limit, а Y010 - flood-coolant-pump
3. более-менее неизменная часть с подключением сигналов из п.2 к пинам компонентов linuxcnc: x-neg-limit => axis.0.neg-lim-sw-in
4. более-менее неизменная часть - индикация и диагностика. подключение к лампочкам сигналов по названиям из п.1
Re: HAL соеденить два сигнала
Добавлено: 23 июн 2017, 17:22
Serg
merkwurdigliebe писал(а):мне не нравится мой вариант с алиасами потому, что если пин подключен к сети его нельзя исползовать в setp. а как с тиклем это можно реализовать?
Использовать sets вместо setp.
Но надо помнить, приоритет имеет значение OUT пина, подключенного к этому сигналу.
merkwurdigliebe писал(а):я хочу конфиги побить на 4 части:
Например так (только куски файлов):
latche.ini
Код: Выделить всё
...
[HAL]
HALUI = halui
HALFILE = loadrt.hal
HALFILE = inc/hwdep.hal
HALFILE = latche.hal
HALFILE = spindle.hal.tcl
HALFILE = inc/debug.hal
POSTGUI_HALFILE = postgui_call_list.hal
SHUTDOWN = shutdown.hal
...
hwdep.hal
Код: Выделить всё
net estop-sw.set hm2_7i92.0.7i77.0.0.input-00-not
net estop-sw.reset hm2_7i92.0.7i77.0.0.input-00
net X-alarm hm2_7i92.0.7i77.0.0.input-01
net Z-alarm hm2_7i92.0.7i77.0.0.input-02
net S-alarm hm2_7i92.0.7i77.0.0.input-03
net S-cover hm2_7i92.0.7i77.0.0.input-08
net power.on hm2_7i92.0.7i77.0.0.input-09
net power.off hm2_7i92.0.7i77.0.0.input-09-not
net z-neg-limit hm2_7i92.0.7i77.0.0.input-04
net z-pos-limit hm2_7i92.0.7i77.0.0.input-05
net x-neg-limit hm2_7i92.0.7i77.0.0.input-06
net x-pos-limit hm2_7i92.0.7i77.0.0.input-07
net spindle-ccw hm2_7i92.0.7i77.0.0.output-01
net spindle-cw hm2_7i92.0.7i77.0.0.output-00
net coolant-flood hm2_7i92.0.7i77.0.0.output-02
net toolch-bit1 hm2_7i92.0.7i77.0.0.input-16
net toolch-bit2 hm2_7i92.0.7i77.0.0.input-17
net toolch-bit3 hm2_7i92.0.7i77.0.0.input-18
net toolch-bit4 hm2_7i92.0.7i77.0.0.input-19
net toolch-strobe hm2_7i92.0.7i77.0.0.input-20
net toolch-alarm hm2_7i92.0.7i77.0.0.input-21
net toolch-hold hm2_7i92.0.7i77.0.0.input-22
net toolch-motor-rev hm2_7i92.0.7i77.0.0.output-03
net toolch-motor-fwd hm2_7i92.0.7i77.0.0.output-04
#*******************
# AXIS X
#*******************
# ---PWM Generator signals/setup---
setp hm2_7i92.0.7i77.0.1.analogout0-scalemax [AXIS_0]OUTPUT_SCALE
setp hm2_7i92.0.7i77.0.1.analogout0-minlim [AXIS_0]OUTPUT_MIN_LIMIT
setp hm2_7i92.0.7i77.0.1.analogout0-maxlim [AXIS_0]OUTPUT_MAX_LIMIT
net x-output => hm2_7i92.0.7i77.0.1.analogout0
# enable _all_ sserial pwmgens
net x-enable hm2_7i92.0.7i77.0.1.analogena
# ---Encoder feedback signals/setup---
setp hm2_7i92.0.encoder.00.counter-mode 0
setp hm2_7i92.0.encoder.00.filter 1
setp hm2_7i92.0.encoder.00.index-invert 0
setp hm2_7i92.0.encoder.00.index-mask 0
setp hm2_7i92.0.encoder.00.index-mask-invert 0
setp hm2_7i92.0.encoder.00.scale [AXIS_0]INPUT_SCALE
net x-pos-fb <= hm2_7i92.0.encoder.00.position
net x-vel-fb <= hm2_7i92.0.encoder.00.velocity
net x-index-enable <=> hm2_7i92.0.encoder.00.index-enable
net x-pos-rawcounts <= hm2_7i92.0.encoder.00.rawcounts
...
latche.hal
Код: Выделить всё
...
#*******************
# AXIS X
#*******************
setp pid.x.Pgain [AXIS_0]P
setp pid.x.Igain [AXIS_0]I
setp pid.x.Dgain [AXIS_0]D
setp pid.x.bias [AXIS_0]BIAS
setp pid.x.FF0 [AXIS_0]FF0
setp pid.x.FF1 [AXIS_0]FF1
setp pid.x.FF2 [AXIS_0]FF2
setp pid.x.deadband [AXIS_0]DEADBAND
setp pid.x.maxoutput [AXIS_0]MAX_OUTPUT
net x-index-enable <=> pid.x.index-enable
net x-enable => pid.x.enable
net x-output => pid.x.output
net x-pos-cmd => pid.x.command
net x-vel-fb => pid.x.feedback-deriv
net x-pos-fb => pid.x.feedback
net x-pos-cmd <= axis.0.motor-pos-cmd
net x-enable <= axis.0.amp-enable-out
net x-pos-fb <= axis.0.motor-pos-fb
net x-index-enable axis.0.index-enable
# ---setup home / limit switch signals---
#net x-home-sw => axis.0.home-sw-in
net x-neg-limit => axis.0.neg-lim-sw-in
net x-pos-limit => axis.0.pos-lim-sw-in axis.0.home-sw-in
...
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in
...
net toolch-fwd carousel.0.motor-fwd ff-toolch-fwd.set
net toolch-rev carousel.0.motor-rev ff-toolch-rev.set
net toolch-motor-fwd <= ff-toolch-fwd.out
net toolch-motor-rev <= ff-toolch-rev.out
setp ff-toolch-fwd.data 0
setp ff-toolch-rev.data 0
setp ff-toolch-ena.data 0
net toolch-hold => ff-toolch-fwd.clk ff-toolch-rev.clk ff-toolch-ena.clk
...
Re: HAL соеденить два сигнала
Добавлено: 23 июн 2017, 17:36
merkwurdigliebe
UAVpilot писал(а):Использовать sets вместо setp.
Но надо помнить, приоритет имеет значение OUT пина, подключенного к этому сигналу.
о, круто, сенькс! артиэфэм, ага

это решает проблему по большей части, т.к. out пинов к этим сигналам не подключено. иначе мне бы не потребовалось устанавливать их значение
Например так (только куски файлов):
а как теперь к этим файла добавить, скажем
POSTGUI_HALFILE = 7i92diag.hal
который будет показывать на вкладке состояние всех
hm2_7i92.0.7i77.0.0.input-???
hm2_7i92.0.encoder.??.position
и т.п. ровными рядами?
Re: HAL соеденить два сигнала
Добавлено: 23 июн 2017, 17:47
Serg
merkwurdigliebe писал(а):а как теперь к этим файла добавить, скажем
POSTGUI_HALFILE = 7i92diag.hal
который будет показывать на вкладке состояние всех
hm2_7i92.0.7i77.0.0.input-???
hm2_7i92.0.encoder.??.position
и т.п. ровными рядами?
loadusr halshow 7i92diag.halshow

Re: HAL соеденить два сигнала
Добавлено: 23 июн 2017, 17:53
merkwurdigliebe
не, не пойдет.

я хочу лампочки, расположенные так же, как на передней панели PLC. и подписанные восьмеричными числами
Re: HAL соеденить два сигнала
Добавлено: 23 июн 2017, 19:14
Serg
Ну если " я хочу именно так и больше никак" то тут решения (нормального) нет.
Ну а если использовать минимум логики, то получается, что ты либо делаёшь стенд для диагностики платы, либо пытаешься приделать это к реальному станку.
Если первое, то прямо так и делай, там незачем делать "сдвоенные" сигналы.
Ну а если второе, то все задействованные пины уже подключены к каким-то сигналам и лампочки надо просто подключать к этим сигналам, а неподключенные пины просто не "индицировать" - они ведь неиспользуемые.

Re: HAL соеденить два сигнала
Добавлено: 23 июн 2017, 19:57
PKM
UAVpilot писал(а):Просто вместо своих sN используете нормальные имена сигналов, и лампочки в pyvcp подключайте к тем сигналам, которые надо контролировать
+1
хотя да, возможности подключать пин OUT к двум сигналам несколько не хватает, именно для удобства
вроде и препятствий особых нет к этому
Re: HAL соеденить два сигнала
Добавлено: 23 июн 2017, 20:15
merkwurdigliebe
ну почему нет? с приделанными алиасами сигналов вполне нормально получается. особенно с sets. панель с лампочками на glade.
ну и да, можно писать конфиги на тикле. все эти алиасы можно хранить переменных... подумаю на досуге
я пытаюь приделать это к разным станкам. а отлаживаться, по возможности, хочу на своем. портировать конфиги туда-сюда при каждом изменении - долго и чревато ошибками. поэтому хочется локализовать назначения сигналов на физические пины в одельном файле. а диагностика с лампочками нужна людям у которых в одной руке паяльник, в другой тестер. поключил - увидел лампочку. лазить по деревьям в halshow не очень удобно. ну если отвалилось ченить, чтобы быстро понять в каком месте. собсно для того же, зачем в PLC светодиоды ставят на входы-выходы...
показывать только используемые сигналы - сегодня они не используются, а завтра понадобятся. и лишний раз че-то менять в этой идиотской рисовалке glade не хочу.
в общем, пока alias sig мои задачи решает. а дальше посмотрим...
Re: HAL соеденить два сигнала
Добавлено: 23 июн 2017, 20:28
Serg
merkwurdigliebe писал(а):я пытаюь приделать это к разным станкам. а отлаживаться, по возможности, хочу на своем. портировать конфиги туда-сюда при каждом изменении - долго и чревато ошибками. поэтому хочется локализовать назначения сигналов на физические пины в одельном файле.
Посмотри, я думаю разберёшся с идеей. Я все основные изменения конфигураций пишу и отлаживаю на своём стенде, со своими кнопками/лампочками, а потом через git заливаю на станки - там она уже работает с реальным железом и подключениями.
Код: Выделить всё
...
[HAL]
HALUI = halui
HALFILE = loadrt.hal
HALFILE = inc/hwdep.hal
HALFILE = latche.hal
HALFILE = spindle.hal.tcl
HALFILE = inc/debug.hal
POSTGUI_HALFILE = postgui_call_list.hal
SHUTDOWN = shutdown.hal
...
Код: Выделить всё
$ ls -lnR
.:
итого 95
-rw-r--r-- 1 1000 1000 438 Фев 9 21:19 autosave.halscope
drwxr-xr-x 2 1000 1000 4096 Сен 29 2016 backups
-rw-r--r-- 1 1000 1000 108 Сен 29 2016 custom_gvcp.hal
-rw-r--r-- 1 1000 1000 129 Фев 6 22:30 custom_postgui.hal
lrwxrwxrwx 1 1000 1000 11 Июн 7 21:36 inc -> inc-test/xz
drwxr-xr-x 4 1000 1000 4096 Фев 2 22:22 inc-test
drwxr-xr-x 2 1000 1000 4096 Июн 21 01:47 inc-work
-rw-r--r-- 1 1000 1000 7159 Фев 6 23:00 latche.hal
-rw-r--r-- 1 1000 1000 2137 Июн 4 18:17 latche.ini
-rw-r--r-- 1 1000 1000 3666 Июн 7 21:36 latche.ini.expanded
-rw-r--r-- 1 1000 1000 1693 Фев 9 20:17 latche.pref
-rw-r--r-- 1 1000 1000 702 Янв 30 20:56 latche.tbl
-rw-r--r-- 1 1000 1000 1678 Фев 9 21:19 linuxcnc.var
-rw-r--r-- 1 1000 1000 1678 Фев 9 21:19 linuxcnc.var.bak
-rw-r--r-- 1 1000 1000 1602 Фев 6 21:20 loadrt.hal
-rw-r--r-- 1 1000 1000 182 Фев 4 23:34 my.halshow
-rw-r--r-- 1 1000 1000 402 Фев 9 20:24 pid.s.halscope
-rw-r--r-- 1 1000 1000 327 Окт 28 2016 pid-x.halscope
-rw-r--r-- 1 1000 1000 326 Окт 28 2016 pid-z.halscope
-rw-r--r-- 1 1000 1000 87 Сен 29 2016 postgui_call_list.hal
-rw-r--r-- 1 1000 1000 292 Фев 4 22:17 s.halshow
-rw-r--r-- 1 1000 1000 105 Сен 29 2016 shutdown.hal
-rw-r--r-- 1 1000 1000 1203 Фев 6 22:19 spindle.hal.tcl
./backups:
итого 0
./inc-test:
итого 8
drwxr-xr-x 2 1000 1000 4096 Фев 2 22:47 xz
drwxr-xr-x 2 1000 1000 4096 Фев 6 20:31 zs
./inc-test/xz:
итого 20
-rw-r--r-- 1 1000 1000 466 Окт 28 2016 axis-x.ini
-rw-r--r-- 1 1000 1000 466 Окт 28 2016 axis-z.ini
-rw-r--r-- 1 1000 1000 1 Сен 29 2016 debug.hal
-rw-r--r-- 1 1000 1000 0 Сен 29 2016 debug.ini
-rw-r--r-- 1 1000 1000 3978 Окт 28 2016 hwdep.hal
-rw-r--r-- 1 1000 1000 226 Фев 2 22:38 spindle.ini
./inc-test/zs:
итого 24
-rw-r--r-- 1 1000 1000 418 Фев 2 22:29 axis-x.ini
-rw-r--r-- 1 1000 1000 467 Фев 2 23:05 axis-z.ini
-rw-r--r-- 1 1000 1000 111 Фев 2 22:27 debug.hal
-rw-r--r-- 1 1000 1000 0 Сен 29 2016 debug.ini
-rw-r--r-- 1 1000 1000 4142 Фев 6 20:31 hwdep.hal
-rw-r--r-- 1 1000 1000 258 Фев 5 01:09 spindle.ini
./inc-work:
итого 28
-rw-r--r-- 1 1000 1000 561 Ноя 24 2016 axis-x.ini
lrwxrwxrwx 1 1000 1000 16 Фев 2 22:17 axis-z.ini -> axis-z-right.ini
-rw-r--r-- 1 1000 1000 480 Янв 29 01:39 axis-z-left.ini
-rw-r--r-- 1 1000 1000 482 Янв 29 04:59 axis-z-right.ini
-rw-r--r-- 1 1000 1000 1 Сен 29 2016 debug.hal
-rw-r--r-- 1 1000 1000 0 Май 30 2015 debug.ini
-rw-r--r-- 1 1000 1000 4538 Фев 6 02:49 hwdep.hal
-rw-r--r-- 1 1000 1000 220 Фев 3 00:04 spindle.ini
merkwurdigliebe писал(а):и лишний раз че-то менять в этой идиотской рисовалке glade не хочу.
А зачем панель-то перерисовывать? Просто в hal подключаешь только нужные лампочки, а ненужные и так светиться не будут.
Re: HAL соеденить два сигнала
Добавлено: 23 июн 2017, 22:05
PKM
merkwurdigliebe писал(а):лазить по деревьям в halshow не очень удобно
можно сохранить и потом открыть набор пинов
в т.ч. автоматически при загрузке конфига
для отладки иного и не нужно
Re: HAL соеденить два сигнала
Добавлено: 25 июн 2017, 02:45
torvn77
Гагарин писал(а):Есть желание соединить два сигнала.
PKM писал(а):Странное желание, не вписывается в логику Hal.
Не такое уж и странное если пытаться писать хал не сваливая всё в кучу,а так же,
как обычно пишутся программы, с выносом типовой части конфига в заголовочные файлы.
Вот например что генерирует мастер конфигурации stepconf если поставить галку для запроса ручной смены инструмента.
Код: Выделить всё
net tool-prepare-loopback <= iocontrol.0.toolprepare => iocontrol.0.toolprepared
Если делить конфиг на код и заголовочные файлы, то получится заголовочный файл:
Код: Выделить всё
net tool-prepare iocontrol.0.toolprepare
net tool-prepared iocontrol.0.toolprepared
И файл с кодом, с которым будут проблемы.
По идее в нём было бы логично написать явно показывая своё намерение:
Код: Выделить всё
net tool-prepare-loopback tool-prepare => tool-prepared
Но так делать нельзя, надо либо разопределять сигналы и писать исходную строку,
либо загружать скажем компонет OR.
Первое решение плохо тремя вещами, второе только 1и 3:
1) Отсутствует прямое выражение намерения соединить два сигнала, оно должно угадываться косвенно по коду.
2) Если один из сигналов подсоединён к нескольким входным пинам, то придётся их всех восстанавливать в месте подключения.
3) Всё это лишает смысла разделения конфига на заголовочные файлы и код, затрудняя его построения в логическую структуру.
Как следствие возрастает вероятность путаницы и ошибок.