VSCP – Very Simple Control Protocol

VSCP staat voor V(ery) S(imple) C(ontrol) P(rotocol) en het is, zoals de naam aangeeft, een heel eenvoudig protocol. Het is eenvoudig, omdat het ontwikkeld is voor het gebruik in 'low end' ( lees goedkope ) micro comtrollers.

Maar VSCP is eigenlijk meer dan alleen maar een Protocol. Samengevoegd in een pakket omschreven als VSCP en vrienden is het een complete oplossing voor metingen en controle. Het protocol werd in het jaar 2000 in het publieke domein geplaatst en is daarom vrij te gebruiken en te implementeren voor iedereen.

VSCP gebruikt een erg goed gedefinieerd berichten formaat en ondersteunt 'global unique indentifiers' zodat nodes, waar ook geinstalleerd in de wereld, geïdentificeerd kunnen worden. Het heeft een register model om zodoende een flexibele interface te geven aan zowel node configuratie en een model om node functionaliteit te controleren.

VSCP veronderstelt niets over lagere systeem lagen. Het werkt met verschillende transport mechanismen zoals Ethernet, TCP/IP, Draadloos, Zigbee, Bluetooth, CAN, GPRS, RS-232, USB.

Elke control situatie kan beschreven en toegepast worden door gebruik te maken van VSCP.

Enige kenmerken:

  • Vrij en open voor commercieel en ander gebruik.
  • Heeft twee lagen. Laag I en laag II, waar laag I is ontwikkeld met CAN als kleinste gemene veelvoud. Het kan gebruikt worden voor TCP, UDP, RF en lichtnet communicatie, enz, enz.
  • Heeft wereldwijd unieke id's voor elke node.
  • Heeft een mechaniek om automatisch een uniek id te koppelen aan een nieuw geinstalleerde node informeert andere nodes en mogelijk hosts dat een nieuwe node is beschikbaar en klaar.
  • Gebruikt 'registers' als een uniforme manier om nodes te configureren.
  • Kan gebruik maken van een 'decision matrix' om node te programmeren met een dynamische functionaliteit.
  • Heeft een gemeenschappelijke specificatie taal 'MDF' die een module op een uniforme wijze beschrijft welke gebruikt kan worden voor de setup van software en dergelijke.
  • Heeft software en drivers voor Windows en Linux. Breidt zich nog steeds verder uit.

Waarom een ander Protocol

VSCP is ontworpen waar andere oplossingen te duur zijn om toe te passen. Dit kan zijn in 'code overhead' waar meest andere protocollen meer middelen (flash/ram) gebruiken van een micro-controller dan de actuele applicatie, waarbij heel veel gevraagt wordt van het project.

VSCP kan werken met een typische laagste prijs 'dump nodes' zoals de Microchip MCP250xx series, tot een 1K-2K flash micro controller module tot een volledige implementatie met al de mogelijkheden in 5k flash.

VSCP is vrij en open. Iedereen kan meedoen met het project en kan meehelpen om meer eigenschappen en functionaliteit toe te voegen aan het protocol. Er is vrij te gebruiken firmware en driver code te verkrijgen de meeste microcontrollers met veel communicatie technieken. Iedereen kan deze code gebruiken met geen verplichting om nieuwe code te publiceren, zelf als de meeste dat juist wel doen.

Hoe werkt het?

Events

VSCP werkt op basis van events. Nodes generen events en nodes reageren op events. Events zijn normaal niet geaddresseerd, maar worden in plaats daarvan 'gebroadcast' op de bus. De beslissing is aan de ontvangende kant of het wel dan niet geïnteresseerd is in het event.

Alle berichten krijgen het oorspronkelijke adres mee van de node die het verzond. Dit is een GUID welke bestaat uit 16 bytes maar een kleinere, typically, 1 byte nickname wordt gebruikt voor de meeste systemen. Het is echter altijd mogelijk de volle GUID te herleiden van de nickname.

Events zijn verdeeld in groepen. Allereerst zijn er level 1 en level II events. Level I events zijn gelimiteerd tot een maximum van acht data bytes, terwijl level II events tot 488 data bytes kunnen hebben. Het lage maximum data count van Level I heeft zijn oorsprong omdat CAN gebruikt wordt als de least common denominator. Dit betekent echter niet dat VSCP level I alleen voor CAN gebruikt kan worden.

Level I en Level II berichten zijn verdeeld in een class en een type. De class definieert een group van berichten van een specifieke type. Kenmerkende voorbeelden zijn 'classes' voor measurements, information en control.

Zoals reeds opgemerkt zijn bovengenoemde berichten niet geaddresseerd. Dit is echter niet geheel waar daar een klasse in elke laag (CLASS1.PROTOCOL and CLASS2.PROTOCOL) events hebben die worden geadresseerd. Deze klassen definieren protocol functionaliteit die alle nodes moeten implementeren. Specifieke voorbeelden zijn types voor boot-loader, register bereik en status informatie.

De meeste events kunnen zone/subzone definities gebruiken met het doel om nodes in groepen te verdelen.

Registers

