чего там сложного, NOT init тупо инициализация при запуске программы, а так как цикл исчисляется в мс, то на него можно и не обращать внимание, второе условие RST, тут должно тоже быть понятно обычный сброс, и вот только далее начинаются условия интересующие, это IN AND NOT edge AND NOT Q - расшифровываю при переднем фронте входа и выключенном выходе, NOT IN AND edge AND ((tx - last) > T1) - сработал задний фронт входной переменной и время превысило Т1, далее (tx - last) >= T2 если наступило время большее или равное чем Т2, в телах условий идет присвоение значений выходу