Sida 10 av 15

Postat: 9 augusti 2006, 19:15:17
av pheer
warpcore: Du är helt tokig! är så jävla ledsen på mina föräldrar (vilka annars?) att jag inte fick en hjärna som förstod matte lätt, annat hade jag satt igång och byggt nått liknande du gjort pheer...
Men du har ju byggt en cnc mycket bättre än vad jag skulle göra...

warpcore: när du är klar med din lösning sen så köper jag lätt idén eller ett ex av dig till mina projekt, förutsatt att inget brinner upp :)
Nu tycker jag att du har lite höga krav :lol:

millox: Det låter vettigt. Några hundra ms?

Postat: 9 augusti 2006, 19:25:09
av Millox
I våra simuleringar körde vi en sekund, men det var mer än vad som behövdes. Har du en mindre motor än den vi använde (tror den var 27kW) så borde det räcka med mindre än så.

Postat: 9 augusti 2006, 23:45:33
av funkis
Millox!

Hur styr man en standard BL AC motor?

Jamenar vanligtvis är de väll kopplade som
BLDC, dvs delta/stjärn koppling så gurgla med
faserna är väll det enda man kan göra igentligen
då styr/switch elektroniken är i princip lika dan
som BLDC!? (plus all annat jox dom kommer med kraftigare motorer.)

Jamenar vektoriseringen är väll en mjukvaru sak?

/funkis

Postat: 10 augusti 2006, 09:36:50
av Millox
Elektroniken kan vara samma för BLDC-styrning ja men det kan också vara en transistorbesparande koppling där man bara använder tre transistorer och ett antal dioder. För en synkron-/asynkronmotor man driver med vektorstyrning är det lite mer komplicerat, dels för att man inte direkt styr fasspänningarna och dels för att det är sinusar och inte fyrkantsvåg.

Vekorstyrningen fungerar så att man mäter någon storhet i motorn och därefter räknar fram rotorvinkeln. Med denna rotorvinkel kan man transformera från en stationär referensram till en roterande referensram. I den roterande referensramen kommer strömmarna att vara konstanta varför man enkelt kan reglera dem till önskade värden. Man får ut två strömmar där den ena motsvarar motorns magnetisering och den andra motsvarar det drivande momentet. Det är därför väldigt enkelt att styra på detta sätt eftersom man kan beräkna varvtalet från rotorvinkeln och styra momentet genom linjära ekvationer och få en mycket bra reglering på varvtalet. Ska man styra med konstant moment är det ännu lättare eftersom man bara räknar ut vilken ström man behöver för det varvtalet och sen reglerar.

Bekymret med vektorstyrning är rotorvinkeln. Med den är allt bara enkla ekvationer och simpla beräkningar(dock fyra cos/sin-beräkningar som kan ta lite tid). För en BLDC/SM är det omöjligt att veta startläget på magnetfältet utan någon typ av magi (där magi normalt sett är lika med hall-givare i en BLDC) och utan att veta startläget kan man inte starta motorn och garantera att den går åt rätt håll. Man måste antingen mäta eller hålla reda på det genom nån typ av varvtalsmätare med minne.

En bra bok(bra kompendium kanske) är Control of Variable-Speed Drives av Lennart Harnefors på Mälardalens universitet i Västerås. Den går iaf att få tag på i Göteborg(DC på chalmers) men kan nog finnas på andra högskolor i landet. Det krävs dock att man har bra koll på komplexräkning och matriser.

Postat: 10 augusti 2006, 17:44:15
av pheer
Lennart Harnefors. en besynnerlig herre. Duktig som f-n men kanske inte världens bästa pedagog. Hade honom delvis i 10p elektriska drivsystem...

Postat: 10 augusti 2006, 23:12:43
av funkis
>Elektroniken kan vara samma för BLDC-styrning ja men det kan också vara >en transistorbesparande koppling där man bara använder tre transistorer >och ett antal dioder.

Jo jag är medveten om varianterna på detta tema om styrning, men min fråga var mera relaterad till vektoriserad styrning av AC 3 fas motorer.

>För en synkron-/asynkronmotor man driver med vektorstyrning är det lite >mer komplicerat, dels för att man inte direkt styr fasspänningarna och dels >för att det är sinusar och inte fyrkantsvåg.

Alltså , det är välli rörigt detta (generellt sett)
med benämningen på motorer.

