用户配置写入协议(UCWP)
介绍
用户配置写入协议:User Configuration Write Protocol,简称:UCWPI/O 类型:主机向设备写入 UCWP 实现功能:用户根据需求可以对设备的以太网、时间、电机等参数重新配置(用户在设置雷达 IP 时,本地 IP 与目的 IP 请勿设置为同一 IP,否则雷达将不能正常工作)。
一个完整的 UCWP Packet 的数据格式结构为同步帧头,子帧,帧尾。每个数据包共 1248byte:包括 2bytes UDP 封包开支,8byte 同步帧头 Header ,1238byte 的 Data,以及 2byte 帧尾组成。需要注意的是,用户配置写入成功后,除电机转速会在用户配置包发送成功后立即改变,其余配置信息需断电才能使配置生效,否则雷达将以之前的配置继续工作。配置写入协议中数据均采用大端模式。
具体内容遵照的协议参考下表:
表 8 UCWP Packet 的数据格式结构
段落划分 | 序号 | 信息 | Offset | 长度(byte) |
---|---|---|---|---|
Header | 0 | UCWP 识别头 | 0 | 8 |
Data | 1 | 电机转速 | 8 | 2 |
Data | 2 | 以太网 | 10 | 26 |
Data | 3 | 预留 | 36 | 10 |
Data | 4 | 雷达旋转/静止 | 46 | 2 |
Data | 5 | 兼容 Velodyne | 48 | 2 |
Data | 6 | 设备流发包间隔数 | 50 | 2 |
Data | 7 | 预留 | 52 | 1152 |
Tail | 8 | 帧尾 | 1204 | 2 |
3.0 头部
注:
表中 Header( UCWP 识别头)为 0xAA,0x00,0xFF,0x11,0x22,0x22,0xAA,0xAA,
其中 Header 前 4 个字节作为包的检查序列,即 0xAA,0x00,0xFF,0x11。Tail 帧尾内容为 0x0F,0xF0。
3.1 电机
表 9 电机寄存器定义
电机转速寄存器(共 2bytes) |
---|
序号 | Byte1 | Byte2 |
---|
功能 | Motor |
---|
寄存器说明:
(1)本寄存器用以配置电机转向和电机转速;
(2)数据存储采用大端模式;
(3)配置转速列表如下:
(byte10x04) && (byte20xB0):转速 1200rpm,顺时针旋转;
(byte10x02) && (byte20x58):转速 600rpm,顺时针旋转;
(byte10x01) && (byte20x2C):转速 300rpm,顺时针旋转;
配置其他数据,电机转速皆为 0。
代码详情
这部分代码我暂时只贴了用户配置写入协议通过UDP方式传输给雷达,并改变其转速,转速默认设置为5,10,20Hz。
后续我会把全部驱动代码放在github下。
void LslidarC16Driver::change_frequency(double Hz)
{
u_char UCWP_buff[1206] = {
};
char recvBuf[1206] = {