PDA

Просмотр полной версии : СПК210. Порты RS485.



LexSL
24.02.2025, 15:05
Добрый день!
Обращаюсь к разработчикам.
Опишу ситуацию.
Есть 3 штуки СПК210 (прошивка 3.6.0318.1402).

82154

Есть лазерный дальномер с выходом RS422.
Этот дальномер периодически шлет данные в порт (сам, без запросов со стороны).
Дальномер подключен к панели на порт RS485 линиями: Tx+ на D+(A), Tx- на D-(B).
Т.е. от панели не требуется ничего, кроме как читать данные с порта RS485.
Порты на панелях все рабочие (проверял через отдельный NPort, порты RS485 которого соединял с портами панелей -> пересылка данных работает, порты RS485 панелей в порядке).

На Codesys написан простенький проект, который открывает порт RS485 и читает данные из него (реализация при помощи SysCom: SysComOpen2, SysComRead).
Так вот: данные не приходят, SysComRead не возвращает данные в буфере, количество прочитанных байт ноль.
При этом, подключившись к панели через Putty, dmesg сыплет вот такими сообщениями:


[ 4642.843957] ttyS0: Frame error!
[ 4642.843988] ttyS0: maybe rx pin is low or baudrate is not correct!
[ 4643.103948] ttyS0: Frame error!
[ 4643.103978] ttyS0: maybe rx pin is low or baudrate is not correct!
[ 4643.363954] ttyS0: Frame error!
[ 4643.363984] ttyS0: maybe rx pin is low or baudrate is not correct!
[ 4646.483968] ttyS0: Frame error!
[ 4646.483998] ttyS0: maybe rx pin is low or baudrate is not correct!
[ 4646.743931] ttyS0: Frame error!
[ 4646.743960] ttyS0: maybe rx pin is low or baudrate is not correct!
[ 4647.263952] ttyS0: Frame error!
[ 4647.263982] ttyS0: maybe rx pin is low or baudrate is not correct!
[ 4648.564151] ttyS0: Frame error!
[ 4648.564193] ttyS0: maybe rx pin is low or baudrate is not correct!

Данные не приходят ни с одного порта RS485.

Подключил датчик к панели другой (СПК 110 М01), загрузил проект, все шикарно, данные идут, буфер заполняется.

Осциллограф, подключенный к линиями A и B на портах Rs485 панелей СПК210, относительно GND показывает вот такую картинку.
Видно, что уровни сигналов хорошие, фронты не завалены, датчик передает биты корректно (между визорами 10 бит, время 86,8мкс = 1/115200 - baudrate 115200).
82155

Итог: через Moxa UPort1150 (в режиме RS422), Nport отдельный, СПК110 М01- данные принимаются.
На СПК210 (на 3 штуках) на любых RS485 портах - нет.

Что посоветуете?

LexSL
24.02.2025, 16:11
Дополнение: добавил в программу запись в порт единоразово. так вот, когда запись произведена и началось чтение из буфера порта, то в ответ прилетает буфер данных, который потом не меняется. Выглядит это так: чтение завершено, количество прочитанных байт не нулевое, однако значения байтов в буфере не изменяются!
И сообщение в dmesg "Frame error...." появляется как раз тогда , когда происходит запись!
Причем, если прекратить чтение, потом закрыть порт, потом снова открыть и начать чтение, то данных в ответе нет до того момента, пока я не произведу запись в порт.
Тогда буфер данных появляется (обновляется по сравнению с предыдущим разом) и опять прием данных постоянно, но значения в буфере "заморожены", неизменяются.

Евгений Кислов
24.02.2025, 16:15
Добрый день.


Обращаюсь к разработчикам...
<...>
Что посоветуете?


Напишите, пожалуйста, завтра утром мне в телеграм (см. в подписи) - обсудим вашу ситуацию.