Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
02.05.2024, 16:13:31
 
Начало Помощь Поиск Войти Регистрация
Новости: Форум обновлен

+  Форум АО "ВЗЛЕТ"
|-+  Приборы ЗАО "Взлет"
| |-+  Отдел программистов
| | |-+  связь по Ethernet с устройством поддерживающим протокол ModBus
0 Пользователей и 1 Гость смотрят эту тему. « предыдущая тема следующая тема »
Страниц: [1] Печать
Автор Тема: связь по Ethernet с устройством поддерживающим протокол ModBus  (Прочитано 8900 раз)
pritqwet
Гость
« : 08.06.2009, 14:57:35 »

Здравствуйте, сталкнулся со следующей проблемой: имеется "ВЗЛЁТ ЭМ ЭКСПЕРТ-911И", на нём подключена линия Ethernet для связи. Прибор нормально пингуется, программа "Универсальный просмоторщик" тоже работает, но была поставлена задача общение с прибором посредством собственной программы,  в связи с чем изучив имеющуюся у вас на сайте документацию: prtkl_Modbus.pdf и т.д., а также воспользовавшись другими Интернет-источниками, принялся писать программу UDP-сервера, но возникла следующая проблема - прибор не отвечает, а вернее такое ощущение, что не может распознать посланное ему сообщение! Прибор настроен на режим RTU, адрес прибора - 1, программа посылает следующее сообщение: [01][03][00][6B][00][03][74][17], где [01] - адрес устройства, с которым хотим общаться, [03] - запрашиваемая функция, [00][6B][00][03] - её пораметры и [74][17] - контрольная сумма.....Ответа не приходит и в Статистике не отмечается то, что какой либо запрос получен... Может у кого есть идею из-за чего енто может быть?
Записан
Dekir
Administrator
*****

Харизма: 35
Офлайн Офлайн

Сообщений: 339


Принимаем Ваши пожелания 7 дней в неделю 24 часа


« Ответ #1 : 10.06.2009, 11:01:09 »

при работе через Ethernet модуль запрос упаковывается в tftp пакет.
Все во вложениях

* Ethernet.rar (578.05 Кб - загружено 1140 раз.)
Записан
pritqwet
Гость
« Ответ #2 : 18.06.2009, 13:05:51 »

Спасибо за информацию! Упокавал modBus-пакет в TFTP! То ли  я где-то что-то пропустил, вообщем работать от этого лучше не стало. Решил поступить драконовским методом: поставил программу wireshark-win32-1.2.0.exe, поймал пакеты, проанализировал их, только после этого нашёл что нужно есчё сделать с пакетом перед тем как отправить, всё заработало!  Smiley
Вот какое преобразование нужно совершить с modBus пакетом перед тем как упаковывать его в tftp-фрейм:
Код:
int tftp_pack(unsigned char *query, unsigned char *pack, int query_sz)
{
int len = 0;
pack[len++] = 0;
pack[len++] = 1;
pack[len++] = '=';
for (int i=0; i<query_sz; i++) {
pack[len++] = (query[i]>>4)>0x09?(query[i]>>4)-0x09+0x40:(query[i]>>4)+0x30;
pack[len++] = (query[i]&0x0F)>0x09?(query[i]&0x0F)-0x09+0x40:(query[i]&0x0F)+0x30;
}

pack[len++] = 0;
pack[len++] = 'o';
pack[len++] = 'c';
pack[len++] = 't';
pack[len++] = 'e';
pack[len++] = 't';
pack[len++] = 0;
return len;
}
может кому пригодится!  Wink
Записан
Страниц: [1] Печать 
« предыдущая тема следующая тема »
Перейти в:  


Войти

© 1990—2016, АО «Взлет».
Все права защищены.
Контактная информация
Powered by SMF 1.1.13 | SMF © 2006-2011, Simple Machines LLC
Материалы, размещенные на сайте, охраняются законодательством об авторском праве. Перепечатка материалов допускается только со ссылкой на сайт.