PDA

Просмотр полной версии : Приём данных по нестандартному протоколу



Verbi
03.06.2020, 09:59
Добрый день. Мне нужно получать данные по RS485. Протокол строковый. На порт СПК подключен прибор, который периодически отсылает строку. Но СПК её не видит. Параллельно порту СПК подключил преобразователь RS485/USB, для мониторинга порта- строка от прибора приходит.
Формат строки 'M43523$R'.
Пробовал библиотеки OwenCommunication и SerialCommunication.

Евгений Кислов
03.06.2020, 10:08
Добрый день. Мне нужно получать данные по RS485. Протокол строковый. На порт СПК подключен прибор, который периодически отсылает строку. Но СПК её не видит. Параллельно порту СПК подключил преобразователь RS485/USB, для мониторинга порта- строка от прибора приходит.
Формат строки 'M43523$R'.
Пробовал библиотеки OwenCommunication и SerialCommunication.

Добрый день.
Для выполнения ФБ COM.Read нужно использовать вход xExecute (вы, видимо, удалили его вручную).

Verbi
03.06.2020, 14:32
Спасибо, Евгений. Попробовал49439 но данных всё равно нет.

Verbi
03.06.2020, 14:40
Так-же пробовал работать через библиотеку OwenCommunication.49440
Стоит немного другая задача, но очень похожая:
На прибор отправляю строку: 'M00000$R'
Прибор отвечает: '010123_0_01545.32_00032.55_0283_045$R'
Также слушаю порт через RS485/USB. От СПК к прибору запрос приходит, прибор отвечает. Но блок SerialRequest ответ не видит.

Евгений Кислов
03.06.2020, 14:43
Вы в одном месте написали LEN вместо нужного там SIZEOF. Пожалуйста, посмотрите внимательно документацию и примеры.

Евгений Кислов
03.06.2020, 14:45
Спасибо, Евгений. Попробовал49439 но данных всё равно нет.

Потому что вы вызвали блок только один раз.
Надо вызывать его циклически (генерацией передних фронтов на входе xExecute).

Важный момент - TRUE на xDone не значит, что получены новые данные - это значит, что очередное обращение к буферу COM-порта завершилось успешно.
При этом буфер может быть пустым.
Факт приема новых данных можно отследить по выходу szSize.

Verbi
04.06.2020, 12:00
Евгений, спасибо за помощь. Разобрался: запрос-LEN, ответ SizeOF. Прибор опрашивается.

Единственный момент- Блок Сom_Control. При выборе 1,5 стоп-бита- не открывает порт (Wrong Parametr).

Евгений Кислов
04.06.2020, 12:51
Евгений, спасибо за помощь. Разобрался: запрос-LEN, ответ SizeOF. Прибор опрашивается.

Единственный момент- Блок Сom_Control. При выборе 1,5 стоп-бита- не открывает порт (Wrong Parametr).

Да, увидел проблему - библиотека CAA Serial (которую использует OwenCommunication) не может открыть порт с 1.5 стоп битами.
Судя по баг-трекеру CODESYS - поддержка этого режима в системе исполнения для Linux изначально не планировалась.
Но на практике, по-моему, сложно найти устройство, которое может работать только с таким количеством стоп-бит.