EnglishУкраїнськаmRussian
Login/New
Topic with no new replies

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


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

[This article was edited 1 times, at last 13.01.2013 at 13:01.]
Written on: 13. 01. 2013 [13:29]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 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.
Written on: 14. 01. 2013 [05:40]
hyper_sonic
Роман Федоров
Topic creator
registered since: 13.09.2011
Posts: 13
"roman" wrote:

"hyper_sonic" wrote:

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

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

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

"hyper_sonic" wrote:

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

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


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


Written on: 14. 01. 2013 [10:32]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 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.



2404