Ввод в эксплуатацию ЧПУ системы на основе контроллера Kflop.

KFlop, KStep, KAnalog, KMotion...

Имеете ли вы контроллер Kflop? :-)

Можно выбрать до 1 варианта ответа

 
 
Результаты голосования

fishman
Кандидат
Сообщения: 83
Зарегистрирован: 14 сен 2015, 22:04
Репутация: 9
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение fishman »

robinnn писал(а): то что вал крутиться медленно режиме удержания, а не стоит на месте?
поищите в настройках усилителя есть функция что то типа "analog speed zeroing" , "analog torgue zeroing" или что то подобное... функция которая устраняет дрейф , компенсация смещения задания приводу
robinnn писал(а):Вот пробовал посмотреть на графики пи таких условиях.
почему в окошках 1 и 2 (по Сашиной ссылке) у вас значения стоят на порядок ниже?
konstantinshr
Мастер
Сообщения: 226
Зарегистрирован: 04 авг 2013, 17:05
Репутация: 43
Откуда: Новороссийск
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение konstantinshr »

AlexNikov писал(а):
konstantinshr писал(а):
AlexNikov писал(а):Коннект уже подключили? Файлик про который я выше говорил прописали?
Да коннект подключил.



И не забыть указать адрес платы Коннекта:
k_2.jpg
Подскажите где указать адрес платы КОННЕКТ. Не нашел такой вкладки
Аватара пользователя
AlexNikov
Мастер
Сообщения: 1212
Зарегистрирован: 05 янв 2014, 20:09
Репутация: 721
Настоящее имя: Алексей
Откуда: Томск
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение AlexNikov »

konstantinshr писал(а): Подскажите где указать адрес платы КОННЕКТ. Не нашел такой вкладки
Перемычками на плате Коннекта.
robinnn
Кандидат
Сообщения: 46
Зарегистрирован: 02 фев 2014, 01:44
Репутация: 0
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение robinnn »

Спасибо за помощь. Нашел на усилителях несколько регуляторов и опытным путем уменьшил обороты в простое, но полностью устранить не совсем вышло, но, на сколько я понял, Кфлоп с помощью сигналов с енкодеров поддерживает стабильное положение вала двигателя?
Получилось подключить моторы и даже попробовать подобрать ПИД. Моторы и дроселя пищать должны?
PID (1).jpg (3037 просмотров) <a class='original' href='./download/file.php?id=86910&mode=view' target=_blank>Загрузить оригинал (3.42 МБ)</a>
PID (2).jpg (3037 просмотров) <a class='original' href='./download/file.php?id=86911&mode=view' target=_blank>Загрузить оригинал (3.77 МБ)</a>
Интегральная составляющая должна быть обязательно или нет. У меня она приводит к автоколебаниям. Дифиренциальная не влияет никак.
При настройке на какой задающий сигнал лучше ориентироваться на move или step? Если я правильно понял, то при step не должно быть больше одного колебания,а остальное смотреть при move? При включении графика, которые показывает ошибку позиционирования, значение можно переводить в перемещение или это не абсолютный показатель?
Аватара пользователя
donvictorio
Мастер
Сообщения: 2457
Зарегистрирован: 11 окт 2012, 16:26
Репутация: 683
Настоящее имя: Виктор
Откуда: Санкт-Петербург
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение donvictorio »

писк это норма, шим же.
у меня без интегральной не получалось вообще как-то настроить привод, есть ещё момент важный - тестировать это всё надо не на голом моторе, а на станке. так как инерционность нагрузки сильно меняет картину. I составляющую можно на порядок уменьшить.
Step делает одно движение "туда-обратно", move - непрерывно в пределах колва в окошке size (могу ошибаться, давно там не шаманил)
но в любом случае потыркай, там всё сразу понятно будет интуитивно.
Duhas
Мастер
Сообщения: 1961
Зарегистрирован: 10 окт 2015, 23:25
Репутация: 285
Настоящее имя: Андрей
Откуда: Красноярск
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение Duhas »

