Изучаем USB релейный модуль СP-9052

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

   Итак начнем с комплектации. В комплект поставки входит блок питания 12В, диск с описанием протокола работы модуля и собственно сам модуль CP-9052. Модуль представляет из себя восемь управляемых реле, которые могут коммутировать нагрузку до 6А с питанием от переменного напряжения до 250В или постоянного напряжения до 125В.

 

 

 

 

 

   С одной стороны 6А не так много, но с другой стороны вполне достаточно чтобы скоммутировать например восемь килловатныйх чайников. Каждый канал защищен предохранителем. Это правильно, поскольку неизвестно какую нагрузку подключит пользователь. Ну и в конце концов защищает модуль и провода от короткого замыкания. 

   Состояние предохранителя легко проверить ничего не вскрывая через проём в колпачке держателя предохранителя. Так же на модуле имеется светодиодная индикация активного канала, питания и режима настройки.

    Подключим модуль к компьютеру и попробуем управлять реле. Для этого подключаем к модулю питание 12В, убедившись, что светодиод питания загорелся. Соединим USB кабелем модуль и компьютер. Если все правильно то операционная система (в моём случае это Windows 7) обнаружит новое устройство.

Выбираем ручную установку и указываем путь к драйверу на диске входящем в комплект модуля. Устанавливать драйвер необходимо 2 раза, сначала устанавливается USB драйвер для FT232RL.

