PID tuning, DC servo

Robot, CNC, Pneumatik, Hydraulik, mm
Cyrussvall
Inlägg: 57
Blev medlem: 11 november 2009, 06:53:11
Ort: Sundsvall

PID tuning, DC servo

Inlägg av Cyrussvall »

Hej

Jag håller på att byta ut styrsystem på en gammal CNC flerop fräs, OKK mcv-300.
Det gamla systemet var dött så maskinen var det bra kurs på.
Har plockat ut allt som förmodligen inte behövs längre.

Monterat in 4 st drivare till axlarna, xyza. Det blev step/dir drivare från CNCDrive, DG4S-16035.

Nytt styrkort blev Dynomotions Kflop+Kanalog+Konnect. Finns hyffsat mycket I/O optokopplat som tar 24V så sammankopplingen med de gamla givarna blir enklare.

Nu till problemet.

Jag har börjat att PID tuneat axlarna och förstår mig inte riktigt på processen och vad det är man exakt är ute efter. Man close´ar loopen i servodrivaren och inte i kflopen.

Lite info:

Servo: Fanuc DC servo mod 5
2000 rpm
Encoder: 2500 ppr
Kulskruv. 5mm/rev
Gear: 2:1

Har fått tips på att börja med P(gain) värdet, höja det tills att motorn börjar att oscillera. Backa lite och höja D tills att jag får tillbaka en hyfsad kurva(vad jag tror är en hyfsad kurva). Sedan börja med P igen osv tills att man inte kommer längre med ett stabilt system. Fått tips att vänta med I till slutet.
Utan I får jag dock fel på maskin positionen och "commanded" position. ca 20 steps på 10000 steps.
Kör jag med I värde på 1 istället för 0 så försvinner stegfelet, men systemet blir instabilt.

på 10000 steps så flyttar axeln 10 mm.

Får lite olika grafer beroende på hur många steps jag analyserar på.

Hur brukar ni gå tillväga? Börja med I värdet på 1 och se vart man kan få ett "stabilt system". Hur mycket overshoot är ok?

Hur vet man att man är "klar" med tune´ingen? Bara att testa att köra med styrkortet och ställa in accelerationen och hastigheten i Mach3?

Många frågor på en gång, hoppas att någon kan skina lite ljus över detta mörker. Känns som att man kan stå och fippla med värdena hur länge som helst när man inte riktigt vet målet.

/Lars
Sundsvall
Användarvisningsbild
arvidb
Inlägg: 4537
Blev medlem: 8 maj 2004, 12:56:24
Ort: Stockholm

Re: PID tuning, DC servo

Inlägg av arvidb »

P-termen använder ju det nuvarande felet för att tala om för motorn hur mycket kraft den ska använda för att hamna rätt. När det nuvarande felet blir tillräckligt litet så blir också kraften till slut så liten att den inte orkar flytta motorn - därav det kvarvarande felet på 20 steps.

I-termen använder istället det sammanlagda felet över tid, så ett litet fel blir snabbt ett stort fel vilket ger den extra push som behövs för att komma exakt rätt. I-termen är alltså till just för att få bort det kvarvarande felet.

Hur mycket overshoot som är OK är det nog bara du som kan svara på. Hur höga toleranser behöver du i din flerop?

Jag kan inte svara exakt på hur du ska göra för att tunea systemet, men du kan testa t.ex. Ziegler-Nichols metod.

Målet är att få maskinen att följa de kommenderade rörelserna utan för stora avvikelser (och utan självsvängning).
Cyrussvall
Inlägg: 57
Blev medlem: 11 november 2009, 06:53:11
Ort: Sundsvall

Re: PID tuning, DC servo

Inlägg av Cyrussvall »

Hej

Tack för svar!

Ok, så där av tar I bort felet direkt. Får en liten våg alldeles innan den stannar.

