"Групповая запись" в подчинённое устройство

Автор Danial, 23 ноября 2017, 11:26:30

« назад - далее »

Danial

Здравствуйте. У меня есть стороннее slave-устройство (которое подключено на порт СОМ1 контроллера Z400) и это slave-устройство имеет набор регистров с адресами от 300 до 400.
И если Master-устройство (Z400) перезаписывает небольшую группу регистров из диапазона 300-313, то запись проходит нормально (скажем 5 регистров с 309 по 313 см.скрншот 1), но если записывать большую группу (с 300 по 312 например (см.скриншот 2 ) то запись в подчинённое устройство вроде и проходит, но бит rdy не появляется и висит ошибка 16 (нет ответа от устройства в течение установленного таймаута).

VoronovMaksim88

Попробуйте на карте сети кликнуть правой кнопкой по порту - настройка.
Там есть таймаут, можно попытаться его увеличить.
Но лично я бы наверно вообще по одной переменной запрашивал.
Чем короче посылка тем выше шансов что она дойдёт.

Danial

Как бы да. Мне, в общем-то, Артём уже написал, что нужно в шаблоне, на ножке СОМ1 у контроллера увеличить Таймаут (см.скриншот в приложении). Я попробовал - это помогает.
Но может можно как-то сохранить этот параметр в шаблоне программы, или не знаю...
Чтобы не требовалось каждый раз переназначать таймаут в карте сети.

VoronovMaksim88

В шаблоне можно только задать тип порта мастер или слэйв.
А настройки порта они уже для конкретного контроллера.
Согласен, маленько путанно, но я сам не знаю как предложить сделать лучше.

Danial

#4
А вы не подскажите ещё.
Вот у меня есть несколько систем на контроллерах Z400, которые по порту СОМ0 выведены на пульт Samkoon SK-035AE.
Порты СОМ0 настроены в режим Slave и имеют "Таймаут" 100 мекс (значение по-умолчанию).
И пульт Samkoon (настроен как Master) имеет в настройках параметр "Communication Time" (см.скриншот в приложении), про который в мануале (стр.298) ничего толком не написано. Но если я ввожу туда значения меньше 100мс, пульт начинает периодческий выдавать ошибку, суть которой в том, что тот или иной регистр не удалось прочитать.

Я тут подумал, имеет ли смысл попробовать уменьшить время "Таймаута" у контроллера Z400 до 10-20 мсек?
Или это чем-то может быть чревато? И почему разработчики сделали именно 100 мсек значением по-умолчанию?

serge197a

нет, уменьшение таймаута тут сильно не поможет не поможет.
Это параметр - период опроса.
100мс- это 10 раз за секунду опрашивает.
У вас все параметры так часто меняться не могут.
В среднем опрашивать параметры чаще 1 раза в секунду нужды нет.

Artem

Вы имеете виду вот этот параметр? Который на рисунке?
Если да, то это таймаут ожидания ответа для порта в режиме мастера. Для режима слэйв настройки таймаута нет. Задержка при ответе слэйва будет зависеть только от величины программы, то есть от времени выполнения одного цикла программы. Вряд-ли он будет слишком большой, но 20-30 мсек - это где то уже на пределе. Так что у мастера нет смысла ставить такой маленький таймаут.