асинхронный двигатель и контроллер

Автор Dtolok, 26 Дек. 2015 в 00:34

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Dtolok

а как рассчитать значения пид регулятора? под параметры частотника и двигателя?

Dtolok

Пи регулятор точно порог не ограничивает! ставлю порог 5А - пофиг - жрет 28А

on4ip

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

Dtolok

продолжаются мои мытарства! собрал частотник на 380в. подключил к двигателю - внес параметры и .... нифига! с места так и не сдвинулся ... слышно как поле крутится ... толку то. маленький двигатель заработал без проблем. а вот  с перемотанным проблема - даж шнайдеровский частотник как то странно с ним стартует... но все равно стартует и работает. хотя на входе показывает 15А(клещи) а защита срабатывает через некоторое время - 35А на выходе частотника.

Dtolok

подскажите - как выставить стартовое  напряжение ? dsPIC33 - при переходе на 380в - частотник стартует не с  35в при 5Гц  а с практически удвоенного напряжения и при повышении частоты растет и напряжение. не могу разобраться где ограничить?  по всей видимости проблема с регистрами фаз ?

Dtolok

в общем разобрался с проблемой! оказывается и не было проблемы - это все помехи на шлейфе! повесил бусинку - и все пошло поехало ... правда датчики тока все еще шумят! буду думать как их победить. да еще - пока частотник работает в открытом цикле ... читал в литературе - в закрытый должен переходить при наборе 80%  оборотов - так ли это??

Dtolok

по фазным датчикам проходит скорее всего помеха - МК отрубает двигатель из за превышения! чем можно бороться? датчик тока ACS758 - резистор 4.7кОм и конденсатор  10нФ

Gostya

Осциллографом посмотрите что на выходе датчика, включение как выполнено? Выход с датчика-> резистор 4.7к -> конденсатор на "землю" 10 нф? Постоянная времени в 47 мкс не смущает? Как питание датчиков организовано? Конденсаторы по питанию стоят? Питание общее у всех? Нет контуров из проводов, в которых наводиться может?

Dtolok



питание идет отдельно от своего стабилизатора. сразу возле ножек датчика стоят конденсатор 0,1мкФ и тантал 10мкФ. под датчиком полигон земли. самое интересное - на малых оборотах двигателя сбой происходит позже (но происходит) а на больших значительно раньше. такое впечатление что что то где то накапливается а потом сбоит :) плата опторазвязки с датчиками тока. причем ставил датчики тока отдельно - ситуация та же !

Добавлено 22 Июнь 2016 в 09:39

Цитата: Gostya от 22 Июнь 2016 в 09:22
Постоянная времени в 47 мкс не смущает? Как питание датчиков организовано?
питание датчиков общее 3.3В - на плате развязки стоит свой стабилизатор  - все питается от общего АС-DC 220-12в дальше DC-DC на драйвера с оптронами. частота дискретизации 20кГц - на нее надо подбирать RC цепочку?

Gostya

RC надо как можно меньше, но чтобы помех не хватать. Попробуй 1к и 300pf  примерно такие номиналы в цепи dc-dc с токового шунта... Вообще для ижбт модулей допускается 6хInom в течении 5-10 мкс у semikrona, т.е. токовая защита (по десату или датчикам) должна в это время укладываться. И даже если используешь датчики просто для обратной связи, мне кажется задержка информации о токе приличная...

Dtolok

я уже думал - может быть сравнивать ток по двум датчикам и если оба превышают - орубать шим. отклик датчика ACS758 - 3мкс. у этого датчика тока 4.7кОм должно стоять по даташит - а вот конденсатор можно подобрать

Добавлено 22 Июнь 2016 в 10:21

у меня такое впечатление что ошибка - накапливается... может помеху вносить AC-DC ? имеет ли смысл попробовать трансформаторное питание

Gostya

4.7k это минимальное нагрузочное сопротивление, а 10нф это максимальная нагрузочная емкость. И к помехоподавляющей RC цепочке отношения не имеет. Если все компактно, то возможно и RC не нужна вовсе...Помогаю другу кое-что изготовить, тоже решили такой датчик использовать, вчера буквально смотрел, какой отклик- реально в районе 5мкс (датчик на 200 ампер биполярный). Попробуй вообще каждый от батарейки своей запитать, чтобы только общая земля была.. Когда RC номиналы изменишь, тоже доп информация будет, участяться сбои или нет, начни с RC...

on4ip

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

Gostya

Думаю имеет смысл железо сначала в порядок привести, потом ПО править. А сбоит ПО возможно в этом случае...

on4ip

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

Dtolok

