Hur kan man göra matrisberäkningar med analog elektronik?

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Hur kan man göra matrisberäkningar med analog elektronik

Inlägg av Volvo740 »

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?
Senast redigerad av Volvo740 16 juli 2017, 13:51:46, redigerad totalt 2 gånger.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Hur kan man göra matrisberäkningar med analog elektronik

Inlägg av Volvo740 »

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.
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.
Användarvisningsbild
Icecap
Inlägg: 26147
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Hur kan man göra matrisberäkningar med analog elektronik

Inlägg av Icecap »

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.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Hur kan man göra matrisberäkningar med analog elektronik

Inlägg av Volvo740 »

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:

Kod: Markera allt

x(k+1) = F*x(k) + Bu(k)
Men fördröjningen L så blir det:

Kod: Markera allt

x(k+1) = F*x(k) + Bu(k-L)
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:

Kod: Markera allt

dx = Ax + Bu
y = Cx
guckrum
Inlägg: 1688
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Hur kan man göra matrisberäkningar med analog elektronik

Inlägg av guckrum »

Wikisidan du länkade till presenterar både de tidskontinuerlig och tidsdiskreta ekvationerna.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Hur kan man göra matrisberäkningar med analog elektronik

Inlägg av Volvo740 »

Exakt!

Synd att denna hemsida inte kan hantera LaTeX. Men den tidsdiskreta modellen är:

Kod: Markera allt

PHI = e^{A*t}
Där PHI är Gregiska Phi och e^{A*t} är övergångsmatrisen.

Den tidsdiskreta modellen benämns som:

Kod: Markera allt

x[k +1] = Fx[k] + Gu[k]
Där:

Kod: Markera allt

F = e^{A*h} , h = 0.01
Och G:

Kod: Markera allt

G = integral(e^{A*t}B, 0, h, t)
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:

Kod: Markera allt

x(t) = e^{A*t}*x_0(t) +  integral(e^{A*t}B, 0, h, t)
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:

Kod: Markera allt

y = Fx[k] + Gu[k]
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.
Nerre
Inlägg: 26705
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Hur kan man göra matrisberäkningar med analog elektronik

Inlägg av Nerre »

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}\)
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Hur kan man göra matrisberäkningar med analog elektronik

Inlägg av Volvo740 »

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.

Kod: Markera allt

hx = hx + dhx*dt;
xi = xi + dxi*dt
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.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
guckrum
Inlägg: 1688
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Hur kan man göra matrisberäkningar med analog elektronik

Inlägg av guckrum »

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.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Hur kan man göra matrisberäkningar med analog elektronik

Inlägg av Volvo740 »

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.
SvenW
Inlägg: 1124
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Re: Hur kan man göra matrisberäkningar med analog elektronik

Inlägg av SvenW »

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 :-)
Användarvisningsbild
Andax
Inlägg: 4373
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Hur kan man göra matrisberäkningar med analog elektronik

Inlägg av Andax »

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?
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Hur kan man göra matrisberäkningar med analog elektronik

Inlägg av Volvo740 »

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 :-)
Men måste jag ha en tidsdiskret modell?
Detta är huvudfrågan i denna tråd.
Volvo740
Inlägg: 149
Blev medlem: 15 juli 2017, 19:11:01

Re: Hur kan man göra matrisberäkningar med analog elektronik

Inlägg av Volvo740 »

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?
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?
Jag vill helst komma bort från z-transform så mycket som det går och endast köra tidskontinuerliga modeller.
Nerre
Inlägg: 26705
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Hur kan man göra matrisberäkningar med analog elektronik

Inlägg av Nerre »

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.
Ja, precis, för att inte tala om brus.

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.
Skriv svar