多站远程无线控制信号系统通信软件的开发

发布者:BlissfulWhisper最新更新时间:2014-08-19 来源: 21ic关键字:串行通信  ActiveX控件  查询接收  动态数组 手机看文章 扫描二维码
随时随地手机看文章
1 多站远程无线控制系统组成 多站远程无线控制系统是以计算机作为中心控制站,用多个信号源作为下位机,通过无线模块进行数据通信的。系统中的上位机作为数据接收和数据处理的中心站,当下位机实时采集到上位机发送的数据后,便可进行简单的数据处理并向上位机回送数据。 上位机无线通讯接口使用串行端口与无线数传模块相连,数字信号通过天线调制后送到下位机的一台外置无线模块,然后通过串口送入单片机进行处理。系统组成框图如图1所示。

2 串行通讯控件 利用VB开发通信程序主要有两种方法,一是利用VB本身提供的控件(CONTRALS),另一种是利用WINDOWS API应用程序接口。在实际应用中,用VB 控件实现通讯的方法比调用SDK的API动态连接库的方法更加方便和快捷,而且可以用较少的代码实现相同的功能,这就是用VB 控件实现通讯的优点所在,下面主要介绍一下利用VB 控件实现无线通讯的方法。 VB控件工具箱中提供了一个使用非常方便的串行通讯控件MSComm,它提供了使用RS-232串行通讯上层开发的所有细则。通过它完成串行通讯既可以使用查询方式,又可以使用事件驱动方式。控件的一些重要属性及其说明如表1所列。 表1 MSComm控件的属性说明 属 性设定值 说 明 ComPort 1 串口号,如果串口1已所用,改用串口2 InBufferSize 1024 接收缓冲区大小 InputLen 0 从接收缓冲区读取的字节数,0表示全部读取 InputMode 1 接收数据的类型,0表示文本类型,1表示二进制类型 OutBufferSize 1024 发送缓冲区大小 RThreshold 1 设定接收几个字符时触发OnComm事件,0表示不产生事件,1表示每接收一个字符就产生一事件 SThreshold 0 设定在触发OnComm事件前,发送缓冲区所允许的最少的字符数,0表示发数据时不产生事件,1表示当发送缓冲区空时产生OnComm事件 Settings 1200,n,8,1 串口的参数设置,依次为波特率、奇偶校验(n-无校验,e-偶校验,o-奇校验)、数据位数、停止位数3 应用实例 本系统的通讯网络并非点对点的通讯,而是采用一点对多点的广播式通讯方式。由于无线通讯可能会有空间的噪声干扰,因此,需要采取一些抗干扰措施。首先是身份识别码,因为给下位机编码可以保证网络通讯的有序性,因此,每个站都应有身份码。其次是包头识别码,由于在发送了传输命令之后,下位机开始以打包的形式传输数据,因而每一包都有一个包头和包尾识别码,假如识别码有误,则表明该次传输为不正常数据。因此,应使用1200波特率、无奇偶校验位、8 个数据位、1 个停止位的较稳定状态。

上位机向下位机发送的参数有站号、状态(开机、关机)、频率、重复周期、脉宽、天线转速、天线扫描方式、天线状态、天线角度等。发送命令有手动方式和自动方式两种。自动方式是由定时器自动完成的。为了及时知道分站的状态和运行情况,还应设计定时查询和即时查询。 在无线通讯过程中,除了规定合理的协议之外,为了保证通讯的正确性,在数据发送时还应适当地增加延时,特别是当速度较慢的计算机向速度较快的计算机发送数据时,更应适当增加延时。 由于该项目的软件源代码较长,故只给出和串口通讯有关的程序片段供大家参考。笔者在工作中实践了三种通讯方式,即查询方式、事件驱动方式、


