Application Note: WL-MIO-AN-36010


Power Supply

Part No.: VPE-6010

Power Supply Python Demo Software


Responsive image

The VPE-6010 Power Supply module has 2 input voltage Channels, V1 and V2 which are auctioneered through a diode to the 5 VDC, 4 A switching power supply circuit. This module has 6 "read" channels and acts as an input module to the main system.

By making these readings available, the user application code can monitor the power consumption of the power supply. In applications that use multiple power supplies or require the use of redundant power supplies, these readings can be used to monitor the health of the overall system power.

The power supply module can be installed in any backplane position. The NodeID referred to in the demo program is the "Backplane ID" determined by the backplane jumpers and the addition of the slot in which the power supply is plugged into.
Example 1: If the backplane has no jumpers and the power supply module is plugged into slot position 0, the NodeID is 0 + 0 = 0.
Example 2: If the backplane has a jumper in the "8" position and the power supply is plugged into slot postion 2, the NodeID is 8 + 2 = 10.

During normal operation, the status LED flashes GREEN once per second as a "heartbeat" indicator that everything is functioning normally. If the onboard firmware detects any fault conditions, the Status LED will flash either AMBER or RED.

For the following demo code to work, the "libwlmio" library has to be installed.


Demo Python Code

The Backplane has ID = 0 and the power supply is plugged into slot postion 0.

#vpe6010 Power Supply Module Health Readings

import asyncio
from pywlmio import *

async def main():
  init()

  NodeID = 0  #NodeID location is the Bacplane ID (Jumpers) and Power Supply Slot location
    
  psu1 = VPE6010(NodeID)
 
  while True:
    try:
      a = await (psu1.ch1.read())
    
      #a array
      #a[0] = 5 VDC Bus Current in mA
      #a[1] = 5 VDC Bus Voltage in mVDC
      #a[2] = +V1 Input in mV
      #a[3] = +V2 Input in mV
      #a[4] = +V Output through Auctioneering Diode to Backplane in mV
      #a[5] = +V Output Current to Backplane in mA
 
      print("Power Supply VPE6010 Node %d" % NodeID)
      print("Power Supply Read Register Array = " , a)
      print("+5 VDC V Output = %.02f VDC" % (a[1]/1000))
      print("+5 VDC I Output = %.02f A" % (a[0]/1000))
      print("V1 VDC V Input  = %.02f VDC" % (a[2]/1000))
      print("V2 VDC V Input  = %.02f VDC" % (a[3]/1000))         
      print("Field V         = %.02f VDC" % (a[4]/1000))
      print("Field I         = %.03f A" % (a[5]/1000))
      print("")

    except WlmioWrongNodeError:
      print("Error NodeID = %d Wrong module installed" % NodeID)  # Error Check if wrong type of module installed
    except WlmioInternalError:
      print("Error NodeID = %d Timed out" % NodeID)               # Error Check - Typically module not installed

    await asyncio.sleep(1)

asyncio.run(main(), debug=True)
			

Output from the demo program in a terminal window:

pi@raspberrypi:~/Desktop/wlmio/wlmio_rpi/src/demos $ python3 vpe6010_demo.py
Power Supply VPE6010 Node 0
Power Supply Read Register Array =  (1210, 5161, 24096, 576, 23680, 218)
+5 VDC V Output = 5.16 VDC
+5 VDC I Output = 1.21 A
V1 VDC V Input  = 24.10 VDC
V2 VDC V Input  = 0.58 VDC
Field V         = 23.68 VDC
Field I         = 0.218 A
			

Back to Top