termsl (termsl) wrote,
termsl
termsl

MODBUS TCP Master - чтогдекогда?

Умные есть или все админы домена?
Задачка на знатока, который сталкивался, мучаюсь с реализацией на Arduino MODBUS TCP Master.
По Slave есть вполне рабочие реализации, если в исходники не смотреть ))), а Master- хрен, либо об этом не знает гугол.

Документация по MODBUS скромная и в основе освещает RS-232/485 реализацию, про TCP один абзац. Используя эту скромную информацию и перехваченный протокол обмена между двумя софтинами, одна из которых мастер, другая - слейв.
Запрос уходит, даже WireShark распознает его как MODBUS, а ответ изумляет- приходит два значения регистров, и все, при запросе любого количества регистров в ответе приходит только два.
Запрос практически аналогичен, тому, который идет из тестовой программы, а ответ- не понятный.

Набросал картинку своего представления запроса от мастера к слейву, может ошибка где?
UP: Пока писал код, появилась идея, где ошибка, и нашел- она была в переменной цикла, копипастил и не заметил, как в цикле, выводящем принятые данные, стояла переменная отвечающая за длину  исходного массива ))))

Зато сделал себе мануал по модбасу, может кому и пригодится.




Вот обмен:

Try to connect
Connected. Elapsed time(ms) = 1
Transaction: 140
Content is:[0:8C:0:0:0:6:1:3:30:0:0:8:]
Reply length: 25
Reply is:[0:8C:0:0:0:13:1:3:10:52:8:7D:0:7D:0:9:C4:B:B8:B:B8:B:B8:B:B8:]
              0:8C:0:0:0:13:1:3: - реплай, содержащий номер запроса и параметры запроса
                                        10  - длинна данных
                                            52:8 - первый WORD
и так далее..

Прямые протоколы рулят, запрос- ответ по модбасу - 1-3 мс, по http - 500-2000 мс, делайте выводы)))
      

Tags: modbus tcp master
Subscribe
Buy for 50 tokens
Buy promo for minimal price.
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 3 comments