|
Вопросы о программировании Вопросы, касающиеся программирования на FBD |
|
Опции темы | Поиск в этой теме |
30.08.2018, 12:16 | #1 |
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Особенности реализации Modbus TCP
При тестировании реализации Modbus TCP в SMH4 выявлена следующая "особенность":
Modbus TCP сервер принимает неверно сформированный запрос "Write Multiple Registers (0x10)", не формирует никакой ошибки, а в регистрах устройства оказывается мусор. Ожидается, что неверно сформированный запрос будет или проигнорирован (вплоть до закрытия коннекта), или вернется исключение 0x03 или 0x04. При этом, в регистры Modbus не должны модифицироваться, и тем более, в них не должны попадать мусорные значения. Пример 1 неверного запроса и ответ: Код:
Запрос: 0000 0000 0007 01 10 03e8 0002 04 Ответ: 0000 0000 0006 01 10 03e8 0002 Код:
Запрос: 0000 0000 000b 01 10 03e8 0002 04 Ответ: 0000 0000 0006 01 10 03e8 0002 Код:
Запрос: 0000 0000 000b 01 10 03e8 0002 04 0001 0002 Ответ: 0000 0000 0006 01 10 03e8 0002 Для теста использовалась простая программа: По спецификации (например, http://www.modbus.org/docs/Modbus_Ap...col_V1_1b3.pdf) функция 0x10 может возвращать исключения 0x03 (ILLEGAL DATA VALUE), 0x04 (SERVER DEVICE FAILURE). Ниже приведена диаграмма обработки функции 0x10 из спецификации: Последний раз редактировалось Gel, 30.08.2018 в 12:45 |
30.08.2018, 13:21 | #2 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 160
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Особенности реализации Modbus TCP
Цитата:
Дело в том, чтобы добиться подобного, нужно специально сформировать ошибочный запрос. Сам по себе он произойти не может, т.к. все ошибки передачи устраняются на транспортном уровне со своими контрольными суммами. Мы сознательно пошли на упрощение, разрабатывая модуль Ethernet на Пиксель. На более поздние контроллеры, похоже, это переехало по наследству. Но, повторю, показанная вами ситуация искусственна, её нужно провоцировать специально написанным для этого софтом. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
31.08.2018, 13:35 | #3 |
Member
Регистрация: Aug 2016
Сообщения: 32
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Особенности реализации Modbus TCP
|
31.08.2018, 13:50 | #4 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 160
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Особенности реализации Modbus TCP
Но, повторю, показанная
Другими словами, я, как инженер, вижу баг. Но, как тот же инженер, вижу ничтожность этого бага. Следовательно нет необходимости немедленно на это как-то реагировать. В автомобилях нет парашютов, но они падают, если разогнаться на трамплине. Если кто-то разогнался и упал это не означает, что нужно резко бежать и всюду совать по парашюту. Ситуация имеет место быть в реальной жизни? Имеет. Можно ли попасть в нее при обычном использовании автомобиля? Нельзя. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |