Webserverfråga.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
SeniorLemuren
Inlägg: 7779
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Webserverfråga.

Inlägg av SeniorLemuren »

Jag blev lite intresserad av Al bundys kurs om webbapplikationer för inbyggda system. Jag har läst lite i kursen och fick uppfattningen att det var väldigt komplicerat för någon som inte gillar att krångla flera timmar med att installera allehanda program för att bara komma igång. Det finns förmodligen 100 saker som kan bli fel innan man är igång.

Jag kom på att jag för något år sedan köpte ett Arduino Ethernet Shield från ebay för en femtiolapp. Googlade lite och hittade en video där man visar hur man kommer ut på nätet med denna modul på 10 minuter.

Min fråga är då vad som motiverar att man lägger ner en massa tid på denna kurs bara för att lära sig att sätta/läsa pinnar på en uC. Tycker det verkar som att skjuta mygg med elefantbössa. Eller är det något jag missat. Arduino Due är ju ungefär lika snabb som pajen. Om inte det räcker så finns ju Arduino med en 32 bitars nu också.

Jag har inte hunnit testa Arduinolösningen än, men det kanske är andra här som redan kör med denna lösning.
Användarvisningsbild
Jan Almqvist
Inlägg: 1580
Blev medlem: 1 oktober 2013, 20:48:26
Ort: Orust

Re: Webserverfråga.

Inlägg av Jan Almqvist »

Jag tycker att du har helt rätt!!

Om man ska övervaka och/eller styra lite IO via lokalt nätverk eller Internet så finns det mycket bättre lösningar än att trassla med web-servrar och en massa "bloat".

Det är bara att stoppa in en Modbus-slav i Arduinon och sedan använda lämplig Modbus-klient t.ex. min app HMI Droid (Android) eller Odrid HMI (iOS).

Jag har provat med en Arduino Uno plus en Ethernet Shield och man är igång superlätt!!

Här är en film där jag använder en Arduino Uno plus en ESP8266 men principen är den samma.




Det finns givetvis andra HMI appar också.
Användarvisningsbild
Jan Almqvist
Inlägg: 1580
Blev medlem: 1 oktober 2013, 20:48:26
Ort: Orust

Re: Webserverfråga.

Inlägg av Jan Almqvist »

Jag dammade av en Uno som inte varit igång på drygt ett år och provade lite. Några skärmdumpar och ett foto.

Det krävs bara några få rader kod i sketchen för att det ska fungera.

Principen är som nedan:

Kod: Markera allt


#include <SPI.h>
#include <Ethernet.h>
#include <ModbusIP.h>
#include <Modbus.h>

.
.
.

//
//  Instansvariabeln av Modbus-servern
//
ModbusIP mb;

.
.
.

void setup()
{
 
  .
  .
  .

  // The media access control (ethernet hardware) address for the shield
  byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };  
  // The IP address for the shield
  byte ip[] = { 192, 168, 0, 55 };   
  //Config Modbus IP 
  mb.config(mac, ip);

  .
  .
  .

  //
  //  Lägger till en digital utgång med address 0.
  //
  mb.addCoil(0);

  //
  //  Lägger till en digital ingång med address 0.
  //
  mb.addIsts(0);

  //
  //
  //
  pinMode( 4, OUTPUT ); 

  //
  //
  //
  pinMode( 3, INPUT_PULLUP ); 

}



void loop()
{

  //
  //  Kopiera ingång till Modbus-servern
  //
  mb.Ists(0, LOW == digitalRead(3) );

  //
  //  Anropa Modbus-servern cyklist.
  //
  mb.task();

  //
  //  Kopiera utgång från Modbus-servern
  //
  if ( mb.Coil(0) )
  {

    digitalWrite( 4, HIGH );
      
  }
  else
  {
    
    digitalWrite( 4, LOW );
      
  }

}  

Jag tror att jag fått med allt väsentligt.

