Страница 1 из 2

Протокол обмена DiBUS

СообщениеДобавлено: 19.04.2011, 08:50:07
DimonK
Здравствуйте!
Я бы хотел задать вопрос по поводу протокола обмена DiBUS. Как с ним работать? Требует ли он установки специфических драйверов, чтобы линуха понимала его( ПК - датчик РГБ)? И, не сочтите за наглость, может кто-нибудь из сообщества работал с этим протоколом и может дать пример обмена по этому
протоколу :roll:...

С уважением, Дмитрий.

Re: Протокол обмена DiBUS

СообщениеДобавлено: 24.05.2011, 08:19:06
cthulhu
Протокол DiBUS не требует никаких специфических драйверов. Он работает как протокол логического уровня для протокола RS-232/422/485, таким образом вы можете использовать обычный СОМ порт устройства, подключаемого к РГБ. В линукс необходимо учитывать свои особенности но в целом все сводится к чтению записи в файл. Физические настройки протокола (скорость, бит паритета и тд) можно посмотреть в описании протокола http://www.doza.ru/files/dibus.zip, в архиве также вы найдете программу тестирования обмена и пакетов.

Re: Протокол обмена DiBUS

СообщениеДобавлено: 04.03.2013, 13:45:46
v-a-l
А всё-таки можно пример взаимодействия? Хотя бы процедура поиска и регистрации ведомых устройств.
Составляю пакет согласно описанию протокола (ссылка приведена в предыдущем посте), отправляю его в порт, а в ответ тишина, хотя сказано, что ведомые устройства должны ответить в любом случае. Через программу тестирования получаю тот же результат - молчание в ответ. Но при этом программа "tetra checker" работает на той же машине, в том же сеансе и с теми же настройками com-порта нормально. Значит, что-то я делаю не так.

Re: Протокол обмена DiBUS

СообщениеДобавлено: 04.03.2013, 17:00:44
Volkodavchik
Чтобы Вам помочь нужно знать:
1. С каким именно устройством Вы работаете?
2. На какой скорости обмена?
3. Используете ли Вы аппаратный(на борту ПК) КОМ-порт или различные переходники?

Если Вам нужен пример кода отправки посылки - сообщите, пожалуйста, на каком языке программирования Вам необходим пример?

Все это вместе значительно ускорит поиск того - что именно мешает Вам наладить обмен с точкой контроля.

Re: Протокол обмена DiBUS

СообщениеДобавлено: 04.03.2013, 17:13:24
v-a-l
1. БГМД-200
2. 9600
3. бортовой ком-порт с переходником (уточню завтра детали, но для тетра-чекера эта схема подключения сложностей не составила)
4. язык c#

Да, ещё можно алгоритм подсчёта контрольной суммы привести тоже на c#? Насколько понял, в паскалевском коде используется функция ротации бит, в Си есть только сдвиг. Похоже ещё и в данном месте у меня ошибка, т.к. контрольные суммы, расчитанные моей функцией, отличаются от посчитанных тестовой программой "dwptest".

Re: Протокол обмена DiBUS

СообщениеДобавлено: 05.03.2013, 12:01:28
Volkodavchik
Спасибо за оперативный ответ.
Итак, блок детектирования БДМГ-200. Какой интерфейс - RS-485(ПД) или RS-422(ДД)?
Далее - уточните еще раз - у Вас прямой аппаратный COM порт - или эмулятор, переходник? Если используете какой либо адаптер - то сообщите какой именно.
К сожалению, примера кода контрольной суммы на c# нет. В языке Си используется побитовый сдвиг, пример ниже:

DWORD CalculateCRC(const char* array, const size_t size)
{
static dword _CRC_;
static word i;
i = size & 1;
_CRC_ = (i) ? array[0]:0;
for(; i < size; i += 2)
{
_CRC_ = (_CRC_ << 5) + (_CRC_ >> ((4 * 8) - 5));
_CRC_ ^= ((((dword)array[i]) << 8) + (dword)array[i + 1]);
}
return _CRC_;
}

