УкраїнськаEnglishmRussian
Вход/Новый
В теме нет новых постов

Транспорт последовательного порта


Автор Сообщение
Сообщение создано: 13. 01. 2013 [13:00]
hyper_sonic
Роман Федоров
Создатель темы
Зарегистрирован(а) с: 13.09.2011
Сообщения: 13
Пытаюсь реализовать свой модуль доступа к оборудованию по последовательному интерфейсу. Столкнулся с некоторой особенностью.
Для связи с оборудованием используется преобразователь MOXA TCC100I rs232-422/485 и Noname эмулятор последовательного порта через USB на базе микросхемы prolific. Так вот если использовать один вызов функции MessIO как для отправки, так и для приема, то получаю в буфере последний байт исходящей посылке. Если разделить запрос и чтение из порта на два вызова MessIO и поставить между ними паузу 20ms, то все нормализуется...
Почему в приемном буфере оказывается переданные данные? Аппаратная проблема?

[Сообщение редактировалось 1 раз(а), в последний раз 13.01.2013 в 13:01.]
Сообщение создано: 13. 01. 2013 [13:29]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
"hyper_sonic" wrote:

Пытаюсь реализовать свой модуль доступа к оборудованию по последовательному интерфейсу.

Зачем модуль отдельный делать?

"hyper_sonic" wrote:

Столкнулся с некоторой особенностью.
Для связи с оборудованием используется преобразователь MOXA TCC100I rs232-422/485 и Noname эмулятор последовательного порта через USB на базе микросхемы prolific. Так вот если использовать один вызов функции MessIO как для отправки, так и для приема, то получаю в буфере последний байт исходящей посылке.

Аппаратная проблема управления потоком RS485. Например, есть такие устройства (сырые), которые при управлении потоком получают во входном потоке выходной запрос целиком, по факту чего определяется момент переключения устройства на приём.

Learn, learn and learn better than work, work and work.
Сообщение создано: 14. 01. 2013 [05:40]
hyper_sonic
Роман Федоров
Создатель темы
Зарегистрирован(а) с: 13.09.2011
Сообщения: 13
"roman" wrote:

"hyper_sonic" wrote:

Пытаюсь реализовать свой модуль доступа к оборудованию по последовательному интерфейсу.

Зачем модуль отдельный делать?

Я может выразился не правильно, мне нужно реализовать протокол работающий поверх последовательного канала.
В протоколе можно выделить транспортный и прикладной уровень. Таким образом в объектной модели OSCADA они соответствуют транспортному протоколу и модулю сбора соответственно. Причем считаю, что такое разделение функций позволит с дальнейшем использовать тот же транспортный уровень с другим прикладным.
"roman" wrote:

"hyper_sonic" wrote:

Столкнулся с некоторой особенностью.
Для связи с оборудованием используется преобразователь MOXA TCC100I rs232-422/485 и Noname эмулятор последовательного порта через USB на базе микросхемы prolific. Так вот если использовать один вызов функции MessIO как для отправки, так и для приема, то получаю в буфере последний байт исходящей посылке.

Аппаратная проблема управления потоком RS485. Например, есть такие устройства (сырые), которые при управлении потоком получают во входном потоке выходной запрос целиком, по факту чего определяется момент переключения устройства на приём.


Я не очень понимаю что такое сырое устройство.
Но на самом деле к такому же выводу пришел, указанная MOXA как раз с автоматическим определением потока, а 20мс требуются для определение направления передачи.


Сообщение создано: 14. 01. 2013 [10:32]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
"hyper_sonic" wrote:

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

Именно для этого и предназначен "Пользовательский протокол".

"hyper_sonic" wrote:

Я не очень понимаю что такое сырое устройство.

Сырое устройство как-раз и подразумевается под режимом управления "rts", здесь: http://wiki.oscada.org/Doc/Serial#h835-4 и которое
встречалось здесь: http://wiki.oscada.org/Using/PLC#h1086-5

"hyper_sonic" wrote:

Но на самом деле к такому же выводу пришел, указанная MOXA как раз с автоматическим определением потока, а 20мс требуются для определение направления передачи.

Это мягко говоря странно и неожиданно от MOXA, поскольку из порядка десятка подобных преобразователей на полудуплекс RS-485 такого безобразия я ещё не встречал.
Кроме того 20мс на ожидание это крайне жёстко и общая скорость упадёт ниже плинтуса, и это ни разу не исправляет прохождение части запроса на входной буфер.

Learn, learn and learn better than work, work and work.



3034