mpg_go

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

mpg_go

Сообщение nkp »

к вопросу управления штурвалом передвижений по программе...
накидал такую рыбу:
(для блок-схемы заюзался софт,имитирующий рисование от руки,притом - наверно стояла галка "исп.левую руку"))
Выделение_072.png (4545 просмотров) <a class='original' href='./download/file.php?id=144736&sid=0eaf10f377f0d468ddbda031861622ab&mode=view' target=_blank>Загрузить оригинал (1017.75 КБ)</a>
-----------------------
так как не оказалось под рукой железного mpg , его работу делал pyvcp-виджет...
https://www.youtube.com/watch?v=KciNb_e ... e=youtu.be
=================
пока не рассчитывается единичный шаг(его длина) - (выставлено константно)...
по идее должно-будет вычисляться от величины подачи (если медленно крутишь) ,и от скорости вращения штурвала(если быстро крутишь)
------------
компонент mpg_go смотрит - крутим ли мы штурвал и если крутим,то в какую сторону...

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

/* sudo halcompile --install mpg_go.comp */
component mpg_go ;

pin in float in;
pin out float out;
pin out bit tick; //true if we have a change in couns

variable double old;

function _;
license "GPL";
;;
#include "rtapi_math.h"

FUNCTION(_) {

double tmp = in;
if(!out) out = 1;

if(tmp != old) tick = 1;
else tick = 0;

if(tmp == old) return;

if(tmp < old) out = -1.0;
else out = 1.0;

old = tmp;
}
еще в Hal используется компонент dmux2(от\подключает счетчик mpg)

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

/* sudo halcompile --install demux2.comp */

component demux2 "A demultiplexer to select from one of two outputs to connect to the input";

description " This component allows you to connect a single input to one of several outputs. \
This version will connect only one of two outputs." ; 
author "Marius D. Liebenberg";

//option singleton yes;
//option default_count = 1;
//option userspace yes;

// Input Pins
pin in float in0 "Any float input value";
pin in bit sel "If HIGH the out1 will be connect to in0, else the out 0 will be connected ";

// Output Pins
pin out float out0 "Follows the value of in0 if sel is FALSE";
pin out float out1 "Follows the value of in0 if sel is TRUE";

// Parameters
// Global Variables

function _;
license "GPL";
;;
#include "rtapi_math.h"
FUNCTION(_) {
if(sel) out1 = in0;
else out0 = in0;
}
код в Hal:

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

####################################### MPG_go
loadrt mpg_go
addf mpg-go.0 servo-thread 

loadrt demux2
addf demux2.0 servo-thread 
	
loadrt oneshot
addf oneshot.0 servo-thread 

loadrt timedelay count=1
addf timedelay.0 servo-thread 

loadrt mux2 count=2
addf mux2.0 servo-thread 
addf mux2.1 servo-thread 

loadrt mult2 count=1
addf mult2.0 servo-thread 

