Оживление 16А20Ф3!

Токарные станки с ЧПУ.
Leo_1943
Мастер
Сообщения: 875
Зарегистрирован: 03 май 2014, 07:24
Репутация: 250
Настоящее имя: Леонид
Откуда: Харьков

Re: Оживление 16А20Ф3!

Сообщение Leo_1943 »

Распаковать не дает, пишет "Тип архива не поддерживается".
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Оживление 16А20Ф3!

Сообщение nkp »

эти архиваторы должны быть в системе:
lincurve.c.tar
(10 КБ) 282 скачивания
lincurve.c.gz
(2.29 КБ) 939 скачиваний
зы

чтоб распаковывать rar архивы в линукс:
sudo apt-get install unrar
или
sudo apt-get install unrar-free
pps
на крайний ;) случай - содержимое файла:

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

/* Autogenerated by ../bin/halcompile on Sat Jun 18 10:37:26 2016 -- do not edit */
#include "rtapi.h"
#ifdef RTAPI
#include "rtapi_app.h"
#endif
#include "rtapi_string.h"
#include "rtapi_errno.h"
#include "hal.h"
#include "rtapi_math64.h"

static int comp_id;

#ifdef MODULE_INFO
MODULE_INFO(linuxcnc, "component:lincurve:one-dimensional lookup table");
MODULE_INFO(linuxcnc, "descr:This component can be used to map any floating-point input to a\nfloating-point output. Typical uses would include linearisation of\nthermocouples, defining PID gains that vary with external factors or to\nsubstitute for any mathematical function where absolute accuracy is not\nrequired.\n\nThe component can be thought of as a 2-dimensional graph of points in (x,y)\nspace joined by straight lines. The input value is located on the x axis,\nfollowed up until it touches the line, and the output of the component is set\nto the corresponding y-value.\n\nThe (x,y) points are defined by the x-val-NN and y-val-NN parameters which need\nto be set in the HAL file using \"setp\" commands.\n\nThe maximum number if (x,y) points supported is 16.\n\nFor input values less than the x-val-00 breakpoint the y-val-00 is returned. \nFor x greater than the largest x-val-NN the yval corresponding to x-max is\nreturned (ie, no extrapolation is performed.)\n\nSample usage: loadrt lincurve count=3 personality=4,4,4 \nfor a set of three 4-element graphs.\n ");
MODULE_INFO(linuxcnc, "param:x-val-##:float:(16, 'personality'):rw:axis breakpoints:None:None");
MODULE_INFO(linuxcnc, "param:y-val-##:float:(16, 'personality'):rw:output values to be interpolated:None:None");
MODULE_INFO(linuxcnc, "pin:in_:float:0:in:The input value:None:None");
MODULE_INFO(linuxcnc, "pin:out_:float:0:out:The output value:None:None");
MODULE_INFO(linuxcnc, "pin:out-io:float:0:io:The output value, compatible with PID gains:None:None");
MODULE_INFO(linuxcnc, "author:Andy Pugh");
MODULE_INFO(linuxcnc, "license:GPL");
MODULE_INFO(linuxcnc, "funct:_:1:");
MODULE_LICENSE("GPL");
#endif // MODULE_INFO


struct __comp_state {
    struct __comp_state *_next;
    int _personality;
    hal_float_t *in_;
    hal_float_t *out_;
    hal_float_t *out_io;
    hal_float_t x_val[16];
    hal_float_t y_val[16];
    unsigned i;

};
struct __comp_state *__comp_first_inst=0, *__comp_last_inst=0;

static void _(struct __comp_state *__comp_inst, long period);
static int __comp_get_data_size(void);
static int extra_setup(struct __comp_state *__comp_inst, char *prefix, long extra_arg);
#undef TRUE
#define TRUE (1)
#undef FALSE
#define FALSE (0)
#undef true
#define true (1)
#undef false
#define false (0)

