西北大学学报(自然科学网络版)2005年6月,第3卷,第6期ScienceJournalofNorthwestUniversityOnlineJun.2005,Vol.3,No.6________________________收稿日期:2004-09-08基金项目:国家自然科学基金资助项目(10272089)审稿人:弓千让,男,西北大学计算机科学系副教授。基于微机与单片机通信方式下的变频器控制张建国1,王元2,徐筑1,赵秉文3(1.西安建筑科技大学理学院2.西安建筑科技大学环境与市政工程学院陕西西安710055;3.浙江理工大学建筑工程学院浙江杭州310018)摘要:介绍一种基于计算机与单片机通信方式下对变频器的控制。该控制方式是采用恒流源去控制变频器,用0~20mA电流作为输出信号,达到对变频器输出频率的控制,并通过具体工程实例说明。工程实例是设计专用的单片机作为下位机,通过微机(上位机)与此专用的单片机通信去控制变频器,变频器控制风机,使风机给风洞产生的风速为正弦波线型(或任意波型)。关键词:变频器,微机,单片机,通信,风机中图分类号:TP317文献标识码:A文章编号:1000-274X(2005)0153-08变频器是基于电子技术、计算机技术和自动控制理论发展起来的电子电气设备。它的主要用途是对异步电动机实现无级调速,具有调速范围宽、功能齐全、性能可靠、通用性强、操作灵活、使用简便、节能效果明显等特点。1变频器控制的方式对变频器控制的方式很多,变频器上配有手工操作键盘,可设定运行参数,发出命令,但毕竟操作复杂,容易出错,特别是在运动参数需要根据工艺或实验要求经常改变时,就需要进行自动化控制[1]。单机一般采用模拟控制和计算机数据通信。计算机与变频器之间的数据通信,实现了对变频器的参数设定和监控,可提高变频器的控制能力和控制范围。但是,该控制方式中,变频器与微型计算机之间的数据通信准确程度、可靠性及效率则是这种变频器控制方式的制约因素。在大多数精度要求不高的情况下,计算机与变频器的直接数据通信控制方式,使用还很普遍。那么,对于精度要求高,工作环境中的干扰又非常大,如何实现计算机对变频器控制,我们推荐一种采用模拟控制变频器的控制方式。用0~20mA电流作为输出信号,达到对变频器输出频率的控制。其特点是适时性好,无须考虑采样时间和通信时间,而且输出电流不受负载的变化,因而在抗干扰能力方面,则大大优于计算机与变频器之间的数据通信。下面就以一种基于PC机+单片机的环境风洞风速控制系统为例加以说明。通过此系统控制变频器,由变频器去控制风机,使之产生自然风,提供给风洞。2计算机与单片机系统对变频器的控制2.1系统构成设计专用的单片机作为下位机,通过微机(上位机)与此专用的单片机通信去控制变频器,变频器控制风机,使风机给风洞产生的风速为正弦波线型(或任意线型)。因此在设计风速控制系统时,数据文件是正弦波线型。这个系统的优点是可以设计不同的数据文件,即在自然环境下采集风速随时间的变化的数据,形成数据文件,通过风速控制系统,即可使风机产生的风速随时间的变化曲线和自然环境下风速随时间的变化曲线一致,从而可以在室内进行研究-2-工作。如图1微机(上位机)风机变频器单片机(下位机)环境风洞控制通讯控制图1系统总图Fig.1Systemchart2.2控制系统的硬件制作风速控制系统的硬件制作中,以单片机为核心,非总线应用的最小系统结构,在键盘显示和数-模转换当中,应用了先进的虚拟扩展接口技术,大大节省了硬件的资源。设计中采用模块化,这样不但可以增加抗干扰能力,而且对于系统的整体调试,也非常方便。为了增加系统的稳定性和抗干扰能力,上位机(PC机)和下位机(单片机)的通信口由RS-232转换成RS-485接口,而且可以使上位机(PC机)与多个下位机进行通信,为进一步深入研究奠定了坚实的基础。如图2所示,我们可以看到的核心部件是Intel公司的HCMOS产品89C51八位单片机[2],它既具有CMOS的低功耗特性,又保持了HMOS的高速,高封装密度特性。片内ROM形式为EPROM,片内ROM容量为4kb,片内RAM容量为128b。1P1.02P1.1P1.23P1.3440393837VCCP0.7P0.6P0.55P1.46P1.5P1.67P1.7836353433P0.4P0.3P0.2P0.19RESET10P3.0P3.111P3.21232313029P0.0EAALEPESNCPU13P3.314P3.4P3.515P3.61628272625P2.7P2.6P2.5P2.417P3.718XTAL1XTAL219GND2024232221P2.3P2.2P2.1P2.0RXDTXDINTOINT1TOT1WRRDXINCXUDXCSLED显示板RDBCLK2LOADTXD485接口板键盘模块DA板TXDRXDSETBCLK1晶振图2单片机CPU的I/O图Fig2In/OutchartofCPUinsinglechip-3-单片机的CPU与其他硬件连接[3]:1)D/A板和主板XINC=P1.4//向数字电位器发脉冲;XUD=P1.5//步进步退切换;XCS=P1.6//片选控制系统中,运用了先进的数模转换技术,即采用当今流行的数字电位器技术,一方面使系统更加简洁,数字电位器的价格低廉,大大节省了成本。另一方面数字电位器的抗干扰能力很强。也采用了串行扩展的虚拟技术。D/A板的主要功能是用单片机控制数字电位器X9C103(数字电位器用电流大一些的X9C103准确些)以实现输出0到20mA的恒流源2)LED和主板SETDB=P3.4//向LED发数据位;CLK1=P3.5//向LED发同步脉冲由于静态显示编程容易,亮度高,管理也简单,CPU的负担轻,但占用的口线资源较多。而动态显示方式编程和管理较复杂,亮度低,占用CPU的时间多,利用的口线资源较少。本系统的主要工作是通信,为了让显示占用CPU的时间减少,我们采用静态显示方式。3)键盘和主板LOAD=P1.1//键盘状态并行送入移位寄存器;CLK2=P1.2//数据位移出脉冲RDB=P1.3//接收数据位键盘显示模块硬件电路设计,采用虚拟串行接口技术,利用单片机的通用I/O口资源,形成虚拟串行接口,进行键盘显示。使用串口来扩充口线,当速度不高,口线的电平切换瞬间允许波动时,使用功耗很低的HCMOS电路,则可用少量的I/O口线,扩为数百根I/O口线。4)485接口板和主板RXD=TXDTXD=RXD由于单片机和PC机的串行通信总线标准接口是RS-232,而且系统需要抗干扰的能力大,我们设计了两个232/485转换接口电路,一个电路是把单片机接口转换成RS-485通信总线标准接口,另一个电路是把PC机接口RS-232转换成RS-485通信总线标准接口。2.3风速控制系统中单片机的软件设计2.3.1单片机的程序设计概述单片机程序是按正弦波控制风速的应用程序,它和PC机程序SINBPC.ASM配合。单片机的数据获取来自PC机的通信口,单片机的输出电流的大小由PC微机控制,输出电流再去控制变频器,使风机的输出不同的转速。PC机退出后,可以通过单片机的键盘对D/A板直接送所需的任意固定电流数,这个电流数通过变频器让风机以固定速度工作。本程序主要的两项任务:①接收PC机传递过来的波形的各点函数值,并把它转化为相应的恒定电流值,送变频器调速,从而转化为对应的风速;②为PC机提供定时的基本定时单位10ms,这个时间可以控制微机发送电流数据的快慢,从而决定变频器输出频率变化大小。2.3.2单片机与微机串口通信它要等待PC机发来字符B才被启动,因为PC机要等设定时间间隔后,才让单片机工作。PC机和单片机联用完成对变频调速器的控制,使风机速度按正弦波变化,PC机收发均用查询方式。程序如下:STLOP:JNB1,STN//位为1,顺序执行,等PC机发启动命令字B后才开始工作。MOVA,SBUFCLR1CJNEA,#42H,STLOPSTN:LCALLKEYCODE//或者单片机按任何键也通过-4-JCSTLOPSLOP1:LCALLD40MSLCALLKEYCODEJNCSLOP1STN1:MOVTL0,#0BHMOVTH0,#0DCHSETBET0//开定时器T0中断SETBTR0//启动定时器T0SETBPS//设串口为高优先权SETBTR1//启动定时器1SETBEA//开中断SETBES//允许串口中断查中断向量表:ORG23H//入口LJMPSINT中断子程序:SINT:JBTI,SNDINTRINT:SETB1//接收到数据产生中断的标志CLRRISJMPDONE1SNDINT:CLRTI//发送数据SETB2DONE1RETI2.4风速控制系统中微机的软件设计[4]风速控制系统中,PC机作为上位机,与下位机(单片机)进行通信。为了保证通信的适时性,采用PC机汇编语言设计的程序。软件设计的主要任务:把采集来的数据文件调入,本系统的数据文件是一个规则的正弦波风速表。PC机工作时,按照PC机设定的速度,给下位机(单片机)发送一个控制风速的电流值,并且在PC机的界面上画图,显示发送数据的大小。如图3所示。2.4.1PC机与单片机通信的程序设计的简介[5]1)PC机和51单片机的通信PC机程序是用汇编语言设计的程序,按正弦波控制风机的应用程序,与之配合的是单片机程序SINA51.ASM。单片机每10ms发T字符给PC机做PC机的基本定时时基,PC机接收到T字符时,等待设定的间隔到,根据数据表给单片机发送一个控制风速的电流值,并显示设定的间隔时间和实时钟。2)PC机与单片机的通信过程[6,7]过程整体上分为设定参数和运行两个过程,其设定参数就是设置两个相邻的控制风速的电流值间的时间间隔。-5-start放光标于0行0列往下清屏24行,并放光标于0行0列数据块初始化为0调用子程序:电流变化模式的显示显示字符串:PLEASEINPUTCONTRLMODE调用子程序:显示实时钟调用子程序:间隔时间显示调用子程序:显示当前电流值调用通讯子程序检查键盘调用读键模块是否有键YESNO图3主程序流程图Fig.3flowchartofmainprograme在运行过程中,还可以有人工干预。按C按钮,可以进行风速模式的改变;按S按钮,可以重新设置时间间隔的大小;按Q按钮,可以退出程序的运行;按B按钮,则可以启动;按R按钮,进行复位。3)SINBPC.ASM串行通信程序设计的步骤如下。步骤18250初始化(针对COM2):①设定传输波特率我们首先确定传输速率和接收时钟与发送时钟,计算出分频系数,分频系数=基准时钟÷(16×波特率),将其写入除数寄存器。注意对除数寄存器操作前必须使通信线路控制寄存器LCR的最高位DLAB置位。下面就是COM2工作在9600波特率的设置程序段:MOVDX,2FBH//向线路控制寄存器2FB单元的位7置入1,允许访问除数寄存器。-6-MOVAL,80H;OUTDX,ALMOVDX,2F9H//除数寄存器的高8位送0MOVAL,0;OUTDX,ALMOVDX,2F8H//除数寄存器的低8位送0C,查波特率与设置的分频系数对应表,可知波特率为9600MOVAL,0CH;OUTDX,AL②设置通信字符格式(写入通信线路控制寄存器)我们需要数据位为十位(起始位,数据8位,停止位,无校验位)。程序段如下:MOVDX,2FBH//通信线路控制寄存器03H,表示数据8位,无校验位。MOVAL,03H;OUTDX,AL③设置工作方式(写入调制解调器寄存器)通过写入调制解调器控制寄存器可选择中断,查询或循环测试不同的工作方式。对RTS预置正电平作为电源,对DTR预置负电平,即RXD处于起始位之前的初始位,即负逻辑1电平。程序段如下:MOVAL,02H//RTS置1正电平,DTR置0负电平。MOVDX,2FCH;OUTDX,AL④设置中断允许或屏蔽位(写入中断允许寄存器)我们不采用中断工作方式,应置中断允许寄存