Вопросы по работе и настройке контроллера KFLOP

Al4nse
Новичок
Сообщения: 3
Зарегистрирован: 02 авг 2017, 09:26
Репутация: 2
Страна: Россия
 

  »

Всем привет. На Вашу голову упал еще один счастливый обладатель сие чудесной техники. После пары недель настройки упёрся в одну проблемку.
Итак, по порядку.
Задача:
Поднять станок лазерной резки на трех осях с сервоприводами с аналоговым управлением. Рабочая область большая (честно, пока не знаю какая), по сему на одной оси установлено два сервопривода.
Что имеем:
1 Сервомоторы Estun EMJ-08APB22. Два на оси X. Один на оси Y. За ось Z пока не брался (Там датчик приближения, это отдельная тема.)
2. Серводрайверы к моторам
3. Плата KFlop и KAnalog
4. Программное обеспечение версии 4.33
По вопросу:
На данном этапе работы стоит задача двигать осью X. Чтобы два мотора двигались синхронно, не было перекосов, заклинивания и т.д.
написал код инициализации, как описано в теме.

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

#include "KMotionDef.h"
void 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=166667;
	ch0->Accel=333333;
	ch0->Jerk=666667;
	ch0->P=1.5;
	ch0->I=0;
	ch0->D=0;
	ch0->FFAccel=0;
	ch0->FFVel=0;
	ch0->MaxI=2047;
	ch0->MaxErr=1e+009;
	ch0->MaxOutput=2047;
	ch0->DeadBandGain=1;
	ch0->DeadBandRange=0;
	ch0->InputChan0=0;
	ch0->InputChan1=0;
	ch0->OutputChan0=0;
	ch0->OutputChan1=2;
	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=100000;
	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;	

	ch2->InputMode=ENCODER_MODE;
	ch2->OutputMode=DAC_SERVO_MODE;
	ch2->Vel=166667;
	ch2->Accel=333333;
	ch2->Jerk=666667;
	ch2->P=1.5;
	ch2->I=0;
	ch2->D=0;
	ch2->FFAccel=0;
	ch2->FFVel=0;
	ch2->MaxI=2047;
	ch2->MaxErr=1e+009;
	ch2->MaxOutput=2047;
	ch2->DeadBandGain=1;
	ch2->DeadBandRange=0;
	ch2->InputChan0=2;
	ch2->InputChan1=2;
	ch2->OutputChan0=2;
	ch2->OutputChan1=2;
	ch2->MasterAxis=0;
	ch2->LimitSwitchOptions=0x100;
	ch2->LimitSwitchNegBit=0;
	ch2->LimitSwitchPosBit=0;
	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=100000;
	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;
 
	EnableAxis(0);
	EnableAxis(2); 
 DefineCoordSystem6(0,-1,-1,2,-1,-1);
 printf("Init complete\n");
	return 0;
}

Инициализирую его. В KmotionCNC задаю G0 X1000. Мотор оси 0 (ведущий) отрабатывает задачу, а мотор оси 2 (ведомый) "пытается следовать за нулевым, но что-то его удерживает в нуле". В консоли программы KMotion всё отрабатывает на ура, как и в утилите Step Response, моторы движутся синхронно и счастью моему нет предела.
Может кто настраивал ось в Slave режиме, в чем моя ошибка?
P.S. Во время работы c KFlop'ом обнаружилось много непонятных мне вещей. 1. Например, как видно в коде я использую 0 и 2 канал для подключения сервоприводов, всё по тому, что на входе первого канала значения постоянно инкриментируются. Это не зависит, подключен или нет драйвер, активирована ли ось. ПОСТОЯННО. 2. В KmotionCNC в оси Z значения машинных координат и энкодера различаются на один мм. в других осях всё норм. оффсеты по нулям. Приходится ставить оффсет Z на одну единицу меньше постоянно. Это немножко напрягает.
Надеюсь, этот пост оживит тему.

ukr-sasha
Понимающий
Сообщения: 205
Зарегистрирован: 10 окт 2014, 11:08
Репутация: 447
Страна: Украина
 

  »

Надо
DefineCoordSystem6(0,-1,-1,-1,-1,-1);
вместо
DefineCoordSystem6(0,-1,-1,2,-1,-1);

Al4nse
Новичок
Сообщения: 3
Зарегистрирован: 02 авг 2017, 09:26
Репутация: 2
Страна: Россия
 

  »

