|
|
  |
3 ATMega8 к 1 COM-порту ПК |
|
|
|
Jan 9 2007, 01:43
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(prottoss @ Jan 8 2007, 20:54)  ЗЫ: Как OpenGL может помочь, что то я не догоняю??? Это которая с Direct3D дружит?  Возможно и может, надо глянуть в эту сторону (мысля очень интересная) дело в том что у OpenGL должны быть очень шустрые таймеры(не помню уже, давно это было, да и не на PC), ему ведь 3D графику в реалтайме выводить надо. А стандартные виндусовые таймеры нормально начинают работать от 10мс. Некоторые пытаются использовать MMTIME, там вроде такт получается 1-3мс
|
|
|
|
|
Jan 9 2007, 03:55
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(singlskv @ Jan 9 2007, 05:43)  Цитата(prottoss @ Jan 8 2007, 20:54)  ЗЫ: Как OpenGL может помочь, что то я не догоняю??? Это которая с Direct3D дружит?  Возможно и может, надо глянуть в эту сторону (мысля очень интересная) дело в том что у OpenGL должны быть очень шустрые таймеры(не помню уже, давно это было, да и не на PC), ему ведь 3D графику в реалтайме выводить надо. А стандартные виндусовые таймеры нормально начинают работать от 10мс. Некоторые пытаются использовать MMTIME, там вроде такт получается 1-3мс Я некоторое время занимался программированием 3D графики, и, как человек икушенный в этом не легком деле, скажу Вам что OpenGL базируется на DirectX, DirecX создан для Windows и он не использует точных таймеров. Для сдерживания, допустим FPS, используется обычный софтверный тамер системы  Реалтайм для игрухи это 25 -50 ФПС. ЗЫ: Представляю картину. Огромный зал с компьютерами, супер АСУ так сказать. Дядьки с умными лицами ставят Ваше ПО на систему удаленного управления объектами, бубны, торжественная музыка... Хлоп ... Аншлаг... Версия DirectX на Вашей системе устарела, требуется обновление ПО...  ... Ну а че, прально, и оператору хорошо, вечером мона Кваку новую погонять, хехе
--------------------
|
|
|
|
|
Jan 9 2007, 15:19
|
Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589

|
Ссылка на WAKE http://www.spetspribor.com/support/software/wake/wake.htmlк сожалению не работает  , поэтому выложил сохраненную страницу со всеми файлами на ФТП /upload/DOCs/WAKE.rar байт-стаффинг конечно не очень хорошо, но жесткая времянка еще хуже(ИМХО). А то что MODBUS закрытый может я и ошибся, но всякие там оговорки типа: Цитата After 30 days, the ActiveX Controls stop communicating and return a result indicating that trial has expired мне не нравятся. ПС 2 prottoss На Вашем сайте исходников MODBUS нет, значит это закрытый протокол  .
--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
|
|
|
|
|
Jan 9 2007, 19:01
|
Участник

Группа: Новичок
Сообщений: 17
Регистрация: 11-06-06
Пользователь №: 17 980

|
Цитата otrog: Выложил сохраненную страницу со всеми файлами на ФТП /upload/DOCs/WAKE.rar У меня к сожалению нет доступа к этому ФТП, может закинеш эти файлы мне на e-mail: labor@online.ua?
|
|
|
|
|
Jan 9 2007, 19:15
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(otrog @ Jan 9 2007, 19:19)  2 prottoss На Вашем сайте исходников MODBUS нет, значит это закрытый протокол  . Мдя, после того, что я тут выложил, и Ваших слов некоторые точно подумают, что MODBUS придумал я  , хм....я уже подумываю о новой версии - PROTTOSSBUS, а че? звучит  ... Зато на моем сайте есть достаточное количество информации, что бы разобраться в протоколе и начать продуктивно работать в этом направлении. Что касается исходников - я уже говорил выше - есть на http://modbus.org совершенно БЕЗВОЗМЕЗДНЫЕ готовые исходники (под PIC, но переделывается влет за неделю) и для клиента и для сервера. Все на Сях. Может быть выложу и свои - надо их причесать немного...
--------------------
|
|
|
|
|
Jan 10 2007, 10:54
|
Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589