static int export(char *prefix, long extra_arg, long personality) {
    char buf[HAL_NAME_LEN + 1];
    int r = 0;
    int j = 0;
    int sz = sizeof(struct __comp_state) + __comp_get_data_size();
    struct __comp_state *inst = hal_malloc(sz);
    memset(inst, 0, sz);
    inst->_personality = personality;
    r = extra_setup(inst, prefix, extra_arg);
    if(r != 0) return r;
    personality = inst->_personality;
    r = hal_pin_float_newf(HAL_IN, &(inst->in_), comp_id,
        "%s.in", prefix);
    if(r != 0) return r;
    r = hal_pin_float_newf(HAL_OUT, &(inst->out_), comp_id,
        "%s.out", prefix);
    if(r != 0) return r;
    r = hal_pin_float_newf(HAL_IO, &(inst->out_io), comp_id,
        "%s.out-io", prefix);
    if(r != 0) return r;
    for(j=0; j < personality; j++) {
        r = hal_param_float_newf(HAL_RW, &(inst->x_val[j]), comp_id,
            "%s.x-val-%02d", prefix, j);
        if(r != 0) return r;
    }
    for(j=0; j < personality; j++) {
        r = hal_param_float_newf(HAL_RW, &(inst->y_val[j]), comp_id,
            "%s.y-val-%02d", prefix, j);
        if(r != 0) return r;
    }
    inst->i = 0.0;
    rtapi_snprintf(buf, sizeof(buf), "%s", prefix);
    r = hal_export_funct(buf, (void(*)(void *inst, long))_, inst, 1, 0, comp_id);
    if(r != 0) return r;
    if(__comp_last_inst) __comp_last_inst->_next = inst;
    __comp_last_inst = inst;
    if(!__comp_first_inst) __comp_first_inst = inst;
    return 0;
}
static int default_count=1, count=0;
char *names[16] = {0,};
RTAPI_MP_INT(count, "number of lincurve");
RTAPI_MP_ARRAY_STRING(names, 16, "names of lincurve");
static int personality[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
RTAPI_MP_ARRAY_INT(personality, 16, "personality of each lincurve");
int rtapi_app_main(void) {
    int r = 0;
    int i;
    comp_id = hal_init("lincurve");
    if(comp_id < 0) return comp_id;
    if(count && names[0]) {
        rtapi_print_msg(RTAPI_MSG_ERR,"count= and names= are mutually exclusive\n");
        return -EINVAL;
    }
    if(!count && !names[0]) count = default_count;
    if(count) {
        for(i=0; i<count; i++) {
            char buf[HAL_NAME_LEN + 1];
            rtapi_snprintf(buf, sizeof(buf), "lincurve.%d", i);
            r = export(buf, i, personality[i%16]);
            if(r != 0) break;
       }
    } else {
        int max_names = sizeof(names)/sizeof(names[0]);
        for(i=0; (i < max_names) && names[i]; i++) {
            if (strlen(names[i]) < 1) {
                rtapi_print_msg(RTAPI_MSG_ERR, "names[%d] is invalid (empty string)\n", i);
                r = -EINVAL;
                break;
            }
            r = export(names[i], i, personality[i%16]);
            if(r != 0) break;
       }
    }
    if(r) {
        hal_exit(comp_id);
    } else {
        hal_ready(comp_id);
    }
    return r;
}

void rtapi_app_exit(void) {
    hal_exit(comp_id);
}

#undef FUNCTION
#define FUNCTION(name) static void name(struct __comp_state *__comp_inst, long period)
#undef EXTRA_SETUP
#define EXTRA_SETUP() static int extra_setup(struct __comp_state *__comp_inst, char *prefix, long extra_arg)
#undef EXTRA_CLEANUP
#define EXTRA_CLEANUP() static void extra_cleanup(void)
#undef fperiod
#define fperiod (period * 1e-9)
#undef in_
#define in_ (0+*__comp_inst->in_)
#undef out_
#define out_ (*__comp_inst->out_)
#undef out_io
#define out_io (*__comp_inst->out_io)
#undef x_val
#define x_val(i) (__comp_inst->x_val[i])
#undef y_val
#define y_val(i) (__comp_inst->y_val[i])
#undef i
#define i (__comp_inst->i)
#undef personality
#define personality (__comp_inst->_personality)


#line 43 "hal/components/lincurve.comp"

FUNCTION(_){
    double f, x;
    x = in_;
    if (x >= x_val(personality-1)) {
        out_ = y_val(personality-1);
        out_io = out_;
        return;
    }
    if (x <= x_val(0)) {
        out_ = y_val(0);
        out_io = out_;
        return;
    }
    while (x > x_val(i+1)) { i++;}
    while (x < (x_val(i))) { i--;}
    
    f = (x - x_val(i))/(x_val(i+1)-x_val(i));
    out_ = y_val(i) + f * (y_val(i+1) - y_val(i));
    out_io = out_;
}

EXTRA_SETUP(){
	if (personality > 16) personality = 16;
	if (personality < 2) personality = 2;
	return 0;
}

static int __comp_get_data_size(void) { return 0; }
Leo_1943
Мастер
Сообщения: 875
Зарегистрирован: 03 май 2014, 07:24
Репутация: 250
Настоящее имя: Леонид
Откуда: Харьков

Re: Оживление 16А20Ф3!

Сообщение Leo_1943 »

Распаковал и...

sss@sss-desktop:~$ sudo comp --install lincurve.c
[sudo] password for sss:
make KBUILD_EXTRA_SYMBOLS=/usr/realtime-2.6.32-122-rtai/modules/linuxcnc/Module.symvers -C /usr/src/linux-headers-2.6.32-122-rtai SUBDIRS=`pwd` CC=gcc V=0 modules
make[1]: Вход в каталог `/usr/src/linux-headers-2.6.32-122-rtai'
CC [M] /tmp/tmpU8j5_4/lincurve.o
/tmp/tmpU8j5_4/lincurve.c:9:26: error: rtapi_math64.h: Нет такого файла или каталога
make[2]: *** [/tmp/tmpU8j5_4/lincurve.o] Ошибка 1
make[1]: *** [_module_/tmp/tmpU8j5_4] Ошибка 2
make[1]: Выход из каталога `/usr/src/linux-headers-2.6.32-122-rtai'
make: *** [modules] Ошибка 2
sss@sss-desktop:~$
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Оживление 16А20Ф3!

Сообщение nkp »

Leo_1943 писал(а):c:9:26: error: rtapi_math64.h: Нет такого файла или каталога
тут уж звиняйте :)
в 2.5 наверно еще нет файла rtapi_math64.h
rtapi_math64.h.tar
(10 КБ) 246 скачиваний
либо обновлять емс, либо попробовать подсунуть этот файл в папку
/usr/include/linuxcnc/
(под рутом)
распаковать архив rtapi_math64.h.tar
в терминале:
sudo nautilus
в открывшемся окне открыть папку /usr/include/linuxcnc/
и положить туда файл rtapi_math64.h
-------------
мало шансов ,что заработает , но все же...
Leo_1943
Мастер
Сообщения: 875
Зарегистрирован: 03 май 2014, 07:24
Репутация: 250
Настоящее имя: Леонид
Откуда: Харьков

