Will the application need to do anything else like continuously display values. If so, I would add a timer to the form that ticks every 5 minutes, then read the data via code. If the registers are consecutive, read them as an array:
Dim MyValues() as string=ModbusDriver.Read("40003",10)
If the application does nothing else except wake up every 5 minutes to transfer data, then maybe a Windows scheduled task to launch the app, then make it close when finished. This will make sure no one closes the application and stops the data log. The downside is that the 5 minute interval will tend to jitter by a few seconds.