Управление PTZ камерой

Описание протокола Pelco D

Попала ненадолго в руки PTZ (управляема) камера CNB-M1360PL. Данный тип камер управляется по Rs-485 интерфейсу обычно используя протокол Pelco-D. Из возможностей управления протокол поддерживает: поворот по горизонтали, наклон по вертикале, управление зумом, фокусом, диафрагмой, OSD (экранным меню), различные настройки и различные другие возможности. Но не всегда все выше перечисленное может присутствовать на выбранной камере, у камеры попавшей в руки из доступных: зум, фокус и вкл/выкл.

Подключенная видеокамера
Подключенная видеокамера

В статье поделюсь опытом общения с данной камерой, описанием протокола Pelco D, программой для проверки подобных видеокамер и примером реализации кода управления камерами по Rs-485 используя протокол Pelco D.

Вид камеры покрупнее.

Камера видео наблюдения CNB-M1360PL
Камера видео наблюдения CNB-M1360PL

Данная, можно сказать модульная, без корпусная видеокамера она из самых дешевых и доступных, средняя цена в районе 6000р (на момент написании статьи 04.11.2017). Правда она без поворотной платформы в комплекте, что немного печально для первого знакомства с подобными камерами. Камера оснащена 12 кратным оптическим зумом и до 120 цифровым, автоматической фокусировкой, переключением режима день/ночь и остальными стандартными для настраиваемых видеокамер функционалом. Из управления на данной камере доступен: зум, фокус и вкл/выкл.

Может комплектоваться платой управления OSD меню камеры, на которой так же расположены BNC разъём видео выхода, разъёмы подключения питания и линии Rs-485, преобразователь интерфейса UART-Rs485. При этом на камеру идёт только линия Tx с логическим уровнем 5В.

Плата подключения и управления через экранное меню (OSD)
Плата подключения и управления через экранное меню (OSD)

Плата с обратной стороны
Плата с обратной стороны

Схема разъёма для подключения шлейфа камеры
Схема разъёма для подключения шлейфа камеры

На фотографии платы управления, вид сверху, на разъёме подписан 1 вывод.

Управление экранным меню производится 5 кнопками по интерфейсу ad-key, который ранее уже рассматривал на примере простой модульной видеокамеры — интерфейс AD key или чем конфигурировать видеокамеру. Схема подключения кнопок немного отличная, от нарисованной ранее, но смысл тот же.

Схема клавиатуры ad-key для OSD меню
Схема клавиатуры ad-key для OSD меню

Кнопки в данной камере отвечаю не только за навигацию по экранному меню, но и за управление зумом и фокусом.

напряжение
кнопка
положение
название
4.10V кнопки не нажаты
0.08V S1 UP TELE
2.02V S3 OK
0.54V S2 DOWN WIDE
1.52V S4 RIGHT NEAR
1.00V S5 LIFT FAR

В экранном меню по мимо настроек изображения можно выбрать один из двух протоколов управления Pelco D или DXP и задать номер камеры, для её адресации на линии Rs-485. На одну линию можно посадить несколько камер с одинаковыми номерами, что бы управлять ими одновременно или с разными номерами для раздельного управления. Настройки интерфейса: скорость 2400 и стандартные 8N1. У других камер скорость может отличаться, но они находятся в стандартном диапазоне от 2400 до 115200.

Pelco D

Краткое описание протокола Pelco D.
На камеры с пульта отправляются посылки по 7 байт:

байт 1
байт 2
байт 3
байт 4
байт 5
байт 6
байт 7
синхронизация 0xFF адрес команда 1 команда 2 данные 1 данные 2 контрольная сумма

Контрольная сумма — 1 байт равна сумме 5 байт: со 2 по 6.

Протокол Pelco D может отправлять для управления камерами 15 стандартных команд, с помощью него можно производить удалённую настройку камер (но не все камеры это поддерживают или их производители используют нестандартные/свои команды и тщательно их скрывают) и управлять экранным OSD меню (тоже не все камеры поддерживают). Т.к. экземпляр на руках поддерживает только ограниченный набор из стандартных команд, то дополнительные возможности удалённой настройки камер рассматривать не буду.

