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

电子设计 2018-01-11 07:27 次阅读

为了实现PC机与多个单片机的互相通信,特别是多个单片机都需要向PC机传输数据时,课题组采用“点名式”的总线控制方式。单片机在得到PC机发送的“点名”指令后,开始控制总线,向PC机传输数据。传输数据结束后,通知PC机并退出总线控制,PC机再逐个往后发送“点名”指令。根据这种思路,搭建了相应的电路,经过不断的实验、调试和改进,构建的系统工作稳定、可靠。“点名式”的多机互通方式非常适合于需要多单片机向PC机传送数据的场合,具有较高的实用价值。

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机发出的全局复位串行代码后,立即产生一个全局复位信号,将所有单片机进行复位。该功能就是为了防止某个单片机出现故障,一直意外占用总线,导致整个系统瘫痪。

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

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

3 系统的软件构成

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

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

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

4 结语

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

电子设计 技术专区

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

MAX3485工作原理详解(MAX3485引脚图_内部结构_典型应用电路)

本文主要介绍了MAX3485工作原理详解(MAX3485引脚图_内部结构_典型应用电路)。可以实现最....

发表于 01-18 17:18 次阅读 0条评论
MAX3485工作原理详解(MAX3485引脚图_内部结构_典型应用电路)

MAX7219封装尺寸图及规格

本文主要介绍了MAX7219封装尺寸图及规格,MAX7219分为直插式和贴片式封装。MAX7219是....

发表于 01-17 11:32 次阅读 0条评论
MAX7219封装尺寸图及规格

MAX7219命令控制字(电路图与例程)

本文主要介绍了MAX7219命令控制字(电路图与例程),并简单介绍了MAX7219的引脚及其功能。M....

发表于 01-17 10:16 次阅读 0条评论
MAX7219命令控制字(电路图与例程)

基于微型投影仪或智能手机投影仪的完整 RGB LED 解决方案

快速发展的 LED 照明应用正在取代几乎所有传统形式的照明应用。随着这种转型的加速,LED 驱动器的....

发表于 01-09 15:12 次阅读 0条评论
基于微型投影仪或智能手机投影仪的完整 RGB LED 解决方案

智能功率技术实现荧光灯驱动电路的方案分享

在照明应用电子变换器实现中,成本制约因素驱动着技术的选择。除下文要介绍的创新的纵向智能功率(VIPo....

的头像 电子设计 发表于 12-30 08:02 次阅读 0条评论
智能功率技术实现荧光灯驱动电路的方案分享

为什么你设计的LED驱动电路失效了?看看这些问题解决了没

基本上可以说,LED 驱动器的主要作用是将输入的交流电压源转换为输出电压可随 LED Vf 正向导通....

的头像 电子设计 发表于 12-28 07:44 次阅读 0条评论
为什么你设计的LED驱动电路失效了?看看这些问题解决了没

ir2110中文资料详解_引脚图及功能_工作原理_内部结构及应用电路

本文主要介绍了ir2110中文资料详解_引脚图排列封装及功能_工作原理_内部结构及典型应用电路,IR....

发表于 12-21 15:05 次阅读 0条评论
ir2110中文资料详解_引脚图及功能_工作原理_内部结构及应用电路

LT3592 LED驱动器(“明亮”/“暗淡”)在商业、汽车和工业应用中控制照明器件的工作原理

LED正迅速成为多种商业、汽车和工业应用的标准照明器件。在这些应用当中,有的需要进行宽范围的亮度控制....

发表于 12-07 15:43 次阅读 0条评论
LT3592 LED驱动器(“明亮”/“暗淡”)在商业、汽车和工业应用中控制照明器件的工作原理

浅谈电视机中的led驱动

没人喜欢经济衰退,但是好莱坞可能是个例外。为什么呢?答案即使不那么明显,也很简单,经济下滑时票房收入....

发表于 12-07 14:51 次阅读 0条评论
浅谈电视机中的led驱动

无极调光led灯的分段开关和驱动器怎么连接?方法操作解析

分段开关中,6根线的颜色一般是红的一根,黑的2根,白1根,蓝1根,黄的1根,其中,红的和黑的是作为2....

发表于 12-05 09:04 次阅读 0条评论
无极调光led灯的分段开关和驱动器怎么连接?方法操作解析

max7219多级联程序

MAX7219/MAX7221为紧凑的串行输入/输出共阴极显示驱动器,用于连接微处理器(µP)与8位....

发表于 11-20 17:40 次阅读 0条评论
max7219多级联程序

max7219使用方法

MAX7219是一种集成化的串行输入/输出共阴极显示驱动器。它连接微处理器与8位数字的7段数字LED....

发表于 11-20 16:49 次阅读 0条评论
max7219使用方法

电机运动控制平台作为高性能测试为何被广泛应用

随着工业自动化程度的不断提高,伺服控制技术、电力电子技术和微电子技术的快速发展,伺服运动与控制技术也....

的头像 ZLG致远电子 发表于 11-15 08:42 次阅读 0条评论
电机运动控制平台作为高性能测试为何被广泛应用

时钟IC属于I2C从器件,需要配置内部PLL逻辑

时钟 IC 的重要特性之一就是通过 I2C 接口实现运行时可编程。通过可编程功能,用户可以更改设备的....

的头像 贸泽电子设计圈 发表于 10-31 15:50 次阅读 0条评论
时钟IC属于I2C从器件,需要配置内部PLL逻辑

max232ese封装及电路图

MAX232ESE是一款线路驱动器/接收器,封装类型为SOIC。基本参数驱动芯片类型:线路驱动器/接....

发表于 10-18 16:19 次阅读 0条评论
max232ese封装及电路图

意法半导体(ST)推出贴装智能低功耗模块,用于电机内置驱动器或其它的空间受限的驱动器

意法半导体(ST)新推出贴装智能低功耗模块,节省高能效电机驱动电路的空间。

的头像 意法半导体IPG 发表于 09-21 16:14 次阅读 0条评论
意法半导体(ST)推出贴装智能低功耗模块,用于电机内置驱动器或其它的空间受限的驱动器

汽车电子设计,四大技术趋势不可或缺!

屏幕的触觉反馈功能可以减少驾驶员再次查看中控台屏幕进行确认的时间,有利于提高道路的安全性。一般的平板....

的头像 德州仪器 发表于 09-15 07:11 次阅读 0条评论
汽车电子设计,四大技术趋势不可或缺!

LED调光引擎:基于8位MCU的开关模式可调光LED驱动器解决方案

虽然LED驱动器与先前的照明解决方案相比具备诸多优势,但其实现过程中也会面临许多挑战。但您不必担心,....

发表于 08-25 09:28 次阅读 0条评论
LED调光引擎:基于8位MCU的开关模式可调光LED驱动器解决方案

功率分析仪现场干扰排查的实例

在工程师们的日常测试中,故障干扰排查可谓是家常便饭,而高级工程师往往能快速定位问题,这与丰富的日常经....

发表于 08-18 09:10 次阅读 0条评论
功率分析仪现场干扰排查的实例

借助JTAG接入经验,可推动设计向新一代发展

一旦跨出了这一步,并且采用了 ATPG支持和JTAG复用器件,那么就更容易一步步或一代代地循序渐进评....

发表于 08-15 11:43 次阅读 0条评论
借助JTAG接入经验,可推动设计向新一代发展