Настройка Модуля CP-9052. Часть 1.

   Для настройки модуля 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

 

Теперь разберёмся с командами. Их для данного модуля шесть:

 

Значение байта СOM (в шестнацетеричном формате) Описание команды
1 0x01    Команда управления реле.
2 0x03    Команда изменить скорость работы модуля
3 0x04    Команда запрос состояния реле
4 0x05    Команда Вкл./Откл. обработку CRC16 модулем
5 0x06    Команда сменить пароль Bluetooth
6 0x0A    Команда чтение настроек модуля

 

При этом команды

  • 0x03 (изменить скорость);
  • 0x05 (Вкл./Откл. обработку CRC16);
  • 0x06 (сменить пароль Bluetooth для варианта исполнения с Bluetooth);
  • 0x0A (по части чтения пароля Bluetooth для варианта исполнения с Bluetooth);

возможно выполнить только в режиме конфигурирования. Режим конфигурирования включается установкой перемычки "CONFIG" на модуле CP-9052 в положение "Enabled".

 

 

    Не зависимо от настроек рабочего режима в режиме конфигурирования основные параметры всегда одни и те же. Настройки рабочего режима с завода имеют те же значения что и настройки в режиме конфигурирования. 

 

Основные параметры Значение в режиме конфигурирования Значение установленные с завода в рабочем режиме 
    Скорость работы 9600    9600
    Обработка CRC16 Отключено    Отключено
    Пароль Bluetooth 1234    1234

 

    Теперь можно перейти к процедуре настройки. Для этого подключим к модулю блок питания 12В, входящий в комплект поставки. А сам модуль подключим к компьютеру USB кабелем  A->B. В диспетчере устройств должен появиться COM порт - USB Serial Port ( у нас COM15). После чего переведем модуль в режим конфигурирования, установив перемычку CONFIG в положение "Enabled". Если все правильно, то должен загореться светодиод CONFIG.  

    Для настройки модуля будем использовать терминальную программу COM Port Toolkit от Михаила Голикова. Скачать можно с официального сайта автора. Пользуюсь данной программой уже очень давно и в плане стабильности и отсутствия программных глюков еще ни разу не подводила.

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

 

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

 

 

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

 

1. Команда изменить скорость работы модуля.

Команда на изменение скорости работы модуля в рабочем режиме на 19200 bit/s
   № байта 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 03 00 00 04 00 00 00 0D 0A

 

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

  • ADR = 1, тут я думаю всем понятно. Данный модуль всегда имеет адрес 1;
  • TYPE = 0, при посылке в модуль данный параметр никак не учитывается и мы его будем всегда слать нулевым. В ответном пакете в данном байте модуль сообщит нам свой тип 52, т.е. в формате HEX будет 0x34;
  • COM = 3, ранее описывался перечень команд, и 0x03 команда на изменение скорости;
  • PAC = 0, для команды 0x03 байт PAC может быть только 0;
  • D2 = 0, для команды 0x03 байт D2 может иметь любое значение, так так он не учитывается. Мы установим его равным нулю;
  • D1 = 4, для команды 0x03 байт D1 устанавливает скорость работы модуля в рабочем режиме:
Значение байта D1 Значение скорости передачи данных, бит/с
0 2400
1 4800
2 9600
3 14400
4 19200
5 38400
6 57600
7 115200
  • MY_ADR = 0, при посылке в модуль данный параметр никак не учитывается и мы его будем всегда слать нулевым. В ответном пакете в данном байте модуль сообщит нам свой адрес, который всегда равен одному;
  • CRC1 = 0, CRC2 = 0, при посылке в модуль данный параметр никак не учитывается так как в режиме конфигурирования контрольная сумма не проверяется.
  • 0x0D, 0x0A, два байта признака окончания пакета, добавляются всегда в конце пакета.

 

 

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

 

2. Команда Вкл./Откл. обработку CRC16 модулем.

Команда отключить обработку CRC16 модулем
   № байта 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 05 00 00 00 00 00 00 0D 0A
  • COM = 5, ранее описывался перечень команд, и 0x05 команда на Вкл./Откл. обработку CRC16 модулем;
  • PAC = 0, для команды 0x05 байт PAC может быть только 0;
  • D2 = 0, для команды 0x05 байт D2 может иметь любое значение, так так он не учитывается. Мы установим его равным нулю;
  • D1 = 0, для команды 0x05 байт D1 устанавливает будет ли проверять контрольную сумму модуль (в рабочем режиме) при приеме пакета или нет (D1=0 - проверка CRC16 откдючена, D1=1 - проверка CRC16 включена).

 

 

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

    Если включить обработку контрольной суммы, то при отсылки пакета модулю в рабочем режиме необходимо будет подсчитать контрольную сумму и добавить в байты CRC1, CRC2. Для этого предварительно рассчитаем таблицу значений с помощью функции:

 

void MakeCRC16Table(void)

{

  unsigned char j;

  unsigned int i, r;

  for(i=0;i<256;i++)

  {

     r = i<<8;

     for(j=0;j<8;j++)

     {

if(r&(1<<15))  r=(r<<1)^0x8005;

else r=r<<1;

     }

   crctable[i]=r;

   }

}

 

    Данная функция выполняется 1 раз. Далее для расчета CRC16 используется функция:

 

unsigned int GetCRC16(unsigned char *buf,unsigned char len)

{

  unsigned int CRC;

  CRC = 0xFFFF;

  while(len--)

    {

       CRC = crctable[((CRC>>8)^*buf++)&0xFF] ^ (CRC<<8);

    }

  CRC ^=0xFFFF;

  return(CRC);

}

 

Функции GetCRC16 для расчета передаются первые 7 байт пакета.

 

Пример расчета CRC16 с помощью функции GetCRC16:

unsigned int CRC16;

// Подсчёт CRC. Функции GetCRC16 передается массив p[] из 7 элементов, где

// p[0] – байт 1 - сетевой адрес устройства.

// p[1] – байт 2 - тип сетевого устройства.

// p[2] – байт 3 – команда устройству.

// p[3] – байт 4 – номер подпакета.

// p[4] – байт 5 – байт данных.

// p[5] – байт 6 – байт данных.

// p[6] – байт 7 – адрес устройства отправителя.

 

 CRC16 = GetCRC16(p,7);

// после чего переменная CRC16 разбивается на два байта: CRC1 и CRC2, где

// CRC2 – содержит старшие 8 бит, CRC1 – содержит младшие 8 бит.

 

3. Команда сменить пароль Bluetooth.

 

    Для варианта исполнения с Bluetooth предусмотрена команда смены пароля:

Команда сменить пароль Bluetooth
    № байта 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 06 00 12 34 00 00 00 0D 0A
  • COM = 6, ранее описывался перечень команд, и 0x06 команда на смену пароля Bluetooth;
  • PAC = 0, для команды 0x06 байт PAC может быть только 0;
  • D2 = 0x12, D1 = 0x34 –данные байты содержат значение нового пароля Bluetooth в двоично-десятичном формате. Старшие четыре бита байта D2 содержат значение первой с лево цифры пароля. Младшие четыре бита байта D2 содержат значение второй с лево цифры пароля и т.д. Значение полубайта должно быть в пределах 0 – 9. Таким образом, при D2 = 0x12, D1 = 0x34 будет установлен пароль “1234”. Изменить пароль Bluetooth модуля CP-9052 возможно только в режиме конфигурирования.

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

 

 

    Продолжение во второй части:  Часть 2 >> 

 

     Похожий материал: "Изучаем USB релейный модуль СP-9052"

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