Re: Оживление 16А20Ф3!

Сообщение Leo_1943 »

После всех рекомендаций...
не заработало

sss@sss-desktop:~$ sudo comp --install lincurve.c
[sudo] password for sss:
make KBUILD_EXTRA_SYMBOLS=/usr/realtime-2.6.32-122-rtai/modules/linuxcnc/Module.symvers -C /usr/src/linux-headers-2.6.32-122-rtai SUBDIRS=`pwd` CC=gcc V=0 modules
make[1]: Вход в каталог `/usr/src/linux-headers-2.6.32-122-rtai'
CC [M] /tmp/tmpOoDPPW/lincurve.o
In file included from /tmp/tmpOoDPPW/lincurve.c:9:
/usr/include/linuxcnc/rtapi_math64.h:21:26: error: rtapi_stdint.h: Нет такого файла или каталога
make[2]: *** [/tmp/tmpOoDPPW/lincurve.o] Ошибка 1
make[1]: *** [_module_/tmp/tmpOoDPPW] Ошибка 2
make[1]: Выход из каталога `/usr/src/linux-headers-2.6.32-122-rtai'
make: *** [modules] Ошибка 2
sss@sss-desktop:~$


Буду переставлять на более высокую версию
Leo_1943
Мастер
Сообщения: 875
Зарегистрирован: 03 май 2014, 07:24
Репутация: 250
Настоящее имя: Леонид
Откуда: Харьков