без интегральной не будет точности, т.е. у тебя оси не будут выходить точно в задание, а будут приближаться к нему с той или другой стороны.

Step дает ступенчатое задание. т.е. заданеие меняется резко, от 0 до того тчо поставишь, Move - дает задание используя ускорения, на сколько я понимаю для быстрых перемещений берутся ускорения
Аватара пользователя
ukr-sasha
Мастер
Сообщения: 3401
Зарегистрирован: 21 мар 2011, 07:47
Репутация: 2181
Настоящее имя: Украинец Александр Григорьевич
Откуда: Киев, Украина
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение ukr-sasha »

robinnn писал(а):Получилось подключить моторы и даже попробовать подобрать ПИД.
Максимальная ошибка 4 импульса - весьма неплохо.
konstantinshr
Мастер
Сообщения: 226
Зарегистрирован: 04 авг 2013, 17:05
Репутация: 43
Откуда: Новороссийск
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение konstantinshr »

AlexNikov писал(а):
konstantinshr писал(а): Подскажите где указать адрес платы КОННЕКТ. Не нашел такой вкладки
Перемычками на плате Коннекта.
Спасибо с перемычками разобрался. Они там отсутствуют.

Но с концевиками не получается. Подключил вроде правильно. При срабатывании концевика на нем загорается диод и на плате konect загорается диод.
Строчку
InitAux();
AddKonnect(0,&VirtualBits,VirtualBitsEx);
вставил в файл инициализации. Т.е. сделал как учили.
При нициализации осей во вкладке
Биты 1.jpg (3012 просмотров) <a class='original' href='./download/file.php?id=86916&mode=view' target=_blank>Загрузить оригинал (186.85 КБ)</a>
загораются все галки. и кфлоп воспринимает что все входы сработали и входит в ошибку(оси желтые). Если поставить галку Watch Limit - Stop when low то оси запускаются а при срабатывании концевика ничего не происходит.

Пробовал запускать строчку инициализации коннекта в отдельном файле и потоке - результат тот же.
Я так понимаю что при срабатывании входа на коннекте должна появляться галка на соответствующем пине.
Что не так делаю. Вчера весь день промучился. :roll:
fishman
Кандидат
Сообщения: 83
Зарегистрирован: 14 сен 2015, 22:04
Репутация: 9
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение fishman »

ukr-sasha писал(а):DefineCoordSystem6(0,-1,2,3,4,5)
проверил - работает!
robinnn
Кандидат
Сообщения: 46
Зарегистрирован: 02 фев 2014, 01:44
Репутация: 0
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение robinnn »

для смены направления осей нужно в поменять знак в значении gain для входа и выхода оси?
Аватара пользователя
ukr-sasha
Мастер
Сообщения: 3401
Зарегистрирован: 21 мар 2011, 07:47
Репутация: 2181
Настоящее имя: Украинец Александр Григорьевич
Откуда: Киев, Украина
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение ukr-sasha »

Если есть ОС, то да.
robinnn
Кандидат
Сообщения: 46
Зарегистрирован: 02 фев 2014, 01:44
Репутация: 0
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение robinnn »

Во время тестирования накопилось несколько вопросов.
Сделал кнопку ХОУМ по инструкции, но оси движутся на небольшое расстояние и обновляются. При этом к датчикам даже и близко не едет. Перемещение идет в пределах 15-20мм. Направление тоже не верное, хотя в файле ставил для пробы и "+" и "-". У меня для хоум и 2 лимитов один датчик.
(для просмотра содержимого нажмите на ссылку)
#include "KMotionDef.h"

int DoPC(int cmd);
int DoPCInt(int cmd, int i);
#define GATH_OFF 0 // define the offset into the Gather buffer where strings are passed

