1 引言
本文介绍的分布式公寓智能供电管理系统以一台主控上位PC机为核心,以RS485协议为基础,通过串口连接多台下位机。下位机以TMS320LF2407 DSP为主控芯片。由于下位机要完成每个房间电压、电流信号的实时采集、电量实时计算与负载实时识别等多项任务,算法中包含FFT,计算量大,算法复杂,下位机采用DSP芯片是合理的选择。考虑到DSP原开发软件提供的数据库函数有限,故该系统将一些实时性要求不高的任务,如参数设定、波形显示、电能报表输出等交由上位机处理。本文重点介绍了系统中上下微机之间的串行通讯设计。
2 串行通信接口硬件电路设计
2.1 RS485串行通信标准及MAX485简介
RS485标准是美国电气工业联合会(EIA) 制定的以双绞线作传输线的多点通信标准,采用平衡发送和差分接收,具有较强的抗共模干扰能力,允许双绞线上一个发送器驱动32 个负载设备。它解决了RS232标准传输距离近、信号易受干扰的问题,是工业上广泛采用的串行通信标准。
MAX485是MAXIM公司推出的低功耗串行收发器芯片,该芯片支持RS485协议,采用单+5 V电源工作,内部有一个接收器和驱动器,其电路原理图见图1。图中RO和DI端分别为接收器的输出和驱动器的输入,当与DSP芯片连接时应分别与SCIRXD和SCITXD端相连;/RE和DE端分别为接收和发送的使能端,当/RE为逻辑0时,器件处于接收状态,当DE为逻辑1时,器件处于发送状态,由于MAX485工作在半双工状态,发送和接收共用同一物理信道,该信道必须分时复用,图中的/RE和DE连接端即为控制信号端。MAX485的A端和B端分别为接收和发送的差分信号端,当A引脚电平高于B时,代表发送的数据为1;当A脚电平低于B时,代表发送的数据为0。
2.2 DSP 通信模块介绍
TMS320LF2407 DSP内部有专用的串行通信模块(SCI),可支持异步串行通信和多处理器通信,其接收器和发送器是双缓冲的,收发端均有独立的使能和中断标志位,可以半双工或全双工工作。SCI模块包括SCIRXD(串行通信数据接收)和SCITXD (串行通信数据发送) 两个外部引脚及7个控制类寄存器和3个数据类寄存器。通过初始化控制类寄存器,可设置数据格式、中断使能、中断优先级、波特率等参数。发送数据时,写1到TXWAKE,将数据写入发送数据缓冲寄存器SCITXBUF即可启动一次串行发送;接收数据时,从SCIRXD引脚串行移入数据,存储在SCIRXBUF中,供CPU 读取。
2.3 PC机与DSP串行通信接口电路
由于普通PC机上仅配有RS232接口,若要利用上位微机的串行口来实现RS485标准通信,必须进行RS232与RS485接口转换。本设计采用瑞赛特8520接口卡将串行口的RS232标准电平转换成与TTL 电平兼容的RS485标准电平,该接口卡使用简便、无需再增加任何外围器件,就可利用标准的PC硬件来轻松构造工业级的长距离通信系统。另外,DSP芯片的工作电压为+3.3V,而MAX485的工作电压为+5 V,设计时在二者之间添加了光隔电路,光隔电路既实现了电平转换,又防止了系统模块与通信模块在电气上相互之间的影响。PC机与DSP的串行通信硬件接口电路原理图如图1所示。图中MAX485 的接收使能和发送使能引脚共同由DSP的PC2口控制,以选择某一时刻是接收使能还是发送使能。同时,为保证与传输线阻抗匹配,在差分端口A与B之间跨接了120Ω匹配电阻,以消除通信线路中的信号反射。
3 串口通讯软件设计
3.1 通信协议
为保证串行通信的准确性和可靠性,上、下位机通信双方必须具有相同的通讯协议,即相同的波特率及信息传送格式。因此,本设计规定:
(1)通信双方的波特率为9600bps;
(2) TMS320LF2407 DSP内部的SCI模块提供了两种多机通信模式:空闲线模式和地址位模式,本文中DSP通信采用了较简单的地址位模式,以保证上位机同所选择的下位机可靠通信。因此帧数据格式定义为:8位数据位、1位地址/数据识别位(1表示地址、0表示数据)、1位停止位、无奇偶校验位;[page]
(3)各台下位机不相互通信,且不主动发送命令和数据,同一时刻只有一个下位机发送信息给上位机。为了识别每个下位机,系统通过拨码开关等硬件电路为其分配一个特定地址。进行通讯前,上位机首先通过RS485总线广播地址信息,所有下位机都侦听广播,并中断接收。下位机接收到地址信息后,进行地址比对,若地址相同,则该下位机把本机地址作为应答信号发送回上位机,然后开始准备接收上位机发来的操作数据信息,而其它的下位机因地址不符,从中断返回。上位机接收下位机发回的应答地址信息后,比较地址信息,如果相符,正式发送数据信息,如果不符则重新发送地址信息。下位机收到上位机发送的操作数据包后,根据数据包格式把有效数据做累加,然后与接收到的累加和(即校验码)比较,若相同,则执行相应的操作,并发送成功回馈信息给上位机;若不相同,则说明发送的数据中有错误,将接收数据缓存区清零,并要求上位机重新发送。
3.2 PC上位机软件设计
系统上位机程序采用DELPHI语言编写,它具有功能强大、简便易用和代码执行速度快的特点,是新一代可视化快速应用开发工具。利用DELPHI实现串口通信常用的方法有3种:(1)利用控件,如SPCOMM控件、MSCOMM控件及APRO控件等; (2)使用API函数; (3)调用其他串口通信程序。本系统选用较简单的SPCOMM控件来完成串口选择、波特率设置、帧格式设置、发送和接收缓冲区控制、打开串口等任务,用Timer控件控制发送地址码信息。上位机PC串行通讯流程图如图2所示,其串口通信部分相关程序如下:
procedure Tform1. Timer1Timer(Sender: TObject);
begin
comm1.BaudRate:=9600;comm1.parity:=None;
comm1.StopBits:=_1; comm1.ByteSize:=_8;
oper_comm:=true; //串口接受数据流控制变量
comm1.WriteCommData(@sendbuf,1);
end;
接收程序代码:
procedure Tform1. Comm1ReceiveData(Buffer: Pointer; BufferLength: Word);
Begin
move(buffer︿,(@rbuf)︿,bufferlength);//将缓冲区数据转移到rbuf变量
if oper_comm=true then
begin
判断接受到下位机发送的应答信息,若是则继续执行
sendbuf:=操作命令字符;//发送操作命令
comm1.writecommdata(@sendbuf,1);
oper_comm.:=false;
end;
else begin[page]
接收上传数据并求和校验收到数据
end;
End;
3.3 DSP下位机串行通信软件设计
下位机DSP串行通信的软件设计可采用查询和中断两种方式,设计中采用了中断方式接收数据、查询方式发送数据。程序分为主程序和中断接收服务程序、发送数据程序3个模块。在主程序中对SCI 异步串口进行初始化(包括操作模式、波特率、字符长度、奇偶校验位、停止位位数、中断优先级和使能控制等信息) 。需要注意的是,为了保证通信的稳定可靠,串行通信控制寄存器SCICTL1 的休眠位SLEEP 设置很重要,具体方法为:初始化时将所有下位机DSP的SLEEP位都设成1,使得它们在仅当检测到地址字节时才被中断,在中断服务程序里,将接收的地址与本机地址比对,若相同,则软件清除SLEEP位以确保SCI在接收到每一数据帧都产生中断,否则SLEEP位仍保持以1,以接收下一个地址帧。DSP接收数据中断流程图如图3所示。
4 结束语
本文介绍了公寓智能用电管理系统中利用RS485总线实现PC机和多台DSP的远程串行通信设计方案。实践证明,该设计运行可靠,抗干扰性强、可完成较长距离的串行数据通信任务。该方案对其它基于DSP的远程数据通信设计具有一定的参考价值。
本文的创新点是,利用DSP内部的专用串行通信模块SCI及RS485专用接口芯片MAX485实现了PC机与多台DSP的通信,大大减少了系统的外围设计,通过正确设置SCI中串行通信控制寄存器SCICTL1 的休眠位SLEEP,避免了通信混乱,提高了总线抗串扰的能力。
参考文献
[1] 刘和平,王维俊等著. TMS320LF240x DSP C语言开发应用[M].北京:北京航空航天大学出版社,2003.
[2] 江思敏等著. TMS320LF240x DSP硬件开发教程[M]. 北京:机械工业出版社,2003.6.
[3] 张磊,陈建锋,全力.DSP控制的开关磁阻电机系统远程数据通信的研究.中小型电机,2005,32(2):43-46
[4] 王炼红,章兢.TMS320F2812 DSP与PC机的串口通信设计.微计算机信息,2006,07Z:173-175
上一篇:基于Profibus总线的煤矿胶带临控系统
下一篇:Device Net总线在NEPID系统中的应用
推荐阅读最新更新时间:2024-05-02 22:07