第24卷增刊2009年lO月数据采集与处理
JournalofDataAcquisition&Processing
V01.24No.S
oct.2009
文章编号:l004—9037(2009)增刊一0290—04
基于c8051f060单片机的cAN2.oB数据采集系统
陈光建刘国权徐涛郝向凯高志强
(中国石油集团测井有限公司华北事业部,任丘,062552)
摘要:EILog测井系统中引入CAN(C0ntrollerareanetwork)总线作为通讯网络,理论上可以挂裁无限多个带有CAN接口的仪器,从而实现了最大限度的组合测井。CAN总线的高速度、高抗干扰能力以及高扩展能力,通过对C8051f060单片机在CAN总线中的设计与实现,保证了测井仪器的质量,极大地提高了测井效率,减少了下井次数。关键词:EILog测井系统;CAN;C805“060单片机
中图分类号:TP27文献标识码:A
DeVelopmentofDataAcquisitionSystemCAN2.0BBased
OnC8051f060Single—Chip
I[’^P以G“4,2曾歹i以咒,Li“G“Dg“n咒,X“77口o,H口oX如,zg忌口f,G乜DZ^igi口"g(HuabeiBusinessDivision,ChinaPetroIeumLoggjngComparyLimited,Renqiu,062552。China)
Abstract:TheCANbusisadoptedinEILogloggingsystemasthemessagenetwork,andintheoryan1imitlessnumberofCANinterfaceapparatuscouldbemountedinordertoachievemaximumcombinationlogging.CANbushashigh—speed,highanti—jammingcapabilitiesandhighscalabi“ty.ThroughthedesignoftheC8051f060single—chipCANbusatthequalityoftheloggi
ngsystemisensured,andtheloggingsystemimprovestheefficiencyandreducesthegoingdownnumbers.
Keywords:EII。ogloggingsystem;controllerareanetwork(CAN);C8051f060SCM
引言
CAN全称为Controllerareanetwork,即控制器局域网,是国际上应用最广泛的现场总线之一。CAN最早出现在20世纪80年代末的汽车行业中,由德国Bosch公司提出,作为汽车环境中的微控制器通讯总线,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。
CAN可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易,外硬件的错误检定特性也增强了CAN的抗电磁干扰能力,另外作为一种总线,理论上具有无限的扩展性能【1]。
C8051f060单片机内部集成CAN控制器,符合Bosch规范2.oA(基本CAN)和2.0B(全功能CAN),方便了CAN网络通信设计。CAN通讯网络具有高速度、高可靠性、强抗干扰能力等优点,并且具有很强大的扩展能力。
收稿日期:2009一03—20;修订日期:2009一06一05
由于C8051f060的高集成度,因而只需少量外围测量电路便可组成集数据采集、控制和通信功能于一体的单片系统,同时可提高系统的整体可靠性。另外,C8051f060内核和普通51系列兼容,且指令简单易学,因此,可缩短系统研发周期。
1C8051f060单片机
C805“060单片机是SiliconI。aboratories公司推出的完全集成的混合信号片上系统型MCU,具有以下的特点[2]:
・高速、流水线结构的805l兼容的CIP一51内核(可达25MIPS)
・两个16位、1Msps的ADC,带DMA控制器
・控制器局域网(CAN2.oB)控制器,具有32个消息对象,每个消息对象有其自己的标识掩码・全速、非侵入式的在系统调试接口(片内)
・10位、200ksps的ADC,带8通道模拟多路开关
增刊陈光建。等:基于C8051f060单片机的CAN2.oB数据采集系统291
・两个12位DAC,具有可编程数据更新方式
・64KB可在系统编程的FLASH存储器
・4352(4K+256)字节的片内RAM
・可寻址64KB地址空间的外部数据存储器接口
・硬件实现的SPI,SMBus/12C和两个UART串行接口
・5个通用的16位定时器
・具有6个捕捉/比较模块的可编程计数器/定时器阵列
・片内看门狗定时器、VDD监视器和温度传感器
C8051f060单片机器件内部的控制器局域网(CAN)控制器,仪器接口使用CAN协议实现串行通信。其内部结构如图1。由于MCU不能直接访问信息RAM,因此,必须通过IF寄存器和信息RAM交换数据。信息RAM共可存储32个消息对象,而IF寄存器则分为IFl和lF2两组,以分别定义为接受、发送功能,IF的CommandRequest寄存器可用于定义访问
32个消息对象的哪一个。Command—Mask则用于定义将一个消息对象的哪一部分传到消息RAM中。
il删控制器C805l
TXRX
CAN控制器核
Z。≤≥
(32个消息对象)rrl…’7”I’訇弋,
◇◇
I消息处理器中断卜_MCU
图lC8051f060单片机内部结构图2系统原理及功能实现
CAN2.OB接口电路(见图2)主要包括CAN2.oB接口控制器(U3)、光耦隔离电路(U2)和CAN2.oB接口驱动器(U1)。该电路主要作用是接收430K遥传短节下发命令
和上传数据;将下发命令解释,并产生相应的控制信号。光耦隔离电路(U2)的作用是通过光电隔离提高CAN信号的抗干扰处理能力。CAN驱动器(U1)为CAN总线提供差分发射能力,提供差分接收能力。
CAN控制器最常用的传输介质就是双绞线,利用差分电压传送,两条信号线被称为CANH和CANI。,静态时均为2.5V左右,此时状态表示为逻辑1,也可以叫做隐性;用CANH比CANL高表示逻辑o,称为显形,此时电压值分别为3.5,1.5V。2.1系统接口ID的约定
系统接口使用2.OB协议(11位地址),位IDlo为1时表示复位状态,为0时表示正常工作状态;位ID9—8为仪器状态(oo为井下仪器内部通讯;01为遥传对井下仪下发命令;10为井下仪器对遥传发送数据;11为遥传内部通讯);位ID7一。为仪器号,该仪器号设为10001011。
2.2系统工作流程
在一个循环周期的开始,数传通过CAN总线给仪器下发一个开始取数据的远程帧(1D:00110001011),从而使测井仪开始发送数据,数据发送完毕后,如果遥传收到地面刻度/推靠命令,此时则发送一个命令字(ID:01010001011)。所有数据全部传送完毕(帧结束标志有效),采集数据以等待遥传发送RTR远程帧,开始下一个循环周期。
图2C8051f060单片机在电路中的应用
292数据采集与处理第24卷
数据上传每帧2K字节。井下仪器上传数据以字为单位,遥传系统对数据的组织和上传内容不作要求。2.3下发命令
CAN2.oB接口电路和电缆遥传短节通讯通过CAN总线连接,共3条信号线,分别为CANH,CANL和GND。CAN控制器集成在C8051f060单片机上,负责接收遥传短节下发命令,C8051f060单片机解析后发出控制信号(B1,B2,B3,B4)送到控制驱动部分,用来控制仪器的状态。仪器共有7个命令:测井、低刻、高刻、打开、收拢、禁止推靠和贯通。例如:下发命令字为55555C55时仪器微电极零刻;下发命令字为555555C5时仪器微电极高刻;下发命令字为AAAAAA3A时仪器井径打开;下发命令字为AAAAAAA3时仪器井径收拢。
3系统编程
仪器接口中C8051f060单片机主要实现以下功能:模拟量采集、控制、数据处理以及数据传输。具体流程如图3所示。
.I
图3C8051f060单片机工作流程框图
3.1系统初始化
C8051f060单片机的初始化设置主要包括I/o口交叉编译设置,系统时钟设置,ADC采集系统设置,CAN控制器设置以及其他相应的功能设置‘3。。本文主要介绍CAN寄存器的设置,其他的功能设置不再一一介绍。
现根据需要对CAN控制器进行初始化设置:
为了接受遥传短节的命令数据,本文设置一个消息对象来接受数据:
Unsignedintid;
UnsignedintMsgNum;
unsignedinttemp;
id—Oxl8B;
MsgNum—l;
SFRPAGE=CANO—PAGE:
CANOADR=lFlCMDMSK;//指向IFlCom—mandMaskRegisters
CANODAT=0xOOb3;
/*IF1CommandMaskRegisters一0x00b3
WR/RD一1,Mask=O,Arb一1,Control=l,ClrIntPnd—O,TxRqst=0,DataA=1,DataB=1,一次发送8字节数据*/
CANOADR—IFlARBl;
CANODAT=OxOOOO;
/*lFlArbitrationRegisters1=OxOOOO,即IDl5一O—O*/
temp—id《2;//标准id为lD28一IDl8,所以要左移2位
temp&=Oxlfff;
tempI=ox8000;
CANoDAT—temp;//地址自增,指向IFlAr-bitrationRegisters2
/*IFlArbitrationRegisters2=101(id)OOb
MsgVal=1,Xtd=O,为标准模式,扩展1D无效,Dir=O,为接收*/
CANODAT=Ox0088;
/*IFlMessageControlRegisters—Ox0088
NewDat=0,MsgI。st=0,IntPnd—O,UMask—O,TxIE—O,RxIE=O,RmtEn=O,TxRqst一0
EoB一1,DI。C3—0=1000,即数据长度为8*/
CANOADR=IFlCMDRQST;
CANODAT=MsgNum;
/*IF1CommandRequestRegisters—Ms—gNum,将以上配置写入MsgNum号消息*/该程序的作用就是将1号消息对象配置为接收(帧lD为oxl8b)缓冲区。这样CAN总线上ID为Oxl8b的数据帧就会被接收放到消息号为1的消息寄存器中了。然后用同样的方法将2号消息对象设为远程帧(帧ID为oxl8b)接收缓冲区,3号对象设置为发送(帧ID为Ox28b)数据缓冲区。接着要配置波特率发生器,将CAN传输速度配置为800Kbps:SFRPAGE—CANo—PAGE;//切换到CAN配置页面
CANOCN=0X41:
CANOADR=BlTREG:
CANODAT=oX2542;//配置波特率
增刊陈光建,等:基于C805“060单片机的CANz.OB数据采集系统293
最后打开CAN中断,并启动CAN:
SFRPAGE=CANo—PAGE;//切换到CAN配置页面
CANODATI,一OxFF:
for(i一1;i<33;i++)
{
CANOADR—lFlCMDRQST;
CANODATI。=i;
}//所有消息清零
CANOCN—Ox02:
//使能CAN中断Init清零,结束初始化操作,CAN控制器进入正常工作
3.2中断程序
单片机执行完系统初始化后,进入主程序,开始数据采集以及数据预处理,并等待遥传命令,准备数
据传送。这里要编写CAN中断子程序,在其中完成数据接收。编写数据发送程序,在其中完成数据发送。
voidCAN—ISR(void)interrupt19//CAN中断子程序
scala不是内部或外部命令{
uinttemp,i;
ucharstatus;
uchartemppage;
temppage—SFRPAGE;
SFRPAGE=CANO—PAGE:
status=CANOSTA:
if((status&oxlO)!一O)//RxoK一1成功接收报文
{
CANOSTA&一Oxef;
CANOADR=INTPENDl;
temp—CANODAT;
if((temp&OX01)!=O)//如果为数据桢
{
//接收数据
}
}
if((status&Ox08)!=O){
CANOSTA&一Oxf7;
CANOADR=INTPENDl:
temp—CANODAT;
if((temp&Ox02)!一O)//如果为远程桢
{
//发送数据
}
)
SFRPAGE—temppage;
)
在接受到CAN中断之后,单片机转入CAN中断子程序,首先判断是接收中断还是发送中断。然后进行数据接收或者发送,进而完成数据传输通讯。
4结束语
由于C8051f060的高集成度,自带CAN,因此只需少量外围电路便可实现与EIlog测井系统的配接。另外,C8051f060单片机具有与8051指令集完全兼容的CIP一51内核,指令简单易学,对于熟悉51单片机的技术人员来说,在硬件设计及软件编程上大大缩短研制周期,为系统调试带来极大的方便。经过室内测试及华北任91井试验,证明本系统通讯十分可靠,产生了事半功倍的效果,具有很大的推广应用价值。
参考文献:
[1]汤天知.EILog测井技术现状和发展思路口].浏井技术,2007,31(2):99—102.
[2]周立功.iCAN现场总线原理与应用[M].北京:北京航空航天大学出版社,2007.
[3]杜尚丰.CAN总线测控技术及其应用[M].北京:电子工_k出版社,2007.
作者简介:陈光建(1977一),男.工程师,研究方向:测井仪器研发调校,E—mail:cgjl32@sohu.com;刘国权(1969一),男,工程师,研究方向:测井仪器研发;徐涛(1972一),男,工程师。研究方向:测井仪器研发;郝向凯(1960一),男.助理工程师,研究方向:测井工程监督;高志强(1966一),男,助理工程师,研究方向:测井仪器维修。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论