首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

485通信轮巡有关问题

2013-06-25 
485通信轮巡问题要同时和700台485设备进行实时通信,大家有什么好的解决方法不?[解决办法]说的很笼统,多少

485通信轮巡问题
要同时和700台485设备进行实时通信,大家有什么好的解决方法不?
[解决办法]
说的很笼统,多少时间轮训一次算是实时?通信的数据长度的多少,通信距离多长,或者说系统能做的最高通信波特率能设到多大?700台是个大数量,估计你需要设置多台电脑,每台电脑设置多个端口,或者,使用专用的485板卡,每个板卡上有n个485端口

估算
每设备访问最小时间:(发+收)字节数*10/波特率 
轮询时间 :每设备访问最小时间*n (n为每个485端口管控的设备数) /(2/3) 
(2/3)为考虑访问出错可能引起的重发之类的时间后的系数

然后参照你的要求的性能参数,设置电脑数,每台电脑的端口数
[解决办法]
肯定是需要硬件解决。
呈树状分布,分担负载:
485设备上接n口板卡,负责最基本的数据缓存。
每个板卡接一台电脑,负责轮询板卡的各个端口。
轮询的电脑与最高的根电脑通讯,可以通过 FTP 文件的方式,能充分利用网卡的传输速度。
根电脑轮询文件。
[解决办法]
估算一下,如果15个端口9600bps,在2秒里轮训完成,不考虑延时,不考虑通信错误情况,则每次应答不得超过41个字节,
[解决办法]
485设备最多一个节点挂32个设备,你700多个设备的话十几个串口不够的
[解决办法]
还有轮询不能按理想情况估算,设备不可能立即响应的,上位机和设备需要修改同一个数据时,必定会产生等待。
你这么多设备,累积的等待会很可观,没有板卡可不行。
[解决办法]
这样多的从机,肯定不能用级联方式,而要用从机并联方式 485 通讯协议:

* 主机首先用地址帧格式发送目标地址。所有从机接收地址;
* 与目标地址相符的从机进入命令等待格式;其他从机进入 Idle 模式,等待下一个地址广播;
* 主机用数据帧格式向选定从机发送命令和数据(可选);
* 活动的从机接收并处理命令,返回应答。
* 主机返回地址广播模式,活动从机返回等待地址广播状态。




[解决办法]
如果是以太网下的虚拟串口通讯,我觉得还是多虚拟些吧,每个串口都搞个线程管理,至少网速上应该来得及,只是电脑这边的处理速度可能会跟不上
[解决办法]
这么多下位机,显然必须要用串口服务器才行
[解决办法]
楼主可以重点了解一下带网络接口的串口服务器,把通讯人物交给串口服务器,上位机通过网口和串口服务器实现高速通讯
[解决办法]
可以做一台总控主机,电脑与总控主机通讯,总控主机负责通讯任务对列与从机进行多机通讯,将通讯结果缓存到外部扩展RAM中,电脑要指定从机数据时,就先把缓存数据发过去,然后将指定从机的通讯任务优先级别提高,然后排序任务,当执行完指定从机的通讯任务后,又自动把该从机任务加入到队列最后部分,并把优先级别设为普通级别,然后主动向电脑更新指定从机的数据。普通的U在扩展支持和速度上可能跟不上需求,所以建议用C8051F320或更高版本的U来弄,当然用ARM就更好。这样做的好处是在多机通讯上有很好的效率保障,因为电脑做这种通讯效率会根据电脑系统当时的任务量、资源占用情况以及硬件配置等有关,所以通讯效率与理论通讯时间会有很大的差距。而用单片机或ARM7这种硬件,如果不上系统,就没有这种多余的任务拖慢执行效率,所以能更好更稳定的在最短的时间内完成通讯和相关处理过程,毕竟一块U就只是在为你一个程序工作,而电脑还要为操作系统的n个进程调度、内存管理、驱动通讯、接口整合等事务做处理,而且你的是应用程序,优先级别还那么低,所以直接在这种硬件上处理效率会更高、稳定性也会更强,就是前提是要会这种单片机开发。

热点排行