Segnetics

Вернуться   Segnetics > Форум Segnetics > Вопросы о программировании

Вопросы о программировании Вопросы, касающиеся программирования на FBD

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2018, 12:16   #1
Gel
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
Пример 2 неверного запроса и ответ:

Код:
Запрос: 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 из спецификации:

Изображения
Тип файла: png tcpmodbus-test.png (5.2 Кбайт, 809 просмотров)
Тип файла: png badmodbus.png (12.9 Кбайт, 797 просмотров)
Тип файла: png spec-0x10.png (74.8 Кбайт, 819 просмотров)
Вложения
Тип файла: zip tcpmodbus-test.psl.zip (155.4 Кбайт, 22 просмотров)

Последний раз редактировалось Gel, 30.08.2018 в 12:45
Gel вне форума   Ответить с цитированием
Старый 30.08.2018, 13:21   #2
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 074
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Особенности реализации Modbus TCP

Цитата:
Сообщение от Gel Посмотреть сообщение
При тестировании реализации Modbus TCP в SMH4 выявлена следующая "особенность":
Да, я знаю об этой особенности нашего драйвера, но представленная вами картина носит достаточно искусственный характер.

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

Мы сознательно пошли на упрощение, разрабатывая модуль Ethernet на Пиксель. На более поздние контроллеры, похоже, это переехало по наследству.

Но, повторю, показанная вами ситуация искусственна, её нужно провоцировать специально написанным для этого софтом.


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

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 31.08.2018, 13:35   #3
masterzx
Member
 
Регистрация: Aug 2016
Сообщения: 32
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Особенности реализации Modbus TCP

Цитата:
Сообщение от Gel Посмотреть сообщение
При тестировании реализации Modbus TCP в SMH4 выявлена следующая "особенность":
Это не баг у них, а фича Таких фич у них вагон и тележка.
masterzx вне форума   Ответить с цитированием
Старый 31.08.2018, 13:50   #4
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 074
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Особенности реализации Modbus TCP

Цитата:
Сообщение от masterzx Посмотреть сообщение
Это не баг у них, а фича Таких фич у них вагон и тележка.
Но, повторю, показанная вами ситуация искусственна, её нужно провоцировать специально написанным для этого софтом.



Другими словами, я, как инженер, вижу баг. Но, как тот же инженер, вижу ничтожность этого бага. Следовательно нет необходимости немедленно на это как-то реагировать.

В автомобилях нет парашютов, но они падают, если разогнаться на трамплине. Если кто-то разогнался и упал это не означает, что нужно резко бежать и всюду совать по парашюту. Ситуация имеет место быть в реальной жизни? Имеет. Можно ли попасть в нее при обычном использовании автомобиля? Нельзя.


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

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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 01:53.


Версия vBulletin: 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2024