Elke node heeft een gespecificeerd aantal byte brede registers gedefinieerd. Dit is de tweede interface van de 'black box' die de node representeert. Het register bereik van een node is 256 bytes verdeeld in twee helften. Het laagste gedeelte (0×00-0x7f) is afhankelijk van de applicatie. Het boveste gedeelte is verplicht gespecificeerd door VSCP. Dit bereik houdt, onderandere veel ander zaken, de firmware en hardware versies van de node. de GUID, gebruikers module id, alarm status en gelijkende registers.

In de top van de verplichte registers ruimte is een 32 byte string opgeslagen, de MDF, welke een URL bevat dat wijst naar een locatie waar een XML file gevonden kan worden welke de module zijn registers en zijn functionaliteit beschrijft.

Het lage gedeelte van de register ruimte wordt gebruikt om control en status registers en meer complexe structuren. De omgeving is gemapped en 65535 paginas kunnen indien nodig gebruikt worden voor zeer complexe senarios.

MDF. Module Description File

De MDF file beschrijft de module op een 'high level' wijze. Het geeft informatie over de ontwerper van de module, welke berichten ervan kunnen worden verwacht en het geeft de definities van haar register inhoud. De MDF kijkt naar de module vanuit een een 'high level' perspectief en kan floating point waardes zien, bit arrays, optie tabellen in register ruimte en geeft zodanig applicatie software een manier om register op een zeer gebruikersvriendelijke manier weer te geven.

Er zijn twee twee manieren de MDF te verkrijgen door de registers te lezen die de informatie vasthouden. Daar VSCP is ontworpen voor zeer kleine nodes is het daarom onmogelijk voor zo'n node de MDF intern op te slaan. In dit geval wijst de string naar een Web server vanwaar de XML kan woden gedownload en uitgevoerd. In een module met meer resources wordt de MDF wel intern gestored, de lees string heeft in dit geval een nul lengte en de MDF kan direct van de module gehaald worden. De node constructor beslist welke methode hij/zij wil gebruiken.

De MDF geeft ook aan waar drivers voor verschillende omgevingen en systemen en gebruiker manuals etc. gevonden kunnen worden.

Decision Matrix

Alle nodes kunnen optioneel worden voorzien van een decision matrix. Deze matrix wordt gebruikt een bericht of een groep van berichten te definieeren welke een vastgestelde aktie teweeg brengt in de module. In VSCP wordt dit de 'Event-Decision-Action' genoemd naar het voorgaande project EDA. Een kermerkend voorbeeld is het aansturen van een relais. De module krijgt een een aktie om een relais aan te zetten en een andere aktie om het reais uit te zetten. Dit kan vast gecodeerd geimplementeerd worden zodat het relais wordt aangezet door een ON-bericht en uitgezet wordt door een OFF-bericht. Door gebruik te maken van een DM wordt het gemakkelijk om door elk bericht een aktie uit te voeren en dus niet allen van een ON/OFF bericht.

Het DM zit fysiek in het register space precies zoals alle ander parameters in de module. Register bereik funkties worden gebruikt om deze te veranderen.

Metingen

Een speciale Klasse wordt gebruikt voor metingen en events voor alle SI units en afgeleide units zijn gedefinieerd. De Klasse zal groeien over tijd als nieuwe types nodig zijn. Dit betekent dat bijvoorbeeld een temperatuur meting normaal wordt verzonden als een kelvin temperatuur. Celsius en Fahrenheid is ook mogelijk in dit geval en gelijksoortige alternatieven zijn mogelijk voor andere types, maar de SI unit is altijd default.

Hoe de meting wordt voorgesteld in het frame is ook goed gedfinieerd. Bit velden, string, integer, genormaliseerde integer (decimaal)m en floating point waardes zijn mogelijk. De genormaliseerde integer is speciaal geschikt voor een minimaal systeem om decimale data te versturen. Omdat het event en zijn inhoud goed zijn gedefinieerd, is het heel gemakkelijk de data uit te leggen op de ontvangende kant, waar het behandeld moet worden, in een database gestopt, anders vastgelegd of weergegeven.

Nu nog samenstellen

Daar VSCP werkt met events moet je een systeem vaak anders opbouwen. Een specifiek voorbeeld is een tank met een nivo meter en een pomp welke samen een zelf onderhoudend systeem vormen. Een traditioneel systeem zou een master gebruiken om de pomp te besturen samen met de sensor. In VSCP kan dit ook maar we proberen zoveel mogelijk intelligentie in de betreffende node zelf te stoppen.

We vertellen de level sensor om nivo informatie te sturen met een vast interval met mogelijk meer sensors om voor redundancy te zorgen.

Nu dragen we de pomp op om te starten met pompen als de tank een laag nivo bereikt en weer stopt bij een hoog nivo. Dit zou gevaarlijk kunnen zijn als de sensor defekt zou raken en/of de kabel zou breken etc. Als dit het geval is, dan gaat de pomp naar een veilige staat en de status naar alarm status welke wordt geld aan de rest van het systeem als er geen sensor data meer wordt ontvangen. Deze 'Fail Safe State' kan meestal voor elke control situatie gevonden worden.

