极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 19398|回复: 13

紧急求助,关于无线收发模块APC220一点对多点通讯的问题

[复制链接]
发表于 2014-8-13 21:24:58 | 显示全部楼层 |阅读模式
在做一个项目:
      下位机是多根传感器组成的杆子、FPGA和无线收发模块APC220-43的发送模块(其中每根杆子都配有一个FPGA和APC220的发送和接收模块),其中APC220插在FPGA板上,现在想在各个杆子的APC220发送数据的时候能设定一个优先级顺序,实现每根杆子能“通信交流”,来决定谁先发送。
     这个怎么解决,求助求助
回复

使用道具 举报

 楼主| 发表于 2014-8-13 22:03:04 | 显示全部楼层
我查了下,使用说明中APC220-43 的通信信道是半双工的,可以完成一点对一点,一点对多点的
通讯。这二种方式首先需要设1个主站,其余为从站,所有站点都必须设置一
个唯一的地址。通信的协调由主站控制,主站采用带地址码的数据帧发送数据
或命令,所有从站全部都接收,并将接收到的地址码与本机地址码比较,地址
不同则将数据丢掉,不做响应,若地址码相同,则将接收的数据传送出去。组网必须保证在任何一个瞬间,同一个频点通信网中只有一个电台处于发送状态,
以免相互干扰。APC220-43 可以设置多个频道,所以可以在一个区域实现多个
网络并存。
但是不是我想要的那样
回复 支持 反对

使用道具 举报

发表于 2014-8-14 10:43:25 | 显示全部楼层
那就时分呗,轮流发?

对实时性要求很高么
回复 支持 反对

使用道具 举报

发表于 2014-8-14 11:35:52 | 显示全部楼层
3楼说的是对的
分时复用技术
不过这样实时性会下降(下降程度待考察,因为是随着分时客户端的数量增加 延迟增加)
原理大概是:
首先需要通讯的从设备(就是你所谓的杆,说实话 还是不理解什么叫“杆”) 发送一个请求包 ,
主设备一直轮询问是否有收到请求包,本时间只有一请求则回传一个响应包,然后开始双向通讯。如果通讯中间又收到请求包则丢包或者返回忙信号。
客户端如果收到忙信号则延迟XXX时间重新发送请求包。
一般通讯模块这类底层操作都是由模块自身完成的 对单片机透明(单片机只管处理接收的数据 而不用关心数据是什么流程过来的 怎么过来的 看到的只是通讯数据) 所以你人为干预的可能性表示疑问(APC200我不熟)

其实如果要求及时性什么的不高 用WIFI方式也是一种比较不错的选择 上位机是服务器的话 实时度也其实不会太差。而且性能更强大
回复 支持 反对

使用道具 举报

发表于 2014-8-14 11:42:06 | 显示全部楼层
还有就是 你强调了 “但是不是我想要的那样”
最好说清楚你要哪样。。。
提问题最好是选择题 然后是判断题 再次就是填空题 最差是问答题
可是你这个命题 完全是模糊的。。。 只说不是你要的那样。。。如果别人这么问问题 你会咋样分析呢?
回复 支持 反对

使用道具 举报

发表于 2014-8-14 11:45:31 | 显示全部楼层
通讯模式 一般3种模式
单工  就是类似于收音机这种模式 一方发送一方接收 不可逆转
半双工 就好像对讲机 同时只能一个设备发送 ,另一个设备必须等待通讯完成才能继续发送(信道为空 才可以发送)
全双工 就是双向通讯 互不干扰 类似于现在的电话。

