Sealed and Flooded profiles represent two distinct operational logic paths within an industrial battery management system (BMS) or DC power controller. These profiles determine the PWM or MPPT regulation behavior, specifically governing the charging stages: bulk, absorption, float, and equalization. In industrial logic controllers, selecting between a Sealed and Flooded profile modifies the state machine logic that manages the electrochemical process of lead-acid or nickel-cadmium storage arrays. The Sealed profile is designed for Valve Regulated Lead Acid (VRLA) and Absorbed Glass Mat (AGM) cells, focusing on oxygen recombination efficiency. It limits gas evolution by strictly enforcing lower voltage ceilings during the absorption phase. Conversely, the Flooded profile incorporates an aggressive gassing phase to counteract electrolyte stratification. Misconfiguration of these profiles leads to catastrophic failure domains: a Flooded profile applied to a Sealed cell causes rapid dry-out and thermal runaway, while a Sealed profile applied to a Flooded cell results in plate sulfation due to insufficient destratification. These profiles are typically implemented at the firmware level or via high-level logic in a Programmable Logic Controller (PLC) using Modbus TCP or CANbus protocols to communicate with rectified power stages.
| Parameter | Sealed Profile (VRLA/AGM) | Flooded Profile (Wet Cell) |
| :— | :— | :— |
| Bulk Current Range | 0.1C to 0.25C | 0.1C to 0.35C |
| Absorption Voltage | 14.1V to 14.4V (at 25C) | 14.4V to 14.8V (at 25C) |
| Float Voltage | 13.2V to 13.6V | 13.2V to 13.5V |
| Equalization Logic | Disabled or Restricted | Enabled (Manual or Periodic) |
| Temp Compensation | -3mV to -5mV per cell/C | -3mV to -4mV per cell/C |
| Default Comms Port | 502 (Modbus RTU over TCP) | 502 (Modbus RTU over TCP) |
| Termination Current | < 1 percent of Rated Ah | < 2 percent of Rated Ah |
| Thermal Max Limit | 50 degrees Celsius | 55 degrees Celsius |
| Protocol Support | SNMP v3, MQTT, CAN | SNMP v3, MQTT, CAN |
| Gassing Point Logic | Suppress Stage 4 | Trigger Active Venting |
Environment Prerequisites
Deployment of these profiles requires an industrial controller with firmware supporting multi-stage charging algorithms. The hardware must include a calibrated shunt for high-precision current measurement and at least one Remote Temperature Sensor (RTS). For distributed systems, the local area network must support the Modbus TCP protocol with a latency of less than 100ms to ensure real-time voltage regulation. Users must have administrative permissions (Level 3 access) within the BMS interface or shell access to the controller kernel. Verification of the battery manufacturer data sheet is mandatory to sync the logic thresholds with the physical electrochemical tolerances.
Implementation Logic
The engineering rationale for separating these profiles lies in the internal pressure management of the energy storage medium. In a Sealed profile, the controller must prevent internal pressure from exceeding the cracking pressure of the safety valves. This is achieved through a shorter absorption timer and a lower voltage knee point. The logic utilizes a current-tail termination method: once the amperage dropped to a specific threshold (I-tail) during the constant voltage phase, the controller immediately drops to the float stage to prevent electrolyte loss.
In the Flooded profile, the controller assumes a ventilated environment and an electrolyte that can be replenished. The logic permits a deliberate overcharge state during the equalization phase. This creates bubbles that mix the electrolyte, preventing the heavy acid from settling at the bottom. The controller interaction involves the transition from the constant current (Bulk) to constant voltage (Absorption) stages, followed by a time-triggered or current-triggered transition to the Float stage. Failure to execute these transitions correctly results in plate degradation or thermal instability.
Initialize Controller Registry
The first step involves identifying the register addresses for the charging profile. Most controllers use specific registers to toggle between battery types. In a Linux-based controller environment, use the modbus-cli tool to write the configuration to the internal EEPROM.
“`bash
Set Battery Type to Sealed (Type 0)
modbus-cli –target 1 –register 0x4001 –write 0
Set Battery Type to Flooded (Type 1)
modbus-cli –target 1 –register 0x4001 –write 1
“`
Writing to this register modifies the internal state machine. You must verify the write operation by reading the status register to ensure the value persisted after the write cycle.
System Note: Always use the systemctl restart pwr_daemon command after registry modifications to force the controller to re-read the configuration map from the local storage.
Configure Voltage Thresholds
Once the profile is selected, the specific voltage thresholds must be tuned for the site’s thermal baseline. Use the snmpset command for remote configuration of the absorption and float parameters.
“`bash
Set Absorption Voltage to 14.4V for Sealed Profile
snmpset -v3 -u admin -l authPriv -a SHA -A pass -x AES -X pass 192.168.1.50 1.3.6.1.4.1.999.1.1.2.0 u 1440
Set Float Voltage to 13.5V
snmpset -v3 -u admin -l authPriv -a SHA -A pass -x AES -X pass 192.168.1.50 1.3.6.1.4.1.999.1.1.3.0 u 1350
“`
This procedure defines the upper and lower bounds of the regulation loop. The controller uses these values as setpoints for its internal PID controller to modulate the power output of the rectifiers.
System Note: Check journalctl -f during this process to monitor for validation errors where the requested voltage exceeds the hardware safety limits.
Establish Temperature Compensation
Sealed batteries are particularly sensitive to thermal variance. The logic must adjust the target voltage based on the real-time feedback from the thermistor connected to the battery post.
“`python
Pseudo-logic for Temperature Compensation
def calculate_target_v(base_v, current_temp, coeff):
delta_t = current_temp – 25
compensation = delta_t * coeff
return base_v + compensation
Apply -3mV per cell for a 12V (6-cell) battery
target = calculate_target_v(14.4, 35, -0.018)
print(f”Adjusted Voltage: {target}”)
“`
This logic prevents overcharging in high-temperature environments and undercharging in cold environments. The compensation coefficient is an essential variable in the Sealed vs Flooded logic differentiation.
System Note: Use a Fluke multimeter at the battery terminals to verify that the controller’s reported voltage matches the actual physical potential, ensuring the shunt and RTS are calibrated.
Dependency Fault Lines
Deployment failures often stem from sensor discrepancies. If the RTS fails, the controller often defaults to a 25-degree Celsius baseline. In a Sealed profile, if the ambient temperature is 40 degrees, this default behavior leads to excessive voltage and subsequent venting. This is a common root cause of “swollen” AGM batteries.
Another fault line is the voltage drop between the controller and the battery bank. If the sensing wires carry significant resistance, the controller will read a lower voltage than exists at the terminals, causing it to push more current than the profile allows. This is observable as a discrepancy between the controller’s internal telemetry and an external voltmeter.
Communication collisions on the RS-485 bus also cause profile instability. If multiple masters attempt to write to the profile register simultaneously, the controller may revert to a default “Safe” profile, which is usually a low-voltage Sealed profile. Verification requires a packet capture using tcpdump or an industrial protocol analyzer to inspect the Modbus frames for CRC errors or exception codes.
Troubleshooting Matrix
| Symptom | Fault Code | Log Source | Verification Method | Remediation |
| :— | :— | :— | :— | :— |
| Excessive Outgassing | E-0102 | /var/log/syslog | Check 0x4005 (Charge Mode) | Switch from Flooded to Sealed |
| Low Capacity Alarm | E-0405 | snmptrap | Check 0x4009 (Float V) | Increase Float Voltage Logic |
| High Temp Shutdown | E-0901 | journalctl | Read Thermistor Resistance | Replace RTS or Check Airflow |
| Profile Reset | E-0000 | dmesg | Check EEPROM Write Cycles | Replace Controller/Flash Firmware |
| Shunt Mismatch | E-0220 | pwr_ctrl.log | Compare Shunt vs Multimeter | Recalibrate Gain in Registry |
For deep diagnostics, inspect the syslog for entries matching “LVD” (Low Voltage Disconnect) or “HVD” (High Voltage Disconnect). These triggers indicate that the logic has reached a boundary condition. A recurring HVD in a Sealed profile suggests the absorption timer is too long or the temperature compensation is incorrectly mapped.
Performance Optimization
To maximize throughput in a Sealed profile, optimize the I-tail termination logic. Setting the termination current to exactly 1 percent of the total Ah capacity prevents over-saturation. For Flooded profiles, equalization should be scheduled during low-load periods to prevent the hydrogen byproduct from accumulating during peak activity cycles.
Latency reduction in the feedback loop is critical. Adjust the controller’s polling interval for the current shunt to 100ms or less to ensure the PID loop can react to sudden load changes, preventing momentary voltage spikes that exceed the Sealed profile’s safety ceiling.
Security Hardening
Hardening the logic involves isolating the management interface. Use iptables to restrict access to the Modbus port (502) to authorized orchestration IPs only. Disable unencrypted protocols like Telnet or HTTP in favor of SSH and HTTPS.
“`bash
Restrict Modbus to a specific management VLAN
iptables -A INPUT -p tcp -s 10.10.50.0/24 –dport 502 -j ACCEPT
iptables -A INPUT -p tcp –dport 502 -j DROP
“`
Implement fail-safe logic at the hardware level. A physical thermal fuse should be wired in series with the controller’s enable circuit to provide a hardware-level cut-off that operates independently of the software profile.
Scaling Strategy
When scaling storage from a single string to multiple parallel strings, the controller logic must adjust the current limits accordingly. In a Flooded system, this requires recalculating the equalization current to ensure all strings reach the gassing point simultaneously. For High Availability (HA), use redundant controllers in a leader-follower configuration. The follower monitors the bus and takes over the regulation logic if the leader fails to heartbeat over the CANbus. This ensures the charging profile remains active and the batteries do not self-discharge or sulfate during a controller outage.
Admin Desk
How do I verify the profile via CLI?
Use modbus-cli –target 1 –register 0x4001 –read. A returned value of 0 typically indicates Sealed, while 1 indicates Flooded. Cross-reference this with your controller’s specific register map documentation to confirm the integer mapping for your firmware version.
Can I run an equalization cycle on Sealed batteries?
No. Most Sealed profiles disable the equalization state entirely. Forcing an equalization voltage (15V+) on a Sealed/AGM battery will trip the safety valves, leading to permanent loss of electrolyte and premature cell failure. Only use equalization on Flooded wet cells.
What happens if the RTS is disconnected?
The controller logic usually defaults to 25C (77F). If your battery room is hotter, the controller will overcharge the batteries. If colder, it will undercharge. Always check the thermal sensor status in the syslog during weekly maintenance routines.
Why is my Flooded battery still sulfating?
Ensure the Flooded profile’s equalization frequency is set correctly. If the logic is set to “Manual Only” and no cycle is triggered, the electrolyte will stratify. Check the 0x400C register to automate equalization every 30 days for 2 hours.
Is it safe to switch profiles while charging?
Switching while the rectifiers are active can cause a sudden voltage swing. It is best practice to set the controller to “Standby” or “Service Mode” before changing profiles, then resume charging to allow the PID loop to ramp up from zero correctly.