Страница 40 из 70
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 13 авг 2016, 22:44
fishman
robinnn писал(а): то что вал крутиться медленно режиме удержания, а не стоит на месте?
поищите в настройках усилителя есть функция что то типа "analog speed zeroing" , "analog torgue zeroing" или что то подобное... функция которая устраняет дрейф , компенсация смещения задания приводу
robinnn писал(а):Вот пробовал посмотреть на графики пи таких условиях.
почему в окошках 1 и 2 (по Сашиной ссылке) у вас значения стоят на порядок ниже?
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 14 авг 2016, 08:46
konstantinshr
AlexNikov писал(а):konstantinshr писал(а):AlexNikov писал(а):Коннект уже подключили? Файлик про который я выше говорил прописали?
Да коннект подключил.
И не забыть указать адрес платы Коннекта:
k_2.jpg
Подскажите где указать адрес платы КОННЕКТ. Не нашел такой вкладки
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 14 авг 2016, 09:32
AlexNikov
konstantinshr писал(а):
Подскажите где указать адрес платы КОННЕКТ. Не нашел такой вкладки
Перемычками на плате Коннекта.
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 15 авг 2016, 00:20
robinnn
Спасибо за помощь. Нашел на усилителях несколько регуляторов и опытным путем уменьшил обороты в простое, но полностью устранить не совсем вышло, но, на сколько я понял, Кфлоп с помощью сигналов с енкодеров поддерживает стабильное положение вала двигателя?
Получилось подключить моторы и даже попробовать подобрать ПИД. Моторы и дроселя пищать должны?
Интегральная составляющая должна быть обязательно или нет. У меня она приводит к автоколебаниям. Дифиренциальная не влияет никак.
При настройке на какой задающий сигнал лучше ориентироваться на move или step? Если я правильно понял, то при step не должно быть больше одного колебания,а остальное смотреть при move? При включении графика, которые показывает ошибку позиционирования, значение можно переводить в перемещение или это не абсолютный показатель?
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 15 авг 2016, 01:40
donvictorio
писк это норма, шим же.
у меня без интегральной не получалось вообще как-то настроить привод, есть ещё момент важный - тестировать это всё надо не на голом моторе, а на станке. так как инерционность нагрузки сильно меняет картину. I составляющую можно на порядок уменьшить.
Step делает одно движение "туда-обратно", move - непрерывно в пределах колва в окошке size (могу ошибаться, давно там не шаманил)
но в любом случае потыркай, там всё сразу понятно будет интуитивно.
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 15 авг 2016, 05:38
Duhas
без интегральной не будет точности, т.е. у тебя оси не будут выходить точно в задание, а будут приближаться к нему с той или другой стороны.
Step дает ступенчатое задание. т.е. заданеие меняется резко, от 0 до того тчо поставишь, Move - дает задание используя ускорения, на сколько я понимаю для быстрых перемещений берутся ускорения
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 15 авг 2016, 06:45
ukr-sasha
robinnn писал(а):Получилось подключить моторы и даже попробовать подобрать ПИД.
Максимальная ошибка 4 импульса - весьма неплохо.
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 15 авг 2016, 08:00
konstantinshr
AlexNikov писал(а):konstantinshr писал(а):
Подскажите где указать адрес платы КОННЕКТ. Не нашел такой вкладки
Перемычками на плате Коннекта.
Спасибо с перемычками разобрался. Они там отсутствуют.
Но с концевиками не получается. Подключил вроде правильно. При срабатывании концевика на нем загорается диод и на плате konect загорается диод.
Строчку
InitAux();
AddKonnect(0,&VirtualBits,VirtualBitsEx);
вставил в файл инициализации. Т.е. сделал как учили.
При нициализации осей во вкладке
загораются все галки. и кфлоп воспринимает что все входы сработали и входит в ошибку(оси желтые). Если поставить галку Watch Limit - Stop when low то оси запускаются а при срабатывании концевика ничего не происходит.
Пробовал запускать строчку инициализации коннекта в отдельном файле и потоке - результат тот же.
Я так понимаю что при срабатывании входа на коннекте должна появляться галка на соответствующем пине.
Что не так делаю. Вчера весь день промучился.

Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 16 авг 2016, 10:28
fishman
ukr-sasha писал(а):DefineCoordSystem6(0,-1,2,3,4,5)
проверил - работает!
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 16 авг 2016, 17:43
robinnn
для смены направления осей нужно в поменять знак в значении gain для входа и выхода оси?
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 16 авг 2016, 21:23
ukr-sasha
Если есть ОС, то да.
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 21 авг 2016, 01:23
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;
}
Еще заметил, что после выполнеия ХОУМ программа не реагирует на лимиты, хотя при просмотре входов кАналог галочки появляются. В чем может быть проблемма?
Кстати в УПв каких единицах писать скорость и ускорения?
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 21 авг 2016, 06:14
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 (при смене галочек, пазетив/негатив, снятии галочек код состояния в файле инициализации меняется, только нажимать кнопку экспорта в открытый СИ файл):
Второе. Убедитесь что ваши лимиты настроены верно - (!ReadBit(37)) - восклицательный знак это инверсия состояния - сработка по появлению сигнала или пропаданию сигнала грубо говоря.
Смена направления перемещения по Jog работает при смене знака - Jog(1,X); - вперед со скоростью "X", Jog(1,-X); - назад со скоростью "X"
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 21 авг 2016, 12:01
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"
Я именно так и делал, но направление не поменялось.
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 21 авг 2016, 12:06
AlexNikov
robinnn писал(а):ch2->LimitSwitchOptions=0x100; // отключение обработки концевого датчика на оси Z, чтобы не блокировалась ось
robinnn писал(а):ch2->LimitSwitchOptions=0x103;// включение обработки концевого датчика на оси Z,
В вашем файле инициализации состояние указано -
robinnn писал(а):ch2->LimitSwitchOptions=0x113;
Внимательно проверьте соответствие состояний лимитов.
У вас Z-метка заведена на тот же пин что и концевики? Я верно понял? В таком случае ничего удивительного что ось проезжает совсем чуть-чуть, ровно на один оборот, пока не сработает выход Z-метки.
Но исходя из вашего кода, пины у вас для лимитов разные...