Tanken i första hand var att använda Kanalogen och använda de befintliga fanuc velocity drivarna. Dock så behövde dessa en f/v konverter för att skapa en tacho signal.

Fattade inte heller skillnaden mellan analog och step/dir. Så efter att jag hade köpt drivarna från cncdrive så fick jag redan på att jag inte kunde köra close loop med kflop utan det måste kag göra med drivaren från cncdrive. Lite synd för tuningen med Kmotion känns seriösare.

Jag vill få så nogrann maskin som möjligt så klart :-)

Har hört att en overshoot på 5-10% är vad man ska sikta på. Skiljer sig dock en del ifall jag ta ex 500 steps isg för 5000.

Ska prova att börja med ett I värde på 1 och sedan se vart jag kan få ett system som blir hyffsat stabilt.

Skickar upp några bilder vid tillfälle så det går att se conf programmet.

/Lars
Sastrom
Inlägg: 725
Blev medlem: 16 september 2009, 16:01:57
Ort: Sandviken

Re: PID tuning, DC servo

Inlägg av Sastrom »

Dynomotion sakerna kan du köra closed loop med.
nibl
Inlägg: 149
Blev medlem: 23 november 2012, 13:19:33

Re: PID tuning, DC servo

Inlägg av nibl »

arvidb skrev:P-termen använder ju det nuvarande felet för att tala om för motorn hur mycket kraft den ska använda för att hamna rätt. När det nuvarande felet blir tillräckligt litet så blir också kraften till slut så liten att den inte orkar flytta motorn - därav det kvarvarande felet på 20 steps.

I-termen använder istället det sammanlagda felet över tid, så ett litet fel blir snabbt ett stort fel vilket ger den extra push som behövs för att komma exakt rätt. I-termen är alltså till just för att få bort det kvarvarande felet.

Hur mycket overshoot som är OK är det nog bara du som kan svara på. Hur höga toleranser behöver du i din flerop?

Jag kan inte svara exakt på hur du ska göra för att tunea systemet, men du kan testa t.ex. Ziegler-Nichols metod.

Målet är att få maskinen att följa de kommenderade rörelserna utan för stora avvikelser (och utan självsvängning).
Som komplettering:
D-termen använder hur snabbt felet ändras
Cyrussvall
Inlägg: 57
Blev medlem: 11 november 2009, 06:53:11
Ort: Sundsvall

Re: PID tuning, DC servo

Inlägg av Cyrussvall »

Japp, Dynomotion kortet kan stänga loopen. Dock så måste dessa drivare få encoder signalen för att kunna fungera. Tom på Dynomotion tyckte att det blev onödigt krångligt att koppla både drivaren och Kanalog kortet med samma encodersignal och att det förmodligen skulle stöta på en del problem och störningar.

Har inte hunnit med att PID tunat maskinen något idag dock... för mycket att göra med andra projekt på jobbet. Imorgon blir det dock att testa lite mer.

Planen blir att ställa I på 1 och gå upp med P och D efter varandra för att hitta en stabil men med så högt P som möjligt. Om det nu är rätt sätt vet jag inte.

Håller på att skriva C kod för homeing och ATC nu. Ska bli intressant att få börja provköra så småningom.

Ska försöka behålla befintlig Fanuc spindel samt drivare. Har hittat lite info om vad man ska koppla in var i drivaren för att få den att snurra igen.
Antingen blir det att köra den på 0-10v eller att skriva ett program som styr den med 12 bit binär kod på hastigheterna. Dock så är det med hög och låg växel. Har inte lyckats hitta om det är spindel drivaren som sköter växlingen eller om jag måste göra även detta i C programmet. Blir att följa lite kablage från solenoiderna som sköter växlingen och se vart dessa tar vägen.

Bifogar en bild på maskinen, en rejäl klump metall.
okkmcv300.JPG
/Lars
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Cyrussvall
Inlägg: 57
Blev medlem: 11 november 2009, 06:53:11
Ort: Sundsvall