En liten sak är ändrad i den Open Source Modbus-server jag använt eftersom den som default kopplar ner efter varje transaktion vilket är fel, det är klienten som ska koppla ner och inte servern.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Webserverfråga.

Inlägg av lillahuset »

Som vanligt prydligt och fint när det kommer från Herr Almqvist. :tumupp:
Användarvisningsbild
Jan Almqvist
Inlägg: 1580
Blev medlem: 1 oktober 2013, 20:48:26
Ort: Orust

Re: Webserverfråga.

Inlägg av Jan Almqvist »

Man tackar!
Jag måste ju visa att det fungerar på iPhone också. Tyvärr är det lite trångt att visa filnamnet på iPhonens "Navigation Bar" och namnet blir därför ofta trunkerat. Vidare saknas fortfarande checkboxar och radioknappar i OS. Om man ska använda både Android och iOS så bör man välja animerade bildknappar istället.

(Den konstiga grejen strax under mitten av skärmdumpen har kommit med av misstag.)
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Jan Almqvist
Inlägg: 1580
Blev medlem: 1 oktober 2013, 20:48:26
Ort: Orust

Re: Webserverfråga.

Inlägg av Jan Almqvist »

Dagens sista (?) bild visar nästa Android-version (1.7.8.80) med det snyggare temat "Material" och hur alltihopa ser ut när man stoppar in skärmdumpen från telefonen i ett skal.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Webserverfråga.

Inlägg av Mr Andersson »

Definitionen av inbyggda system är ju väldigt flytande, men min åsikt om vi pratar kommersiella produkter är att antingen så optimerar man koden för att passa på ett så billigt system som möjligt (t.ex. AVR/PIC/cortex-m/etc) eller så tar man en rackmonterad pc eller plc och skiter i allt vad effektivitet heter. Ska det bara vara ett fåtal system är ju hårdvarukostnaden försumbar jämfört med utvecklingskostnaden.

Att ta något mellanting och försöka klämma in webbservrar, multianvändarlinuxsystem och x-servrar känns som att blanda det sämsta från båda världarna. Låt klienten sköta allt som har med UI att göra, servern ska bara skyffla data.
Användarvisningsbild
Klas-Kenny
Inlägg: 11292
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Webserverfråga.

Inlägg av Klas-Kenny »

Jans exempel är ju bra, men inte riktigt rättvist. Att köra Modbus på Arduino och sen lägga allt gränssnitt i en app är ju inte riktigt samma sak som att köra en webbserver på devicen.

Om man inte vill installera en app, eller vill nå från en PC istället eller så, så faller det konceptet. Sen blir ju en app inte helt trivialt att göra heller. Nu vet jag inte vad man har för möjligheter i just denna, men gissar att det inte finns stöd för allt som kan göras i HTML med kringspråk.

Men ja. Det går att lägga en enkel webbserver i en Arduino och köra den vägen. Dock har man en hel del begränsningar i minne och möjligen prestanda. Kan inte göra en alls så flashig sida där som en rPi säkert kan orka hantera. Får heller inte enkel tillgång till alla supermoderna verktyg för webbutveckling, databaser mm.

Men för många enklare saker kan det säkert fungera utmärkt. :)
Är målet bara att kunna styra ett par utgångar och läsa några ingångar ifrån en väldigt enkel webbsida utan lull-lull så tror jag absolut på Arduino-lösningen.
Användarvisningsbild
Jan Almqvist
Inlägg: 1580
Blev medlem: 1 oktober 2013, 20:48:26
Ort: Orust

Re: Webserverfråga.

Inlägg av Jan Almqvist »

Det finns ju en Windows-version av HMI Droid också. Än så länge viserligen bara i Alfa-version men den fungerar bra och har många användare. En riktig produktionsversion kommer att gå att ladda ner från Microsoft Store senare till en låg kostnad.

