New: the AI firewall watches the whole platform and explains each incident in plain words. See how it works

Reply To: Arduino ile SDM120 enerji analizörünü Modbus RTU’dan okuyamıyorum, sürekli zaman aşımı

Bu cihazı geçen yıl bir müşteride okudum, üç tane tuzağı var, büyük ihtimalle üçüne birden takıldınız 🙂

1. Baud: SDM120 fabrikadan 2400 baud geliyor, 9600 değil. Menüden değiştirmediyseniz 2400 kullanın, 8N1.

2. Fonksiyon kodu: ölçümler input register’larda, holding’de değil. Yani FC04, readInputRegisters. Gerilim 30001 yani adres 0x0000, akım 0x0006, aktif güç 0x000C, toplam aktif enerji 0x0156.

3. Veri tipi: her değer iki register’lık 32 bit float, büyük sonlu (yüksek word önce).

float regsToFloat(uint16_t hi, uint16_t lo) {
  uint32_t v = ((uint32_t)hi << 16) | lo;
  float f; memcpy(&f, &v, 4); return f;
}

if (node.readInputRegisters(0x0000, 2) == node.ku8MBSuccess) {
  float volts = regsToFloat(node.getResponseBuffer(0), node.getResponseBuffer(1));
}

Bir de istekler arasında en az 100-200 ms bekleyin, ucuz analizörler peş peşe sorguya kızıyor. Hermetry’ye gönderirken enerjiyi kümülatif kWh olarak gönderin, günlük tüketimi orada “increase” ile alırsınız.

Kayıtta yoksa olmamıştır.
Accepted solution♥ 6