Re: PID tuning, DC servo

Inlägg av Cyrussvall »

Här är en länk på en video till där jag försöker få någon ordning på PID inställningarna.



Med I värdet på det lägsta jag kan sätta det, 1, så får jag lite ocileringar när den försöker korrigera steg fel. Kommer bara ibland, men det låter inge vidare. Brummar lite en stund innan den stoppar med 0 stegfel.

Med I på 0 så blir det inte dessa problem på samma sätt. Dock så får stegfel på ca 20 steg.

Kan inte sänka P utan att det blir en liten våg på kurvan innan motorn stannar.

Någon so förstår detta och kanske bor i närheten av sundsvall :-)



/Lars
Användarvisningsbild
konig7070
Inlägg: 888
Blev medlem: 2 augusti 2008, 11:51:14
Ort: Uddevalla

Re: PID tuning, DC servo

Inlägg av konig7070 »

Analysera stegsvaret och försök få fram en överföringsfunktion som du sedan använder för att ta fram reglerparametrarna.
Cyrussvall
Inlägg: 57
Blev medlem: 11 november 2009, 06:53:11
Ort: Sundsvall

Re: PID tuning, DC servo

Inlägg av Cyrussvall »

Ok, det säger mig tyvärr inte så mycket. Förstår inte riktigt vad du menar...

/Lars
Användarvisningsbild
konig7070
Inlägg: 888
Blev medlem: 2 augusti 2008, 11:51:14
Ort: Uddevalla

Re: PID tuning, DC servo

Inlägg av konig7070 »

I slutet av filmen så såg man en bild på hur servot svängde in sig efter att du ändrat positionen, http://en.wikipedia.org/wiki/Step_response
Utifrån detta diagram så kan man få fram överföringsfunktionen, http://en.wikipedia.org/wiki/Transfer_function
Överföringsfunktionen beskriver fräsens betende, en viss insignal ger en viss utsignal.
PID-regulatorns överföringsfunktion är den du kan ändra på via PID-parametrarna.

Och PID-regulatorns överföringsfunktion gånger fräsens överföringsfunktion ger hela systemets överföringsfunktion, från r till y.

r = önskad position, y = verklig position från encoder.
Bild

Så om du vet fräsens överföringsfunktion och du vet vilket stegsvar du vill ha(snabbhet, översväng) kan du räkna eller simulera fram optimala PID-parametrar.
H.O
Inlägg: 5914
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: PID tuning, DC servo

Inlägg av H.O »

En massa härlig teori som ofta är svår att applicera i praktiken om man inte är matematiker. Än mer så när man inte har någon skala i form av tid, antal samples etc i mjukvaran.

* Testa att dubbla D - blir det bättre eller sämre?
* Du kan också testa att ändra på samplingsfrekvensen. Generellt kan man säga att ju tyngre/trögare/större maskin du har desto lägre samplingsfrekvens (högre siffra i tuning-programmet).

Är Z-axeln den första axeln du försöker justera in?
Jag ser att den har motvikt så den är uppenbarligen åtminstånde något balanserad men det är nog ändå den svåraste axeln att justera.
Cyrussvall
Inlägg: 57
Blev medlem: 11 november 2009, 06:53:11
Ort: Sundsvall

Re: PID tuning, DC servo

Inlägg av Cyrussvall »

ok, tack för förklaringen. Känns som att jag har lite att läsa på... :?
Cyrussvall
Inlägg: 57
Blev medlem: 11 november 2009, 06:53:11
Ort: Sundsvall

Re: PID tuning, DC servo

Inlägg av Cyrussvall »

Hej H.O

Jo, tittade igenom sidorna med alla formler och kände att man blev lite yr.

Ok, ska prova att öka på D lite mera. Har för mig att jag provade med det för ett tag sedan, dock så har det blivit så mycket gissningar att jag har glömt det. Brukar kunna bli en hel del ocillationer med för högt D.

