当前位置:首页 > 通信软件
  • 多站远程无线控制信号系统通信软件的开发

    摘要:多站远程无线控制系统是以计算机为中心控制,用多个信号源作为下位机通过无线模块进行通信,文中介绍了通过无线数传模块实现无线通讯以及ActiveX控件的使用方法,提出了使系统应用程序更安全可靠,效率更高,维护更加方便的几种措施。 关键词:串行通信 ActiveX控件 查询接收 动态数组 最佳化TimeDelay 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中运行稳定,在实验过程中取得了良好的效果。

    时间:2014-07-20 关键词: 无线控制 通信软件 多站

  • 基于DSP的现场测控装置及通信软件设计

    1  引言 随着工业规模的扩大,工业控制系统的信息集成程度也越来越高。基于网络的现场总线控制系统为信息的集成提供了有效技术保证。现场总线是应用在制造或过程区域现场装置与控制室内自动控制装置之间的数字式、串行、多点通信的数据总线,也被称为开放式、数字化、多点通信的底层控制网络。以现场总线为核心的工业控制系统,称为现场总线控制系统。本文主要设计了 CAN 总线测控系统中的 DSP 下位机现场测控装置及通信软件。2  测控节点的总体设计 本文所讨论的测控系统是以 CAN 总线为基础,结合 PC 机和 DSP 测控节点来完成数据 的采集工作的。因此 CAN 总线上的测控节点具有很重要的作用。节点结构框图如图 1。图 1  节点结构框图 网络节点,可以采用单独的微控制器、CAN 控制器和 CAN 收发器组合而成,也可以将微控制器和 CAN 控制器集成在一起的带有在片 CAN 的微控制器。节点控制器的选择有两种方案,一种是选择 MCS196 等单片机,但是必须在外部扩充高精度的 A/D 转换器、CAN 通信模块、定时器等模块,处理数据能力较低。而另一种方案采用具有在片 CAN 的微处理 器,如 PHILIPS 的 81C90/91、TMS320LF2407 处理器等。因为 TMS320LF2407 具有较高的 运行速度和数据处理能力,因此,在本系统中采用 TMS320LF2407 作为节点的微处理器。3 CAN 总线接口电路及工作原理 TMS320LF2407 与物理总线之间通过 CAN 总线收发接口电路来连接。从 CAN2.0 协议 的特征可知,一条总线上节点数可以无限多,但要受到总线驱动能力限制,考虑这一点,设计中采用收发驱动芯片方案。本文选用 Philips 公司的 CAN 总线驱动器 82C250。CAN 总线 驱动器提供了 CAN 控制器与物理总线之间的接口,是影响网络性能的关键因素之一。它最 初是为汽车中的高速应用(达  1Mbps)而设计的。器件可以提供对总线的差动发送和接收能力。图 2  硬件接口电路图[!--empirenews.page--]以 TMS320LF2407 为核心芯片,PCA82C250 为驱动 CAN 控制器和物理总线间的接口, 对总线提供差动发送能力,对 CAN 控制器提供差动接收能力。因为 TMS320LF2407 用 3.3V 的电压,PCA82C250  用 5V  的电压,所以需要电平转换。图中:R2、R3、R4  和二极管 D 组成的电路为电平转换电路,R1 为 CAN 终端匹配电阻。接口电路如图 2 所示。如果考虑到提高系统的抗干扰能力,可以在 CAN 总线收发器 PCA82BC250 前增加 2 个 高速光电隔离器件  6N137  芯片,实现总线与控制器的隔离,可以保护总线不受瞬态冲击的影响,并可提高节点的总线驱动能力。4  软件设计图 3 从节点主程序流程图  节点的软件设计主要包括四大部分:CAN  现场智能测控装置初始化、报文查询发送及中断接收、用户 A/D、D/A 转换子程序即协议实现程序。其主程序的实现流程如图 3 所示。 本测控装置的节点通信软件采用的语言是 DSP 的 C 语言嵌入汇编语言,因为在用 C 语言开发 DSP 应用程序时,可能会遇到一些对实时性要求较高或是需要对 DSP 的底层资源进 行操作的场合。这时如果用  C  语言编写相应的代码就会给开发带来一定的难度,甚至某些操作 C 语言根本就无法实现。这时,就需要在 C 语言中嵌入汇编语言。4.1  节点的通信初始化流程CAN 现场测控装置节点的初始化主要包括:系统初始化、CAN 初始。系统初始化包括 开中断优先级、清中断标志等。CAN  初始化主要包括:局部接收屏蔽寄存器的设置、主控制寄存器的设置、邮箱方向控制寄存器的设置、波特率参数设置、邮箱标识符的设置、邮箱的设置和中断允许寄存器的设置等。1、位定时器的初始化在对位定时器(BCR1  和  BCR2)进行初始化时,首先注意要对  CAN  模块主控制寄存器 MCR 中的 CCR(改变配置请求位)置 1,并对全局状态寄存器 GSR 中的 CCE(改变配置始能 位)置 1,方可进行下面的初始化。因为此时 CAN 控制器处于脱离 CAN 总线状态,因此当 配置完位定时器后,将 CCR 位清零,使 CAN 控制器恢复总线。CAN 控制器波特率的计算 方法如下:波特率=ICLK/ [(BRP+l)+Bit Time]其中:TCLK 为 CAN 控制器的时钟频率,也就是 DSP 的系统频率。BRP 为波特率预分频位,决定CAN 控制器的时间片(TQ)。TQ= (BPR+1)/ ICLK位时间(Bit Time)=(TSEGl+1)+(TSEG2+1) +1TSEG1 为时间段1,可编程为 3 到 16 个 TQ 时间片。TSEG2 为时间片 2,可编程为 2到 8 个 TQ 时间片,但必须满足小于或等于时间段 1。2、CAN 初始化。对 CAN 控制器的访问是以外部存储器的方式。4.2 CAN 信息的发送与接收本系统中数据的传输速率设置为 1Mbps,将邮箱 0、2 配置为接收邮箱,其中邮箱 2 为 命令信息专用邮箱,用于接收上位机发来的控制命令。邮箱 0 用来接收上位机发来的节点参 数,节点可根据这些参数来重新配置节点的信息。将邮箱 3 配置为发送邮箱,这个邮箱用于 节点给上位机发送信息。4.2.1 CAN 发送程序[!--empirenews.page--]数据从 CAN 控制器发送到 CAN 总线是由控制器自动完成的,所以 DSP 在发送数据时 只需把要发送的数据帧发送到 CAN 的发送区(邮箱 3),然后将发送控制寄存器中的相应位置1 即可启动发送命令,当 CAN 控制器将数据成功发送后会将发送控制寄存器中的发送成功 标志位置 1,通过判断这一位是否为 1,用户即可知数据是否发送。如果发送的数据非常大,可以用邮箱 4 或 5,邮箱轮流发送,一个邮箱发送完成即启动另一个邮箱。由于 DSP 的在片 ADC 模块是 10 位的,即采集到的数据为 10 位,而邮箱为 16 位,为此我们在发送数据 时,将采样的结果通过移位后将多个采样结果合在一起发送,可减少所发送的帧。4.2.2 CAN 接收程序本系统中帧的接收以中断方式。CAN  控制器在接收信息时,先将要接收的信息的标识符与相应的接收邮箱的标识符进行比较,只有标识符相同的信息才能被接收。CAN  控制器 的接收滤波器使接收邮箱可以忽略更多的位来接收信息,即如果只有被屏蔽的那几位标识符 不相符,则接收邮箱仍可接收此信息。当接收屏蔽使能位为 0 时,则局部接收屏蔽寄存器不 起作用。CAN 的接收流程图如图 4 所示。图 4 CAN 接收流程图现场测控装置的中断服务程序,包括接收数据中断并保存接收到的数据,同时处理相应 的错误中断。当主节点(PC 机)向从节点(现场测控装置)发送请求数据命令时,从节点即产生接收数据中断。进入中断服务程序后首先保护现场,然后 CPU 读出接收缓冲区的内容,最后恢复现场、中断返回后调协议分析程序。4.2.3  协议实现程序中断服务程序结束后,读出节点  ID,并读出命令内容,进行任务分析,根据任务分析 的结果确定数据发送任务,并向主节点发送数据。其协议实现程序框图如图 5 所示。图 5  节点协议实现框图 4.2.4  用户子程序设计对从节点子程序的设计,主程序通过调用子程序即可完成,这样减少了程序重复编写。 子程序的模数转换是利用 TMS320LF2407 内部的模数转换模块,避免了芯片的外扩的工作。A/D 转换是采用定时中断的方式,这里用定时器 3。本文作者创新点:本文从软硬件方面详细描述了基于 DSP 现场硬件智能测控装置及通讯软件的设计。其中从节点通讯软件主要包括:CAN 现场智能测控装置初始化,报文发送及中断接收。

    时间:2009-03-29 关键词: DSP 装置 电源技术解析 基于 设计 现场 通信软件

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

     摘要:多站远程无线控制系统是以计算机为中心控制,用多个信号源作为下位机通过无线模块进行通信,文中介绍了通过无线数传模块实现无线通讯以及ActiveX控件的使用方法,提出了使系统应用程序更安全可靠,效率更高,维护更加方便的几种措施。     关键词:串行通信  ActiveX控件 查询接收 动态数组 最佳化TimeDelay 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 Sub4 结论 根据本系统的研制经验,利用MSCOMM控件开发无线通信要把握好以下三条: (1) 收发之间应延时适当,这需要在测试中不断地调试,以达到最佳效果。 (2) 选用好的且必须具有纠错功能的无线数传模块,否则将达不到理想的效果。 (3) 设定一个合理的通信协议,使中心站与子站有良好的沟通。实际测验证明,本系统在WIN98中运行稳定,在实验过程中取得了良好的效果。

    时间:2004-12-07 关键词: 系统 远程无线 控制信号 通信软件

  • 51兼容载波通信单片机PL3105的通信软件设计

    摘要:PL3105芯片是为智能仪表设计的专用SoC芯片,具有8051指令兼容的高速微处理器、直序扩频的载波通信等强大功能。本文介绍PL3105的主要特点及其载波通信原理,分析针对载波通信应用的软件设计方法。     关键词:PL3105 直接序列扩频 载波通信 软件设计 引言 随着嵌入式系统及集成电路技术的飞速发展,针对智能仪表应用而设计的专用芯片获得了长足发展。智能仪表一般要具备CPU单元、显示单元、标准工业总线接口、A/D信号转换、实时钟、看门狗等功能。传统的智能仪表设备在选定了CPU后,需要配置复杂的功能芯片及接口芯片,完成显示驱动、外部程序存储、数据存储及其它要求功能。众多的接口芯片导致仪表的体积大、成本高、功耗增加、可靠性降低;同时调试、维护困难。 为适应智能仪表的应用需要,针对某类产品的专用单芯片上系统SoC(System on Chip)解决方案获得了巨大的发展机遇。国内外各IC设计公司都针对不同领域、不同应用需求推出了各自的SoC产品。具有8051指令兼容高速微处理器的SoC产品PL3105,采用最新的CMOS数/模混合工艺制造,是针对智能仪表行业应用而推出的低成本、高性能的解决方案。1 PL3105的主要特点 采用8051指令兼容的高速微处理器,软件易于开发;具有8/16位双模式ALU、8倍速于标准51,运行速度快,数据处理能力强。图1为PL3105的基本功能结构方框图。 针对智能仪表的应用,PL3105内部集成了2通道16位精度的∑—Δ调制A/D,LED(8×8笔划式)/LCD(24×4笔划式)显示驱动模块,2个UART,内置1KB的RAM和16KB的E2PROM程序存储器(采用ISP方式编程);内置低功耗实时钟。同时集成了完善的电压监测,上电、掉电复位,看门狗电路,确保了工业环境下运行时系统的可靠性。 内嵌的载波通信控制单元,使产品具备了在低压电力线上组网、远程通信的强大功能;最低压电力线载波通信接口专用芯片PL2101的升级,具有强抗带内同频干扰能力,灵敏度高的优点。内嵌的CPU通过配置寄存器来实现对载波通信的控制,比PL2101芯片的接口方便,可靠性更高。2 载波通信的工作原理 载波通信采用直接序列扩频的BPSK(Bipolar Phase Shift Keying)调制解调方式:将要发送的信息用伪随机码序列扩展到较这的频带上,在接收端用同样的伪随机码序列来进行同步接收,恢复信息。接收的过程包括载波信号的捕获和同步。 捕获是接收模块在扩频序列精确同步前,搜索接收信号,使接收信号的扩频序列与本地扩频序列在相位上进入可同步保持的范围之内,即二者的相位在一个扩频序列码元之内。采用每次滑动步长为半个位的串行积分搜索方式,理论上最大捕获时间需要29个数据位(15位PN码时)。捕获完成后进入跟踪阶段,动态地高速本地伪码产生器的时钟速率,使本地伪码能够自动地和接收到信号的伪码保持精确同步。扩频序列的跟踪电路采用全数字基带延迟锁定环(delay locked loop)电路。 解扩过程为保证捕获和同步均能完成,发送模块在每次传送有效数据前至少发送40个位全“1”,用作捕获和同上训练(15位PN码)。 由于所选用的扩频伪码具有很强的自相关性,所以通过比较本地伪码和接收序列之间的相关性与设定阈值的高低,来判定是否停止伪码的滑动、完成捕获。500bps时,默认的捕获门限值为30H。载波通信的扩频、解扩工作完全由SoC内部的硬件电路实现,简单可靠,解扩阈值可以软件调节。 图2(a)、(b)为PL3105内部的载波通信发送/接收工作时序图,收发数据位在芯片内部连接到P3.7,芯片未做封装引出。 载波通信控制器采用帧同步方式的串行移位通信,半双工方式,速率500bps/250bps可选;中心频率为120kHz,带宽为±7.5kHz。内嵌的CPU使用外部中断2(INT2),同步收发中断,载波通信配置流程如图3所示。 ①使能INT2中断(EX2=1),且为下降沿触发方式(IT2=0)。 ②使能载波通信控制位PLM_SSC(EXT_CFG.0=1,INT2作为载波通信同步信号的中断。 ③载波收发控制位PLM_RS(EXT_CTRL.0)=1时,载波控制器处于发送状态;PLM_RS(EXT_CTRL.0)=0时,载波控制器处于接收状态。 ④载波发送复位寄存器:用于避免载波通信模块长时间处于发送状态,使整个通信系统处于失控状态而设置。它是一个13位计数器,发送状态时,计数器速减,递减到0后,载波发送模式被强制返回接收态;接收态时,计数器停止工作。长时间发送数据时,需要向PLM_RST寄存器写入“A2H”,写入后计数器自动复位,保持发送。 低压电力线载波通信的原理结构框图如图4所示。需要配合外围的功率放大、接收回路工作,载波通信的距离与外围电路设计优劣、功率大小等密切相关。3 接收和发送的软件设计 载波通信为总线方式通信,所以载波模块的常态必须设置为接收态、不同的载波模块必须分配不同的通信地址。模块接收到校验正确的命令后,只有地址相同的模块才允许按规约进行应答。由于载波通信速率相对主频低很多,为提高CPU效率,接收和发送一般均设计为外部中断方式处理;每次进入中断,完成对1位数据的接收或发送处理。 按图3所示流程对模块进行配置、选择速率为500bps后,内部自动选择为15位PN码。载波通信控制器即进入接收态,进行载波信号的捕获和同步。 接收时,捕获和同步过程由载波通信控制单元的硬件电路自动完成,不需要软件部分参与。由于电力线的哭声一直存在,所以有效数据前必须增加同步帧头,依据相关性标准选择为0x09、0xAF,后续为通信的有效数据体及校验字节。 图5为载波通信接收过程框图。载波通信控制单元解扩出1位数据后,产生一次中断。接收时,首先采用16位接收窗口、1位滑动方式来接收通信的同步帧头0x09、0xAF。帧头接收成功后,后续数据按每8位一个字节的方式进行截取,得到传送的有效数据。接收过程中,按有关的通信协议进行地址判别、长度接收、校验计算。地址相同的模块对符合通信协议的数据进行应答,转入发送态。    图6为载波通信发送过程框图。用于载波通信的主叫方发出命令或接收方的应答。置为载波发送态时,载波通信控制单元发送完1位的扩频数据,自动产生一次中断,允许下一次数据发送。根据捕获和同步过程需要,首先发送至少40位的全“1”;然后按位发送同步帧头0x09、0xAF;之后根据用户的有关通信协议按位发送通信地址、数据长度、数据体、校验等字节。 数据全部发送完成后,载波模块即可转入接收态。但为确保待发送数据的最后一个位发送成功,必须在发送完最后一位数据后等到下一次发送中断到来后,才可以转换载波发送态到接收态。 载波发送未,将全部数据发送完成前,CPU必须及时向PLM_RST寄存器写入“A2H”,使计数器复位,避免自动复位提前进入载波接收态。发送中断程序如下: void PLM_int(void)interrupt 7//载波收发中断 {if(PLM_RS==1)zb_tx();//载波发送中断服务程序 else zb_rx();//载波接收程序服务程序,略 } void zb_tx(void)//载波发送程序 {if(len8==0)s_byte=buf_send[zbs_count];//取待发送字节到位发送缓冲 ACC=s_byte; P3.7=ACC^7;//位发送,最高位在前 s_byte=s_byte<<1; //左移 len8++; //移位计数计算 if(len8>7) //8位发送完毕 {zbs_count++; //下一字节 len8=0; //移位计数清零 } PLM_RS=1; //载波发送允许 PLM_RST=0xA2; //载波发送复位寄存器清空 } 结语 由SoC芯片PL3105设计的具有载波通信功能的智能仪表,在智能电表行业中得到了应用和推广。其简单的接收、发射处理方式使应用程序设计十分方便。同时灵活的ISP编程方式,使产品升级换代和功能扩展灵活;达到了低成本、高性能的设计指标。

    时间:2004-12-04 关键词: 通信 兼容 单片机 电源技术解析 设计 载波 pl3105 通信软件

发布文章

技术子站

更多

项目外包