main()
{

//определяем пины для индексных меток, как ВХОД

SetBitDirection(36,0); // для оси Х
SetBitDirection(37,0); // для оси Y
SetBitDirection(38,0); // для оси Z

// поиск НОМЕ по Z
ch2->LimitSwitchOptions=0x100; // отключение обработки концевого датчика на оси Z, чтобы не блокировалась ось
Jog(2,9000); // перемещение оси Z в отрицательном направлении на скорости 10% от максимальной 90000 имп/сек
while (ReadBit(138)) ; // ожидание срабатывания датчика по Z- пин 138- пропадание сигнала
Zero(2); // обнуление координаты оси Z
Jog(2,0); // остановка оси Z
Jog(2,4500); // перемещение оси Z в положительном направлении на скорости 5% от максимальной 90000 имп/сек
while (!ReadBit(38)) ; // ожидание срабатывания индексной метки по Z- пин 38 - появление сигнала
Zero(2); // обнуление координаты оси Z
Jog(2,0); // остановка оси Z
ch2->LimitSwitchOptions=0x103;// включение обработки концевого датчика на оси Z,



// поиск НОМЕ по Х
ch0->LimitSwitchOptions=0x100; // отключение обработки концевого датчика на оси Х, чтобы не блокировалась ось
Jog(0,8660); // перемещение оси Х в отрицательном направлении на скорости 10% от максимальной 86600 имп/сек
while (ReadBit(136)) ; // ожидание срабатывания датчика по Х- пин 136 - пропадание сигнала
Zero(0); // обнуление координаты оси Х
Jog(0,0); // остановка оси Х
Jog(0,4330); // перемещение оси Х в положительном направлении на скорости 5% от максимальной 86600 имп/сек
while (!ReadBit(36)) ; // ожидание срабатывания индексной метки по Х- пин 36 - появление сигнала
Zero(0); // обнуление координаты оси Х
Jog(0,0); // остановка оси Х
ch0->LimitSwitchOptions=0x103;// включение обработки концевого датчика на оси Х,


// поиск НОМЕ по Y
ch1->LimitSwitchOptions=0x100; // отключение обработки концевого датчика на оси Y, чтобы не блокировалась ось
Jog(1,8660); // перемещение оси Y в отрицательном направлении на скорости 10% от максимальной 86600 имп/сек
while (ReadBit(137)) ; // ожидание срабатывания датчика по Y- пин 137
Zero(1); // обнуление координаты оси Y
Jog(1,0); // остановка оси Y
Jog(1,4330); // перемещение оси Y в положительном направлении на скорости 5% от максимальной 86600 имп/сек
while (!ReadBit(37)) ; // ожидание срабатывания индексной метки по Y- пин 37 - появление сигнала
Zero(1); // обнуление координаты оси Y
Jog(1,0); // остановка оси Y
ch1->LimitSwitchOptions=0x103;// включение обработки концевого датчика на оси Y,



MDI("G92.1"); // очистка всех действующих оффсетов
}

//далее код обеспечивающий ввод команды в MDI

// put the MDI string (Manual Data Input - GCode) in the
// gather buffer and tell the App where it is
int MDI(char *s)
{
char *p=(char *)gather_buffer+GATH_OFF*sizeof(int);
int i;

do // copy to gather buffer w offset 0
{
*p++ = *s++;
}while (s[-1]);

// issue the command an wait till it is complete
// (or an error - such as busy)
return DoPCInt(PC_COMM_MDI,GATH_OFF);
}


// Put an integer as a parameter and pass the command to the App
int DoPCInt(int cmd, int i)
{
int result;
persist.UserData[PC_COMM_PERSIST+1] = i;
return DoPC(cmd);
}

