Модераторы: PILOT, ManiaK, Mazzi

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прибор, RS-485, Modbus-ASCII, Сделать чтоб работало :) 
:(
    Опции темы
Cergiy
Дата 15.4.2008, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 15.4.2008

Репутация: нет
Всего: нет



Приветствую всех!
Из названия темы понятно что имеется: прибор, интерфейс RS-485, протокол Modbus-ASCII. Нужно например записать данные в регистр. (на самом деле много чего нужно)
Но видите ли, я туповат и не догоняю. Допустим пользователь вводит число которое нужно записать (допустим это число будет 100). Я сначала должен в своей программе сформировать строчку в шестнадцатеричной системе 3A010601730064—0D0A, где 3A – начало посылки, 01 – сетевой адрес устройства, 0173 – нужный мне регистр, 0064(100d) - записываемые данные, потом должна быть контрольная сумма из 2-х символов(xxxx) о которой я спрошу отдельно, как ее рассчитать и потом два символа конца посылки 0D и 0A (если я правильно понимаю это не 3338d, а именно 13d10d, записанные вместе). И вот, эту строчку мне надо переслать через COM-порт по RS-485, если я все правильно понимаю. И я не догоняю как это сделать. То есть как мне послать эту строчку так, чтобы прибор правильно ее обработал, ну что вот сначала пришел символ(3А) начала посылки, потом пошло «тело», а потом и 2 символа означающие конец посылки. Заранее благодарю за помощь!
Я весь во внимании smile
(я правда не знал в каком разделе лучше это спросить)

Это сообщение отредактировал(а) Cergiy - 15.4.2008, 11:35
PM MAIL   Вверх
xvr
Дата 15.4.2008, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Знатная каша  smile 
Код

FILE* f=fopen("COM1","wb");
fprintf(f,":0106%04X%04X0000\r\n",0x173,100);

PM MAIL   Вверх
Cergiy
Дата 15.4.2008, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 15.4.2008

Репутация: нет
Всего: нет



Ой, я так и думал, что написал как попало, но уж как-то лучше не получилось.
Вот за код благодарю, но вот как бы етот код представить на делфи? 
ИТ некоторые моменты не понятны - я с С никогда не работал. ну :0106 все понятно, а вот что дальше началось?
К тому же, раз у меня этот 485 то нужно то включить RTS, потом время подождать и отключить RTS, да?!

Кстате, может вы подскажите что непонятно, я по-понятнее объясню, ну чтобы и другие поняли. )
PM MAIL   Вверх
xvr
Дата 15.4.2008, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(Cergiy @ 15.4.2008,  18:47)
Ой, я так и думал, что написал как попало, но уж как-то лучше не получилось.
Вот за код благодарю, но вот как бы етот код представить на делфи? 

Почти также - там тоже есть форматная печать, подробностей не знаю - с Делбфи не работал
Цитата

ИТ некоторые моменты не понятны - я с С никогда не работал. ну :0106 все понятно, а вот что дальше началось?
Дальше спецификаторы формата: %04X - вывести параметр (0x173) в шестнадцатеричном виде большими буквами, использовать ровно 4 цифры, то же самое еще раз (но для следующего параметра - 100), затем вывести 4 нуля (место для CRC)
Цитата

К тому же, раз у меня этот 485 то нужно то включить RTS, потом время подождать и отключить RTS, да?!
У PC нет RS485, есть только RS232, т.е. 485 делается через переходник, так что за подробностями что и куда включать надо обращаться к описанию этого переходника.

PM MAIL   Вверх
Cergiy
Дата 15.4.2008, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 15.4.2008

Репутация: нет
Всего: нет



Благодарю!
Хорошо, я попробую написать то что вы предложили на делфи. Там же ведь чтоб работать с ком портами пришлось искать компоненты (некогда самому писать), а там все своеобразно реализовано...
Ну да ладно, если у кого есть еще какие идеи слушаю внимательно. smile
PM MAIL   Вверх
Felan
Дата 16.4.2008, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 2.8.2007
Где: Самара

Репутация: нет
Всего: 7



Цитата(xvr @  15.4.2008,  21:08 Найти цитируемый пост)
У PC нет RS485, есть только RS232, т.е. 485 делается через переходник, так что за подробностями что и куда включать надо обращаться к описанию этого переходника.

+1

Переходники тоже разные бывают. Бывают умные, которые сами переключают RTS, а бывают, которые возвращают эхо, а ты сам уже, после прочтения эха, должен переключить RTS.
Я когда-то работал с модбасом, но мы использовали бинарный протокол. И, если честно, то я считаю текстовые протоколы для работы с жезом извращением в высшей степени.
Выставлять фиксированное время для установки/сброса RTS крайне не рекомендую. Даже если это и запустится, нет никаких гарантий что это будет работать через пять минут на другой машине. Следовательно, возможно, будет очень много проблем потенциально неотлавливаемых, кроме как осциллографом.

Вот класс для работы с ком-портом, котрый я когда писал, как раз для того, что бы работать модбасом.

