485通信轮巡问题

simon__sun 2013-05-20 12:00:10
要同时和700台485设备进行实时通信,大家有什么好的解决方法不?
...全文
785 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
贝隆 2013-05-23
  • 打赏
  • 举报
回复
楼上所言,即串口服务器也!
现在还是人类 2013-05-23
  • 打赏
  • 举报
回复
可以做一台总控主机,电脑与总控主机通讯,总控主机负责通讯任务对列与从机进行多机通讯,将通讯结果缓存到外部扩展RAM中,电脑要指定从机数据时,就先把缓存数据发过去,然后将指定从机的通讯任务优先级别提高,然后排序任务,当执行完指定从机的通讯任务后,又自动把该从机任务加入到队列最后部分,并把优先级别设为普通级别,然后主动向电脑更新指定从机的数据。普通的U在扩展支持和速度上可能跟不上需求,所以建议用C8051F320或更高版本的U来弄,当然用ARM就更好。这样做的好处是在多机通讯上有很好的效率保障,因为电脑做这种通讯效率会根据电脑系统当时的任务量、资源占用情况以及硬件配置等有关,所以通讯效率与理论通讯时间会有很大的差距。而用单片机或ARM7这种硬件,如果不上系统,就没有这种多余的任务拖慢执行效率,所以能更好更稳定的在最短的时间内完成通讯和相关处理过程,毕竟一块U就只是在为你一个程序工作,而电脑还要为操作系统的n个进程调度、内存管理、驱动通讯、接口整合等事务做处理,而且你的是应用程序,优先级别还那么低,所以直接在这种硬件上处理效率会更高、稳定性也会更强,就是前提是要会这种单片机开发。
贝隆 2013-05-23
  • 打赏
  • 举报
回复
引用 13 楼 SupermanKing 的回复:
[quote=引用 12 楼 Veron_04 的回复:] 楼上所言,即串口服务器也!
呵呵,我还真不知道这就叫串口服务器,我只是以前有个项目,也是要做一堆的无线终端设备做信息采集和控制,然后就想了这个方案作为架构解决问题,最后的确得到很好的效果,呵呵。[/quote] 这在工控领域应用很广泛的,尤其是对那种下位机很多,且分布很广的情况,特别有用。可以构建无线网络实现通信。
现在还是人类 2013-05-23
  • 打赏
  • 举报
回复
引用 12 楼 Veron_04 的回复:
楼上所言,即串口服务器也!
呵呵,我还真不知道这就叫串口服务器,我只是以前有个项目,也是要做一堆的无线终端设备做信息采集和控制,然后就想了这个方案作为架构解决问题,最后的确得到很好的效果,呵呵。
笨狗先飞 2013-05-22
  • 打赏
  • 举报
回复
如果是以太网下的虚拟串口通讯,我觉得还是多虚拟些吧,每个串口都搞个线程管理,至少网速上应该来得及,只是电脑这边的处理速度可能会跟不上
贝隆 2013-05-22
  • 打赏
  • 举报
回复
楼主可以重点了解一下带网络接口的串口服务器,把通讯人物交给串口服务器,上位机通过网口和串口服务器实现高速通讯
贝隆 2013-05-22
  • 打赏
  • 举报
回复
这么多下位机,显然必须要用串口服务器才行
of123 2013-05-21
  • 打赏
  • 举报
回复
这样多的从机,肯定不能用级联方式,而要用从机并联方式 485 通讯协议: * 主机首先用地址帧格式发送目标地址。所有从机接收地址; * 与目标地址相符的从机进入命令等待格式;其他从机进入 Idle 模式,等待下一个地址广播; * 主机用数据帧格式向选定从机发送命令和数据(可选); * 活动的从机接收并处理命令,返回应答。 * 主机返回地址广播模式,活动从机返回等待地址广播状态。
Tiger_Zhao 2013-05-21
  • 打赏
  • 举报
回复
还有轮询不能按理想情况估算,设备不可能立即响应的,上位机和设备需要修改同一个数据时,必定会产生等待。
你这么多设备,累积的等待会很可观,没有板卡可不行。
笨狗先飞 2013-05-20
  • 打赏
  • 举报
回复
485设备最多一个节点挂32个设备,你700多个设备的话十几个串口不够的
worldy 2013-05-20
  • 打赏
  • 举报
回复
估算一下,如果15个端口9600bps,在2秒里轮训完成,不考虑延时,不考虑通信错误情况,则每次应答不得超过41个字节,
Tiger_Zhao 2013-05-20
  • 打赏
  • 举报
回复
肯定是需要硬件解决。
呈树状分布,分担负载:
485设备上接n口板卡,负责最基本的数据缓存。
每个板卡接一台电脑,负责轮询板卡的各个端口。
轮询的电脑与最高的根电脑通讯,可以通过 FTP 文件的方式,能充分利用网卡的传输速度。
根电脑轮询文件。
simon__sun 2013-05-20
  • 打赏
  • 举报
回复
只能用一台电脑, 多个需拟串口 串口数估计在10到15个左右 波特率是9600,实时的意思就是轮巡基本不延时 2秒内轮巡到所有机器
worldy 2013-05-20
  • 打赏
  • 举报
回复
说的很笼统,多少时间轮训一次算是实时?通信的数据长度的多少,通信距离多长,或者说系统能做的最高通信波特率能设到多大?700台是个大数量,估计你需要设置多台电脑,每台电脑设置多个端口,或者,使用专用的485板卡,每个板卡上有n个485端口 估算 每设备访问最小时间:(发+收)字节数*10/波特率 轮询时间 :每设备访问最小时间*n (n为每个485端口管控的设备数) /(2/3) (2/3)为考虑访问出错可能引起的重发之类的时间后的系数 然后参照你的要求的性能参数,设置电脑数,每台电脑的端口数

864

社区成员

发帖
与我相关
我的任务
社区描述
VB COM/DCOM/COM+
c++ 技术论坛(原bbs)
社区管理员
  • COM/DCOM/COM+社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