Страница 8 из 13

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 30 сен 2016, 16:51
Валерий
Работает отлично как вы подсказали.
Вот как бы сделать компонент на подобия accel,только чтобы перебирал не три ступени 11,14,17,а
каждую с 1 по 18. Это нужно для координаты X и Z.
Например на галетнике набрали шестую ступень нажали кнопку Пуск должны включится первая ступень потом задержка
вторая ступень потом задержка 3 ступень потом задержка 4 ступень потом задержка 5 ступень потом задержка 0.5 сек.
и 6 ну и аналогично другие ступени.Задержку наверное можно сделать в ладаре как на планшайбу.
Как я понял из описания ступени должны включатся всегда последовательно
с первой и т. д.

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 30 сен 2016, 17:58
Валерий
Вот пульт от станка.

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 30 сен 2016, 18:49
Валерий
UAVpilot писал(а):и будет тебе пример на C. :)
Компилить так-же.
Где?
Как?

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 30 сен 2016, 21:55
Serg
Валерий писал(а):Где?
Рядом с comp файлом.
Валерий писал(а):Как?
Вроде ясно написал: так-же.

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 30 сен 2016, 22:14
Валерий
valera@valera:~$ halcompile --preprocessor mux2_s32.comp
halcompile: Build, compile, and install LinuxCNC HAL components

Usage:
halcompile [--compile|--preprocess|--document|--view-doc] compfile...
[sudo] halcompile [--install|--install-doc] compfile...
halcompile --compile --userspace cfile...
[sudo] halcompile --install --userspace cfile...
[sudo] halcompile --install --userspace pyfile...
halcompile --print-modinc

valera@valera:~$

Вот что пишет в терминале

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 30 сен 2016, 22:21
Serg
Валерий писал(а):valera@valera:~$ halcompile --preprocessor mux2_s32.comp

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

halcompile --preprocess mux2_s32.comp

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 30 сен 2016, 22:34
Валерий
Ок!
Спасибо все понял

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 01 окт 2016, 08:41
nkp
Валерий писал(а):Как я понял из описания ступени должны включатся всегда последовательно с первой и т. д.
а переход на низшие ступени?
тоже по такому же принципу: 6-5-4-3-2-1 с задержками 0.5с ??

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 01 окт 2016, 10:56
Валерий
Да.При установочных перемещениях (ручном)
В универсальном(автоматический) режиме выбрано 4 скорости
1 ступень,7,11,18 ступень коробки подач.Но это пока не надо.

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 01 окт 2016, 21:15
nkp

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

/* sudo halcompile --install accelXZ.comp */
component accelXZ "1516F1";

pin in s32 in ;
pin out s32 out ;
pin out bit tstart ;
pin  in bit tstop ;

function _;
license "GPL";
variable int  old_in = 0;
;;
FUNCTION(_) {
if(in > old_in){
  if(in > old_in && tstart==0){
    tstart = 1;
    return ;
  }
  else{
    if (tstop){
      old_in++ ;
      out = old_in;
      tstart = 0;
    }
    else{
      return ;
    }
  }
} 
if(in < old_in){   
  if(in < old_in && tstart==0){
    tstart = 1;
    return ;
  }
  else{
    if (tstop){
      old_in-- ;
      out = old_in;
      tstart = 0;
    }
    else{
      return ;
    }
  }
}  
}

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

############################################################# accelXZ
addf timedelay.3 servo-thread
setp timedelay.3.on-delay   2
setp timedelay.3.off-delay  0

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

net tstartXZ   accelXZ.0.tstart  timedelay.3.in
net tstopXZ    timedelay.3.out   accelXZ.0.tstop

net x_accel_in   accelXZ.0.in   wsum.1.sum
net x_accel_out  accelXZ.0.out  classicladder.0.s32in-01
####################################################################

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 01 окт 2016, 21:24
nkp
этот компонент (выше) набросал с установленным значением timedelay.off-delay равным 0(ноль)
если так "можно" (в смысле - будет уверенно и безопасно работать компонент timedelay:

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

component timedelay "The equivalent of a time-delay relay";

pin in bit in;
pin out bit out """Follows the value of \\fBin\\fR after applying the delays
\\fBon-delay\\fR and \\fBoff-delay\\fR.""";

pin in float on-delay = 0.5 """The time, in seconds, for which \\fBin\\fR must be
\\fBtrue\\fR before \\fBout\\fR becomes \\fBtrue\\fR""";
pin in float off-delay = 0.5 """The time, in seconds, for which \\fBin\\fR must be
\\fBfalse\\fR before \\fBout\\fR becomes \\fBfalse\\fR""";

pin out float elapsed "Current value of the internal timer";
variable double timer;

function _;

license "GPL";
author "Jeff Epler, based on works by Stephen Wille Padnos and John Kasunich";
;;
hal_bit_t in_ = in;
if(in_ != out) {
    timer += fperiod;
    elapsed = timer;
    if(in_) {
        if(timer >= on_delay) {
            out = 1;
            timer = 0.0;
        }
    } else {
        if(timer >= off_delay) {
            out = 0;
            timer = 0.0;
        }
    }
} else {
    timer = 0.0;
}
то можно оптимизировать код компонента accel ;)

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 01 окт 2016, 22:19
Валерий
Что то опять не пойму accel нормально компилирует,а accelXZ не хочет.

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 01 окт 2016, 22:24
nkp
проверил - всё "работает"
вот сам файл
accelXZ.comp.tar
(10 КБ) 263 скачивания

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 01 окт 2016, 22:35
Валерий
Ваш пошел,может мне текстовый редактор сменить у меня Leafpad 0.8.18.1
А у вас?

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 01 окт 2016, 22:36
nkp
gedit

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 01 окт 2016, 23:14
Валерий
Работает.Задержками в железе по играем там видно будет.
Плату скоро доделаю, на выходе реле будут включать муфты.
Сейчас дальше буду разбиратся с кнопками,галетник еще есть,джойстик на право-лево к центру от центра.
Не до конца еще не понял как должны работать координаты XZ надо перечитать еще раз эту документацию.
Вам большое спасибо,много я познал за эти дни.
Будем продолжать.

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 02 окт 2016, 09:11
nkp
nkp писал(а):Фукцию timer0.5 можно встроить в компонент

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