事件驱动转查询方式。这三种方式各有利弊,其中查询方式具有方便可靠的特点,可利用协议或设定时钟来进入和退出查询状态,但它不是资源的有效利用方式;事件触发方式对于定长通讯非常有效,但其定长通讯在有些场合不适用;而事件驱动转查询方式既有事件驱动的特点又有转查询方式的特点,可以说是汇集了前二者之长,故可有效利用资源。下面着重介绍事件驱动转查询方式。 由于在通讯中,RTS电平可置高或置低,如果用事件驱动,计算机就会进入中断,资源就没有有效利用,所以在程序中添加了一个接收函数。为了保证程序的可靠性和灵活性,可以运用设置身份码等方法来保证各个子站互不干扰,具体实现过程的主程序流程图如图2所示。 除以上处理外,还可以使用以下方法来增加系统的可靠性、灵活性和效率。 (1)设置身份码和目的地址 每个数传模块均有表示其唯一身份的身份码,身份码长为两个字节共十六位。第一字节表示组码,第二字节表示组内识别码,身份码可用D7HF5HXXHYYH设置,可设置于模块内的EEROM中,掉电后不丢失。在数据传送前,应设置目的地址,以便确定由哪个来接收数据。采用此方法可以有效地防止干扰。 (2)使用动态数组 接收字节数据时,必须使用动态数组。一个动态数组被声明后,可以利用Input属性将串行端口输入缓冲区内的数据指定到该动态数组中。被接收到的数据的实际大小必须利用Lbound及Ubound才能取得最大及最小索引值,同时也只有这样,才能利用程序将内部的值一一显示出来。另外,利用最大和最小索引值还可以判断是否为一次成功接收。 (3)最优化TimeDelay 在每次传输指令后,一定要等待一段时间才可能从串行端口的输入缓冲区中取得信号源传回的数据,这个时间有多久是项目的关键,太长了效率太低,太短了,数据有可能接收不全,所以有必要进行最佳化测试。具体代码如下: Public Declare Function GetTickCount Lib ″ker-nel32″ ()As Long Dim Buf$ Dim T1&T2& Comm1.Output=Trim(Ucase(txtsend..Text)) & vbcr T1=GetTickCount() Do Buf=Buf & Comm1.Input Loop Unitl Instr(1,Buf,vbCr)>0 T2=GetTickCount() LblTime.Caption=CStr(T2-T1) & “ms” 该程序中使用GetTickCount来取得系统自开机后每千分之一秒更新的Tick值,在接收的前后加上取Tick值的叙述,自然就可以得到传输的时间了。从测试的结果来看,传输单个数据的时间为100ms,10个群组的时间约为500ms。 (4) 增加程序的效率 利用下面的程序可在无线通讯受到干扰或对方设备电源没有打开等原因造成对方数据不能上传时,避免程序一直在等待。如果在规定时间内还没等到规定的字节数时就跳出循环,并出现一个重新发送对话框。此时如果还是不对,就弹出一个对话框“请检查系统!"。具体程序如下: Public Sub ReceiveData() ′On Error Resume Next Dim start, dend As Integer Dim byin() As Byte Dim byindata(11) As Byte Dim I% buf$ ′根据事件分发处理 Do While frmMSCommDemo.MSComm1.CommEvent = 2 Exit Do Loop Timedelay 850 ′适当延时 byin = frmMSCommDemo.MSComm1.Input ′接收串行端口内的数据至动态数组中 dend = UBound(byin) ′得到最大值 start = LBound(byin) ′得到最小值 If dend < 5 Then MsgBox RadarNoOut & “信号源出现系统 故障,请求检修!” vbOKOnly Exit Sub End If ′接收串行端口内的数据至动态数组中 ′ReDim Preserve byin(11) As Byte If byindata(0) = &H55 And byindata(1) = &HAA Then ′包头正确,接收到包头进行数据处理 . . . End sub ′延时程序 Sub Timedelay(TT As Long) Dim t As Long ′声明一个长整数,记录计数值 t = GetTickCount() ′取得系统计数值 Do ′开始循环 DoEvents If GetTickCount - t < 0 Then t = GetTick-Count ′归零 Loop Until GetTickCount - t >= TT ′计算延迟是否到达 End Sub 4 结论 根据本系统的研制经验,利用MSCOMM控件开发无线通信要把握好以下三条: (1) 收发之间应延时适当,这需要在测试中不断地调试,以达到最佳效果。 (2) 选用好的且必须具有纠错功能的无线数传模块,否则将达不到理想的效果。 (3) 设定一个合理的通信协议,使中心站与子站有良好的沟通。实际测验证明,本系统在WIN98中运行稳定,在实验过程中取得了良好的效果。

