PC机与多台单片机实时通信系统的设计与实现

发布者:心满意足最新更新时间:2012-01-19 来源: 微计算机信息 关键字:集散控制系统  单片机  实时通信  人机界面 手机看文章 扫描二维码
随时随地手机看文章

1 引言

集散控制系统(DCS)又名分布式计算机控制系统,是利用计算机技术对生产过程进行集中监测、操作、管理和分散控制的一种新型技术。在现代化工业过程控制系统中,集散控制系统已成为过程自动化系统发展的主流。然而,在工业控制领域,控制系统除了要求具有极高的可靠性外,还必须具有较强的实时响应能力和友好的人机交互界面。

本系统主要通过PC机与多台单片机构成小型集散控制系统来进行通信,既充分利用PC机丰富的软硬件资源实现友好的人机界面,又通过RS-232C/485总线结构与8251单片机进行通信,对多台单片机进行数据采集和处理。

2 控制系统硬件电路设计

本系统在电路形式上比较简单,其原理框图如图1所示。

2.1 通信控制器电路分析与设计

通信控制器的主要作用是完成主机和从机之间的通信。控制器的核心是一台AT89S51单片机,它仅具有一个可编程的全双工串行通信接口,而作为通信控制器需要同时与主机(PC机)和从机进行串行通信,因此就利用单片机的并行数据接口实现串口的扩展,这里选择了8251作为单片机的串口扩展芯片。8251是用于串行数据通信的USART(通信同步/异步收发器),它可以从单片机接收并行数据转换为串行数据发送出去,也可以从外部接收串行数据转换为并行数据传送至单片机。并且8251仅占用2个外部数据空间地址单元,对它的读、写访问如同访问外部RAM一样方便, 、 信号均由单片机提供,需要设计的只有片选信号。此外,8251提供的RXRDY和TXRDY引脚可以用来触发单片机的外部中断,通知单片机8251可以进行新数据的发送或已经接收到新的数据。根据 8251的特性设计的单片机串口扩展电路如图2所示。

图2  基于8251的单片机串口扩展电路

从图2可以看出,8251的指令/数据选择引脚接到了单片机的地址线A0,这样可以通过2个不同的地址来区分对8251的命令写、数据写或状态读、数据读。进一步分析可以发现8251的片选引脚 与单片机地址线A15通过反相器后的相连,使得8251在外部数据空间8000H~FFFFH之间32KB的范围内可以随意选择地址,这里选择8000H(访问数据)和8001H(访问指令 /状态)两个地址。8251的RXRDY引脚通过一个非门后连接至单片机的 引脚,当8251从主机接收到数据时就会引起单片机中断。

MC14060用于为8251提供时钟信号,其中包括用于产生8251内部的时钟CLK、用于决定发送数据传输速率的时钟 和用于决定接收数据传输速率的时钟 。CLK连接到MC14060的OUT2输出引脚, 同时连接到MC14060的Q5输出引脚。MC14060的时钟输入频率为2.4576MHz,则OUT2引脚输出的频率为2.4576MHz,Q5引脚输出的频率为2.4576MHz/25=76.8kHz。那么8251发送数据的时钟 和接收数据的时钟 均为76.8kHz,通过单片机编程将8251的数据传输速率因子设置为1/16,则8251的串口发送和接收数据的波特率为76800/16=4800bit/s。

控制器与主机的通信是通过8251来实现的,8251带有一个全双工的串口,但它的串行数据接口并不是RS-232C标准串口,必须通过外接RS-232 收发器芯片才能与主机的串口连接起来通信,这里选择的RS-232收发器芯片是MAXIM公司的MAX232C。MAX232C包含两个发送器和两个接收器,这里只需使用其中任意一组发送器和接收器即可。

由于控制器与从机之间的通信是多点的串行通信,所以选择了MAXIM公司的MAX485芯片来实现控制器与从机之间的多机通信系统。因为信号在传输线上传送时,若遇到阻抗不连续的情况,会出现反射现象从而影响信号的远距离传输,所以必须采用匹配的办法来消除反射。双绞线的特性阻抗一般在 110~130Ω之间,它与线的绝缘材料的厚度及导线的直径有关,所以通常在RS-485总线末端接入120Ω的电阻是为了对通信线路进行阻抗匹配。

由于MAX485为半双工通信方式,不能同时发送和接收数据,只能通过控制和DE引脚的状态来进行发送数据和接收数据的转换。这里将MAX485的和DE引脚连在一起接到单片机的P10口,通过单片机的P10口来控制MAX485发送数据和接收数据的转换,当P10为低电平时MAX485处于接收数据状态,而当P10为高电平时MAX485则处于发送数据状态。MAX485的RO引脚接到单片机的串口接收引脚RXD, MAX485的DI引脚接到单片机的串口发送引脚TXD。