好处是单工的实施成本低
半双工相当于2个单工  但是共用一个信道  好处是节约信道。
全双工实际上是2个单工 但是用了2个信道 相互不干扰。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-15 20:03:26 | 显示全部楼层
darkorigin 发表于 2014-8-14 11:35
3楼说的是对的
分时复用技术
不过这样实时性会下降(下降程度待考察,因为是随着分时客户端的数量增加 延 ...

首先非常非常感谢你
我先解释一下“杆子”,其实那个就是把16个红外传感器连在一个杆子上,从上到下均匀排列。我简称杆子
其次,就是我们想实现的是,如果有一个区域A,它的主节点是上述的一个杆子,子节点还有3个相同的杆子,每根杆子都带有一个无线收发模块即APC220-43,现在假设子节点的3根杆子都同时接收到数据,我们为了避免功耗和数据量,现在想让子节点的3根杆子能“通信”从而决定优先级,哪个杆子先发,哪个杆子的数据后发送到主节点的杆子上。
【注:每根杆都附有一块FPGA板子和APC220】
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-15 20:14:45 | 显示全部楼层
zoologist 发表于 2014-8-14 10:43
那就时分呗,轮流发?

对实时性要求很高么

轮流发的顺序怎么决定啊
回复 支持 反对

使用道具 举报

发表于 2014-8-16 14:31:00 | 显示全部楼层
清水布衣 发表于 2014-8-15 20:03
首先非常非常感谢你
我先解释一下“杆子”,其实那个就是把16个红外传感器连在一个杆子上,从上到下均 ...

你这种构想比较类似于令牌环的方式
源于早期的令牌环网络。
由各系统轮流获取通讯信道的使用权。使用后传给下一个。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-17 23:23:21 | 显示全部楼层
darkorigin 发表于 2014-8-16 14:31
你这种构想比较类似于令牌环的方式
源于早期的令牌环网络。
由各系统轮流获取通讯信道的使用权。使用后 ...

我查了下,令牌环的传输方法是:发送数据时会由掌握令牌的电脑先发送数据。接收数据的电脑会检查frame表头,若是送给自己的则处理之。无论是否是送给自己的,都会再传下去,传一圈后检查数据是否相同以确定数据没有传输错误。待送完数据后可以依需要调整令牌的优先度(改得比自己的优先度低),再把令牌传递到下一台电脑。若接收到令牌但优先度较自己的高,则要把令牌传递到下一台电脑。
也就是说:它有多个接收端,但是我们设想的是:只有一个接收端,但有多个发送端,怎么判断发送端先先发送?
回复 支持 反对

使用道具 举报

发表于 2014-8-18 09:50:03 | 显示全部楼层
本帖最后由 darkorigin 于 2014-8-18 11:23 编辑
清水布衣 发表于 2014-8-17 23:23
我查了下,令牌环的传输方法是:发送数据时会由掌握令牌的电脑先发送数据。接收数据的电脑会检查frame表头 ...


思路:
你的主单片机作为控制方
控制方轮询每个单片机,比如 按照优先级排列是
G1 G2 G3......G10
你可以 按照以下顺讯轮询
先按照正常顺序轮询
G1 G2.......G10
中间如果遇到其他请求则产生一个中断信号
中断程序判断其优先级 高于本轮询的对象或者通讯对象 则停止当前数据传输立刻进行此高优先级设备的处理
处理完成后要求之前通讯的机器重新进行通讯。



优先级在轮询程序的列表里面确定。
比如G1 可以中断G2-G10所有设备的通讯
G2则可以中断除了G1之外的所有设备
如此类推!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-24 10:09:32 | 显示全部楼层
darkorigin 发表于 2014-8-18 09:50
思路:
你的主单片机作为控制方
控制方轮询每个单片机,比如 按照优先级排列是

抱歉,我最近回家了一次,家里没有网
其实你这个轮询就是我们本来的想法,但是觉得不能自动智能,而且耗时
后来我想了想,不知道能不能根据波特率来设定,即每个波特率对应一根杆子,这样可根据波特率来识别~~~
回复 支持 反对

使用道具 举报

发表于 2014-8-24 15:28:36 | 显示全部楼层
通常低速率的通信用这种无线模块,高速率的可以选择wifi模块

多站之间的协调有两种方式
一种是由主站进行轮询,轮询到的从站可以发送数据,每次发送数据的长度适当限制
第二是由从站在在发送数据之前进行申请,申请成功的占用信道进行通信,失败的等待随机的时间后重新申请
回复 支持 反对

使用道具 举报

发表于 2014-8-25 00:28:18 | 显示全部楼层
清水布衣 发表于 2014-8-24 10:09
抱歉,我最近回家了一次,家里没有网
其实你这个轮询就是我们本来的想法,但是觉得不能自动智能,而且 ...

不太可能 波特率错误 收到的都是乱码
每个试 更费时
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-14 11:42 , Processed in 0.042224 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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