Als het transport meganisme voor de applicatie onbekent is, moet de timing voor VSCP erg los gehouden worden. We kunnen nu niet zeker zijn wanneer een event aankomt of zels of het wel aankomt. Veel transsport meganismen, zoals CAN en TCP/IP, maken het aanbieden meer zeker, terwijl andere oplossingen zoals UDP. RF en PLC veel problemen kunnen opleveren. Het is daarom erg belangrijk dat een verzonden event altijd door een event conformatie wordt beantwoord.

Voor sommige nodes hoeft dit niet belangrijk te zijn. Een temperatuur node of een level sensor node zenden hun metingen en voor deze nodes maakt het niets uit of ze gebruikt worden door andere nodes. Dit denken is de basis. De node welke het event genereert moet - indien mogelijk - zo weinig mogelijk weten over hoe het event wordt gebruikt. Dit maakt het systeem erg flexible.

De vrienden

Een software pakket VSCP & Friends genoemd, wordt beschikbaar gesteld voor VSCP gebruikers. Dit pakket kan worden gedownload en vrij gebruikt worden en bevat veel applicaties en code. Alles is beschikbaar voor Windows zowel als Linux systemen. Allereerst en mogelijk het meest belangrijk dat het de VSCP daemon bevat. Dit is server software dat het mogelijk maakt om verscheidene VSCP segmenten over het internet te besturen.

De server bezit een veilige Internet interface en maakt het mogelijk om drivers toe te voegen voor nodes of speciale apparatuur. Een driver met de server communiceren via de CANAL interface voor een nivo I driver en de TCP/IP interface voor een nivo II driver CANAL staat voor 'CAN Abstraction Layer' en was in beginsel ontworpen als een software laag tussen applicatie software en CAN apparatuur. Voor VSCP kan niet alleen CAN apparatuur aangesloten worden maar ook drivers naat CAN adaptors zoals PEAK, IXXAT, PORT etc zijn aan het pakkrt toegevoegd, daar vele CAN gebruikers dit systeem gebruiken.

Veel code is beschikbaar welke beantwoord aan de CANAL interface. dezelfde code kan gebruikt worden om direkt met een apperaat te communiceren dat een CANAL driver gebruikt en zodoende met de driver kan praten. Dit maakt het, met meerdere andere voordelen, gemakkelijk om gesimuleerde sytemen te bouwen die dezelfde code basis gebruiken als het resulterende systeem.

De deamon kan veel meer dan het op afstand verwisselen/installeren van drivers, het op afstand bedienen van gebruikers en permissions, het opzetten en bedienen van een interne 'decision matrix' om daarmee een zelfondersteund control systeem op te bouwen.

VSCP Works is a client applicatie die in het pakket is inbegrepen. Deze applicatie kan gebruikt worden om VSCP berichten te zenden/ontvangen naar segmenten/apparaten welke een CANAL interface kunnen exporteren en ook kunnen praten met een VSCP deamon op afstand. VSCP Works kan gebruikt worden om register ruimte te onderzoeken van elke VSCP node en heeft ook ondersteuning voor het updaten van firmware op afstand.Server and client application is released under the GPL license. Libraries and classes is released under a modified LGPL license that make sure they can be used in proprietary projects.

Misschien wel het meest belangrijke aspect uit het VSCP & Friends pakket is dat het gebruikt kan worden als een abstraction om andere technologien en technologieën te verbinden. Je hoeft alleen een driver op te bouwen welke een vertaalslag maakt naar/van VSCP berichten en dan deze driver te installeren voor de VSCP daemon voor functionaliteit op afstand, waarbij software interface ed direct beschikbaar is. Op deze manier kan 1 applicatie interface gebouwd worden om verscheidene technologieën met verschillende protocollen aan te sturen. Je kunt dit vergelijken met het aansturen van printers voordat Windows werd aangekondigd. Met elke applicatie moest een stapel disk met printer drivers worden meegeleverd. Windows maakte hier een eind aan door het API abstraction voor printers te introduceren. VSCP & Friend doet hetzelfde voor SECO (SEnsor/COntrol) apparatuur. Een Web interface, OHAS genoemd, wordt ontwikkeld om het mogelijk te maken om dynamische control interfaces te bouwen met drag en drop technologie.

Samenvattend:

VSCP maakt het gemakkelijk en erg kosten effectief om systemen op te bouwen met gedistribueerde intelligentie. Het protocol wordt in het publieke domein geplaatst en het is daarom vrij te gebruiken voor iedereen en te veranderen naar eigen inzicht. VSCP kan gebruikt worden van applicatie tot apparaat, maar het kan ook gebruikt worden als een abstractie naar andere technologieën waarbij 1 applicatie geschreven hoeft te worden voor verscheidene verschillende technologieën transparant aan te sturen.

Meer informatie en downloads zijn beschikbaar op http://www.vscp.org

wikiwork/translation/intro-dutch.txt · Last modified: 2010/08/19 03:11 (external edit)
Public Domain www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0