Стандартные команды:

бит 7
бит 6
бит 5
бит 4
бит 3
бит 2
бит 1
бит 0
Команда 1 Sense eserved Reserved Auto/Manual Scan Camera on/off Iris Close Iris Open Focus Near
Команда 2 Focus Far Zoom Wide Zoom Tele Tilt Down Tilt Up Pan Left Pan Right Всегда 0

Бит Sense используется совместно с битами Auto/Manual Scan и Camera on/off.

Sense=0
Sense=1
Auto/Manual Scan
Manual Scan Auto Scan
Camera on/off
Camera off Camera on

Байты данных используются для задания скорости передвижения камеры по горизонтали (байт данных 1) и по вертикали (байт данных 2).

Примеры команд для камеры с адресом 1:

Камера вкл FF 01 88 00 00 89
Камера выкл FF 01 08 00 00 09
Стоп FF 01 00 00 00 01
Зум приближение FF 01 00 20 00 21
Зум отдаление FF 01 00 40 00 41
Фокус дальше FF 01 00 80 00 81
Фокус ближе FF 01 01 00 00 02

Отмечу, что после включения команд на движения по осям или фокуса и зума, камера будет двигаться до достижения крайнего положения. Остановить движение можно командой «стоп».

В интернете можно найти подробное описание протокола Pelco-D на английском.

При работе с камерой, её подключал к компьютеру через 2-х долларовый преобразователь USB-Rs485 (на первом фото в правом нижнем углу), построенному на основе преобразователя интерфейса USB-UART ch340 и преобразователя UART-Rs485 MAX485. У данного, самого дешевого преобразователя, нет гальванической развязки и всего 2 выхода Rs485 A+ и A-, общего провода нет! При подключении оборудования по 485 линии желательно использовать гальваническую развязку и так же соединять преобразователи общим проводом, т.к. если цепи питания устройств будут им не объединены на больших расстояниях устройства могут работать некорректно, со сбоями или сгореть. Что у меня и произошло, но при длине провода ~60см. Преобразователь был включен в компьютер, а камера питалась от лабораторного блока питания, но у блока питания отсутствовал земляной провод (забыл, что именно у используемого БП заземления на сетевой вилке нет, у всего остального лабораторного оборудования и компьютера на рабочем месте есть), что при его включении и выключении привело к тому, что в китайском преобразователе сгорела микросхема MAX485. Будьте внимательнее и, лучше, не экономьте на преобразователях и проводах.

Утилита для тестирования камер с протоколом Pelco-D

Для работы с камерой, точнее проверки её функционала, написал простую утилиту.

Программа для проверки камер с протоколом Pelco D
Программа для проверки камер с протоколом Pelco D

При подключении преобразователя интерфейса к компьютеру в компьютере, появляется новый виртуальный порт (в зависимости от преобразователя). К нему в программе можно подключится, предварительно установив скорость порта необходимую для используемых камер. Программа предоставляет возможность управления камерой через командные биты, прописывать посылку вручную и минимальный стандартный функционал для поворота камеры, управлением её зумом, фокусом и диафрагмой.

Программа использует стандартные настройки COM порта 8N1 (8 бит, нет контроля чётности, 1 стоп бит). Утилита не производит контроль линий управления COM порта (RTS и DTR).

Пример кода

Пример реализации кода для управления PTZ камерой по протоколу Pelco D будет выглядеть следующим образом:

unsigned char ptz_camera_adress;	//	адрес камеры

//	отправка данных по линии Rs-485
//	input: *data - указатель на массив отправляемых данных
void ptz_camera_send_data(char *data)
{
	rs485_mode_send_data();
	while (*data) 
	{
		send_uart(*data);
		++data;
	}
	rs485_mode_received_data();
}