// Pass a command to the PC and wait for it to handshake
// that it was received by either clearing the command
// or changing it to a negative error code
int DoPC(int cmd)
{
int result;

persist.UserData[PC_COMM_PERSIST]=cmd;

do
{
WaitNextTimeSlice();
}while (result=persist.UserData[PC_COMM_PERSIST]>0);

return result;
}
Еще заметил, что после выполнеия ХОУМ программа не реагирует на лимиты, хотя при просмотре входов кАналог галочки появляются. В чем может быть проблемма?
Кстати в УПв каких единицах писать скорость и ускорения?
Аватара пользователя
AlexNikov
Мастер
Сообщения: 1212
Зарегистрирован: 05 янв 2014, 20:09
Репутация: 721
Настоящее имя: Алексей
Откуда: Томск
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение AlexNikov »

robinnn писал(а):Во время тестирования накопилось несколько вопросов.
Сделал кнопку ХОУМ по инструкции, но оси движутся на небольшое расстояние и обновляются. При этом к датчикам даже и близко не едет. Перемещение идет в пределах 15-20мм. Направление тоже не верное, хотя в файле ставил для пробы и "+" и "-". У меня для хоум и 2 лимитов один датчик.
(для просмотра содержимого нажмите на ссылку)
#include "KMotionDef.h"

int DoPC(int cmd);
int DoPCInt(int cmd, int i);
#define GATH_OFF 0 // define the offset into the Gather buffer where strings are passed

main()
{

//определяем пины для индексных меток, как ВХОД

SetBitDirection(36,0); // для оси Х
SetBitDirection(37,0); // для оси Y
SetBitDirection(38,0); // для оси Z

// поиск НОМЕ по Z
ch2->LimitSwitchOptions=0x100; // отключение обработки концевого датчика на оси Z, чтобы не блокировалась ось
Jog(2,9000); // перемещение оси Z в отрицательном направлении на скорости 10% от максимальной 90000 имп/сек
while (ReadBit(138)) ; // ожидание срабатывания датчика по Z- пин 138- пропадание сигнала
Zero(2); // обнуление координаты оси Z
Jog(2,0); // остановка оси Z
Jog(2,4500); // перемещение оси Z в положительном направлении на скорости 5% от максимальной 90000 имп/сек
while (!ReadBit(38)) ; // ожидание срабатывания индексной метки по Z- пин 38 - появление сигнала
Zero(2); // обнуление координаты оси Z
Jog(2,0); // остановка оси Z
ch2->LimitSwitchOptions=0x103;// включение обработки концевого датчика на оси Z,



// поиск НОМЕ по Х
ch0->LimitSwitchOptions=0x100; // отключение обработки концевого датчика на оси Х, чтобы не блокировалась ось
Jog(0,8660); // перемещение оси Х в отрицательном направлении на скорости 10% от максимальной 86600 имп/сек
while (ReadBit(136)) ; // ожидание срабатывания датчика по Х- пин 136 - пропадание сигнала
Zero(0); // обнуление координаты оси Х
Jog(0,0); // остановка оси Х
Jog(0,4330); // перемещение оси Х в положительном направлении на скорости 5% от максимальной 86600 имп/сек
while (!ReadBit(36)) ; // ожидание срабатывания индексной метки по Х- пин 36 - появление сигнала
Zero(0); // обнуление координаты оси Х
Jog(0,0); // остановка оси Х
ch0->LimitSwitchOptions=0x103;// включение обработки концевого датчика на оси Х,


// поиск НОМЕ по Y
ch1->LimitSwitchOptions=0x100; // отключение обработки концевого датчика на оси Y, чтобы не блокировалась ось
Jog(1,8660); // перемещение оси Y в отрицательном направлении на скорости 10% от максимальной 86600 имп/сек
while (ReadBit(137)) ; // ожидание срабатывания датчика по Y- пин 137
Zero(1); // обнуление координаты оси Y
Jog(1,0); // остановка оси Y
Jog(1,4330); // перемещение оси Y в положительном направлении на скорости 5% от максимальной 86600 имп/сек
while (!ReadBit(37)) ; // ожидание срабатывания индексной метки по Y- пин 37 - появление сигнала
Zero(1); // обнуление координаты оси Y
Jog(1,0); // остановка оси Y
ch1->LimitSwitchOptions=0x103;// включение обработки концевого датчика на оси Y,



MDI("G92.1"); // очистка всех действующих оффсетов
}

