Do MB 21 and MB 30 stay on? If so, you may be trying to communicate too fast. Use something like this, but replace MB 21 & MB 30 with what you REALLY want to initiate the comm (or just delete them entirely if you want to continuously run the data transfer). You can change TD 20 preset to whatever works for you, but 100ms should be plenty slow to avoid dropped packets.
By this I mean that the inductive doesn't necessarily need to actually be on the arm. Most of the time you can find a convenient bolt head or similar within the drive train that can be used very easily by adjusting the sensor's mounting point to be in exactly the correct location. If the bolt etc is mechanically connected to the arm then it isn't going to vary! Although not applicable to this, in some instances where all else was not possible, I have even machined slots in motor shafts at the fan end to enable a definite read that the motor is actually turning correctly, an inductive picks this up very easily.
Or put a leg on the arm that will prevent the scatter.
Busy at present....just a quick drop in during morning start.....wait!
I changed both the read and write to how you show above and the erratic behavior cam back which is why I think i ended up going to the one shots. I didnt even try reducing my read write timer and the behavior returned. By erratic, I mean when i look at the total sessions, the modbus read is outpacing the modbus write by a factor of three. All I changed is what you list above but did it to both the read and write.
When I change it back to the one shot contacts it works again and the total sessions stay equal to each other (well technically they are not equal because the read is always 1 higher)
I2C is not a native protocol for the UniStream. Typically it's used for 2 wire communications between EEPROMs, A/D and D/A converters, I/O interfaces. It's synchronous, so there's a shared clock which is controlled by the Master. If the master is the UniStream I suppose you could use I?O to do it using a clock pulse from an output and an input that feeds to an array of bits that you shift every clock pulse.
You'd have to code it all though so could be very time consuming, your probably better off looking for a third party device that can convert to serial or other.