Är en STM32 bra att använda som USB I/O-modul?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Al_Bundy »

Jag håller på med kvadratisk programmering och systemidetifiering. Jag har läst en hel del linjär algebra sedan jag gick på universitetet och har snöat mig in på subspaceidentifiering, vilket betyder att man kan skapa oändligt stora linjära matematiska dynamiska modeller som passar för olinjära system.

Jag har skapat en adaptiv modellbaserad prediktiv regulator som har samplingsintervallet 1 sekund, vilket är rätt segt, men med tanke på att den beräknar 120 stycken värden på 0.2 sekunder, tycker jag är mycket effektivt.

Jag använder mig utav MATLAB för att beräkna matrisberäkningar. Sedan ska jag koppla ihop MATLAB med Java igenom socketprogrammering. Med Java så tänker jag ha det grafiska webgrännsnittet där man kan styra regulatorn och ändra börvärden osv. Men då saknas det en sak och det är I/O modul för USB.

Tror ni att om jag använder en vanlig PC där jag installerar MATLAB-programmet och Java-programmet samt STM32 som USB I/O-modul, så kommer det gå fortare än om jag använder en Raspberry Pi 3B+ med MATLAB-programmet och Java-programmet?

Tanken är att Javan ska vara en länk mellan beräkning och hårdvara. Jag tänker summera de två alternativen:

Alternativ 1: PC
MATLAB <---> Java <---> STM32

Alternativ 2: Raspberry Pi
MATLAB <---> Java

Vilket är snabbast? Notera att det är alltså ett MATLAB-skript jag kör, och inte själva MATLAB programmet.
Användarvisningsbild
AndLi
Inlägg: 17042
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av AndLi »

120 värde på 200 ms.

Det är alltså 1 värde på 1.67 ms

Låter extremt långsamt i mina öron..
Vilken stm32a är det och vad kör du den i för hastighet?
120 Mhz eller mer?

Vad innebär en beräkning?
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Al_Bundy »

Klart det är långsamt. Men du antar inte vilka typer av beräkningar den gör. Här är ett exempel på adaptiv reglering som ställer in sig själv på 0.2 sekunder.

Jag är helt ny på STM32 och har endast blinkat med en lampa. Men jag är imponerad hur STM har byggt sin struktur att just koda dessa kort. Med "HAL" eller vad det nu heter, så behöver jag aldrig skriva någon svårare C-kod än några if-for-while-switch satser.

Beräkning innebär Singular Value Decomposition, Forward Euler, Geometrisk Summa, Kvadratisk programmering med begränsningar osv.

Jag har STM32 F401 på 84 Mhz
https://www.st.com/en/microcontrollers/stm32f401.html
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
AndLi
Inlägg: 17042
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av AndLi »

Ja säkert kör du väl en hel del flyttal för att få det att gå extra segt..

84MHz/105DMIPS undra om det beror på att det är någon av de tidigare chipen som kom/ eller en lågprisare.
Varför föll valet på den när du vill köra tunga beräkningar?

Sitter själv med en F407 den går faktiskt upp till 168MHz / 210DMIPS
Blev den för den passar fint in på Mikroe.com utvecklingskort, som tar 4 av deras moduler. Smidigt system, synd bara att de inte släpper libarna open source. Så man får skriva egna till varje modul.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Al_Bundy »

> Varför föll valet på den när du vill köra tunga beräkningar?
Det är inte STM32:an som jag ska beräkningar på. Beräkningar görs antingen på PC eller Raspberry Pi. STM32:an ska bara vara en I/O modul för att styra en 555 timer och läsa analoga värden som skickas till datorn.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av lillahuset »

AndLi: F407 är fin. :)
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av lillahuset »

Det kan alla mikroprocessorer oavsett om de har timers eller inte.

Om det är något du undrar står allt om det i databladet. ST har bra datablad. Errata kan också vara bra att läsa.
Om du läser och försöker förstå men misslyckas så får du säkert svar här i forumet om du ställer en väl genomtänkt fråga.

Edit: Här har det tydligen försvunnit ett inlägg från Al. Vem vet, systemet kanske hittar det...
bobobo
Inlägg: 677
Blev medlem: 10 november 2007, 22:18:30
Ort: Kungsbacka

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av bobobo »

Jag snubblade över denna modul för ett tag sedan och tänkte på dig Al: https://www.sparkfun.com/products/13613
Då kan du nå yttervärlden direkt från ett Java-bibliotek och slipper programmera någon c-kod i STM32'an.

Men angående ditt upplägg. Vad händer med din process* om regleringen uteblir under några sekunder? När du kör regulatorn i matlab-windows eller matlab-raspbian så kan ju operativsystemet få för sig att göra något annat (rensa minne, kolla virus, ladda uppdateringar eller likn.) under några sekunder och råka prioritera bort din reglering. Är det bara på experimentstadie så gör det kanske inte så mycket om det skiter sig en gång i veckan, men det kanske inte är så bra ute hos en kund eller i produktion.
*=Process, dvs det du reglerar, din maskin, hydraulventil, tanknivå eller liknande.