在通信速率要求不是很高的情况下,RS-485总线的通信距离可以达到1200m,这样就可以通过多台单片机来构建一个远程多机通信系统。

2.2 从机部分硬件电路分析与设计

在本系统中,从机主要完成信号采集与显示输出。这里采用A/D转换芯片ADC0804完成模拟信号的采集。基于ADC0804所设计的A/D采集电路采用阻容元件来搭建ADC0804的时钟电路。电阻R=10k,电容=150p,经计算,时钟频率

电位器RP1用于提供ADC0804的参考电压,调整电位器,使ADC0804的Vref/2引脚的电压为2.56V。电位器RP2用于提供ADC0804的输入电压,调整RP2即可使输入电压在0~5V内变化。将ADC0804的 引脚接到单片机的 引脚,即每次ADC0804转换完成后就会使单片机进入中断来处理ADC0804输出的8位数字信息。

此外,从机还要将主机发送过来的信息显示出来,以表明从机接收到了主机发来的信号。系统中采用了8个LED连接到单片机的P2口作为显示输出,可以将主机发送过来的十六进制数据以二进制方式显示出来。由于单片机端口的驱动能力有限,不能用高电平直接驱动LED,所以将LED采用共阳极接法。

在从机工作的过程中,可能会出现各种异常状况,需要将报警信息及时反馈给主机。为了模拟从机异常报警过程,在单片机的外部中断 输入端连接一个按键,利用按键触发外部中断来报警。当按下键时,从机会将报警信息发送给控制器,控制器收到后再将报警信息传递给主机,在主机界面上就会弹出一个对话框显示是几号从机报警。

3 集散控制系统软件设计

3.1控制器和从机的软件设计

控制器软件设计的主要任务是完成主机和从机之间的数据交换,而从机软件设计的主要任务是完成A/D采集并将采集的数据上传给控制器,能够将主机发送过来的数据输出显示,而且可以通过按键中断触发报警。

控制器与主机之间的通信是通过8251来实现的,8251的功能配置由单片机通过软件编程方式实现,单片机可以通过8位并行数据接口向8251写入待发送的数据、命令或者从8251读出接收的数据、状态。在软件设计上可以分为两部分,一部分是控制器向主机发送数据,另一部分是控制器从主机接收数据,程序流程图分别如图3和图4所示。注意必须先读取8251的状态字,当发送数据标志位TXRDY为1时才能通过8251向主机发送数据。控制器在中断服务程序中处理从主机接收到的数据。

控制器与从机间的通信主要是利用了51单片机串口的多机通信功能。在多机通信中,为了保证主机与所选择的从机实现可靠的通信,必须保证通信接口具有识别功能,可以通过控制单片机的串口控制寄存器SCON中的SM2位来实现多机通信功能。控制器和从机在接收串行数据时均采用中断方式。控制器与从机通信是通过MAX485来实现的,必须先将单片机的P10口置1,使MAX485处于发送数据的状态,然后才能发送数据,发送完数据后必须将单片机P10口置 0,使MAX485处于接收数据的状态。

从机的A/D采集采用中断方式通知从机接收数据。当从机接收到的数据为#0AAH时,从机就将A/D转换的数据发送给控制器,发送的数据每隔1s更新一次;当数据为#0BBH时,从机就停止向控制器发送A/D转换的数据;当数据为其它时就输出显示。由于在实际应用中前端控制系统可能会出现各种各样的报警信息,所以在这里通过一个按键触发中断来模拟报警情况的发生。

3.2 主机通信控制软件设计与测试

3.2.1 主机通信控制软件设计

主机控制软件设计主要是针对串口的操作,通过建立主界面对话框及添加变量,串口初始化,串口事件消息处理,发送数据,查看数据,选择从机号查看状态,选择从机号控制状态并且编写VC++程序来实现可视化界面及其功能。

3.2.2 从机状态控制测试

在测试时,将主机、控制器和两台从机全部连上,在主机对话框的从机状态控制栏里,选择1号机,在编辑框中输入十六进制数据“12”,然后点击“发送”按钮,如图5所示。1号机收到数据后就会将数据用8位LED以二进制方式显示出来,LED显示为“00010010”。

   

图5 从机状态控制测试 

  

图6 从机状态控制测试     

   

 图7 显示1号机报警信息

3.2.3 从机状态查看测试

在从机状态查看栏里,选择1号机,点击查看按钮,如图6所示,编辑框里就会将1号机A/D采集到的数据以十六进制的方式显示出来。当调整ADC0804的输入电压时,编辑框中的数据就会随着输入电压的变化每隔1s更新一次。同样,当查看2号机时,也能够正常工作。

3.2.4 从机报警测试

