Проблема не в вычислении часов минут секунд, а получении правильного секундного тика из ПЛК.
так его не берут через задний проход, ну есть у Вас строка ms := TIME_TO_DWORD(TIME()) - tx; этого достаточно чтоб получить отдельные элементы времени, а все эти вычисления больше либо равно тогдда плюсуем единичку, это и есть Ваша ошибка в неточности полученных значений
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран