I think it's not possible to do precise timely scheduled tasks in the background with iOS
With location and the appropiate background bluetooth usage declarations in plist, if you make sure to leave the ble scanning for certain services when going to background, this task is transfered to coreBluetooth and your app will be awakened (even if it has been system-killed, not user-killed) when a bluetooth peripheral matching the searched serviceId is found.
With this, you can keep track of the last time you connected to it and, if 5 minutes or more have passed, since previous connection, connect again, remembering to always leave the scan active when finished.