关键字:串行通信  ActiveX控件  查询接收  动态数组 引用地址:多站远程无线控制信号系统通信软件的开发

上一篇:串行通信控制器85C30及其应用
下一篇:基于Saber的无刷直流电机控制系统仿真与分析

推荐阅读最新更新时间:2024-05-02 23:07

PC机与单片机串行通信中实现命令批处理
    摘要: 介绍PC机与MCS-51单片机通信批处理命令的实现思想、方法、通信协议和C51程序平台。为PC机与单片机间串行通信程序设计提供一种方法上的新思路。     关键词: 批处理 MCS-51单片机 通信协议 在PC机与MCS-51单片机之间进行串行通信时,基本是一对一的,即用PC机向单片机每发1条命令,就等待单片机的1条返回信息。这样可能把大量时间浪费在PC机与单片机的通信过程中了。为此笔者经过实践,设计出可以批处理执行PC机发给单片机的命令,就像DOS操作系统中的批处理命令一样,可连续批处理信息,结果当然提高了系统速度。文中提供了部分平台式C51软件源代码,以供大家参考。 1 通信协议
[工业控制]
计算机控制智能小车的软件设计
0 引言 随着多微机系统的应用和微机网络的发展,通信功能越来越显得重要。在工业控制系统(尤其是多点现场工业控制系统)设计实践中,单片机与PC机组合构成分布式控制系统便是一个重要的应用;主控计算机通过485网络监督管理下位分机的运行状况。在以单片机为基础的数据采集和实时控制系统中,通过计算机中的RS-232接口进行计算机与单片机之间的命令和数据传送,就可以利用计算机对生产现场进行监测和控制。本文设计是以单片机AT89C51为控制核心,附以外围电路,采用反射光耦(1550-01)检测黑白线,霍尔传感器(A04E)+磁钢来实现智能车行驶的计程,采用四位共阴LED实现行驶计程和时间的交替计数显示。同时还充分利用单片机的串口、并口资源和运
[单片机]
计算机控制智能小车的软件设计
双机串行通信软件编程
  串行口的4种工作方式中的方式0是移位寄存器工作方式,主要用于扩展并行I/O用,并不用于串行通信。串行口的方式1~3是用于串行通信的,下面介绍串行口的方式1~3的双机串行通信软件编程。应当说明的是,下面介绍的双机串行通信的编程实际上与各种串行标准的硬件接口 电路 无关,因为采用不同的标准串行通信接口仅仅是由双机串行通信距离、传输速率以及抗干扰性能来决定的。      1.串行口方式1应用编程      例如:采用方式1进行双机串行通信,收、发双方均采用6 M Hz 晶振 ,波特率为2400 bit/s,一帧信息为10位,第0位为起始位,第1~8位为数据位,最后1位为停止位。发送方以78H、77H单元的内容为首地址,以76H、75
