PC机与单片机多机主从互通的实现

发布者:星辰耀眼最新更新时间:2014-01-16 来源: dzsc关键字: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机发出的全局复位串行代码后,立即产生一个全局复位信号,将所有单片机进行复位。该功能就是为了防止某个单片机出现故障,一直意外占用总线,导致整个系统瘫痪。[page]

  为了实现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 机之间的互通信,达到了设计要求。电路经过长时间运行,实际情况表明,该系统运行稳定、控制灵活、可靠性高,采用的点名式总线控制方式具有很好的实用价值。

关键字:PC机  单片机  主从互通 引用地址:PC机与单片机多机主从互通的实现

上一篇:基于GPRS的水文信息远程监测系统的设计方案
下一篇:怎样辨别单片机的内部晶振与外部晶振

推荐阅读最新更新时间:2024-03-16 13:33

基于单片机设计的便携式语音环境参数测试仪
1 引言   人们健康意识和环保意识的逐渐增强使环境参数及其对身体的影响日益受到关注。然而现实生活中人们常常身处煤气、香烟、酒精等有害气体的包围之中,但因没有合适的测量仪器或因专业的测量仪器过于昂贵而不能方便地得知身边环境中的各种参数值,因而无法知晓环境参数是否会对身体或环境构成危害。这里介绍一种多功能环境测量仪的设计方法,该测量仪廉价、实用、便携,并有语音播报测量值及有害气体越限报警等多种功能。   2 总体结构与工作原理   该测量仪以凌阳16位单片机SPCE061A为控制核心,光线、温度、湿度、气体传感器将获得的环境信息量转换为模拟电信号,经A/D转换器转换为对应的数字信号后交由CPU处理;CPU实时计算测量值并将
[单片机]
单片机应用系统的抗干扰的解决方案
  针对单片机应用系统实时性强,干扰因素较多的特点,本文介绍了几种实用的抗干扰措施,在硬件抗干扰方面阐述了供电系统的设计、电路板的合理布局以及输入输入干扰的抑制,软件方面给出了软冗余技术、软件陷阱技术以及“看门狗”技术的几个实例。 1. 引言   单片机应用系统的抗干扰设计是系统设计的重要内容之一,抗干扰性能的好坏将决定系统能否在复杂的电磁环境下稳定可靠地工作,从而决定了系统的实际使用价值。特别是在各种实时控制的远距离系统中,由于现场环境恶劣,干扰因素较多,系统不可避免地要受到其他电磁设备的干扰,若仅按常规设计就很难保证系统的正常运行。因此,抗干扰问题是设计者必须充分考虑和解决的,下面从硬件和软件两个方面谈谈抗干扰设计。   
[单片机]
<font color='red'>单片机</font>应用系统的抗干扰的解决方案
基于AVR单片机SPI的串行ADC接口设计
摘 要 :本文所进行是为提高ADC转换的精度、加快工作速度的研究,主要介绍AVR单片机的SPI与MAX187的接口设计,提供了软件编程实现。 关键字 :SPI、AVR单片机、MAX187 1、AVR单片机的SPI接口 SPI(Serial Peripheral Interface---串行外设接口)总线系统是一种同步串行外设接口,允许MCU与各种外围设备以串行方式进行通信、数据交换,广泛应用于各种工业控制领域。基于此标准,SPI系统可以直接于各个厂家生产的多种标准外围器件直接接口。SPI接口通常包含有4根线:串行时钟(SCK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)和低电平有效的从机选
[单片机]
单片机初学者做项目为什么这么难?单片机初学者心得有哪些?
现在回想起自己刚开始学习单片机的经历,让我印象最深,也感觉最难学的就是电路了。 当时看了模拟电路的视频,看到三极管放大电路就开始云里雾里了。 后面以为是自己基础太差,又买了一本比笔记本还厚的电子元器件手册的书。 然后死磕了一段时间,懂了一些概念,又回去听视频教程,发现一点帮助都没有,还是听得一头雾水。 那段时间我就非常焦虑,感觉学单片机开发太难了。 但是又没有办法,毕业了需要找工作。 后面我干脆就不看模电了,直接学单片机,就跟着视频教程一边看一边敲代码。 然后教程也有对电路这块的讲解,主要是开发板上的原理图。 我发现原来自己能听懂,比如控制一个灯或者继电器啥的,其实就控制引脚输出高低电平就行了。 三级管也是只需要理解开关
[单片机]
从零开始51单片机教程 —— 29 单片机音乐程序设计
利用单片机音乐程序设计 利用单片机(或单板机)奏乐大概是无线电爱好者感兴趣的问题之一。本文从单片机的基本发间实验出发,谈谈音乐程序的设计原理,并给出具体实例,以供参考。 单片机的基本发音实验 我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。 例如,要产生200HZ的音频信号,按图1接入喇叭(若属临时实验,也可将喇叭直接接在P1口线上),实验程序为: 其中子程序DEL为延时子程序,当R3为1时,延时时间约为20us,R3中存
[单片机]
从零开始51<font color='red'>单片机</font>教程 —— 29 <font color='red'>单片机</font>音乐程序设计
学习笔记-avr单片机C编程1
这几天在看AVR单片机的书。ASURO的项目的编程是建立在已有的成熟函数上,所以导致我对AVR单片机的运行机理(中断、定时器的使用)不甚了解。突然一个个超声波模块的程序放在眼前,才发现我连AVR单片机的了解基本上等于零。另外一个项目需要用mega128控制直流电机,还有和无线、有线遥控器的通信,电路(模块)需要自己搭起来,那么就必须知道AVR单片机的原理和编程。 和已经学过的51单片机相比,MEGA系列单片机是十分高级的单片机,功能强大,因而在构造和使用上也复杂了一些。 存储器区别,AVR分为5个部分,访问指令上有区别。 输入输出,51是准双向口,每个端口只有一个寄存器。而AVR的I/O口是标准双向口,
[单片机]
浅析PIC单片机的时钟设置
什么时钟? 首先我们先讲讲什么是时钟。时钟就是单片机的心脏。每跳动一下。整个单片机的各个电路就同步的动作一下。就好像我们做广播体操的时候 广播上喊的节拍1234 2234 3234。。。。然后我们全部的同学就按照这个节奏进行一个个动作。节拍越快我们动作越快。节拍越慢我们动作的越慢。 内部时钟和外部时钟? PIC单片机有许多型号可以设置成 用外部时钟(如外部接个4MHZ的石英晶振),也可以设置成用内部RC时钟。而且还有许多型号可以选择多种频率的时钟。 如 PICLF1823 内部时钟最高可以到达32MHZ 最低可以达到 31kHz. 这事实上提供了一条降低功耗的新路子。一般的单片机降低功耗常常用的睡眠,而睡眠期间CPU是什么
[单片机]
浅析PIC<font color='red'>单片机</font>的时钟设置
Ramtron的开发套件可支持8051 MCU
Ramtron International公司的UniVersaKit(VERSAKIT-UVK)是一个支持所有Ramtron Versa产品家族及8051微控制器的开发套件和评估系统。该套件包含了集成开发环境(IDE)、C编译器和汇编程序。 UniVersaKit是一个用于Versa混合信号和带闪存8051家族MCU的完整评估平台,该产品集成了所需的各种电路,可缩短开发启动时间、加速系统原型设计并缩短产品面市时间。 该板包括了稳压器(3.3V和5V)、RS-232收发器、DB9连接器、手动复位/中断触发开关、用户LED、串行的两线FRAM、压电蜂鸣器及驱动电路、外围芯片以及I/O接口,可通过探针和插座引脚监测信号,并
[新品]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved