Another item: I have each of the coils tied to a signal, this is not possible for the hregs. that could be my issue.
Here is the machine.ini excerpt for my hregs:
[ModbusDevice/H7\ ToolChanger/function2]
Desc=F2_Outgoing
Type=7
SlaveAddr=1
MbAddr=87
NbrRegs=3
BitPack=0
Bits=0
ReadAs=0
InitialState=1
ScanDenominator=1
Res0=TC87_CMD_ACTION
Res1=TC88_CMD_SLOT
Res2=TC89_CMD_SLOT_FCN
[ModbusDevice/H7\ ToolChanger/function2/TC87_CMD_ACTION]
Desc=TC87_CMD_ACTION: int 0 (do nothing), 1 (get), 2 (replace), 3 (deploy arm), 4(stow arm), 5 (rehome), 6(rescan slots)
Type=256
RegIndex=0
BitIndex=0
[ModbusDevice/H7\ ToolChanger/function2/TC88_CMD_SLOT]
Desc=TC88_CMD_SLOT: slot number: int 0(no movement), 1 - 10(slot number)
Type=256
RegIndex=0
BitIndex=0
[ModbusDevice/H7\ ToolChanger/function2/TC89_CMD_SLOT_FCN]
Desc=TC89_CMD_SLOT_FCN: Slot Function: int 0 (do nothing), 1 (go), 2(retry), 3(check tool presence from memory)
Type=256
RegIndex=0
BitIndex=0
Incidentally, if this helps anyone, I decided to organize my modbus communication into functions. This way I could group the similar actions and maintain continuous register numbering (for higher throughput).