http://www.idea-teknik.com/en/hmi_droid ... 32_version

Det går också att köra Android-versionen av appen på PC på några olika sätt.

http://www.idea-teknik.com/en/hmi_droid ... #run_on_pc

Att bygga upp sina HMI/SCADA sidor är enkelt och det tar bara några minuter att slänga ihop en fungande sida. Man har c:a 10 olika GUI-objekt att välja bland som kan knytas till olika datatyper och addresser.

Här är ett exempel där man börjar med en blank sida, sätter upp kommunikation, infogar och konfigurerar objekt och testkör på mindre än 2.5 minuter!!



Ett annat exampel där appen används för att styra två frekvensomriktare via Modbus RTU och en enkel portserver:



Om man bara ska styra IO på distans och inte ha någon logik t.ex. inbygg automatik i styrningen så behöver man inte ens en Arduino utan bara en ren IO-modul med Modbus.

Edit: Lagt till en skärmdump som visar Windows-versionen av HMI Droid. Här kör jag den i Wine under Linux Mint 18.1 Xcfe.

Edit: En liten film också.

Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av Jan Almqvist 12 november 2018, 10:52:25, redigerad totalt 1 gång.
SeniorLemuren
Inlägg: 7779
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Webserverfråga.

Inlägg av SeniorLemuren »

Klas-Kenny skrev:Sen blir ju en app inte helt trivialt att göra heller. Nu vet jag inte vad man har för möjligheter i just denna, men gissar att det inte finns stöd för allt som kan göras i HTML med kringspråk.

Men ja. Det går att lägga en enkel webbserver i en Arduino och köra den vägen. Dock har man en hel del begränsningar i minne och möjligen prestanda. Kan inte göra en alls så flashig sida där som en rPi säkert kan orka hantera. Får heller inte enkel tillgång till alla supermoderna verktyg för webbutveckling, databaser mm.
Så vad är det för skillnad på en Arduino med STM32L452RET6, 80MHz eller en Arduino Due och en paj? Är pajen så mycket bättre så att det skulle utgöra någon större skillnad? Visserligen är pajen mycket snabbare och har större minne men behöver man verkligen den höga prestandan för att köra en någorlunda flashig sida? Det handlar ju om att styra någonting inte att tillverka en köp och säljsite liknande Blocket.

En annan fråga är. Vet du vilka moderna verktyg det finns för App-utveckling för t.ex Android eller gissar du där med?

Jag frågar inte för att vara spydig på något sätt utan vill gärna att om man skall skriva ner något så skall man vara säker på vad man talar om för att inte ge en felaktig bild till de som står i ett val mellan olika lösningar. :)
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Webserverfråga.

Inlägg av Mr Andersson »

> behöver man verkligen den höga prestandan för att köra en någorlunda flashig sida?

Nej. Så länge man har nog flash- eller diskutrymme för att rymma all html & javascript så är resten irrelevant. Oavsett om man har en sida med enbart text eller någonting som ser ut att ha designats av en adhd-unge på uppåttjack så renderas ju allt av webbläsaren hos klienten. Det enda servern gör är ju att skicka innehållet.
Det där med att en serverbackend ska sköta UI-layout och rendering slutade man med på 90-talet.
Användarvisningsbild
Klas-Kenny
Inlägg: 11292
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Webserverfråga.

Inlägg av Klas-Kenny »

Nej kör man en 32bitare med hygglig klocka fungerar det säkert ganska långt.

Det som behövs någon prestanda i servern för är om det är en stor webbsida som ska laddas över, för ren dataöverföringshastighet dvs. All rendering görs såklart i klient. :)
Även om man vill ha en massa live-uppdatering på sidan så blir det ju en del serveranrop som kanske skulle kunna bli segt. Men så länge det bara är en enda användare så kommer man ju långt på liten prestanda i servern.

Därav nyckelordet möjligen framför prestanda.
Skriv svar