在从机部分通过按键触发中断的方式来模拟报警情况的发生,当按下1号机的按键时,在主机的界面上就会弹出一个菜单显示“1号机报警”,如图7所示;当按下2号机的按键时,在主机的界面上就会弹出一个菜单显示“2号机报警”。

4 结论

针对集散控制系统的广泛应用,提出了一种新的由一台PC机和多台单片机组成的一个小型集散控制系统的结构,实现了PC机与多台单片机间的通信任务。本文作者创新点:既充分利用PC机丰富的软硬件资源实现友好的人机界面,又通过RS-232C/485总线结构与8251单片机进行通信,对多台单片机进行数据采集和处理。本系统不仅硬件实现简单,而且软件实现可靠。通过长时间长距离的测试,证明该方法思路简单,价格低、功能强、抗干扰能力好、温限宽、通讯可靠,是一种有效的多机通讯方法。同时,系统可以通过串口通讯,扩展为更高级别的集散控制系统。因此,这种小型集散控制系统有着广阔的应用前景。

 

参考文献

[1] 肖金球等.一种多智能仪表DCS系统的研究.微计算机信息,2005,21(6):23-25

[2] 张毅刚.新编MCS-51单片机应用设计.哈尔滨:哈尔滨工业大学出版社,2003.257-262

[3] 李朝青.PC机及单片机数据通信技术.北京:北京航空航天大学出版社,2000.94-112

[4] 郑学坚,周斌.微型计算机原理及应用(第三版).北京:清华大学出版社,2003.216-224

[5] 楼然苗,李光飞.51系列单片机设计实例.北京:北京航空航天大学出版社,2003.44-48

[6] 求是科技.Visual C++串口通信技术与工程实践.北京:人民邮电出版社,2004.55-65

[7] 龚建伟,熊光明.Visual C++/Turbo C串口通信编程实践.北京:电子工业出版社,2004.

[8] ATMEL.AT89S51 Databook.2001

[9] MAXIM.MAX485 Databook.1996

关键字:集散控制系统  单片机  实时通信  人机界面 引用地址:PC机与多台单片机实时通信系统的设计与实现

上一篇:微控制器在科研试验中实现的前端设备的远程复位控制
下一篇:基于AT89C55单片机的PLC研究

推荐阅读最新更新时间:2024-03-16 12:51

单片机音乐盒翻译小程序
首先打开MusicEncode软件,然后找来你制作歌曲的简谱 例如: 长 亭 外, 古 道 边, | 5 35 1 - | 6 16 5 - | (注意:乐谱中的1是高音,上边是带点的;还有些音符,应该有下划线,在这里都无法标出。感兴趣的网友应该去查看正规的乐谱。) 将其输入后即可得到: unsigned char code Music_Code ={5, 2, 2, 3, 2, 1, 5, 2, 1, 1, 3, 4, 6, 2, 2, 1, 3, 1, 6, 2, 1, 5, 2, 4, 0, 0, 0 }; 将其替换掉任何一首歌中的数据表即可作出不同的歌曲,但是要注意函数的名字,要与程序中原来的一样 以上是使用软件制作
[单片机]
学习51单片机必知的寄存器知识
说起单片机存储器,大家可能知道RAM和ROM,但具体需要怎么用,还需要深入了解下,那今天通程创品就来大家详细了解下51单片机存储器的相关知识,希望对大家有帮助。 程序存储器(又称数据Flash),顾名思义,是用来存储用户的程序,使单片机能够按照编写的代码顺序执行,完成指定的任务。所以程序存储器是只读存储器(只读存储器),我们已经听过很多次了。代码存储在里面,一般有常数、表格、pi值、数码管形状、SCM ID号、内部参考信号源、关机唤醒定时器频率、IRC参数等数据。 注意:单片机每次都是烧录程序,烧录就是为了把代码放到程序存储器中,而我们用的电脑则是把硬盘的数据和程序放到RAM,再用CPU去读取RAM里面的数据和程序 一
[单片机]
基于LJD-ZN-8400T智能触摸液晶显示终端与单片机的接口
  作为一种常见的显示设备,LCD具有功耗低,体积小,重量轻,显示信息量大等特点,尤其是在便携设备中,更占据着绝对主流的地位。对于字符或数字的简单信息显示,通常可用段码式LCD驱动器。对于复杂的信息显示,则必须由点阵式LCD驱动器来显示。最常见的点阵式LCD控制/驱动器中,有不带中文字库的LCD驱动器,也有带中文字库的LCD驱动器。随着嵌入式系统的广泛应用,出现了大量的16位和32位的嵌入式处理器。然而传统的8位单片机长期用于生产实践中,制造工艺成熟,性能更加可靠,因此仍然占有相当大的市场,特别是在汽车电子等对可靠性要求极高的领域。液晶显示器具有显示信息量丰富,功耗低,体积小,质量轻,无辐射等优点。触摸屏作为一种特殊的计算机外设,
