Нужно ваше уточнение по библиотеке SimpleModbusMaster

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Пишу тут так как темы где это обсуждалось молчат=((( все там вымерли. 

Существует много библиотек но самые обычно обсуждаемые это библиотека ModbusRTU и SimpleModbusMaster(SimpleModbusSlave). Вот я пошел по второму варианту. Все отлично работает разобрался но есть одно но я так и не понял только один момент! Все везде говорили про какое то ограничение в 29 регистров на arduino. И я не понял про что речь то в общем? Про то что на кристале AVR нельзя уместить более 29 регистров для хранения данных? или это то количество которое Кристал может запросить у слейва за раз? чет не могу понять. У меня проект на кристале atmega2560 там памяти 256кб куча крч. И чет не верится что там всего 29 регистров можно хранить=) Кто работал с данной библиотекой можете пояснить точнее данный вопрос? заранее спасибо.

Вот библиотеки сами 

SimpleModbusSlave - https://yadi.sk/d/5UfYQfDK3YBqcd

SimpleModbusMaster - https://yadi.sk/d/xstG1HPY3YBqcg

nik182
Offline
Зарегистрирован: 04.05.2015

А что обсуждать? Открываем h файл и читаем  : 

The Arduino serial ring buffer is 128 bytes or 64 registers.
   Most of the time you will connect the arduino to a master via serial
   using a MAX485 or similar.
 
   In a function 3 request the master will attempt to read from your
   slave and since 5 bytes is already used for ID, FUNCTION, NO OF BYTES
   and two BYTES CRC the master can only request 122 bytes or 61 registers.
 
   In a function 16 request the master will attempt to write to your 
   slave and since a 9 bytes is already used for ID, FUNCTION, ADDRESS, 
   NO OF REGISTERS, NO OF BYTES and two BYTES CRC the master can only write
   118 bytes or 59 registers.
 
   Using the FTDI USB to Serial converter the maximum bytes you can send is limited 
   to its internal buffer which is 60 bytes or 30 unsigned int registers. 

Ограничение не библиотеки а среды ардуино - 30 регистров.

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Т.е. речь все таки про обмен между мастером и слейвами так? Т.е. в сут ьв том как я понял что нельзя за раз принять больше 29 регистра от слейва например так как буфер не позволяет так? или речь про локальное хранилище? 

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Просто у меня то max485 подклчюен на прямую к меге2560 ко второму аппаратному сериалу. И ег окак я понимаю буффер ограничен. Но буффер то используется не для хранения а для обмена так? Те.е. речь все же тут идет про обмен по линии 485? Т.е. про то количество регистров которое я могу запрашивать в один момент или я не так перевел и понял? Поясните глупому=)

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Крч если еще проще сказать то у меня есть 10 устроиств на модбас.

Семь устроиств - 2 регистра итого 14 регистров

Восьмое устроиство - 12 регистров

Девятое устроиство - 7 регистров

Десятое устроиство - 5 регистров

 

Т.е. общее число регистров с данными которое мне нужно получать это 36 реигстров мой мастер должен считаывать  в каждом пакете свое устроиство. Т.е. за раз самый большой запрос будет принимать 12 регистров самый маленкьий будет читать 2а регистра. пакетов будет 10 как и устроиств. Будет ли работать или нет? На данный момент работает три устроиства нормально и три пакета на них. Но общее число щас 24 регистра общее количество. Вопрос встал потому, что пока я не изготовил еще 7мь устроиств и не знаю есть ли смысл делать их. А то может я сделаю а работаьь не будет. Извините за вынос мозга=)

sadman41
Offline
Зарегистрирован: 19.10.2016

Вроде как тут по-человечески описано, что ограничение на пакет. Вы же собираетесь из буфера вычитать все преред тем, как следующий запрос делать? К тому же 60 байт  (30регистров) - это, как следует из последнего абзаца, ограничение накладываемое FTDI чипом, если обмен идет через него.

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Понятно. спасибо за то что пояснили.