Hi,
Your cron is triggered every 30 minutes. And once the plugin is run, the "last time triggered" setting of the plugin is updated with the current time. So there it's already possible that there is a 1 second delay. So the next day, at the same hour the "last time triggered" setting will still be missing 1 second before it could be a full day of waiting, and thus it has to wait for the next cron trigger 30 minutes later. To avoid that, the best is to trigger the cron URL more frequently. If you configure it to trigger the cron every 1 minute, that you'll only have a one minute delay every day maximum.