//далее код обеспечивающий ввод команды в MDI

// put the MDI string (Manual Data Input - GCode) in the
// gather buffer and tell the App where it is
int MDI(char *s)
{
char *p=(char *)gather_buffer+GATH_OFF*sizeof(int);
int i;

do // copy to gather buffer w offset 0
{
*p++ = *s++;
}while (s[-1]);

// issue the command an wait till it is complete
// (or an error - such as busy)
return DoPCInt(PC_COMM_MDI,GATH_OFF);
}


// Put an integer as a parameter and pass the command to the App
int DoPCInt(int cmd, int i)
{
int result;
persist.UserData[PC_COMM_PERSIST+1] = i;
return DoPC(cmd);
}

// Pass a command to the PC and wait for it to handshake
// that it was received by either clearing the command
// or changing it to a negative error code
int DoPC(int cmd)
{
int result;

persist.UserData[PC_COMM_PERSIST]=cmd;

do
{
WaitNextTimeSlice();
}while (result=persist.UserData[PC_COMM_PERSIST]>0);

return result;
}
Еще заметил, что после выполнеия ХОУМ программа не реагирует на лимиты, хотя при просмотре входов кАналог галочки появляются. В чем может быть проблемма?
Кстати в УПв каких единицах писать скорость и ускорения?
Первое. Обратить внимание на правильное обозначение назначенного состояния LimitSwitchOptions в вашем файле инициализации и файле скрипта поиска HOME (при смене галочек, пазетив/негатив, снятии галочек код состояния в файле инициализации меняется, только нажимать кнопку экспорта в открытый СИ файл):
Limit.jpg (2883 просмотра) <a class='original' href='./download/file.php?id=87268&mode=view' target=_blank>Загрузить оригинал (234.24 КБ)</a>
Второе. Убедитесь что ваши лимиты настроены верно - (!ReadBit(37)) - восклицательный знак это инверсия состояния - сработка по появлению сигнала или пропаданию сигнала грубо говоря.

Смена направления перемещения по Jog работает при смене знака - Jog(1,X); - вперед со скоростью "X", Jog(1,-X); - назад со скоростью "X"
robinnn
Кандидат
Сообщения: 46
Зарегистрирован: 02 фев 2014, 01:44
Репутация: 0
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение robinnn »

AlexNikov писал(а):правильное обозначение назначенного состояния LimitSwitchOptions в вашем файле инициализации
У меня один порт на оба лимита и он же как Хоум.
Файл настроек
(для просмотра содержимого нажмите на ссылку)
#include "KMotionDef.h"

