Hitta överföringsfunktion till en motordriven kulventil

Robot, CNC, Pneumatik, Hydraulik, mm
Nerre
Inlägg: 27184
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Hitta överföringsfunktion till en motordriven kulventil

Inlägg av Nerre »

SeniorLemuren skrev:men de facto är ju att öppningsarean är den som visas på bilden såväl som utloppsarean
Nej, tittar du från sniskan så kommer du att se en större öppning.
Användarvisningsbild
SeniorLemuren
Inlägg: 8395
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Hitta överföringsfunktion till en motordriven kulventil

Inlägg av SeniorLemuren »

Al_Bundy skrev:
Nerre skrev:
Al_Bundy skrev: Men det jag har gjort nu är att jag har skapat en lookup table med värden som säger att visst värde motsvarar en viss puls. Så om jag ligger t.ex. 0.3 flödesenheter ifrån som fel, så t.ex. säger tabellen att 0.3 är ett litet värde och där med så ska ventilen pulsera 10 pulser åt ena hållet. Hade jag varit -0.3 flödesenheter fel så säger tabellen att jag ska pulsera 10 pulser åt andra hållet.
Om du ska reglera med closed loop behöver du inte krångla med lookup-tabell, du använder dig av vanlig hederlig PID-reglering. Om det inte är höga krav på snabbt inreglering så räcker det med PI och relativt låg I-faktor.
Problemet är att jag vet inte hur jag ska bestämma någon överföringsfunktion. Ventilen är rätt bra för att om ventilen är 100% stängd och sedan pulserar jag 90 pulser, där varje puls är 10 ms hög så blir ventilen 100% öppen. Skulle denna motordrivna ventil fungera mer som en servo där man bara anger en viss frekvens så hade jag lätt valt en PID.
Jag förstår inte riktigt vad du beskriver att du gör. Jag antar att om du skickar på en 12V spänning i ena riktningen så öppnar ventilen, skickar du på den 12V i andra riktningen så stänger den. Rätt? Jag begriper inte riktigt vad du försöker göra med 90 pulser på 10 mS?

Vad jag tror du skall försöka göra är att först reglera ner motorns varvtal med PWM så att du det tar längre tid än 5 sekunder att öppna och stänga ventilen Ju längre dess bättre.

När du hittat ett bra varvtal så styr du hur långt den skall öppna eller stänga genom att mäta utflödet och köra ventilen med densamma låga hastighet som du testat fram för att reglera ventilens utflöde med PI reglering. Du ändrar alltså inte PWM-pulserna som styr motorns rotationshastighet, utan låter PI-regleringen bestämma hur länge motorn skall gå i regleringslopen beroende på värdet från flödesgivaren.
Nerre
Inlägg: 27184
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Hitta överföringsfunktion till en motordriven kulventil

Inlägg av Nerre »

Al_Bundy skrev: Exempelvis så tänker jag på att börvärdesflödet ska beskriva en viss puls t.ex. puls nummer 53. Om min flödesgivare säger att nuvarande flödet stämmer överens med puls nummer 43 så ska motorn driva 10 pulser framåt. Sedan gör den en mätning igen. Om nuvarande flödet stämmer överens med pulsnummer 60 så ska motorn driva 7 pulser bakåt.
Det blir mycket enklare om du struntar i var ventilen står, det är väl inte ventilens läge du ska reglera utan flödet?

Är flödet lägre än börvärdet? Öppna ventilen lite grann.
Är flödet högre än börvärdet? Stäng ventilen lite grann.
svanted
Inlägg: 5276
Blev medlem: 30 augusti 2010, 21:20:38
Ort: Umeå

Re: Hitta överföringsfunktion till en motordriven kulventil

Inlägg av svanted »

TomasL skrev:Jo det går fortare, min kurva avser flödet genom ventilen, jag satte fel värde på y-axeln, det skall inte vara %av kvs utan % av fullt flöde.
kvs är en funktion av tryckfall, flöde och densitet, och anges normalt för ventiler med vatten, dvs densiteten 1000.
kvs värdet anger flödet genom en fullt öppen ventil vid 1 bars tryckfall över ventilen, och det anges som m3/h.

Den kurva som svanted visar är baserad på konstant tryckfall över ventilen, vilket inte alltid är fallet.
nej den visar areaändringen pga vridningsvinkeln...
Ju mindre ventilöppning desto högre tryckfall.
nej! det beror på ditt specialfall.
I normalfallet när man har ett variabelt tryckfall över ventilen, som i detta fallet, kommer flödet att öka mer i början när man öppnar ventilen då tryckfallet är större, och mindre i slutet då tryckfallet sjunker, till i princip 0 vid fullt öppen ventil.
jo i ditt specialfall:
med ett mottryck efter ventilen som höjer trycket efter ventilen då flödet ökar.
och utan konstant tryck före.
under dina förutsättningar kommer ingen ventiltyp att fungera.