/* sudo halcompile --install accelXZ.comp */
component accelXZ "1516F1";

pin in float delay = 0.5;
pin in s32 in ;
pin out s32 out ;

function _;
license "GPL";
variable int    tstart;
variable int    old_in;
variable double timer;
;;
FUNCTION(_) {
if(in > old_in){
  if(in > old_in && !tstart){
    tstart = 1;
  }else{
    timer += fperiod;
    if(timer >= delay) {
      timer = 0.0;
      old_in++ ;
      out = old_in;
      tstart = 0;      
    }else{
      return ;
    }
  }
} 
if(in < old_in){   
  if(in < old_in && !tstart){
    tstart = 1;
  }else{
    timer += fperiod;
    if(timer >= delay) {
      timer = 0.0;
      old_in-- ;
      out = old_in;
      tstart = 0;  
    }else{
      return ;
    }
  }
}  
}
это то же самое ,но с "встроенным" таймером))
не надо прописывать в хал компонент timedelay...
установка по умолчанию полсекунды,но "выведен" пин accelXZ.0.delay ,которым можно из хал корректировать
задержку без перекомпиляции (setp accelXZ.0.delay 2 )

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

############################################################# accelXZ
loadrt accelXZ 
addf accelXZ.0 servo-thread

net x_accel_in   accelXZ.0.in   wsum.1.sum
net x_accel_out  accelXZ.0.out  classicladder.0.s32in-01
####################################################################

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 02 окт 2016, 09:24
Валерий
Мне кажется и в accel надо сделать задержки на все муфты 0.5с. а на 11,14,17 2сек.разгон-торможение оставить как есть.
Тогда в ладаре задержки убрать что ли?

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 02 окт 2016, 09:28
nkp
accel надо тоже пробовать оптимизировть с учетом встроенного таймера ;)
пока не смотрел

Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач

Добавлено: 02 окт 2016, 10:13
nkp
попробовал:

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

/* sudo halcompile --install accel.comp */
component accel "1516F1";

pin in s32 in ;
pin out s32 out ;
pin in float delay = 1.0;

function _;
license "GPL";
variable int  old_in = 0;
variable double timer;
;;
FUNCTION(_) {
if (old_in > in){
  if ( old_in >= 11 &&  old_in <14 ){
     if (in < 11){
        out = 11;
        timer += fperiod;
        if(timer >= delay) {
          timer = 0.0;
          out = in;
          old_in = in;
          return ;
        }
        else{
          return ;
        }
      } 
       out = in;
       old_in = in;   
  }
  else  if (old_in >= 14 &&  old_in < 17 ){
     if(in < 14){
        out = 14;
        timer += fperiod;
        if(timer >= delay) {
          timer = 0.0;
          out = in;
          old_in = 11;
          return ;
        }
        else{
          return ;
        }         
     }
     out = in;
     old_in = in; 
  }
  else  if (old_in >= 17 ){
     if (in <17){
        out = 17;
        timer += fperiod;
        if(timer >= delay) {
          timer = 0.0;
          old_in = 14;
          return ;
        }
        else{
          return ;
        }         
    }
    out =  in;
    old_in = in;
  } 
  else {
     out = in;
     old_in = in;
  }
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if (in > old_in){
  if (in >= 11 &&  in < 14 ){
     if (old_in<11){
        out = 11;
        timer += fperiod;
        if(timer >= delay) {
          timer = 0.0;
          out = in;
          old_in = in;
       return ;
       }
     else{
       return ;
     }        
     }
     out = in; 
     old_in = in;
  }
  else  if (in >= 14 &&  in < 17 ){
     if(old_in <11){
        out = 11;
        timer += fperiod;
        if(timer >= delay) {
          timer = 0.0;
          out = 11;
          old_in = 12;
          return ;
        }
        else{
          return ;
        }         
     }
     if (old_in<14 && old_in>11) {
        out = 14;
        timer += fperiod;
        if(timer >= delay) {
          timer = 0.0;
          out = in;
          old_in = in;
          return ;
        }
        else{
          return ;
        }       
     }
     out = in; 
     old_in = in;
  }
  else  if (in >= 17 ){
     if (old_in<11){
        out = 11;
        timer += fperiod;
        if(timer >= delay) {
          timer = 0.0;
          out = 11;
          old_in = 12;
          return ;
        }
        else{
          return ;
        }        
     }
     if (old_in<14 && old_in>11) {
        out = 14;
        timer += fperiod;
        if(timer >= delay) {
          timer = 0.0;
          out = 14;
          old_in = 15;
          return ;
        }
        else{
          return ;
        }
     }
     if (old_in>14) {
        out = 17;
        timer += fperiod;
        if(timer >= delay) {
          timer = 0.0;
          out = in;
          old_in = in;
          return ;
        }
        else{
          return ;
        }
     }     
     out = in; 
     old_in = in;
  }
  else {
     out = in;
     old_in = in;
  }
}
}

убрать timedelay из хал