Re: Оживление 16А20Ф3!

Сообщение Leo_1943 »

Всем доброго дня!
Была такая тема,не нашёл.

Суть: умер Тахо на двигателе, но помню- можно выход месы аналоговый завести вместо Тахо.

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

Re: Оживление 16А20Ф3!

Сообщение nkp »

Duhas
Мастер
Сообщения: 1961
Зарегистрирован: 10 окт 2015, 23:25
Репутация: 285
Настоящее имя: Андрей
Откуда: Красноярск
Контактная информация:

Re: Оживление 16А20Ф3!

Сообщение Duhas »

Какой движек? у меня лежит пара болгар на опыты, тахо мне не нужны с них... правда в какой они состоянии тоже вопрос.
Аватара пользователя
N1X
Мастер
Сообщения: 3653
Зарегистрирован: 16 фев 2015, 21:19
Репутация: 1646
Настоящее имя: Владимир
Откуда: Беларусь, Гомель
Контактная информация:

Re: Оживление 16А20Ф3!

Сообщение N1X »

Регулирование ухудшится... А чистка коллектора родного Тахо не помогла? Или сопротивление на ламелях скачет?
Leo_1943
Мастер
Сообщения: 875
Зарегистрирован: 03 май 2014, 07:24
Репутация: 250
Настоящее имя: Леонид
Откуда: Харьков

Re: Оживление 16А20Ф3!

Сообщение Leo_1943 »

N1X писал(а):Регулирование ухудшится... А чистка коллектора родного Тахо не помогла? Или сопротивление на ламелях скачет?
Умер вашпе, сопротивление бесконечность.
Аватара пользователя
N1X
Мастер
Сообщения: 3653
Зарегистрирован: 16 фев 2015, 21:19
Репутация: 1646
Настоящее имя: Владимир
Откуда: Беларусь, Гомель
Контактная информация:

Re: Оживление 16А20Ф3!

Сообщение N1X »

Просто спрошу, чтобы исключить недоразумение: сопротивление между ламелями коллектора, или на выходе?
Leo_1943
Мастер
Сообщения: 875
Зарегистрирован: 03 май 2014, 07:24
Репутация: 250
Настоящее имя: Леонид
Откуда: Харьков

Re: Оживление 16А20Ф3!

Сообщение Leo_1943 »

Между ламелями. Уже запустил через Месу, все замечательно. Можно и без Тахо работать.
Аватара пользователя
N1X
Мастер
Сообщения: 3653
Зарегистрирован: 16 фев 2015, 21:19
Репутация: 1646
Настоящее имя: Владимир
Откуда: Беларусь, Гомель
Контактная информация:

Re: Оживление 16А20Ф3!

Сообщение N1X »

Никаких проблем не вылезло? По идее же задержка в цепи ОС увеличилась...
Leo_1943
Мастер
Сообщения: 875
Зарегистрирован: 03 май 2014, 07:24
Репутация: 250
Настоящее имя: Леонид
Откуда: Харьков

Re: Оживление 16А20Ф3!

Сообщение Leo_1943 »

На доли секунды, я не заметил.
Аватара пользователя
N1X
Мастер
Сообщения: 3653
Зарегистрирован: 16 фев 2015, 21:19
Репутация: 1646
Настоящее имя: Владимир
Откуда: Беларусь, Гомель
Контактная информация:

Re: Оживление 16А20Ф3!

