# Generic PLC

> Ondersteunde toestellen: elke meter die een PLC via het generieke registerblok aanbiedt

Source: https://voltmasters.io/nl/docs/device-integrations/energy-meters/generic-plc/

In sommige installaties is de energiemeter niet rechtstreeks bereikbaar. Een **PLC** leest de meter uit, over welk protocol die PLC ook praat, en publiceert de metingen opnieuw op Modbus TCP.

De generieke PLC-integratie is precies daarvoor: in plaats van nog een metermerk te ondersteunen, leest ons EMS een vast, gestandaardiseerd blok Modbus-holdingregisters dat de PLC invult. Zo is elke meter in het platform te krijgen, zolang de PLC hem in deze indeling aanbiedt.

> **Opmerking**
>
> Deze integratie vraagt **EMS-controllerversie 0.0.320 of hoger**.

> **Let op**
>
> Dit is een integratie die enkel opvolgt. Het EMS leest metingen uit de PLC en kan er niets via aansturen.

### Wat de PLC moet aanbieden

-   **Modbus TCP** op het netwerk dat de EMS-controller kan bereiken.
-   Een blok **holdingregisters** in de indeling hieronder.
-   **Enkel gehele getallen**, met de vaste schaalfactoren hieronder. Geen floats.
-   **Big-endian** 32-bitwaarden, het hoge woord eerst.

### Indeling van de registers

Elke offset staat tegenover een **basisregister** dat je per toestel instelt. Zo kan één PLC meerdere meters op hetzelfde slave-ID publiceren: geef elke meter zijn eigen basisregister.

| Offset | Waarde | Type | Eenheid in het register | Schaal |
| --- | --- | --- | --- | --- |
| 0 | Status | u16 | 0 = offline, 1 = online |  |
| 1 | Actief vermogen | i32 | W | x 0.001 to kW |
| 3 | Reactief vermogen | i32 | VAr | x 0.001 to kVAr |
| 5 | Spanning L1 | u16 | 0.1 V | x 0.1 to V |
| 6 | Spanning L2 | u16 | 0.1 V | x 0.1 to V |
| 7 | Spanning L3 | u16 | 0.1 V | x 0.1 to V |
| 8 | Stroom L1 | i32 | mA | x 0.001 to A |
| 10 | Stroom L2 | i32 | mA | x 0.001 to A |
| 12 | Stroom L3 | i32 | mA | x 0.001 to A |
| 14 | Arbeidsfactor L1 | i16 | x 1000 | x 0.001 |
| 15 | Arbeidsfactor L2 | i16 | x 1000 | x 0.001 |
| 16 | Arbeidsfactor L3 | i16 | x 1000 | x 0.001 |
| 17 | Totaal verbruik | u32 | Wh | x 0.001 to kWh |
| 19 | Totale productie | u32 | Wh | x 0.001 to kWh |

Het actief vermogen heeft een teken: positief is afname, negatief is injectie.

### De meter aan het EMS toevoegen

Voeg een energiemeter toe met merk **Generic** en model **PLC**, gericht op het IP-adres, de poort en het slave-ID van de PLC. Stel daarna in:

| Instelling | Wat je invult |
| --- | --- |
| **Modbus base register** | Het eerste register van het blok van deze meter. Staat standaard op **0**. Bij meerdere meters op één PLC geef je elke meter zijn eigen basisregister. |
| **Modbus heartbeat register** | Optioneel. Het register met een teller die de PLC periodiek verhoogt. |

### De heartbeat opvolgen

Het heartbeatregister is optioneel maar aan te raden. Een PLC waarvan de toepassing vastgelopen is, blijft op Modbus antwoorden met de laatste waarden die hij wegschreef, dus de meter lijkt in orde terwijl zijn gegevens stilletjes verouderen.

Stel je een heartbeatregister in, dan volgt het EMS die teller op. Verandert ze meer dan **30 seconden** niet, dan wordt het toestel gemarkeerd, zodat je ziet dat de toepassing op de PLC niet meer draait.

### Wat het EMS kan

Met de huidige integratie biedt ons EMS:

-   Het actief en reactief vermogen, en per fase de spanning, de stroom en de arbeidsfactor opvolgen
-   De totaal afgenomen en geïnjecteerde energie opvolgen
-   De meter gebruiken als meter op de netaansluiting of als submeter, net als elke andere ondersteunde meter
-   De beschikbaarheid van de PLC en zijn heartbeat opvolgen

Er kan later functionaliteit bijkomen naarmate de integratie uitbreidt.
