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

KFlop, KStep, KAnalog, KMotion...

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

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

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

konstantinshr
Мастер
Сообщения: 226
Зарегистрирован: 04 авг 2013, 17:05
Репутация: 43
Откуда: Новороссийск
Контактная информация:

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

Сообщение konstantinshr »

Да номера пинов соответствуют. Я так понял добавить скобки. Попробую.

То что стол попортил не страшно-черновой. Просто выяснил что Естоп надо не просто нажать а и подержать немного :thinking:
В противном случае оси останавливаются но сигнал анейбл не пропадает. А у меня есть небольшое паразитное напряжение и оси понемногу начинают ползти.
Может надо паузу какую то прописать чтобы хватало кратковременного нажатия Естоп.
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

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

Сообщение PKM »

konstantinshr писал(а):В противном случае оси останавливаются но сигнал анейбл не пропадает. А у меня есть небольшое паразитное напряжение и оси понемногу начинают ползти.
Странно, то есть ПИД отключается без выключения привода? Это недопустимо.
Аватара пользователя
ukr-sasha
Мастер
Сообщения: 3401
Зарегистрирован: 21 мар 2011, 07:47
Репутация: 2180
Настоящее имя: Украинец Александр Григорьевич
Откуда: Киев, Украина
Контактная информация:

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

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

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

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

Сообщение konstantinshr »

Что то у меня не так с файлом инициализации.
Сразу после инициализации работает и Естоп и останов в результате отключения осей. Но после какого то времени контролер перестает реагировать на кнопки стопа.
Файл инициализации :
(для просмотра содержимого нажмите на ссылку)
#include "KMotionDef.h"

#define QA 26 // define to which IO bits the AB signals are connected
#define QB 27

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

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


ch0->InputMode=ENCODER_MODE;
ch0->OutputMode=DAC_SERVO_MODE;
ch0->Vel=309600;
ch0->Accel=5e+006;
ch0->Jerk=3e+006;
ch0->P=2.2;
ch0->I=0.006;
ch0->D=10;
ch0->FFAccel=0;
ch0->FFVel=0;
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=0x100;
ch0->LimitSwitchNegBit=0;
ch0->LimitSwitchPosBit=0;
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=0.00025;
ch0->Lead=0;
ch0->MaxFollowingError=1000;
ch0->StepperAmplitude=100;

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=1;
ch0->iir[2].B1=0;
ch0->iir[2].B2=0;
ch0->iir[2].A1=0;
ch0->iir[2].A2=0;

ch1->InputMode=ENCODER_MODE;
ch1->OutputMode=DAC_SERVO_MODE;
ch1->Vel=309600;
ch1->Accel=1e+006;
ch1->Jerk=2e+006;
ch1->P=2.65;
ch1->I=0.003;
ch1->D=10;
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=1;
ch1->OutputChan0=1;
ch1->OutputChan1=1;
ch1->MasterAxis=-1;
ch1->LimitSwitchOptions=0x110;
ch1->LimitSwitchNegBit=0;
ch1->LimitSwitchPosBit=0;
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=0.00025;
ch1->Lead=0;
ch1->MaxFollowingError=1000;
ch1->StepperAmplitude=100;

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=1;
ch1->iir[2].B1=0;
ch1->iir[2].B2=0;
ch1->iir[2].A1=0;
ch1->iir[2].A2=0;

ch2->InputMode=ENCODER_MODE;
ch2->OutputMode=DAC_SERVO_MODE;
ch2->Vel=409600;
ch2->Accel=1e+006;
ch2->Jerk=1e+007;
ch2->P=1.1;
ch2->I=0.004;
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=2;
ch2->OutputChan0=2;
ch2->OutputChan1=2;
ch2->MasterAxis=-1;
ch2->LimitSwitchOptions=0x112;
ch2->LimitSwitchNegBit=0;
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=0.00025;
ch2->Lead=0;
ch2->MaxFollowingError=1000;
ch2->StepperAmplitude=100;

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=1;
ch2->iir[2].B1=0;
ch2->iir[2].B2=0;
ch2->iir[2].A1=0;
ch2->iir[2].A2=0;

