利用VB实现PC机与多单片机远程无线通讯

发布者:Yuexiang888最新更新时间:2012-03-12 来源: 微计算机信息 关键字:串行通讯  数传电台  单片机  远程控制 手机看文章 扫描二维码
随时随地手机看文章

1 引言

    随着现代电子与信息技术的不断发展,计算机与单片机控制系统之间的远程无线通讯技术得到了广泛的应用,而数传电台目前已发展成为远程无线通信的一种重要工具,它使用灵活、性价比高,环境适应能力强,非常适用于大范围、分散控制系统及在恶劣环境中,不适于铺设有线网络的实时监控系统,数传电台已成功应用于电力设备监控、计算机实时监控与数据采集(SCADA)以及实时交易数据遥测遥控等领域。同时VB6.0具有界面友好、编程简便高效、数据处理及驱动底层硬件功能强等优点,成为许多用户开发PC机与单片机串行通信程序的首选工具。
    本文以美国MDS OEM EL705数传电台为通讯媒体,利用VB6.0的通讯控件MSComm实现了控制中心PC机与多个远端AT89C51单片机控制系统之间远程无线通讯,实现了控制中心PC机对多个远端单元的实时控制与管理,并应用于工程设计中,通过实际应用,取得了满意的效果。

2 系统的组成及工作原理

2.1系统的组成

    系统由控制中心和多个远端单元RTU(Remote Terminal Unit)组成。控制中心主要由上位机PC和数传电台组成,各远端单元由数传电台、AT89C51单片机系统及现场设备组成,各远端单元根据实际需要分布在距控制中心一定距离的范围内,控制中心及远端单元结构分别如图1、图2所示。
2.2工作原理
    控制中心作为系统的数据终端设备DTE(Data Terminal Equipment),负责实现对远端单片机系统的实时控制与管理,打印单片机系统工作状态信息、自检信息、记录报表信息及远程单片机系统故障报警信息等,并可通过局域网与其它PC机进行信息传递。
    PC机与数传电台通过RS232通讯电缆相连接,电台采用连续相位频移键控(CPFSK)调制方式,数据直接启动电台发射,空中无线传输速率为9600bps,端口数据传输速率可根据系统需要设置为1200bps~19200bps。
    各远端单元数传电台通过RS232通讯电缆与单片机系统相连接,单片机系统通过固态继电器以离散量的形式控制现场设备。单片机系统(图2虚线框中部分)采用MAX232芯片实现与数传电台之间信号的电平转换,并通过2片8位移位寄存器74LS164和2片74LS373锁存器,实现串行输入并行输出16位开关量,分别控制16个固态继电器的通断,从而控制16路现场设备。单片机系统还有复位、故障报警及高能蓄电池供电等系统。
 
图1 控制中心结构示意图
 
图2 远端单元结构示意图

    综上所述,系统是以数传电台为通信媒体,组成点到多点的主从式远程无线通信网络系统。控制中心PC机和远端单元之间通过数传电台以同频异步半双工方式进行数据信息传输,PC机通过串口发送信息到数传电台,数传电台通过高频载波信号将控制信息发送给远端单元,收到正确信息的远端单元向控制中心回送正确接收信息,并执行控制命令控制现场设备的接通与关断,从而实现控制中心对各远端现场设备的实时控制与管理。
    为实现最大的传输距离并防止各远端单元之间的相互干扰,系统控制中心的电台使用全向天线,远端单元电台使用定向天线,并保证控制中心电台天线高于各远端电台天线的高度。

3 无线串行通信程序设计

