当前位置: 代码迷 >> 单片机 >> 串口通讯有关问题-多个终端设备
  详细解决方案

串口通讯有关问题-多个终端设备

热度:130   发布时间:2016-04-28 14:53:37.0
串口通讯问题---多个终端设备
大致说明:
一块开发板,用一个485集线器连接,该485集线器又连接了4个终端设备,可以根据终端设备的地址进行区分
在开发板上有一个串口接收程序,用来接收4个终端设备发送过来的信息

现在,我想问的是:
如果4个终端设备发送的信息,同时到达开发板串口上时,会是什么样的?
比如正常情况下,是接收到下面单独的数据
A0000001
B0000002
C0000003
D0000004

如果同时到达串口时,会不会接收到 
A0000001B0000002C0000003D0000004  这样一串???

因为我在串口里只是单独的根据正确的位数(8位)来判断是否接收到正确的数据,不是8位我直接扔掉了不做进一步处理的。
实验的时候,4个终端单独数据都能接收,但是没有办法测试 同时接收的情况,不知道会不会存在问题?




------解决方案--------------------
我查了一下资料,用了集线器也不能同时发送
------解决方案--------------------
这种模式下一般以开发板作为为 master,终端作为 slave,数据交互由 master 发起,常见协议为 modbus
------解决方案--------------------
数据之间有相应的波特率进行传输,在通常情况下以mcu的接收速率是不会出现上述乱麻的现象。不知可否,搂住可以演练一下,检验接收效果。
------解决方案--------------------
楼主 485支持一主多从通信,
你用在此处完全可以的
只是需要注意,开发板是主机,只有主机查询从机时,从机才能返回数据。同一时刻,主机只能和一个从机通讯。查询完一个从机后再查询下一个。循环查询
根本就不存在 主机同时收到四个从机数据的可能性!

------解决方案--------------------
开发板是主机,只有主机查询从机时,从机才能返回数据,否则有冲突时都是乱码!
------解决方案--------------------
485 协议的流程是

1 所有从机处于接收地址状态。

2 主机向所有从机广播某一台从机的地址。

3 地址匹配的从机进入数据接收状态,其他从机不响应。

4 主机向确定的从机发送命令。

5 接收到命令的从机执行命令并返回应答。

6 该从机返回地址接收状态。

在这个协议中,地址消息和数据消息采用不同的帧格式。

以上协议保证了在一个时间内只有一台主机或从机处于发送状态。

在你这个需求中,因为应用命令实际上只有一个,因此可以将主机向从机以数据帧发送命令的环节去掉。

以上说的,是通过 485 协议转换芯片将所有从机并联的一对总线上的。

485 集线器有两类。其中一类是每台从机从集线器连接各自的通讯线,且有背板可以缓存从机发来的数据的。如果采用这种集线器,则通过向集线器发送地址,来逐个取回各个从机的数据。具体操作要看集线器的手册。
------解决方案--------------------
我说要查集线器型号,是很可能这个集线器已经完成了多路隔离/数据缓冲,那就一点问题也没有了。否则的话,只好用四个串口来分别接收,外设不够的话,只能加一片单片机来做了。
485 通常用法是总线型,主机主控通讯。你既然有集线器,很可能是有什么功能的,不然所有设备连在一起就行了,不用集线