RMC

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.