Added power factor register

This commit is contained in:
Emanuele Trabattoni
2025-07-16 20:41:38 +02:00
parent 53b82c32c3
commit 3923aa3c05
2 changed files with 17 additions and 8 deletions

View File

@@ -18,6 +18,7 @@ namespace drivers
info.pAct = getPact(); info.pAct = getPact();
info.pApp = getPapp(); info.pApp = getPapp();
info.pRea = getPrea(); info.pRea = getPrea();
info.pf = getPf();
info.f = getF(); info.f = getF();
info.whTot = getWhTot(); info.whTot = getWhTot();
info.whPar = getWhPar(); info.whPar = getWhPar();
@@ -44,6 +45,10 @@ namespace drivers
{ {
return readFloatReg(REG_Prea); return readFloatReg(REG_Prea);
} }
const float_t S50140::getPf()
{
return readFloatReg(REG_Pf);
}
const float_t S50140::getF() const float_t S50140::getF()
{ {
return readFloatReg(REG_Freq); return readFloatReg(REG_Freq);
@@ -61,8 +66,8 @@ namespace drivers
{ {
auto now = millis(); auto now = millis();
if ((now - m_lastRequest) < minDelay) if ((now - m_lastRequest) < minDelay)
{ // minimum 500ms between requests { // minimum m_lastRequest between requests
delay(now - m_lastRequest); vTaskDelay(pdMS_TO_TICKS(now - m_lastRequest));
} }
m_lastRequest = now; m_lastRequest = now;
} }
@@ -90,21 +95,22 @@ namespace drivers
void S50140::resetPartialCounters() void S50140::resetPartialCounters()
{ {
uint8_t retries(0); uint8_t retries(0);
const uint16_t resetAll = 0x0A03; constexpr uint16_t nullVal = 0x0000;
const uint16_t stopAll = 0x0A02; constexpr uint16_t resetAll = 0x0A03;
const uint16_t startAll = 0x0A01; constexpr uint16_t stopAll = 0x0A02;
constexpr uint16_t startAll = 0x0A01;
while (retries++ < maxRetries) while (retries++ < maxRetries)
{ {
bool ok(true); bool ok(true);
delayRequest(); delayRequest();
LOG_WARN("Powermeter Counter STOP"); LOG_WARN("Powermeter Counter STOP");
ok &= m_bus.writeRegisters(m_address, REG_PartCount, {0x0000, stopAll}); ok &= m_bus.writeRegisters(m_address, REG_PartCount, {nullVal, stopAll});
delayRequest(); delayRequest();
LOG_WARN("Powermeter Counter RESET"); LOG_WARN("Powermeter Counter RESET");
ok &= m_bus.writeRegisters(m_address, REG_PartCount, {0x0000, resetAll}); ok &= m_bus.writeRegisters(m_address, REG_PartCount, {nullVal, resetAll});
delayRequest(); delayRequest();
LOG_WARN("Powermeter Counter START"); LOG_WARN("Powermeter Counter START");
ok &= m_bus.writeRegisters(m_address, REG_PartCount, {0x0000, startAll}); ok &= m_bus.writeRegisters(m_address, REG_PartCount, {nullVal, startAll});
if (ok) if (ok)
return; return;
LOG_ERROR("Unable to Reset Powermeter Partial Counters, device", m_address); LOG_ERROR("Unable to Reset Powermeter Partial Counters, device", m_address);

View File

@@ -21,6 +21,7 @@ namespace drivers
const uint16_t REG_Papp = 0x102E; const uint16_t REG_Papp = 0x102E;
const uint16_t REG_Prea = 0x1036; const uint16_t REG_Prea = 0x1036;
const uint16_t REG_Freq = 0x1038; const uint16_t REG_Freq = 0x1038;
const uint16_t REG_Pf = 0x101E;
const uint16_t REG_WhTot = 0x1106; const uint16_t REG_WhTot = 0x1106;
const uint16_t REG_WhPart = 0x1400; const uint16_t REG_WhPart = 0x1400;
const uint16_t REG_Serial = 0x0500; const uint16_t REG_Serial = 0x0500;
@@ -45,6 +46,7 @@ namespace drivers
float_t pAct; float_t pAct;
float_t pApp; float_t pApp;
float_t pRea; float_t pRea;
float_t pf;
float_t f; float_t f;
float_t whTot; float_t whTot;
float_t whPar; float_t whPar;
@@ -61,6 +63,7 @@ namespace drivers
const float_t getPact(); const float_t getPact();
const float_t getPapp(); const float_t getPapp();
const float_t getPrea(); const float_t getPrea();
const float_t getPf();
const float_t getF(); const float_t getF();
const float_t getWhTot(); const float_t getWhTot();
const float_t getWhPar(); const float_t getWhPar();