Показать сообщение отдельно
Старый 01.06.2020, 15:49   #29
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 180
Благодарил(а): 15 раз(а)
Поблагодарили: 665 раз(а) в 607 сообщениях
По умолчанию Ответ: Modbus функция 22 (16h)

Цитата:
Сообщение от ujin Посмотреть сообщение
Функция 05 (0x05) Write Single Coil. Записывается один выход за один запрос. Много запросов, чтобы записать реле выборочно и остальные не трогать
Функция 15 (0x0F) Write Multiple Coils. Записываются все релюхи за один запрос. Один запрос, но невозможно пропустить релюху.
Функция 22 (0x16) Mask Write Register. Можно записать одним запросом одну выборочную релюху а остальные не трогать.
Можно еще сначала прочитать все релюхи, затем модифицировать свою, затем записать все. Но при мультимастерном доступе (как такое организовать на RTU тема отдельная, а на TCP так вообще запросто) происходят коллизии, когда один прочитал, второй в это время модифицировал, первый вернул на место.
Я это всё понимаю и представляю, зачем это, например, в системах с десятками и сотнями релюх или "релюх". Понимаю, зачем это в задачах управления освещением в мультимастере.

А вот зачем это отдельному модулю с маленьким количеством, да ещё одновременно без R/W C/R - я этого не понимаю. Тем более, в вентиляшке.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием