You can NOT depend on scan time to be consistent enough for this purpose. It varies a lot depending on what the PLC is doing at the moment.
The UniStream has a milliseconds counter built in, located at 'General.Milliseconds Counter'. Just use that in your logic above.
However, it would be simpler - if you can get by with it (due to your slow 120 RPM rate) - to use the 100ms system bit which exists in both Vision and UniStream.
The timing period has to be exact, whatever you decide on. That is the entire basis of the concept. Basing it on scan time is not sufficient.
This is why it uses the interrupt in Vision, as it is exact and interrupts the scan, if necessary, at the exact time interval.
Someone else can perhaps comment on your logic, as I don't use Unistream. But your deviation observations match what will happen with the basic timing error, as it will increase proportionally the quicker the shaft spins.