Вот есть прибор RMT69L в тех.поддержке выпросил протокол обмена. Вопрос как составить запрос что бы получить значения с 6 каналов одновременно (параметр выделен в экселе красным, в приложенном архиве)? Я так понял вот так 3А 31 3В 37 3В 01 00 0D 3B <контрольная сумма> 0D; Вот как только рассчитать контрольную сумму ума не приложу. Анализировал обмен сниффером через заводскую программку, но она читает по одному каналу вот что получилось:
Запрос:09.12.2012 14:39:02.88964 (+0.0000 seconds)
3A 31 3B 31 3B 31 3B 33 36 32 39 38 0D :1;1;1;36298.
Где 3A<:> 31<адрес 1> 3В<;>31<команда cmd1>3В<;> 31<номер канала т.е.2, счет от 0 до 5>3В<;> 33 36 32 39 38<контрольная сумма> 0D<CR>
Ответ:09.12.2012 14:39:02.88964 (+0.0000 seconds)
FF 21 31 3B 30 2E 34 33 35 30 3B 35 35 30 30 34 ÿ!1;0.4350;55004
0D .
Запрос:09.12.2012 14:39:02.88964 (+0.0000 seconds)
3A 31 3B 31 3B 32 3B 33 32 32 30 32 0D :1;1;2;32202.
Где 3A<:> 31<адрес 1> 3В<;>31<команда cmd1>3В<;> 31<номер канала т.е.3, счет от 0 до 5>3В<;> 33 32 32 30 32<контрольная сумма> 0D<CR>
Ответ:09.12.2012 14:39:02.90564 (+0.0156 seconds)
FF 21 31 3B 30 2E 34 35 30 30 3B 32 34 35 32 34 ÿ!1;0.4500;24524
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Как правильно составить запрос ModBus ASCII?
Модератор: Глоб.модераторы
-
- здесь недавно
- Сообщения: 4
- Зарегистрирован: 10 дек 2012, 11:16
- Имя: Грухвин Евгений Вячеславович
- Страна: Россия
- город/регион: Томск
Как правильно составить запрос ModBus ASCII?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- здесь недавно
- Сообщения: 22
- Зарегистрирован: 14 янв 2009, 09:13
- Имя: Лившиц Аркадий Соломонович
- Страна: Россия
- город/регион: Казань
Re: Как правильно составить запрос ModBus ASCII?
Попробуйте воспользоваться программой Моdbus Poll. Я скачал ее с сайта http://www.modbustools.com/. Она сама считает контрольную сумму. Разобраться в приложенном описании с ходу не смог - нет времени.
-
- здесь недавно
- Сообщения: 4
- Зарегистрирован: 10 дек 2012, 11:16
- Имя: Грухвин Евгений Вячеславович
- Страна: Россия
- город/регион: Томск
Re: Как правильно составить запрос ModBus ASCII?
Все равно не могу разобраться..... вообще разве может быть контрольная сумма такой длины 33 32 32 30 32 ?
-
- здесь недавно
- Сообщения: 4
- Зарегистрирован: 10 дек 2012, 11:16
- Имя: Грухвин Евгений Вячеславович
- Страна: Россия
- город/регион: Томск
Re: Как правильно составить запрос ModBus ASCII?
Вот запросы на которые отвечает прибор, где 30-35 это каналы с 1 по 6. А я хочу всю информацию за раз с 6 каналов...после последней ;(3B) идет контрольная сумма по документации, но как ее прочитать хз. У меня опыта для анализа не хватает...
3A 31 3B 31 3B 30 3B 37 36 32 37 0D
3A 31 3B 31 3B 31 3B 33 36 32 39 38 0D
3A 31 3B 31 3B 32 3B 33 32 32 30 32 0D
3A 31 3B 31 3B 33 3B 36 30 38 37 35 0D
3A 31 3B 31 3B 34 3B 35 36 37 37 37 0D
3A 31 3B 31 3B 35 3B 31 39 39 31 32 0D
3A 31 3B 31 3B 30 3B 37 36 32 37 0D
3A 31 3B 31 3B 31 3B 33 36 32 39 38 0D
3A 31 3B 31 3B 32 3B 33 32 32 30 32 0D
3A 31 3B 31 3B 33 3B 36 30 38 37 35 0D
3A 31 3B 31 3B 34 3B 35 36 37 37 37 0D
3A 31 3B 31 3B 35 3B 31 39 39 31 32 0D
-
- здесь недавно
- Сообщения: 4
- Зарегистрирован: 10 дек 2012, 11:16
- Имя: Грухвин Евгений Вячеславович
- Страна: Россия
- город/регион: Томск
Re: Как правильно составить запрос ModBus ASCII?
А вот если с помощью modbus poll отправить запрос 004-Tx:3A 31 3B 31 3B 31 3B 33 36 32 39 38 0D
ответ приходит формата 005-Rx:FF FF 01 13 27 53 53 6A
чет я вообще запутался как че тут работает...
ответ приходит формата 005-Rx:FF FF 01 13 27 53 53 6A
чет я вообще запутался как че тут работает...
-
- новенький
- Сообщения: 1
- Зарегистрирован: 02 янв 2013, 14:00
- Имя: Ляшкевич Константин Владимирович
- Страна: эРаФия
- город/регион: Черноголовка
Re: Как правильно составить запрос ModBus ASCII?
вот работающий код моей программы на Qt и инструкция к прибору "Элемер" "ИКСУ-2000". В инструкции ошибка ;)
Код: Выделить всё
const QByteArray Crc16(QByteArray data)
{
unsigned short crc = 0xFFFF;
for(int i = 1; i < data.length(); i++)
{
crc = crc ^ (char)data.at(i);
for (int j = 1; j <= 8; j++)
if(((crc / 2) * 2) != crc)
crc = (crc / 2) ^ 40961;
else
crc = crc / 2;
}
data += QByteArray::number(crc);
data.push_back(13);
return data;
}
bool checkCrc16(const QByteArray &data)
{
unsigned short crc = 0xFFFF;
int len = data.lastIndexOf(';') + 1;
for(int i = 1; i < len; i++)
{
crc = crc ^ (char)data.at(i);
for (int j = 1; j <= 8; j++)
if(((crc / 2) * 2) != crc)
crc = (crc / 2) ^ 40961;
else
crc = crc / 2;
}
return data.mid(len, data.lastIndexOf(0x0D) - len).toUShort() == crc;
}
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- здесь недавно
- Сообщения: 8
- Зарегистрирован: 25 мар 2013, 14:41
- Имя: Исламбек Нуржан Нуржанович
- Страна: Великая Орда
- город/регион: Усть-Урюпинск
Re: Как правильно составить запрос ModBus ASCII?
DeepWaterOne у вас пример подсчета контрольной суммы CRC, которая используется в ModBus RTU, а в ModBus ASCII вообще-то используется LRC.