//	отправка посылки PTZ камерам
//	input: adress - адрес камеры, cmd1 и cmd2 - каманда 1 и 2, data1 и data2 - данные 1 и 2
void ptz_camera_data_send(unsigned char adress,unsigned char cmd1,unsigned char cmd2,unsigned char data1,unsigned char data2)
{
	char ptz_camera_txBuff[7];
	ptz_camera_txBuff[0]=0xFF;
	ptz_camera_txBuff[1]=ptz_camera_adress;
	ptz_camera_txBuff[2]=cmd1;
	ptz_camera_txBuff[3]=cmd2;
	ptz_camera_txBuff[4]=data1;
	ptz_camera_txBuff[5]=data2;
	ptz_camera_txBuff[6]=ptz_camera_adress+cmd1+cmd2+data1+data2;
	ptz_camera_send_data(ptz_camera_txBuff);
}

//	камера вкл
void ptz_camera_on(void)
{
	ptz_camera_data_send(ptz_camera_adress,0x88,0x00,0x00,0x00);
}

//	камера выкл
void ptz_camera_off(void)
{
	ptz_camera_data_send(ptz_camera_adress,0x08,0x00,0x00,0x00);
}

rs485_mode_send_data() — переключение модуля Rs-485 на передачу данных
send_uart(char data) — функция отправки данных по UART
rs485_mode_received_data() — переключение модуля Rs-485 на приём данных

Скачать программу PTZ camera test

Скачать пример кода для управления камерой с микроконтролера

