EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
-
Валерий
- Мастер
- Сообщения: 241
- Зарегистрирован: 21 июл 2013, 21:01
- Репутация: 2
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
Работает отлично как вы подсказали.
Вот как бы сделать компонент на подобия accel,только чтобы перебирал не три ступени 11,14,17,а
каждую с 1 по 18. Это нужно для координаты X и Z.
Например на галетнике набрали шестую ступень нажали кнопку Пуск должны включится первая ступень потом задержка
вторая ступень потом задержка 3 ступень потом задержка 4 ступень потом задержка 5 ступень потом задержка 0.5 сек.
и 6 ну и аналогично другие ступени.Задержку наверное можно сделать в ладаре как на планшайбу.
Как я понял из описания ступени должны включатся всегда последовательно
с первой и т. д.
Вот как бы сделать компонент на подобия accel,только чтобы перебирал не три ступени 11,14,17,а
каждую с 1 по 18. Это нужно для координаты X и Z.
Например на галетнике набрали шестую ступень нажали кнопку Пуск должны включится первая ступень потом задержка
вторая ступень потом задержка 3 ступень потом задержка 4 ступень потом задержка 5 ступень потом задержка 0.5 сек.
и 6 ну и аналогично другие ступени.Задержку наверное можно сделать в ладаре как на планшайбу.
Как я понял из описания ступени должны включатся всегда последовательно
с первой и т. д.
- Вложения
-
- 1516F1_30_09_2016.zip
- (20.47 КБ) 284 скачивания
-
- accel.tar.gz
- (687 байт) 921 скачивание
-
Валерий
- Мастер
- Сообщения: 241
- Зарегистрирован: 21 июл 2013, 21:01
- Репутация: 2
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
Вот пульт от станка.
-
Валерий
- Мастер
- Сообщения: 241
- Зарегистрирован: 21 июл 2013, 21:01
- Репутация: 2
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
Где?UAVpilot писал(а):и будет тебе пример на C.
Компилить так-же.
Как?
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
Рядом с 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:~$
Вот что пишет в терминале
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 с эл.магн. муфтами коробки скоростей и подач
Валерий писал(а):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 с эл.магн. муфтами коробки скоростей и подач
а переход на низшие ступени?Валерий писал(а):Как я понял из описания ступени должны включатся всегда последовательно с первой и т. д.
тоже по такому же принципу: 6-5-4-3-2-1 с задержками 0.5с ??
-
Валерий
- Мастер
- Сообщения: 241
- Зарегистрирован: 21 июл 2013, 21:01
- Репутация: 2
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
Да.При установочных перемещениях (ручном)
В универсальном(автоматический) режиме выбрано 4 скорости
1 ступень,7,11,18 ступень коробки подач.Но это пока не надо.
В универсальном(автоматический) режиме выбрано 4 скорости
1 ступень,7,11,18 ступень коробки подач.Но это пока не надо.
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
Код: Выделить всё
/* 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 с эл.магн. муфтами коробки скоростей и подач
этот компонент (выше) набросал с установленным значением timedelay.off-delay равным 0(ноль)
если так "можно" (в смысле - будет уверенно и безопасно работать компонент timedelay:
то можно оптимизировать код компонента accel 
если так "можно" (в смысле - будет уверенно и безопасно работать компонент 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;
}-
Валерий
- Мастер
- Сообщения: 241
- Зарегистрирован: 21 июл 2013, 21:01
- Репутация: 2
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
Что то опять не пойму accel нормально компилирует,а accelXZ не хочет.
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
проверил - всё "работает"
вот сам файл
вот сам файл
-
Валерий
- Мастер
- Сообщения: 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 надо перечитать еще раз эту документацию.
Вам большое спасибо,много я познал за эти дни.
Будем продолжать.
Плату скоро доделаю, на выходе реле будут включать муфты.
Сейчас дальше буду разбиратся с кнопками,галетник еще есть,джойстик на право-лево к центру от центра.
Не до конца еще не понял как должны работать координаты XZ надо перечитать еще раз эту документацию.
Вам большое спасибо,много я познал за эти дни.
Будем продолжать.
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
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 с эл.магн. муфтами коробки скоростей и подач
accel надо тоже пробовать оптимизировть с учетом встроенного таймера
пока не смотрел
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: EMC2+1516Ф1 с эл.магн. муфтами коробки скоростей и подач
попробовал:
убрать timedelay из хал
Код: Выделить всё
/* 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;
}
}
}