Familien Olsen - privatpc.dk - dukkehjem.dk
Velkommen > WebServer

WebServer

Pool'en er lige nu

Link til Pool WebServer.

Nu da automatik-styringen er på plads, har behovet for at lave noget nyt naturligvis straks indfundet sig: Det må kunne lade sig gøre at overvåge og styre anlægget over Internettet, dvs. fra en almindelig PC med Internet Explorer.

PLC'en jeg har brugt har alle informationer (temperaturer, driftstilstand og alarmer) tilgængeligt men ikke på et format der umiddelbart kan bruges på nettet. Hvis man vil se de aktuelle værdier, må man logge ind på PLC'en med det tilhørende programmeringsværktøj.

Hvis man vil se værdierne udefra eller styre anlægget, kommunikerer man med PLC'en med den serielle protokol: Modbus. Denne protokol er forholdsvis enkel at implementere - og i øvrigt meget udbredt indenfor PLC-verdenen, så man kan få en del forskelligt udstyr som kan denne protokol.

Jeg har derfor søgt efter en løsning der, udover Modbus, gerne skulle leve op til et eller flere af følgende krav:

  1. Være billig, dvs. under 1000 kr.
  2. Gerne kunne programmeres uden brug af dyre compilere etc.
  3. Bruge så lidt strøm som muligt, da planen var at lade den køre døgnet rundt.

Første bud var selvfølgelig at bruge en "nedlagt" PC, men her kneb det lidt med punkt 3, da en ældre PC bruger noget strøm (typisk 25-50 W). Der findes nyere PC'er med lavere forbrug, men de koster så lidt ekstra. Et alternativ kunne naturligvis også have været en gammel bærbar.

Efter nogen søgen på nettet efter ideer, faldt jeg over en lille og (næsten) grydeklar løsning fra det Australske firma Modtronix. De laver en lille WebServer der netop er beregnet til styring af simple ting. WebServeren, der er baseret på en PIC-chip cpu, fylder ikke meget (se billede nedenfor) og bruger heller ikke meget strøm: 50 mA ved 12V, dvs. kun  0.6 W eller under 10 kr/årligt (og ja, jeg ved godt at der også er en router, strømforsyning, PLC mm).

                          

Printkortet måler ca. 55 x 60 mm, så den er virkelig lille.

Kortet indeholder: 98 Kbyte Flash (til programmet), 4 Kbytes SRAM (til data) samt 64 Kbytes EEPROM (til Web-sider mm).

Til kommunikation med omverdenen findes en LAN-port samt en RS-232 seriel port (det hvide stik bagtil). Derudover er der ydeligere en TTL (5V) seriel port (via de sorte stik) samt en I2C-port (rødt stik) til et LCD-display med 4 linier á 20 tegn (se billedet).

Til interface mod det der skal styres findes 30 Digitale I/O (5V), hvoraf op til 12 kan sættes op til at være Analoge Input (0-5 V, 10 bit ADC).  Alle signaler kan nås via de to sorte stik, men man skal dog selv i gang med at lave beskyttelse af indgange og styring af relæer til udgange mm.

Prismæssigt ser det virkeligt fint ud: Webserveren kan fås for omkring 450 kr. inkl. div. kabler samt porto. Vil man have displayet med også, må man slippe yderligere ca. 250 kr. Displayet kan selvfølgelig bruges til at vise status, men kan også være særdeles nyttigt under udvikling og test af egne programmer.

Med hensyn til programmering ser det også ganske fornuftigt ud. Fra Modtronix side indeholder kortet (udover Webserveren) en boot-loader, således at man kan downloade nyt program samt nye web-sider via netværket. Der skal altså ikke specielle kabler, programmerings-enheder eller andet til!

Udviklingssoftwaren kan downloades i en gratis "Student"-udgave fra Microchip (dem der laver PIC'en) - og det hele programmeres i C. Source til Web-server m.m. kan downloades - også gratis - fra Modtronix. Standard Webserveren supporterer out-of-the-box alle digitale og analoge ind- og ud-gange.

Serveren leveres "grydeklar" dvs. Webserver programmet er indlagt og der er også Websider til opæstning af serveren samt styring af alle ind- og udgange. Man kan altså komme i luften uden videre.

På skitsen ovenfor har jeg prøvet at anskueliggøre hvordan jeg har hægtet det hele sammen.

De røde kasser symboliserer det der kan styres og/eller måles i forbindelse med pool'en dvs. følere, relæer mm.  Alle signalerne fra disse samles så i PLC'en nederst i højre side, der er hjertet (hjernen) i det hele. PLC'en styrer samtidig betjeningspanelet (Styretavlen) og viser den aktuelle driftsituation her, ligesom det er herfra man kan stoppe/starte pumpe, solfangerstyring mm.

PLC'en er desuden forbundet til WebServeren, der kontinuert - via den serielle Modbus forbindelse - henter information fra PLC'en om driftsstatus og gør denne tilgængelig via en almindelig Internet-browser.  

De fleste følere er tilsluttet direkte til PLC'en via ledninger. Da jeg dog også gerne vil kunne se temperaturen direkte i pool'en, er den oprindelige løsning blevet udvidet med et flydende, trådløst pool-termometer (nederst til venstre i billedet). Signalet fra dette opfanges af en modtager (tilsluttet lokalnettet) som WebServeren løbende henter data fra. WebServeren sørger så for løbende at opdatere PLC'en med den aktuelle temperatur. Udover pool-termometeret samles også data op fra en udendørs trådløs føler (temperatur og luftfugtighed) og det hele kan yderligere udvides med regn- og vindmåler.

Modbus protokollen er nu fuldt implementeret på WebServeren og den kan både læse værdier og afgive kommandoer via en Webside.

Jeg har lavet nogle enkle testsider der kan vise aktuel status for min pool-styring (se link øverst på siden). Serveren er dog stadig på test-stadiet dvs. den er ikke nødvendigvis online hele tiden. Siderne er bevidst holdt enkle, da det betyder at de også kan vises på en almindelig mobiltelefon (med Internet-adgang, men det har de fleste mobiler vel i dag).

På billederne ovenfor er solfangerens temperatur under 0 grader, hvilket har trigget en temperaturføleralarm.

Udover Modbus og interface til Trådløs Vejrstation har jeg fået implementeret SNTP (Simple Network Time Protocol), således at Webserveren kan opdatere sit interne ur via Internettet - og også sende tiden til PLC'en, således at jeg på sigt kan fjerne det eksterne ur.

Næste projekt bliver tilslutning af display, således at jeg - i teknikrummet - umiddelbart kan se de mest interessante parametre uden at skulle starte PC'en (eller mobilen) op.