25 комментариев на « Управление PTZ камерой»

  1. Евгений пишет 07.04.2018 в 02:09 #

    Спасибо за Ваш труд

  2. Андрей пишет 30.10.2018 в 14:21 #

    Позновательно.
    А можно по RS485 получить из камеры значение зума?

  3. Alex_EXE пишет 01.11.2018 в 23:59 #

    Из обозреваемой не получалось или команды не нашел. Сейчас этой камеры у меня на руках нет.

    Добавлено позже
    Этой камере команды можно только передавать, доступна только линия Rx, линии Tx камеры, на получения данных с неё нет.

  4. oleg63m пишет 23.01.2019 в 14:02 #

    пару лет взад искал хоть чтото про эти камеры. а тут нате вам. все как на ладошке. спасибо огромное

  5. Дмитрий пишет 19.09.2019 в 19:58 #

    Спасибо тебе, добрый человек, за программу !

  6. Василий пишет 28.11.2019 в 16:50 #

    Спасибо, за труд, классная прога.

  7. константин пишет 28.02.2020 в 15:56 #

    есть камера с управлением по rs232,
    а также есть пульт управления с протоколом Pelco rs485.
    подскажите, возможно ли это соединить ???

  8. Alex_EXE пишет 28.02.2020 в 21:39 #

    1. разные интерфейсы, как минимум нужен конвертер 232-485
    2. а камера поддерживает этот протокол? Если нет, то только через МК (ПК, одноплатник…) с написанием программы

  9. Sergey пишет 16.06.2020 в 00:40 #

    А можно программу которую вы написали на delphi7 целиком преслать включая dpr файл.
    Зарание спасибо буду очень благодарен.

  10. Alex_EXE пишет 17.06.2020 в 08:09 #

    Не люблю открывать исходники своих Delphi программ.
    Держите.

  11. Фаиз пишет 03.12.2020 в 01:18 #

    Может у вас есть программа с обходом предустановок PTZ, с регулировкой «зума». Программа которая есть в сетиptz
    «PTZ controller» не регулирует «зум» на камере CNB-A1263P при обходе,а без обхода регулирует фото,фокус тоже не рабоиает
    Ваше приложение и фокумом управляет и зумом.есть у вас программа с обходом предустановок по rs485)?

  12. Alex_EXE пишет 03.12.2020 в 06:33 #

    У меня есть только представленная в статье программа. Программа побочный продукт по изучению протокола и камеры, далее всё было перенесено на stm32.
    Она была написана по общедоступной информации с интернета и проверялась на упомянутой в статье видеокамере. С другими управляемыми камерами не работал. Судя по комментариям она кому-то подошла.

  13. Фаиз пишет 03.12.2020 в 17:58 #

    Она прекрасно работает для тестирования,еще бы обход предустановок в нее для ptz кронштена,цены бы ей не бвло

  14. Alex_EXE пишет 04.12.2020 в 02:29 #

    С таким оборудованием дел не имел, ни чем помочь не могу.

  15. фаиз пишет 28.12.2020 в 21:39 #

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

  16. Alex_EXE пишет 29.12.2020 в 02:15 #

    Не знаю. Работал только с камерой из статьи.
    Предположу, что или что-то делаете не так, или применяемый инструментарий не содержит нужного Вам функционала, или он реализован некорректно.

  17. Фаиз пишет 03.01.2021 в 14:56 #

    Этой камере команды можно только передавать, доступна только линия Rx, линии Tx камеры, на получения данных с неё нет. Видимо у меня тоже такая же ,так как не поддерживает зум в обходе предустановок.так как нет обратной связи по TX.еще хочеться спросить почему команды зума отличаються,при ручном управлении и при обходе предустановок?

  18. Александр пишет 18.01.2021 в 23:44 #

    Поворотный кронштейн с Али покрутил. Работает право-лево, верх-низ без вопросов.

  19. Frog пишет 20.01.2021 в 21:02 #

    Благодарю за работу, программа очень выручила. Была необходимость управления PTZ камерами при отсутствии видеорегистратора (сдали в ремонт) Подключив сервисный монитор получили изображение, а управление через USB-485 адаптер с помощь Вашей программы. СПАСИБО !

  20. Фаиз пишет 21.01.2021 в 01:09 #

    Кронштейн у меня тоже работает и зум на камере только с виртуальных кнопок + и -, а вот зума в обходе пресетов нет((.для управления кронтейном ptz, отлично работает программа ptz controller

  21. Фаиз пишет 21.01.2021 в 01:22 #

    Alex_EXE пишет 01.11.2018 в 23:59 #
    Из обозреваемой не получалось или команды не нашел. Сейчас этой камеры у меня на руках нет.
    Добавлено позже
    Этой камере команды можно только передавать, доступна только линия Rx, линии Tx камеры, на получения данных с неё нет.

    Можете подсказать где это посмотреть,камеры одной фирмы,у себя тоже гляну,так как схемы и мануала нет ((

  22. Alex_EXE пишет 25.01.2021 в 00:59 #

    На камеру идёт только линия Rx.
    Это можно отследить по фото зеленой платы с интерфейсами из комплекта камеры.
    На шлейф идёт только 5 проводников:
    3 тонкие дорожки: видео сигнал, AD-key, Rx,
    толстая дорожка и металлизация платы: + питания и общий.
    Документации на камеру у меня то же, если что, нет.
    И ещё. Для управления, т.е. чисто для отправки команд без обратной связи и подтверждения линия Tx не нужна.

  23. Alex_EXE пишет 25.01.2021 в 01:15 #

    Повторю ситуацию.
    Ко мне пришли, заказали управляющий блок кода, предоставили оборудование (только эту камеру с её зеленой платой).
    Работу выполнил, сдал. Заказчик был не против публикации. Опубликовал эту статью и программу, что написал для разбирательств с протоколом.
    С управляемыми кронштейнами, другими управляемыми камерами не работал. У меня такого оборудования нет. Т.е. что-то проверить, уточнить не могу. Всё, что знаю — написано в этой статье. Ещё могу отправить на википедию и другие ресурсы, читать, что за протокол Pelco-D.

  24. фаиз пишет 07.02.2021 в 15:24 #

    при обходе предустановок нужна обратная связь линия Tx которой видимо у меня нет((.еще один вопрос ,почему команды управления ЗУМом отличаются.при управлении с виртуальных кнопок одна команда,при автоматическом обходе предустановок команда совсем другая как в+ так и в — зума

  25. Serg пишет 09.04.2024 в 05:43 #

    Есть ONVIF камера поворотная.
    Ее PTZ управляется по протоколу PELCO-D.

    Как их вообще совместили?
    Или здесь другая хитрость?

    Хочется из своей программы покрутить PTZ…

Комментарии RSS

Оставьте отзыв