485通讯采用分片轮询是否可行?
有个项目是对100多个点通讯,要求反映时间在20毫秒内,用CAN当然好,问题是不会,学起来恐怕要一段时间。用485轮询的办法实在太慢。我设想用分片轮询的方式不知道可行不? 方法是这样,比如对128个点,先寻前64个点,有回应(不管回应是什么)就再寻前32个,有回应再寻前16个,有回应再寻前8个,。。。。。这样只需几次轮询就能找到有事件的点,再与这个点进行通信。 最好的方式是使用突发模式,即主机并不轮询,通讯由从机发起,但这样可能造成冲突,所以要先侦测总线的占用,然后在空闲时尽快发起会话,如果是通讯密集型网络则不能用突发模式,只能改用高速网络。 我用过这种方式:主机发2个字节的握手信号,分机点根据自己的地址延时例如(30-50us * 地址),分机会检查总线是否被占用,如果分机有报警信息,且总线没被占用开始发数据,后面的点即使有故障总线占了也不在发数据。不过这个数据只限于告诉主机分机有问题了,具体问题主机还要针对分机发查询命令。这个方式我只做过样机延时最多40多点,没做过多的,也没有测试会不会出大问题,反正演示还可以。
我建议楼主还是用CAN,毕竟用485占先方式软件要做很多其它的工作,要写软件、测试, 这个时间不会短了,我估计甚至比你你学习CAN时间要长,所以建议用CAN 楼主,你的方法无非就是二分法排序、冒泡排序之类的问题,方法本身没有问题,只不过通讯一频繁就没什么差别了。
页:
[1]