Отвечаю на свой вопрос:
Оказывается подчиненные оси не могут присутствовать в системе координат. А хотелось бы, чтобы оператор видел положение сервопривода. Отсюда ошибка в коде DefineCoordSystem6(0,-1,-1,2,-1,-1);
По наблюдениям.
1. После перехода на прошивку 4.34i инкриментация на втором канале пропала. 2. в KMotionCNC значения не различаются, но эта единица осталась во вкладке Axis программы Kmotion.
Всё бы было хорошо, но теперь в прошивке 4.34i в программе Step Response после задания настроек и нажатия Move, контроллер приходит в бешенство. Аналоговое значение на втором канале 2047. После чего все оси начинают крутится на скорости 120 об/мин.Повторная инициализация не помогает. Помогает только перезагрузка.
Откат к 4.33 ничего не поменял :hmm:
Видео работы
https://www.flickr.com/photos/153636133 ... es-3fPECe/

ukr-sasha, спасибо за ответ. пойду дальше осваивать технику

smart4on
Новичок
Сообщения: 26
Зарегистрирован: 23 сен 2016, 23:54
Репутация: 15
Страна: Беларусь
 

  »

Здравствуйте, прошу помощи в параметрирование KFLOP для ШД.
- подключаю сигналы Step- и Dir- к 15,16 контактам разъема JP7
Step+ и Dir+ подключаю к +5V (контакт 24 разъема JP7);
- подключаю KFLOP к питанию 5V. (проверяю мультиметром, на разъеме платы висит 5В);
- Снимаю ждампер (J3), отключения питания от USB порта. Подключаю Kflop к ПК;
- Вкладка Console - Version - Send, убеждаюсь что связь установлена и что версия ПО соответствует аппаратно железу;
- C Program - Open - InitStepDir3Axis.c - этот файл сразу пере сохраняю на свой (к примеру называем Mydak.c;
- Config&Flash - Chanel 0 - Import All from Open C Program - Input No Input - Output Step Dir - Output Channels 0-1-0 - Export All to Open C Program;
- C Program меняю значение ch0->Vel=128000; так как деление шага 1х32
ch0->Accel=128000;
ch0->Jerk=128000;
ch0->P=1;
Больше здесь ничего не трогаю. Просто сохраняю (Save);

По идеи если сейчас открыть программу Kmotion CNC добавив во вкладке User Buttons адрес куда сохранил файл. И в параметрах оси выставить свои расчетные значения, то двигатель должен начать вращаться. Но он не крутиться.

В чем я могу ошибаться?

Замерял напряжение на клемах драйвера. Между Step + и Step- висит 1.56V при нажатии на движение 1.27V.
Между Dir+ и Dir - dbcbn 4.29V и при нажатой кнопки перемещения 1.3V

smart4on
Новичок
Сообщения: 26
Зарегистрирован: 23 сен 2016, 23:54
Репутация: 15
Страна: Беларусь
 

  »

Вроде как решил свою проблему.
Писать что я делал и пробовал - долго, поэтому показал способ подключение в видео:
https://youtu.be/9AtnZKWUFNU

Predator
5-й разряд
Сообщения: 5933
Зарегистрирован: 30 авг 2014, 19:14
Репутация: 4135
Страна: СССР
 

  »

smart4on, А, что с голосом в ролике? :)

smart4on
Новичок
Сообщения: 26
Зарегистрирован: 23 сен 2016, 23:54
Репутация: 15
Страна: Беларусь
 

  »

Predator, Увеличил скорость в видео, чтобы не было сильно длинным.

Predator
5-й разряд
Сообщения: 5933
Зарегистрирован: 30 авг 2014, 19:14
Репутация: 4135
Страна: СССР
 

  »

Так, надо было равномерно на всех участках. ;)

ukr-sasha
Понимающий
Сообщения: 205
Зарегистрирован: 10 окт 2014, 11:08
Репутация: 447
Страна: Украина
 

  »

smart4on писал(а):Источник цитаты Вроде как решил свою проблему.
Писать что я делал и пробовал - долго, поэтому показал способ подключение в видео:
https://youtu.be/9AtnZKWUFNU

По правилам хорошего тона указывают ссылки на первоисточник, если используют чей то текст.

BenAflek
2-й разряд
Сообщения: 2655
Зарегистрирован: 29 окт 2014, 08:16
Репутация: 1054
Страна: СССР
 

  »

ukr-sasha писал(а):Источник цитаты По правилам хорошего тона указывают ссылки на первоисточник, если используют чей то текст.

Использовали твой?


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