ch3->InputMode=ENCODER_MODE;
ch3->OutputMode=DAC_SERVO_MODE;
ch3->Vel=209600;
ch3->Accel=1e+007;
ch3->Jerk=1e+007;
ch3->P=4.1;
ch3->I=0.0006;
ch3->D=10;
ch3->FFAccel=0;
ch3->FFVel=0;
ch3->MaxI=2047;
ch3->MaxErr=1e+006;
ch3->MaxOutput=2047;
ch3->DeadBandGain=1;
ch3->DeadBandRange=0;
ch3->InputChan0=3;
ch3->InputChan1=3;
ch3->OutputChan0=3;
ch3->OutputChan1=3;
ch3->MasterAxis=-1;
ch3->LimitSwitchOptions=0x110;
ch3->LimitSwitchNegBit=0;
ch3->LimitSwitchPosBit=0;
ch3->SoftLimitPos=1e+009;
ch3->SoftLimitNeg=-1e+009;
ch3->InputGain0=1;
ch3->InputGain1=1;
ch3->InputOffset0=0;
ch3->InputOffset1=0;
ch3->OutputGain=1;
ch3->OutputOffset=0;
ch3->SlaveGain=1;
ch3->BacklashMode=BACKLASH_OFF;
ch3->BacklashAmount=0;
ch3->BacklashRate=0;
ch3->invDistPerCycle=0.00025;
ch3->Lead=0;
ch3->MaxFollowingError=1000;
ch3->StepperAmplitude=100;

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

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

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


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

DefineCoordSystem(0,1,2,3);

SetBitDirection(144,1);

for (;;) //loop forever


{
WaitNextTimeSlice();
if (ch0->Enable && ch1->Enable && ch2->Enable && ch3->Enable)
SetBit(144);
else
{
ClearBit(144);
DAC(7,0); // остановить шпиндель, установив напряжение в 0
ClearBit(145); // отключить шпиндель, разомкнув выход 145
}


// Handle ESTOP

if (!ReadBit(141)); // ожидание срабатывания датчика по Z- пин 139 - пропадание сигнала \

else
{
DAC(7,0); // остановить шпиндель, установив напряжение в 0
ClearBit(145); // отключить шпиндель, разомкнув выход 145
ClearBit(144);
}
}

return 0;
}


Еще использую файл коррекции длины инструмента:


