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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Modbus обмен данными с весами СВЕДА, чтение регистров контроллера 
:(
    Опции темы
myshara
Дата 14.5.2014, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток всем форумчанам!!!

Модераторов прошу не пинать меня ногами и не швырять в меня камни если тема не в том разделе.

Очень нужна помощь в решении задачи. А то я уже совсем себе мозг сломал.

Задача:

Считать регистры с весового терминала СВЕДА ПВ-310 (http://oscada.org/forum/attachments/att91/)

страница 54 часть 2 протокол modbus ascii

 
II. ПРОТОКОЛ «MODBUS». 
 
В приборе реализован стандартный для промышленных 
контроллеров протокол MODBUS - режим ASCII, семибитный с кон-
тролем четности/нечетности и одним стоповым битом либо без 
контроля четности с двумя стоповыми битами. 
 
Формат: 
: [адрес] [функция] [данные][LCR][0d,0a] 
 
Поле данных может отсутствовать. 
Адресное поле фрейма содержит два символа (ASCII). Утройству 
присваивается адрес в пределах от 1 до 247. Адрес 0 используется 
для широковещательной передачи, его распознает каждое устрой-
ство в сети. 
Допустимая длина сообщения 256 байтов. 
Если подчиненное устройство не приняло запрос или в пакете была 
обнаружена ошибка, то пакет не возвращается. 

Если честно не могу понять как правильно сформировать запрос.

пишу на VB:
В программе три поля txt_addr, txt_fn, txt_data

Формируем строку:
    sQwery = Chr("&h" & Hex(Form1.txt_addr.Text))
    sQwery = sQwery & Chr("&h" & Hex(Form1.txt_fn.Text))
    sQwery = sQwery & Chr("&h" & Hex(Form1.txt_data.Text))


считаем и добавляем LRC
vLRC = LRC_16(sQwery)
sQwery = sQwery & Chr("&h" & Hex(vLRC))

Добавляем : в начало и DA в конец
sQwery = Chr("&h" & Hex(58)) & sQwery & Chr("&h" & Hex(218))

Подключаемся к COM и передаем запрос sQwery 
в ответ 0

класс для COM написан ранее и проверен на ИСТОК-ТМ

Пример:
txt_addr=5
txt_fn=3
txt_data1

LRC=9
sQwery=3A5319DA
Com настроен ("2400,7,0,2")

те в COM передаем  - 3A5319DA

Спасибо!



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


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



так вопрос в чем?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ФедосеевПавел
Дата 14.5.2014, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



del

Это сообщение отредактировал(а) ФедосеевПавел - 14.5.2014, 21:38
PM   Вверх
myshara
Дата 15.5.2014, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Подключаемся к COM и передаем запрос sQwery 
в ответ 0

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


Опытный
**


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

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



Мне кажется, что ты не то передаёшь в запросе.
Например, адрес устройства - "5". А он не "5", а "05" - два байта.
Номер функции - то же самое - не "3", а "03".
Итого. Ещё не начиная передавать данные, уже передаём 5 байт ":0503".
Кроме того, конец передачи CR и LF записываются "как есть", без трансляции в символы "0D0A", а прям сразу в виде символов с кодами 13 и 10.
Кажется, так. Я не очень знаком с ascii вариантом. Один лишь раз работал - с rtu.

Вот ссылка на перевод официального документа с английского на родной. Оттуда мои сведения о ":", CR и LF.
И ещё ссылка.

Надеюсь, это поможет.

Это сообщение отредактировал(а) ФедосеевПавел - 15.5.2014, 16:11
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

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


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

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

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


 




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


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

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