Например TDA7294

Форум РадиоКот :: Просмотр темы - FreeModbus + AVR
Форум РадиоКот
https://radiokot.ru/forum/

FreeModbus + AVR
https://radiokot.ru/forum/viewtopic.php?f=57&t=75091
Страница 1 из 2

Автор:  Timo [ Пн июл 02, 2012 18:24:10 ]
Заголовок сообщения:  FreeModbus + AVR

Здравствуйте! Появилась необходимость создать Slave устройство AVR с протоколом Modbus.
Исходники модуля с сайта http://freemodbus.berlios.de/. Создал проект в AVR Studio 4.18, скомпилировал. Создал проект в протеусе.
Понимаю, что нужно посылать в МК команду, по которой выдается результат. ТОлько как это грамотно сделать, используя функции Freemodbus? Есть функция eMBASCIISend( UCHAR ucSlaveAddress, const UCHAR * pucFrame, USHORT usLength ). С помощью нее пробовал кидать элементы массива на выход. Терминал в Proteus пишет что-то типа :03F304. Понимаю, что надо сделать по-другому.
Вопрос - в какой поседовательности какие функии вызывать и что им передавать?

Автор:  orinoko [ Пн июл 02, 2012 18:40:04 ]
Заголовок сообщения:  Re: FreeModbus + AVR

А может всё же начать с изучения спецификации на протокол ModBus? В инете есть на русском языке.
1. В каком режиме предполагается работать устройству - RTU или ASCII ?
2. У пакета не видно контрольной суммы.
Учите документацию. А зачем вам понадобилось именно modbus? Для "домашних" применений он избыточный. Можно всё упростить, но подозреваю, что вы весьма начинающий, и не сможете этого сделать.

Автор:  Timo [ Вт июл 03, 2012 23:06:36 ]
Заголовок сообщения:  Re: FreeModbus + AVR

Спасибо!
1. ASCII.
2. Да, разобрался, вызывал голую функцию отправки, что делать нельзя.

Сейчас ищу программу Mastera для ноута, чтоб всё проверить. Порекомендовали terring modbus tools, но нигде не могу найти рабочий вариант.. Ни у кого нет? Очень буду благодарен.

Автор:  orinoko [ Ср июл 04, 2012 08:44:54 ]
Заголовок сообщения:  Re: FreeModbus + AVR

http://www.zaovip.ru/file/file/PO_Modbus.exe
Не хотели искать. Я нашёл за 3 минуты.
А для себя я как то сделал универсальный терминал для отладки устройств на 232/485. Но там у меня только режим RTU.
А вот вам вдогонку описание протокола http://www.servotechnica.spb.ru/library ... us_Rus.Doc

Автор:  Timo [ Ср июл 04, 2012 15:29:03 ]
Заголовок сообщения:  Re: FreeModbus + AVR

Я качал эту программу по этой ссылке, похоже, файл битый((

Автор:  orinoko [ Ср июл 04, 2012 17:57:22 ]
Заголовок сообщения:  Re: FreeModbus + AVR

Специально проверил - скачал, установил и запустил.

Автор:  ILYAUL [ Ср июл 04, 2012 18:02:50 ]
Заголовок сообщения:  Re: FreeModbus + AVR

Цитата:
скачал, установил и запустил.

+1

Автор:  Timo [ Ср июл 04, 2012 18:42:27 ]
Заголовок сообщения:  Re: FreeModbus + AVR

Похоже, несовместимость.
Ну ладно. Нашел Modbus Poll, разобрался как она работает, связался с микроконтроллером :). Косяк в том, что я не понимаю пока что как работать с регистрами модбаса на самом микроконтроллере. Например, использую функцию 06 - Write Single Register. Пишу, к примеру, в 1200 регистр с помощью Modbus Poll, приходит ответ что данные записались. А как их забрать из регистра в микроконтроллере? Я так понял, надо использовать eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs,
eMBRegisterMode eMode ) ? Можете пояснить? Спасибо

Автор:  orinoko [ Ср июл 04, 2012 19:03:26 ]
Заголовок сообщения:  Re: FreeModbus + AVR

всё же меня мучает вопрос - зачем вам использовать для дома этот протокол. Для промышленных контроллеров - да, удобно, так как унификация при работе с разновсякими контроллерами
Цитата:
А как их забрать из регистра в микроконтроллере?

для этого есть команда 03 Read Holding Registers

Автор:  Timo [ Чт июл 05, 2012 13:36:30 ]
Заголовок сообщения:  Re: FreeModbus + AVR

orinoko писал(а):
всё же меня мучает вопрос - зачем вам использовать для дома этот протокол. Для промышленных контроллеров - да, удобно, так как унификация при работе с разновсякими контроллерами

Это не домашнее решение.
orinoko писал(а):
Цитата:
А как их забрать из регистра в микроконтроллере?

для этого есть команда 03 Read Holding Registers

Это понятно ) Но как закинуть в такой регистр данные, например,с датчика, подключенного к ножке МК?

Автор:  orinoko [ Чт июл 05, 2012 14:16:16 ]
Заголовок сообщения:  Re: FreeModbus + AVR

А это уже ручками думать надо и подключать библиотеку "brain.dll". Снимать показания с датчика в соответствии с его спецификацией, и заносить данные в нужную ячейку памяти в необходимом формате.

Автор:  Timo [ Чт июл 05, 2012 15:15:54 ]
Заголовок сообщения:  Re: FreeModbus + AVR

Мне не понятно, где именно хранятся эти Holding регистры в самом МК.

