实现三个采集板数据传送到一个显示屏的方案
实现三个采集板数据传送到一个显示屏的方案
要实现三个相同采集板的数据都传送到一个显示屏上,可行的方案:
方案:串行通信(推荐)
-
硬件连接:
- 使用RS485总线连接(适合较长距离)
- 或使用UART串口通过分时复用方式连接
- 每个采集板设置不同的设备地址
-
通信协议:
- 采用Modbus RTU等标准协议
- 自定义协议,也可以
- 显示屏作为主站(Master),轮询三个采集板(Slave)
-
优点:
- 布线简单
- 扩展性好
- 抗干扰能力强(特别是RS485)
具体实施建议
对于大多数工业应用,**方案(RS485总线)**是最可靠和经济的解决方案:
-
连接示意图:
显示屏(主站) <---RS485总线---> 采集板1(从站1)|+----> 采集板2(从站2)|+----> 采集板3(从站3)
-
实现步骤:
- 配置各采集板的唯一地址(如1,2,3)
- 显示屏按地址轮询各采集板
- 采集板只在被寻址时响应
- 显示屏汇总并显示所有数据
-
注意事项:
- 总线两端需加终端电阻(120Ω)
- 使用双绞线作为通信线缆
- 避免总线过长(RS485建议不超过1200米)
从机的地址设置方法:
硬件设置方式,拨码开关设置(推荐)
每个采集板安装二进制拨码开关(如4位DIP开关)
通过开关组合设置不同地址(如0001=1,0010=2,0011=3)
优点:直观、不易丢失设置
主机主要工作:
- 主机看从机板子的拨码开关后,知道三个从机的地址。
- 使用for循环或者状态机,每隔1S,向从机发生要数据的命令,此命令带着从机的地址。从机们收到此条命令,和自己的地址匹配,匹配上了,给主机回复数据,匹配不上地址,不理睬主机的命令。
for(i=current_poll_index;i<3;i++)
{ 。。。 。。。send_frame(slaves[current_poll_index].addr, 0, FUNC_READ_DATA, NULL, 1);。。。 。。。
}
- 串口中断接受到从机数据,解析,并且按地址分类,在屏上显示不同主板的数据。
从机主要工作:
- 用拨码开关设置自己的地址,软件读取拨码开关的值,知道自己的地址。
- 等待接受主机要数据的命令,从机们收到此条命令,和自己的地址匹配,匹配上了,给主机回复数据,匹配不上地址,不理睬主机的命令。
还有特殊情况,从机没有拨码开关,自身地址是随机产生的。
这个时候,主机要得到从机的地址,就要给三个从机广播(给三个从机同时发送要地址的命令),然后从机接受到命令后,先随机延时(避免数据线冲突),再将自己的地址发送给主机。
主机接受到各个从机的地址后,带上地址给从机发生要数据的命令(这个步骤就和上面一样了)。