Segnetics

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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.08.2018, 12:16   #1
Gel
Senior Member
 
Регистрация: Nov 2017
Сообщения: 563
Благодарил(а): 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 из спецификации:

Миниатюры
Нажмите на картинку для увеличения

Название:  tcpmodbus-test.png
Просмотров: 807
Размер:  5.2 Кбайт   Нажмите на картинку для увеличения

Название:  badmodbus.png
Просмотров: 795
Размер:  12.9 Кбайт   Нажмите на картинку для увеличения

Название:  spec-0x10.png
Просмотров: 817
Размер:  74.8 Кбайт  
Вложения
Тип файла: 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 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Особенности реализации 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 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Особенности реализации Modbus TCP

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



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

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


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

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

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Опрос из 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


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


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