>Vekorstyrningen fungerar så att man mäter någon storhet i motorn och >därefter räknar fram rotorvinkeln.

Tex strömen som jag nämde.

>Med denna rotorvinkel kan man transformera från en stationär referensram
>till en roterande referensram. I den roterande referensramen kommer >strömmarna att vara konstanta varför man enkelt kan reglera dem till >önskade värden. Man får ut två strömmar där den ena motsvarar motorns
>magnetisering och den andra motsvarar det drivande momentet. Det är
>därför väldigt enkelt att styra på detta sätt eftersom man kan beräkna
>varvtalet från rotorvinkeln och styra momentet genom linjära ekvationer
>och få en mycket bra reglering på varvtalet.

Mjukvara!

> Ska man styra med konstant moment är det ännu lättare eftersom man
>bara räknar ut vilken ström man behöver för det varvtalet och sen reglerar.

>Bekymret med vektorstyrning är rotorvinkeln. Med den är allt bara enkla >ekvationer och simpla beräkningar(dock fyra cos/sin-beräkningar som kan >ta lite tid). För en BLDC/SM är det omöjligt att veta startläget på >magnetfältet utan någon typ av magi (där magi normalt sett är lika med >hall-givare i en BLDC) och utan att veta startläget kan man inte starta >motorn och garantera att den går åt rätt håll. Man måste antingen mäta >eller hålla reda på det genom nån typ av varvtalsmätare med minne.

Där håller jag inte med dig.
Ett sätt är att förmagnitisera motorn igenom att lägga en spänning på
en av faserna (inte två faser aktiva och en död i roterande ordning) så
får du ett magnetfält igenom den ström som flyter, strömen kan du mäta
med en standard highside eller lowside current monitor, jamenar du behöver
inte ens mäta för att veta rotationsriktningen. Pulsen kommer att dra
motorn till närmsat pol och bim där har du start positionen.

Hur får man det att funka , jo att igeom mäta *back emf* i motorn.

Inte behöver man någon varvtals mätare inte, när väl motorn är startad
i den riktning man behagar så *alignar* den sig in automatiskt, därav
så kan man faktiskt annvända en BLDC motor kontroll till flera parallelt
koppllade multipols BLDC motorer, i de första varven så går all ojämt,
olika varvtal och hackigt sedan så börjar de *aligna* uppsig, och sen
efter några sekunder har du full drag på all motorer och du kan
reglera varvtalet på samtliga synkront.

Jag har själv sett det med egna ögon.
Det är så RC flyg folket kör sina fyrmotoriga el byggen.tex.

>en bra bok(bra kompendium kanske) är Control of Variable-Speed Drives
>av Lennart Harnefors på Mälardalens universitet i Västerås. Den går iaf att
>få tag på i Göteborg(DC på chalmers) men kan nog finnas på andra
>högskolor i landet. Det krävs dock att man har bra koll på komplexräkning
>och matriser.

Bra tipps, men kolla in länken till motor forumet och vad de pysslar med
de har löst rotations riktning och dina andra problem för länge sedan utan
att ha särdeles mycket magi och hall sensorer. 99 % av dem kör synkront
BL utan hallsensorer, det är ju det som är hela grejjen med sensor lösa
motorkontroll system.

Jawell, du har säkert rätt i det mesta och vet betydligt mer än jag,
jag är/var bara en aning konfunderad över detta med AC vektorstyrning.

/funkis

Postat: 11 augusti 2006, 09:44:07
av Millox
Vi kanske borde sluta stjäla pheers tråd ;-) Nåväl, ett svar till kanske...

Ang. motorförvirringen, jag har använt namnen asynkronmotor och synkronmotor för motorer som är "stora" och går på 400 V, och benämningen BLDC för en synkronmotor med annan matning och som används i mindre applikationer (lägre effekt)

En vanlig asynkron motor styr man precis som en synkron dito (en bldc alltså), fast man har ett bekymmer i att man måste beräkna rotorhastigheten också och inte bara flödets rotationshastighet så det är en mer komplicerad metod, men det blir bara marginellt mer att göra för en dsp.


