Hur kan man göra matrisberäkningar med analog elektronik?
Re: Hur kan man göra matrisberäkningar med analog elektronik
Hej! Tack för du svarade!
Det jag vill bygga är en LQG regulator.
https://en.wikipedia.org/wiki/Linear%E2 ... an_control
Detta ingår inom området Optimal Control och är en optimal regulator(finns nackdelar också) som kan hantera multivariabla system och optimal filtrering.
Jag har tittat lite på analoga PID-regulatorer som byggs med grundläggande analog elektronik, OP, resistorer och kondensatorer. Då tänkte jag att man borde kunna göra likadant med en LQG regulator.
En LQG regulator är en matrisbaserad regulator som har en LQR som är en optimal PD-regulator och en LQE som är en optimal estimerare. Det LQR gör är att den fungerar som en förstärkare av både position och derivator över hela systemet. LQE är den som estimerar exakt ALLA tillstånd(positioner och hastigheter) i systemet igenom endast en insignal. Hemligheten är att en LQE har en matematisk modell inbyggt som vet hur systemet beter sig.
Här är en rapport på hur två asiater bygger en LQG igenom några OP-förstärkare.
http://www.joace.org/uploadfile/2014/08 ... 510887.pdf
Notera att dem använder bara ett 2x2 system, vilket är i praktiken endast en ODE.
Fördelen med en LQG är att den känner av fördröjningar i systemet då den estimerar vart exakt alla massor, rotation, temperaturer, hastigheter med mera är.
Den enda nackdelen med LQG regulatorn är att den saknar garantier för stabilitetsmarginaler. Det betyder inte att den är icke-robust. Det betyder att den är inte lämpad för system som har varierande ändringar. LQG kräver en riktigt bra matematisk modell.
Så jag har två val:
1. Använda massvis med OP-förstärkare.
2. Använda en mikroprocessor
Om jag väljer alternativ 2 så får jag en följdfråga:
3. Ska jag köra med en tidskontinuerlig modell - Då jobbar systemet med en dynamisk sampling.
4. Ska jag diskreditera min tidskontinuerliga modell - Då jobbar systemet med en fast sampling. Jag vill helst undvika att diskreditera då det är väldigt krångligt och svårt att se hur modellen beter sig om modellen är linjäriserad.
Jag har endast hållit på med simulering av system där jag har använd en for-loop för att simulera mina system. Då tänkte jag: Varför inte en for-loop i en mikroprocessor?
Det jag vill bygga är en LQG regulator.
https://en.wikipedia.org/wiki/Linear%E2 ... an_control
Detta ingår inom området Optimal Control och är en optimal regulator(finns nackdelar också) som kan hantera multivariabla system och optimal filtrering.
Jag har tittat lite på analoga PID-regulatorer som byggs med grundläggande analog elektronik, OP, resistorer och kondensatorer. Då tänkte jag att man borde kunna göra likadant med en LQG regulator.
En LQG regulator är en matrisbaserad regulator som har en LQR som är en optimal PD-regulator och en LQE som är en optimal estimerare. Det LQR gör är att den fungerar som en förstärkare av både position och derivator över hela systemet. LQE är den som estimerar exakt ALLA tillstånd(positioner och hastigheter) i systemet igenom endast en insignal. Hemligheten är att en LQE har en matematisk modell inbyggt som vet hur systemet beter sig.
Här är en rapport på hur två asiater bygger en LQG igenom några OP-förstärkare.
http://www.joace.org/uploadfile/2014/08 ... 510887.pdf
Notera att dem använder bara ett 2x2 system, vilket är i praktiken endast en ODE.
Fördelen med en LQG är att den känner av fördröjningar i systemet då den estimerar vart exakt alla massor, rotation, temperaturer, hastigheter med mera är.
Den enda nackdelen med LQG regulatorn är att den saknar garantier för stabilitetsmarginaler. Det betyder inte att den är icke-robust. Det betyder att den är inte lämpad för system som har varierande ändringar. LQG kräver en riktigt bra matematisk modell.
Så jag har två val:
1. Använda massvis med OP-förstärkare.
2. Använda en mikroprocessor
Om jag väljer alternativ 2 så får jag en följdfråga:
3. Ska jag köra med en tidskontinuerlig modell - Då jobbar systemet med en dynamisk sampling.
4. Ska jag diskreditera min tidskontinuerliga modell - Då jobbar systemet med en fast sampling. Jag vill helst undvika att diskreditera då det är väldigt krångligt och svårt att se hur modellen beter sig om modellen är linjäriserad.
Jag har endast hållit på med simulering av system där jag har använd en for-loop för att simulera mina system. Då tänkte jag: Varför inte en for-loop i en mikroprocessor?
Senast redigerad av Volvo740 16 juli 2017, 13:51:46, redigerad totalt 2 gånger.
Re: Hur kan man göra matrisberäkningar med analog elektronik
Orsaken varför jag öppnade frågan om ett analogt system är för att jag vill systemet skall jobba så tidskontinuerligt som möjligt.SvenW skrev:Idén att göra matrisberäkning med analoga komponenter känns udda och förtjänar en kommentar.
Det är klar att det går. Ev matrismultiplikation är en summa av produkter.
Summerar gör man med OP-förstärkare, och för multiplikation finns analoga kretsar.
Men analoga multiplikatorer är dåliga och dyra. Där finns brus och begränsad bandbredd.
För stora matriser blir det absurt många som behövs, såvida matrisen inte är väldigt gles.
Det finns mängder av digitala chips som är lämpliga, t.ex. signalprocessorer.
Att programmera dem är inte så svårt men kräver givetvis lärotid.
Analoga lösningar för detta tror jag ändå tillhör historien.
Men man kan inte utesluta att de har sin tillämpning någonstans.
Skulle vara intressant att veta exempel där analogtekniken vinner.
Samplingstiden slipper man inte. I analoga kretsar har man fördröjning och begränsad bandbredd.
Och att integrera (förmodar här att du menar beräkna en tidsintegral) är väl det lättaste som finns i en digital processor.
Re: Hur kan man göra matrisberäkningar med analog elektronik
Om det är ett ganska trögt system (värme, motorvarv eller liknande) ser jag ingen fördel med att ha realtid på input, den fördröjning en µC ger är ganska säkert försumbar om man väljer rätt.
Jag får en känsla av att detta är en "för-att-det-går"-tråd där skillnaden i regleringen är obefintlig mellan analog elektronik och digital.
Jag får en känsla av att detta är en "för-att-det-går"-tråd där skillnaden i regleringen är obefintlig mellan analog elektronik och digital.
Re: Hur kan man göra matrisberäkningar med analog elektronik
Det är lite fel forum att ställa reglertekniksfrågor. Men om jag kan simulera ett dynamiskt system igenom en for-loop, då borde jag enkelt kunna implementera denna teknik i en mikroprocessor, utan att göra om systemet till ett tidsdiskret system? En for-loop har diskreta steg som den tar, men jag brukar oftast sätta samplingen till 0.01.
Jag har även funderat det där med tidsfördröjning. Det är inte möjligt med en analog matematisk modell, men däremot en diskret matematisk modell är det möjligt. Nu måste vi tänka på den diskreta matematiska modellen är endast ren teori och utesluter all annan kunskap om modern teknik.
En tidsdiskret matematisk modell kan uttrycka som:
Men fördröjningen L så blir det:
Där k = 0,1,2,3,4,...,n och u(k) är insignalen.
Skulle jag kunna implementera tidsfördröjning med en mikroprocessor på insignalen igenom denna matematiska modell:
Jag har även funderat det där med tidsfördröjning. Det är inte möjligt med en analog matematisk modell, men däremot en diskret matematisk modell är det möjligt. Nu måste vi tänka på den diskreta matematiska modellen är endast ren teori och utesluter all annan kunskap om modern teknik.
En tidsdiskret matematisk modell kan uttrycka som:
Kod: Markera allt
x(k+1) = F*x(k) + Bu(k)
Kod: Markera allt
x(k+1) = F*x(k) + Bu(k-L)
Skulle jag kunna implementera tidsfördröjning med en mikroprocessor på insignalen igenom denna matematiska modell:
Kod: Markera allt
dx = Ax + Bu
y = Cx
Re: Hur kan man göra matrisberäkningar med analog elektronik
Wikisidan du länkade till presenterar både de tidskontinuerlig och tidsdiskreta ekvationerna.
Re: Hur kan man göra matrisberäkningar med analog elektronik
Exakt!
Synd att denna hemsida inte kan hantera LaTeX. Men den tidsdiskreta modellen är:
Där PHI är Gregiska Phi och e^{A*t} är övergångsmatrisen.
Den tidsdiskreta modellen benämns som:
Där:
Och G:
Detta är inte alla gånger lätt att lösa då man kan få en enorm matris som täcker hela skärmen, om man har otur. Vilket förekommer rätt ofta.
Värt att notera så är lösningen till tillstånden x(t) följande:
där x_0(t) är begynnelsetillstånden i systemet t.ex. vi börjar på 1 meter upp med en hastighet på 0.1 m/s ned.
Så lösningen till tillstånden x(t) för den tidskontinuerliga modellen är egentligen en del av den diskreta modellen.
Då kan man säga att om vi anser att x[0] = 0 och u[0] = 0. Så kan vi uttrycka detta som:
Men min fråga är: Måste jag ha en tidsdiskret modell för att implementera den i min regulator, eller kan jag använda en tidskontinuerlig modell för att implementera?
En tidsdiskret modell är betydlig mycket svårare att hantera. Dessutom om den har linjäriserats. Jag har dessutom endast jobbat med frekvensplanet och tidsplanet. Inte diskreta tidsplanet och Z-transform.
Synd att denna hemsida inte kan hantera LaTeX. Men den tidsdiskreta modellen är:
Kod: Markera allt
PHI = e^{A*t}
Den tidsdiskreta modellen benämns som:
Kod: Markera allt
x[k +1] = Fx[k] + Gu[k]
Kod: Markera allt
F = e^{A*h} , h = 0.01
Kod: Markera allt
G = integral(e^{A*t}B, 0, h, t)
Värt att notera så är lösningen till tillstånden x(t) följande:
Kod: Markera allt
x(t) = e^{A*t}*x_0(t) + integral(e^{A*t}B, 0, h, t)
Så lösningen till tillstånden x(t) för den tidskontinuerliga modellen är egentligen en del av den diskreta modellen.
Då kan man säga att om vi anser att x[0] = 0 och u[0] = 0. Så kan vi uttrycka detta som:
Kod: Markera allt
y = Fx[k] + Gu[k]
En tidsdiskret modell är betydlig mycket svårare att hantera. Dessutom om den har linjäriserats. Jag har dessutom endast jobbat med frekvensplanet och tidsplanet. Inte diskreta tidsplanet och Z-transform.
Re: Hur kan man göra matrisberäkningar med analog elektronik
Elektronikforumet har stöd för LaTeX, det finns en tex-tag.
Kopierade lite LaTeX från en snabbt framgooglad sida.
\(k &= \frac{QL}{t\Delta hA} \\
k &= \frac{aL}{At} \ln \frac{h_0}{h_t}\)
Kopierade lite LaTeX från en snabbt framgooglad sida.
\(k &= \frac{QL}{t\Delta hA} \\
k &= \frac{aL}{At} \ln \frac{h_0}{h_t}\)
Re: Hur kan man göra matrisberäkningar med analog elektronik
Vad bra!
Då kan jag säga att den tidskontinuerliga modellen beskrivs exakt så här:
\(\dot{x}(t) = Ax(t) + Bu(t) \\
y(t)= Cx(t) + Du(t)\)
Oftast brukar \(D = 0\).
Den tidsdiskreta modellen beskrivs så här:
\(x(k+1) = Fx(k) + Gu(k) \\
y(k) = Cx(k) + Du(k)\)
där k = 0, 1, 2, 3, 4, ... , n
Men F och G bestäms av:
\(F = e^{Ah}\)
där h är samplingsintervallet och.
\(\Phi = e^{At} = I + At + \frac{A^2t^2}{2!} + \frac{A^3t^3}{3!} + ... + \frac{A^kt^k}{k!}\)
Så det går inte bara att ta e upphöjt till A gånger h.
Men G blir:
\(G = \int_{0}^{h}e^{At} Bdt\)
Då har jag fått min diskreta tillståndsmodell. Notera även att lösningen till tillstånden hos den tidskontinuerliga modellen är:
\(x(t) = e^{A(t-t_0)} x_0(t_0) + \int_{t_0}^{t}e^{A(t-\tau)} Bd\tau\)
Där \(x_0(t_0)\) är begynnelsetillstånden för systemet.
För att tillämpa en LQG (I mitt fall är det en LQG med en integreringsfunktion) så behöver jag endast dessa ekvationer:
\(\dot{\hat{x}}(t) = A\hat{x}(t) + Bu(t) + K(y(t) - \hat{y}(t)) \\
u(t) = L\hat{x}(t) + L_i x_i(t) \\
\dot{x_i}(t) = r(t) - y(t)\)
Där \(r\) är min referensvektor och \(y\) är utsignalen från givaren på systemet, \(L, L_i\) är en förstärkningsmatriser.
\(x_i\) är integrerade tillståndet, \(\hat{x}(t)\) är mitt estimerade värde som min regulator antar att systemet har. \(K\) är mitt kalmanfilter.
Vektorn \(u(t)\) ska gå till systemet. Det är min signalvektor. Anta att det är en vektor av ström. Även denna vektor ska gå till min regulator för att kunna observera hela systemet igenom endast en givare.
Anta nu att vi sätter en samplingsintervall på \(dt = 0.01\) sekunder. Då kan vi simulera detta system med en for-loop.
Där \(xi = x_i(t), hx = \hat{x}(t), dxi = \dot{x_i}(t), dhx = \dot{\hat{x}}(t)\)
Den matematiska modellen för denna bild nedan är:
\(\begin{bmatrix}
\dot{x}\\
\dot{\tilde{x}}\\
\dot{x_i}
\end{bmatrix} = \begin{bmatrix}
A-BL & BL & BL_i \\
0 & A-KC & 0\\
-C & 0 & 0
\end{bmatrix} \begin{bmatrix}
x\\
\tilde{x}\\
x_i
\end{bmatrix}+\begin{bmatrix}
0 & I_d & 0\\
0 & I_d & -K I_n\\
I_r & 0 & -I_n
\end{bmatrix}\begin{bmatrix}
r\\
d\\
n
\end{bmatrix}\)
\(y = \begin{bmatrix}
C & 0 & 0
\end{bmatrix}\begin{bmatrix}
x\\
\tilde{x}\\
x_i
\end{bmatrix} +\begin{bmatrix}
0 & 0 & I_n
\end{bmatrix}\begin{bmatrix}
r\\
d\\
n
\end{bmatrix}\)
Där \(\tilde{x}(t)\) är modellfelet i estimeringen.
Då kan jag säga att den tidskontinuerliga modellen beskrivs exakt så här:
\(\dot{x}(t) = Ax(t) + Bu(t) \\
y(t)= Cx(t) + Du(t)\)
Oftast brukar \(D = 0\).
Den tidsdiskreta modellen beskrivs så här:
\(x(k+1) = Fx(k) + Gu(k) \\
y(k) = Cx(k) + Du(k)\)
där k = 0, 1, 2, 3, 4, ... , n
Men F och G bestäms av:
\(F = e^{Ah}\)
där h är samplingsintervallet och.
\(\Phi = e^{At} = I + At + \frac{A^2t^2}{2!} + \frac{A^3t^3}{3!} + ... + \frac{A^kt^k}{k!}\)
Så det går inte bara att ta e upphöjt till A gånger h.
Men G blir:
\(G = \int_{0}^{h}e^{At} Bdt\)
Då har jag fått min diskreta tillståndsmodell. Notera även att lösningen till tillstånden hos den tidskontinuerliga modellen är:
\(x(t) = e^{A(t-t_0)} x_0(t_0) + \int_{t_0}^{t}e^{A(t-\tau)} Bd\tau\)
Där \(x_0(t_0)\) är begynnelsetillstånden för systemet.
För att tillämpa en LQG (I mitt fall är det en LQG med en integreringsfunktion) så behöver jag endast dessa ekvationer:
\(\dot{\hat{x}}(t) = A\hat{x}(t) + Bu(t) + K(y(t) - \hat{y}(t)) \\
u(t) = L\hat{x}(t) + L_i x_i(t) \\
\dot{x_i}(t) = r(t) - y(t)\)
Där \(r\) är min referensvektor och \(y\) är utsignalen från givaren på systemet, \(L, L_i\) är en förstärkningsmatriser.
\(x_i\) är integrerade tillståndet, \(\hat{x}(t)\) är mitt estimerade värde som min regulator antar att systemet har. \(K\) är mitt kalmanfilter.
Vektorn \(u(t)\) ska gå till systemet. Det är min signalvektor. Anta att det är en vektor av ström. Även denna vektor ska gå till min regulator för att kunna observera hela systemet igenom endast en givare.
Anta nu att vi sätter en samplingsintervall på \(dt = 0.01\) sekunder. Då kan vi simulera detta system med en for-loop.
Kod: Markera allt
hx = hx + dhx*dt;
xi = xi + dxi*dt
Den matematiska modellen för denna bild nedan är:
\(\begin{bmatrix}
\dot{x}\\
\dot{\tilde{x}}\\
\dot{x_i}
\end{bmatrix} = \begin{bmatrix}
A-BL & BL & BL_i \\
0 & A-KC & 0\\
-C & 0 & 0
\end{bmatrix} \begin{bmatrix}
x\\
\tilde{x}\\
x_i
\end{bmatrix}+\begin{bmatrix}
0 & I_d & 0\\
0 & I_d & -K I_n\\
I_r & 0 & -I_n
\end{bmatrix}\begin{bmatrix}
r\\
d\\
n
\end{bmatrix}\)
\(y = \begin{bmatrix}
C & 0 & 0
\end{bmatrix}\begin{bmatrix}
x\\
\tilde{x}\\
x_i
\end{bmatrix} +\begin{bmatrix}
0 & 0 & I_n
\end{bmatrix}\begin{bmatrix}
r\\
d\\
n
\end{bmatrix}\)
Där \(\tilde{x}(t)\) är modellfelet i estimeringen.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Hur kan man göra matrisberäkningar med analog elektronik
Okej, nu börjar jag förstå bättre vad du vill göra. Jag rekommenderar
en digital lösning i mjukvara med flyttal och så vidare för att göra
en första implementation så enkel som möjligt. Du skall sampla
ekvidistant, dvs med fix frekvens. Då måste du lyssna på Nyqvist och
Shannon som säger att insignalernas bandbredd måste vara mindre än
halva samplingsfrekvensen. Så du måste eventuellt lågpassfiltrera
insignalerna före sampling. Utsignalerna fixar du med bara en DAC.
Det som återstår är att konvertera modellen av ditt system till den
tidsdiskreta domänen. Jag rekommenderar varmt att sätta sig in i
z-transformen, för jag tycker att de flesta signalbehandlings och
reglerproblem idag löses bäst där.
en digital lösning i mjukvara med flyttal och så vidare för att göra
en första implementation så enkel som möjligt. Du skall sampla
ekvidistant, dvs med fix frekvens. Då måste du lyssna på Nyqvist och
Shannon som säger att insignalernas bandbredd måste vara mindre än
halva samplingsfrekvensen. Så du måste eventuellt lågpassfiltrera
insignalerna före sampling. Utsignalerna fixar du med bara en DAC.
Det som återstår är att konvertera modellen av ditt system till den
tidsdiskreta domänen. Jag rekommenderar varmt att sätta sig in i
z-transformen, för jag tycker att de flesta signalbehandlings och
reglerproblem idag löses bäst där.
Re: Hur kan man göra matrisberäkningar med analog elektronik
Måste jag konvertera min modell till tidsdiskret? Kan jag inte köra min analoga modell + for-loop?
Jag behöver inte filtrera. Jag har ett kalmanfilter inbyggt i modellen
Jag märkte att du skrev z-transform. Nu är det så att jag jobbar inte med z-transform, utan tillståndsmodeller.
Jag behöver inte filtrera. Jag har ett kalmanfilter inbyggt i modellen
Jag märkte att du skrev z-transform. Nu är det så att jag jobbar inte med z-transform, utan tillståndsmodeller.
Re: Hur kan man göra matrisberäkningar med analog elektronik
En grov tumregel är väl att om samplingsfrekvensen är mer än 10 ggr bandbredden för de analoga signalerna så går det skapligt.
Alltså Nyquists 2-faktor räcker inte i praktiken!
Men för att veta om tumregeln kan godkännas så är nog en tidsdiskret modell med z-tranform bra
Alltså Nyquists 2-faktor räcker inte i praktiken!
Men för att veta om tumregeln kan godkännas så är nog en tidsdiskret modell med z-tranform bra
Re: Hur kan man göra matrisberäkningar med analog elektronik
Om noggrannhet är viktig så är nog den helt analoga lösningen alldeles för onoggrann. Tänk alla toleranser på komponentvärden, temperaturkoefficienter hit och dit.
Med säg 10 ggr översampling son SvenW säger så har du bra marginal. Sedan kan man göra en hel del andra trick digitalt.
När du säger att du har 10 element i din tillståndsvektor, hur har du kommit fram till dessa? Fysikalisk modellering? Är de helt beroende av varandra eller kan man anta att vissa är oberoende?
Med säg 10 ggr översampling son SvenW säger så har du bra marginal. Sedan kan man göra en hel del andra trick digitalt.
När du säger att du har 10 element i din tillståndsvektor, hur har du kommit fram till dessa? Fysikalisk modellering? Är de helt beroende av varandra eller kan man anta att vissa är oberoende?
Re: Hur kan man göra matrisberäkningar med analog elektronik
Men måste jag ha en tidsdiskret modell?SvenW skrev:En grov tumregel är väl att om samplingsfrekvensen är mer än 10 ggr bandbredden för de analoga signalerna så går det skapligt.
Alltså Nyquists 2-faktor räcker inte i praktiken!
Men för att veta om tumregeln kan godkännas så är nog en tidsdiskret modell med z-tranform bra
Detta är huvudfrågan i denna tråd.
Re: Hur kan man göra matrisberäkningar med analog elektronik
Vi säger att jag har en mikroprocessor eller en PLC med min LQG implementerad. Måste jag då min LQG vara diskret eller kan det vara tidskontinuerlig?Andax skrev:Om noggrannhet är viktig så är nog den helt analoga lösningen alldeles för onoggrann. Tänk alla toleranser på komponentvärden, temperaturkoefficienter hit och dit.
Med säg 10 ggr översampling son SvenW säger så har du bra marginal. Sedan kan man göra en hel del andra trick digitalt.
När du säger att du har 10 element i din tillståndsvektor, hur har du kommit fram till dessa? Fysikalisk modellering? Är de helt beroende av varandra eller kan man anta att vissa är oberoende?
Jag vill helst komma bort från z-transform så mycket som det går och endast köra tidskontinuerliga modeller.
Re: Hur kan man göra matrisberäkningar med analog elektronik
Ja, precis, för att inte tala om brus.Andax skrev:Om noggrannhet är viktig så är nog den helt analoga lösningen alldeles för onoggrann. Tänk alla toleranser på komponentvärden, temperaturkoefficienter hit och dit.
Om du ska multiplicera 10 med 10 analogt, så om du använder hela volt så måste du alltså kunna komma upp i 100 V. Använder du mV istället så håller du dig under 1 V, men med en signal på 10 mV så får du nog räkna med nån mV brus.
Om du sen då ska ha en lösning som kan hantera både 1x1 mV och 100x100 mV så börjar det bli svårkonstruerat.
Fördelen med att göra det hela numeriskt är ju att då får en mycket större dynamik. Även om man "bara" håller sig till 32 bitars heltal så blir det antagligen mer noggrannt än den analoga lösningen. Använder du flyttal får du ännu bättre.