om en ventil med linjär areaändring ska strypa flödet linjärt måste trycken innan och efter ventilen vara konstanta.

edit:
i din röda kurva, den visar 100% flöde vid 25% öppningsvinkel,
p.g.a. att det finns en strypning eller flödesmotstånd efter ventilen som motsvarar arean av 25% av ventilens maxarea...
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46924
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hitta överföringsfunktion till en motordriven kulventil

Inlägg av TomasL »

Nej du har fel, om du har fritt utlopp från ventilen, så kommer du att i alla lägen så variabelt tryckfall, såvida du inte konstanthåller trycket innan ventilen.
I ett slutet pumpsystem får du alltid variabelt tryckfall över ventilen.
i de allra flesta fallen i de allra flesta anläggningarna kommer du att ha variabelt tryckfall över ventilen, det är snarare så att konstanttryck innan ventilen är ett specialfall.
Det är av den anledningen man i många fall installerar tryckkompenserade reglerventiler.
svanted
Inlägg: 5276
Blev medlem: 30 augusti 2010, 21:20:38
Ort: Umeå

Re: Hitta överföringsfunktion till en motordriven kulventil

Inlägg av svanted »

Al_Bundy skrev:
svanted skrev:du måste beskriva vad du vill reglera och konstruktionen bakom?
pumpar?flöden?vätska?
den kan kansek gå att reglera med en vanlig kulventil men inte under alla omständigheter.
till att börja med måste du kunna mäta ventilens lägen?
kan du det?
alla regleringar har en återkoppling, det är en förutsättning.
Det är en hink med vatten. En motordriven kulventil under. Efter kulventilen är det en flödesgivare. Jag ska reglera så att nivån håller sig konstant om jag fyller på med vatten.

Ett problem jag har problem att räkna är den olinjära växande arean på hålet hos kulventilen när ventilen öppnas sakta och säkert. Jag har inte lyckats lösa det än.

mäter du inte nivån?
man kan ju inte få fram nivån i hinken genom att mäta flödet efter ventilen?
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hitta överföringsfunktion till en motordriven kulventil

Inlägg av Al_Bundy »

SeniorLemuren skrev: Jag förstår inte riktigt vad du beskriver att du gör. Jag antar att om du skickar på en 12V spänning i ena riktningen så öppnar ventilen, skickar du på den 12V i andra riktningen så stänger den. Rätt? Jag begriper inte riktigt vad du försöker göra med 90 pulser på 10 mS?

Vad jag tror du skall försöka göra är att först reglera ner motorns varvtal med PWM så att du det tar längre tid än 5 sekunder att öppna och stänga ventilen Ju längre dess bättre.

När du hittat ett bra varvtal så styr du hur långt den skall öppna eller stänga genom att mäta utflödet och köra ventilen med densamma låga hastighet som du testat fram för att reglera ventilens utflöde med PI reglering. Du ändrar alltså inte PWM-pulserna som styr motorns rotationshastighet, utan låter PI-regleringen bestämma hur länge motorn skall gå i regleringslopen beroende på värdet från flödesgivaren.
Helt rätt! Nej inte 90 pulser på 10 mS. Utan 90 stycken pulser där varje puls är 10 mS lång.

Men jag ska ju göra det. Men då måste jag räkna ut hur många PWM motorn ska få, och åt vilket håll också.

Jag förstår hur du menar och jag tänker faktiskt tillämpa PID på ett värmereglage som jag ska bygga. Men jag måste hålla med dig att jag även här får köra på en PID/PI regulator då jag märkte att det blev för mycket hysteris, dvs det tar 90 pulser för att öppna och ca 50 pulser för att stänga. Detta är inte bra!

Men detta är ju en erfarenhet! Men jag ska köra på ett pulseringsintervall på 10 mS. Det lät som en bra samplingsintervall.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hitta överföringsfunktion till en motordriven kulventil

Inlägg av Al_Bundy »

svanted skrev:
Al_Bundy skrev:
svanted skrev:du måste beskriva vad du vill reglera och konstruktionen bakom?
pumpar?flöden?vätska?
den kan kansek gå att reglera med en vanlig kulventil men inte under alla omständigheter.
till att börja med måste du kunna mäta ventilens lägen?
kan du det?
alla regleringar har en återkoppling, det är en förutsättning.
Det är en hink med vatten. En motordriven kulventil under. Efter kulventilen är det en flödesgivare. Jag ska reglera så att nivån håller sig konstant om jag fyller på med vatten.

