LINUX.ORG.RU

rs485 и astra-linux

 


0

1

добрый день. у меня имеется 2 компьютера, под управлением ms windows 7 и astra linux с ядром 3.2.0.27 на астре скорость порта не ставится выше 115200. при этом на двух компах отлично идет передача данных. при попытке сменить baud_base с помощью setserial с 115200 на 921400 передача нарушается(приходит совсем не то что я посылаю), причем в программах скорость стоит та же самая 115200.

при замыкании двух портов rs485 друг на друга (пк с Astra-linux) сообщения передаются в нормальном виде.

на пк с windows 7 стоит advantech 1602, а astra linux стоит на cpc308 от fastwell. и там и там есть поддержка скоростей до 921600.

так вот что я делаю не так?

в системе поты отображаются как : ttyS3 at i/o 0x2E8 (irq = 3) is a 16550A ttyS2 at i/o 0x3E8 (irq = 4) is a 16550A проюывал менять 16550А на 16550 - плата перестает передавать данные а 16850 ведет себя так же как и 16550А


921400

Правильно. Нет такой скорости:

less /usr/include/bits/termios.h
...
#define  B576000  0010006
#define  B921600  0010007
#define  B1000000 0010010

921600 — правильная.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

прошу прощения, это я опечатался.

изначально команда stty -F /dev/sttyS3 921600 пишет что невозножно выполнить запрошенные действия . после ввода setserial /dev/ttyS3 base_baud 921600 , stty выполняется нормально.

вывод информации через stty показывает что текущая скорость 921600.

но передаваемы даные каверкаются.

kuzya0
() автор топика
Ответ на: комментарий от kuzya0

А если просто терминал открыть с нужной скоростью (com из tinyserial, screen или свой велосипед)? И что после ошибок пишет dmesg?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от kuzya0

И да, какая длина линии связи и нет ли мощных источников помех (хотя, я не знаю, чем можно 485-й забить).

Eddy_Em ☆☆☆☆☆
()

Насколько длинный кабель и как он согласован? Для таких скоростей уже нельзя взять любой кусок провода на полкилометра.

Elyas ★★★★★
()
Ответ на: комментарий от Eddy_Em

длинна линии около 10-15м. лежит на полу. был сильный источник помех, но его уже экранировали.

линия получается точка-точка, полудуплекс.

но ведь если есть помехи, тогда бы и на скорости 115200 были сбои. не говоря уже о скоростях выше.

и когда я ставлю base_baud равным 921600 или 230400. то на любой скорости выставляемой в моей программе искажаются данные, будь то 9600 или 115200.

в dmesg есть: setserial sets custom speed on ttyS3. This is deprecated. но я пока не смог воспрооизвести ситуацию в которой она вновь появится.

kuzya0
() автор топика
14 апреля 2016 г.

Понимаю, что это мертвый тред. Но чем у вас в итоге все закончилось? Я в таком случае бы осциллографом посмотрел, какая на самом деле скорость на линии.

skvorli
()
Ответ на: комментарий от skvorli

http://www.manualslib.com/manual/993185/Fastwel-Cpc308.html?page=33#manual

http://www.manualslib.com/manual/993185/Fastwel-Cpc308.html?page=15#manual

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.