Импульсная подача СОЖ/воздуха.

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Импульсная подача СОЖ/воздуха.

Сообщение Сергей Саныч »

UAVpilot писал(а):Вон бери триггеры (компонент flipflop) и "паяй" из них счётчики в обычном текстовом редакторе.
Первый же триггер "уничтожит" ШИМ.
Так же, как впрочем и аппаратный счетчик.
Чудес не бывает. Бывают фокусы.
eugenysg
Опытный
Сообщения: 119
Зарегистрирован: 18 ноя 2013, 13:23
Репутация: 25
Контактная информация:

Re: Импульсная подача СОЖ/воздуха.

Сообщение eugenysg »

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

Re: Импульсная подача СОЖ/воздуха.

Сообщение Nick »

UAVpilot писал(а):Можно попробовать парочку timedelay зациклить...
А что, и правда, наверное timedelay может такое:
in <- not <- out + если надо на out добавить and2 с пином включения сож.
И устанвливаем нужные временные промежутки....
http://linuxcnc.org/docs/html/man/man9/timedelay.9.html
timedelay.N.in bit in
timedelay.N.out bit out
Follows the value of in after applying the delays on-delay and off-delay.
timedelay.N.on-delay float in (default: 0.5)
The time, in seconds, for which in must be true before out becomes true
timedelay.N.off-delay float in (default: 0.5)
The time, in seconds, for which in must be false before out becomes false
timedelay.N.elapsed float out
Current value of the internal timer
Аватара пользователя
raddd
Почётный участник
Почётный участник
Сообщения: 1564
Зарегистрирован: 10 фев 2015, 08:50
Репутация: 540
Настоящее имя: Alexey Rodionov
Откуда: Беларусь Минский р-н
Контактная информация:

Re: Импульсная подача СОЖ/воздуха.

Сообщение raddd »

UAVpilot писал(а):
raddd писал(а):и еще можно внешнюю плату со счетчиком сделать
Внешнюю плату-то зачем? Вон бери триггеры (компонент flipflop) и "паяй" из них счётчики в обычном текстовом редакторе. :)
Вот я и говорю лучше делитель сделать софтовый. А если как у меня руки к паяльнику присохшие))) я б думал чегонибудь спаять...
||||||||||||
||||||||||||
eugenysg
Опытный
Сообщения: 119
Зарегистрирован: 18 ноя 2013, 13:23
Репутация: 25
Контактная информация:

Re: Импульсная подача СОЖ/воздуха.

Сообщение eugenysg »

eugenysg писал(а):Сергей Саныч писал(а):
Можно "из кубиков" собрать. Взять "пилу" или "треугольник" с выхода siggen, подать ее на вход компаратора comp, на второй вход comp подать задающий уровень. С выхода out компаратора - на включение охлаждения.
Частота siggen будет задавать период включения, а задающий уровень - время работы.

Интересное решение, попробую.
Видимо должно получится что то вроде:

loadrt siggen num_chan=1
loadrt comp count=1

addf siggen.0.update servo-thread
addf comp.0

setp siggen.0.frequency 0.5 // Частота
setp siggen.0.amplitude 100
setp comp.0.in0 20 // Скважность
net temp_signal1 <= siggen.0.triangle
net temp_signal1 => comp.0.in1
net signal_to_out <= comp.0.out
net signal_to_out => hw2....... mesa в общем
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Импульсная подача СОЖ/воздуха.

Сообщение Сергей Саныч »

addf comp.0 servo-thread

Еще setp siggen.0.offset 100 (чтобы не связываться с отрицательными значениями). Выход будет от 0 до 200
Чудес не бывает. Бывают фокусы.
eugenysg
Опытный
Сообщения: 119
Зарегистрирован: 18 ноя 2013, 13:23
Репутация: 25
Контактная информация:

Re: Импульсная подача СОЖ/воздуха.

Сообщение eugenysg »

Сергей Саныч писал(а):addf comp.0 servo-thread
Недокопипастил :) Спасибо
Сергей Саныч писал(а):Еще setp siggen.0.offset 100 (чтобы не связываться с отрицательными значениями). Выход будет от 0 до 200
Понятно, но решил пусть будет так, все равно только верхушки "отсекаем".

После работы попробую.
eugenysg
Опытный
Сообщения: 119
Зарегистрирован: 18 ноя 2013, 13:23
Репутация: 25
Контактная информация:

Re: Импульсная подача СОЖ/воздуха.

Сообщение eugenysg »

Итоги теста - все рботет, спасибо за помощь!

loadrt siggen num_chan=1
loadrt comp count=1
addf siggen.0.update servo-thread
addf comp.0 servo-thread

setp siggen.0.frequency 0.4
setp siggen.0.amplitude 100
setp comp.0.in0 90

net triangle0_signal <= siggen.0.triangle => comp.0.in1
net signal_to_out => hm2_5i25.0.7i77.0.0.output-05 <= comp.0.out
eugenysg
Опытный
Сообщения: 119
Зарегистрирован: 18 ноя 2013, 13:23
Репутация: 25
Контактная информация:

Re: Импульсная подача СОЖ/воздуха.

Сообщение eugenysg »

Появился еще вопрос - как выполнять простейшие математические действия с сигналами? Конкретно стоит задача значение сигнала сложить/умножить/... с константой.
Из того что удалось найти:
Умножение - mult2, или для особых гурманов scale (offset мне не нужен)
Сложение - простой функции не нашел, для особых гурманов sum2 (offset мне не нужен) или тот же scale через offset
Вычитание - простой функции не нашел, понятно что можно через сложение компонентом sum2 с scale -1 сделать, но как то это не правильно
Деление - не найдено

Что я делаю не так?
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Импульсная подача СОЖ/воздуха.

Сообщение Сергей Саныч »