Ett problem jag har problem att räkna är den olinjära växande arean på hålet hos kulventilen när ventilen öppnas sakta och säkert. Jag har inte lyckats lösa det än.

mäter du inte nivån?
man kan ju inte få fram nivån i hinken genom att mäta flödet efter ventilen?
Jag mäter inte nivån. Jo, jag kan mäta nivån om jag vill. Men det känns mer relevant att mäta flödet. Jag har ju två flödesgivare och två stycken hinkar ovanpå varandra. En klassisk tanklabb.

Men Lemuren sa att jag ska använda PID/PI och då ska jag använda det. Men jag tror att en P-regulator passar nog mig lite bättre. PI och PID känns för fint.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hitta överföringsfunktion till en motordriven kulventil

Inlägg av Al_Bundy »

Nerre skrev:
Al_Bundy skrev: Exempelvis så tänker jag på att börvärdesflödet ska beskriva en viss puls t.ex. puls nummer 53. Om min flödesgivare säger att nuvarande flödet stämmer överens med puls nummer 43 så ska motorn driva 10 pulser framåt. Sedan gör den en mätning igen. Om nuvarande flödet stämmer överens med pulsnummer 60 så ska motorn driva 7 pulser bakåt.
Det blir mycket enklare om du struntar i var ventilen står, det är väl inte ventilens läge du ska reglera utan flödet?

Är flödet lägre än börvärdet? Öppna ventilen lite grann.
Är flödet högre än börvärdet? Stäng ventilen lite grann.
Jo. Jag struntar nu i vart ventilen står. Det blev för mycket hysteris i ventilen. Det du beskriver är en klassisk P-regulator och jag funderar faktiskt på köra på en sådan. Enkel och bara en parameter man behöver ändra!
Användarvisningsbild
SeniorLemuren
Inlägg: 8395
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Hitta överföringsfunktion till en motordriven kulventil

Inlägg av SeniorLemuren »

I ditt fall räcker det säkert med P-reglering. Men anledningen att jag föreslår att du först sänker hastighetem på motorn med PWM så att den inte reglerar ventilen så snabbt är just vad TomasL har konstaterat, nämligen att det är omöjligt att reglera flödet inom det lilla vinkelområdet som är aktuellt. Med den höga hastighet som ventilen löper från 0 till fullt utslag (5 sek) när motorn går för fullt varvtal, så ligger kanske reglerområdet inom 1 sekund och det går inte. Så innan du börjar fibbla med själva P-regleringen så måste du styra ner motorns hastighet till kanske runt 25 sekunder från 0 till fullt utslag, då får du ett reglerområde på ca. 5 sekunder mellan noll och fullt flöde.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hitta överföringsfunktion till en motordriven kulventil

Inlägg av Al_Bundy »

Så! Då var systemet klart.

Det jag har gjort är att för varje 1000 mS så hämtas ett nytt tidsvärde för hur lång tid motorventilen ska rotera åt höger/vänster.

Det börjar först med att ett program som körs varje 10 mS kollar om tidsvariabeln OpenValve är större än 0. Är det större än noll så öppna servon och dra bort 10 mS från OpenValve. Sedan kollar programmet om CloseValve är större än 0(i detta fall när OpenValve är större än noll så blir CloseValve automatiskt 0).

När det har gått 1000 mS så hämtas nya tidsvärden för ventilerna.
Senast redigerad av Al_Bundy 30 augusti 2016, 23:32:43, redigerad totalt 5 gånger.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hitta överföringsfunktion till en motordriven kulventil

Inlägg av Al_Bundy »

SeniorLemuren skrev:I ditt fall räcker det säkert med P-reglering. Men anledningen att jag föreslår att du först sänker hastighetem på motorn med PWM så att den inte reglerar ventilen så snabbt är just vad TomasL har konstaterat, nämligen att det är omöjligt att reglera flödet inom det lilla vinkelområdet som är aktuellt. Med den höga hastighet som ventilen löper från 0 till fullt utslag (5 sek) när motorn går för fullt varvtal, så ligger kanske reglerområdet inom 1 sekund och det går inte. Så innan du börjar fibbla med själva P-regleringen så måste du styra ner motorns hastighet till kanske runt 25 sekunder från 0 till fullt utslag, då får du ett reglerområde på ca. 5 sekunder mellan noll och fullt flöde.
Räcker det med 10 mS intervall? Se mitt inlägg ovan där jag talar till alla i tråden.
Användarvisningsbild
Daneel
Inlägg: 10
Blev medlem: 9 augusti 2006, 15:18:36
Ort: Linköping

Re: Hitta överföringsfunktion till en motordriven kulventil

Inlägg av Daneel »

