IndustryandMineAutomation No.3
Jun.2006 文章编号:1671-251X(2006)03-0033-04
单片机温度采集器与PC104分站的串行通信
张小鸣, 刘 英
(江苏工业学院计算机系,江苏常州 213164)
摘要:用PC104模块组建的矿井变电所采集分站,具有强大的以太网和CAN总线通信功能。在PC104模块底板上,设计了一个基于89C2051单片机的温度采集器,用于采集温度传感器监测值并通过串口将该监测值传送到PC104分站。该设计简化了变电所环境温度监测的软、硬件,并且编程简单,充分利用了PC104的空闲串口资源。
关键词:温度采集器;单片机;串行通信;PC104 中图分类号:TD611.2 文献标识码:B0 引言
一种新型的矿用变电所远程监控系统由地面工控主机、光纤以太网主信道、PC104分站、井下高压防爆开关数字式综合保护器(简称数字综保器)等组成。其中,采用PC104模块作为数据采集分站,主要是利用它的以太网接口完成与地面主机的网络高速通信,利用它的扩展CAN接口完成与数字综保器的现场局域网通信。
PC104分站一般置于井下采区变电所硐室。在监测采区变电所硐室的环境温度时,需要另外设计I/O接口才能将温度传感器信号接入PC104分站。考虑到PC104模块实际应用时,本身就需要自行设计PC104模块底板来固定模块,并安排接线端子,因此,笔者直接在底板上设计了一个基于89C2051
收稿日期:2006-03-17
单片机的温度采集器,通过扩展一个RS232串口与PC104串行通信,把环境温度监测信号传送到PC104分站。试验表明该变电所温度监测方案能充分利用PC104模块的空闲串口资源,实现简单,编程方便。
1 单片机温度采集器电路1.1 单片机温度采集器原理
基于单片机的温度采集器逻辑框图如图1所示。 4路频入通过8选1数据开关74HC151接到89C2051的INT0/,当选通1路作为INT0/的输入时,利用单片机INT0/信号下降沿触发中断请求的机理,测量频入信号1个周期的时间值就可估算出频率值,再利用标度变换公式计算出温度值。 89C2051只有1个全双工TTL电平异步通信接口,不能直接与PC104的标准RS232接口相连,因此图1中增加1个TTL-RS232电平转换芯片IP的以太网中,通过OPC、DDE、ODBC、FTP文件上
(2)克服了现场总线不能与计算机网络技术同
步发展的弊病;
(3)是当今最流行的应用最广泛的通信网络,国际上知名的自动化产品供应商均推出了基于工业以太网的技术和产品。
因此,全矿井综合自动化系统中确定采用工业以太网作为全矿井综合自动化控制层的信息传输网络。
如图1所示,在全矿井综合自动化系统的控制层,建立了一条贯穿于井上井下的高速以太冗余环网,将各现场子系统的主机作为工业控制环网的一个节点,使各现场子系统统一整合于基于TCP/
传等软件接口完成各子系统的信息整合,达到在地面调度室对全矿井生产及相关环节的“遥控”,并与上层矿级管理系统交换信息,实现了真正的矿井管控一体化。3 结语
综上所述,在全矿井综合自动化系统控制层中采用工业以太网作为传输网络,较之现场总线网络结构,具有无可比拟的优势。该系统是首个将工业以太网应用于煤矿井下的系统,已在全国各大矿务局、煤矿推广应用近20套。
© 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
・34・工矿自动化2006年6月
图1 单片机温度采集器逻辑框图
MAX232。由于单片机采集器电路布置在PC104
模块的底板上,通信距离很短,PC104与单片机的串口通信采用零Modem方式,即RXD、TXD、GND三线连接方式。
1.2 单片机温度采集器程序设计
~1000Hz)的频率检测标度转换公式。
当温度为-5°~+45℃时,线性输出为200~1000Hz:
(1000-200))温度-频率变换系数==16(Hz/℃
[45-(-5)]
标度变换公式:
(f-200)(1/频入周期-200) C=-5=-5(3)
1616
由此可见,频率检测值到温度检测值的标度转换要进行2次除法运算,第1次是式(2)的除法运算,第2次是式(3)的除16运算。虽然除16运算可以简化为右移4位,但式(2)的除法运算必须用除法子程序来完成。由于89C2051为定点CPU,加上没有多倍精度的除法指令,式(2)的除法运算成为本文的关键实现技术之一。
从微机原理得知,2n/n位二进制无符号除法运算可以转换为循环减法运算,对于8位单片机而言,通过循环减法指令,可以实现32位/16位、甚至64位/32位的高精度除法运算[1]。
②准备发送缓冲器
单片机温度采集器向PC104分站发送温度监测值的上行帧格式,如图2所示,由5~8个字节组成。
地址码数据长度温度值(补码)校验和低字节校验和高字节
软件设计分为初始化程序、主程序、INT0/中断服务程序、串口发送与接收中断服务程序等。(1)单片机初始化程序包括初始化TMOD、TCON、SCON、IE等控制寄存器,以及清零频入下降沿检测标志。通过初始化,设置T0为16位计数器方式,初始计数值为0000H;设置INT0/为下降沿触发有效,开放中断允
许寄存器的INT0/中断请求;设置串行口为方式2,数据的格式为8位数据,第9位数据位作为地址码/数据码标识位,1位起始位,1位停止位,波特率为9600bps,开放串行口中断请求。
(2)主程序
图2 上行帧格式
单片机89C2051监测频率量的任务不重,主程序采用前后台单任务程序结构,采用MCS51单片机汇编语言编程。
主程序主要包括频率检测计数值的标度变换处理、准备发送缓冲器、解析接收缓冲器命令码等。
①频率检测计数值标度变换处理
假设89C2051的晶振频率为12MHz,则T0计数器输入时钟为1MHz,输入时钟周期为lμs。单片机16位计数器T0的定时时间计算公式:
T0定时时间=计数值×输入时钟周期
=计数值×1μs=计数值(μs)
(1)
地址码字节是表示单片机采集器的发送数据头
和地址码,第9位数据位为“1”。在此之后的字节,第9位数据位均为“0”。数据长度字节D3D2D1D0表示传送的温度检测值字节数,最多可传送4路温度值,每路占用1个字节的温度值。D3D2D1D0=“0001”,表示第1路显示频入要监测,其余3路不监测。D3D2D1D0=“0011”,表示第1~2路频入要监测,其余2路不监测,由此类推。D7D6D5D4=“0000\"。D3D2D1D0的初始值由PC104分站下行命令设置。温度值字节随数据长度字节内容变化。当D5D4D3D2=“1111”时,温度值字节数最多为4个。校验和双字节是除校验和双字节之外所有字节累加和的补码。
③解析接收缓冲器命令码接收缓冲器存放串行接收的PC104分站的下行命令,格式如图3所示,由5个字节组成。
地址码数据长度
命令码
校验和低字节
校验和高字节
正如单片机温度采集器原理所述,T0对频入周期的计数值,通过式(1)就可转换输入周期值,再通过f=l/T即可计算频入信号的频率值,因此
f=1/频入周期
(2)
求出f值后,还要将f值折算成温度传感器的温度值C。下面推导使用KG3007型温度传感器(监测温度范围为-5~45℃,输出频率范围为200
图3 下行帧格式
其中,数据长度为01H,命令码D3D2D1D0位
表示要监测的频入路数。D3D2D1D0=“0001”表示
© 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
2006年第3期张小鸣等:单片机温度采集器与PC104分站的串行通信 ・35・
只监测第1路频入值,D3D2D1D0=“0010”表示监
测第2路频入值,D3D2D1D0=“0011”表示监测第1~2路频入值,由此类推。D5D4D3D2=“0000”。对于接收缓冲器而言,将包括校验和字节内的所有接收字节进行累加,若结果为0表示接收正确,否则接收出错,应拒绝解析处理。
(3)INT0/中断服务程序设计实现程序流程图如图4所示。
LCR,其中最高位DLAB(间接寄存器指针位)用来
解决8250芯片内部10个寄存器的端口寻址(用3根地址输入线A2~A0只能解决8个寄存器的端口寻址,另外2个寄存器用DLAB=“1”来复用A2A1A0=“000”和“001”两个端口)。8250的内部寄存器地址分配表如表1所示。
表1 8250内部寄存器地址分配表
端口地址端口地址
(COM1)3F8H3F9H3F8H3F9H3FAH3FBH3FCH3FDH3FEH3FFH
(COM2)2F8H2F9H2F8H2F9H2FAH2FBH2FCH2FDH2FEH2FFH
DLABA2A1A08250内部寄存器0011XXXXXX
000001000001010011100101110111
接收数据寄存器(RDR)(读)
发送保持寄存器(THR)(写)中断元件寄存器(IER)波特率除数锁存器(BRDL)(低字节)波特率除数锁存器(BRDH)(高字节)
中断元件寄存器(IIR)(只读)FIFO控制器(FCR)(只写)通信线路控制器(LCR)Modem控制寄存器(MCR)通信线路状态寄存器(LSR)Modem状态寄存器(MSR)测试与专用寄存器
图4 INT0/中断服务程序框图 每当INT0/检测到频入下降沿后,首先检测该标志信号是否为0。若为0,表明检测到频入的第1个下降沿,然后,将标志位置1,立即启动T0从零开始计数;若为1,说明已经检测到第2个下降沿,应立即停止T0计数,并且清除标志位,为下一次开始检测某路频入做准备。主程序读出T0计数值,再乘以每个计数值对应的时间值就是频率的周期值。
(4)串口发送、接收中断服务程序串口发送中断与接收中断共用89C2051单片机1个串口中断向量,进入中断服务程序后,通过判断RI和TI(发送中断标志)哪个为1,转入相应的发送或接收中断服务程序。
发送中断请求信号是在主程序中填写发送缓冲器程序发送第1个字节即地址码字节之后产生的,其余发送字节在串口中断程序中发送。
接收中断请求信号是在PC104串行发送下行帧的每个字节之后产生的。接收中断处理比发送中断处理复杂,复杂之处在于要识别当前接收的字节是下行帧中的哪个字节,尤其要识别出接收字节的长度字节,作为接收计数的初值。对数据的长度字节之后的接收字节减1计数,直到减为0,表明接收结束。2 PC104串口通信程序设计
2.1 LCR寄存器初始化
主要设定异步通信数据格式,设置8250波特率,同时它的最高位DLAB=“1”时允许写除数锁存器2次。
2.2 中断允许寄存器和中断识别寄存器
8250内部有4级中断源,定义中断允许寄存器IER的低4位优先顺序依次为:接收数据出错中断(D0),接收数据就绪中断(D1),发送保存寄存器空
中断(D2),Modem控制信号变化中断(D3)。只要写“1”就允许中断,写“0”就禁止中断。 中断识别寄存器IIR低3位的D0位用于:2个不同级别的中断同时请求,较高优先级的中断处理完之后,查询D0,假如D0仍为“1”,说明还有中断请求没有处理,继续处理同时请求的较低级的中断源。2.3 MCR初始化
Modem控制器MCR的D0位控制DTR/(数据终端准备好)输出,低电平有效(表示CPU准备
就绪)。D1位控制RTS/C请求发送,低电平有效(通知Modem,计算机准备发送数据)。MCR的D2位是8250的OUT2输出,通常控制8250的IN2TRPT(中断请求输出)是否送往CPU(D2=“1”,开放INTRPT;D2=“0”,禁止INTRPT)。因此,允许发送数据时,必须初始化输出DTR/=“0”,RTS/=“0”,OUT2=“1”。所以,MCR初始化控制为0BH。
由于PC104模块的电子盘容量有限,故本文的
PC104串口通信系统采用基于DOS6.x操作系统,采用TurboC2.0集成开发环境开发串口通信程序。
PC104模块的串口通信适配器采用Intel8250UART芯片。8250中有1个通信线路控制器
© 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
第3期 2006年6月
工矿自动化
IndustryandMineAutomation
No.3
Jun.2006
文章编号:1671-251X(2006)03-0036-03
基于PLC的直流电源屏监控系统
王静爽
(河北工程大学信电分院,河北邯郸 056038)
摘要:介绍了一种利用PLC控制的直流电源屏监控系统的控制要求、系统组成及功能等。关键词:直流电源屏;监控系统;PLC
中图分类号:TM76 文献标识码:B
AMonitoringandControlSystemofDCPowerSourceScreenBasedonPLC
WANGJing2shuang(HebeiUniversityofEngineering,Handan056038,China)
Abstract:Thecontroldemands,system’sconstitutionandfunctionsofamonitoringandcontrolsystemofDCpowersourcescreenbasedonPLCwereintroducedinthepaper.
Keywords:DCpowersourcescreen,monitoringandcontrolsystem,PLC0 引言
直流电源屏在供配电系统中主要用于水电站、发电厂、地区变电所与厂矿企业的变电所内,作为高压断路器的操作电源及控制、保护、信号、照明、二次回路仪表等设备的后备电源,特别是在交流供电回路故障时,它是整个变电站内部控制装置和照明设
收稿日期:2006-02-27
作者简介:王静爽(1966-),女,副教授,1989年毕业于河北工程大学,现主要从事企业自动化的理论研究和产品开发工作,已发表论文多篇。
备的备用电源。电力系统使用的直流电源屏通常由整流器、蓄电池和其它辅助电路组成,要求其运行稳定、工作可靠、调节方便,并能对其进行监控。 为了满足变配电系统对直流电源可靠性和使用性的要求,本文提出了基于可编程控制器(PLC)的直流电源屏实时控制系统。1 控制要求
(1)智能交流切换
两路交流输入,其中一路为工作电源,另一路为备用电源。当工作电源出现缺相、低压时,系统自动切换至备用电源,工作正常时,切换至工作电源;当
Outportb(0x20,0x20)。3 结语
2.4 8250中断控制初始化
通常情况下,8250设置成允许接收中断,禁止
发送中断,接收中断向量类型号为05H,只要中断号小于8,则中断向量为中断号+8。初始化由recopen()函数完成。2.5 主函数发送程序和接收中断服务程序
当主函数要求发送中断数据,从发送缓冲器取1个字符发送,指针加1,延时一段时间,再发送下一个字符直到发送完毕。
接收数据时,每当接收到1个字符便产生接收中断,跳转到接收中断处理函数中接收,存放到接收缓冲区,中断返回前,要向8250写一个正常中断结束命令20H到20H端口地址,即语句:
详细介绍了基于单片机的温度采集器软硬件设计及其与PC104串行通信程序的设计。上述设计已应用到矿用变电所远程监控系统的PC104分站中,温度采集与串口通信均正常可靠。
参考文献:
[1] 张小鸣,王正洪,朱正伟.高精度定点数平方根汇编子
程序的实现原理[J].江苏石油化工学院学报,2004,14
(4):58~60.
© 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
因篇幅问题不能全部显示,请点此查看更多更全内容