PDA

Просмотр полной версии : Четность! А как собственно проще?



Дмитрий Артюховский
25.03.2008, 15:08
Добрый день! Управляемое устройство использует 9 бит (четность) для распознавания адреса. Есть ли возможность устанавливать 9 бит без шманцев с параметрами порта? Менять настройки порта после посылки каждого байта очень грусно ((((. И ведь даже MARK SPACE не использовать((( И где искать функцию установки параметров порта INITCOM из библиотеки UNM. В описании библиотеки функция есть, а в самой библиотеке нету.... библиотека свежая с сайта.

Филоненко Владислав
25.03.2008, 16:48
Unm настаивается через конфигурацию и на ходу менять чётность нельзя.

Дмитрий Артюховский
27.03.2008, 10:55
А вот и не угадали! Структура параметров порта из библиотеки SysLibCom меняет параметры на лету.... вот и приходиться открывать порт RS-485 через библиотеку UNM, и использовать функции этой библиотеки для пересылки данных, а параметры менять через SysLibCom.... поскольку использовать 485 через Sys.... никак не получается, ну не открывает эта библиотека нулевой порт! А порт с именем COM1:=0 вообще срывает крышу Codesys-у и остальным. При использовании в качестве номера порта переменной типа BYTE с нулевым значением проходит трансляцию но не работает.

Филоненко Владислав
27.03.2008, 12:23
485 прекрасно работает через SysLibCom.
Про UNM - в самой библиотеке нет настройки параметров, но обходными путями можно...но не нужно, т.к. возможен конфликт. Или UNM, или SysLibCom

Аркадий
01.04.2008, 17:09
И ведь даже MARK SPACE не использовать((( И где искать функцию установки параметров порта INITCOM из библиотеки UNM. В описании библиотеки функция есть, а в самой библиотеке нету.... библиотека свежая с сайта.

есть такие вредные устройства ).
марк спэйс использовать не обязательно. достаточно разобраться, что такое четность. надо считать четность самому, и затем устанавливать чет или нечет в порту. у меня так сделано на i7188. если надо, могу примерчик дать. )
через SysLibCom все порты Овена нормально работают, Port:= 0, 1, 4. Константы PORTS лучше не использовать на мой взгляд - для контроллеро-независимости.

Дмитрий Артюховский
09.04.2008, 16:20
Как это сделать на другом контроллере я знаю ))). Мне на ПЛК-100 нужно 9-битную передачу, с управляемым моей программой 9 битом (который должен быть ни разу не четностью!), организовать.

Аркадий
10.04.2008, 09:02
Как это сделать на другом контроллере я знаю ))). Мне на ПЛК-100 нужно 9-битную передачу, с управляемым моей программой 9 битом (который должен быть ни разу не четностью!), организовать.

я ж и пытался объяснить как это сделать...
надо посчитать, сколько бит=1 в байте, и потом сделать настройку четности в порту одд или евен, учитывая что нужно получить на выходе. при этом уарт сам высчитает и подставит нужный 0 или 1 в 9-ю позицию( бит четности).

Дмитрий Артюховский
10.04.2008, 09:54
да конечно, так можно, так и пытаемся делать..... только в этом случае нужно делать перенастройку порта после каждого байта...... а документация на ПЛК утверждает что после перенастройки порта нужна пауза 1-2 мс..! это же с какой скоростью идет обмен, плюс протокол обмена не допускает таких перерывов между байтами и приходиться дополнительно ошибки давить.... вот найти бы регистр куда этот 9 бит вставлять!!! на всех уартах такое есть, тока на ПЛК его не документируют почему-то... а времени на поиски нет.... делаю буферный контроллер, заодно уровни электрически посрягу правильно

Филоненко Владислав
10.04.2008, 10:10
Аппаратно выдавать 9 бит всё же можно, но очень геморно. Реализуем, но не очень быстро.
Также в сл. прошивке добавим возможность делать Mark/Space, но это не изменит существенно ничего. т.к. после каждого байта придётся менять настройки.

Сергей71
10.04.2008, 11:16
...на всех уартах такое есть...
Не знаю как на всех. Но уменя была задача на компе организовать такое, приходилось каждый раз открывать и закрывать порт. Я страшно ругался на того кто придумал такой протокол и засунул в железо на проце 8051(там это было аппаратно). Опрос был медленный.
Мой совет поискать другое оборудование и заменить.