После чего Windows обнаружит еще одно устройство - USB Serial Port. Указываем прежний путь к драйверу на диске.

    В диспетчере устройств должен появиться COM порт - USB Serial Port ( у нас COM15). Устройство готово к работе.

    При желании, перед началом работы с модулем можно настроить такие параметры как:

  • Скорость передачи данных, бит/с (если модуль подключается по USB);
  • Включить / Отключить обработку модулем контрольной суммы CRC16;
  • Сменить пароль Bluetooth (если модуль подключается по Bluetooth.
   О том как это сделать можно прочитать в статье "Настройка Модуля CP-9052".

   Прежде чем переходить к испытаниям разберёмся с протоколом передачи данных. Для этого необходимо изучить "Описание протокола модуля CP-9052" которое находится так же на диске входящем в комплект. Из этого документа следует, что формат посылки в модуль и ответ от него один и тот же и имеет размер 11 байт:

 

Номер байта в пакете Условное обозначение байта Назначение
1 ADR

  Адрес устройства. Для модуля CP-9052 адрес всегда 1. В ответном пакете этот адрес будет иметь значение 0 т.к. предполагается, что компьютер имеет нулевой адрес.

2 TYPE

  Тип устройства. Модуль CP-9052 всегда имеет тип 52. Таким образом при ответе на запрос модуль указывает в данном байте значение 52. При получении пакета от компьютера модулем CP-9052 данный байт никак не учитывается.

3 COM

   Команда устройству. Данный байт определяет функцию, которую необходимо выполнить устройству. Более подробно будет описано ниже.

4 PAC

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

5 D2

   Данные. Данные в зависимости от команды могут иметь разное назначение. Например, при команде 1 имеют значения активных реле, а при команде 2 значение нового адреса устройства. 

6 D1
7 MY_ADR

   Адрес устройства отправителя. Байт содержит адрес устройства, от которого отправлен пакет. Таким образом, при ответе на запрос модуль указывает в данном байте значение своего адреса т.е. 1. При получении пакета от компьютера модулем CP-9052 данный байт никак не учитывается.

8 CRC2

   Два байта контрольной суммы CRC16. Проверка CRC16 модулем CP-9052 не осуществляется в режиме конфигурирования. Кроме того, проверку CRC16 можно отключить с помощью соответствующей команды (См.описание команд ниже).

9 CRC1
10 0D

 Байты окончания пакета. В шестнацетиричном формате 0x0D, 0x0A. Всегда добавляются в конце пакета.

11 0A

 

    Для управления модулем необходимы команды:

  • 0x01 (COM=1 - команда на управление реле);
  • 0x04 (COM=4 - команда запрос состояния реле).    

   Теперь открываем программу COM Port Toolkit (скачать можно тут), выбираем вкладку "Настройка" / "COM - порт". В открывшемся окне выбираем COM порт на котором висит модуль (у нас это COM15).

    Если в модуле не менялись заводские настройки, то выбираем скорость 9600 (остальные параметры порта оставляем стандартными: данные - 8, паритет - Нет, стоп биты - 1, упр. потоком Нет).

 

    Жмем ОК. После чего открываем вкладку "Сообщение" / "Отправить...". В открывшемся окне параметр "Тип данных" устанавливаем - "HEX", параметр "Посылка" устанавливаем - "Одиночная".

 

 

   В верхнем окне "Сообщения" будем вводить последовательность из 11 байт в соответствующем формате.

1. Команда управления реле.

Команда управления реле
   № байта 1 2 3 4 5 6 7 8 9 10 11
   Условное обозначение ADR TYPE COM PAC D2 D1 MY_ADR CRC2 CRC1 0D 0A
   Значение в HEX формате 01 00 01 00 00 05 00 00 00 0D 0A

 

Разберём почему посылка имеет именно такой вид.

  • ADR = 1, тут я думаю всем понятно. Данный модуль всегда имеет адрес 1;
  • TYPE = 0, при посылке в модуль данный параметр никак не учитывается и мы его будем всегда слать нулевым. В ответном пакете в данном байте модуль сообщит нам свой тип 52, т.е. в формате HEX будет 0x34;
  • COM = 1, (0x01 - в шестнадцатеричном формате) команда на управление реле;
  • PAC = 0, для команды 0x01 байт PAC может быть только 0;
  • D2 = 0, для команды 0x01 байт D2 может иметь любое значение, так так он не учитывается. Мы установим его равным нулю;
  • D1 = 5, байт данных указывает на то какие реле необходимо активировать. Состоянию реле соответствует состояние бит в данном байте. Нулевому биту соответствует состояние реле 1 и т.д. :
Биты байта D1
7 6 5 4 3 2 1 0
Реле 8 Реле 7 Реле 6 Реле 5 Реле 4 Реле 3 Реле 2 Реле 1

   

Для активации 1го и 3го реле байт D1 должен иметь значение 0b00000101 (в двоичном формате) или 0x05 (в шестнацетеричном).

  • MY_ADR = 0, при посылке в модуль данный параметр никак не учитывается и мы его будем всегда слать нулевым. В ответном пакете в данном байте модуль сообщит нам свой адрес, который всегда равен одному;
  • CRC1 = 0, CRC2 = 0, при стандартных заводских настройках обработка контрольной суммы CRC16 модулем CP-9052 отключена. Поэтому установим значения данных байт равными нулю.
  • 0x0D, 0x0A, два байта признака окончания пакета, добавляются всегда в конце пакета.

 

 

В результате будем иметь такую картину:

 

 

В ответных пакетах от модуля значение байт аналогично значениям байт в пакете запроса.

 

2. Команда запрос состояния реле.

Команда запрос состояния реле
   № байта 1 2 3 4 5 6 7 8 9 10 11
   Условное обозначение ADR TYPE COM PAC D2 D1 MY_ADR CRC2 CRC1 0D 0A
   Значение в HEX формате 01 00 04 00 00 00 00 00 00 0D 0A

 

Разберём почему посылка имеет именно такой вид.

  • ADR = 1, тут я думаю всем понятно. Данный модуль всегда имеет адрес 1;
  • TYPE = 0, при посылке в модуль данный параметр никак не учитывается и мы его будем всегда слать нулевым. В ответном пакете в данном байте модуль сообщит нам свой тип 52, т.е. в формате HEX будет 0x34;
  • COM = 4, (0x04 - в шестнадцатеричном формате) команда запроса состояния реле;
  • PAC = 0, для команды 0x04 байт PAC может быть только 0;
  • D1 = 0, D2 = 0, для команды 0x04 байты D1, D2 могут иметь любые значения, так так он не учитывается. Мы установим значения равные нулю;
  • MY_ADR = 0, при посылке в модуль данный параметр никак не учитывается и мы его будем всегда слать нулевым. В ответном пакете в данном байте модуль сообщит нам свой адрес, который всегда равен одному;
  • CRC1 = 0, CRC2 = 0, при стандартных заводских настройках обработка контрольной суммы CRC16 модулем CP-9052 отключена. Поэтому установим значения данных байт равными нулю.
  • 0x0D, 0x0A, два байта признака окончания пакета, добавляются всегда в конце пакета.

 

 

В ответном от модуля пакете байт D1 = 5, указывает на то какие реле активировать. Состоянию реле соответствует состояние бит в данном байте. Нулевому биту соответствует состояние реле 1 и т.д. :

 

Биты байта D1
7 6 5 4 3 2 1 0
Реле 8 Реле 7 Реле 6 Реле 5 Реле 4 Реле 3 Реле 2 Реле 1

    Таким образом мы научились управлять по USB восемью реле и считывать их состояние. 

   

    В заключении прикладываю фото с объекта, где модуль CP-9052 нашел свое применение в качестве устройства управляющее светом над бильярдными столами. После оплаты аренды стола, автоматически включается свет над соответствующим столом на оплаченный период времени.     

                     

                    Сам модуль установлен в щите на стене.                      

 

 

 

 

 

 

Стати по схожей тематики:

    Так же кому будет интересно видео с тестированием модуля CP-9052 (версия с Bluetooth):

Категория: Модули автоматизации | Добавил: Admin (11.05.2018) | Автор: Александр
Просмотров: 294 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar