引言
在安全监控领域,有效的视频监控系统对于保障人们的生命财产安全至关重要。Pelco公司作为视频监控技术的先驱,不仅在摄像机制造上有着深厚的技术积累,还开发了多种通信协议以满足不同监控场景的需求。其中,Pelco-D协议因其高效性和可靠性,在行业中得到了广泛应用。
Pelco-D的由来与Pelco公司
Pelco-D协议是由Pelco公司开发的一种串行通信协议。Pelco(派尔高)公司,成立于1957年,是全球领先的视频监控设备制造商,以其高质量的产品和创新技术闻名于世。Pelco-D协议的开发,旨在提供一种稳定、高效的手段,用于控制Pelco品牌的摄像机及其他监控设备。
Pelco-D与Pelco-P的关系
Pelco-D协议与Pelco-P协议都是Pelco公司开发的通信协议,但它们服务于不同的应用场景。Pelco-P协议主要用于Pelco的矩阵切换系统,而Pelco-D协议则更侧重于摄像机的控制和配置。两者在设计上有一定的兼容性,但Pelco-D协议在数据传输速率和命令集上进行了优化,以适应现代网络化监控系统的需求。
Pelco-D协议组成
标准速度为4800bps,PELCO原装设备支持RS422和RS485兼容接口,国内大部分厂家主控和接收设备仅支持RS485接口。
Pelco-D协议由以下几个关键部分组成:
字节1 | 字节2 | 字节3 | 字节4 | 字节5 | 字节6 | 字节7 |
同步字节 | 地址码 | 指令码1 | 指令码2 | 数据码1 | 数据码2 | 校验码 |
该协议中所有数值都为十六进制数
1.同步字节
每个Pelco-D消息的开始都以特定的同步字节标识,确保接收设备能够正确识别消息的开始。
同步字节始终为FFH。
2.地址字段
用于指定消息的目标设备地址,确保消息能够正确送达预期的设备。
地址码为摄像机的逻辑地址号,地址范围:00H–FFH。
3.命令字段
包含执行特定操作的命令,如调整摄像机位置、更改设置等。
命令字 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的话那命令就无效了。
4.数据字段
根据命令字段的需求,携带相应的数据或参数。
数据码1、2分别表示水平、垂直方向速度(00-3FH),FFH表示“turbo”速度
数据1表示镜头左右平移的速度,数值从$00(停止)到$3F(高速),另外还有一个值是$FF,表示最高速。
数据2表示镜头上下移动的速度,数值从$00(停止)到$3F(最高速)。
5.校验字段
:通常使用CRC或奇偶校验,确保数据传输的准确性和完整性。
校验码 = MOD[(字节2 + 字节3 + 字节4 + 字节5 + 字节6)/100H]
6.结束字节
:标识消息的结束,便于接收设备进行处理。
一些常用的控制指令
命令共2大类,motion命令,和非motion命令(注:可以称为基本命令和扩展命令/高级命令)。其中motion命令,在CMND2中Bit0始终为0。反之,该比特为1表示非motion命令。
motion命令包含了水平移动、垂直移动、光圈、变焦、对焦等功能。这类命令是由命令1和命令2的各个位来表示的。
要实现某一项功能,只要在对应的位置设为1即可,有些命令是可以同时设置的,但有些是不行的,比如,可以同时实现左(右)转和向上(下)转动,但不能同时左转及右转(两者是互斥的)。
Command | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 |
Up(上移) | 0xFF | Address | 0x00 | 0x08 | Pan Speed | Tilt Speed | SUM |
Down(下移) | 0xFF | Address | 0x00 | 0x10 | Pan Speed | Tilt Speed | SUM |
Left(左移) | 0xFF | Address | 0x00 | 0x04 | Pan Speed | Tilt Speed | SUM |
Right(右移) | 0xFF | Address | 0x00 | 0x02 | Pan Speed | Tilt Speed | SUM |
UpLeft(左上) | 0xFF | Address | 0x00 | 0x0C | Pan Speed | Tilt Speed | SUM |
UpRight(右上) | 0xFF | Address | 0x00 | 0x0A | Pan Speed | Tilt Speed | SUM |
DownLeft(左下) | 0xFF | Address | 0x00 | 0x14 | Pan Speed | Tilt Speed | SUM |
DownRight(右下) | 0xFF | Address | 0x00 | 0x12 | Pan Speed | Tilt Speed | SUM |
Zoom In(放大) | 0xFF | Address | 0x00 | 0x20 | 0x00 | 0x00 | SUM |
Zoom Out(缩小) | 0xFF | Address | 0x00 | 0x40 | 0x00 | 0x00 | SUM |
Focus Far(远焦) | 0xFF | Address | 0x00 | 0x80 | 0x00 | 0x00 | SUM |
Focus Near(近焦) | 0xFF | Address | 0x01 | 0x00 | 0x00 | 0x00 | SUM |
Set Preset(设置预置位) | 0xFF | Address | 0x00 | 0x03 | 0x00 | Preset ID | SUM |
Clear Preset(删除预置位) | 0xFF | Address | 0x00 | 0x05 | 0x00 | Preset ID | SUM |
Call Preset(前往预置位) | 0xFF | Address | 0x00 | 0x07 | 0x00 | Preset ID | SUM |
Query Pan Position(查询平移位置) | 0xFF | Address | 0x00 | 0x51 | 0x00 | 0x00 | SUM |
Query Pan Position Response(查询平移位置响应) | 0xFF | Address | 0x00 | 0x59 | Value High Byte | Value Low Byte | SUM |
Query Tilt Position(查询倾斜位置) | 0xFF | Address | 0x00 | 0x53 | 0x00 | 0x00 | SUM |
Query Tilt Position Response(查询倾斜位置响应) | 0xFF | Address | 0x00 | 0x5B | Value High Byte | Value Low Byte | SUM |
Query Zoom Position(查询缩放位置) | 0xFF | Address | 0x00 | 0x55 | 0x00 | 0x00 | SUM |
Query Zoom Position Response(查询缩放位置响应) | 0xFF | Address | 0x00 | 0x5D | Value High Byte | Value Low Byte | SUM |
除了上述显示的“PTZ”命令外,还有控制命令可以让您访问一些设备的更高级功能。对这些命令的响应是四字节,第一个字节是同步字符(FF),第二个字节是接收器地址,第三个字节包含报警信息,第四个字节是校验和。
Command | word3 | word4 | word5 | word6 |
Set Preset XX | 00 | 03 常用 | 00 | 01 to 020 |
Clear Preset XX | 00 | 05 常用 | 00 | 01 to 20 |
Go To Preset XX | 00 | 07 常用 | 00 | 01 to 20 |
Flip (rotate 180o) | 00 | 07 常用 | 00 | 21 |
Zero Pan Position | 00 | 07 常用 | 00 | 22 |
Set Aux XX | 00 | 09 常用 | 00 | 01 to 08 |
Clear Aux XX | 00 | 0B 常用 | 00 | 01 to 08 |
Remote Reset | 00 | 0F 不常用 | 00 | 00 |
Zone Start | 00 | 11 不常用 | 00 | 01 to 08 |
Zone End | 00 | 13 不常用 | 00 | 01 to 08 |
Write char to screen | 00 | 15 不常用 | X Position 00 to 28 ASCII Value | 0 to 7F |
Clear Screen | 00 | 17 不常用 | 00 | 00 |
Alarm Ack | 00 | 19 不常用 | 00 | Alerm NO. |
Zone Scan On | 00 | 1B 不常用 | 00 | 00 |
Zone Scan Off | 00 | 1D 不常用 | 00 | 00 |
Pattern Start | 00 | 1F 不常用 | 00 | 00 |
Pattern Stop | 00 | 21 不常用 | 00 | 00 |
Run Pattern | 00 | 23 不常用 | 00 | 00 |
Zoom Lens Speed | 00 | 25 不常用 | 00 | 00 to 03 |
Focus Lens Speed | 00 | 27 不常用 | 00 | 00 to 03 |
Reset Camera to defaults | 0 | 29 | 0 | 0 |
Auto-focus auto/on/off | 0 | 2B | 0 | 00-02 |
Auto Iris auto/on/off | 0 | 2D | 0 | 00-02 |
AGC auto/on/off | 0 | 2F | 0 | 00-02 |
Backlight compensation on/off | 0 | 31 | 0 | 00-02 |
Auto white balance on/off | 0 | 33 | 0 | 00-02 |
Enable device phase delay mode | 0 | 35 | 0 | 0 |
Set shutter speed | 0 | 37 | Any | Any |
Adjust line lock phase delay | 00-01 | 39 | Any | Any |
Adjust white balance(R-B) | 00-01 | 3B | Any | Any |
Adjust white balance(M-G) | 00-01 | 3D | Any | Any |
Adjust gain | 00-01 | 3F | Any | Any |
Adjust auto-iris level | 00-01 | 41 | Any | Any |
Adjust auto-iris peak value | 00-01 | 43 | Any | Any |
Query | 0 | 45 | Any | Any |
- 此命令只能在点对点应用中使用。被查询的设备将响应任何地址。因此,如果多个设备听到这个命令,您将有多个设备同时传输。因此,如果您要查询的设备超过一个,您将有多个设备同时传输。
创建标签
许多设备都有在视频中创建标签的能力。标签通常用于标识正在扫描的预设或区域。有一种特殊的技术可以建立与预设或区域相关联的标签。首先,您使用“白色字符到屏幕”命令将标签发送到接收器/驱动器。标签上屏幕后,您设置预设。这将建立标签并将其与预设关联。
示例消息(所有消息值都以十六进制显示)
发送消息到接收器1,打开摄像机:FF,01,88,00,00,00,89
发送消息到接收器1,关闭摄像机:FF,01,08,00,00,00,09
发送消息到接收器2,以半速向左:FF,02,00,04,20,00,26
发送消息到接收器2,停止:FF,02,22,00,00,00,02
发送消息到接收器10,打开摄像机,聚焦远,向左,“turbo”速度:FF,0A,88,84,40,00,62
以地址码0x01为例
{0xff,0x01,0x00,0x08,0x00,0xff,0x08,}//上
{0xff,0x01,0x00,0x10,0x00,0xff,0x10,}//下
{0xff,0x01,0x00,0x04,0xff,0x00,0x04,}//左
{0xff,0x01,0x00,0x02,0xff,0x00,0x02,}//右
{0xff,0x01,0x00,0x20,0x00,0x00,0x21,}//变倍短
{0xff,0x01,0x00,0x40,0x00,0x00,0x41,}//变倍长
{0xff,0x01,0x00,0x80,0x00,0x00,0x81,}//聚焦近
{0xff,0x01,0x01,0x00,0x00,0x00,0x02,}//聚焦远
{0xff,0x01,0x02,0x00,0x00,0x00,0x03,}//光圈小
{0xff,0x01,0x04,0x00,0x00,0x00,0x05,}//光圈大
{0xff,0x01,0x00,0x0b,0x00,0x01,0x0d,}//灯光关
{0xff,0x01,0x00,0x09,0x00,0x01,0x0b,}//灯光开
{0xff,0x01,0x00,0x07,0x00,0x01,0x09,}//转至预置点001
{0xff,0x01,0x00,0x03,0x00,0x01,0x05,}//设置预置点001
{0xff,0x01,0x00,0x05,0x00,0x01,0x07,}//删除预置点001
以上对应的停命令均是:
{0xff,0x01,0x00,0x00,0x00,0x00,0x01,}//停命令,停止当前云台及镜头的动作
特殊命令
Preset Number | Function |
99 | Begin Auto-scan 启动云台自动扫描 |
98 | Begin Frame Scan 摄像机帧扫描不常用 |
97 | Begin Random Scan 不常用 |
96 | Stop Scan 停止所有功能 |
95 | Enter Menu Mode 打开摄像机和球机菜单 |
94 | Remote Reset 云台或摄像机复位 |
93 | Set Right Limit Stop 设置右限位 |
92 | Set Left Limit Stop 设置左限位 |
34 | Home (return to 0 pan position) 归零自检 |
33 | Flip 自动翻转 |
这些命令可以自己定义,但在解码器球机说明书里要有详细的说明,否则操作者也不会用的。有的控制设备只有1-64号预置位就无法实现上述命令,所有有些厂家做在64范围内就是这个原因,一般是做兼容。
Pelco-D使用方法
使用Pelco-D协议控制摄像机通常遵循以下步骤:
1.初始化连接
通过串行接口与摄像机建立连接。
2.发送命令
构造一个包含同步字节、目标地址、命令和校验的Pelco-D消息,并发送给摄像机。
3.等待响应
摄像机接收到命令后,执行相应操作,并通过Pelco-D协议发送响应消息。
4.处理响应
接收并解析摄像机的响应消息,确认命令执行结果。
相机返回的响应包有4种,0字节、4字节、7字节、18字节。除了第一种外,其它每种都和上面给出的命令格式相似,同步头+相机地址+信息体+检验码。
5.异常处理
在命令执行失败或响应超时时,进行相应的异常处理。
思考
不同的摄像机厂商可能定义了不同的协议
那我们如何扩展pelco-D协议,使协议兼容现有协议的同时,也能实现更多的控制功能?
结语
Pelco-D协议以其高效、稳定的特性,在视频监控系统中发挥着重要作用。随着技术的发展,Pelco-D协议也在不断更新和优化,以适应更广泛的应用需求。了解并掌握Pelco-D协议,对于构建高效、可靠的监控系统至关重要。
请注意,本文提供的信息基于Pelco-D协议的通用概念。具体的协议细节、命令集和使用方法可能会根据不同版本的Pelco-D协议和设备型号有所差异。建议参考Pelco公司提供的官方文档和技术支持获取详细信息。
参考资料:
https://www.epiphan.com/userguides/LUMiO12x/Content/UserGuides/PTZ/3-operation/PELCODcommands.htm