main()
{
int BitA,Change1=0,Change2=0, DiffX2;
int PosNoWrap, NewPos, Pos=0, wraps;
double Factor=0;

SetBit(152);
SetBit(157);
SetBit(158);

ch0->InputMode=ENCODER_MODE;
ch0->OutputMode=DAC_SERVO_MODE;
ch0->Vel=86600;
ch0->Accel=866000;
ch0->Jerk=866000;
ch0->P=0.9;
ch0->I=0;
ch0->D=0;
ch0->FFAccel=0;
ch0->FFVel=0.022;
ch0->MaxI=2047;
ch0->MaxErr=1e+006;
ch0->MaxOutput=2047;
ch0->DeadBandGain=1;
ch0->DeadBandRange=0;
ch0->InputChan0=0;
ch0->InputChan1=0;
ch0->OutputChan0=0;
ch0->OutputChan1=0;
ch0->MasterAxis=-1;
ch0->LimitSwitchOptions=0x113;
ch0->LimitSwitchNegBit=136;
ch0->LimitSwitchPosBit=136;
ch0->SoftLimitPos=1e+009;
ch0->SoftLimitNeg=-1e+009;
ch0->InputGain0=1;
ch0->InputGain1=1;
ch0->InputOffset0=0;
ch0->InputOffset1=0;
ch0->OutputGain=-1;
ch0->OutputOffset=0;
ch0->SlaveGain=1;
ch0->BacklashMode=BACKLASH_OFF;
ch0->BacklashAmount=0;
ch0->BacklashRate=0;
ch0->invDistPerCycle=1;
ch0->Lead=0;
ch0->MaxFollowingError=1000000000;
ch0->StepperAmplitude=20;

ch0->iir[0].B0=1;
ch0->iir[0].B1=0;
ch0->iir[0].B2=0;
ch0->iir[0].A1=0;
ch0->iir[0].A2=0;

ch0->iir[1].B0=1;
ch0->iir[1].B1=0;
ch0->iir[1].B2=0;
ch0->iir[1].A1=0;
ch0->iir[1].A2=0;

ch0->iir[2].B0=0.000768788;
ch0->iir[2].B1=0.00153758;
ch0->iir[2].B2=0.000768788;
ch0->iir[2].A1=1.92076;
ch0->iir[2].A2=-0.923833;

ch1->InputMode=ENCODER_MODE;
ch1->OutputMode=DAC_SERVO_MODE;
ch1->Vel=86600;
ch1->Accel=866000;
ch1->Jerk=866000;
ch1->P=0.1;
ch1->I=0;
ch1->D=0;
ch1->FFAccel=0;
ch1->FFVel=0;
ch1->MaxI=2047;
ch1->MaxErr=1e+006;
ch1->MaxOutput=2047;
ch1->DeadBandGain=1;
ch1->DeadBandRange=0;
ch1->InputChan0=1;
ch1->InputChan1=0;
ch1->OutputChan0=1;
ch1->OutputChan1=0;
ch1->MasterAxis=-1;
ch1->LimitSwitchOptions=0x113;
ch1->LimitSwitchNegBit=137;
ch1->LimitSwitchPosBit=137;
ch1->SoftLimitPos=1e+009;
ch1->SoftLimitNeg=-1e+009;
ch1->InputGain0=-1;
ch1->InputGain1=1;
ch1->InputOffset0=0;
ch1->InputOffset1=0;
ch1->OutputGain=-1;
ch1->OutputOffset=0;
ch1->SlaveGain=1;
ch1->BacklashMode=BACKLASH_OFF;
ch1->BacklashAmount=0;
ch1->BacklashRate=0;
ch1->invDistPerCycle=1;
ch1->Lead=0;
ch1->MaxFollowingError=1000000000;
ch1->StepperAmplitude=20;

ch1->iir[0].B0=1;
ch1->iir[0].B1=0;
ch1->iir[0].B2=0;
ch1->iir[0].A1=0;
ch1->iir[0].A2=0;

ch1->iir[1].B0=1;
ch1->iir[1].B1=0;
ch1->iir[1].B2=0;
ch1->iir[1].A1=0;
ch1->iir[1].A2=0;

ch1->iir[2].B0=0.000769;
ch1->iir[2].B1=0.001538;
ch1->iir[2].B2=0.000769;
ch1->iir[2].A1=1.92081;
ch1->iir[2].A2=-0.923885;

ch2->InputMode=ENCODER_MODE;
ch2->OutputMode=DAC_SERVO_MODE;
ch2->Vel=90000;
ch2->Accel=900000;
ch2->Jerk=900000;
ch2->P=0.1;
ch2->I=0;
ch2->D=0;
ch2->FFAccel=0;
ch2->FFVel=0;
ch2->MaxI=2047;
ch2->MaxErr=1e+006;
ch2->MaxOutput=2047;
ch2->DeadBandGain=1;
ch2->DeadBandRange=0;
ch2->InputChan0=2;
ch2->InputChan1=0;
ch2->OutputChan0=2;
ch2->OutputChan1=0;
ch2->MasterAxis=-1;
ch2->LimitSwitchOptions=0x113;
ch2->LimitSwitchNegBit=138;
ch2->LimitSwitchPosBit=138;
ch2->SoftLimitPos=1e+009;
ch2->SoftLimitNeg=-1e+009;
ch2->InputGain0=1;
ch2->InputGain1=1;
ch2->InputOffset0=0;
ch2->InputOffset1=0;
ch2->OutputGain=1;
ch2->OutputOffset=0;
ch2->SlaveGain=1;
ch2->BacklashMode=BACKLASH_OFF;
ch2->BacklashAmount=0;
ch2->BacklashRate=0;
ch2->invDistPerCycle=1;
ch2->Lead=0;
ch2->MaxFollowingError=1000000000;
ch2->StepperAmplitude=20;

ch2->iir[0].B0=1;
ch2->iir[0].B1=0;
ch2->iir[0].B2=0;
ch2->iir[0].A1=0;
ch2->iir[0].A2=0;

ch2->iir[1].B0=1;
ch2->iir[1].B1=0;
ch2->iir[1].B2=0;
ch2->iir[1].A1=0;
ch2->iir[1].A2=0;

ch2->iir[2].B0=0.000769;
ch2->iir[2].B1=0.001538;
ch2->iir[2].B2=0.000769;
ch2->iir[2].A1=1.92081;
ch2->iir[2].A2=-0.923885;

EnableAxis(0);
EnableAxis(1);
EnableAxis(2);

DefineCoordSystem(0,1,2,-1);

SetBitDirection(144,1);

for(;;) //loop forever
{
WaitNextTimeSlice();
if (ch0->Enable && ch1->Enable && ch2->Enable)
SetBit(144);
else
{
ClearBit(144);
ClearBit(145); // отключить шпиндель, разомкнув выход 145
}
}
return 0;
}
AlexNikov писал(а):!ReadBit(37)) - восклицательный знак это инверсия состояния
Про это не знал перепроверю. Индексные метки вроде и должны так срабатывать или я ошибаюсь?
AlexNikov писал(а):мена направления перемещения по Jog работает при смене знака - Jog(1,X); - вперед со скоростью "X", Jog(1,-X); - назад со скоростью "X"
Я именно так и делал, но направление не поменялось.
Аватара пользователя
AlexNikov
Мастер
Сообщения: 1212
Зарегистрирован: 05 янв 2014, 20:09
Репутация: 721
Настоящее имя: Алексей
Откуда: Томск
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение AlexNikov »

