|
|
  |
3 ATMega8 к 1 COM-порту ПК |
|
|
|
Jan 8 2007, 10:48
|

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

|
Цитата(Dog Pawlowa @ Jan 8 2007, 14:31)  За документ спасибо. Спасибо не мне, а ребятам которые придумали хороший протокол. Просто на компьютере можно не только по форумам вопросы печатать (это не Вам лично), а еще много интересных мест посетить Цитата(Dog Pawlowa @ Jan 8 2007, 14:31)  Что касается велосипеда... Мне дело представляется по другому. Вы дали клиенту рыбу, а я пытался объяснить, как устроена удочкаМой следующий шаг - напомнить, что, кроме Modbus, существует огромное количество протоколов (у меня на полочке стоят три папки с описанием более 40 протоколов заправочных систем), а Ваш следующий шаг ? Дать исходники проекта?  . Я не дал ему рыбу - Вы говорите так, как будто я ему подорил 4-е платы - одна для РС, а на остальных гордо восседают мега8))). Я просто, чем бестолково объяснять, дал челу готовый документ, в котором довольно разжеванно говорится про все, что ему нужно, чтобы организовать относительно простой многопроцессорный обмен. Цитата(Dog Pawlowa @ Jan 8 2007, 14:31)  Кстати, Modbus не использую. Не нравится.  Ну и пускакй не нравится, ребятам из Ford, BMW, Toyota, Nissan, Daewoo... продолжать?  очччень нравится. И не только им, шахтерам, металлургам, нефтянникам ETC
--------------------
|
|
|
|
|
Jan 8 2007, 13:00
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(prottoss @ Jan 8 2007, 11:48)  ребятам из Ford, BMW, Toyota, Nissan, Daewoo... продолжать?  очччень нравится. И не только им, шахтерам, металлургам, нефтянникам ETC Я уже писал - аргументы "у меня все работает" и "все используют" я не принимаю  Эти аргументы не технические, а скорее демагогические (без обид  ) Например, будь все шоколадно, перечисенные фирмы не занимались бы протоколом LIN.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Jan 8 2007, 13:13
|

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

|
Цитата(Dog Pawlowa @ Jan 8 2007, 17:00)  Цитата(prottoss @ Jan 8 2007, 11:48)  ребятам из Ford, BMW, Toyota, Nissan, Daewoo... продолжать?  очччень нравится. И не только им, шахтерам, металлургам, нефтянникам ETC Я уже писал - аргументы "у меня все работает" и "все используют" я не принимаю Дадада - "А Баба Яга против", знаю
--------------------
|
|
|
|
|
Jan 8 2007, 13:35
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(prottoss @ Jan 8 2007, 04:52)  Цитата(singlskv @ Jan 8 2007, 05:34)  Прошу прощения у автора топика что влезаю со своим вопросом, но надеюсь что он меня простит (ему это тоже очень понадобится, наверное...)
Не встречал ли кто-нибудь библиотечки под PC (Win) на С++ которая реализует протокол MODBUS (PC, конечно клиент)? А что, сложно накропать самому? Вы вроде грамотный и вполне подкованный чел  Документик, который я выложил почитайте, там и для слэйва и для мастера алгоритмы расписаны, (или, если Вам угодно и для сервера и для клиента). На том же http://modbus.org есть бесплатные исходники (на Си естественно) ... под PIC правда, но HAL подменить, для Вас, я думаю не проблема.... Или проблемы с программированием под Win32??? Проблем с программированием под Win32 нет. Есть проблеммы у Windows Цитата 1. Работа на скоростях до 115200 6. Контроль межбайтовых и межпакетных промежутков в пакетах Modbus (ну конечно на столько, на сколько это вообще возможно под Win) на скорости 115200 один байтик передается 87мкс межбайтовый промежуток 4 байта = 347 мкс а стандартные таймуты COM порта начинаются от 1мс и Sleep тоже от 1 мс , и при этом еще и не отрабатывается а такт операционки 10-20мс а если вводить везьде большие задержки, то 115200 может чудесным образом превратиться в 19200 да и контроль остается только по длинне пакета и по CRC Вот собственно по этому и хочется найти исходники где реализован хоть какой-то контроль. Например можно для контроля промежутков использовать Performance Counters. Просто очень не хочется наступать на все грабли на этом пути, особенно если на них уже кто-нибудь наступил
|
|
|
|
|
Jan 8 2007, 14:51
|

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

