Ha ha now that is naughty, editing quotes 
The Devil made me do it! Actually it was the spell checker and an itchy trigger finger. Why the spell checker looks at quotes is something of a mystery.
My PLC is a Koyo DL06 and I programme it with the graphical ladder logic which I find very easy compared to script.
My solenoid can only act if the PLC is getting a zero speed signal from the spindle drive so it is partly hardware and partly software I suppose. Drive and PLC ladder being the software, drive output/plc input and relay output from the PLC being the hardware. I dont have it via Mach at all as I dont have an ATC so my drawbar is just via a button on the panel, that may change in the future if I get time to servo the knee or even better pick up a decent bedmill 
This is the type of thing I am looking to protect against; accidentally hitting a button, MACH or the PC misbehaving. I have a pneumatic lock on both the 4th axis and the spindle and when things go awry, sometimes I hear the familiar 'pop pop' which is harmless in this case, but would not be if the 'pop' was the drawbar releasing a tool. I plan to have the interlocks that you have wisely included on your mill and also have . . . uh . . I'll call it a 'lock' to differentiate from 'enable'. The lock will be engaged at all times via spring load. This will be a mechanical interference which will physically prevent the cylinder from contacting the drawbar. It will have to be retracted vie electric solenoid before the drawbar can be released.
The sequence will probably be something like:
*receive tool change command from MACH (or manual override)
*wait for spindle to stop rotating
* - - - 'disable' - - drive. This is a topic in itself, and could be:
- engage spindle lock, disable drive
- or-
- leave drive enabled to hold spindle position and disconnect (via swapaxis board) the step stream so that the drive will not rotate
*enable Drawbar
*check sensors (including drive outputs - zero speed or equiv), drawbar position, and whatever else might be a good idea to check
*return tool
*sensor check - is tool in correct position?
*retract Drawbar safety lock
*release tool
*position commanded tool
*check elevations (Z axis or carousel) - is spindle nose all the way on the tool?
*grab tool
*Sensor check - is drawbar in correct position for a seated adapter?
*extend drawbar safety lock
The Spindles Enable is also via a switch on the panel which goes to the PLC. If the PLC is seeing that the draw bars relay is active then it will not pass the spindle enable signal to the drive.
If I rotate the spindle by hand when the drawbar is active it will drop out the solenoid right away, not that that is really any use but it shows the ladder is working as it should
From this I assume that your drive is disabled during a tool change? You press a panel button to disable the drive, then press another panel button to activate the (Pneumatic?) drawbar release, presumably while physically holding the adapter by hand? Swap tools manually, lining up the drive dogs by eye, and then press a panel button to grab the new tool?
If I have that right, then I think this is also what Ray does with his new motor driven drawbar setup. Adding the ATC removes the human supervision that you have now. I'm just wondering what methods people use (or think about using) to replace the operator's eyes and good judgement when automating this particular process since it is potentially extremely dangerous. It will be a lot easier to incorporate in the design than to go back and add later.