robinnn писал(а):ch2->LimitSwitchOptions=0x100; // отключение обработки концевого датчика на оси Z, чтобы не блокировалась ось
robinnn писал(а):ch2->LimitSwitchOptions=0x103;// включение обработки концевого датчика на оси Z,
В вашем файле инициализации состояние указано -
robinnn писал(а):ch2->LimitSwitchOptions=0x113;
Внимательно проверьте соответствие состояний лимитов.


У вас Z-метка заведена на тот же пин что и концевики? Я верно понял? В таком случае ничего удивительного что ось проезжает совсем чуть-чуть, ровно на один оборот, пока не сработает выход Z-метки.

Но исходя из вашего кода, пины у вас для лимитов разные... :thinking: Накидайте схемку как у вас что подключено по Z метке и концевикам.
robinnn
Кандидат
Сообщения: 46
Зарегистрирован: 02 фев 2014, 01:44
Репутация: 0
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение robinnn »

AlexNikov писал(а):У вас Z-метка заведена на тот же пин что и концевики? Я верно понял? В таком случае ничего удивительного что ось проезжает совсем чуть-чуть, ровно на один оборот, пока не сработает выход Z-метки.
У меня лимит +, лимит - и хоум это один и тот же датчик (порт 138) индекс метка от энкодера на 38.
Для всех осей аналогично - порты 136, 36 и 137, 37
Аватара пользователя
AlexNikov
Мастер
Сообщения: 1212
Зарегистрирован: 05 янв 2014, 20:09
Репутация: 721
Настоящее имя: Алексей
Откуда: Томск
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение AlexNikov »