|
[quote name='singlskv' date='Jan 8 2007, 17:35' post='194214'] 1. Работа на скоростях до 115200 6. Контроль межбайтовых и межпакетных промежутков в пакетах Modbus (ну конечно на столько, на сколько это вообще возможно под Win) [/quote] на скорости 115200 один байтик передается 87мкс межбайтовый промежуток 4 байта = 347 мкс а стандартные таймуты COM порта начинаются от 1мс и Sleep тоже от 1 мс , и при этом еще и не отрабатывается а такт операционки 10-20мс а если вводить везьде большие задержки, то 115200 может чудесным образом превратиться в 19200 да и контроль остается только по длинне пакета и по CRC Вот собственно по этому и хочется найти исходники где реализован хоть какой-то контроль. Например можно для контроля промежутков использовать Performance Counters. Просто очень не хочется наступать на все грабли на этом пути, особенно если на них уже кто-нибудь наступил [/quote]Для начала: межбайтовый промежуток можно сделать и 1 мс - таймаут в порту отрабатывается аппаратно, а вот уведомлениие об этом событии приложению ОСь выдаст конечно с задержкой, но это уже не столь важно будет - главное таймаут будет зафиксирован Ну а межкадровые таймауты поймать не так уж и сложно и обычными средсвами, хотя можно и аппаратный таймер задействовать А какие у Вас требуемые межкадровые интерывалы? И что за контроллеры?
--------------------
|
|
|
|
|
Jan 8 2007, 15:27
|
Участник

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

|
Подумал и решил что избавиться от программного контроля за лишней линией (RTS) было бы очень удобно. Попробовал сделать так как предложил Сергей Борщ, прошу посмотреть правильно-ли я все соединил:  Если все верно, то прошу объяснить какие номиналы должны быть у R1, R2, R3, R4, R5 и C1. И будет-ли данная схема работать на скорости 115200 бит/c?
|
|
|
|
|
Jan 8 2007, 15:56
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(li4 @ Jan 8 2007, 14:27)  прошу посмотреть правильно-ли я все соединил: Вы опять попутали выводы V- и GND у ST232. На GND подается земля, на V- минус С4, плюс С4 на землю. На выводе V- получается напряжение около -10в. Если есть возможность - используйте ST202 - ей достаточно керамических конденсаторов на 0.1 мкФ. R1 не нужен - ST232 не умеет переводить выход в третье состояние. Цитата(li4 @ Jan 8 2007, 14:27)  Если все верно, то прошу объяснить какие номиналы должны быть у R1, R2, R3, R4, R5 и C1. И будет-ли данная схема работать на скорости 115200 бит/c? У меня работает на 115200. R2 - подтяжка, 1К...4К7 для 115200, при меньших скоростях сопротивление можно увеличивать, при этом снижается потребеление. R3 10К, C1 1нФ, R4 и R5 согласно документу, который привел ув. prottoss должны быть 450...650 ом.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jan 8 2007, 20:30
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(Dog Pawlowa @ Jan 8 2007, 14:00)  Цитата(prottoss @ Jan 8 2007, 11:48)  ребятам из Ford, BMW, Toyota, Nissan, Daewoo... продолжать?  очччень нравится. И не только им, шахтерам, металлургам, нефтянникам ETC Я уже писал - аргументы "у меня все работает" и "все используют" я не принимаю  Эти аргументы не технические, а скорее демагогические (без обид  ) Например, будь все шоколадно, перечисенные фирмы не занимались бы протоколом LIN. Мне тоже не нравится. Кажется устаревшим, излишне перегруженным и в то же самое время не полным. То есть объявление - "у меня тоже MODBUS" - абсолютно ничего не даёт. На сто процентов модбас нефтяников не будет работать с модбасом форд. Да я и не уверен что форд-тайота услышат друг-друга. Если, да то это только в случае, что они договорились м/у собой "кроме протокола". Хотя надо признать, что сама структура первого уровня - пакеты - формат пакетов - таймауты - CRC - придраться особо не к чему. К сожелению с LIN не разбирался и до CAN тоже руки не дошли. Хотелось бы конечно. Но пока не было такой задачи. Компонента MODBUS у меня нет, но есть компонент COM порт и RS485. Я его использовал, но немного корректировал. У меня есть сомнения что под виртуалом вообще полностью можно создать MODBUS. singlskv совершенно точно перечислил причины. Только что с этим боролся. Пробовал вот такой вот вызов таймера TimerID:=timeSetEvent(ASpeed[Speed],0,@TimeProc,0,TIME_PERIODIC); 10мс отрабатывает нормально, но можно и меньше. Но тоже есть проблемы. Мне обещали подогнать правильную работу ч/з OPENGL. Буду пробовать.
|
|
|
|
|
Jan 8 2007, 20:54
|

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