> Där håller jag inte med dig.
> Ett sätt är att förmagnitisera motorn igenom att lägga en spänning på
> en av faserna (inte två faser aktiva och en död i roterande ordning) så
> får du ett magnetfält igenom den ström som flyter, strömen kan du mäta
> med en standard highside eller lowside current monitor, jamenar du behöver
> inte ens mäta för att veta rotationsriktningen. Pulsen kommer att dra
> motorn till närmsat pol och bim där har du start positionen.

Hehe, fast just precis det du beskriver är ju rätt magiskt ändå. Jag vet inte om jag skulle vilja sitta i en elbil som ska ta och bedöma sin rotorposition på det sättet. Speciellt inte om den använder fyra in-wheel motorer.

Att det tar flera sekunder för motorerna att gå rätt är ju acceptabelt endast i mycket få applikationer. Jag skulle tex inte ens vilja att det var så i en radiostyrd bil. Men jag tror att detta är kärnan till att vi pratar förbi varandra. Jag tänker mig att man ska veta precis säkert från första början till slutet exakt hur fort och hur många varv en motor gått för att kunna använda i exempelvis positioneringsapplikationer.

Att mäta ström och spänning är dock inte tillräckligt för att veta hur rotorn står utan att den också roterar. Man kan göra gissningar och dra slutsatser baserad på erfarenhet, men det är det jag menar kvalificerar under ämnet magi ;-) Det som krävs för att det inte ska vara magi är att det är kontinuerligt reproducerbart och det är det inte sålänge man inte har någon typ av rotorpositionsmätning.

För en asynkronmotor däremot går det att helt utan magi starta och köra utan annat än strömmätning, men det beror på att den inte behöver ställa in sig i linje med fältet. Det här är råkoolt ;-) men tyvärr är det inte helt stabilt i låga farter. Det beror för mycket av modellparametrarna och går lätt i självsvängning (vilket kan vara lite kul att titta på, men inte så kul om det händer när man ska använda det).

De där länkarna läste jag igenom som hastigast så det kanske är därför jag inte uppfattat allt där.

Postat: 30 augusti 2006, 18:53:33
av pheer
Jag hade ju tänkte börja med vektorregleringen nu men det blev inte riktigt som jag tänkt mig. Har två st olika modeller av strömtrafos.
Den ena har 3 ben, ska ha +-13V ger sinusformad spänning ut.
Den andra har 6 ben, ska ha +-15V och ger likspänning ut.

Jag ritade från början för den med 3 ben men nu så lödde jag ihop ett nätagg med +-15V, fixade med OPs för den med sinus ut. OP behöver dessutom matning som inte får överstiga +-9V. Inte ett enda rätt mao. Detta har gjort att jag tappat suget lite. Men jag kommer igen nån gång i höst.

Men jag har fortsatt lite på den befintliga mjukvaran. Lånade en funktion från ABB som de kallas "noise smoothing". Det går ut på att man varierar switchfrekvensen slumpmässigt för att fördela switcholjudet på flera frekvenser vilket gör att det upplevs mindre jobbigt. Jag provade med en switchfrekvens på 8kHz+-5%(eller var det +-10%?) och det fungerade riktigt bra. Spelade in ljudet med en billig mikrofon och körde fft på det i matlab:

Bild

I övrigt så fungerar omriktaren riktigt bra. Ingenting som gått sönder sedan de nya snubberkondingarna kom på plats. Råkade även trycka på reverse häromdagen(vilket orsakade den första kortisen jag hade i dc-ledet) utan problem. Ska skriva om det nu så att programmet skickar ett reverse-kommando istället för att sätta den parametern direkt.

Millox: jag tänkte att du kunde ha en distanskurs i förmagnetisering. Jag funderade lite på det du skrev men blev inte så mycket klokare. Hittade inget bra på google heller, förutom att ABB har/hade det i sin ACS140...

Postat: 31 augusti 2006, 15:37:15
av Millox
Vi börjar med vektorstyrningen:

Kod: Markera allt

Ualfa = 2 ./ 3 .* Ua  - Ub .* 1 ./ 3 - Uc .* 1 ./ 3;
Ubeta = Ub .* 1 ./ sqrt(2) - Uc .* 1 ./ sqrt(3);

Ud = cos(theta) .* Ualfa - sin(theta) .* Ubeta;
Uq = sin(theta) .* Ualfa + cos(theta) .* Ubeta;
För strömmarna är det bara att ersätta U med respektive i.

