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

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Валерий
Мастер
Сообщения: 241
Зарегистрирован: 21 июл 2013, 21:01
Репутация: 2
Контактная информация:

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

Сообщение Валерий »

Работает отлично как вы подсказали.
Вот как бы сделать компонент на подобия accel,только чтобы перебирал не три ступени 11,14,17,а
каждую с 1 по 18. Это нужно для координаты X и Z.
Например на галетнике набрали шестую ступень нажали кнопку Пуск должны включится первая ступень потом задержка
вторая ступень потом задержка 3 ступень потом задержка 4 ступень потом задержка 5 ступень потом задержка 0.5 сек.
и 6 ну и аналогично другие ступени.Задержку наверное можно сделать в ладаре как на планшайбу.
Как я понял из описания ступени должны включатся всегда последовательно
с первой и т. д.
Вложения
1516F1_30_09_2016.zip
(20.47 КБ) 284 скачивания
Снимок.png (1726 просмотров) <a class='original' href='./download/file.php?id=91522&mode=view' target=_blank>Загрузить оригинал (231 КБ)</a>
accel.tar.gz
(687 байт) 921 скачивание
Валерий
Мастер
Сообщения: 241
Зарегистрирован: 21 июл 2013, 21:01
Репутация: 2
Контактная информация:

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

Сообщение Валерий »

Вот пульт от станка.
Вложения
1516ф1 (1719 просмотров) <a class='original' href='./download/file.php?id=91547&mode=view' target=_blank>Загрузить оригинал (107.62 КБ)</a>
1516ф1
Начал делать платы развязки на оптронах<br />24 входа\24 выхода (1715 просмотров) <a class='original' href='./download/file.php?id=91548&mode=view' target=_blank>Загрузить оригинал (3.91 МБ)</a>
Начал делать платы развязки на оптронах
24 входа\24 выхода
Валерий
Мастер
Сообщения: 241
Зарегистрирован: 21 июл 2013, 21:01
Репутация: 2
Контактная информация:

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

Сообщение Валерий »

UAVpilot писал(а):и будет тебе пример на C. :)
Компилить так-же.
Где?
Как?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Валерий писал(а):Где?
Рядом с comp файлом.
Валерий писал(а):Как?
Вроде ясно написал: так-же.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Валерий
Мастер
Сообщения: 241
Зарегистрирован: 21 июл 2013, 21:01
Репутация: 2
Контактная информация:

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

Сообщение Валерий »

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:~$

Вот что пишет в терминале
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Валерий писал(а):valera@valera:~$ halcompile --preprocessor mux2_s32.comp

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

halcompile --preprocess mux2_s32.comp
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Валерий
Мастер
Сообщения: 241
Зарегистрирован: 21 июл 2013, 21:01
Репутация: 2
Контактная информация:

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

Сообщение Валерий »

Ок!
Спасибо все понял
Вложения
mux2_s32.c
(4.01 КБ) 863 скачивания
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

Валерий писал(а):Как я понял из описания ступени должны включатся всегда последовательно с первой и т. д.
а переход на низшие ступени?
тоже по такому же принципу: 6-5-4-3-2-1 с задержками 0.5с ??
Валерий
Мастер
Сообщения: 241
Зарегистрирован: 21 июл 2013, 21:01
Репутация: 2
Контактная информация:

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

Сообщение Валерий »

Да.При установочных перемещениях (ручном)
В универсальном(автоматический) режиме выбрано 4 скорости
1 ступень,7,11,18 ступень коробки подач.Но это пока не надо.
Вложения
www.youtube.com/watch?v=9dNyFieILVU<br />Вот видео,но такой задачи пока нет.<br />Надо сделать в ручном режиме (1641 просмотр) <a class='original' href='./download/file.php?id=91630&mode=view' target=_blank>Загрузить оригинал (4.06 МБ)</a>
www.youtube.com/watch?v=9dNyFieILVU
Вот видео,но такой задачи пока нет.
Надо сделать в ручном режиме
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение 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
####################################################################
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение 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 ;)
Валерий
Мастер
Сообщения: 241
Зарегистрирован: 21 июл 2013, 21:01
Репутация: 2
Контактная информация:

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

Сообщение Валерий »

Что то опять не пойму accel нормально компилирует,а accelXZ не хочет.
Вложения
Снимок.png (1610 просмотров) <a class='original' href='./download/file.php?id=91684&mode=view' target=_blank>Загрузить оригинал (206.3 КБ)</a>
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

проверил - всё "работает"
вот сам файл
accelXZ.comp.tar
(10 КБ) 259 скачиваний
Валерий
Мастер
Сообщения: 241
Зарегистрирован: 21 июл 2013, 21:01
Репутация: 2
Контактная информация:

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

Сообщение Валерий »

Ваш пошел,может мне текстовый редактор сменить у меня Leafpad 0.8.18.1
А у вас?
Валерий
Мастер
Сообщения: 241
Зарегистрирован: 21 июл 2013, 21:01
Репутация: 2
Контактная информация:

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

Сообщение Валерий »

Работает.Задержками в железе по играем там видно будет.
Плату скоро доделаю, на выходе реле будут включать муфты.
Сейчас дальше буду разбиратся с кнопками,галетник еще есть,джойстик на право-лево к центру от центра.
Не до конца еще не понял как должны работать координаты XZ надо перечитать еще раз эту документацию.
Вам большое спасибо,много я познал за эти дни.
Будем продолжать.
Вложения
Снимок.png (1591 просмотр) <a class='original' href='./download/file.php?id=91715&mode=view' target=_blank>Загрузить оригинал (178.26 КБ)</a>
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение 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
####################################################################
Валерий
Мастер
Сообщения: 241
Зарегистрирован: 21 июл 2013, 21:01
Репутация: 2
Контактная информация:

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

Сообщение Валерий »

Мне кажется и в accel надо сделать задержки на все муфты 0.5с. а на 11,14,17 2сек.разгон-торможение оставить как есть.
Тогда в ладаре задержки убрать что ли?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

accel надо тоже пробовать оптимизировть с учетом встроенного таймера ;)
пока не смотрел
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение 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 из хал
Ответить

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