Although we have not tested it here, this SX1509 board from Sparkfun is inexpensive and offers an additional 16 digital I/O on an I2C interface.
https://www.sparkfun.../products/11502 If you purchased 2 of these, you could control a total of 4x PS12DC with a single LabJack U3. (32 I/O expander channels go to 3 PS12DC, which leaves 4 channels of one of the PS12DC going to FIO2, FIO3, FIO4, and FIO5, and FIO0/FIO1 would be allocated for I2C communication). The 4th PS12DC would simply be connected as usual to the DB15 port on the LabJack.
The SX1509 requires a 3.3V power supply, which you can get from a simple wall-wart supply, or if you want to power everything through the LabJack, you could easily connect VS/GND of the LabJack to one of these regulators via the two pin header labeled + and -: https://www.sparkfun.../products/10934
You'll have to read through the SX1509 datasheet to get an idea of what commands turn on/off each I/O (looks like pg. 32) http://dlnmh9ip6v2uc...ards/sx1509.pdf
The U3 user's guide has a section for I2C, but you may prefer to just look at the example code for I2C in whatever programming language you're using. Here's the pseudocode section of the U3 User's Guide
Suggested Wiring for 4x PS12DCs, 2x SX1509s, and 1x LabJack U3:
LabJack U3 VS/GND => + - of 3.3V regulator mentioned above
LabJack GND => GND on both SX1509
3.3V output of regulator => 3.3V pin on both SX1509
Power each of the 3 PS12DC boards using your power supply of choice (VS1/GND1 through VS6/GND6)
LabJack U3 FIO0/FIO1 => SCL and SDA lines of both SX1509 boards (add a 4.7kΩ pull-up resistor between VS and each FIO0/FIO1)
PS12DC #1 -P3 Header(D0 through D11) => SX1509 #1 (0 through 11)
PS12DC #2 -P3 Header(D0 through D3) => SX1509 #1 (12 through 15)
PS12DC #2 -P3 Header(D4 through D11) => SX1509 #2 (0 through 7)
PS12DC #3 -P3 Header(D0 through D7) => SX1509 #2 (8 through 15)
PS12DC #3 -P3 Header(D8 through D11) => LabJack U3 FIO2 through FIO5 screw terminals
PS12DC #4 -P1 DB15 connector => LabJack U3 DB15 connector
Basic Code Process:
Indicate to the U3 the I2C address of whichever SX1509 you want to communicate with
Set the SCL line to FIO0 of the U3
Set the SDA line to FIO1 of the U3
Configure any relevant I2C options for the LabJack U3
Using I2C commands, write 0x00 to RegDirB(0x0E), and RegDirA(0x0F) of the SX1509 to configure all the I/O to output.
Next write 0x00 to RegDataB, and RegDataA to configure all channels to be output-high(PS12DC channels all ON), or some other number to set various PS12DC lines OFF. Each bit of the number you write will correspond with a channel on the PS12DC.
I recommend starting with the I2C example in whatever programming language you are using.