theta är rotorvinkeln som jag pratat om tidigare... Det är den som är hela bekymret i vektorstyrningen. Id är magnetiseringsströmmen och Iq är den momentgenererande strömmen. Skrivet på komplex form blir det Is = Id + j .* Iq. Detta gäller dock endast när man har perfekt fältorientering, men det är det man eftersträvar vid vektorstyrning och därför kan man anta att det gäller.

Momentet och flödet blir:

Te = 3 n ./ 2 .* phiR .* iq;
Phi = id .* LM; % LM är inversa-Pi-modellens magnetiseringsinduktans.

Det är dessa som är de båda kontrollparametrarna vid verktorstyrning. Flödet sätter man till märkflödet (för drift upp till märkvarvtal, fältförsvagning för högre varv kan jag skriva om lite senare) och momentet kontrollerar man till det som önskas för att få rätt varvtal eller annan parameter man vill styra.

Det var den lätta biten, den svåra kommer nu. Det finns fyra vanligen använda kombinationer av flödesgissning(flux estimator på engelska, ingen aning om den korrekta svenska översättningen) där jag bara tänkt ta upp (SC)VM IFO, där man endast behöver mäta två av strömmarna i trefasen samt har ganska enkla beräkningar för att få fram styrspänningarna.

ed = Ud - (Rs .* id + w1 .* L .* iq);
eq = Uq - (Rs .* iq - w1 .* L .* id);

wr = w1 - w2; % w1 är alltså statorfrekvensen och w2 är eftersläpningen

w2 = RR .* iq ./ PhiR;

PhiR = (my .* ed + lamda .* sign(w1) .* eq) ./ (p + lamda .* abs(w1));
w1 = (eq - lamda .* sign(w1) .* ed) ./ PhiR;

Det här torde vara det enda vi behöver...

Hmm, kom på en sak. Räkna såhär:

d PhiR / dt = ed + lamda .* eq - lamda .* w1 .* PhiR
w1 = (eq - lamda .* ed) ./ PhiR
theta = int(w1,dt)

börja med PhiR = 0, w1 = 0 och räkna ut dPhiR/dt, så får du nästa PhiR-värde med PhiR + dPhiR/dt med vilket du kan räkna ut w1 osv. Det blir algoritmiskt eftersom det inte finns algebraiska lösningar, lamda är dämpningen, sätt till typ 0.1-0.2 eller så.

Förmagnetisering sker automagiskt genom att sätta referensen för phi till nått och vänta med att sätta momentreferensen. Eller så kan du göra det genom att sätta Ud = 325 och Uq = 0 och theta = 0. Efter nån sekund är det bara att räkna ut ekvationerna längst upp igen med nytt theta och Uq. Du bör kunna få igång det ganska hyffsat så, men det blir inte speciellt dynamiskt. Jag har lite svårt att förklara här och har inte riktigt tid just nu. Ska ta och kolla lite mer på det sen, och bland annat lägga upp en simulink-fil med det. Tror det är det lättaste sättet att förklara på.

Postat: 31 augusti 2006, 19:17:42
av MadModder
Funderade på schemat på sidan 8 ( http://mrmackey.servecounterstrike.com/ ... 06_ops.jpg ) och tycker att likriktardioderna är kopplade väldigt konstigt. Det blir ju i princip kortslutning varannan halvperiod...
Det borde vara såhär:
[img]http://madmodders.se/temp/2006-08-06_ops[1].gif[/img]

Postat: 31 augusti 2006, 22:29:19
av pheer
Tack för att du tog dig tiden millox men det var inte riktigt vad jag frågade efter. Men det kan visa sig vara till hjälp senare.

Jag tänkte mer på hur magnetiseringen går till rent praktiskt med sinus pwm. Det är alltså en dc-spänning som ska läggas på respektive linding? Med vilken amplitud? Jag ska nog ta o koppla in mina deltakopplade lysdioder och prova lite på dem först...

Det vore kanon om du ville dela med dig av simulink-filen.

MadModder: jo det blev kanske lite konstigt, jag hade ritat som du visar men så fick jag för mig att det kunde ritas snyggare, men det blev visst fel. I vilket fall som helst så är det redan färdiglött och avprovat utan problem. Jag brukar inte följa ritningen så noga utan tänker ut kopplingarna i "realtid" :)

Postat: 31 augusti 2006, 22:42:15
av funkis
Millox skrev:Vi börjar med vektorstyrningen:

