您当前的位置:首页 > 百科

PC机与单片机多机如何互通(这些方法拿走不谢)

时间:2023-02-09 15:13:36

PC机与单片机多机如何互通(这些方法拿走不谢)

为了实现PC机与多台单片机的通信,特别是当多台单片机需要向PC机传输数据时,课题组采用了“点名”的总线控制方式。单片机收到PC机发来的“点名”指令后,开始控制总线,向PC机传输数据。数据传输完毕后,通知上位机,退出总线控制,上位机会逐个发送“点名”指令。根据这一思想,构建了相应的电路。经过不断的实验、调试和改进,该系统稳定可靠。“点名”多机互通模式非常适合多台单片机需要向pc机传输数据的场合,具有很高的实用价值。

0简介

PC机和单片机组成的主从式系统非常普遍,在许多领域得到了应用。在这些系统中,PC机与单片机之间一般采用串行通信,按照一定的格式交换数据和指令,从而完成PC机对单片机的控制、数据转发,或者单片机上数据和状态信息的反馈。

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

所有的单片机都挂在一条串行数据总线上,只需要对单片机的地址进行编码,PC机就会广播地址数据和控制信息。单片机接收到广播数据后,会比较地址,筛选出需要的数据,完成相应的数据传输。

如果PC机要广播单片机,发回单片机的所有信息,即单片机要向PC机发送数据,而且单片机数量多(100个以上),很难实现PC机与单片机的通信。

本文提出了一种实用的方法。通过实际的电路搭建和调试,实现了PC机与单片机的通信,达到了预定的目标,使系统具有以下功能:

(1)1)pc机可以控制全部100多台单片机,并根据需要向每台单片机发送不同的控制字;

(2)2)PC对单片机的状态修改是随机无规律的;

(3)所有单片机都按顺序向PC机发回自己的一些状态信息。

两个系统相互通信的几种实现方法

从PC机向多台单片机广播相对简单,但多台单片机向PC机发送数据比较困难。由于一条数据总线上挂着100多台单片机,系统设计的难点在于数据总线控制权的转移。两个或多个设备同时向总线发送数据是绝对不可能的。在系统设计之初,考虑了两种总线控制模式:继电器控制和点名控制:

(1)中继总线控制模式

这种控制模式的基本思想是:初始化后,所有单片机接收到PC数据后都处于串行接收状态,不占用总线控制权。PC机发出回送启动命令,第一个单片机响应命令,立即控制总线,在总线上向PC机发送数据。数据传输完成后,第一单片机发送控制命令通知第二单片机,同时第一单片机退出总线控制,处于接收状态。第二个微控制器收到第一个微控制器的启动指令后,和第一个微控制器一样,开始向总线发送数据,传输结束后通知第三个微控制器,以此类推,不断中继传输,轮流控制总线,直到最后一个微控制器完成数据传输。在控制单片机总线并回传的过程中,如果要通过PC机向一台或多台单片机传输数据,PC机软件会自动存储数据。最后一个单片机接收到发送给PC机的数据后,PC机会占用数据总线,开始向单片机传输数据。

(2)点名总线控制模式

这种控制方式和接力控制方式基本相同,不同的是这种控制方式需要等待PC机点名。系统初始化后,单片机接收到PC机的指令和数据后,PC机发出点名命令,使第一个单片机开始传输数据。第一个MCU收到这个命令后,立即占用总线,开始传输数据。传输结束后,它向PC发送结束命令。PC机收到这个结束命令后,立即占用总线,然后发送点名命令,使第二个MCU开始发送数据,以此类推,直到最后一个MCU结束发送数据。

单片机传输数据时,如果PC机要向单片机发送数据,可以在收到一个单片机的数据后停止发送点名指令,直接向一个或几个单片机发送数据。数据传输完成后,继续连接原中断的点名序号,继续点名传输数据。综合考虑这两种总线控制方式,不难发现,由于没有来回传递点名指令的时间成本,继电器控制方式的传输效率会略高于点名控制方式,所以一开始采用了继电器控制方式。

