Перейти к содержанию
    

Гость @Ark
Как это сделать на ПК при наличии автоматических конвертеров USB-RS485 типа ftdi и им подобным? Я вот об этом задумался и что-то сразу в голове ответа не нашел... Если не найти ответа на этот вопрос то становится очевидным, что именно для modbus-rtu растяжки могут дать положительный эффект...

Можно и еще пару вопросов добавить: Как это сделать на ПК, работающем через в локальную сеть, при наличии конверторов Ethernet-RS485? Как это сделать на ПК, который через Internet-Ethernet-RS485 желает удаленно снимать данные с модбасовских устройств? Когда подобные задачи, наконец, встают перед приверженцами "мусорных" линий, любителями вручную "подергать" передатчиком RS485 и прочей экзотики, то, поверьте, "просветление в мозгах" наступает очень быстро... За исключением редких клинических случаев...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Серьёзно, чем в wake 0xC0 якобы лучше чем 0xF0 ? :wacko:

Вроде бы С0 в качестве байта синхронизации тоже подходит:

post-29684-1350573426_thumb.png

(Я не совсем уверен, что происходит после framing error. Ждёт ли приёмник единицы перед тем, как начать детектировать старт-бит?)

Но в в wake начало блока не C0C0, а просто C0. Вероятно, выбрали по каким-то другим причинам.

 

За исключением редких клинических случаев...

Ark, я не совсем понял, что же вы предлагаете? Полагаться на растяжки и не контролировать ошибки вовсе? (Вас уже спрашивал об этом Ruslan1, но вы этот вопрос технично проигнорировали.)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

(Я не совсем уверен, что происходит после framing error. Ждёт ли приёмник единицы перед тем, как начать детектировать старт-бит?)

Классические 16550 считают бит, на котором случился FE, стартовым для следующего фрейма. Что делает каждый конкретный МК - в общем случае неизвестно.

 

Но в в wake начало блока не C0C0, а просто C0. Вероятно, выбрали по каким-то другим причинам.

Это надо у товарища Romkey спросить.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

(Я не совсем уверен, что происходит после framing error. Ждёт ли приёмник единицы перед тем, как начать детектировать старт-бит?)

Но в в wake начало блока не C0C0, а просто C0. Вероятно, выбрали по каким-то другим причинам.

Не скажу за все конроллеры, но STM32 стартовым битом считает единицу за которой следует ноль, аналогично at91sam7. В ином случае такой медод начала кадра не будет работать. Что касается начального символа, то при таком подходе одинаково подойдут и FF и 00.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Классические 16550 считают бит, на котором случился FE, стартовым для следующего фрейма.

Хм. В этом случае и 0xF0 0xF0 не подходят:

post-29684-1350576159_thumb.png

 

Не скажу за все конроллеры, но 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно и еще пару вопросов добавить: Как это сделать на ПК, работающем через в локальную сеть, при наличии конверторов Ethernet-RS485? Как это сделать на ПК, который через Internet-Ethernet-RS485 желает удаленно снимать данные с модбасовских устройств? Когда подобные задачи, наконец, встают перед приверженцами "мусорных" линий, любителями вручную "подергать" передатчиком RS485 и прочей экзотики, то, поверьте, "просветление в мозгах" наступает очень быстро... За исключением редких клинических случаев...

Попробуйте применять конвертеры, у которых в описании есть фраза "with RTS/CTS support". А еще лучше "MODBUS RTU (ASCII) support" :)

То есть заточенные шлюзы, которые преобразуют MODBUS-RTU или ASCII во что-то другое. Например, в случае езернета я бы смотрел в сторону "Modbus TCP/IP to Modbus RTU Converter". По езернету гонять то, что для езернета разработано, по сериалу- то что для сериала. и так далее. Есть безобразное количество шлюзов из Модбаса куда попало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

недопонял - про битовую синхронизацию.
Радиомодему нужно несколько переходов 0-1-0-1 чтобы после шума "зацепиться" за границы битов.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

безобразное количество шлюзов из Модбаса куда попало.

:a14: Это фраза навеки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость @Ark
Ark, я не совсем понял, что же вы предлагаете?

В первую очередь, должна быть обеспечена достаточная помехоустойчивость линии во всех ее рабочих состояниях.

А какой протокол Вы далее будее использовать, с какой степенью помехоустойчивости - это вопрос второй...

