1. не стоит вызывать GetTime несколько раз в течении одного цикла. Определитесь что хотите считывать или устанавливать время - и сделайте это в ветвлении.
2. флаги set_time и set_date следует сразу же сбрасывать после применения, внутри условия. Пока они установлены - часы не идут, и сбрасываются в каждом цикле ПЛК.
3. полностью инициализируйте структуру, устанавливая время - вы обнуляете календарь, устанавливая календарь - обнуляете время....