Українська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
Повідомлення: 3750
"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
Повідомлення: 3750
"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.



22852