PC机与单片机多机主从互通的实现
首页 > 嵌入式 > PC机与单片机多机主从互通的实现     2018-11-15

0 引言

PC 机与单片机组成的主从系统很常见,在良多领域中都得到了利用。在这些系统中,PC 机与单片机之间一般采用串行通信方式,按照一定的格式,进行数据、指令的交换,完成PC机对单片机的节制、数据前送,或单片机上数据、状况等信息的回送。

当单片机数量较多时,比较容易实现PC 机对所有单片机的节制。一般在这种情况下,采用广播的方式。

所有单片机都挂在一条串行数据总线上,只需对单片机进行地址编码,PC机将地址数据以及节制报文进行广播,单片机接收广播数据后进行地址比对,筛选出所需的数据,完成相应的数据传送。

如果PC 机要对单片机多机进行广播,并回传所有单片机的信息,即单片机还要发送数据至PC机,再加之单片机数量较多(大于100 个单片机),则要实现PC 机与单片机多机的相互通信,难度是比较大的。

本文提出了一种切实可行的法子,通过实际电路搭建以及调试,实现了PC机与单片机多机的相互通信,到达了预定的目标,使该系统拥有以下功能:

(1)PC机可以对所有100多个单片机进行节制,依据需要,发送不同节制字到达每一个单片机;

(2)PC机对单片机的状况修改是随机的、没有规律的;

(3)所有单片机将自身的一些状况信息按照顺序回传至PC机。

1 互通信的几种实现法子

PC 机至多个单片机的广播比较简单,难度较大的是多个单片机发送数据至PC机。由于100多个单片机均挂在一个数据总线上,系统设计的难点就在于数据总线节制权的传递,绝对不能泛起有2个或2个以上装备同时向总线上发送数据。系统设计之初,斟酌了两种总线节制方式有接力式以及点名式:

(1)接力式总线节制方式

这种节制方式的基本思路是:初始化后,所有单片机在接收完PC机数据后,处于串行接收状况,不占用总线节制权。PC机发出回送开始指令,第1个单片机响应当指令,并立即占有总线节制权,向总线上的PC机发送数据,数据发送完成后,紧接着第1个单片机发送节制指令,通知第2个单片机,同时第1个单片机退出总线节制权,处于接收状况;第2个单片机接收到第1个单片机的开始指令后,以及前面第1个单片机同样,开始向总线上发送数据,并在收场传送以后通知第3个单片机,如斯这般,不断接力传输,轮流节制总线,直至最后一个单片机完成数据传送。在单片机节制总线,进行回传的过程中,如果要通过PC机向某个或某些单片机传送数据时,PC机软件会自动将这些数据存储下来,等到最后一个单片机接收向PC机送数据以后,PC机再占用数据总线,开始向单片机传送数据。

(2)点名式总线节制方式

该节制方式与接力式节制方式大体相同,不同的是这种节制方式需要等待PC 机点名指令。系统初始化后,单片机接收PC机指令、数据以后,PC机发送点名指令,让第1个单片机开始传送数据,第1个单片机接收该指令后,立即占用总线,开始传送数据,传送收场后,发送收场指令至PC 机,PC 机在接收该收场指令后,立即占用总线,再发送点名指令,让第2个单片机开始传送数据,如斯不断动作,直至最后一个单片机收场传送。

在单片机传送数据时,如果PC 机要送数据至单片机,可以在接收完某个单片机数据以后,暂停发送点名指令,直接发送数据至某个或某些单片机。待数据发送完成后,继续接上本来的间断的点名顺序号,继续向后点名、传送数据。综合斟酌这两种总线节制方式,不难发现,由于没有来回传递点名的指令时间开销,接力式的传输效力会略高于点名式,所以,一开始仍是采用了接力式的节制方式。