[单片机]
双机<font color='red'>串行通信</font>软件编程
解决RS-232长距离串行通信的一种实用方法
    摘要: 针对目前广泛使用的RS-232串行通信在实际应用中所存在的缺点,提出了利用电流环同RS-232进行接口来提高串行通信距离及抗干扰能力的一种简单实用方法。该方法已在许多场合应用,效果很好。     关键词: 串行通信 RS-232 电流环 光电隔离 1 引言 RS-232串行通信是早期为促进公共电话网络通信而制定的标准,是目前异步通信中应用最广的标准总线,适用于数据终端设备和数据通信设备之间的接口。图1所示为RS-232串行通信的简单示意图。然而,由于发送器(TXD)和接收器(RXD)之间具有公共信号地(GND),因此不能使用双端信号,这样可能会使共模噪声耦合到信号系统中。因此,设计者不得不
[工业控制]
STM32串行通信USART讲解笔记
dragon12345666的专栏 目录视图 摘要视图 订阅 异步赠书:Kotlin领衔10本好书 SDCC 2017之区块链技术实战线上峰会 程序员8月书讯 每周荐书:Java Web、Python极客编程(评论送书) STM32串行通信USART讲解笔记 标签: 中南赵小龙 STM32 串行通信 USART1 2014-04-25 16:58 2741人阅读 评论 (0) 收藏 举报 分类: STM32 学习(9) 版权声明:本文为博主原创文章,未经博主允许不得转载。 目录 (?) STM32串行通信USART程序例举链接:http://blog.csdn.ne
[单片机]
STM32<font color='red'>串行通信</font>USART讲解笔记
PIC单片机与触摸屏串行通信的MODBUS协议实现
摘要:介绍一种在PIC单片机与触摸屏之间采用Modbus协议实现异步串行通信的方法。简单介绍了Modbus通信协议,给出了硬件电路连接图、程序流程图以及用PIC单片机C语言编写的部分通信程序。实际使用证明该方法数据传输稳定可靠,并提供了良好的人机交互环境。 关键词:触摸屏 PIC单片机 Modbus协议 通信 工控中经常需要观察系统的运行状态或者修改运行参数。触摸屏能够直观、生动地显示运行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,人机交互性好。单片机广泛应用于工控领域中,与触摸屏配合,可组成良好的人机交互环境。触摸屏和单片机通信,需要根据触摸屏采用的通信协议为单片机编写相应的通信程序。Modbus协议是美国M
[单片机]
单片机与PC机串行通信的实现的设计原理
  随着单片机和微机技术的不断发展,特别是网络技术在测控领域的广泛应用,由PC机和多台单片机构成的多机网络测控系统已成为单片机技术发展的一个方向。它结合了单片机在实时数据采集和微机对图形处理、显示的优点。同时,windows环境下后台微机在数据库管理上具有明显的优势。二者结合,使得单片机的应用已不仅仅局限于传统意义上的自动监测或控制,而形成了向以网络为核心的分布式多点系统发展的趋势。本文主要介绍PC机与51系列单片机实现通信的一般方法和步骤。   硬件结构和单片机的通1S程序设计   单片机和PC机的串行通信一般采用RS-232、RS-422或B3-485总线标准接口,也有采用非标准的20nnJL电流环的。为保证通信的可靠,在
[单片机]
单片机与PC机<font color='red'>串行通信</font>的实现的设计原理
用VHDL设计专用串行通信芯片
    摘要: 一种专用串行同步通信芯片(该芯片内部结构和操作方式以INS8250为参考)的VHDL设计及CPLD实现,着重介绍了用VHDL及CPLD设计专用通信芯片的开发流程、实现难点及应注意的问题。     关键词: VHDL FPGA CPLD UART 统计时分复用器 在通信系统中,通信芯片是整个硬件平台的基础,它不仅完成OSI物理层中的数据发送和接收,还能根据传输方式和协议的不同实现不同的数据校验方式及数据组帧格式。 目前,许多厂商都提供通用的串行通信芯片,其传输方式分为同步方式和异步方式。其中,异步芯片大多与INTEL的8250芯片兼容;而同步方式,由于一般涉及到所支持的传输协议(BSC、HDL
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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