Jump to content
Форум по продукции MOXA

NPort6450 "Атомарные" блоки данных по RS


Recommended Posts

Guest олег

Добрый день!

 

Возникла проблема с сабжем при решении след. задачи:

 

Имеется преобразователь 6450, несколько (два-три) компьютеров запрашивают по TCP/IP один и тот же RS порт в произвольные моменты времени.

Надо передать запрос от компьютера в порт (обычно 10-20 байт), дождаться ответа от присоединенного прибора, переправить блок ответа (10-300 байт) _только_ запросившему компьютеру. Сюда по мануалам, как раз работа для NPort 6ххх серии.

 

Примерная временная диаграмма прохождения пакета информации по RS порту прибора, максимальные длины пакетов известны.

ОС QNX4.25, драйвер "moxattyd".

 

При опции "Non-requested serial data: Discard" в компьютер доходит неполный пакет данных - обрыв блока информации где-то от 5 до 100 байта.

При опции "Non-requested serial data: Forward to last requester" в компьютер попадают части пакетов данных от запросов из других компьютеров.

 

Игры с настройками таймаутов, максимальной длины пакетов не помогли.

 

Вопрос в том, проверялась ли работа изделия в описанном режиме, имеется ли опыт успешного использования "Command by command operation"?

Такое ощущение, что ответ от прибора дробится на несколько пакетов, и только опция "Non-requested serial data: Forward to last requester" позволяет дослать отстатки пакетов запросившему (или уже другому [как повезет во времени]) компьютеру.

 

Можно добиться неделимости ("атомарности") ответов?

 

Ниже приведены настройки порта, при котором возможен устойчивый обмен с одним компьютером,

но при одновременном запросе от нескольких ПК возможна чересполосица по данным в доставляемых к ПК ответах.

 

Application: Device Control

Mode: RealCOM

TCP alive check time: 7

Max connection: 3

Ignore jammed IP: Enable

Allow driver control: Disable

Command by command operation: Enable

Secure: Disable

Connection goes down: RTS always high DTR always high

Response timeout: 500

Non-requested serial data: Forward to last requester

 

Data Packing

Packet length 1024

Force transmit 100

Link to comment

Force transmit 100 - скорее всего, это слишком много, лучше поставить 3-5 мс.

Packet length 1024 - вот это вообще зря, можно использовать только если вы знаете, что с COM-порта идут данные блоками по 1024 байта.

Попробуйте с такими настройками.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...