Сообщение N1X »

Главное, что привод не заметил )
Полезный опыт!
agt
Новичок
Сообщения: 17
Зарегистрирован: 06 окт 2016, 18:06
Репутация: 0
Настоящее имя: Александр Геннадьевич
Контактная информация:

Re: Оживление 16А20Ф3!

Сообщение agt »

Leo_1943 писал(а):На доли секунды, я не заметил.
Извините что вмешиваюсь.Хотел бы пообщаться об модернизации 16А20. Купили осевые привода GD35 (по вашей рекомендации).Уже две недели пытаюсь их как-то привязать на Размеровские двигатели. Первая проблема на приводе нет понятия сигнала ON (разблокировка,работа),можно только с пуском вперёд или назад.Во вторых нелинейная характеристика Uвх (+-10В) и вых частоты.На Uзад. меньше 0,2 вольта почти не реагирует ,потом обороты очень резко возрастают .Хотелось бы как нибудь проконсультироваться .Судя по фото вы как-то сумели привязать GD100, а они ещё тупее ,судя по описанию.
Leo_1943
Мастер
Сообщения: 875
Зарегистрирован: 03 май 2014, 07:24
Репутация: 250
Настоящее имя: Леонид
Откуда: Харьков

Re: Оживление 16А20Ф3!

Сообщение Leo_1943 »

Есть сигнал ON, даете к примеру вперёд, остальное сделает полярность задания. Можно сделать сигнал Готовность.Почитайте внимательно параметры, я неделю назад два таких же взамен Размера поставил. Ровно три дня от начала до детали.
agt
Новичок
Сообщения: 17
Зарегистрирован: 06 окт 2016, 18:06
Репутация: 0
Настоящее имя: Александр Геннадьевич
Контактная информация:

Re: Оживление 16А20Ф3!

Сообщение agt »

Если даю вперед ,то он и едет вперед, если назад -то назад .Измерительной системе это не нравиться ,выбивает по рассогласованию.Но основная проблема ни в этом.Главное он не едет на маленьких подачах .Режим Р00.00-3 (векторное с датчиком) и ещё на входе AI3 всегда торчит 0,1В если смотреть Р17.21.Пробовал смещать ЦАПом ЧПУ и параметром Р05.43 все равно получается не симметричное задание .Подозреваю что у меня просто неисправные привода ( 4 КВт ) .Кстати третий привод для шпинделя (11 КВт ) ведет себя нормально.Буду признателен если поможете подбором параметров.
Leo_1943
Мастер
Сообщения: 875
Зарегистрирован: 03 май 2014, 07:24
Репутация: 250
Настоящее имя: Леонид
Откуда: Харьков

Re: Оживление 16А20Ф3!

Сообщение Leo_1943 »

Какое ЧПУ? У меня до включения слежения показания 0.4, 0.7 по Х и Z соответственно. После включения слежения, и приводов все около нуля- без движения. ЧПУ не выбивает на ходах до 10 м/мин. С параметрами дистанционно тяжело помочь. Во-первых как подключен энкодер? Количество меток? И т.п.?
agt
Новичок
Сообщения: 17
Зарегистрирован: 06 окт 2016, 18:06
Репутация: 0
Настоящее имя: Александр Геннадьевич
Контактная информация:

Re: Оживление 16А20Ф3!

Сообщение agt »

ЧПУ -FMS 3000. Энкодеры взади двигателя ЛИР 0,5 ПИ 2500 с одной меткой.В принципе я добился чтобы при 0 рассогл. привод стоял. Но даю маховиком задание по 0,01-привод начинает импульсно дергаться где-то от 0,07 .Потом от 0,1 вроде нормально двигается , а больше 0,25 он уже едет с подачей примерно 400 мм/мин.Привязать измерительную при таких характеристиках практически невозможно.Пробовал параметрами привода (Ki,Kd)пусковая частота -0,частота останова 0.Различные варианты пуска и останова двигателя - становиться только хуже.
Ответить

Вернуться в «Токарные станки»