Ошибка в скрипте "Медленный ШИМ"

@BrainRoot 3 года назад написал скрипт “Медленного ШИМа”. При “выставленном” на “максимум” (или даже близком к максимуму - 99 при maxValue = 100) значении контрола виртуального устройства, топик физического устройства ожидаю в состоянии “всегда включено”, но он фактически включается лишь на 4-5 миллисекунд. Только начинаю изучать wb-rules и контроллер, и не могу разобраться - есть ощущение, что setInterval включает топик, а setTimeout (похоже, установленный в предыдущем интервале) его выключает.


Неужели за три года никто скриптом не воспользовался?.. Буду очень признателен, если подскажете как “красивее” и “правильнее” исправить.

Добрый день.
Насколько понимаю используете с modbus устройствами. В таком случае нужно учитывать и время на обмен, от 50мс для 9600 оптимистично.
Ну и - да, добавьте в установку таймера проверку, если уровень более или равен 99% - не взводить его.

Ну да, WBIO-DO-SSR-8 по Modbus на 115200. Где-то около 5мс и получается.
Понял, спасибо!