diff --git a/v2c/trydanmodbustcpmaster.cpp b/v2c/trydanmodbustcpmaster.cpp index 9fbd9de..a324827 100644 --- a/v2c/trydanmodbustcpmaster.cpp +++ b/v2c/trydanmodbustcpmaster.cpp @@ -58,9 +58,14 @@ bool TrydanModbusTcpMaster::initialize() runReadSequence(buildInitSteps(), [this](bool ok) { m_initializing = false; if (ok) { - // Clamp to safe IEC 61851 bounds in case firmware reports unusual values. - m_minIntensity = qMax(6, m_minIntensity); - m_maxIntensity = qMin(32, m_maxIntensity); + // qBound to IEC 61851 absolute limits [6, 32]. The real installation + // ceiling comes from MaxIntensity read above (a 16 A mono Trydan reports + // 16, not 32). The lower guard (qMax 6 was wrong for aberrant 0 returns: + // qMin(32, 0)=0 → maxIntensity()==0 → every setpoint gets clamped to 0 + // and then the <6 A path pauses charging silently). qBound floors to 6 + // on a spurious 0 and caps to 32 on a spurious 65535. + m_minIntensity = qBound(6, m_minIntensity, 32); + m_maxIntensity = qBound(6, m_maxIntensity, 32); } emit initializationFinished(ok); });