Segnetics

Вернуться   Segnetics > Форум Segnetics > Вопросы о SMH4

Вопросы о SMH4 Работа и применение контроллеров с сенсорной панелью SMH4.

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.04.2021, 06:22   #1
romanetz
Новичок
 
Регистрация: Sep 2020
Сообщения: 18
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Замедление при работе с неправильным modbus tcp slave (решено)

При распределении переменных mbtcp slave по запросам SMLogix назначил в один запрос на запись (код функции 0x16) 124 переменных за раз. libmodbus с такой постановкой вопроса не согласен, ссылаясь на спецификацию протокола - там 123. На запрос записи 124 регистров тестовый сервер из состава libmodus пишет в лог ошибку и разрывает tcp соединение. Соответственно, эта процедура повторяется очень часто, что вызывает загрузку ПЛК процессом mbs до 65% и торможение визуализации.
Пока вылечил увеличением максимального количества регистров в пакете при записи до 125 и modbus_max_adu_length
выдержка из modbus.h в libmodbus
/* Modbus_Application_Protocol_V1_1b.pdf (chapter 6 section 3 page 15)
* Quantity of Registers to read (2 bytes): 1 to 125 (0x7D)
* (chapter 6 section 12 page 31)
* Quantity of Registers to write (2 bytes) 1 to 123 (0x7B)
* (chapter 6 section 17 page 38)
* Quantity of Registers to write in R/W registers (2 bytes) 1 to 121 (0x79)
*/
romanetz вне форума   Ответить с цитированием
Старый 28.04.2021, 10:43   #2
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Замедление при работе с неправильным modbus tcp slave

Цитата
Сообщение от romanetz Посмотреть сообщение
При распределении переменных mbtcp slave по запросам SMLogix назначил в один запрос на запись (код функции 0x16) 124 переменных за раз./
Можно один вопрос? Ради чего копья ломаете, если можно отправить два запроса по 62 регистра? В TCP это "почти мгновенно".

Также я рекомендую заглянуть в указанные в скобочках чаптеры и ознакомиться с происхождением ограничения на длину пакета.


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

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 28.04.2021, 10:47   #3
младшой
Senior Member
 
Регистрация: May 2010
Адрес: Москва
Сообщения: 857
Благодарил(а): 4 раз(а)
Поблагодарили: 85 раз(а) в 66 сообщениях
По умолчанию Ответ: Замедление при работе с неправильным modbus tcp slave

В документации на контроллеры есть сведения об этих ограничениях?
младшой вне форума   Ответить с цитированием
Старый 29.04.2021, 06:48   #4
romanetz
Новичок
 
Регистрация: Sep 2020
Сообщения: 18
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Ответ: Замедление при работе с неправильным modbus tcp slave

Цитата:
Сообщение от Arsie Посмотреть сообщение
Можно один вопрос? Ради чего копья ломаете, если можно отправить два запроса по 62 регистра? В TCP это "почти мгновенно".
Также я рекомендую заглянуть в указанные в скобочках чаптеры и ознакомиться с происхождением ограничения на длину пакета.
Просто чтобы показать другим пользователям возможность проявления проблемы: SMlogix может автоматически распределять некорректно. И необходимость, в таком случае, корректирования карты запросов вручную.
romanetz вне форума   Ответить с цитированием
Старый 29.04.2021, 10:29   #5
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Замедление при работе с неправильным modbus tcp slave

Цитата
Сообщение от младшой Посмотреть сообщение
В документации на контроллеры есть сведения об этих ограничениях?
Все ограничения пакетов унаследованы от даташитов на протокол modbus. Мы работаем по старому, в котором макс размер PDU для TCP равен 260 байтов.


Добавлено через 50 секунд


Цитата
Сообщение от romanetz Посмотреть сообщение
Просто чтобы показать другим пользователям возможность проявления проблемы: SMlogix может автоматически распределять некорректно. И необходимость, в таком случае, корректирования карты запросов вручную.
Ага, увидел неувиденное - сам лоджик сделал большой пакет. Подрежем, т.к. не принципиально. В аппендиксе b3 действительно указано 123 регистра. Причина ограничения непонятна, т.к. все служебные поля позволяют до 128. Возможно это ограничение конкретно для модиконовских контроллеров, типа чтобы буфер не превышал 256 байтов, а не был предельным по протоколу. В аппендиксах много подобных приколюх, которые разработчиками воспринимаются слишком буквально.


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

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 29.04.2021 в 11:10
Arsie сейчас на форуме   Ответить с цитированием
Старый 29.04.2021, 13:06   #6
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 740
Благодарил(а): 12 раз(а)
Поблагодарили: 192 раз(а) в 188 сообщениях
По умолчанию Ответ: Замедление при работе с неправильным modbus tcp slave

Цитата:
Сообщение от Arsie Посмотреть сообщение
Мы работаем по старому, в котором макс размер PDU для TCP равен 260 байтов.
260 это размер ADU для TCP. PDU по стандарту 253

RS232 / RS485 ADU = 253 bytes + Server address (1 byte) + CRC (2 bytes) = 256bytes.
TCP MODBUS ADU = 253 bytes + MBAP (7 bytes) = 260 bytes.


Цитата Ага, увидел неувиденное - сам лоджик сделал большой пакет. Подрежем, т.к. не принципиально. В аппендиксе b3 действительно указано 123 регистра. Причина ограничения непонятна, т.к. все служебные поля позволяют до 128.
Подрезать надо.

А причина тут просто в арифметике
Код:
16 (0x10) Write Multiple registers

Function code 1 Byte 0x10 
Starting Address 2 Bytes  0x0000 to 0xFFFF 
Quantity of Registers 2 Bytes 0x0001 to 0x007B 
Byte Count 1 Byte 2 x N* 
Registers Value N* x 2 Bytes value
Под Registers Value остается 253-6=247 байт и 124 регистра никак не воткнуть.
ATS вне форума   Ответить с цитированием
Ответ

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

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SMH4 проблема с опросом SMH2G по Modbus TCP (решено) Max2114 Вопросы о SMH4 26 20.05.2023 14:59
Зависает опрос slave modbus tcp младшой Связь с внешним миром 25 11.03.2021 12:10
TRIM Modbus Slave на две сети (решено) Jury.K Связь с внешним миром 15 27.03.2019 01:06
Honeywell MVC80-DH10M LordN Связь с внешним миром 30 28.11.2016 14:21


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


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