|
Modbus RTU подобный протокол, проблема реализации, Может есть готовый с описанием. |
|
|
|
 |
Ответов
|
Jul 30 2007, 11:35
|
Знающий
   
Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984

|
Делать задержки на таймере не самое лучшее решение,используйте API функцию SLEEP из KERNEL32. Типа так обьявляем Код Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) и пользуемся Sleep 1 Sleep 100 и т.д.
|
|
|
|
|
Jul 30 2007, 13:26
|
дятел
    
Группа: Свой
Сообщений: 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 явно не подходит. Да, замечу еще, измерения проводились на "ненагруженном" компе. Если запустить несколько жрущих ресурсы задач, то все становится еще хуже
|
|
|
|
|
Jul 30 2007, 16:16
|
Знающий
   
Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984

|
Цитата(singlskv @ Jul 30 2007, 16:26)  Sleep штука очень не надежная. Вот результаты работы Sleep на моем компе. ГЫ ,а счего вы взяли ,что сама ваша прога не делает выборки значений с переменны успехом  ,или вы думаете что Винда забьет на все дрова и ваш процесс будет пропускать вне очереди Если говорить из практики ,то если бы у меня был такой разброс значений ,то моя бы прога ,или страшно бы глючила или бы вообще не работала Ладно,вообще я другое имел ввиду  ,3.5 кадра естественно мерять Sleep нет смысла ,просто я предложил более простую реализацию задержки ,так как если делать через встроеный таймер нужно постоянно опрашивать его значение до получения необходимого результата или делать событие по его периоду и там что то решать.
|
|
|
|
|
Jul 30 2007, 16:27
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(bodja74 @ Jul 30 2007, 20:16)  ГЫ ,а счего вы взяли ,что сама ваша прога не делает выборки значений с переменны успехом  ,или вы думаете что Винда забьет на все дрова и ваш процесс будет пропускать вне очереди Если говорить из практики ,то если бы у меня был такой разброс значений ,то моя бы прога ,или страшно бы глючила или бы вообще не работала  Ну если Вы не верите счетчикам ядра, то тады, я Вас вероятно не смогу убедить что приведенные мной значения это правда погуглите по таким функциям: QueryPerformanceFrequency QueryPerformanceCounter Возможно после этого Вы лучше поймете как все устроено у Windows, и поймете как правильно измерять задержки под ней.
|
|
|
|
Сообщений в этой теме
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, 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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|