一、概述
对球机等可转动监控设备来讲,云台控制是非常重要且使用很频繁的功能,因此对设备的控制命令编码也是GB28181协议中非常重要的内容,本文将详细解析GB28181中云台控制命令的编码规则。
二、编码解析
字节编号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
含义 |
A5H |
组合码 |
地址 |
指令 |
数据 |
数据 |
组合码 |
校验码 |
由于本文只讨论GB28181的内容,因此前三个字节是固定的,分别为:A5H、0FH、01H。八字节是是对前七个字节之和对256取模的结果,此处不再赘述。下面将聚焦于字节4至字节7的编码规则。
1,PTZ指令
第四字节:最高位bit7与bit6固定为0。bit5-bit4为Zoom控制段,分别控制缩小和放大;bit3-bit2为垂直方向控制段,分别控制上和下;bit1-bit0为水平方向控制段,分别控制左和右。各个控制段的比特位的值不可同时取1,否则该指令将会是无效指令。当控制段的所有比特位的值都为0时表示该控制段的所有操作都不执行。
第五字节:水平控制速度相对值。取值范围为00H-FFH。
第六字节:垂直控制速度相对值。取值范围为00H-FFH.
第七字节:该字节用于变倍控制,其高四位为变焦速度,速度范围为0H-FH。
2,预置位指令
预置位指令相对简单,其第五字节固定为00H;第六字节表示预置位编号,取值范围为00H-FFH;第四字节表示预置位操作,设置、调用、删除预置位的操作码分别是:81H、82H、83H。
3,巡航指令
巡航指令的字节5表示巡航组号,取值范围为00H-FFH;字节6表示预置位号,取值范围为01H-FFH;除设置巡航速度和设置巡航停留时间这两个指令外,字节7都是00H,否则字节7的高四位都表示参数的高四位。字节4取值及其具体指令含义为:84H-加入巡航点、85H-删除巡航点、88H-开始巡航、86H-设置巡航速度,参数为巡航速度、87H-设置巡航停留时间,参数为巡航停留时间。指令为86H/87H时,参数的取值范围为01H-FFFH。
4,扫描指令
扫描指令的字节4除设置自动扫描速度取值8AH外均设置为89H;字节5表示需要扫描的组号,取值范围为00H-FFH;字节7除设置自动扫描速度外都置为00H,否则表示速度参数的高四位;字节6为指令字节,当指令为设置自动扫描速度时表示速度参数的低八位,否则取值为:00H-开始自动扫描、01H-设置自动扫描左边界、02H-设置自动扫描右边界。
三、注意事项
1,对于所有的设备控制命令来说,停止指令只有一个,将第四至第七字节全部置为00H即可。
2,巡航指令中,巡航速度和巡航时间会受限于厂家对协议的实现程度。根据实际对接来看,厂家出于对摄像头的保护机制不会让巡航速度过快或者停留时间过短。所以我们设置该值时需要注意此问题,即命令成功发送但摄像头的实际表现和设置不一致。
3,设备控制指令下发过快也会导致指令失效。此种情况也是出于厂家对设备的保护机制。如巡航指令中设置巡航组内的各个巡航点位的停留时间和速度时,若发送过快将会导致设置丢失或不全。解决方案为保证相邻指令下发存在一定时间间隔。
4,不同厂商的不同型号的设备对上述设备控制功能实现的完备性存在一定的差异,根据实际对接经验来看,PTZ指令、预置位指令基本都会实现;巡航指令一般主流厂商也都会实现;扫描指令实现的设备较少。
5,扫描指令的左右边界应该是设置的预置位编号。由于对接中暂未接触可支持该功能的设备,此点尚未得以验证。
由于作者水平有限,欢迎各位读者留言、讨论和指正。