So the loop itself is functional now (in terms of all the hardware and software interfacing), but the metal block didn't actually heat up even at around the maximum voltage output. However, the output value of the PID loop changes as expected with the setpoint/error, as well as when I touched the temperature sensor to heat it by hand.
Here's a picture of the setup when testing the loop. We also tried it with a smaller (aluminum?) slab instead of the heatsink, but that also didn't heat up. It's pretty messy and very much a "before" making pretty packaging picture.
(Oh, also the measurement signal looks pretty noisy in this picture but it gets a lot better if you stick in one of the LP filter boxes)
So I'm not sure how much to chronicle software changes when they're works in progress, so I'll just list everything until someone tells me to shut up:
-Pulled out all temperature control related channels into a separate database file "TempCtrl.db"
-Modified the iocBoot file to include "TempCtrl.db"
-Made a configuration file "TempCtrlConfig.ini" in the scripts folder with parameters for the PID script