Вычитание - функция offset по цепи feedback.
Деление можно сделать умножением на результат функции invert.
Чудес не бывает. Бывают фокусы.
eugenysg
Опытный
Сообщения: 119
Зарегистрирован: 18 ноя 2013, 13:23
Репутация: 25
Контактная информация:

Re: Импульсная подача СОЖ/воздуха.

Сообщение eugenysg »

Сергей Саныч писал(а):Вычитание - функция offset по цепи feedback.
Честно, не понял.
Сергей Саныч писал(а):Деление можно сделать умножением на результат функции invert.
Спасибо. Но как же все запущено. Неужели нельзя было сделать простейшую функцию деления, чтож все через одно место делать то приходится.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Импульсная подача СОЖ/воздуха.

Сообщение Сергей Саныч »

eugenysg писал(а):Честно, не понял.
offset.N.update-feedback (requires a floating-point thread)

Update the feedback value by subtracting the offset from the feedback
offset.N.offset float in The offset value
offset.N.in float in The input value
offset.N.out float out The output value
offset.N.fb-in float in The feedback input value
offset.N.fb-out float out The feedback output value

Есть такой компонент - offset. У него две функции - одна выдает сумму входного значения и смещения, а вторая - (offset.N.update-feedback) разность.
eugenysg писал(а):чтож все через одно место делать то приходится.
Если рассматривать hal не как язык программирования, а как средство построения схем - многое начинает выглядеть логичней, чем на первый взгляд.
Чудес не бывает. Бывают фокусы.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Импульсная подача СОЖ/воздуха.

Сообщение nkp »

eugenysg писал(а):Но как же все запущено. Неужели нельзя было сделать простейшую функцию деления, чтож все через одно место делать то приходится.
недостающий компонент пишем сами...
вот исходники "стандартных"...
в "свежих" версиях емс пользуем halcompile вместо comp...
http://www.linuxcnc.org/docs/devel/html/hal/comp.html
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Импульсная подача СОЖ/воздуха.

Сообщение Сергей Саныч »

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

Re: Импульсная подача СОЖ/воздуха.

Сообщение Nick »

eugenysg писал(а):Неужели нельзя было сделать простейшую функцию деления
Деления нет из-за неопределенности деления на 0.

Что делать при 1/0 или 0/0?

В большинстве случаев спасает scale.
eugenysg писал(а):Сложение - простой функции не нашел, для особых гурманов sum2 (offset мне не нужен) или тот же scale через offset
Вычитание - простой функции не нашел, понятно что можно через сложение компонентом sum2 с scale -1 сделать, но как то это не правильно
sum2 - сложение и вычитание. Зачем делать отдельный компонент? Потом понадобится что-то в коде поменять, и придется половину hal переписывать, а так просто меняем один коэффициент. Плюс не надо кучу разных компонентов грузить.
Аватара пользователя
Taganrog
Мастер
Сообщения: 1238
Зарегистрирован: 15 апр 2015, 16:32
Репутация: 284
Настоящее имя: Евгений
Откуда: Брянск
Контактная информация:

Re: Импульсная подача СОЖ/воздуха.

Сообщение Taganrog »

Извеняюсь за подьем некротемы :) ,но дабы не плодить...
Пытаюсь пересесть со связки ncStudio + mach3 на LinuxCNC . Прочитав тему так и не понял получилось ли сделать таймер на несколько секунд ? В маче это делатся одной строчкой в brain editor:
Скриншот 2018-02-08 22.20.00.png (2489 просмотров) <a class='original' href='./download/file.php?id=131956&mode=view' target=_blank>Загрузить оригинал (55.2 КБ)</a>
Пример его работы:
https://www.youtube.com/watch?v=yGh1BzAi454
Появился ли за эти годы какой нибудь аналогичный компонент для linuxCnc ?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Импульсная подача СОЖ/воздуха.

Сообщение Serg »

компоненты timedelay и siggen, макс. время задержки 3×10²¹ миллиардов лет. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Taganrog
Мастер
Сообщения: 1238
Зарегистрирован: 15 апр 2015, 16:32
Репутация: 284
Настоящее имя: Евгений
Откуда: Брянск
Контактная информация:

Re: Импульсная подача СОЖ/воздуха.

Сообщение Taganrog »

спасибо. думаю такого срока достаточно :) пошел их изучать.
Аватара пользователя
Umnik
Мастер
Сообщения: 2563
Зарегистрирован: 20 июл 2014, 19:32
Репутация: 2153
Настоящее имя: Георгий
Откуда: Калуга
Контактная информация:

Re: Импульсная подача СОЖ/воздуха.

Сообщение Umnik »

Taganrog писал(а):Извеняюсь за подьем некротемы :) ,но дабы не плодить...
Пытаюсь пересесть со связки ncStudio + mach3 на LinuxCNC . Прочитав тему так и не понял получилось ли сделать таймер на несколько секунд ? В маче это делатся одной строчкой в brain editor:
Скриншот 2018-02-08 22.20.00.png
Пример его работы:
https://www.youtube.com/watch?v=yGh1BzAi454
Появился ли за эти годы какой нибудь аналогичный компонент для linuxCnc ?
И
Т.е. как я понимаю, мач согласно установленных в нем настроек сам включает насос подачи СОЖ через определенное время?
Аватара пользователя
Taganrog
Мастер
Сообщения: 1238
Зарегистрирован: 15 апр 2015, 16:32
Репутация: 284
Настоящее имя: Евгений
Откуда: Брянск
Контактная информация:

Re: Импульсная подача СОЖ/воздуха.

Сообщение Taganrog »

да. при нажатии кнопки включения начинает циклически включать релюху на 1 сек потом пауза 4 сек и т.д. по кругу до остановки кнопкой стоп.
Ответить

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