DC Power Distribution Unit (DC PDU)
- Updated2025-08-04
- 2 minute(s) read
The DC power distribution unit (DC PDU) supplies DC power to payloads connected to DC power outlets. You can read the current sensor and voltage sensor on the DC power outlet to monitor the DC power supply. Each outlet can be turned off and on individually.
In certain circumstances, a rack with DC PDU installed may return an empty DCPowerDistributionUnits array from IAteCoreSession. A DC PDU is only detected when the RackPowerState has been set to the Running state at least once. To set the rack power state to Running state, press the power button on the rack or call SetRackPowerStateToRunningAsync. Then, trigger the system to update the DC PDU list by calling RefreshDCPowerDistributionUnitsAsync.
Checking Rack Power State, Setting Power State to Running, Calling RefreshDCPowerDistributionUnitsAsync, and Reading Current and Voltage Sensors for all DC Power Outlets
IAteCoreSession ateCoreSession;
try
{
// To create an object of IAteCoreSession.
ateCoreSession = await AteCoreSession.CreateAteCoreSessionAsync(hostname, password);
// Get the objects of ACPDU component
IACPowerDistributionUnit[] acPowerDistributionUnits = ateCoreSession.ACPowerDistributionUnits;
foreach (var acPowerDistributionUnit in acPowerDistributionUnits)
{
// Print some of the properties of the component
Console.WriteLine("AC power distribution unit name: {0}", acPowerDistributionUnit.Name);
Console.WriteLine("AC power distribution unit location: {0}", acPowerDistributionUnit.Location);
Console.WriteLine("AC power distribution unit vendor name: {0}", acPowerDistributionUnit.VendorName);
Console.WriteLine("AC power distribution unit model name: {0}", acPowerDistributionUnit.ModelName);
Console.WriteLine("AC power distribution unit serial number: {0}", acPowerDistributionUnit.SerialNumber);
Console.WriteLine("AC power distribution unit firmware version: {0}", acPowerDistributionUnit.FirmwareVersion);
foreach (var powerBank in acPowerDistributionUnit.PowerBanks)
{
if (await powerBank.GetPowerBankState() == PowerState.On)
{
Console.WriteLine(powerBank.BankNumber);
foreach (var outletCurrentSensor in powerBank.OutletCurrentSensors)
{
Console.WriteLine("Outlet number: {0}", outletCurrentSensor.OutletNumber);
Console.WriteLine("Current sensor reading: {0} A", await outletCurrentSensor.ReadSensorAsync());
}
}
}
}
}
catch(Exception ex)
{
Console.WriteLine(ex.Message); //Print the exception message.
}
finally
{
if (ateCoreSession != null)
{
// To close the session.
ateCoreSession.Dispose();
}
}