| Форум РадиоКот 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, разобрался как она работает, связался с микроконтроллером 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/ |
|