Накидайте схемку как у вас что подключено по Z метке и концевикам.
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 21 авг 2016, 12:17
robinnn
AlexNikov писал(а):У вас Z-метка заведена на тот же пин что и концевики? Я верно понял? В таком случае ничего удивительного что ось проезжает совсем чуть-чуть, ровно на один оборот, пока не сработает выход Z-метки.
У меня лимит +, лимит - и хоум это один и тот же датчик (порт 138) индекс метка от энкодера на 38.
Для всех осей аналогично - порты 136, 36 и 137, 37
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 21 авг 2016, 12:52
AlexNikov
robinnn писал(а):AlexNikov писал(а):У вас Z-метка заведена на тот же пин что и концевики? Я верно понял? В таком случае ничего удивительного что ось проезжает совсем чуть-чуть, ровно на один оборот, пока не сработает выход Z-метки.
У меня лимит +, лимит - и хоум это один и тот же датчик (порт 138) индекс метка от энкодера на 38.
Для всех осей аналогично - порты 136, 36 и 137, 37
Что могу сказать, проверяйте соответствие состояний лимитов и необходимость инверсии. По джогу, что-то у вас не верно, что именно пока понять не могу. Смена направлений у меня работает на ура...
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 21 авг 2016, 22:32
robinnn
При включении на порты кАналог подается питание и устройства которые включаются через эти порты кратковременно запускаются. Это можно выключить или нужно плату раньше запускать чем все остальное? УП в каких единицах писать скорость?
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 24 авг 2016, 14:27
robinnn
AlexNikov писал(а):В вашем файле инициализации состояние указано -
robinnn писал(а):
ch2->LimitSwitchOptions=0x113;
Методом проб и ошибок разобрался, что - 103, 113, 123 - это разные варианты срабатывания датчиков. Сразу вопрос по этому поводу. Пробовал все режимы работы лимитов и никак не получилось задать режим с остановкой, но возможностью отвода в другую сторону. Хотя вроде такой должен быть.
По поводу примера поиска хоум в инструкции есть небольшая недоработка если датчик ХОУМ и ЛИМИТ один и тотже, а именно после наезжания на датчик ось там и находиться и после выполнения процедуры поиска ХОУМ, ось стопориться при попытке движения, по этому нужно ловить ХОУМ не на замыкание, а на размыкание датчика и с отводом за пределы его работы после обнуления.
Искал в нете и на сайте разработчика примеры программы для поиска высоты заготовки. но к сожалению не нашел. может кто подскажет? И хотелось глянуть перечень всех команд для програмирования, где их можно посмотреть?
Re: Ввод в эксплуатацию ЧПУ системы на основе контроллера Kf
Добавлено: 24 авг 2016, 15:19
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