Просмотр полной версии : Приём данных по нестандартному протоколу
Добрый день. Мне нужно получать данные по RS485. Протокол строковый. На порт СПК подключен прибор, который периодически отсылает строку. Но СПК её не видит. Параллельно порту СПК подключил преобразователь RS485/USB, для мониторинга порта- строка от прибора приходит.
Формат строки 'M43523$R'.
Пробовал библиотеки OwenCommunication и SerialCommunication.
Евгений Кислов
03.06.2020, 10:08
Добрый день. Мне нужно получать данные по RS485. Протокол строковый. На порт СПК подключен прибор, который периодически отсылает строку. Но СПК её не видит. Параллельно порту СПК подключил преобразователь RS485/USB, для мониторинга порта- строка от прибора приходит.
Формат строки 'M43523$R'.
Пробовал библиотеки OwenCommunication и SerialCommunication.
Добрый день.
Для выполнения ФБ COM.Read нужно использовать вход xExecute (вы, видимо, удалили его вручную).
Спасибо, Евгений. Попробовал49439 но данных всё равно нет.
Так-же пробовал работать через библиотеку 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.
Евгений, спасибо за помощь. Разобрался: запрос-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 изначально не планировалась.
Но на практике, по-моему, сложно найти устройство, которое может работать только с таким количеством стоп-бит.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot