Introductie
De RMC is een decentrale regelunit die ervoor zorgt dat de installaties op de juiste tijd in- en uitgeschakeld worden. Ook controleert het realtime de correctheid van levering door het uitlezen van de energiemeters. Installaties zijn bijvoorbeeld een WKK of belichting van een kas.
Geschiedenis
De eerste versie van de RMC werd in 2006 ontwikkeld. De RMC bestaat uit een controller (Single Board Computer) met een eenvoudig Linux-besturingssysteem en ICPDAS I/O modules. We moesten zelf alles monteren in een standaard rittal-kast.
RMC V1 moest op maat gemaakt worden. Hierdoor waren er meerdere bezoeken nodig voor een installatie. Ook liepen de installaties regelmatig uit en dus moesten we extra tijd reserveren rond de installatiedagen.
In 2010 begonnen we met de ontwikkeling van een nieuwe versie die een soort blokkendoos moest worden. Het doel: inventarisaties moesten niet meer nodig zijn en de installaties moesten sneller verlopen. Voor RMC V2 ontwikkelden we een eigen controller en IO-module. In de praktijk konden we nu één tot twee installaties per dag doen.
Functies
Energiemeters
Voor het meten van energie worden puls-contacten of Modbus-counters gebruikt. De standaard meettijd is één minuut. De gemeten data wordt lokaal opgeslagen en doorgestuurd naar EnetControl voor verdere verwerking.
Sturing
EnetControl verstuurt sturingsschema’s naar de RMC. De RMC vertaalt deze schema’s naar hardware-signalen die de fysieke installaties bedienen. Hierdoor wordt de fysieke installatie op het juiste moment gestart, gestopt of gemoduleerd naar een specifiek vermogen. Deze sturing gebeurt via eenvoudige contacten en/of analoge signalen van 0-10 Volt of 4-20 milliampère.
Architectuur
De RMC bestaat uit een controller die verbonden is met het internet en die één of twee RS485-bussen heeft voor het communiceren met de I/O-modules. I/O-modules kunnen ICPDAS-I7000 of standaard MODBUS-RS458 zijn. We kozen voor RS485 omdat er daarbij maar twee draden nodig zijn, die te gebruiken zijn over afstanden tot een kilometer, zonder speciale kabels.
Controller software
De software in de controller is geschreven in C++. De applicatie bestaat uit meerdere programma’s die onderling communiceren via shared memory.
Programma:
naam | omschrijving |
---|---|
rmccom | Communicatie met ENetControl via een custom UDP-protocol. Via dit protocol wordt meetdata uitgewisseld, energieschema’s ontvangen, Linux syslog geüpload en de tijd gesynchroniseerd. |
rmcdacbus | De communicatie met de I/O-modules via de RS485-bussen. Het ondersteunt twee verschillende protocollen: ICPDAS-DCon en MODBUS-RS485. |
rmcdata | Het opslaan van meetdata. Hierbij wordt gebruik gemaakt van een eigen speciaal database-formaat wat het aantal writes drastisch beperkt. Dit om de levensduur van Compactflash/MicroSD te garanderen. |
rmclogic | De besturingslogica. Het energieschema wordt vertaald naar verschillende uitgangssignalen, zowel digitaal als analoog. Vermogensbewaking is mogelijk, zodat de fysieke aansluiting niet overbelast wordt. |
rmcctl | Een command-line utility om realtime data uit te lezen van de verschillende programma’s. |
I/O Module
Voor de RMC-V2 ontwikkelden we een eigen digitale I/O-module. Het hart van deze module is de ATMEGA16A. Dat is een 8-bits RISC microcontroller met 16 KB programmable flash memory en 1 KB SRAM die geprogrammeerd wordt in C. De communicatie met de controller gaat via het Modbus-RS485-protocol. Het was noodzakelijk om alles zelf te programmeren: interrupt handlers, uitlezen input signal, debouncing inputs, pulsen tellen, logica en modbus protocol. Alles moest in 16 KB passen. Het uiteindelijke image was iets groter dan 6 K.
Hardware
Versie 1
Hardware
- Arbor I612 SBC
- Intel Ultra Low Voltage Celeron 400MHz processor
- 64 MB Memory
- 265 MB CompactFlash
- Openframe mini PC power supply (-5v,-12V,5v,12V)
- ICPCON 7520R RS232 <=> RS485
- ICPCON I/O Modules
Software
Linux image build from source files (Linux From Scratch) met root filesystem van 14 MB.
Versie 2
Hardware
- Zelfontwikkelde controller op basis van Taskit PortuxG20 met een zelfontwikkelde PCB voor power en RS485
Taskit PortuxG20:- Atmel AT91SAM9G20 met ARM926EJ core op 400 MHz
- 64 MB memory
- 2 GB MicroSD
- Standard 12v powersuply
- Zelfontwikkelde 8DI/DO module
- Optioneel: ICPCON I/O Modules
Software
Embedded Linux image met behulp van OpenEmbedded framework
Ontwikkelde hardware
Voor de RMC versie 2 ontwikkelden we eigen hardware met behulp van onder andere Autocad Eagle
CPB - CPU Power Board
CPB is een eenvoudig bordje om de PortuxG20 te kunnen voeden met 12V en om de TTL signal van de PortuxG20 om te zetten naar RS485.
- Step-down converter voor het omzetten van 12V naar 5V
- 2x RS485-converter naar TTL
DIO - Digital I/O
Een bordje voor digitale input en output, met acht digitale ingangen en acht digitale uitgangen. Naast de actuele waarden van een ingang, heeft iedere ingang een 32 bits puls counter. Om geen false input pulsen te hebben wordt er softwarematig gedebounced. Naast een digitale uitgang die via de modbus gezet kan worden, kun je deze ook koppelen aan een ingang. Zo wordt de input als puls doorgegeven aan de uitgang. Dit wordt veel gebruikt om energiepulsen door te geven aan een ander systeem.
- ATMEGA16 microcontroller
- Acht digitale ingangen met 12V voeding, geschikt voor potentiaal vrije contacten
- Maximale puls frequentie 50 Hz
- Acht digitale uitgangen, potentiaal vrij
- Alle ingangen, uitgangen en modbus zijn beveiligd tegen overspanning
Technologieën
C++, Linux, Modbus, Autocad Eagle,
Productie
2005 - 2015
Mijn functie
Alles volledig zelf ontwikkeld: functioneel ontwerp, hardware-ontwikkeling en software-ontwikkeling.