Kod: Markera allt

Ualfa = 2 ./ 3 .* Ua  - Ub .* 1 ./ 3 - Uc .* 1 ./ 3;
Ubeta = Ub .* 1 ./ sqrt(2) - Uc .* 1 ./ sqrt(3);

Ud = cos(theta) .* Ualfa - sin(theta) .* Ubeta;
Uq = sin(theta) .* Ualfa + cos(theta) .* Ubeta;
För strömmarna är det bara att ersätta U med respektive i.

Momentet och flödet blir:

Te = 3 n ./ 2 .* phiR .* iq;
Phi = id .* LM; % LM är inversa-Pi-modellens magnetiseringsinduktans.

ed = Ud - (Rs .* id + w1 .* L .* iq);
eq = Uq - (Rs .* iq - w1 .* L .* id);

wr = w1 - w2; % w1 är alltså statorfrekvensen och w2 är eftersläpningen

w2 = RR .* iq ./ PhiR;

PhiR = (my .* ed + lamda .* sign(w1) .* eq) ./ (p + lamda .* abs(w1));
w1 = (eq - lamda .* sign(w1) .* ed) ./ PhiR;

Det här torde vara det enda vi behöver...

Hmm, kom på en sak. Räkna såhär:

d PhiR / dt = ed + lamda .* eq - lamda .* w1 .* PhiR
w1 = (eq - lamda .* ed) ./ PhiR
theta = int(w1,dt)
.
Banne mej, du kan din sak Millox! :-)
Du vet väll att det är big bussiness med dessa styrningar idag!
Micket ståålar! :-)

/Funkis

Postat: 1 september 2006, 09:26:24
av Millox
pheer: Jo, jag svarar ungefär på frågan ;-)

Problemet var väl att jag inte förtydligade det hållet. Men stoppa in de båda transformationerna i två matriser:

Kod: Markera allt

T32 = [2./3 -1./3 -1./3;0 1./sqrt(2) -1./sqrt(2)];
Tabdq = [cos(theta) - sin(theta); sin(theta) cos(theta)];
Det du ska göra för att förmagnetisera är att välja lämplig Ud baserat på vad din motor klarar och sen bara räkna upp theta med rätt hastighet. d theta / dt = vinkelhastigheten, så det är lätt att bestämma farten. Utan att jag funderat genom det så mycket så det är nog bäst att snabbt ta sig ur lågfartsområdet genom att öka w snabbt upp till w = 2.*pi.*50.

Edit: Fixade till m-fil och graf på hur det blir:


Bild
Större

Funktionen som jag använde för att skapa bilden med:
vektor.m
Parametrarna finns beskrivet i huvudet på filen. Tror att det är ett bättre sätt att förklara vad jag menar än att tramsa med matte ;-)

funkis: Fast jag kan ju inte det så bra uppenbarligen eftersom jag har mycket svårt att förklara det. Vem som helst kan ju trots allt skriva upp en massa formler, men att förklara dem kräver en del ;-)

Postat: 3 september 2006, 00:06:53
av funkis
bara för att man har svårt att förklara betyder inte att man är en skräphög till konstruktör, jag har mött många som kan förklara allt men de kan inte konstruera och tvärsom. :-)

En bild säger mer än tusen formler! :D

Funkis

Postat: 4 september 2006, 09:33:31
av Millox
pheer: Innan du förstör din motor, simuleringen på en sekund är för en 25 kW-motor så du ska nog köra med betydligt kortare tid. Tidskonstanten för en sån motor är Ls/Rr. Dessa kan vara svåra att ta reda på; speciellt Ls. Rr går att räkna ut ett hyffsat värde på genom P.*s./In² = Rr, där P är effekt, s är normerad eftersläpning och In märkströmmen. Ls måste mätas genom att köra motorn utan last och kolla strömmen, gärna med en mätare som mäter cosfi också.

Jag hittade tyvärr inte våra simuleringar, så jag ska göra om dem igen så du kan se. Det går att hitta den kursen jag läste på http://www.elteknik.chalmers.se/~EEK615/ Föreläsningsanteckningarna är väldigt bra, men lite summariska om man inte har ytterligare info. Labbarna kan vara bra att göra, även om de bara har CM-kontroll. Denna är dock lättare så det kan vara en fördel att börja i rätt ände ;-)