Два серводвигателя с аналоговым управлением на одной оси

KFlop, KStep, KAnalog, KMotion...

Два серводвигателя с аналоговым управлением на одной оси

Сообщение Al4nse » 16 авг 2017, 12:08

Здравствуйте, уважаемые форумчане.
Я пришел сюда с просьбой о помощи.
Есть задача настроить станок. На одной из осей у него два серводвигателя EMJ-08APB22 (с инкрементальным энкодером) :rail: :rail: . Передача момента осуществляется через редукторы к рейкам. Серводрайверы PRONET-E-08A. Управляется этим всем платой KFlop+KAnalog.
Настраиваю всё согласно этой теме http://www.cnc-club.ru/forum/viewtopic.php?f=144&t=5553. Спасибо большое автору. Устанавливаю один канала ведущим, другой ведомым.
Дошло дело до первого запуска станка, настройки параметров скорости, ускорения, ПИД и тут обозначилась проблема, которую коллеги предвещали еще в начале пути. При инициализации контроллера и подачи питания на привода система устойчива. Во время движения никаких проблем тоже не наблюдается. Портал движется ровно. Но после останова станок колбасит, привода начинают гудеть, греться. Иногда ведомый, иногда ведущий. Иной раз получается уловить момент стабильности и привода затихают.
Пробовал добавить DeadBandRange - не помогло.
Кстати, до этого настраивали по Step/Dir контроллером Purelogic + Mach3. Ситуация примерно такая же. По этому собственно и решили перейти на Kflop
Не могу понять куда копать.
Возможно дело вот в этом: https://www.flickr.com/photos/153636133 ... res/240zSQ
А может быть дело в перекосе портала?
Очень хочется найти отклик людей, которые уже настраивали такие системы.
Код: Выделить всёРазвернуть
#include "KMotionDef.h"

void main()
{
   int BitA,Change1=0,Change2=0, DiffX2;
   int PosNoWrap, NewPos, Pos=0, wraps;
   double Factor=0;
   
   
   ch0->InputMode=ENCODER_MODE;
   ch0->OutputMode=DAC_SERVO_MODE;
   ch0->Vel=16666.7;
   ch0->Accel=16666.7;
   ch0->Jerk=1e+09;
   ch0->P=1;
   ch0->I=0;
   ch0->D=0;
   ch0->FFAccel=0;
   ch0->FFVel=0;
   ch0->MaxI=2047;
   ch0->MaxErr=10000;
   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+09;
   ch0->SoftLimitNeg=-1e+09;
   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;
      
   ch1->InputMode=ENCODER_MODE;
   ch1->OutputMode=DAC_SERVO_MODE;
   ch1->Vel=16666.7;
   ch1->Accel=16666.7;
   ch1->Jerk=1e+09;
   ch1->P=1;
   ch1->I=0;
   ch1->D=0;
   ch1->FFAccel=0;
   ch1->FFVel=0;
   ch1->MaxI=2047;
   ch1->MaxErr=10000;
   ch1->MaxOutput=2047;
   ch1->DeadBandGain=1;
   ch1->DeadBandRange=0;
   ch1->InputChan0=1;
   ch1->InputChan1=1;
   ch1->OutputChan0=1;
   ch1->OutputChan1=1;
   ch1->MasterAxis=0;
   ch1->LimitSwitchOptions=0x100;
   ch1->LimitSwitchNegBit=0;
   ch1->LimitSwitchPosBit=0;
   ch1->SoftLimitPos=1e+09;
   ch1->SoftLimitNeg=-1e+09;
   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=100000;
   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;
   
        Zero(0);
        Zero(1);
   EnableAxisDest(0,0);
   EnableAxisDest(1,0);
   
        DefineCoordSystem(0,-1,-1,-1);
   printf("Init complete\n");
   return 0;
}

Al4nse
Кандидат
 
Сообщения: 45
Зарегистрирован: 16 авг 2017, 09:34
Репутация: 1
Настоящее имя: Евгений

Вернуться в KFlop

Кто сейчас на конференции

Зарегистрированные пользователи: Alexa [Bot], Duhas, Google [Bot], HeavyToshik, hmnijp, Majestic-12 [Bot], molchec, MSN [Bot], Гагарин, Yandex [bot]

Reputation System ©'