51uwb.cn

 找回密码
 立即注册
楼主: liuchunhui321
打印 上一主题 下一主题

关于UWB定位频率的问题

[复制链接]

35

主题

965

帖子

4052

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4052
楼主
发表于 2021-10-27 23:05:50 | 显示全部楼层
sdfb6868 发表于 2021-10-27 11:03
哎,不对啊,要是5HZ的刷新,也是很难撞车啊,一般要到容量上限附近才会经常撞车

http://51uwb.cn/forum.php?mod=vi ... hlight=%B8%FC%D0%C2
这里有个重要更新,看你的代码是否有合入,如果没有,你合入再试试。
回复

使用道具 举报

35

主题

965

帖子

4052

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4052
沙发
发表于 2021-12-12 09:59:20 | 显示全部楼层
关于你的这个问题,我们这边进行了复现。
发现当合入之前的更新后,为了处理多区域干扰问题,无法处理多标签冲突问题了。
具体原因:
  1. //    dwt_setinterrupt(DWT_INT_RFCG , 1);
  2. //    dwt_setautorxreenable(1);
复制代码
这个代码的意思是,只有当接收成功后,上传中断给软件。
而我们软件流程中会处理节点冲突
  1.         if(!(status_reg & SYS_STATUS_RXRFTO))//
  2.             Tag_receive_poll = 1;//
  3.         dwt_write32bitreg(SYS_STATUS_ID, (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR));
复制代码
上面表示,当产生任何接收异常,将认为标签和其他标签产生冲突,产生冲突的原因就是因为同时发送了,而发送是通过定制器控制的,那当产生冲突后,微调一下定制器,让产生冲突的标签延后一点,具体代码
  1.         else
  2.         {
  3.             HAL_TIM_Base_Stop(&htim3);
  4.             TIM3->ARR = TIM3_Delay_Step*((SHORT_ADDR%10)+1);//random delay
  5.             Tag_receive_poll = 0;
  6.         }
复制代码

以上就是多标签冲突避免机制。

之前让你加的更新,导致软件无法收到接收异常(硬件配置后只报告接收正常)。导致冲突处理机制不能工作,相互冲突的标签不做处理,每次都是冲突的。表象就是某些标签一直不更新距离信息,看起来像死机一样。

以上分析,如果多个标签,尽量使用更新以前的代码

  1.     dwt_setinterrupt(DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO /*| DWT_INT_RXPTO*/), 1);
  2. //    dwt_setinterrupt(DWT_INT_RFCG , 1);
  3. //    dwt_setautorxreenable(1);
复制代码
如果是一个标签,多个区域定位,可以加入更新。

另外一个注意的问题是,标签编译地址尽量错开,因为我们的delay是模低地址

  1. TIM3->ARR = TIM3_Delay_Step*((SHORT_ADDR%10)+1);//random delay
复制代码
实际编译地址可以选用1001 1003 1005 依次类推。

我们实际测试效果如下:


另外补充一下,上面也提到了原理部分,冲突避免是一个“自适应”过程,当模块刚刚上电后,可能某些标签会同时发送产生冲突,会相互干扰。这个时候会有一段时间的自适应调整过程,一般根据标签多少会有一定时间消耗。慢慢逐步稳定下来。


通信信息个数统计:
每个标签和每个基站测距一次需要3条信息。6个标签*4个基站*5 = 120,每个信息发送时间槽只有8个ms左右,而信息本身需要几个ms发送,相互之间空闲时间槽其实已经非常小了。 这个配置基本算是TWR的极限了。











回复

使用道具 举报

35

主题

965

帖子

4052

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4052
板凳
发表于 2021-12-12 10:01:11 | 显示全部楼层
蓝点无限 发表于 2021-10-27 23:05
http://51uwb.cn/forum.php?mod=viewthread&tid=365&highlight=%B8%FC%D0%C2
这里有个重要更新,看你的 ...

这个更新暂时不要合入
回复

使用道具 举报

35

主题

965

帖子

4052

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4052
地板
发表于 2021-12-15 22:34:44 | 显示全部楼层
liuchunhui321 发表于 2021-12-14 08:50
我把之前的更新取消了,tx_main_c中有定时器3中断回调函数中包含   
else
        {

这个部分不能注释掉
这个功能是当标签发送信息发现数据冲突后,重新对定时器做微调,以达到避免冲突
回复

使用道具 举报

35

主题

965

帖子

4052

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4052
5#
发表于 2021-12-19 19:45:07 | 显示全部楼层
liuchunhui321 发表于 2021-12-17 18:37
而且我不太理解我一个标签数据貌似不太对ANC0 range靠近880000,程序本身没有错

为何你的图片,tag 都是tag5,你的标签id配置有问题吗?
回复

使用道具 举报

35

主题

965

帖子

4052

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4052
6#
发表于 2021-12-22 22:35:58 | 显示全部楼层
liuchunhui321 发表于 2021-12-21 17:59
我的tagID为0x0025,0x0015,0x0035,0x0045,0x0055,0x0065,所以显示都是5

你这个改法不好,如下代码,delay延时用的短地址模10,你的地址所有delay都是一样的,没有随机效果了。
  1. else
  2.         {
  3.             HAL_TIM_Base_Stop(&htim3);
  4.             TIM3->ARR = TIM3_Delay_Step*((SHORT_ADDR%10)+1);//random delay
  5.             Tag_receive_poll = 0;
  6.         }
复制代码


下面是之前帖子回复的正确设置短地址的方法
  1. 另外一个注意的问题是,标签编译地址尽量错开,因为我们的delay是模低地址

  2.     TIM3->ARR = TIM3_Delay_Step*((SHORT_ADDR%10)+1);//random delay

  3. 复制代码
  4. 实际编译地址可以选用1001 1003 1005 依次类推。
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

bphero Inc.  

GMT+8, 2024-5-2 13:32 , Processed in 0.015908 second(s), 6 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表