Гость @Ark 18 октября, 2012 Опубликовано 18 октября, 2012 · Жалоба Как это сделать на ПК при наличии автоматических конвертеров USB-RS485 типа ftdi и им подобным? Я вот об этом задумался и что-то сразу в голове ответа не нашел... Если не найти ответа на этот вопрос то становится очевидным, что именно для modbus-rtu растяжки могут дать положительный эффект... Можно и еще пару вопросов добавить: Как это сделать на ПК, работающем через в локальную сеть, при наличии конверторов Ethernet-RS485? Как это сделать на ПК, который через Internet-Ethernet-RS485 желает удаленно снимать данные с модбасовских устройств? Когда подобные задачи, наконец, встают перед приверженцами "мусорных" линий, любителями вручную "подергать" передатчиком RS485 и прочей экзотики, то, поверьте, "просветление в мозгах" наступает очень быстро... За исключением редких клинических случаев... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 18 октября, 2012 Опубликовано 18 октября, 2012 · Жалоба Серьёзно, чем в wake 0xC0 якобы лучше чем 0xF0 ? Вроде бы С0 в качестве байта синхронизации тоже подходит: (Я не совсем уверен, что происходит после framing error. Ждёт ли приёмник единицы перед тем, как начать детектировать старт-бит?) Но в в wake начало блока не C0C0, а просто C0. Вероятно, выбрали по каким-то другим причинам. За исключением редких клинических случаев... Ark, я не совсем понял, что же вы предлагаете? Полагаться на растяжки и не контролировать ошибки вовсе? (Вас уже спрашивал об этом Ruslan1, но вы этот вопрос технично проигнорировали.) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 18 октября, 2012 Опубликовано 18 октября, 2012 · Жалоба (Я не совсем уверен, что происходит после framing error. Ждёт ли приёмник единицы перед тем, как начать детектировать старт-бит?) Классические 16550 считают бит, на котором случился FE, стартовым для следующего фрейма. Что делает каждый конкретный МК - в общем случае неизвестно. Но в в wake начало блока не C0C0, а просто C0. Вероятно, выбрали по каким-то другим причинам. Это надо у товарища Romkey спросить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flexz 0 18 октября, 2012 Опубликовано 18 октября, 2012 · Жалоба (Я не совсем уверен, что происходит после framing error. Ждёт ли приёмник единицы перед тем, как начать детектировать старт-бит?) Но в в wake начало блока не C0C0, а просто C0. Вероятно, выбрали по каким-то другим причинам. Не скажу за все конроллеры, но STM32 стартовым битом считает единицу за которой следует ноль, аналогично at91sam7. В ином случае такой медод начала кадра не будет работать. Что касается начального символа, то при таком подходе одинаково подойдут и FF и 00. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 18 октября, 2012 Опубликовано 18 октября, 2012 · Жалоба Классические 16550 считают бит, на котором случился FE, стартовым для следующего фрейма. Хм. В этом случае и 0xF0 0xF0 не подходят: Не скажу за все конроллеры, но STM32 стартовым битом считает единицу за которой следует ноль, аналогично at91sam7. В ином случае такой медод начала кадра не будет работать. Что касается начального символа, то при таком подходе одинаково подойдут и FF и 00. Мне такой подход кажется более логичным. Но если aaarrr прав, то метод не универсален. (Емнимс, у LPC вроде бы контроллер один-в-один 16550.) --- Добавление. Да, aaarrr как всегда прав: The UART will try to resynchronize after a framing error To do this it assumes that the framing error was due to the next start bit so it samples this ‘‘start’’ bit twice and then takes in the ‘‘data’’. Это из даташита на какой-то из 16550. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 18 октября, 2012 Опубликовано 18 октября, 2012 · Жалоба Можно и еще пару вопросов добавить: Как это сделать на ПК, работающем через в локальную сеть, при наличии конверторов Ethernet-RS485? Как это сделать на ПК, который через Internet-Ethernet-RS485 желает удаленно снимать данные с модбасовских устройств? Когда подобные задачи, наконец, встают перед приверженцами "мусорных" линий, любителями вручную "подергать" передатчиком RS485 и прочей экзотики, то, поверьте, "просветление в мозгах" наступает очень быстро... За исключением редких клинических случаев... Попробуйте применять конвертеры, у которых в описании есть фраза "with RTS/CTS support". А еще лучше "MODBUS RTU (ASCII) support" :) То есть заточенные шлюзы, которые преобразуют MODBUS-RTU или ASCII во что-то другое. Например, в случае езернета я бы смотрел в сторону "Modbus TCP/IP to Modbus RTU Converter". По езернету гонять то, что для езернета разработано, по сериалу- то что для сериала. и так далее. Есть безобразное количество шлюзов из Модбаса куда попало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 18 октября, 2012 Опубликовано 18 октября, 2012 · Жалоба недопонял - про битовую синхронизацию.Радиомодему нужно несколько переходов 0-1-0-1 чтобы после шума "зацепиться" за границы битов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 18 октября, 2012 Опубликовано 18 октября, 2012 · Жалоба безобразное количество шлюзов из Модбаса куда попало. :a14: Это фраза навеки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость @Ark 18 октября, 2012 Опубликовано 18 октября, 2012 · Жалоба Ark, я не совсем понял, что же вы предлагаете? В первую очередь, должна быть обеспечена достаточная помехоустойчивость линии во всех ее рабочих состояниях. А какой протокол Вы далее будее использовать, с какой степенью помехоустойчивости - это вопрос второй... Попробуйте применять конвертеры, у которых в описании есть фраза "with RTS/CTS support"... ... Есть безобразное количество шлюзов из Модбаса куда попало. Это только "большие мастера" под каждый протокол, под каждый стык и под каждый свой "чих" специальные конверторы и шлюзы задействуют. Остальные успешно пользуются универсальными преобразователями, не "заточенными" под какой-то один конкретный протокол... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 18 октября, 2012 Опубликовано 18 октября, 2012 · Жалоба Это только "большие мастера" под каждый протокол, под каждый стык и под каждый свой "чих" специальные конверторы и шлюзы задействуют. Остальные успешно пользуются универсальными преобразователями, не "заточенными" под какой-то один конкретный протокол... Да я же не возражаю и не агитирую. И опять же это не я говорю о проблемах при переходе, например, из езернета :) Мне за 10 лет ни разу не пришлось ничего кроме Модбас применять для RS-485. И зачем мне в таком случае универсальное "нечто"? А, ну может про профибас еще хорошо бы подумать. Но опять же я их между собой шлюзом свяжу если что.... Но вопрос риторический, сколько людей-столько мнений... А насчет "больших мастеров"- вы какой критерий применяете для дифференциации штанов? если по массогабаритам - то на маленького я точно не тяну... :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость @Ark 18 октября, 2012 Опубликовано 18 октября, 2012 · Жалоба А насчет "больших мастеров"- вы какой критерий применяете для дифференциации штанов? если по массогабаритам - то на маленького я точно не тяну... :) Да вы не обижайтесь. :) Хорошего человека должно быть много. :) А "большой мастер" - это тот, кто одну проблему успешно решает, а десять других - попутно создает. Причем, чаще всего, не себе, а другим людям. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 18 октября, 2012 Опубликовано 18 октября, 2012 · Жалоба Пацанов с раена занаешь? Теперь - определённо! :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 17 19 октября, 2012 Опубликовано 19 октября, 2012 · Жалоба Как это сделать на ПК при наличии автоматических конвертеров USB-RS485 типа ftdi и им подобным? Конвертер USB-RS485 ничем особенно не отличается от конвертера RS232-RS485. В последних прием-передача задается явным образом при помощи одного из сигналов управления модемом, типа, RTS. У конвертора FTDI передатчиком управляет пин CBUS2 чипа FT232RQ. То есть, передатчик RS485 находится под полным контролем ПК, так что проблем никаких не наблюдается. Наверное, вы попутали с "автоматическими" повторителями RS485-RS485, в которых направление передачи задается по появлению активного уровня на одной или другой стороне и некоторое время удерживается в выбранном положении одновибратором. К сожалению, такие повторители не способны обеспечить высокой помехоустойчивости, поскольку короткая помеха на "пассивной" стороне задаст неверное направление передачи, в результате чего возможно столкновение на линии и потеря пакета. Я думаю, что для Модбаса подобного рода повторители правильнее было бы конструировать в расчете на "обратные растяжки", когда по умолчанию линии с обеих сторон находятся в активном состоянии. В такой ситуации повторитель обязан "молчать", т.е. держать передатчики выключенными. Включать передатчики он может, если одна сторона активна, а вторая в течении достаточно большого времени пассивна. Понятно, что при этом повторитель "отъест" кусок паузы перед началом пакета, так что придется делать паузу длиннее, чем T35. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 19 октября, 2012 Опубликовано 19 октября, 2012 · Жалоба В первую очередь, должна быть обеспечена достаточная помехоустойчивость линии во всех ее рабочих состояниях. А какой протокол Вы далее будее использовать, с какой степенью помехоустойчивости - это вопрос второй... Так вот я и задаю вам этот самый второй вопрос. Правильно ли я понял, что персонально вы используете протоколы, которые рассчитывают на "помехоустойчивость линии во всех ее рабочих состояниях"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 19 октября, 2012 Опубликовано 19 октября, 2012 · Жалоба Да вы не обижайтесь. :) Хорошего человека должно быть много. :) ну здрасьте, счас все брошу и сяду обижаться :crying: А "большой мастер" - это тот, кто одну проблему успешно решает, а десять других - попутно создает. Причем, чаще всего, не себе, а другим людям. А, Вы опять про подтяжки и про борьбу за помехоустойчивость линии в те моменты когда она вообще никому не нужна.... Ну, право же, есть ведь гораздо более достойное приложение сил, чем изобретение хромающего протокола. Но это во мне борец с всемирной энтропией никак успокоится не может, грустно смотреть на людей, изобретающих изобретенное. Делайте что хотите, только, пожалуйста, не нужно убеждать начинающих, что Ваш путь- единственный возможный и самый правильный (я не про резисторы, а про стратегию подхода к решению задачи: изобретать свое там, где есть испытанные временем решения.) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться