Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема передачи данных (modbus rtu) 
:(
    Опции темы
gorillka
Дата 1.11.2010, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Может быть кто-нибудь сталкивался с подобной проблемой...
Передаю данные в порт 
char bufwr[256]={0x01,0x05,0x80,0x00,0x01,0x00,LOBYTE(crc16),HIBYTE(crc16)};
WriteFile(port, bufwr, 7, &temp, NULL);

Устройство, вместо того чтобы принять всю строчку целиком, принимает первые 3 байта, последние 4 байта считает следующим сообщением
Затем я еще раз через какой-то время отправляю тоже самое, устройство к 4 предыдущим байтам добавляет новые 3 первых байта.

Вообщем вот как принимает данные устройство:
1 сообщение - 0x01,0x05,0x80 принято 3 байта время мс 0
2 сообщение - 0x00,0x01,0x00,LOBYTE(crc16),HIBYTE(crc16),0x01,0x05,0x80 - принято 7 байт время мс 2012.

P.S. Тайм-ауты какие только не выставлял, не чего не меняется и сами данные тоже менял аналогично

Добавлено через 8 минут и 37 секунд
Проблему решил!
вместо
WriteFile(port, bufwr, 7, &temp, NULL);
написал
WriteFile(port, bufwr, 8, &temp, NULL);

просто поменял на угад и заработало. Если кто-нибдь объяснит в чем здесь дело был бы очень благодарен

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


Новичок



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

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



блин все равно как то не так работает. Устройство как будто бы ждет 8-байта а его все нет smile 
то есть первый раз отправляю данные все ок. 
второй раз отправляю не чего не происходит.
отправляю третий раз приходит то что должно прийти но пишет время то которое было между двумя нажатиями кнопками(когда отправлял 2 и 3 раз)
Вообщем очень нужно разъяснение специалиста, я что то не очень понимаю как это все работает...
PM MAIL   Вверх
casey
Дата 1.11.2010, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А что за устройство? Сдается мне что-то самодельное.
Modbus-слэйв устройство должно после некоего таймаута игнорировать запрос, если он недошел. И ожидать запрос сначала.
Таймаут можно посмотреть в спецификации, но не больше 200-300 мс.  

А что работает 

WriteFile(port, bufwr, 8, &temp, NULL); - так тут очевидно, тебе ж 8 байт надо отправить.
PM MAIL WWW   Вверх
gorillka
Дата 1.11.2010, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



блин я слегка прогнал smile просто в массиве символов они с 0 идут вот я и написал что 7 smile
Устройство - это пока эмулятор
Но вопрос остается открытый почему этот эмулятор через рас сообщения принимает???
P.S. сейчас попробую других эмуляторов накачать. может посоветуете какой нибудь хороший?
PM MAIL   Вверх
casey
Дата 1.11.2010, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Когда-то использовал Modsim32
Демо-версия здесь http://www.win-tech.com/html/demos.htm
В чем ограничения уже не помню.
PM MAIL WWW   Вверх
gorillka
Дата 1.11.2010, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо попробую smile 
PM MAIL   Вверх
xvr
Дата 1.11.2010, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Win не очень дружит с realtime'ом, а для modbus rtu он в некоторой степени нужен. Видимо отправка в порт была прервана более приоритетной задачей. До некоторой степени лечится вынесением обмена с портом в отдельную нить и назначением этой нити и всему процессу REALTIME приоритета.
Но судя по уровню ваших вопросов я бы вам не советовал с этим связываться - повесите все систему (REALTIME процессы это могут сделать легко и непринужденно  smile )
Поищите готовые библиотеки, они есть  smile 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




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


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

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