I just finished a project using the Ultra 3000 Host Protocol to replace a Quartech OIT panel on four drives. It took me a week to sort out two months of another guy's hard work. My comment to the customer was "If you'd used DeviceNet, we would have been done two months ago".
Sending index values to the Ultra 3000i is very simple on DeviceNet; you fill in an Output memory block in the 1747-SDN with the value and a parameter pointer, then trigger the "write parameter" bit. Once the "Parameter write successful" bit comes back in the Input data table, you're done. I have never had to calculate how long it takes the Ultra 3000 to accept and apply the value; I presume it is in the 10-20 millisecond range.
The big challenge when using the SLC-5/0x as a controller with the Ultra 3000 is, as you have already seen, the fact that the Ultra likes its values in Counts, sometimes in very large numbers of Counts.
Because the SLC doesn't support 32-bit integers, that's the big hurdle.
Search this Forum for some examples of using the 32-bit Resultant registers in the SLC to obtain large values, or to convert a Floating Point value into a long integer using ladder logic.
I am doing an Ultra 3000i / CompactLogix L32E application test next week. We might have to open up another thread to talk about Chuck's application specifically.