robinnn писал(а):
AlexNikov писал(а):У вас Z-метка заведена на тот же пин что и концевики? Я верно понял? В таком случае ничего удивительного что ось проезжает совсем чуть-чуть, ровно на один оборот, пока не сработает выход Z-метки.
У меня лимит +, лимит - и хоум это один и тот же датчик (порт 138) индекс метка от энкодера на 38.
Для всех осей аналогично - порты 136, 36 и 137, 37
Что могу сказать, проверяйте соответствие состояний лимитов и необходимость инверсии. По джогу, что-то у вас не верно, что именно пока понять не могу. Смена направлений у меня работает на ура...
robinnn
Кандидат
Сообщения: 46
Зарегистрирован: 02 фев 2014, 01:44
Репутация: 0
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение robinnn »

При включении на порты кАналог подается питание и устройства которые включаются через эти порты кратковременно запускаются. Это можно выключить или нужно плату раньше запускать чем все остальное? УП в каких единицах писать скорость?
robinnn
Кандидат
Сообщения: 46
Зарегистрирован: 02 фев 2014, 01:44
Репутация: 0
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение robinnn »

AlexNikov писал(а):В вашем файле инициализации состояние указано -
robinnn писал(а):
ch2->LimitSwitchOptions=0x113;
Методом проб и ошибок разобрался, что - 103, 113, 123 - это разные варианты срабатывания датчиков. Сразу вопрос по этому поводу. Пробовал все режимы работы лимитов и никак не получилось задать режим с остановкой, но возможностью отвода в другую сторону. Хотя вроде такой должен быть.
По поводу примера поиска хоум в инструкции есть небольшая недоработка если датчик ХОУМ и ЛИМИТ один и тотже, а именно после наезжания на датчик ось там и находиться и после выполнения процедуры поиска ХОУМ, ось стопориться при попытке движения, по этому нужно ловить ХОУМ не на замыкание, а на размыкание датчика и с отводом за пределы его работы после обнуления.
Искал в нете и на сайте разработчика примеры программы для поиска высоты заготовки. но к сожалению не нашел. может кто подскажет? И хотелось глянуть перечень всех команд для програмирования, где их можно посмотреть?
Аватара пользователя
AlexNikov
Мастер
Сообщения: 1212
Зарегистрирован: 05 янв 2014, 20:09
Репутация: 721
Настоящее имя: Алексей
Откуда: Томск
Контактная информация:

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf

Сообщение AlexNikov »

robinnn писал(а):
AlexNikov писал(а):В вашем файле инициализации состояние указано -
robinnn писал(а):
ch2->LimitSwitchOptions=0x113;
Методом проб и ошибок разобрался, что - 103, 113, 123 - это разные варианты срабатывания датчиков. Сразу вопрос по этому поводу. Пробовал все режимы работы лимитов и никак не получилось задать режим с остановкой, но возможностью отвода в другую сторону. Хотя вроде такой должен быть.
По поводу примера поиска хоум в инструкции есть небольшая недоработка если датчик ХОУМ и ЛИМИТ один и тотже, а именно после наезжания на датчик ось там и находиться и после выполнения процедуры поиска ХОУМ, ось стопориться при попытке движения, по этому нужно ловить ХОУМ не на замыкание, а на размыкание датчика и с отводом за пределы его работы после обнуления.
Искал в нете и на сайте разработчика примеры программы для поиска высоты заготовки. но к сожалению не нашел. может кто подскажет? И хотелось глянуть перечень всех команд для програмирования, где их можно посмотреть?
http://dynomotion.com/Help/KFlopManual.pdf - тут есть полный перечень команд для программирования с описанием. Честно, по ХОУМУ...не понял. Схемку накидайте, второй раз прошу, с привязкой к схеме состояний элементов/датчиков и пошаговой желаемой логике работы.

Поиск высоты заготовки (правильнее измерение высоты инструмента): http://www.cnc-club.ru/forum/viewtopic. ... 69#p171969
Ответить

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