Реализация самого протокола есть, но тебе она без надобности, у тебя ASCII у нас был бинарный.
По поводу контрольной суммы, не знаю, что ты имеешь ввиду под LRC, но у нас была CRC, и считалась она как CRC16. В приложении класс, которым считал я.
 

Присоединённый файл ( Кол-во скачиваний: 129 )
Присоединённый файл  iaCRC16Table.pas 4,58 Kb


--------------------
// Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного.
PM MAIL WWW ICQ   Вверх
Felan
Дата 16.4.2008, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 2.8.2007
Где: Самара

Репутация: нет
Всего: 7



Кстати, если у тебя переходник с Эхом, то вот класс для отправки сообщений, который использует указанный выше класс для работы с портом.

Присоединённый файл ( Кол-во скачиваний: 87 )
Присоединённый файл  iaRS232_RS485.PAS 2,62 Kb


--------------------
// Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного.
PM MAIL WWW ICQ   Вверх
xvr
Дата 16.4.2008, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(Felan @ 16.4.2008,  07:43)
Я когда-то работал с модбасом, но мы использовали бинарный протокол. И, если честно, то я считаю текстовые протоколы для работы с жезом извращением в высшей степени.

У Modbus-RTU очень жесткие времянки, на Windows бес плясок с бубном выдержать практически невозможно, так что ASCII его разновидности тоже имеют право на жизнь  smile Еще один плюс текстовых протоколов то, что к железке можно подключиться терминалом и пощупать ее работоспособность без специальных программ (особенно когда есть сомнения в работоспособности таких программ   smile )
Но в общем и целом бинарные протоколы для работы с железом выглядят предпочтительней.

PM MAIL   Вверх
Cergiy
Дата 16.4.2008, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 15.4.2008

Репутация: нет
Всего: нет



Люди smile
Вот я прикрепляю файл который мне выслал производитель. Полюбуйтесь.

"Не виноватая я".

Добавлено @ 08:15
Но тогда я что-то не могу понять что мне делать с РС-485?!  У нас вообще виртуальный COM порт потому как подключение через USB, "переходник" АС4 фирмы "Овен". 

Добавлено @ 08:18
Да и еще, есть рабочая прога от производителя которая свободно распространяется. Просто она не реализует некоторые моменты которые мне и поручили сделать, это типа, мой диплом и будет smile
Она вообще работает нормально, просто выбираешь COM порт и все, все опрашивается регулируется. Ну это я так, мало ли, может это что-то прояснит.

Это сообщение отредактировал(а) Cergiy - 16.4.2008, 08:28

Присоединённый файл ( Кол-во скачиваний: 82 )
Присоединённый файл  T17_RS_2_.pdf 228,21 Kb
PM MAIL   Вверх
xvr
Дата 16.4.2008, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(Cergiy @ 16.4.2008,  08:08)
Люди smile
Вот я прикрепляю файл который мне выслал производитель. Полюбуйтесь.

"Не виноватая я".


Нормальное описание

Цитата

Но тогда я что-то не могу понять что мне делать с РС-485?!  У нас вообще виртуальный COM порт потому как подключение через USB, "переходник" АС4 фирмы "Овен". 
Вот на него и надо искать описание (на "переходник" АС4 фирмы "Овен")

PM MAIL   Вверх
Cergiy
Дата 16.4.2008, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 15.4.2008

Репутация: нет
Всего: нет



Цитата(xvr @  16.4.2008,  11:26 Найти цитируемый пост)
Нормальное описание

Не спорю, это я к тому, что, вобщем-то, ASCII не моя идея. Хотя и написано, что поддерживается и RTU. 
АС4:
Назначение
Предназначен для взаимного преобразования сигналов интерфейсов USB и RS-485. Позволяет подключать к промышленной информационной сети RS-485 персональный компьютер, имеющий USB-порт.

Основные функции
    * Взаимное преобразование сигналов интерфейсов RS-485 и USB
    * Автоматическое определение направления передачи данных
    * Гальваническая изоляция входов
    * Создание виртуального СОМ-порта при подключении прибора к ПК, что позволяет без дополнительной адаптации использовать информационные системы (SCADA, конфигураторы), работающие с аппаратным СОМ-портом
    * Питание от шины USB
    * Встроенные согласующие резисторы

То есть я так понимаю мне о RS даже и думать не надо, а писать "как обычно"?!

Это сообщение отредактировал(а) Cergiy - 16.4.2008, 12:34
PM MAIL   Вверх
xvr
Дата 16.4.2008, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата
АС4:

Основные функции
    * Взаимное преобразование сигналов интерфейсов RS-485 и USB
    * Автоматическое определение направления передачи данных

То есть я так понимаю мне о RS даже и думать не надо, а писать "как обычно"?!

Судя по тому, что написано - да.


Это сообщение отредактировал(а) xvr - 16.4.2008, 13:53
PM MAIL   Вверх
Felan
Дата 16.4.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 2.8.2007
Где: Самара

Репутация: нет
Всего: 7



Цитата(xvr @  16.4.2008,  09:56 Найти цитируемый пост)
У Modbus-RTU очень жесткие времянки, на Windows бес плясок с бубном выдержать практически невозможно

