реклама на сайте
подробности

 
 
> Modbus RTU подобный протокол, проблема реализации, Может есть готовый с описанием.
Alex ma
сообщение Jul 29 2007, 17:34
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 81
Регистрация: 9-08-06
Пользователь №: 19 445



Вся фишка в проблеме определения стартовой последовательности, в Modbus – это пауза 3,5 кадра вроде, другой вариант уникальная стартовая последовательность, проблема исключения стартовой последовательности в данных, для МК мне кажется проще всего отслеживать паузу чем обрабатывать массив с поиском и заменой стартовой последовательности, чтоб она не встретилась в данных. Да, но на PC таймер под Windows только 1 мс дискретность.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bodja74
сообщение Jul 30 2007, 11:35
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Делать задержки на таймере не самое лучшее решение,используйте API функцию SLEEP из KERNEL32.
Типа так обьявляем
Код
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


и пользуемся
Sleep 1
Sleep 100 и т.д.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jul 30 2007, 13:26
Сообщение #3


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(bodja74 @ Jul 30 2007, 15:35) *
Делать задержки на таймере не самое лучшее решение,используйте API функцию SLEEP из KERNEL32.
Sleep штука очень не надежная.
Вот результаты работы Sleep на моем компе.
Измеряется реальная задержка в микросекундах.
20 замеров:
Код
Freq=3579545Hz           <--частота счетчиков ядра

Sleep results in microseconds

   Sleep( 0) Sleep( 1) Sleep( 2) Sleep( 3) Sleep(10) Sleep(16) Sleep(20)
----------------------------------------------------------------------
         5      5356     12438     12255     11406     22897     19093
       681      8942     13977      2635     12385     23951     24992
       130      4358      6315      2524      6867     17958     21907
        37      2867      7162     12062     14896     29876     28462
        56      6997       549     12618      5641     23522     16793
        59     10294     12313      8269      9699     29652     25246
       121      7651       459     14255       985     23322     24873
         5     13259     13542      7584      5488     19888     24991
       278      6649      1428      5654      1686     30749     27801
       164     14435     14506     14269     14127     27618     22679
       235      6621     12149      6513      6758     25621     16563
       139      9536     13358      2018     15205     22122     17909
        60      8184     11817     14828       721     24907     29682
       125      7033       403       151       412     18126     17158
         5      6331       865      8556      8092     28302     22481
        11      1372      3209       593      5084     26241     22725
       493     14089       737     13325     14392     19364     25576
       666     11077      4232      5808      7581     25980     15803
        97      4534       470     10276      5433     19632     20555
       147      2997      1649     15627     15497     18517     30676

заметьте, что при значениях Sleep < 16 результат
непредсказуем.(16 это такт оперционки на моем компе)
например Sleep(10) дает значения от 412 до 15497 микросекунд.
Sleep(3) дает значения от 151 до 15527 микросекунд.
Так что для задержки "не менее" 3,5 символов в модбас, Sleep явно не подходит.

Да, замечу еще, измерения проводились на "ненагруженном" компе.
Если запустить несколько жрущих ресурсы задач, то все становится еще хуже sad.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Alex ma   Modbus RTU подобный протокол, проблема реализации   Jul 29 2007, 17:34
- - SasaVitebsk   Цитата(Alex ma @ Jul 29 2007, 20:34) Вся ...   Jul 29 2007, 18:18
- - oran-be   А разве в спецификации MODBUS RTU есть определение...   Jul 29 2007, 19:23
|- - Alex ma   У ведущего МК два USART один мастер второй слейв, ...   Jul 29 2007, 19:55
- - rezident   При реализации RTU-ных протоколов в контроллере на...   Jul 29 2007, 20:10
- - upc2   Это все условно.Никто на практике паузу в 3,5 сим...   Jul 30 2007, 06:46
|- - SasaVitebsk   Цитата(upc2 @ Jul 30 2007, 09:46) Это все...   Jul 30 2007, 10:58
|- - upc2   Цитата(SasaVitebsk @ Jul 30 2007, 13:58) ...   Jul 30 2007, 13:06
- - ALexx   Один из вариантов - в приложении. Представляет соб...   Jul 30 2007, 07:38
|- - bodja74   Цитата(singlskv @ Jul 30 2007, 16:26) Sle...   Jul 30 2007, 16:16
|- - singlskv   Цитата(bodja74 @ Jul 30 2007, 20:16) ГЫ ,...   Jul 30 2007, 16:27
|- - bodja74   Цитата(singlskv @ Jul 30 2007, 19:27) Ну ...   Jul 30 2007, 20:44
|- - singlskv   Цитата(bodja74 @ Jul 31 2007, 00:44) Ей б...   Jul 30 2007, 21:04
- - Maddy   Ну Sleep как-то не кошерно для _таких_ задержек по...   Jul 30 2007, 17:41
|- - singlskv   Цитата(Maddy @ Jul 30 2007, 21:41) Ну Sle...   Jul 30 2007, 18:01
|- - SasaVitebsk   Цитата(singlskv @ Jul 30 2007, 21:01) Mil...   Jul 30 2007, 18:44
|- - upc2   Цитата(SasaVitebsk @ Jul 30 2007, 21:44) ...   Jul 31 2007, 04:49
- - defunct   Цитата(Alex ma @ Jul 29 2007, 20:34) Вся ...   Jul 30 2007, 20:15
|- - singlskv   Цитата(defunct @ Jul 31 2007, 00:15) Ну н...   Jul 30 2007, 22:45
|- - _Алекс   Цитата(defunct @ Jul 30 2007, 23:15) На М...   Jul 31 2007, 04:15
||- - defunct   Цитата(_Алекс @ Jul 31 2007, 07:15) или в...   Jul 31 2007, 10:15
|- - ALexx   Цитата(defunct @ Jul 30 2007, 23:15) Ну н...   Jul 31 2007, 06:53
- - oran-be   Тема получения точных задержек в виндозе очень бла...   Jul 30 2007, 20:23
- - rezident   oran-be, когда вы цитируете кого-то, то указывайте...   Jul 30 2007, 20:47
- - oran-be   Цитата(rezident)когда вы цитируете кого-то, то ука...   Jul 31 2007, 04:55
- - _Алекс   МК Slave: Скажем есть функция обработки принятого...   Jul 31 2007, 05:46
- - upc2   To _Алекс Прикрепил документ, где хорощо распиcа...   Jul 31 2007, 09:53


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 06:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01386 секунд с 7
ELECTRONIX ©2004-2016