Например TDA7294

Форум РадиоКот • Просмотр темы - FreeModbus + AVR
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт янв 02, 2026 18:02:48

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 25 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: FreeModbus + AVR
СообщениеДобавлено: Пн июл 02, 2012 18:24:10 
Родился

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


Вернуться наверх
 
 Заголовок сообщения: Re: FreeModbus + AVR
СообщениеДобавлено: Пн июл 02, 2012 18:40:04 
А может всё же начать с изучения спецификации на протокол ModBus? В инете есть на русском языке.
1. В каком режиме предполагается работать устройству - RTU или ASCII ?
2. У пакета не видно контрольной суммы.
Учите документацию. А зачем вам понадобилось именно modbus? Для "домашних" применений он избыточный. Можно всё упростить, но подозреваю, что вы весьма начинающий, и не сможете этого сделать.


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: FreeModbus + AVR
СообщениеДобавлено: Вт июл 03, 2012 23:06:36 
Родился

Зарегистрирован: Пн июл 02, 2012 18:05:02
Сообщений: 10
Рейтинг сообщения: 0
Спасибо!
1. ASCII.
2. Да, разобрался, вызывал голую функцию отправки, что делать нельзя.

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


Вернуться наверх
 
 Заголовок сообщения: Re: FreeModbus + AVR
СообщениеДобавлено: Ср июл 04, 2012 08:44:54 
http://www.zaovip.ru/file/file/PO_Modbus.exe
Не хотели искать. Я нашёл за 3 минуты.
А для себя я как то сделал универсальный терминал для отладки устройств на 232/485. Но там у меня только режим RTU.
А вот вам вдогонку описание протокола http://www.servotechnica.spb.ru/library ... us_Rus.Doc


Вернуться наверх
   
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: FreeModbus + AVR
СообщениеДобавлено: Ср июл 04, 2012 15:29:03 
Родился

Зарегистрирован: Пн июл 02, 2012 18:05:02
Сообщений: 10
Рейтинг сообщения: 0
Я качал эту программу по этой ссылке, похоже, файл битый((


Вернуться наверх
 
 Заголовок сообщения: Re: FreeModbus + AVR
СообщениеДобавлено: Ср июл 04, 2012 17:57:22 
Специально проверил - скачал, установил и запустил.


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: FreeModbus + AVR
СообщениеДобавлено: Ср июл 04, 2012 18:02:50 
Держит паяльник хвостом
Аватар пользователя

Карма: 15
Рейтинг сообщений: 70
Зарегистрирован: Ср мар 28, 2012 21:45:24
Сообщений: 906
Откуда: ВО
Рейтинг сообщения: 0
Цитата:
скачал, установил и запустил.

+1


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FreeModbus + AVR
СообщениеДобавлено: Ср июл 04, 2012 18:42:27 
Родился

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


Вернуться наверх
 
 Заголовок сообщения: Re: FreeModbus + AVR
СообщениеДобавлено: Ср июл 04, 2012 19:03:26 
всё же меня мучает вопрос - зачем вам использовать для дома этот протокол. Для промышленных контроллеров - да, удобно, так как унификация при работе с разновсякими контроллерами
Цитата:
А как их забрать из регистра в микроконтроллере?

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


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: FreeModbus + AVR
СообщениеДобавлено: Чт июл 05, 2012 13:36:30 
Родился

Зарегистрирован: Пн июл 02, 2012 18:05:02
Сообщений: 10
Рейтинг сообщения: 0
orinoko писал(а):
всё же меня мучает вопрос - зачем вам использовать для дома этот протокол. Для промышленных контроллеров - да, удобно, так как унификация при работе с разновсякими контроллерами

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

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

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


Вернуться наверх
 
 Заголовок сообщения: Re: FreeModbus + AVR
СообщениеДобавлено: Чт июл 05, 2012 14:16:16 
А это уже ручками думать надо и подключать библиотеку "brain.dll". Снимать показания с датчика в соответствии с его спецификацией, и заносить данные в нужную ячейку памяти в необходимом формате.


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: FreeModbus + AVR
СообщениеДобавлено: Чт июл 05, 2012 15:15:54 
Родился

Зарегистрирован: Пн июл 02, 2012 18:05:02
Сообщений: 10
Рейтинг сообщения: 0
Мне не понятно, где именно хранятся эти Holding регистры в самом МК.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FreeModbus + AVR
СообщениеДобавлено: Чт июл 05, 2012 15:22:14 
Прорезались зубы
Аватар пользователя

Карма: 6
Рейтинг сообщений: 41
Зарегистрирован: Чт янв 13, 2011 18:54:29
Сообщений: 246
Откуда: Минск
Рейтинг сообщения: 0
Timo писал(а):
Мне не понятно, где именно хранятся эти Holding регистры в самом МК.

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

_________________
Учиться, учиться, ...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FreeModbus + AVR
СообщениеДобавлено: Чт июл 05, 2012 15:34:50 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 238
Зарегистрирован: Пт янв 29, 2010 10:27:40
Сообщений: 3868
Откуда: Москва
Рейтинг сообщения: 0
В памяти они находятся, где же еще... Вся память AVR (да и не только) делится на регистры R0-R31, регистры I/O и ОЗУ. По идее если адрес регистра 0x00-0x1F, это регистры R0-R31, если 0x20-0x5F - I/O, остальное - ОЗУ. Хотя программно можно наверняка переназначить адреса как угодно, и запретить доступ к каким-либо из них на этапе приема команды в любом протоколе.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FreeModbus + AVR
СообщениеДобавлено: Чт июл 05, 2012 16:04:25 
Друг Кота
Аватар пользователя

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

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


Вернуться наверх
 
 Заголовок сообщения: Re: FreeModbus + AVR
СообщениеДобавлено: Чт июл 05, 2012 18:09:52 
Timo писал(а):
Мне не понятно, где именно хранятся эти Holding регистры в самом МК.

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


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: FreeModbus + AVR
СообщениеДобавлено: Чт июл 05, 2012 19:18:23 
Родился

Зарегистрирован: Пн июл 02, 2012 18:05:02
Сообщений: 10
Рейтинг сообщения: 0
orinoko писал(а):
Timo писал(а):
Мне не понятно, где именно хранятся эти Holding регистры в самом МК.

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

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


Вернуться наверх
 
 Заголовок сообщения: Re: FreeModbus + AVR
СообщениеДобавлено: Чт июл 05, 2012 19:45:21 
Freemodbus скорее всего - это библиотека, которая огранизует только транспорт для данного протокола. А всю реализацию уже должен описывать сам программист. Осознайте это для себя. Пришедший пакет вы должны сами обрабатывать и формировать ответ, а также взамодействовать с периферией МК - кнопочки, лампочки и т.д.


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: FreeModbus + AVR
СообщениеДобавлено: Чт июл 05, 2012 19:55:51 
Родился

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: FreeModbus + AVR
СообщениеДобавлено: Чт июл 05, 2012 20:34:14 
Родился

Зарегистрирован: Пн июл 02, 2012 18:05:02
Сообщений: 10
Рейтинг сообщения: 0
Но эта бибилиотека должна ведь иметь элементы взаимодействия стека модбаса со всеми осталными функциями, записанными в МК?

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


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y