Почему нельзя? Какие именно времянки ты имеешь ввиду? Если время, когда надо дергать RTS, то это драйвер и сам может делать. А если преходник тупой, с эхом, то там вообще все четко, только надо эхо ловить. У меня все замечательно работало.

Цитата(xvr @  16.4.2008,  09:56 Найти цитируемый пост)
так что ASCII его разновидности тоже имеют право на жизнь 

По мне, так сомнительно это все smile

Цитата(xvr @  16.4.2008,  09:56 Найти цитируемый пост)
Еще один плюс текстовых протоколов то, что к железке можно подключиться терминалом и пощупать ее работоспособность без специальных программ (особенно когда есть сомнения в работоспособности таких программ   smile )

Тоже сомнительно. Когда пишешь программу, все равно делаешь отладочные логи, так что смысла в том, что бы тр№;"ся с текстом не вижу... Но это дело вкуса конечно smile

Цитата(xvr @  16.4.2008,  15:52 Найти цитируемый пост)
Судя по тому, что написано - да.

+1


--------------------
// Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного.
PM MAIL WWW ICQ   Вверх
xvr
Дата 16.4.2008, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(Felan @ 16.4.2008,  14:27)
Цитата(xvr @  16.4.2008,  09:56 Найти цитируемый пост)
У Modbus-RTU очень жесткие времянки, на Windows бес плясок с бубном выдержать практически невозможно

Почему нельзя? Какие именно времянки ты имеешь ввиду? 

Я имею в виду что в Modbus RTU используются интервалы между передачей символов в RS для разделения фреймов и прочего, причем эти интервалы относительно короткие - менее 4 символов. При приеме все еще хуже - эти интервалы придется измерять, на Windows это вообще швах  smile 
Цитата

Если время, когда надо дергать RTS, то это драйвер и сам может делать. 
Это кстати тоже, и драйвер (стандартный) этого не делает, более того, в железке (COM порт на PC) есть fifo на передачу и нет прерывания по освобождению собственно передатчика, так что никакой драйвер не сможет эффективно переключить RTS  smile (Только висеть на порту в постоянном цикле опроса)
Цитата

Цитата(xvr @  16.4.2008,  09:56 Найти цитируемый пост)
Еще один плюс текстовых протоколов то, что к железке можно подключиться терминалом и пощупать ее работоспособность без специальных программ (особенно когда есть сомнения в работоспособности таких программ   smile )

Тоже сомнительно. Когда пишешь программу, все равно делаешь отладочные логи, так что смысла в том, что бы тр№;"ся с текстом не вижу... Но это дело вкуса конечно smile
Логи куда? В RS порт? Или морзянкой на светодиод? 

PM MAIL   Вверх
Felan
Дата 17.4.2008, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 2.8.2007
Где: Самара

Репутация: нет
Всего: 7



Цитата(xvr @  16.4.2008,  18:36 Найти цитируемый пост)
Я имею в виду что в Modbus RTU используются интервалы между передачей символов в RS для разделения фреймов и прочего, причем эти интервалы относительно короткие - менее 4 символов. При приеме все еще хуже - эти интервалы придется измерять, на Windows это вообще швах  smile 

Не знаю, как там у вас, но вот у нас интервалы между символами выставлялись в настройках драйвера. И были они стабильные и четкие. Т.к. после того, как в буфер драйвера данные положены, драйвер сам их отправляет. И следит за этими интервалами. И все  хорошо и замечательно работает.
При приеме тоже самое.

Цитата(xvr @  16.4.2008,  18:36 Найти цитируемый пост)
Это кстати тоже, и драйвер (стандартный) этого не делает, более того, в железке (COM порт на PC) есть fifo на передачу и нет прерывания по освобождению собственно передатчика, так что никакой драйвер не сможет эффективно переключить RTS  smile (Только висеть на порту в постоянном цикле опроса)

Это, он, драйвер, кстати делает. Просто его надо настроить. А если это делалось на делфи, так там ошибка в константах. Их надо ручками из MSDN взять. Покрайней мере у нас сам драйвер очень даже правильно дергал сигнал. Сам, после того, как все уйдет именно из буфера... Я вот только точно не помню, какой именно мы делали, то ли RTS, толи DTR. Я к тому времени уже увольнялся.

Цитата(xvr @  16.4.2008,  18:36 Найти цитируемый пост)
Логи куда? В RS порт? Или морзянкой на светодиод? 

Хм... пять раз прочитал эту фразу... Сначала думал - шутка юмора... Потом подумал, что издеваешься... Потом вспомнил, что в эту тему попал через другую... Посмотрел раздел, где она находится.... Блин. smile

Все, что я здесь писал, я писал с точки зрения программиста на делфи, который пишет программу для компьютера, которая работает с контроллером. smile smile smile
Из первого поста мне показалось, что надо именно это. Тут всегда есть куда лог писать smile

Так что извиняюсь, если мимо тазика smile


--------------------
// Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного.
PM MAIL WWW ICQ   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0823 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.