Добрый день
Пытаюсь разобраться с таймингами записи по каналу MODBUS. Прошу помощи и консультации
Суть задачи: в рамках проекта нужно гарантировать запись параметров в устройства подключенные по MODBUS COM.
Решил работать через стандартный функционал (о других не знал), настроил все каналы (смотрите во вложении).
Стал разбираться с опциями цикла шины и не совсем понятно как происходит чтение - запись в/из канала. В документации все туманно, четких временных границ по записи/чтению нет. В частности изложено так
А так как мне нужно определить время последней записи/чтения по каналу я решил создать отдельную задачу MODBUS_HANDLER, установить для него "адекватный" циклический вызов (18 мс). И приоритет где-то больше 15. При таких настройках я вообще ничего не отлавливаю. Время не фиксируется даже по тем каналам которые опрашиваются каждые 100мс, а по фронту не записываются с первого раза вообще. Нужно выполнить 2-3 попытки чтобы выполнить запись. Я уменьшил цикл вызова до 6мс с самым низким приоритетом, и "о чудо" все заработало. Пишется с первого раза и отлавливаются все события.Код:"...По умолчанию данный параметр имеет значение <не задано>. Это означает, что в качестве задачи цикла шины используется задача проекта с наименьшим временем цикла (обычно такой задачей является задача MainTask). 20 4. Задачи и коммуникационные драйверы Таким образом, если в проекте есть задача с адекватными временем цикла (например, для протокола Modbus – 10…20 мс) – то описанные выше настройки задач всех Modbusкомпонентов можно оставить в значениях по умолчанию, и при этом никаких проблем с обменом не возникнет. С другой стороны, если пользователь, например, увеличит время задачи MainTask до 100 мс (и при этом в проекте не будет задач с меньшим временем цикла) – то обмен будет работать некорректно (с точки зрения пользователя опрос будет медленным, часть ответов slave-устройств будет пропущена)."
Теперь вопрос - насколько корректна такая реализация чтения/записи в/из шины?




Ответить с цитированием