[单片机]
基于LJD-ZN-8400T智能触摸液晶显示终端与<font color='red'>单片机</font>的接口
单片机与MCGS组态软件在全自动中央供暖系统中的应用
利用单片机与MCGS组态软件组成监控平台,实现对整个中央供暖系统的动态测试、检测与报警,具有直观、调控容易、技术先进和价格低等优点。 中央供暖热水器一般使用于北方地区需要采暖系统和热水供应的场所,是方便、安全、节能的时尚产品。除可对采暖系统进行供热外,还可多点供应热水,具有供热量充足的特点。特别是其单片机控制系统配上全中文MCGS组态软件,可迅速构成上位机监控系统,运行嵌入式实时操作系统,可以完成复杂逻辑控制,并可根据实际工况灵活组态,形成良好的人机界面,具有直观、操作方便、控制灵活等优点,可有效地对系统进行监控和管理。 1 系统的性能与原理 系统工作示意图如图1所示。本系统是在中央热水系统的基础上增加恒温供暖功能,既可作为
[单片机]
<font color='red'>单片机</font>与MCGS组态软件在全自动中央供暖系统中的应用
基于SPMC75系列单片机的高性能三相变频电源
1 引言   变频电源是一种电源变换设备,因具有输出波形纯正、输出电压稳定、输出频率和输出电压可调等优点。其良好的性能,在传感、仪器仪表、工业控制等领域有广泛应用。本文主要介绍利用SPMC75F2413A和IPM(PS21865A)实现高性能三相变频电源的开发。 2 芯片特性简介   SPMC752413A是μ’nSP%26;#8482;系列产品的一个新成员,是凌阳科技新推出的专用于变频驱动的16位微控制器。其拥有性能出色定时器和PWM信号发生器组。   SPMC75F2413A在4.5V"5.5V工作电压范围内的工作速度范围为0"24MHz,拥有2K字SRAM和32K字闪存ROM;最多64个可编程的多功能I/O端口;5个通用16位
[应用]
瑞萨面向电机控制应用推出性能卓越的RA8 MCU
基于Arm® Cortex®-M85处理器的RA8T1 MCU产品群, 为工业、楼宇和家庭自动化应用提供低功耗操作和专用模拟功能 2024 年 1 月 30 日,中国北京讯 - 全球半导体解决方案供应商瑞萨电子今日宣布推出基于Arm® Cortex®-M85处理器的RA8T1微控制器(MCU)产品群,可满足工业、楼宇自动化,以及智能家居等应用中常见的电机、电源和其它产品的实时控制要求。 RA8T1产品群是瑞萨RA8系列的第三款产品。所有RA8系列产品均具备6.39 CoreMark/MHz(注)的突破性性能,并采用高性能Arm Cortex-M85处理器和Arm的Helium™技术,能够在数字信号处理器(DSP)和机器学习
[工业控制]
瑞萨面向电机控制应用推出性能卓越的RA8 <font color='red'>MCU</font>
使用Energia IDE开发MSP430G2微控制器入门指南 - 闪烁LED
MSP-EXP430G2是德州仪器提供的开发工具,也称为LaunchPad,用于学习和练习如何使用其微控制器产品。该开发板属于MSP430 Value Line系列,我们可以对所有MSP430系列微控制器进行编程。这款美丽闪亮的红色主板因其属于TI(德州仪器)的事实而令人着迷。学习如何使用TI微控制器肯定会成为我们的强大工具,因为TI非常庞大,并且价格非常具有竞争力。 在本系列教程中,我们将了解这款MSP430G2 LaunchPad以及如何对其进行编程。使用这款LaunchPad,我们可以使用MSP430微控制器,它可以提供16位性能,运行频率高达16MHz。这些教程是为电子学初学者编写的,因此每个主题都应尽可能简洁
[单片机]
使用Energia IDE开发MSP430G2<font color='red'>微控制器</font>入门指南 - 闪烁LED
使用电容器降低MCU的电源噪声
STM32是广泛应用的MCU,涵盖Cortex-M0、M3、M4和M7内核,共有1236多个系列,包含STM32主流MCU、STM32高性能MCU、STM32超低功耗MCU、STM32无线MCU、STM32 Arm Cortex MPUs等门类。 STM32 MCU内置高级12位ADC(取决于器件),提供自校准功能。在涉及模数转换的应用中,ADC精度会影响整体的系统质量和效率。而ADC精度不仅取决于ADC性能和功能,还取决于ADC周围的整体应用设计,例如电源噪声,这些恰恰可以能通过电容器过滤掉。 在电源线和地线之间,建议连接具有优良高频特性的电容。也就是说,应在靠近电源的位置安装一个0.1μF和一个1至10μF的电容,这些
[单片机]
使用电容器降低<font color='red'>MCU</font>的电源噪声
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

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