3.1通信协议
    1、一帧数据位由1位起始位、8位数据位、0位校验位、1位停止位共10位组成。
    2、波特率为9600bps。单片机串行口按方式1工作,波特率用定时器T1控制,为得到准确的波特率,单片机采用振荡频率为11.0592MHz的晶振。PC机串口波特率通过VB通讯控件MSComm的Settings属性设置,为保证数据传送的准确性,两者的波特率必须一致。
    3、PC机发送的信息为固定5个字节:第1和第2字节分别为远端单元地址信息标志(以AAH表示)和具体地址号(本系统有8个远端单元,可分别编址为 01H、02H、…08H),第3和第4字节为开关量控制信息(第3字节数据信息控制1到8路继电器,第4字节控制9到16路继电器),第5字节为校验码(CheckSum)数据。
     4、远端单片机回送的信息为固定3个字节:第1和第2字节为远端单元地址,第3字节为回送的信息,EEH为接收完毕确认信息,FFH为接收出错重发信息等。
3.2远端AT89C51单片机串行通讯程序设计
    远端AT89C51单片机采用中断方式、基于MCS-51汇编语言与上位机进行通讯,中断子程序流程图如图3所示。
    控制中心上位机PC每次发送控制信息前必须先发送指定远端单元的地址信息,单片机进入数据接收子程序,如果收到的地址与本机地址相同,置接收数据标志位,连续接收上位机发送过来的控制信息。数据接收完毕,开始对控制信息进行校验码确认操作,校验正确则回送上位机确认信息,并对两字节控制数据进行移位操作等必要处理,最后输出开关量并返回中断入口处;若校验错误,回送上位机重发信息。如果远端单片机收到的地址与本机地址不同,程序也返回中断入口处,继续执行其它操作或等待接收新的信息。这样,就确保上位机把控制信息可靠地传给指定的远端单元,各远端单元回送的信息只能被上位机接收。由于每个数传电台时刻处于待机状态(也可以根据实际需要,使电台进入休眠状态等待),所以只有先对远端单元地址进行确认,才能保证在某一时刻只有一个远端单元完全接收了上位机发出的数据信息,避免了不必要的资源耗费。[page]


 
图3 单片机中断子程序流程图


3.3 上位机PC串行通讯程序设计方法及实现
    上位机利用VB6.0编程,用VB6.0开发串行通信程序普遍采用以下两种方法:一种是利用Windows的API函数;另一种是采用VB6.0的通讯控件MSComm。利用API函数编写串行通信程序较为复杂,需要调用许多繁琐的API函数,而VB6.0的MSComm通讯控件提供了标准的事件处理函数、事件和方法,用户不必了解通信过程中的底层操作和API函数,从而比较容易、高效地实现了串口通信。
    MSComm控件提供了两种功能完善的串口数据发送和接收功能:一种是查询法,通过检查CommEvent属性的值来轮询(Polling)事件和通信状态,可以使用定时器或DO…Loop程序实现;另一种是事件驱动法(Event-driven),利用MSComm控件的OnComm事件捕获串口通信错误或事件,并在OnComm事件中编写程序进行相应处理,这种方法响应及时,可靠性高,本软件系统采用了此方法来接收远端单片机的回执信息,以使PC机作出更快的反应。
    数传电台基于透明传输,不改变系统原来的通讯程序及传输格式,编程时只需适当考虑无线传输引起的信号时延。
    软件采用定时器Timer1控件来实现在数据信息送出30秒后(Timer1.Interval = 30000),PC机仍未收到任何回执信息时,程序自动跳出系统。
    实现同样的功能,程序代码会因不同人的编写而略有不同,并且篇幅所限,在此仅给出在VB中对MSComm控件初始化和数据发送与接收的部分源程序,代码如下:

……
初始化MSComm控件程序:
With Comm1           ‘控件名为Comm1
.CommPort=1          ‘使用串行端口1
.Settings=“9600,n,8,1”   ‘设置初始化参数
.InputLen=0           ‘读取缓冲区的全部数据
.InputMode=comInputModeBinary ‘以二进制方式接收数据
.RThreshold=3         ‘接收缓冲区达到3个字节时产生OnComm事件
End with              ‘其它属性值为默认即可
……
发送数据程序:
……
Dim Send As Variant     ‘定义变量
Dim OutByteD(5) As Byte ‘定义发送数据数组
……                  ‘获取发送数据
Send=OutByteD         ‘将发送的数据赋给发送变量
Comml.Ouput=Send      ‘发送数据
……
数据接收程序:
Private Sub Comm1_OnComm()
Select Case Comm1.CommEvent
Case comEvReceive
Dim Jshuju() As Byte , i%, count%
Dim Rec As Variant
Rec=Comm1.Input
count=UBound(Rec)
ReDim Jshuju(count-1) As Byte
For i=0 to count-1
Jshuju(i)=Rec(i)
Next i
……   ‘判断回执信息并进行相应处理,如处理指定远端单元数据接收完毕、数据接收有误请求重发信息、显示、打印自检信息等
End Select
End Sub