//---------------------------------------------------------------------
// The ADC ISR does speed calculation and executes the vector update loop.
// The ADC sample and conversion is triggered by the PWM period.
// The speed calculation assumes a fixed time interval between calculations.
//---------------------------------------------------------------------
void __attribute__((interrupt, no_auto_psv)) _AD1Interrupt(void)
{   
    IFS0bits.AD1IF = 0;   // Clear Interrupt Flag
    if( uGF.bit.RunMotor )
        {     
            MeasCompCurr2();/* get the current from ADC bufs */
             Pot = ADC1BUF0;
            if (Pot < - 30000) Pot = -30000;
            tempI1 = ADC1BUF1; 
            if (tempI1 < 0) tempI1 = - tempI1;
            tempI2 = ADC1BUF2;   
            if (tempI2 < 0) tempI2 = - tempI2;           
            if ( tempI1 > IErr || tempI2 > IErr )
                {
                    PTCON = 0x0000;         // Disable PWM for center aligned operation
                    LATB  = LATB & 0x03FF;
                    uGF.bit.RunMotor = 0;
                    uGF.bit.ChangeMode = 1;
                    if (uGF.bit.OpenLoop) uGF.bit.OpenLoop = 0;                   
                    flag_IErr = 1;             
                }                     
            if ( tempI1 > ILim || tempI2 > ILim ) flag_ILim = 1;
            else flag_ILim = 0; // Limit Cur
           
            ClarkePark();   /* Clarke and Park */               
            Estim();        /* estimate speed & angle */           
            DoControl();    // Calculate control values

            if (!uGF.bit.OpenLoop) SincosParm.qAngle=EstimParm.qRho;
            else SincosParm.qAngle=ParkParm.qAngle;
           
           
            SinCos();
            ParkParm.qSin=SincosParm.qSin;
            ParkParm.qCos=SincosParm.qCos;

            InvPark();   

            CalcRefVec();// Calculate Vr1,Vr2,Vr3 from qValpha, qVbeta
//            SVGenParm.qVr1 = 0.25 *  SVGenParm.qVr1;
//            SVGenParm.qVr2 = 0.25 *  SVGenParm.qVr2;
//            SVGenParm.qVr3 = 0.25 *  SVGenParm.qVr3;
           
             CalcSVGen();// Calculate and set PWM duty cycles from Vr1,Vr2,Vr3
         }   

вот кусок программы - прерывание по ацп - ацп запускается с шим - ничего не обычного -  ADC1BUF1 и  ADC1BUF2 результаты ацп

on4ip

Осталось понять значения АЦП попадаеют в модуль КЛАРКА И ПАРКА.
Как тубрики получаемые из ADCbuf связаны с реальным током( а связаны они через передаточные тракта).
В разомкнутом или замкнутом контуре работает система когда происходит ошибка.
В жизни все не так, как на самом деле.

Dtolok

вот как происходит преобразование из АЦП перед попаданием в кларка парка
; MeasCompCurr

;Description:       
;  Read Channels 1 & 2 of ADC, scale them as signed fractional values
;  using qKa, qKb and put the results qIa and qIb of ParkParm.
;  Running average value of ADC-Ave is maintained and subtracted from
;  ADC value before scaling.
;
;  Specifically the offset is accumulated as a 32 bit signed integer       
;         iOffset += (ADC-Offset)
;  and is used to correct the raw ADC by
;         CorrADC = ADCBUFn - iOffset/2^16
;  which gives an offset time constant of ~ MeasurementPeriod*2^16
;
;  Do not call this routine until conversion is completed.
;
;  Scaling constant, qKa and qKb, must be set elsewhere such that
;         qIa = 2 * qKa * CorrADC1
;         qIb = 2 * qKb * CorrADC2
;  The factor of 2 is designed to allow qKa & qKb to be given in 1.15.
;
;
;Functional prototypes: 
;         void MeasCompCurr( void );
;         void InitMeasCompCurr( short iOffset_a, short iOffset_b );
;
;On Start:   Must call InitMeasCompCurr.
;
;On Entry:   MeasCurrParm structure must contain qKa & qKb. ADC channels 1 & 2
;            must contain signed fractional value.
;
;On Exit:    ParkParm will contain qIa & qIb.

а я просто сравниваю значения АЦП с максимально допустимым значением тока модуля в прерывании АЦП. у меня модуль 75А датчики тока 100А - значит если  АЦП выдаст больше чем 24000 ( 75* 32768 /100 = 24000 , максимальное для 100а -32768) - то ток достиг значения 75А. вот на это я и ориентируюсь по превышению . модуль максимально выдерживает 150А . может и имеет значение разрешить импульсы до 100А (32768)