Автор:  ds1307 [ Чт июл 05, 2012 15:22:14 ]
Заголовок сообщения:  Re: FreeModbus + AVR

Timo писал(а):
Мне не понятно, где именно хранятся эти Holding регистры в самом МК.

Работал с сенсорными панелями оператора ОВЕН. В описании на панель даны адреса памяти и описано какой тип памяти (ОЗУ или EEPROM). С МК не работал.

Автор:  Engineer_Keen [ Чт июл 05, 2012 15:34:50 ]
Заголовок сообщения:  Re: FreeModbus + AVR

В памяти они находятся, где же еще... Вся память AVR (да и не только) делится на регистры R0-R31, регистры I/O и ОЗУ. По идее если адрес регистра 0x00-0x1F, это регистры R0-R31, если 0x20-0x5F - I/O, остальное - ОЗУ. Хотя программно можно наверняка переназначить адреса как угодно, и запретить доступ к каким-либо из них на этапе приема команды в любом протоколе.

Автор:  Jack_A [ Чт июл 05, 2012 16:04:25 ]
Заголовок сообщения:  Re: FreeModbus + AVR

Правильно люди советуют : если связываться с уже готовыми устройствами, то все их "регистры" описаны в мануалке на устройство. А если дивайс на МК собственного производства, и программа на РС к нему тоже собственная , то можно взять только оболочку, каркас от Модбаса и наполнить его такими командами и в таких форматах, как самому удобно. Пересылать, например, не один какой-то "регистр", а целый блок параметров.
У меня была в практике необходимость выполнить быстрый, но устойчивый обмен. Как бы сделал по "букварю" ? Запрос - ответ - подсчет CRC - фиксируется ошибка - перезапрос. А время т`икает . Сделал в пакете тройное дублирование инфы с внутренней КС. Если CRC битая, не заморачиваем себе бошку перезапросом, а смотрим, есть ли в принятой тройке совпадающая пара, да еще с правильной КС. Есть - значит приняли и исправили ошибку. Чуть более сложная обработка позволяла исправить и двойную ошибку.
Работало без вопросов.

Но если ожидаете инспекцию со Schneider-electric на предмет соответствия вашего протокола букварю - тогда я пас и ничего не советовал. :)

Автор:  orinoko [ Чт июл 05, 2012 18:09:52 ]
Заголовок сообщения:  Re: FreeModbus + AVR

Timo писал(а):
Мне не понятно, где именно хранятся эти Holding регистры в самом МК.

В МК есть просто ОЗУ. Некоторый объём. Как вы эти ячейки назовёте при разработке программы, такими они и будут. Все эти Holding Registers - это некий уровень абстракции, и к конкретному МК не имеет отношения. Выделяется некая область памяти и отмечам - это регистры. И занимаемся обработкой сами программно.
Судя по всему, вы очень далеки от понимания сути. Это вам не дельфи, где программу можно написать одной мышкой. Как я уже говорил, без brain.dll вы не решите задачу. Ищите специалиста.

Автор:  Timo [ Чт июл 05, 2012 19:18:23 ]
Заголовок сообщения:  Re: FreeModbus + AVR

orinoko писал(а):
Timo писал(а):
Мне не понятно, где именно хранятся эти Holding регистры в самом МК.

В МК есть просто ОЗУ. Некоторый объём. Как вы эти ячейки назовёте при разработке программы, такими они и будут. Все эти Holding Registers - это некий уровень абстракции, и к конкретному МК не имеет отношения. Выделяется некая область памяти и отмечам - это регистры. И занимаемся обработкой сами программно.
Судя по всему, вы очень далеки от понимания сути. Это вам не дельфи, где программу можно написать одной мышкой. Как я уже говорил, без brain.dll вы не решите задачу. Ищите специалиста.

Я понимаю смысл ОЗУ, Holding Registers и т.п. Я не понимаю некоторых деталей, но я только учусь.
Я обращаюсь к тем,кто пользовалмя freemodbus.. Мне нужно как-то вытащить данные из холдинг регистра, и грубо говоря, к примеру, выдать их на порт микроконтроллера. Я понимаю, что те же самые холдинги висят где-то в ОЗУ, я с компьютера связываюсь с МК, кидаю в них данные, забираю. Но мне хочется для начала, к примеру, отправить в 1201 холдинг регистр и зажечь светодиод на выходе. Если бы мне предоставили пример такого взаимодействия, я бы разобрался и решил бы любую задачу :)

Автор:  orinoko [ Чт июл 05, 2012 19:45:21 ]
Заголовок сообщения:  Re: FreeModbus + AVR

Freemodbus скорее всего - это библиотека, которая огранизует только транспорт для данного протокола. А всю реализацию уже должен описывать сам программист. Осознайте это для себя. Пришедший пакет вы должны сами обрабатывать и формировать ответ, а также взамодействовать с периферией МК - кнопочки, лампочки и т.д.

Автор:  Timo [ Чт июл 05, 2012 19:55:51 ]
Заголовок сообщения:  Re: FreeModbus + AVR

Чуть прояснилась ситуация. Спасибо.
Осталось найти места, где хранятся модбасовские регистры, остальное я реализую :).
Попробую разобраться еще раз со всем, но если кто пользовался freemodbus и знает ответ - буду благодарен получить информацию :)

Автор:  Timo [ Чт июл 05, 2012 20:34:14 ]
Заголовок сообщения:  Re: FreeModbus + AVR

Но эта бибилиотека должна ведь иметь элементы взаимодействия стека модбаса со всеми осталными функциями, записанными в МК?

По freemodbus есть справка, правда я не могу в ней разобраться

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/