Har läst igenom lite mera från andra som har gjort detta och alla börjar med I på 0. Ska prova detta igen imorgon och komma upp på P och D så långt det går och ändå vara stabilt, sedan efter det om det finns "stegfel" kvar lägga till I.

Japp, det sitter en motvikt, brukar inte bli någon större skillnad upp eller ned. Provade lite med X axeln först. Kanske ska tillbaka dit och testa istället.

Har testat lite med Samplingstiden, dock bara mellan värdet 3-5. Går upp till 10 om jag inte missminner mig. Kanske värt att prova lite där också.

På en del inlägg el pdf som jag har läst på i så beskriver de att man ska köra med låg acceleration. Kan inte ändra det i detta program. Utan det blir i Kmotion conf filen senare, om jag har förstått det korrekt.
Så därav kan det blir en hög overshoot på "första kurvan", kan det stämma?
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: PID tuning, DC servo

Inlägg av lillahuset »

Det här (PID) är ett intressant ämne som de jag känner säger att är lätt inte har kunnat förklara så jag förstår.

I princip är PID lätt. Hur de olika PID-termerna påverkar resultatet är ju inte speciellt magiskt. Den stora frågan är hur man (på ett någorlunda enkelt sätt) väljer koefficienter. Typ tumregler eller andra enkla metoder.
Jag har umgåtts med flera "PID-experter" men ingen har kunnat förklara hur man gör.

Det kanske är så illa/bra att man bör skippa PID för något annat... Jag vet inte men jag skulle vilja veta. Vi kanske ska starta en "regulatortråd"?
H.O
Inlägg: 5914
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: PID tuning, DC servo

Inlägg av H.O »

>Japp, det sitter en motvikt, brukar inte bli någon större skillnad upp eller ned. Provade lite med X axeln först. Kanske ska tillbaka dit och testa istället.
Att du utan I får ett kvarvarande fel på just Z är ju inte konstigt. Även om den är balanserad så "landar" den antagligen kort när du kör uppåt och skjuter över när du kör neråt.


>Har testat lite med Samplingstiden, dock bara mellan värdet 3-5. Går upp till 10 om jag inte missminner mig. Kanske värt att prova lite där också.
.
Tänk på att när du ändrar samplingstiden så påverkar det "skalan" på D och I. Om du samplar hälften så fort så blir I "hälften så mycket värt" medan D blir "dubbel så mycket värt".

>Har läst igenom lite mera från andra som har gjort detta och alla börjar med I på 0. Ska prova detta igen imorgon och komma upp på P och D så långt det går och ändå vara stabilt, sedan efter det om det finns "stegfel" kvar lägga till I.
Om/när du har den hyffsat stabil med bara P&D och sedan adderar I så kommer den sannolikt behöva MER dämpning (alltså D) - vilket är anledningen till att jag föreslog just att dubbla D och se vad som händer.

>På en del inlägg el pdf som jag har läst på i så beskriver de att man ska köra med låg acceleration. Kan inte ändra det i detta program. Utan det blir i Kmotion conf filen senare, om jag har förstått det korrekt.
Så därav kan det blir en hög overshoot på "första kurvan", kan det stämma?

Ja, det stämmer absolut.
Stegsvar, dvs när insignalen abrupt går från ett värde till ett annat, är alltid "svårast" för regulatorn. Om man har en regulatorn inställd för ett "snyggt" stegsvar så presterar den sannolikt inte så bra som den skulle kunna göra när insignalen är mer likt verkligheten - alltså med acceleration/retardation. Nu vet inte jag om drivsteget/mjukvaran internt "rampar" börvärdet här men antagligen inte. Försök att justera in regulatorn med hjälp av ett "rimligt" stegsvar. Om du t.ex tänkt sätta max following error till 0.1mm finns det ingen anledning att köra stegsvar som motsvarar mer än det (alltså 100 qc i ditt fall).
Skriv svar