4 结论

    通过采用上述通讯方法实现了基于数传电台的控制中心上位机对各远端单片机系统的远程实时控制,实现了高速、实时数据的发送和接收。经过实际应用,系统工作稳定可靠,满足了预期的控制要求。可以预见,数传电台以其使用灵活简便、全数字化无线通讯及环境适应能力强等优点必将在信息采集、远程监控等领域得到更加广泛的应用。

 

参考文献:
[1]范逸之,陈立元.Visual Basic与RS-232串行通信控制最新版.北京:中国青年出版社,2002

关键字:串行通讯  数传电台  单片机  远程控制 引用地址:利用VB实现PC机与多单片机远程无线通讯

上一篇:一种心音信号的数字处理方法
下一篇:基于USB总线和Aduc831单片机的数据采集系统的设计

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

STM32单片机----外部中断EXTI学习
可屏蔽中断和不可屏蔽中断: 按照是否可以被屏蔽,可将中断分为两大类:不可屏蔽中断(又叫非屏蔽中断)和可屏蔽中断。不可屏蔽中断源一旦提出请求,CPU必须无条件响应,而对可屏蔽中断源的请求,CPU可以响应,也可以不响应。CPU一般设置两根中断请求输入线:可屏蔽中断请求INTR(Interrupt Require)和不可屏蔽中断请求NMI(NonMaskable Interrupt)。对于可屏蔽中断,除了受本身的屏蔽位控制外,还都要受一个总的控制,即CPU标志寄存器中的中断允许标志位IF(Iinterrupt Flag)的控制,IF位为1,可以得到CPU的响应,否则,得不到响应。 GPIO口与EXTI外中断的映像图:
[单片机]
STM32<font color='red'>单片机</font>----外部中断EXTI学习
51单片机开发万年历系统实现(闹钟,秒表功能)
首先说一下我用到的东西,硬件方面(电路都是自己拿万能板焊的):一片51单片机,一块12864液晶,一片ds1302时钟芯片,四个按键。还有些电容、电阻、晶振什么的,下面讲到的时候再说吧。主要的就这么多吧。再简单说一下按键的功能吧,假设按键分别是k1,k2,k3,k4。首先lcd主界面是显示的当前的日期时间和四路闹钟的时间。附图。k1,k2,k3,k4最开始被按下时分别对应的功能是k1:进入时间设定模式;k2:进入日期设定模式;k3:进入闹钟设定模式;k4:进入秒表计数模式。进入不同的模式后,四个按键有都有了新的功能,首先k4一直是退出,就是退出到最开始的选四种模式。k1,k2,k3对于日期和时间设定模式是一样的功能k1:数值加1,
[单片机]
51<font color='red'>单片机</font>开发万年历系统实现(闹钟,秒表功能)
51单片机的状态机消抖代码
#include enum State {Init, Press, Free}; //定义按键状态的枚举类型 enum State Key_State; //按键状态 sbit Key1 = P2^4; sbit Key2 = P2^5; sbit Key3 = P2^6; sbit Key4 = P2^7; void Delay_ms(unsigned int x) { int i,j; for(i=0; i 110; i++) for(j=0; j ; } //============================================================================
[单片机]
C51单片机利用74hc138扩展流水灯的仿真电路图+程序
C51单片机利用74hc138扩展流水灯程序 包含源代码,仿真电路 可以随意扩展多个LED 电路原理图如下: 单片机源程序如下: #define uint unsigned int #define uchar unsigned char void delay1(uchar y) { uchar i; uint j; for(i=0;i y;i++) { for(j=0;j 5000;j++); } } void led(void) { P3=0x01; //01 P2=0x00; delay1(20); P2=0x01; delay1(20); P2=
[单片机]
C51<font color='red'>单片机</font>利用74hc138扩展流水灯的仿真电路图+程序
基于Atmega16单片机的重物提升控制系统设计
随着微电子技术的发展,电气控制方式变得更加灵活多样,控制精度越来越高。智能化控制中越来越多地采用了以单片机为核心的控制单元实现设备的智能化控制。介绍以Atmega16单片机为控制核心,实现重物提升位移量的精确控制。 1 重物提升控制系统原理 重物提升控制系统的设计目的是使用智能化的控制技术,将重物提升到预定高度。如图1所示是系统控制结构图,从控制结构图可以看出,控制系统研究对象是重物的提升和降落。主要的控制对象是卷扬机,通过卷扬机的正、反转运动实现控制目标。 图中传感器选用光电编码器,光电编码器的转轴上安装一个轮,将其固定在导向轮上,这样光电编码器和导向轮同轴旋转,实现光电编码器转过的角度与导向轮转过的角度相等,
[单片机]
基于Atmega16<font color='red'>单片机</font>的重物提升控制系统设计
51单片机------数码管【有74HC753】
一 实验目的: 实验3:使用PO和P2端口实现数码管从0-7的显示效果: (1) 掌握C语言编程单片机控制程序的方法。 (2) 掌握使用Keil4软件编写、编译、调试程序的方法。 (3) 掌握使用Proteus软件绘制电路原理图、硬件仿真和程序调试。 (4) 理解和掌握共阴极数码管的显示原理和编码(记忆)。 (5) 熟悉使用51单片机P0(开漏)和P1(推挽)端口实现对外部用电器和电路的控制。 二、实验硬件和软件: 计算机1台、并安装Proteus8.6软件和Keil4软件。 三、试验任务: 使用Proteus排线连接的方式,在单片机I/O口(P2和P0)上外接上拉电阻和数码管,最终实现数码管从0-7显示效果,为最终的实训
[单片机]
51<font color='red'>单片机</font>------数码管【有74HC753】
单片机控制GSM手机的技术及应用
随着科技的飞速发展和人民生活水平的不断提高,手机的普及率越来越高,更新也越来越快,价格也越来越便宜。因为手机工作的无线网络覆盖范围广,在信息传递方面性能稳定、可靠,所以把手机作为信息传递的载体,与单片机结合起来构成应用系统有着强大的生命力和广阔的应用空间,特别是在远程数据传输、远程监控等领域更是受到电子设计应用工程师的关注。一些专业刊物也介绍了一些有关这方面的文章,然而由于手机的控制指令复杂,数据格式繁琐,工程技术人员在进行单片机与手机的硬软件接口设计时经常会遇到很多困难,有时还无资料可查。笔者在完成一个项目的开发过程中,针对几种手机进行了大量的测试和实验,在此基础上归纳出一些带规律性的结论,对此结论,工程设计人员可拿来即用,大大
[单片机]
单片机中模糊控制系统的实现与设计
 模糊控制概述   模糊控制(Fuzzy Control)是目前自动控制研究中活跃而富有成果的领域之一,模糊理论是当前能用来对信息进行软处理的最新技术,可以将人的定性思维和判断方法定量化 为适合计算机处理的过程,使计算机能判断像“大概”、“轻”这样的模糊信息。采用传统控制理论,不管是用经典控制理论还是用现代控制理论来设计一个控制系 统,都需要事先知道被控对象的精确数学模型。然而,在许多情况下被控对象(或生产过程)的精确数学模型很难建立;像建材工业生产中的水泥窑、玻璃窑,化学 生产中的化学反应过程,食品生产中的发酵过程,还有众多炉类的热处理过程。诸如此类过程具有变量多,各种参数存在不同程度的时变性;且过程具有非线性,强 耦合,较大
[工业控制]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 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