派尔高摄像机(Pelco-D协议基本使用及水平垂直方向精准控制命令解析)

Posted

篇首语:休言女子非英物,夜夜龙泉壁上鸣。本文由小常识网(cha138.com)小编为大家整理,主要介绍了派尔高摄像机(Pelco-D协议基本使用及水平垂直方向精准控制命令解析)相关的知识,希望对你有一定的参考价值。

派尔高摄像机(Pelco-D协议基本使用及水平垂直方向精准控制命令解析)

基本信息

在IBMS接口开发中,我们需要用到一些常用的协议,而PELCO (派尔高)的监控器材在我国有很广泛的应用。 PELCO有自己的传输控制协议,当它的产品配套使用时,可以互相兼容。同时很多非Pelco监控器材很多同样兼容了和实现了Pelco传输控制协议,所以对于视频控制来说,Pelco传输控制协议很有用。Pelco传输控制协议分为Pelco-D协议和Pelco-P协议,今天重点讲Pelco-D协议,以及其中精准控制水平、垂直方向转动的协议。

基本使用

  • 命令格式

字节1

字节2

字节3

字节4

字节5

字节6

字节7

同步字节

地址码

指令码1

指令码2

数据码1

数据码2

校验码

1.该协议中所有数值都为十六进制数  

2.同步字节始终为FFH

3.地址码为摄像机的逻辑地址号,地址范围:00H–FFH  

4.命令字 1和命令字2设置如下:


Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

命令字1

Sence码

保留(一般为0)

保留(一般为0)

自动/手动扫描

摄像机打开/关闭

光圈关闭

光圈打开

焦距拉近

命令字2

焦距拉远

视角变宽

视角变窄

为0

Sence码与Bit4和Bit3有关。在Bit4和Bit3为1的情况下,如果Sence码为1,则命令就是自动扫描和和摄像机打开;如果Sence码为0,则命令就是手动扫描和摄像机关闭。当然如果Bit4或Bit3为0的话那命令就无效了。

5.数据码1、2分别表示水平、垂直方向速度(00-3FH),FFH表示“turbo”速度

6.校验码 = MOD[(字节2 + 字节3 + 字节4 + 字节5 + 字节6)/100H]

常用命令,以地址码0x01为例:


上:FF 01 00 08 00 data2 sum(data2 是向上的速度,范围是: 0x00-0x3F)下:FF 01 00 10 00 data2 sum(data2 是向下的速度,范围是:0x00-0x3F)左:FF 01 00 04 data1 00 sum(data1 是向左的速度,范围是: 0x00-0x3F)右:FF 01 00 02 data1 00 sum(data1 是向右的速度,范围是:0x00-0x3F) 左上: FF 01 00 0C data1 data2 sum(data1、data2同上)左下: FF 01 00 14 data1 data2 sum(data1、data2同上)右上: FF 01 00 0A data1 data2 sum(data1、data2同上)右下: FF 01 00 12 data1 data2 sum(data1、data2同上)停:FF 01 00 00 00 00 sum 设置预置点:FF 01 00 03 00 data2 sum调用预置点:FF 01 00 07 00 data2 sum删掉预置点:FF 01 00 05 00 data2 sum灯光开:FF 01 00 09 00 data2 sum灯光关:FF 01 00 0B 00 data2 sum

水平垂直方向精准控制命令解析

注:以下命令以地址码0x01为例。

1、水平位置查询命令

注:发送此命令,设备会返回当前位置命令

命令格式:FF 01 00 51 00 00 52

返回命令格式:FF 01 00 59 PMSB PLSB SUM

其中:PMSB PLSB 16进制数字,SUM 是校验码.

如何计算得出水平角度:

1、将 PMSB、PLSB 转成10进制数字;

2、计算 Pdata=PMSB*256+PLSB;

3、计算实际的位置/角度: Pangle = Pdata÷100.Pangle.

例1:发送命令 :FF 01 00 51 00 00 52, 返回命令: FF 01 00 59 00 64 BE

1、将 PMSB = 0x00 PLSB = 0x64 转成十进制: PMSB = 0 PLSB = 100;

2、Pdata = PMSB *256 + PLSB = 0*256+100 = 100;

3、Pangle = Pdata÷100 = 1 ;

得到结果是当前水平角度是 1°.

例2:发送命令: FF 01 00 51 00 00 52,返回命令: FF 01 00 59 75 30 FF

1、将 PMSB = 0x75 PLSB = 0x30 转成十进制: PMSB = 117 PLSB = 48;

2、Pdata = PMSB *256 + PLSB = 117*256+48 = 30000;

3、Pangle = Pdata÷100 = 300 ;

得到结果是当前水平角度是 300°.


2、垂直位置查询命令

注:发送此命令,设备会返回当前位置命令

命令格式:FF 01 00 53 00 00 54

返回命令格式:FF 01 00 5B TMSB TLSB SUM

其中:TMSB TLSB 16进制数字,SUM 是校验码.

如何计算得出垂直角度:

1、将 TMSB、TLSB 转成10进制数字;

2、计算 Tdata1=TMSB*256+TLSB;

3、比较 Tdata2 和 18000.

如果 Tdata1 大于 18000, 那么 Tdata2 = 36000-Tdata1,

如果 Tdata1 小于 18000, 那么 Tdata2 = -Tdata1;

4、计算实际角度/位置: Tangle = Tdata÷100.

例1:发送命令 FF 01 00 53 00 00 54,返回命令 FF 01 00 5B 8A 63 49

1、将 TMSB = 0x8A TLSB = 0x63 转成十进制: TMSB = 138 TLSB = 99;

2、Tdata1 = TMSB *256 + TLSB = 138*256+99 = 35427;

3、因为 Tdata1>18000,那么 Tdata2 = 36000-Tdata1 = 36000-35427 = 573;

3、Tangle = Tdata2÷100 = 5.73°.

得出垂直角度是 5.73°.

例2:发送命令 FF 01 00 53 00 00 54 ,返回 FF 01 00 5B 00 64 C0

1、将 TMSB = 0x00 TLSB = 0x64 转成十进制: TMSB = 0 TLSB = 100;

2、Tdata1 = TMSB *256 + TLSB = 0*256+100 = 100

3、因为 Tdata1<18000,那么 Tdata2 = -Tdata1 = -100;

3、Tangle = Tdata2÷100 = -1.00°.

得出垂直角度是 -1.00°.

3、水平角度控制

命令格式:FF 01 00 4B DATA1 DATA2 SUM

命令中, (DATA1<<8) + DATA2=angle*100

例如, 需要转到10°水平角度. 那么发送命令 : FF 01 00 4B 03 E8 37,计算逻辑是:10*100=1000=(0x03<<8)+0xE8[那么DATA1为0x03,DATA2为0xE8].

4、垂直角度控制

命令格式:FF 01 00 4D DATA1 DATA2 SUM

如果是负角度, (DATA1<<8) + DATA2=angle*100;

如果是正角度, (DATA1<<8) + DATA2=36000- angle*100.

例如, 需要转到-10°的位置.发送命令 : FF 01 00 4D 03 E8 39,计算逻辑是:10*100=1000=(0x03<<8)+0xE8[then DATA1是0x03,DATA2是].

相关参考