|
Цитата(SasaVitebsk @ Jan 9 2007, 00:30)  Мне тоже не нравится. Кажется устаревшим, излишне перегруженным и в то же самое время не полным. То есть объявление - "у меня тоже MODBUS" - абсолютно ничего не даёт. На сто процентов модбас нефтяников не будет работать с модбасом форд. Да я и не уверен что форд-тайота услышат друг-друга. Если, да то это только в случае, что они договорились м/у собой "кроме протокола". Хотя надо признать, что сама структура первого уровня - пакеты - формат пакетов - таймауты - CRC - придраться особо не к чему. К сожелению с LIN не разбирался и до CAN тоже руки не дошли. Хотелось бы конечно. Но пока не было такой задачи.
Компонента MODBUS у меня нет, но есть компонент COM порт и RS485. Я его использовал, но немного корректировал. У меня есть сомнения что под виртуалом вообще полностью можно создать MODBUS. singlskv совершенно точно перечислил причины. Только что с этим боролся. Пробовал вот такой вот вызов таймера TimerID:=timeSetEvent(ASpeed[Speed],0,@TimeProc,0,TIME_PERIODIC); 10мс отрабатывает нормально, но можно и меньше. Но тоже есть проблемы. Мне обещали подогнать правильную работу ч/з OPENGL. Буду пробовать. Когда я говорил про Фордов, нефтянников и иже сними, я как раз и имел ввиду программный протокол, а физическая часть на вкус и цвет - Форд и Ко использует K-Line , нефтянники используют диф. пары, кто-то предпочитает радио потому как расстояния разные (одна из главных причин) и стимулы. ЗЫ: Как OpenGL может помочь, что то я не догоняю??? Это которая с Direct3D дружит?
--------------------
|
|
|
|
|
Jan 8 2007, 21:20
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(li4 @ Jan 8 2007, 17:56)  Все исправил, схемы приняли вид: AVR to RS485: Опять почти. В документе "имени prottossa" в разделе 3.4.6 сказано (даже выделено), что резисторы растяжки должны быть только в одном месте на всю шину. В вашем случае без переходника 232-485 система не работает, поэтому их имеет смысл оставить именно в этом переходнике, а в "AVR то 485" R1 и R2 исключить. Цитата(li4 @ Jan 8 2007, 17:56)  Если все верно, то 1/3 дела сделано, теперь бы еще программу для МК под эту схему придумать. Повод прочитать раздел 2.4 Master / Slaves State Diagrams упомянутого документа
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jan 8 2007, 21:59
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
Цитата(prottoss @ Jan 8 2007, 21:29)  Цитата(Сергей Борщ @ Jan 9 2007, 01:20)  В документе "имени prottossa" ... Щаз лопну от гордости prottoss Не надо,нам вас будет недоставать.
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|