Carlo Gavazzi EM580 (three-phase, Eichrecht signing meter for EV chargers)
Status: Vendor Confirmed · Register points: 76 · Transports: Modbus RTU
A curated ModDef profile for the Carlo Gavazzi EM580 (three-phase, Eichrecht signing meter for EV chargers). Import it as
carlogavazzi.em580 or load the .moddef.yaml directly.
Connect to one over Web Serial and watch its values live in the device dashboard.
Usage
Load the profile, bind a transport, and read a point by name. The runtime applies the offset, scaling, byte order, and sentinels from the definition.
- Go
- TypeScript
- Rust
- Python
- C
- C++
doc, _ := moddef.Load("carlo-gavazzi-em580.moddef.yaml")
dev, _ := client.New(doc, "carlo-gavazzi-em580", transport) // your modbus.Transport
v, _ := dev.ReadPoint(ctx, "voltage_l1_n")
fmt.Println(v)
import {Device} from '@moddef/core';
import {loadDocument} from '@moddef/core/node';
const doc = await loadDocument('carlo-gavazzi-em580.moddef.yaml');
const dev = Device.create(doc, 'carlo-gavazzi-em580', transport);
console.log(await dev.readPoint('voltage_l1_n'));
let doc = moddef_core::load("carlo-gavazzi-em580.moddef.yaml")?;
let mut dev = Device::new(&doc, Some("carlo-gavazzi-em580"), transport)?;
let v = dev.read_point("voltage_l1_n").await?;
from moddef import Device, load
from moddef.pymodbus import Options, PymodbusTransport
doc = load("carlo-gavazzi-em580.moddef.yaml")
transport = await PymodbusTransport.tcp("192.168.1.50", options=Options())
dev = Device.create(doc, "carlo-gavazzi-em580", transport)
print(await dev.read_point("voltage_l1_n"))
md_doc_t doc;
md_doc_init(&doc, flash_ptr, flash_len); /* zero-copy view */
md_dev_t dev;
md_dev_init(&dev, &doc, MD_STR("carlo-gavazzi-em580"), &transport);
md_value_t v;
md_dev_read(&dev, MD_STR("voltage_l1_n"), &v);
auto doc = moddef::Document::view(flash_bytes).value(); // zero-copy over flash
auto dev = moddef::Device::open(doc, "carlo-gavazzi-em580", transport).value();
if (auto v = dev->read("voltage_l1_n"); v)
std::cout << v->to_string() << '\n';
Commands
Multi-step register procedures (spec §11.7)
this profile defines — write params, arm a trigger, poll for completion, then
read the result. Run one with your language's command executor (RunCommand,
runCommand, run_command, or md_cmd_begin/md_cmd_tick in C/C++).
start_transaction — Start Transaction
Write the OCMF identification fields and begin a signed charging session ('B')
Params
| Field | Type | Required |
|---|---|---|
transaction_id | STRING | |
evse_id | STRING | |
identification_status | enum ocmf_identification_status | |
identification_level | enum ocmf_identification_level | |
identification_type | enum ocmf_identification_type | |
identification_data | STRING | |
identification_flags_rfid | enum ocmf_identification_flags_rfid | |
identification_flags_ocpp | enum ocmf_identification_flags_ocpp | |
identification_flags_iso15118 | enum ocmf_identification_flags_iso15118 | |
identification_flags_plmn | enum ocmf_identification_flags_plmn | |
tariff_text | STRING |
Results
| Field | Type |
|---|---|
status | — |
transaction_id | STRING |
stop_transaction — Stop Transaction
End the charging session ('E'), wait for the signed OCMF file, read it, and confirm the read to release the meter
Results
| Field | Type |
|---|---|
ocmf | BYTES |
length | UINT32 |
transaction_id | UINT32 |
Measurands
The 10 semantic quantities this device reports, each linked to the measurand catalog. Query a device by measurand instead of a raw point when you want portable code.
| Base quantity | Name | Unit | Description |
|---|---|---|---|
voltage | Voltage | V | RMS voltage; qualify with phase_ref (L1_N, L1_L2, ...) |
current | Current | A | RMS current; qualify with phase_ref / direction |
active_power | Active Power | W | Instantaneous real power |
apparent_power | Apparent Power | VA | Instantaneous apparent power |
reactive_power | Reactive Power | var | Instantaneous reactive power |
power_factor | Power Factor | 1 (ratio) | Ratio of real to apparent power (dimensionless) |
frequency | Frequency | Hz | Grid frequency |
energy_active | Active Energy | Wh | Cumulative active energy register |
energy_reactive | Reactive Energy | varh | Cumulative reactive energy register |
energy_apparent | Apparent Energy | VAh | Cumulative apparent energy register |
Source
- Profile:
energy-meter/carlo-gavazzi-em580/carlo-gavazzi-em580.moddef.yaml - Register map: vendor documentation