但是在进行大的系统联调时,问题泛起了。由于接力式脱离PC机的过程干预,一旦泛起某个单片机程序跑飞、死机时,整个程序就没法进行下去,一直处于等待状况,整个系统就瘫痪了。调试过程中泛起过好几次死机的情况。最后,不能不回头修改总体方案,采用点名式的节制方式。如果中间某个单片机泛起异样,没有按照预定的程序回传数据,则PC机就可以判断该单片机死机,在经历过一段等待时间后,自行跳过该单片机,点名下一个单片机,继续后续的回传以及程序。如果该故障单片机还在占用总线,影响下一个单片机的工作,则对单片机公用的复位端发送一个总体复位信号,让所有单片机复位。经由从新调剂方案后,经由长时间运行,均没有泛起整机死机的状况,总体运行情况优良。另外,这种节制方式还有其他两种节制方式所不拥有的优势:

可以随时打断回传,几近实时发送新的指令到某个或某些单片机上,该功能是非常实用的。

2 系统的硬件形成

依据系统的总体请求,构建了如图1所示的硬件平台。

整个系统采用RS 485 总线结构,RS 485 为差分平衡数字通信方式,拥有较强的抗干扰能力,广泛利用于远距离数字通信。RS 485以及RS 422A总线最大的区别是RS 485 可以单工双向传输,而RS 422A 只能单向传输数据,在本系统由于存在大量单片机,如果使用RS 422A,电缆会增添一倍。另外,由于标准的RS 485链路只可以链接32个装备,故每一个转换器上要增添驱动器。目前PC 机上已经经很难找到串口了,故PC 机与RS 485 总线之间采用PL2303 芯片进行桥接。PL2303为Prolific 公司产品,可以很方便地将USB 接口转换成标准RS 232 电平,用户根本不用关心复杂的USB 协定以及规范,在PC端的软件编程中,只需像标准com口同样使用USB口,由于Prolific公司提供的驱动中,已经经将该USB 口摹拟成了一个标准的com 口了。该芯片最高速度可以到达115 200 b/s,极大地方便了普通串行通信与PC机的连通。复位监视与读写转换电路也是一个单片机,无非该单片机只完成两个功能。一个是就是接收RS 485 总线前的PC 机TXD(RS 232 端的TXD)发出信号,一旦泛起PC机发出的全局复位串行代码后,立即发生一个全局复位信号,将所有单片机进行复位。该功能就是为了避免某个单片机泛起故障,一直意外占用总线,致使整个系统瘫痪。

主单片机采用了Silicon公司的8051F020型增强型单片机。该单片机最大的优势是内部集成的摹拟电路功能较为强大、单片机运行速度快、程序编写-烧写-仿真较为方便。

3 系统的软件形成

软件分为3个部份:PC机上位机程序、单片机通用程序以及专用单片机程序。专用单片机的程序运行在复位监视与读写转换电路中,该程序较为简单,就是在上电后,一直按照约定的波特率以及数据格式接收PC机送出的串行数据,若得到的数据相符约定的复位格式,则送出复位信号;若接收到的数据相符总线切换的格式,则送出相应的切换信号。PC 机上位机程序比较复杂,可以依据用户的实际需要,编写相关的利用程序。在本文中,采用Delphi编写了利用程序,实现了对单片机群的参数设置、状况调剂、信息反馈以及系统节制。

单片机通用程序分别运行在100多个单片机上,是实现系统功能的基础。图3为单片机程序流程图。

单片机初始化后,接收PC机送来的初始指令,然后开始运行主程序,履行单片机的主功能。同时开放串行接收间断,一旦接收到PC机发来的指令,就进行对照判断,如果是PC 机对自己的点名,则响应PC 机的回送指令,开始占用总线,向PC机传送数据,收场后向PC机发送收场状况字,收场占用总线,回到主程序,同时等待接收串行数据。

4 结语

经由大量实验,课题组利用点名式总线节制方式,成功解决了PC机与大量单片机的双向互通问题,实现了100 多个单片机与主控PC 机之间的互通信,到达了设计请求。电路经由长时间运行,实际情况表明,该系统运行不乱、节制灵活、可靠性高,采用的点名式总线节制方式拥有很好的实用价值。

 

© Copyright 吾爱微电子 | 琥珀川