#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()
{
Jog(2,-10403); // перемещение оси Z в отрицательном направлении на скорости 10% от максимальной 10403имп/сек
while (!ReadBit(139)) ; // ожидание срабатывания датчика по Z- пин 139 - пропадание сигнала
Jog(2,0); // остановка оси Z
Jog(2,800); // перемещение оси Z в положительном направлении на скорости 5% от максимальной 204800 имп/сек
while (!ReadBit(38)) ; // ожидание срабатывания индексной метки по Z- пин 38 - появление сигнала
Jog(2,0); // остановка оси Z
Jog(2,-800); // ехать вниз на скорости 400 имп/сек
while (!ReadBit(139)) ; // пока не не изменится состояние пин 20
Zero(2); // обнуление координаты оси Z
Jog(2,0);
DisableAxis(2); // отключить ось Z
ch2->Position=81920;
EnableAxisDest(2,81920); //включить ось Z с начальным значением 81920 имп

И поиск нуля оси А:

#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()
{
Jog(2,-10403); // перемещение оси Z в отрицательном направлении на скорости 10% от максимальной 10403имп/сек
while (!ReadBit(139)) ; // ожидание срабатывания датчика по Z- пин 139 - пропадание сигнала
Jog(2,0); // остановка оси Z
Jog(2,800); // перемещение оси Z в положительном направлении на скорости 5% от максимальной 204800 имп/сек
while (!ReadBit(38)) ; // ожидание срабатывания индексной метки по Z- пин 38 - появление сигнала
Jog(2,0); // остановка оси Z
Jog(2,-800); // ехать вниз на скорости 400 имп/сек
while (!ReadBit(139)) ; // пока не не изменится состояние пин 20
Zero(2); // обнуление координаты оси Z
Jog(2,0);
DisableAxis(2); // отключить ось Z
ch2->Position=81920;
EnableAxisDest(2,81920); //включить ось Z с начальным значением 81920 имп
Может где то эти программы зацыкливаюся. Потому что при остановке программы на паузу и отводе осей в сторону и потом продолжении программы она выполняется с прерываниями. Ось разгоняется тормозит и снова разгоняется на прямых участках.

Не знаю как спрятать текст под прокрутку поэтому получилось так много и текст сделал больше чтобы разграничить.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11626
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

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

Сообщение michael-yurov »

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

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

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

konstantinshr писал(а):в результате отключения осей.
Какого отключения?
konstantinshr писал(а):#define QA 26 // define to which IO bits the AB signals are connected
#define QB 27

main()
{
int BitA,Change1=0,Change2=0, DiffX2;
int PosNoWrap, NewPos, Pos=0, wraps;
double Factor=0;
Этот код зачем?
konstantinshr писал(а):SetBit(152);
SetBit(157);
SetBit(158);
SetBit(159);
Что включается?
konstantinshr писал(а):// Handle ESTOP

if (!ReadBit(141)); // ожидание срабатывания датчика по Z- пин 139 - пропадание сигнала \
Ждете пропадание сигнала или появление?
konstantinshr писал(а):И поиск нуля оси А:
Я увидел код по оси Зет.

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

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

Сообщение konstantinshr »

michael-yurov писал(а):Не знаю, как организовано у тебя, но нужно смотреть, в каком потоке когда какая программа выполняется.
Если две или более разных программ одновременно выполняются в разных потоках - нужно быть уверенным, что они никак не мешают друг другу и не выполняют противоречивых действий.
Я делаю инициализацию затем запускаю программу ноль инструмента и пускаю УП. Получается поиск нуля где то висит в контролере? В чера вообще вылез косяк. Делал простейшую про6рамму фрещерования поверхности и вручную пускал шпиндель. Так при нажатии М3 дергалась ось Х и контролер выпадал в ошибку. Помогло только снятие питания с контролера.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11626
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

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

Сообщение michael-yurov »

konstantinshr писал(а):Я делаю инициализацию затем запускаю программу ноль инструмента и пускаю УП.
Вот уже обманываешь - у тебя в конце файла инициализации бесконечный цикл: for (;;) //loop forever
Так что программа инициализации у тебя никогда не заканчивается. Она будет выполнятся постоянно (висеть) в том потоке, в котором ты ее запустил.
Если при этом запустить программу "ноль инструмента" в том же потоке - программа инициализации будет остановлена и туда будет записана и запущена программа "ноль инструмента".
konstantinshr писал(а):В чера вообще вылез косяк. Делал простейшую про6рамму фрещерования поверхности и вручную пускал шпиндель. Так при нажатии М3 дергалась ось Х и контролер выпадал в ошибку. Помогло только снятие питания с контролера.
Очень похоже на проблемы с помехами от шпинделя.
Аватара пользователя
ukr-sasha
Мастер
Сообщения: 3401
Зарегистрирован: 21 мар 2011, 07:47
Репутация: 2180
Настоящее имя: Украинец Александр Григорьевич
Откуда: Киев, Украина
Контактная информация:

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

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

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

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

Сообщение konstantinshr »

michael-yurov писал(а): Вот уже обманываешь - у тебя в конце файла инициализации бесконечный цикл: for (;;) //loop forever
Так что программа инициализации у тебя никогда не заканчивается. Она будет выполнятся постоянно (висеть) в том потоке, в котором ты ее запустил.
Если при этом запустить программу "ноль инструмента" в том же потоке - программа инициализации будет остановлена и туда будет записана и запущена программа "ноль инструмента".
Бесконечный цикл я делал по рекомендациям этой темы. Да и все подключения как для kanaloga. Получается после выполнения программы "ноль инструмента" цикл прервался. Может тогда циклическую часть программы вынести в отдельный файл и сделать кнопку "безопасность" и запускать ее перед пуском УП. Или как то по другому, более красиво, можно решить эту проблему, чтобы при нажатии пуск одновременно запускался цикл безопасности.

Скрины настроек выложу вечером.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11626
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

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

Сообщение michael-yurov »

У KFlop-а 7 потоков для одновременного выполнения программ.
Никто не заставляет выполнять все программы в одном потоке.

Я об этом стал писать просто, чтобы обратить внимание на нетривиальный момент.
konstantinshr
Мастер
Сообщения: 226
Зарегистрирован: 04 авг 2013, 17:05
Репутация: 43
Откуда: Новороссийск
Контактная информация:

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

Сообщение konstantinshr »

michael-yurov писал(а):У KFlop-а 7 потоков для одновременного выполнения программ.
Никто не заставляет выполнять все программы в одном потоке.
А можно объяснить как организовать выполнение программ по разным потокам
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11626
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

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

Сообщение michael-yurov »

konstantinshr писал(а):
michael-yurov писал(а):У KFlop-а 7 потоков для одновременного выполнения программ.
Никто не заставляет выполнять все программы в одном потоке.
А можно объяснить как организовать выполнение программ по разным потокам
Вот там, где ты запускаешь программу - там и указывается в настройках, в каком потоке ее запускать.
Активный поток подсвечивается зеленым (там где семь радиобоксов).
Скриншоты делать лень - придется станок включать.
konstantinshr
Мастер
Сообщения: 226
Зарегистрирован: 04 авг 2013, 17:05
Репутация: 43
Откуда: Новороссийск
Контактная информация:

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

Сообщение konstantinshr »

michael-yurov писал(а):
konstantinshr писал(а):
michael-yurov писал(а):У KFlop-а 7 потоков для одновременного выполнения программ.
Никто не заставляет выполнять все программы в одном потоке.
А можно объяснить как организовать выполнение программ по разным потокам
Вот там, где ты запускаешь программу - там и указывается в настройках, в каком потоке ее запускать.
Активный поток подсвечивается зеленым (там где семь радиобоксов).
Скриншоты делать лень - придется станок включать.
Если можно сделайте скриншоты когда будет возможность. На слух воспринимается тяжеловато.
konstantinshr
Мастер
Сообщения: 226
Зарегистрирован: 04 авг 2013, 17:05
Репутация: 43
Откуда: Новороссийск
Контактная информация:

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

Сообщение konstantinshr »

michael-yurov писал(а): Вот там, где ты запускаешь программу - там и указывается в настройках, в каком потоке ее запускать.
Все спасибо разобрался. Поставил "Thread" 2 и все потоки не пересекаются. А что регулирует "VAR" в той же строчкп?
Аватара пользователя
AlexNikov
Мастер
Сообщения: 1212
Зарегистрирован: 05 янв 2014, 20:09
Репутация: 721
Настоящее имя: Алексей
Откуда: Томск
Контактная информация:

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

Сообщение AlexNikov »

Доброго дня. Запускаю управление шпинделя и помпой от K-Step. Встал вопрос - схему управления реле собрал согласно мануалу:
RelaysKStep.png (5260 просмотров) <a class='original' href='./download/file.php?id=37321&sid=1c1232962d5966ca96be222369a1bf1e&mode=view' target=_blank>Загрузить оригинал (115.77 КБ)</a>
Биты для управления выходами K-step "0" и "1"? У меня реле на 12V и соответственно подано напряжение 12V, прописал на кнопку M3 - установить для битов "0" и "1" состояние "1", при нажатии на кнопку реакции нет (после прописывания действий на кнопку INIT нажимался). Я не верно прописал что-то? (при 24V тоже самое, просто подключил цешку вместо реле - всегда 1,4V на выводе 2 и 4 относительно выводов 1 и 3)
Аватара пользователя
ukr-sasha
Мастер
Сообщения: 3401
Зарегистрирован: 21 мар 2011, 07:47
Репутация: 2180
Настоящее имя: Украинец Александр Григорьевич
Откуда: Киев, Украина
Контактная информация:

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

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

AlexNikov писал(а):при 24V тоже самое, просто подключил цешку вместо реле - всегда 1,4V на выводе 2 и 4 относительно выводов 1 и 3
Попробуйте относительно земли измерить.
Это вы падение напряжения на диоде измеряете. Там оптрон, как ключ открывается/закрывается.
AlexNikov писал(а):после прописывания действий на кнопку INIT нажимался
Код в студию.
С Кстепом дело не имел, но на вкладке пинов, есть другая нумерация.
kstep.png (5236 просмотров) <a class='original' href='./download/file.php?id=37325&sid=1c1232962d5966ca96be222369a1bf1e&mode=view' target=_blank>Загрузить оригинал (63.55 КБ)</a>
Аватара пользователя
AlexNikov
Мастер
Сообщения: 1212
Зарегистрирован: 05 янв 2014, 20:09
Репутация: 721
Настоящее имя: Алексей
Откуда: Томск
Контактная информация:

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

Сообщение AlexNikov »

ukr-sasha писал(а):
AlexNikov писал(а):при 24V тоже самое, просто подключил цешку вместо реле - всегда 1,4V на выводе 2 и 4 относительно выводов 1 и 3
Попробуйте относительно земли измерить.
Это вы падение напряжения на диоде измеряете. Там оптрон, как ключ открывается/закрывается.
AlexNikov писал(а):после прописывания действий на кнопку INIT нажимался
Код в студию.
С Кстепом дело не имел, но на вкладке пинов, есть другая нумерация.
Вложение kstep.png больше недоступно
Относительно 0V на выводах 1 и 3 +12V, на выводах 2 и 4 0V. Насколько я понимаю при активации нужных битов, на выходах 2 и 4 так же должно быть 12V, т.к. транзисторный ключ будет открыт током опто-транзистора в оптопаре, приложенным к базе ключа.

Вот код:

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

#include "KMotionDef.h"

// Defines axis 0, 1, 2 as simple step dir TTL outputs for KSTEP
// enables them
// sets them as an xyz coordinate system for GCode

int main() 
{
	double T0, LastX=0, LastY=0, LastZ=0, Tau;
	
	KStepPresent=TRUE;      // enable KSTEP input multiplexing
	FPGA(KAN_TRIG_REG)=4;  	// Mux PWM0 to JP7 Pin5 IO 44 for KSTEP 

	FPGA(STEP_PULSE_LENGTH_ADD) = 63 + 0x80;  // set polarity and pulse length to 4us
	
	ch0->InputMode=NO_INPUT_MODE;
	ch0->OutputMode=STEP_DIR_MODE;
	ch0->Vel=40000;
	ch0->Accel=200000;
	ch0->Jerk=4e+006;
	ch0->P=0;
	ch0->I=0.01;
	ch0->D=0;
	ch0->FFAccel=0;
	ch0->FFVel=0;
	ch0->MaxI=200;
	ch0->MaxErr=1e+006;
	ch0->MaxOutput=200;
	ch0->DeadBandGain=1;
	ch0->DeadBandRange=0;
	ch0->InputChan0=0;
	ch0->InputChan1=0;
	ch0->OutputChan0=8;
	ch0->OutputChan1=0;
	ch0->MasterAxis=-1;
	ch0->LimitSwitchOptions=0x123;
	ch0->LimitSwitchNegBit=169;
	ch0->LimitSwitchPosBit=168;
	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.000769;
	ch0->iir[2].B1=0.001538;
	ch0->iir[2].B2=0.000769;
	ch0->iir[2].A1=1.92076;
	ch0->iir[2].A2=-0.923833;
    EnableAxisDest(0,0);

	ch1->InputMode=NO_INPUT_MODE;
	ch1->OutputMode=STEP_DIR_MODE;
	ch1->Vel=40000;
	ch1->Accel=200000;
	ch1->Jerk=4e+006;
	ch1->P=0;
	ch1->I=0.01;
	ch1->D=0;
	ch1->FFAccel=0;
	ch1->FFVel=0;
	ch1->MaxI=200;
	ch1->MaxErr=1e+006;
	ch1->MaxOutput=200;
	ch1->DeadBandGain=1;
	ch1->DeadBandRange=0;
	ch1->InputChan0=0;
	ch1->InputChan1=0;
	ch1->OutputChan0=9;
	ch1->OutputChan1=0;
	ch1->MasterAxis=-1;
	ch1->LimitSwitchOptions=0x123;
	ch1->LimitSwitchNegBit=171;
	ch1->LimitSwitchPosBit=170;
	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.92076;
	ch1->iir[2].A2=-0.923833;
    EnableAxisDest(1,0);

	ch2->InputMode=NO_INPUT_MODE;
	ch2->OutputMode=STEP_DIR_MODE;
	ch2->Vel=40000;
	ch2->Accel=200000;
	ch2->Jerk=4e+006;
	ch2->P=0;
	ch2->I=0.01;
	ch2->D=0;
	ch2->FFAccel=0;
	ch2->FFVel=0;
	ch2->MaxI=200;
	ch2->MaxErr=1e+006;
	ch2->MaxOutput=200;
	ch2->DeadBandGain=1;
	ch2->DeadBandRange=0;
	ch2->InputChan0=0;
	ch2->InputChan1=0;
	ch2->OutputChan0=10;
	ch2->OutputChan1=0;
	ch2->MasterAxis=-1;
	ch2->LimitSwitchOptions=0x122;
	ch2->LimitSwitchNegBit=173;
	ch2->LimitSwitchPosBit=172;
	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=1;
	ch2->iir[2].B1=0;
	ch2->iir[2].B2=0;
	ch2->iir[2].A1=0;
	ch2->iir[2].A2=0;
	EnableAxisDest(2,0);

	DefineCoordSystem(0,1,2,-1);
	
	SetBitDirection(45,1);  // set Enable Signal as Output
	SetBit(45);				// Enable the amplifiers
	
//  Add a small amount of Coordinated Motion Path smoothing if desired
//	Tau = 0.001;  // seconds for Low Pass Filter Time Constant
//	KLP = exp(-TIMEBASE/Tau);
	KLP=0; // force to 0 to disable
//	printf("Tau=%f KLP=%f\n",Tau,KLP);
	
	
	for (;;) // loop forever
	{
		WaitNextTimeSlice();
		
		// Service Amplifier disable after no activity for a while
		if (ch0->Dest != LastX || ch1->Dest != LastY || ch2->Dest != LastZ)
		{
			// we moved - enable KStep Amplifers
			SetBit(45);
			T0 = Time_sec();  // record the time and position of last motion
			LastX=ch0->Dest;
			LastY=ch1->Dest;
			LastZ=ch2->Dest; 
		}
		else
		{
			if (Time_sec() > T0 + 10.0) ClearBit(45);
		}
	}

    return 0;
}
Пины 168-183, это пины для входных сигналов:
Вложения
K-step.png (5234 просмотра) <a class='original' href='./download/file.php?id=37326&sid=1c1232962d5966ca96be222369a1bf1e&mode=view' target=_blank>Загрузить оригинал (46.35 КБ)</a>
Аватара пользователя
ukr-sasha
Мастер
Сообщения: 3401
Зарегистрирован: 21 мар 2011, 07:47
Репутация: 2180
Настоящее имя: Украинец Александр Григорьевич
Откуда: Киев, Украина
Контактная информация:

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

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

AlexNikov писал(а):Относительно 0V на выводах 1 и 3 +12V, на выводах 2 и 4 0V. Насколько я понимаю при активации нужных битов, на выходах 2 и 4 так же должно быть 12V, т.к. транзисторный ключ будет открыт током опто-транзистора в оптопаре, приложенным к базе ключа.
Верно.
Аватара пользователя
AlexNikov
Мастер
Сообщения: 1212
Зарегистрирован: 05 янв 2014, 20:09
Репутация: 721
Настоящее имя: Алексей
Откуда: Томск
Контактная информация:

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

Сообщение AlexNikov »

В настройках KMotion прописал управление пинами так:
M3-M4.png
M3-M4.png (5.97 КБ) 5218 просмотров
Вроде все верно. Но реакции нет. :( Номера битов судя по мануалу "0" и "1" :thinking:
Ответить

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