|
Цитата(li4 @ Jan 9 2007, 19:01)  Цитата otrog: Выложил сохраненную страницу со всеми файлами на ФТП /upload/DOCs/WAKE.rar У меня к сожалению нет доступа к этому ФТП, может закинеш эти файлы мне на e-mail: labor@online.ua? Положил сюда: http://rapidshare.com/files/11035544/WAKE.rar.html (1.8 Мб) Цитата(prottoss @ Jan 9 2007, 19:15)  Мдя, после того, что я тут выложил, и Ваших слов некоторые точно подумают, что MODBUS придумал я  , хм....я уже подумываю о новой версии - PROTTOSSBUS, а че? звучит  ... Отличная идея
--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
|
|
|
|
|
Jan 10 2007, 13:42
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(prottoss @ Jan 9 2007, 20:15)  Цитата(otrog @ Jan 9 2007, 19:19)  2 prottoss На Вашем сайте исходников MODBUS нет, значит это закрытый протокол  . Мдя, после того, что я тут выложил, и Ваших слов некоторые точно подумают, что MODBUS придумал я  , хм....я уже подумываю о новой версии - PROTTOSSBUS, а че? звучит  ... Зато на моем сайте есть достаточное количество информации, что бы разобраться в протоколе и начать продуктивно работать в этом направлении. Что касается исходников - я уже говорил выше - есть на http://modbus.org совершенно БЕЗВОЗМЕЗДНЫЕ готовые исходники (под PIC, но переделывается влет за неделю) и для клиента и для сервера. Все на Сях. Может быть выложу и свои - надо их причесать немного... Это замечательно, может кому то понадобитсся именно полный MODBUS. Я, правда достаточно давно, реализовывал его на ASM51. В принципе с точки зрения микроконтроллера ничего сложного нет. Но для меня немного нафталином попахивает. А вот с точки зрения PC, всё не так просто. Например задача - контроллировать задержку в 1.5 символа (пишу по памяти) на высоких скоростях (а RS485 поддерживает до 2Мбит) представляется сомнительной. Я столкнулся с тем что у меня PC самопроизвольно рвала пакеты. Иногда вставляя незначительные промежутки, но и скорость у меня не рекордная! А что будет на большой? Кроме того незнание момента окончания передачи для PC, а расчёт его, - тоже вызывает ощущение - не очень. Всё идейно важное, - на мой взгляд из первого уровня (как я бы сказал) из MODBUS взял тот же WAKE. А для меня красивым протоколом на втором уровне является X-modem. Я исследовал для себя. Он даёт самую высокую скорость при ошибках в линии. Очень идея красивая. Правда я делал адаптивные размеры пакетов и анализировал статистику. Интересно было бы повозится с LIN и с CAN. Чтобы самому составить своё собственное мнение. А вообще интересно наблюдать, что все более-менее современные протоколы в конечном итоге приближаются к сетевым.
|
|
|
|
|
Jan 11 2007, 01:04
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(SasaVitebsk @ Jan 10 2007, 13:42)  Например задача - контроллировать задержку в 1.5 символа (пишу по памяти) на высоких скоростях (а RS485 поддерживает до 2Мбит) представляется сомнительной. Я столкнулся с тем что у меня PC самопроизвольно рвала пакеты. Иногда вставляя незначительные промежутки, но и скорость у меня не рекордная! А что будет на большой? Кроме того незнание момента окончания передачи для PC, а расчёт его, - тоже вызывает ощущение - не очень. Разве идея MODBUS это не master-slave (запрос-ответ)? Насколько помню там тупо до ужаса. Посылаешь пакет, ставишь тайм-аут (отфонарный) ~100ms, если в ответ что-то пришло - хорошо, считаешь CRC, 0 - отлично, проверяешь код функции, совпал - значит ответ на наш запрос, ну а дальше парсишь сообщение. Слейву еще проще. Получил команду - отправил незамедлительно ответ. Где там задержки в 1.5 символа-то? фунции modbus драйвера: Код void mb_SendPacket(U8 *pData, U8 size) { while (size--) uq_PutChar( *pData++ ); }
void mb_PutMessage(PModbusDesc pDesc) { pDesc->CRC = mb_crc16( (U8 *)pDesc, sizeof(*pDesc) - 2 ); mb_SendPacket( (U8 *)pDesc, sizeof(*pDesc)); }
U8 mb_GetMessage(U8 *pStorage, U8 *retsize, U8 maxsize) { U32 tempclock = Kernel_GetClock() + 100; // 100 ms timeout U8 temp; *retsize = 0; do { if ( (uq_GetChar(&temp)) && (*retsize < maxsize)) { pStorage[(*retsize)++] = temp; } Kernel_idle(); } while (Kernel_GetClock() < tempclock); return ((*retsize) == 0) ? FAILED : SUCCESS; }
|
|
|
|
|
Jan 11 2007, 02:22
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(defunct @ Jan 11 2007, 01:04)  Слейву еще проще. Получил команду - отправил незамедлительно ответ. Не, незамедлительно нельзя! по стандарту нужно выдержать интервал не менее 4 длительностей байта Цитата Посылаешь пакет, ставишь тайм-аут (отфонарный) ~100ms, если в ответ что-то пришло - хорошо если ставить слишком большие таймауты, то это очень плохим образом может сказаться на производительности линии, если она слегка шумит Цитата Где там задержки в 1.5 символа-то? По стандарту нужно чтобы каждый принимаемый байт попадал в фрейм длительностью 1,5 байта на данной скорости. Правда эту часть стандарта обычно никто не контролирует строго. Главное это чтобы межбайтовые промежутки не превышали межпакетные. Ну и контролировать можно только со стороны слейва. Если слейв микроконтроллер то это сделать легко, а вот если PC под Win да и еще скорость приличная, то тогда легче сразу повеситься Когда мастер PC под Win то существует проблема обрезания длинных пакетов: Цитата(SasaVitebsk @ Jan 10 2007, 13:42)  Например задача - контроллировать задержку в 1.5 символа (пишу по памяти) на высоких скоростях (а RS485 поддерживает до 2Мбит) представляется сомнительной. Я столкнулся с тем что у меня PC самопроизвольно рвала пакеты. Иногда вставляя незначительные промежутки, но и скорость у меня не рекордная! А что будет на большой? Кроме того незнание момента окончания передачи для PC, а расчёт его, - тоже вызывает ощущение - не очень. Кстати SasaVitebsk какая у Вас скорость ? Удалось ли победить обрезание пакетов ?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|