美国最广泛使用的监控行业通信协议是美国PELCO-P,PELCO-D可以说,国内控制设备大多包括嵌入式录像机、监控视频采集卡软件、各种控制键盘、PC本协议包括机器调试研究。其中,各种版本都是由各种专家培育出来的。本文解释了这一点“正宗”的美国PELCO-P\D协议,最后解释最新版本和其他制造商的协议。
一、PELCO协议
1、PELCO据我所知,有协议PELCO-P\D两种协议PELCO控制键盘与PELCO本文不包括矩阵通信协议。这里只说PELCO主控与终端解码器通信协议。 2、PELCO通过主控和前端解码器RS422\RS485注意:以前很多菜鸟问我设备是用的。RS485协议,这是个笑话。协议是指通信的内容,控制和接收约定的数据传输,类似于合同,甲乙双方按约定的事项处理。 3、除PELCO支持原装设备RS422和RS485大多数国内制造商只支持兼容接口RS485接口,RS485接口是半双工通信模式,即发送端发送过去的控制命令,只要发送,无论您是否收到,一些制造商连续发送,一些间隔发送,总类别很多。停止命令通常会发送1、2条。如PELCO\PANASONIC、三星等大厂做的通信接口,主控发出去命令,接收端收到命令返回SCK命令给主控,叫回答命令,告知发送端我已收到命令,不用再发了,这就是RS422通信模式的一种用途。
4、PELCO协议内容包括云台控制命令,摄像机控制命令,辅助控制命令。预置位设置和调用命令。注意:网上PELC协议版本众多,建议看家选择英文版本,中文版本很多错误。其中英文版本最后的例子有错,后面我会纠正!下面逐一介绍:
二、PELCO协议内容介绍
1、 先讲PELCO-P协议:
Byte |
Value |
Function |
字节1 |
$A0 |
STX (start transmission) |
字节2 |
$00 to $1F |
Address |
字节3 |
Data byte 1 |
(see below) |
字节4 |
Data byte 2 |
(see below) |
字节5 |
Data byte 3 |
(see below) |
字节6 |
Data byte 4 |
(see below) |
字节7 |
$AF |
ETX (end transmission) |
字节8 |
$00-$FF |
Check Sum |
看上表:P协议一共8个字节,头字节是A0,第2个字节是地址00-31(一共32个地址),32个地址现在大系统已经不够用了,所以我们要更改它,可以改成00-63个地址,00-127个地址。地址在软件里随便增加的。这里还注意一个地址是0开始,这也是为什么我们常说P协议地址主控要减1。有的技术人写的软件老老实实的按照PELCO-P文档的软件来定义,应当自己灵活一下,把地址码改到从1开始不就行了吗?这样就不会在将来客户使用过程要加1或减1这么麻烦。
上表第3个字-第6个字节是:看下表:
|
Bit number |
|||||||
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
字节3 |
0 |
Camera On |
Autoscan On |
Camera on / off |
Iris Close |
Iris Open |
Focus Near |
Focus Far |
字节4 |
0 |
Zoom Wide |
Zoom Tele |
Tilt Down |
Tilt Up |
Pan Left |
Pan Right |
0 (for pan / tilt) |
字节5 |
Pan Speed $00 to $3F and $40 for Turbo |
|||||||
字节6 |
Tilt Speed $00 to $3F |
通过上表可知:P协议内第3和第4个字节是摄像机协议和云台控制命令,第5和第6个字节是云台水平速度和垂直速度命令。看上表,第3个字节内的第6位是摄像机电源开,5位:可以定义云台自动扫描,4位:摄像机屏蔽开与关;3位:光圈关;2位:光圈开;1位:聚焦近焦;0位:聚焦远焦。举例:打开光圈,那么此字节应当是04H十六进制,二进制就是00000100b。P协议第4字节云台命令和变倍命令,看滴4字节data2里的8位都有:7位是0无意义;6位是变倍广角;5位:变倍远焦;4位:云台向下;3位:云台向上;2位:云台向左;1位:云台向右;0:可能是无意义。这里没有明显云台自动命令,所以最早PELCO老大是不做云台自动转的命令在协议里。之后国内厂家为了自动,就用调用多少号预置位命令去实现自动协议。各个厂家的调用预置位或者是设置预置位号命令不同,这就是造成了今天各个厂家的云台解码器设置方法不一样。这里很令工程商和菜鸟恼火!
有时候工程商操作的时候发现云台怎么是左右反了的?这就是软件不匹配造成。A厂家技术人喜欢这样定义右命令,B厂家技术人喜欢那样定义。这就是协议之间的混乱,不严格按照PELCO老大的协议命令。自己定义的命令使用者调试异常只能找厂家解决。
讲上面的第5个字节:第5个字节是用在变速球机才有用的命令。PELCO老大把水平速度定义成00-63个级,一共64级够用了。第6个字节是垂直速度,和水平速度一样也是64个速度级。这里讲速度级,问各位使用者,控制高速球的时候,您能感觉出高速球在以64个速度在不同变化吗?不能!控制高速球转动无非是用控制键盘的摇杆或者是点鼠标,点鼠标那个就不说了,麻烦的要死!按遥控器?海康的导航键要按的频率快,云台才转的快一些,但里面也只有几个速度级而已。 讲控制键盘控制高速球,大家知道,控制键盘的摇杆3维的里面是3个电位器,左右1个,上下1个,旋转1个控制变倍。控制键盘摇杆内电位器由于精度问题,在键盘软件里一般是做6-12个速度级来控制高速球。高速球软件里也要做6-12个速度表。这样我感觉是最理想,当键盘摇杆出现偏移量,键盘发码给高速球。可想一下,键盘摇杆向右45°就到头了。说这么多,64个速度级是没有用的,但是在高速球内,开发者最好都做进去,因为你不知键盘发过来的是哪个速度。也可以用判断法,把64分成6-12个范围来接收控制。我强烈建议使用者,购买监控设备,控制端和前端最好使用1个厂家的设备。这样能省很多事情。 再回到第一个表看P协议的第7个字节是AFH,这个是结束字节标志。第8个字节是校验字节。最后再讲校验。 下面讲PELCO协议特殊命令:看表格:常用的命令我用红色表示。 第3字节 第4字节 第5字节 第6字节
Command |
Data byte 1 |
Data byte 2 |
Data byte 3 |
Data byte 4 |
Set Preset XX |
00 |
03 常用 |
00 |
01 to FF |
Clear Preset XX |
00 |
05 常用 |
00 |
01 to FF |
Go To Preset XX |
00 |
07 常用 |
00 |
01 to FF |
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 |