Om du googlar "STM32 matlab" så hittar du programpaket (verkar gratis) till STM32 för att köra din matlab-kod direkt på STM32 processorn (utan att programmera C :) ).
Visst en långsammare processor, men eftersom du hoppar över hela operativsystemet m.m. så skulle jag inte bli förvånad om prestandan ändå blir bättre, men framförallt blir det mer deterministiskt, dvs att prestandan alltid blir lika utan konstiga avbrott.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Rick81 »

För det första har STM32F4 FPU men man måste definera att den ska använda hardFPU i kompilatorn för den ska utnyttja den. Då går flyttalsoperationer lika snabbt som ints.

Sen är jag inte med på hur du tänkt: om det är matlab som är långsamt på beräkna värden på en PC eller Raspberry pi spelar det ingen roll vad du har efteråt i kedjan? Java eller STM32? Eller har jag missuppfattat?

Eller är det läsning av analoga värden? I så fall har STM32F4 ADC på 2.4 MS/s så kör den via DMA och interupt så kan du snyggt få en massa analoga värden och ex får ett interupt efter 1000 st och då skicka över till Matlab för beräkning.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Al_Bundy »

bobobo skrev:Jag snubblade över denna modul för ett tag sedan och tänkte på dig Al: https://www.sparkfun.com/products/13613
Då kan du nå yttervärlden direkt från ett Java-bibliotek och slipper programmera någon c-kod i STM32'an.

Men angående ditt upplägg. Vad händer med din process* om regleringen uteblir under några sekunder? När du kör regulatorn i matlab-windows eller matlab-raspbian så kan ju operativsystemet få för sig att göra något annat (rensa minne, kolla virus, ladda uppdateringar eller likn.) under några sekunder och råka prioritera bort din reglering. Är det bara på experimentstadie så gör det kanske inte så mycket om det skiter sig en gång i veckan, men det kanske inte är så bra ute hos en kund eller i produktion.
*=Process, dvs det du reglerar, din maskin, hydraulventil, tanknivå eller liknande.

Om du googlar "STM32 matlab" så hittar du programpaket (verkar gratis) till STM32 för att köra din matlab-kod direkt på STM32 processorn (utan att programmera C :) ).
Visst en långsammare processor, men eftersom du hoppar över hela operativsystemet m.m. så skulle jag inte bli förvånad om prestandan ändå blir bättre, men framförallt blir det mer deterministiskt, dvs att prestandan alltid blir lika utan konstiga avbrott.
Häftiga saker! Tyvärr har jag redan en STM32.

Det är bara för hobby.

Problemet är väll att den denna MATLAB kod passar endast till vissa kort?
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Al_Bundy »

Rick81 skrev:För det första har STM32F4 FPU men man måste definera att den ska använda hardFPU i kompilatorn för den ska utnyttja den. Då går flyttalsoperationer lika snabbt som ints.

Sen är jag inte med på hur du tänkt: om det är matlab som är långsamt på beräkna värden på en PC eller Raspberry pi spelar det ingen roll vad du har efteråt i kedjan? Java eller STM32? Eller har jag missuppfattat?

Eller är det läsning av analoga värden? I så fall har STM32F4 ADC på 2.4 MS/s så kör den via DMA och interupt så kan du snyggt få en massa analoga värden och ex får ett interupt efter 1000 st och då skicka över till Matlab för beräkning.
Om jag använder en Raspberry så behöver jag ingen STM32. Använder jag en PC så behöver jag en STM32.
Frågan om vilket är snabbast.
bobobo
Inlägg: 677
Blev medlem: 10 november 2007, 22:18:30
Ort: Kungsbacka

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av bobobo »

Eftersom (enligt vad du skrivit ovan) din cykel-hastighet verkar begränsas av Matlab-koden som körs på pc'n, så borde (om du gör rätt) totala systemets hastighet inte bero på om du går via Rpi eller STM32, sålänge du hinner uppdatera dina I/O signaler på 0.2s så har du ju samma prestanda.

edit: Jag ser ingen anledning till att matlab-genererad STM32 kod bara skulle passa vissa kort, möjligen endast vissa cpu'er.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Rick81 »

Aha men då är det ju enkelt: PC är snabbare än raspberry pi.
bobobo
Inlägg: 677
Blev medlem: 10 november 2007, 22:18:30
Ort: Kungsbacka

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av bobobo »

Ja, glöm det jag skrev, som du har beskrivit upplägget så är det ju som Rick skriver.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Al_Bundy »

Okej. Tack. Jag får nog acceptera en PC istället för en enkortsdator.

Jag brukar normalt använda Java och Raspberry när det kommer till IoT. Men IoT är endast bra till loggning eller enklare styrning.
Skriv svar