Industrieel netwerken met open-source
Goedkoop alternatief voor veel toepassingen
Als een koppeling naar een industrieel netwerk nodig is, dan kan dat snel opgelost worden door inzet van een catalogusproduct, zoals een insteekkaart voor een PC. Maar goedkoop is deze oplossing meestal niet, zeker niet bij grotere series. Dan zelf elektronica ontwikkelen? Daar hoort altijd nog een protocolstack op. Dit is veelal te complex om ‘even’ zelf te doen. Uiteraard kunnen protocolstacks ingekocht worden, doch dit is ook niet altijd goedkoop. Maar er is nog een gulden middenweg: een open-source implementatie. Het kost vaak niets, maar er moet veelal nog wel wat werk in gestoken worden.
Van een aantal bekende netwerkprotocollen is hieronder een opsomming gegeven van wat er zoal op open-source gebied beschikbaar is (zie tabel 1 voor een opsomming van URL’s). Let altijd wel scherp op de licentie-voorwaarden en eventuele kosten bij commercieel gebruik. Verder zullen niet alle mogelijke protocolfeatures beschikbaar zijn, let dus op of de door u gewenste functionaliteit aanwezig is (dit is overigens ook vaak zo bij commerciële software).
Uiteindelijk heeft elke protocolstack ook een netwerkinterface nodig en een bijbehorende driver. De kundigheid van de auteur van de software bepaalt hoeveel hardware-kennis er in de code geslopen is, en dus ook hoe lastig het is om andere hardware te gebruiken. Soms worden drivers meegeleverd, maar in principe zal men die zelf moeten maken. Een uitzondering hierop is Ethernet, waarbij vaak gebruik gemaakt wordt van WinPCAP of (indien mogelijk) van een reeds beschikbare TCP/IP stack.
Het schrijven van drivers is voor sommige OS’en beslist geen eenvoudige zaak, en de kwaliteit van de driver bepaalt in sterke mate de snelheid van de protocolstack. Let er ook op dat veel voorbeeld-drivers niet uitblinken voor gebruik in real-time en resource-constrained omgevingen.
1. BACNet
Op de website van de gebruikersvereniging zijn veel links verzameld naar open-source implementaties in diverse programmeertalen: C, C# (BACSharp), Python (BACpypes). Ook wordt een implementatie van een firewall router aangeboden.
2. CAN
CAN is een zeer bekend protocol, maar let erop dat CAN zelf alleen de datalinklaag (2 uit het OSI-model) specificeert, maar verder niets zegt over de andere protocollagen. Er bestaan dus ook zeer veel verschillende op CAN-gebaseerde protocollen. Let er dus op dat uw CAN dus wel het juiste protocol implementeert.
CANFestival
CANFestival is een ANSI-C portable protocolstack, die gebruikt kan worden voor masters en slaves op basis van CAN/Open. Implementaties zijn beschikbaar voor Linux, Windows en twee microcontrollers. Er is ondersteuning voor een aantal bekende CAN-kaarten.
HurriCANe
Dit is een VHDL-implementatie van CAN op OSI-laag 2 (datalinklaag), ooit ontwikkeld door ESA voor gebruik in ruimtevoertuigen. De implementatie is ook getest op conformance aan de CAN-specificatie. Let op de licentievoorwaarden, die gebruik van HurriCANe enkel nog voor ESA-gerelateerde projecten toestaan. De documentatie en een simulatiemodel voor ModelSim zijn nog wel vrij beschikbaar.
MicroCANOpen
Het VS/Duitse Embedded Systems Academy levert een eenvoudige CAN/Open slave implementatie, die naar eigen zeggen ook op eenvoudige 8-bit microcontrollers kan werken.
OpenCores
Dit is een VHDL-implementatie van CAN (OSI-laag 2) zelf. Uit ervaring blijkt dat de implementatie niet helemaal foutvrij is op het gebied van CAN foutafhandeling, maar de ontwikkelaar stelt tegen betaling een betere versie ter beschikking.
Voor het complete artikel klikt u hier
Auteur: R.A. Hulsebos