![]() |
![]() ![]() |
|
Вопросы о программировании Вопросы, касающиеся программирования на FBD |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
![]() |
#1 |
Senior Member
Регистрация: Nov 2017
Сообщения: 556
Благодарил(а): 2 раз(а)
Поблагодарили:
35 раз(а) в 28 сообщениях
|
![]()
При тестировании реализации 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 |
![]() |
![]() |
![]() |
#2 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 382
Благодарил(а): 15 раз(а)
Поблагодарили:
610 раз(а) в 557 сообщениях
|
![]() Дело в том, чтобы добиться подобного, нужно специально сформировать ошибочный запрос. Сам по себе он произойти не может, т.к. все ошибки передачи устраняются на транспортном уровне со своими контрольными суммами. Мы сознательно пошли на упрощение, разрабатывая модуль Ethernet на Пиксель. На более поздние контроллеры, похоже, это переехало по наследству. Но, повторю, показанная вами ситуация искусственна, её нужно провоцировать специально написанным для этого софтом. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#3 |
Member
Регистрация: Aug 2016
Сообщения: 32
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
![]() ![]() |
![]() |
![]() |
![]() |
#4 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 382
Благодарил(а): 15 раз(а)
Поблагодарили:
610 раз(а) в 557 сообщениях
|
![]() Другими словами, я, как инженер, вижу баг. Но, как тот же инженер, вижу ничтожность этого бага. Следовательно нет необходимости немедленно на это как-то реагировать. В автомобилях нет парашютов, но они падают, если разогнаться на трамплине. Если кто-то разогнался и упал это не означает, что нужно резко бежать и всюду совать по парашюту. Ситуация имеет место быть в реальной жизни? Имеет. Можно ли попасть в нее при обычном использовании автомобиля? Нельзя. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Опрос из Pixel контроллера Carel c.pCO по Modbus TCP | kps | Связь с внешним миром | 12 | 09.07.2022 19:33 |
Modbus TCP и адрес ведомого устройства | sinkevich | Форум Segnetics | 4 | 23.04.2020 17:06 |
SMH4, Modbus TCP, ошибка приема/передачи "Connection Closed Gracefully" | Makrel | Связь с внешним миром | 11 | 21.04.2020 14:23 |
Список переменных ModBus TCP | Delphin | Вопросы о SMH4 | 24 | 06.04.2020 19:07 |
Modbus TCP | alexay_1985 | Связь с внешним миром | 1 | 03.04.2014 10:48 |