Al_Bundy skrev: Men Lemuren sa att jag ska använda PID/PI och då ska jag använda det. Men jag tror att en P-regulator passar nog mig lite bättre. PI och PID känns för fint.
Med risk för att verka petig vill jag säga att det ni kallar för P-reglering är I-reglering.

En I-reglering gör en liten (proportionell) justering åt rätt håll för varje exekvering. Genom dessa små ändringarna kommer man garanterat nära det flöde man ställt in (börvärde). Man kan alltså säga att regulatorn integrerar felet för att uppnå rätt styrsignal, en I-reglering. En bieffekt av integration är att när ventilen har en minsta möjliga änding som är större än noll kommer nästan alltid integratorn att se fel och styrsignalen kommer att växa till ventilen byter riktning och sedan upprepar sig detta. En enkel fix är att inte göra någon utsignalsberäkning alls om felet är inom ett satt värde.

En P-reglering styr ventilen mot ett fast läge för varje specifika fel (ingen risk att du implementerar detta av misstag eftersom du inte ens vet var ventilen befinner sig mellan 0 och 90). En P-reglering har för en självreglerande process (t.ex en flödesreglering med någorlunda konstant matartryck) den egenheten att man aldrig kommer till det flöde man ställt in (börvärde).

Jag ser inget problem med att implementera med en 1s sampletid för regulatorn. Tabellen du filat på kan du enkelt förfina när du har allt uppsatt och kan prova olika ventillägen (använd ett buntband för att förlänga ut ventilaxelns läge så du lättare kan avläsa).

När allt fungerar och du är nöjd kan du addera P och D-verkan till loopen om du har lust. Du får säga till om du vill ha hjälp med skriftliga beskrivningar av dessa.

I bilden nedan är:
r=det flödet du önskar (börvärde)
y=flödet du mäter (mätvärde)
u=ventilläget (utsignal) (det vet vi ju inte, men vi kan öka eller minska det med pulser)
e=felet (regleravvikelse), differensen mellan är och börvärde
Bild

Edit: la till en bild för att visa generell parallell implementation (Källa, wikipedia)
Nerre
Inlägg: 27184
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Hitta överföringsfunktion till en motordriven kulventil

Inlägg av Nerre »

Ja den enkla variant jag beskrev är nog mer att likna vid I-reglering ja, men den är inte riktigt I. Den justerar ju hela tiden lika mycket, oavsett hur stort "felet" är. Men en I-reglering justerar ju mer och mer ju längre tid "felet" finns.

Men man kan göra om den lite till mer PI.

Om flödet är mycket mindre än önskat, öppna ventilen 10 steg
Om flödet är lite mindre än önskat, öppna ventilen 1 steg
Om flödet är mycket mer än önskat, stäng ventilen 10 steg
Om flödet är lite mer än önskat, stäng ventilen 1 steg

För det som kännetecknar P är ju att utsignalen ändras mycket om "felet" är stort, men bara lite om "felet" är litet.
Användarvisningsbild
Daneel
Inlägg: 10
Blev medlem: 9 augusti 2006, 15:18:36
Ort: Linköping

Re: Hitta överföringsfunktion till en motordriven kulventil

Inlägg av Daneel »

Nerre skrev:Ja den enkla variant jag beskrev är nog mer att likna vid I-reglering ja, men den är inte riktigt I. Den justerar ju hela tiden lika mycket, oavsett hur stort "felet" är.
Ok, då missförstod jag dig lite, en I multiplicerar felet med en faktor och adderar på utsignalen.
Nerre skrev: Men en I-reglering justerar ju mer och mer ju längre tid "felet" finns.
Inte mer och mer om felet är konstant, då adderar den lika mycket för varje exekvering regleringen går.
Nerre skrev: Men man kan göra om den lite till mer PI.

Om flödet är mycket mindre än önskat, öppna ventilen 10 steg
Om flödet är lite mindre än önskat, öppna ventilen 1 steg
Om flödet är mycket mer än önskat, stäng ventilen 10 steg
Om flödet är lite mer än önskat, stäng ventilen 1 steg
Ungefär men inte riktigt så. Tänk dig att du mäter hela tiden felet och tar det gånger en faktor så blir det utsignalen. I ditt fall motsvaras P av att du jämför med förra felet och multiplicerar förändringen av felet med en faktor och räknar ut den pulstid det felet motsvarar.
Nerre skrev: För det som kännetecknar P är ju att utsignalen ändras mycket om "felet" är stort, men bara lite om "felet" är litet.
Igen ungefär men inte riktigt så, samma fel ger hela tiden konstant utsignal. Ändras felet inget sker heller inget med utsignalen. I din implementation är förändring av fel 0 och alltså blir det ingen puls från P-delen.

Hoppas jag inte snurrar till det för dig, men jag tror du redan är på rätt väg. :tumupp:
Skriv svar