Проблема с управлением блоком BMSD по интерфейсу RS-485
 

Проблема с управлением блоком BMSD по интерфейсу RS-485

Автор SLT, 16 января 2013, 11:08:30

« назад - далее »

SLT

Здравствуйте.

Нужна Ваша помощь.

Не получается управлять BMSD по RS-485.

Кнопкой  блок  управляется,  старт/стоп работает, скорости и ускорения
регулируются.

В дежурном режиме блок не реагирует на команды по RS-485. Пробовал как
управлять от микроконтроллера так и от преобразователя USB-RS485.

При  вкл.  питания  блок  моргнул светодиодами и все погасли, согласно
паспорту у блока не установлен адрес. Даю команду установки адреса
(0xE6  0xFF  0xA0  0x01  0x93)  -  ответа  нет,  светодиод  моргать не
начинает.

Пробую делать опрос состояния - команда (0xE6 0xFF 0x50 0x5A) - ответа
нет,  но если запустить двигатель кнопкой  - блок отвечает на запрос и
выдает свое состояние (только во время движения двигателя).

На команду запуск двигателя (0xE6 0xFF 0x51 0x00 0x61) - не реагирует.
Но если при работающем двигателе дать команду выхода в дежурный режим
(0xE6 0xFF 0x52 0x00 0x34) - останавливает двигатель.

Посылки  на  блок по RS-485 идут, смотрел осциллографом. Блок на линии
один, длина линии ~ 20см. Терминальный резистор ставить пробовал.
Предполагается  совместная  работа  двух  блоков,  так  что  адрес  им
назначать нужно.

Есть ли у Вас программа управляющая блоком с PC и можно ее получить?
Я написал передаваемые команды - может там ошибки у меня?
Если  можно  -  то  хотелось  бы получить исходный текст программы для
управления блоком.

Administrator

9 января Вам был отправлен подробный ответ и программа на электронную почту. Вы получили его?


Вы неправильно считаете контрольную сумму при установке адреса блока.

Для установки блоку адреса 0х01 контрольная сумма 0x62.
Строка будет 0xE6 В 0xFF В 0xA0 В 0x01 В 0x62

Блоку с адресом $FF никаких команд, кроме установки адреса, давать нельзя.

Если бы было можно, то в строках 0xE6 0xFF 0x50 0x5A, 0xE6 0xFF 0x51 0x00 0x61 и 0xE6 0xFF 0x52 0x00 0x34 контрольная сумма посчитана правильно.

SLT

Большое спасибо за ответ.
Письмо не получал. Не могли бы вы еще раз его послать и по старому адресу и по адресу из моего профиля.

Administrator

Копия отправлена на почту из Вашего профиля.

Boris_K

Такая же проблема, такой же блок BMSD. Подозреваю что дело в контрольной сумме. На каком языке написан пример программы для её расчёта (который в инструкции http://electroprivod.ru/pdf/BMSD-pasp.pdf)? Например, что это за операторы ">>=" и "|=" ? Гугл при вводе этих операторов не находит вообще ничего. Объясните пожалуйста, как блок считает этот несчастный байт CRC.

Boris_K

Вроде это С, а "x >>= 1" значит "x = x >> 1" (в х присваивается результат побитового сдвига х вправо на 1), всё верно?

Boris_K

Всё, воспроизвёл расчёт CRC на нужном языке, помощь не нужна, всё отлично работает.