net mxout mult2.0.in0  mux2.0.out
net mgo   mult2.0.in1  mpg-go.0.out
    `
net oout  oneshot.0.out timedelay.0.in
setp oneshot.0.width 0.01

net slon  oneshot.0.in   mpg-go.0.tick

setp mux2.0.in0 0
setp mux2.0.in1 1

net mx1  mux2.1.in1   mult2.0.out
setp mux2.1.in0 1

setp timedelay.0.on-delay 0.001
setp timedelay.0.off-delay 0

net lon  timedelay.0.out mux2.0.sel

net aset mux2.1.out  motion.adaptive-feed
в postgui:

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

net md  pyvcp.mode-button demux2.0.sel  mux2.1.sel


net dm  demux2.0.out1  mpg-go.0.in

net wl  demux2.0.in0 pyvcp.wheel
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: mpg_go

Сообщение nkp »

работать с реверсом конечно будет емс ,в которой есть эта возможность реверса...
идем сюда за исходниками:
https://github.com/robEllenberg/linuxcn ... un-master3

распаковываем допустим в linuxcnc-reverse

устанавливаем

> cd linuxcnc-reverse/src
> ./autogen.sh
> ./configure
> make
> sudo make setuid

(если ругается - удовлетворить все зависимости)
==================
если нам нужно установить свои компоненты именно в эту версию,то делаем так:
в терминале(из папки установки) :
. ./scripts/rip-environment

затем:

halcompile --install demux2.comp
(без sudo)

файл demux2.comp должен лежать в папке linuxcnc-reverse
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: mpg_go

Сообщение nkp »

адаптивный режим работы (а с ним и возможность реверса) активируется м-кодом M52 P1 (можно просто M52)
дезактивируется - M52 P0
можно прописать в коды по умолчанию:
в Ini :
RS274NGC_STARTUP_CODE = M52 P1
D.L.
Мастер
Сообщения: 474
Зарегистрирован: 25 авг 2018, 10:11
Репутация: 152
Настоящее имя: Дмитрий
Откуда: Киров
Контактная информация:

Re: mpg_go

Сообщение D.L. »

nkp, а с userspace(--with-realtime=uspace) пробовали собирать?
Работает или нет(Using POSIX non-realtime)?
D.L.
Мастер
Сообщения: 474
Зарегистрирован: 25 авг 2018, 10:11
Репутация: 152
Настоящее имя: Дмитрий
Откуда: Киров
Контактная информация:

Re: mpg_go

Сообщение D.L. »

Разобрался с "Using POSIX non-realtime", помогла замена строки в uspace_rtapi_app.cc:

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

if(geteuid() != 0 || harden_rt() < 0)
на

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

if(euid != 0 || harden_rt() < 0)
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: mpg_go

Сообщение nkp »

коль возился с пультом - решил проверить и эту давнюю штуку
как бы упростил - решил просто брать скорость вращения MPG и подавать ее на
adaptivefeed,
но стандартный ddt не захотел сотрудничать, либо (что вероятно) - я его "не умею готовить" :)
увеличил время выборки - заработало:

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

component ddt10 ;
pin in float in;
pin out float out;
param rw float delay = 0.1;
variable float old;
variable float timer = 0.0;
 
function _;
license "GPL";
;;
timer = timer+fperiod;
if(timer < delay) return;
float tmp = in;
out = (tmp - old) / timer;
old = tmp;
timer = 0;
hal

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

loadrt mpg_go
addf   mpg-go.0 servo-thread 

loadrt ddt10
addf   ddt10.0 servo-thread


loadrt mux2 count=2
addf mux2.0 servo-thread 


loadrt mult2   count=2
addf mult2.0   servo-thread 
addf mult2.1   servo-thread

loadrt conv_s32_float 
addf   conv-s32-float.0  servo-thread

loadusr -W  xhc-hb04 -H -I cfg.cfg -s 3
net count:mpg  conv-s32-float.0.in     xhc-hb04.jog.counts
net conv:s32:float      mult2.0.in1    conv-s32-float.0.out 
setp     mult2.0.in0    0.004

net derivate:mpg        mult2.0.out            ddt10.0.in 

net mxout mult2.1.in0   ddt10.0.out 
net mgo   mult2.1.in1   mpg-go.0.out

net    mux:in0          mux2.0.in1  mult2.1.out
setp   mux2.0.in0  1
net    enable:mpg:go    mux2.0.sel  xhc-hb04.jog.enable-spindle-override 
  
net aset                mux2.0.out  motion.adaptive-feed
теперь величина подачи зависит от скорости вращения mpg , хотя все еще напрашивается какой то фильтр
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: mpg_go

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

nkp писал(а): решил проверить и эту давнюю штуку
Всё нормально работает на стандартных hal-компонентах
АКПП для РГИ :) #1
Чудес не бывает. Бывают фокусы.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: mpg_go

Сообщение nkp »

Сергей Саныч писал(а):Всё нормально работает на стандартных hal-компонентах
это немного другая история :)
там используется стандартный компонент энкодера...
тут юсб китайский пульт с mpg
Pont
Кандидат
Сообщения: 65
Зарегистрирован: 27 фев 2016, 19:56
Репутация: 4
Настоящее имя: Алексей
Откуда: Н.Новгород
Контактная информация:

Re: mpg_go

Сообщение Pont »

А что это за синтаксис такой?
????????????
net mux:in0 mux2.0.in1 mult2.1.out
????????????
Простите мне мою неграмотность.
Любая задача имеет как минимум два решения!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: mpg_go

Сообщение nkp »

Pont писал(а):Простите мне мою неграмотность.
наименование сигнала должно быть оригинально(не повторяться)
кто нам мешает вот таким образом обозвать сигнал? :)
Ответить

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