Попробуйте применять конвертеры, у которых в описании есть фраза "with RTS/CTS support"...

... Есть безобразное количество шлюзов из Модбаса куда попало.

Это только "большие мастера" под каждый протокол, под каждый стык и под каждый свой "чих" специальные конверторы и шлюзы задействуют.

Остальные успешно пользуются универсальными преобразователями, не "заточенными" под какой-то один конкретный протокол...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это только "большие мастера" под каждый протокол, под каждый стык и под каждый свой "чих" специальные конверторы и шлюзы задействуют.

Остальные успешно пользуются универсальными преобразователями, не "заточенными" под какой-то один конкретный протокол...

Да я же не возражаю и не агитирую. И опять же это не я говорю о проблемах при переходе, например, из езернета :)

Мне за 10 лет ни разу не пришлось ничего кроме Модбас применять для RS-485. И зачем мне в таком случае универсальное "нечто"?

А, ну может про профибас еще хорошо бы подумать. Но опять же я их между собой шлюзом свяжу если что....

Но вопрос риторический, сколько людей-столько мнений...

 

А насчет "больших мастеров"- вы какой критерий применяете для дифференциации штанов? если по массогабаритам - то на маленького я точно не тяну... :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость @Ark
А насчет "больших мастеров"- вы какой критерий применяете для дифференциации штанов? если по массогабаритам - то на маленького я точно не тяну... :)

Да вы не обижайтесь. :) Хорошего человека должно быть много. :)

А "большой мастер" - это тот, кто одну проблему успешно решает, а десять других - попутно создает. Причем, чаще всего, не себе, а другим людям.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как это сделать на ПК при наличии автоматических конвертеров USB-RS485 типа ftdi и им подобным?

Конвертер USB-RS485 ничем особенно не отличается от конвертера RS232-RS485. В последних прием-передача задается явным образом при помощи одного из сигналов управления модемом, типа, RTS. У конвертора FTDI передатчиком управляет пин CBUS2 чипа FT232RQ. То есть, передатчик RS485 находится под полным контролем ПК, так что проблем никаких не наблюдается.

 

Наверное, вы попутали с "автоматическими" повторителями RS485-RS485, в которых направление передачи задается по появлению активного уровня на одной или другой стороне и некоторое время удерживается в выбранном положении одновибратором. К сожалению, такие повторители не способны обеспечить высокой помехоустойчивости, поскольку короткая помеха на "пассивной" стороне задаст неверное направление передачи, в результате чего возможно столкновение на линии и потеря пакета.

 

Я думаю, что для Модбаса подобного рода повторители правильнее было бы конструировать в расчете на "обратные растяжки", когда по умолчанию линии с обеих сторон находятся в активном состоянии. В такой ситуации повторитель обязан "молчать", т.е. держать передатчики выключенными. Включать передатчики он может, если одна сторона активна, а вторая в течении достаточно большого времени пассивна. Понятно, что при этом повторитель "отъест" кусок паузы перед началом пакета, так что придется делать паузу длиннее, чем T35.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В первую очередь, должна быть обеспечена достаточная помехоустойчивость линии во всех ее рабочих состояниях.

А какой протокол Вы далее будее использовать, с какой степенью помехоустойчивости - это вопрос второй...

Так вот я и задаю вам этот самый второй вопрос. Правильно ли я понял, что персонально вы используете протоколы, которые рассчитывают на "помехоустойчивость линии во всех ее рабочих состояниях"?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да вы не обижайтесь. :) Хорошего человека должно быть много. :)

ну здрасьте, счас все брошу и сяду обижаться :crying:

 

А "большой мастер" - это тот, кто одну проблему успешно решает, а десять других - попутно создает. Причем, чаще всего, не себе, а другим людям.

А, Вы опять про подтяжки и про борьбу за помехоустойчивость линии в те моменты когда она вообще никому не нужна....

 

Ну, право же, есть ведь гораздо более достойное приложение сил, чем изобретение хромающего протокола. Но это во мне борец с всемирной энтропией никак успокоится не может, грустно смотреть на людей, изобретающих изобретенное. Делайте что хотите, только, пожалуйста, не нужно убеждать начинающих, что Ваш путь- единственный возможный и самый правильный (я не про резисторы, а про стратегию подхода к решению задачи: изобретать свое там, где есть испытанные временем решения.)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...