![]() |
|
Модераторы: PILOT, ManiaK, Mazzi |
![]()
|
|
| myshara |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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 Спасибо! |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
так вопрос в чем?
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| ФедосеевПавел |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 7.2.2009 Репутация: 1 Всего: 10 |
del
Это сообщение отредактировал(а) ФедосеевПавел - 14.5.2014, 21:38 |
|||
|
||||
| myshara |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 14.5.2014 Репутация: нет Всего: нет |
Подключаемся к COM и передаем запрос sQwery
в ответ 0 |
|||
|
||||
| ФедосеевПавел |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
![]()
|
| Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |