PDA

Просмотр полной версии : СПК107 & RS485



lazy
05.04.2022, 15:56
Добрый день!

Работаю СПК107 по порту RS485 используя библиотеку SysCom. Протокол НЕ modbus, то есть абонент отвечает сразу же после приема последнего байта запроса без паузы. Очень часто (раз-два раз в минуту где -то) от абонента приходит пакет без первых байта-двух. То-есть первые байты теряются при чтении RS портом самой СПК. С modbus'ом такого раньше не замечал.
Сами запись в порт и чтение (обращение к функциям библиотеки) разнесены по циклам и разница по времени конца записи и начала чтения где то 4ms.

Евгений Кислов
05.04.2022, 16:05
Добрый день!

Работаю СПК107 по порту RS485 используя библиотеку SysCom. Протокол НЕ modbus, то есть абонент отвечает сразу же после приема последнего байта запроса без паузы. Очень часто (раз-два раз в минуту где -то) от абонента приходит пакет без первых байта-двух. То-есть первые байты теряются при чтении RS портом самой СПК. С modbus'ом такого раньше не замечал.
Сами запись в порт и чтение (обращение к функциям библиотеки) разнесены по циклам и разница по времени конца записи и начала чтения где то 4ms.

Добрый день.
Как вы это определяете?
Сниффером шину смотрели?

lazy
05.04.2022, 17:28
Абонент (прибор) все посылает без ошибок. проверено на другом оборудовании и уже не раз.
А вот если ему в параметрах задать задержку ответа в несколько миллисекунд. то байты не теряются. Вот сейчас на одном порту абонент с задержкой ответа ошибок не дает, а на втором где ответ посылается в СПК без задержки - байты теряются.

Евгений Кислов
05.04.2022, 17:31
Абонент (прибор) все посылает без ошибок. проверено на другом оборудовании и уже не раз.
А вот если ему в параметрах задать задержку ответа в несколько миллисекунд. то байты не теряются. Вот сейчас на одном порту абонент с задержкой ответа ошибок не дает, а на втором где ответ посылается в СПК без задержки - байты теряются.

Тогда настройте и на втором абоненте задержку ответа - это же возможно в рамках вашей задачи?

lazy
11.04.2022, 17:31
Можно, конечно. Достаточно 1мс задержки. Просто протокол разрабатывался для "скорости". С ним можно выкачивать данные с АЦП который на 200Гц и выше шпарит без потерь. Есть режим у него когда на один (мой) запрос все слейвы по очереди отвечают и получается если на ветке например несколько приборов то можно было бы сэкономить время, а так на каждом потеря, хоть и не большая. Было бы не плохо если б поправили в будущем как нибудь )

Евгений Кислов
11.04.2022, 17:34
Было бы не плохо если б поправили в будущем как нибудь )

Чтобы поправить - нужно воспроизвести, а сделать это без вашего прибора, как я понимаю, не получится.