加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

详解PELCO-P\D协议(软件编程篇)

(2012-09-04 11:24:16)
标签:

云台

字节

高速球

预置

协议

杂谈

分类: 嵌入式系统设计之软件

                                     

     监控行业通信协议应用最广的协议就是美国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

00

11  不常用

00

01 to 08

Zone End

00

13  不常用

00

01 to 08

Write char to screen

00

15  不常用

0 to 28

0 to 7F

Clear Screen

00

17  不常用

00

00

Alarm Ack

00

19  不常用

00

01 to 08

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


上表主要用到的是预置位设置与调用和清除,在高速球里还有flip自动翻转,还有控制室外解码器的雨刷开关AUX命令打开与关闭。第4字节设置预置位是03H,调用预置位是07H,清除预置位是05H。打开雨刷继电器是09H,关闭雨刷是0BH。上面第6字节是预置位的设置和调用范围可以是01-255个。自己也可以定义1024个或者64个。后面有范围的数字都可以自己定义。但是第4字节不要自己定义,否则会乱的。 

特殊命令,存在第4个字节里: 

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-P协议各个命令字节帧
1、1帧也叫1串命令,指主控设备发出1串命令叫1帧,包含8个字节。波特率是1200-9600bit/s
    例子如下:PEOCO-P 协议

地址1号:雨刷命令
AUX1-ON:  A0 01 00 09 00 01 AF 06       OFF:A0 01 00 0B 00 01 AF 04
AUX2-ON:A0 01 00 09 00 02 AF 05        OFF:A0 01 00 0B 00 02 AF 07
AUX3-ON:  A0 01 00 09 00 03 AF 04       OFF:A0 01 00 0B 00 03 AF 06
AUX4-ON:  A0 01 00 09 00 04 AF 03       OFF:A0 01 00 0B 00 04 AF 01

11号地址:  地址是0B
AUX1-ON:A0 0B 00 09 00 01 AF 0C                 OFF:A0 0B 00 0B 00 01 AF 0E

摄像机命令,地址1号:
close:    A0 01 08 00 00 00 AF 06     停止:A0 01 00 00 00 00 AF 0E
open:    A0 01 04 00 00 00 AF 0A     停止:A0 01 00 00 00 00 AF 0E
near:     A0 01 02 00 00 00 AF 0C     停止:A0 01 00 00 00 00 AF 0E
far:       A0 01 01 00 00 00 AF 0F      停止:A0 01 00 00 00 00 AF 0E
tele:      A0 01 00 20 00 00 AF 2E     停止:A0 01 00 00 00 00 AF 0E
wide:     A0 01 00 40 00 00 AF 4E     停止:A0 01 00 00 00 00 AF 0E
up:       A0 01 00 08 00 01 AF 07     停止:A0 01 00 00 00 00 AF 0E
down:   A0 01 00 10 00 01 AF 1F     停止:A0 01 00 00 00 00 AF 0E
left:      A0 01 00 04 01 00 AF 0B     停止:A0 01 00 00 00 00 AF 0E
right:    A0 01 00 02 01 00 AF 0D     停止:A0 01 00 00 00 00 AF 0E

preset #1: A0 01 00 03 00 01 AF 0C  设1号预置位
call #1:     A0 01 00 07 00 01 AF 08   调1号预置位
menu    A0 01 00 03 00 5F AF 52    打开菜单
tour: 预置位巡航,调76号预置位,字节定义的76: A0 01 00 07 00 4C AF 45  
                                                           停止:A0 01 00 07 00 60 AF 69
scan: 两点扫描或者水平扫描,字节定义99号预置位,16进制是63: A0 01 00 07 00 63 AF 6A  
                                                           停止:A0 01 00 07 00 60 AF 69

补充:关于校验位:下面这句是PELCO-P协议英文资料最后一句话。P协议校验位是字节2-6的异或,应当是22而不是17。在我上面的例子里,校验位是从第1字节到第7字节的异或,如:A0 01 00 03 00 5F AF 52
       A0  01 00 03 00 20 AF 17 (the last byte is the XOR sum of bytes 2 through 6)

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有