Показать сообщение отдельно
Старый 29.04.2021, 13:06   #6
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 784
Благодарил(а): 12 раз(а)
Поблагодарили: 194 раз(а) в 190 сообщениях
По умолчанию Ответ: Замедление при работе с неправильным 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 вне форума   Ответить с цитированием