PDA

Просмотреть полную версию : Загрузка программ через RS-485. Почему может быть неустойчивой или невозможной


Arsie
09.07.2013, 14:37
Загрузка программ через RS-485

Почему может быть неустойчивой или невозможной

Сначала разберёмся в термине "Загрузка через RS-485". Стандарт EIA-485, по сути, определяет лишь уровни напряжений на линии. Производители конкретного оборудования сами придумывают логический протокол общения устройств между собой и с компьютером. Без определенных правил общения нельзя – ведь RS-485 является полудуплексным портом, все устройства могут и принимать и передавать информацию по одной и той же паре проводов, а потому должны быть строгие правила, т.е. протоколы – когда, кто и что передает. И пока один передает, все остальные обязательно слушают. Самое распространенное решение – система мастер-слейв (по-русски ее называют ведущий-ведомый). Суть системы в том, что один прибор, мастер, решает кто, что и когда будет передавать. Изначально все слейвы (ведомые) слушают, и если мастер обратился к ним, то отвечают ему на его обращение. А пока мастер к ним не обратится – сидят и не высовываются. У разных производителей бывают разные протоколы. У одного производителя, например, это Modbus. У другого – Profibus. У третьего MoyKrutoyBus. Поэтому нет такого понятия, как "Загрузка через RS-485". Это примерно как сказать "Я появился у вас дома через отверстие" и не уточнить, дверь это была, окно или пролом в стене. А может быть вы – добрый Санта и проникли в дом через каминную трубу. Никто этого не знает, могут лишь догадываться с разной степенью достоверности.

Контроллеры Segnetics используют для работы через RS-485 протокол Modbus-RTU. Соответственно и загрузка программы тоже происходит посредством этого протокола, со всеми его достоинствами и недостатками.

Начнем с самого распространенного варианта: преобразователя RS-232 в RS-485. Суть проблемы в том, что, как упомянуто выше, в каждой системе приняты свои способы как решать, кто сейчас должен передавать данные и в каком направлении. Конвертер RS-232/485, выпущенный уважаемой фирмой из континентального Китая, конечно, не знает, как устроен высокоуровневый протокол общения в системе, куда вы его применяете. RS-232, к сожалению, изначально предназначен для передачи данных в разные стороны по разным проводам, а потому ваш компьютер, к которому вы подключили конвертер, ВСЕГДА что-то передает по RS-232. Конечно, чаще всего он передает "тишину", но конвертер не настолько умен, чтобы отличить "тишину" от длинной последовательности единиц. В большинстве случаев конвертер устроен просто: пока данные, передаваемые со стороны компьютера, меняются – он транслирует их на канал RS-485. Как только компьютер задумался – конвертер отключает свой передатчик и слушает, что передают другие. Такие паузы очень нежелательны.

А теперь немного утешительных слов. Конвертеры USB/RS-485, а также конвертеры Ethernet/RS-485 работают значительно более надежно, поскольку USB и Ethernet – очень грамотно стандартизованные протоколы, они содержат в себе всю необходимую информацию: когда, и какая информация, в какую сторону передается. Единственная проблема – Ethernet может добавлять непредсказуемую задержку при передаче данных, а многие протоколы типа мастер-слэйв, работающие по RS-485 и не знающие о наличии промежуточных конвертеров при передаче сигнала, воспримут задержку как потерю связи. В локальной сети при небольшой её загрузке это пройдет, а если вы примените такие конвертеры для передачи через Интернет – скорее всего, ничего не получится.

Особняком стоят особенно "хитрые" китайские производители. Их конвертеры для удешевления могут быть построены из самых распространённых и устаревших компонентов: вместо прямого преобразования из USB в RS-485 происходит сначала преобразование в RS-232, а затем уже из RS-232 в RS-485. Это вызывает за собой все те эффекты, описанные двумя абзацами ранее и добавляет новые - задержки каждого этапа преобразования суммируются и вероятность надёжной работы часто уменьшается практически до нуля.

Абсолютно аналогично обстоит дело и с передатчиками RS-485 по радиоканалу или по оптоволокну. Не существует гарантированного алгоритма, по которому конвертер RS-485 в другую среду передачи данных может догадаться, когда в какую сторону он должен передавать данные. По свидетельству сотрудника фирмы, производящей конвертеры: "При производстве конвертеров RS-485 в оптоволокно за несколько лет по требованиям разных клиентов для разных систем мы встроили в устройство 6 (шесть!) разных алгоритмов. Не от хорошей жизни. Каждый новый алгоритм оказывался единственным, работающим в очередной системе".

То же самое относится и к "мостам" или "репитерам". Подобные устройства могут работать лишь в очень ограниченном числе случаев, и только если "репитеры" произведены тем же производителем, что и остальные RS-485 устройства в системе. Тогда эти "репитеры" будут точно "знать", когда переключаться с приема на передачу и смогут работать, хотя бы даже в некоторых условиях. Как вариант, "репитеры" могут быть приспособлены к работе с определёнными протоколами и "играть" по нужным правилам, принятом в этом конкретном протоколе.

Arsie
10.07.2013, 09:57
Конвертеры, с которыми никогда не было никаких проблем:

ICP CON i7561 (USB <> RS-485)

ICP CON i7520 (RS232 <> RS-485)

Moxa Uport1150 (USB <> RS-485)

Что делать, если Uport не работает? (http://forum.segnetics.com/showthread.php?t=2136)