然而,在大规模系统调试的过程中,问题出现了。由于来自PC的接力式进程干预,一旦单片机程序飞起或死机,整个程序就无法进行下去,整个系统就会瘫痪。调试过程中出现了几次崩溃。最后还得回过头修改整体方案,采用点名控制方式。如果中间的一个单片机出现异常,没有按照预定的程序返回数据,PC机就可以判断这个单片机死了,经过一段等待时间后,跳过这个单片机,调用下一个单片机继续后续的返回和程序。如果故障微控制器仍在占用总线,会影响下一个微控制器的工作,它会向微控制器的公共复位端发送一个整体复位信号,使所有微控制器复位。重新调整方案后,经过长时间运行,整机没有死机,整体运行情况良好。此外,这种控制方式还具有其他两种控制方式所不具备的优点:

你可以随时中断返回,几乎实时地向一台或几台单片机发送新指令。这个功能很实用。

2系统的硬件结构

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

整个系统采用RS 485总线结构,RS 485是差分平衡数字通信方式,抗干扰能力强,广泛应用于长距离数字通信。RS 485和RS 422A总线最大的区别是RS 485可以双向传输数据,而RS 422A只能单向传输数据。因为这个系统中有大量的单片机,如果用RS 422A的话,电缆要加倍。此外,由于标准RS 485链路只能连接32个器件,因此应该为每个转换器添加驱动程序。目前在PC机上很难找到串口,所以用PL2303芯片桥接PC机和RS 485总线。PL2303是多产公司的产品,可以很容易地将USB接口转换成标准的RS 232电平。用户完全不用关心复杂的USB协议和规范。在PC的软件编程中,他们只需要使用像标准com口一样的USB口,因为在多产公司提供的驱动程序中已经把USB口模拟成了标准com口。该芯片最高速度可达115 200 b/s,极大地方便了普通串行通信与PC机的通信。复位监控和读写转换电路也是单片机,但单片机只完成两个功能。一种是在RS 485总线前(RS 232处的TXD)接收PC的TXD发出的信号,一旦出现PC发出的全局复位串行码,就会立即产生全局复位信号,使所有单片机复位。这个功能是为了防止某个单片机一直意外的坏了,占了总线,导致整个系统瘫痪。

为了实现RS 485的半双工通信,必须有方向切换控制信号,如图2所示。在MCU端,这个控制信号很容易获得,在MCU程序中可以引出一个I/O管脚来控制这个信号的切换;但是RS 485在PC上的切换比较麻烦,这是复位监控和读写转换电路完成的另一个重要功能:读写转换。如果PC机要占用RS 485总线,它会发送一个特定的串行码。专用单片机会接收并响应串口代码,切换RS 485控制器,开始占用RS 485总线,发送数据。如果PC机结束发送数据,它将同时发送一个特定的串行码,通知专用单片机相应地切换RS 485。单片机及其附属电路构成相关的功能电路。

主单片机采用硅公司的8051F020增强型单片机。这种单片机最大的优点是内部集成模拟电路更强大,单片机运行速度更快,编程-编写-仿真更方便。

3系统的软件组成

软件分为三部分:PC上位机程序、单片机通用程序和专用单片机程序。专用单片机的程序运行在复位监测和读写转换电路中。程序比较简单,就是上电后总是按照约定的波特率和数据格式接收PC机发来的串行数据,如果得到的数据符合约定的复位格式就发出复位信号;如果接收到的数据符合总线切换格式,则发送相应的切换信号。PC机程序复杂,可根据用户实际需要编写相关应用程序。本文用Delphi编写了应用程序,实现了单片机群的参数设置、状态调整、信息反馈和系统控制。

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

单片机初始化后,接收PC机发送的初始指令,然后开始运行主程序,执行单片机的主要功能。同时,串行接收中断被打开。一旦接收到PC机发出的指令,就会进行比较和判断。如果PC调用自己的名字,它将开始占用总线,并响应来自PC的反馈指令向PC传输数据。之后,它将向PC发送一个结束状态字,结束总线占用并返回主程序,同时等待接收串行数据。

4结论

课题组经过大量实验,采用命名总线控制方式,成功解决了PC机与大量单片机的双向通信问题,实现了100多台单片机与主控PC机的通信,达到了设计要求。该电路已长期运行,实际情况表明系统稳定、灵活、可靠,命名的总线控制方式具有很好的实用价值。

标签:单片PC总线

单片机

最新文章