Re: Протокол обмена DiBUS

СообщениеДобавлено: 05.03.2013, 13:39:51
v-a-l
Вам спасибо )

Точные модели интерфейсов детектора и переходника скажу завтра. На материнской плате компьютера присутствует "честный" rs-232, к нему через переходник rs-232<->rs-485 подключен блок детектирования.

Re: Протокол обмена DiBUS

СообщениеДобавлено: 06.03.2013, 06:18:21
v-a-l
Конвертор: ADAM 4520 RS-232 to RS-422/RS-485 isolated converter
Детектор: БДМГ-200ПД, RS-485

Re: Протокол обмена DiBUS

СообщениеДобавлено: 11.03.2013, 15:29:21
Volkodavchik
Спасибо за подробную информацию. Если Вам будет необходима консультация по какому-либо из вопросов наладки обмена с точкой контроля - смело задавайте свой вопрос.

Re: Протокол обмена DiBUS

СообщениеДобавлено: 11.03.2013, 16:02:30
v-a-l
v-a-l писал(а):А всё-таки можно пример взаимодействия? Хотя бы процедура поиска и регистрации ведомых устройств...

Вот мой вопрос.

Re: Протокол обмена DiBUS

СообщениеДобавлено: 12.03.2013, 09:44:31
Volkodavchik
Спасибо за вопрос.
БДМГ-200 ПД в зависимости от версии ПО имеет разные регистры для опроса по протоколу DiBUS.
БДМГ-200 не поддерживает регистрацию в сети, по умолчанию считает себя зарегистрированным устройством. Поэтому процедуру регистрации можете опустить и не использовать.
Мы можем помочь Вам с описанием регистров для опроса, но с Вас нужна версия ПО прошитого в блок детектирования. Подключите блок к TETRA_Checker и слева внизу в графе статические параметры сможете ее найти.

Re: Протокол обмена DiBUS

СообщениеДобавлено: 12.03.2013, 11:23:17
v-a-l
Версия ПО: 3.1.138.20080915

Описание регистров есть в прилагаемой инструкции по эксплуатации. Мне непонятно, как из своей программы их использовать. Поэтому и прошу внятный пример, желательно на C#.
Как получить вот эту самую версию ПО? Как устанавливать значения регистров, допускающих запись в них?

Re: Протокол обмена DiBUS

СообщениеДобавлено: 12.03.2013, 14:18:08
Volkodavchik
Спасибо за информацию о версии ПО.
К сожалению, наш отдел программирования не практикует разработку на языке С#, поэтому код предоставить нет возможности.
Если описание регистров у Вас уже есть, то в конце этого документа есть раздел "Примеры пакетов", там наглядно указано на какой запрос ведущего какой следует ответ ведомого устройства.
В общем случае - Вам необходимо правильно сформировать запрос, отправить его на скорости 9600 в блок детектирования и ожидать ответ от ведомого устройства. Если запрос корректный - то обязательно получите ответ.
Для начала убедитесь, что запрос PING с широковещательным адресом у Вас проходит без проблем - 00 00 00 01 01 01 04 01 00 00. Это побайтовая форма запроса.

Re: Протокол обмена DiBUS

СообщениеДобавлено: 13.03.2013, 05:28:13
v-a-l
К устройству прилагалась книжка "Блоки детектирования БДМГ-200. Руководство по эксплуатации. ТЕ2.328.029РЭ". Версия 3 30.03.2010. Примеров пакетов в ней не нашёл, только описания регистров, с которыми, повторюсь, не знаю чего делать. Буду признателен, если приведёте примеры пакетов здесь, либо дадите ссылку на документ, в котором они имеются.

Ваш пример "ping" сработал - устройство откликнулось. Спасибо.

Re: Протокол обмена DiBUS

СообщениеДобавлено: 13.03.2013, 08:35:09
admin
Вот ссылка на файл с регистрами для БДМГ-200 с версии ПО 3.1
http://tetra.ua/docs/registers/registers_BDMG-200_v3.1.pdf