Jump to content
Форум по продукции MOXA

Recommended Posts

Имеется плата CP-132EL, для обмена  по rs485 с внешним устройством необходимо в начале передачи сформировать сигнал BREAK длительностью 120-150 микросекунд. Функция sio_break_ex() принимает длительность в миллисекундах. Не подскажите ли как можно "победить"? Возможно есть другие пути решения задачи. Спб.

Link to comment

Комрад, если я верно помню то ВREAK это 0 в течении 10-12 периодов опроса, - поэтому может и послать 12 нулей логических в буфер.

 

Link to comment

Комрад, если я верно помню то ВREAK это 0 в течении 10-12 периодов опроса, - поэтому может и послать 12 нулей логических в буфер.

 

BREAK - "низкий уровень", если послать 12 нулей - то в конце каждого будут СТОП-БИТЫ ((

Link to comment

тогда просвети, т.е. если я так сделаю 

 

int fd = open("/dev/ttyS0", .... );

...

uint8_t buff [12];

bzero( buff, sizeof(buff) );

write( fd, buff, sizeofg(buff) )

 

То на уровне физики у меня будет сформировано 12 посылок, и каждая из них будет обернуты в старт-стоп биты? ( и биты ли) 

И кто в этом случае будет выступать в качестве признака пустого канала?  

 

Ну или если много буков - то ткните в первоисточник.

Заранее благодарен.

 

 

Link to comment

тогда просвети, т.е. если я так сделаю 

 

int fd = open("/dev/ttyS0", .... );

...

uint8_t buff [12];

bzero( buff, sizeof(buff) );

write( fd, buff, sizeofg(buff) )

 

То на уровне физики у меня будет сформировано 12 посылок, и каждая из них будет обернуты в старт-стоп биты? ( и биты ли) 

И кто в этом случае будет выступать в качестве признака пустого канала?  

 

Ну или если много буков - то ткните в первоисточник.

Заранее благодарен.

 

именно так все и будет )) еще может добавиться бит четности, все как и в 232 - стартовый бит + биты данных (5, 6 или 8) + бит паритета (0 или 1) + стоповый бит (1 ,1.5 или 2)

 

 

"первоисточник" в гугле ))

 

 

Link to comment

Есть предложение всё таки попробовать передавать требуемое кол-во 0, только делать это на другой (проще - на пониженной) скорости, дабы со стороны 485 это выглядело как бы "ошибкой"...

Link to comment

Есть предложение всё таки попробовать передавать требуемое кол-во 0, только делать это на другой (проще - на пониженной) скорости, дабы со стороны 485 это выглядело как бы "ошибкой"...

 

тоже вариант, только "переключение скоростей" у меня почему-то довольно медленно срабатывало ((

 

п.с. может кто научит - как посмотреть все это дело осцилографом, есть под рукой GDS-820 )

Link to comment

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

 

По столь крутой модели - вот не подскажу..

Link to comment

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

 

По столь крутой модели - вот не подскажу..

 

как то все сложно ((

 

а вообще можно как-то программно управлять уровнями на выходе порта?

Link to comment

Нет конечно. Это же всё-таки интерфейсный порт, а не аналоговый выход...

 

почему ж? уровнями rs 232 порта на компе можно управлять, можете даже диод повесить ))

Link to comment

 

Нет конечно. Это же всё-таки интерфейсный порт, а не аналоговый выход...

 

почему ж? уровнями rs 232 порта на компе можно управлять, можете даже диод повесить ))

 

 

Мда? То есть можно сформировать скажем +11В, а можно и +12? Если не секрет - и какой драйвер позволяет так делать (я про микросхему)?

Link to comment

 

 

Мда? То есть можно сформировать скажем +11В, а можно и +12? Если не секрет - и какой драйвер позволяет так делать (я про микросхему)?

 

 

почти так, если не ошибаюсь по напряжениям - для ком-порта 12 В, соответственно можно получить +12В или 0В на конкретном выводе, например DTS

 

все подробности в гугле ))) очень много букв ) под ДОС раньше совсем все прост было, пишешь в порт значение, каждый бит которого соответствует регистру порта

Link to comment

Ну да, только это называется управлением логическим уровнем, и используя разные пины (не обязательно предназначенные для управления потоком) можно получать +12, 0, -12 (условно говоря, в зависимости от драйвера), но уж никак не управлять собственно самим уровнем. И, помимо наличия пинов для управления потоком - в 232 есть собственно break в явном виде, которого нет в 485. А 485 с break - это уже dmx какой-то получается по физике.

Link to comment

Ну да, только это называется управлением логическим уровнем, и используя разные пины (не обязательно предназначенные для управления потоком) можно получать +12, 0, -12 (условно говоря, в зависимости от драйвера), но уж никак не управлять собственно самим уровнем. И, помимо наличия пинов для управления потоком - в 232 есть собственно break в явном виде, которого нет в 485. А 485 с break - это уже dmx какой-то получается по физике.

под "управлять уровнем" я имел ввиду - задавать значение "1" или "0" в нужный момент, а не только посылать в буфер последовательности байт )))

 но не сложилось

DMX -  именно это я и пытался сделать с помощью СР-132 ))) но не сложилось видимо, а получилось на китайском конвертере USB-RS485 с FTDI + MAX внутри

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...