论文部分内容阅读
摘 要:为适应快速组合测井平台数据传输的要求,国内大多数遥传传输速度也由100 kbit/s升级到300 kbit/s或500kbit/s,井下仪器常用的DTB总线已不能满足快速组合测井平台数据传输的要求。本文介绍了一种采用CAN总线对传统井下仪器的总线结构进行升级改造的方案;详细介绍了利用C8051F060控制器及其内部集成的CAN核实现井下仪器CAN子节点的过程。试验证明基于此方案升级后的井下仪器系统连接线少、可靠性高、传输速率快、扩展灵活,具有较好的应用前景。
关键词:CAN总线;测井仪器;遥传;C8051F060控制器
中图分类号:TP393.1 文献标识码:A
CAN Bus Application in Logging Tool Updating
LUO Mingzhang,XIONG Xiao-dong,WU Ai-ping
(School of Electronics and Information; Yangtze University; Jingzhou 434023; China)
Key words: CAN bus; application;logging tool;updating
伴随石油测井仪器组合化的发展趋势,国内大多数遥传传输速度也由100 kbit/s升级到300 kbit/s或500kbit/s,测井仪器井下系统常用的DTB总线已不能满足快速组合测井平台数据传输的要求[1]。所以,我们非常有必要对测井仪器井下系统的总线结构进行升级改造。CAN总线是目前较为流行的现场总线之一,也是近年来发展较快的一种现场总线,在汽车制造领域已经有了成功的应用,在石油测井仪器领域也有广泛的应用前景。
1 CAN总线及其特点[2]
CAN (Cont roller Area Network) 即控制器局域网络,是一种具有国际标准的现场总线。由于其高可靠性、灵活性以及独特的设计,CAN 总线越来越受到人们的重视并被广泛应用于航海、航空、医疗及工业现场领域。CAN 总线的特点:
(1)通信方式灵活。可以采用多主通信方式,也可以采用单主多从的通信方式;
(2)CAN总线采用非破坏性仲裁技术,从而大大节省了总线冲突仲裁时间;
(3)通过报文滤波即可实现点对点、点对多点及全局广播等几种方式传送接收数据,无需专门的“调度”;
(4)通信速率最高可达1Mbps(通信距离最长为40m);
(5)CAN上的节点数主要取决于总线驱动电路,目前可达110个。
测井仪器井下系统是一种分布式实时测控系统,而CAN 总线自身的特点使CAN 总线能够有效地支持分布式实时测控系统。结合CAN 总线在分布式实时测控系统中的成功应用经验以及测井仪器井下系统的特点,将CAN 总线应用于测井仪器井下系统具有较大的优势。
2 CAN总线在测井仪器井下系统升级改造中的应用[1]
图1为一种典型的基于CAN总线的测井仪器井下系统示意图。
高速电缆遥传与井下测井仪器之间采用高速CAN总线协议方式通信,通信速率可以达到1Mbps。其中高速电缆遥传由井下调制MOD/解调DEMOD单元及井下CAN总线主控制单元组成,二者通过双口RAM相连接;为了井下测井仪器与高速电缆遥传的CAN通信,每支井下测井仪器必须配备相应的CAN总线子节点接口。下面详细介绍了基于CAN总线子节点短节的实现过程。
图1 一种典型的CAN总线井下仪器系统
3 CAN总线子节点的设计[3][4]
3.1C8051F060的片内CAN控制器
C8051F系列单片机是Silicon Laboratories公司推出的混信号系统级芯片,具有与80C51兼容的CIP-51内核 ,指令集与MCS-51全兼容。C8051F060内部集成的控制器包括一个CAN内核、消息RAM (独立于CIP-51内核)、消息处理单元、控制寄存器等。C8051F060内部的CAN结构框图如图2所示。
图2 C8051F060内部的CAN结构框图
图3 CIP-51访问CAN和每个消息的路径图
C8051F060内部的CAN只是一个协议控制器,它并不提供物理层的驱动。CAN控制器有32个可以被用来构成发送或传输数据的消息目标。接收到的数据、消息目标和识别码全部存储在消息RAM中。CAN内核通常不能直接访问消息,而必须通过RAM接口寄存器IF1或IF2来访问。所有的协议功能(如数据的传输和接收滤波等)由CAN控制器完成,而不是CIP-51MCU。用这种方法,只需要CPU较少的带宽就可以实现CAN通信。在CAN控制器里只有三个寄存器可通过CIP-51中的特殊功能寄存器直接访问,其它的寄存器只能通过CAN0ADR和CAN0DATH 、CAN0DATL寄存器以地址索引的方式间接访问。其中CAN0ADR用来指出要访问寄存器的地址, 这时就相当于CAN0DATH 、CAN0DATL要访问的16位寄存器的高、低字节的映射寄存器, 而对它们的读写则相当于对所指向寄存器的读写。图3给出了CIP-51 如何访问CAN中控制寄存器和每个消息的路径图。
3.2外围硬件电路设计
C8051F060内嵌的CAN核只提供CAN控制协议,应用时需外加CAN总线收发器。本应用中选用MAX3050作为CAN总线收发器,CAN控制器外围电路如图4。MAX3050收发器是协议控制器和物理传输线路之间的接口,速率可以高达1Mbps。为了提高系统的抗干扰能力和对CAN控制器的保护,在CAN收发器和CPU的CAN核之间加入一级磁隔离(IL712-3),这样就实现了总线上各CAN节点之间的电气隔离,提高了节点的稳定性和安全性。
图4 CAN控制器外围电路设计
同时,设计者在MAX3050与CAN总线接口部分也采用了一些安全和抗干扰措施。在MAX3050的CANH和CANL引脚各自并接一个120欧姆的电阻,再通过一个47P的电容连接到地,起阻抗匹配和抗干扰作用。CANH和CANL之间跨接一只100P的电容,可以起到滤除总线上的高频干扰和防电磁辐射的能力。
3.3CAN通信模块软件设计
CAN通讯软件设计主要包括三个模块:系统初始化程序、发送程序、接收程序。
3.3.1初始化程序
初始化程序主要完成对所有消息对象初始化(将所有值置零),对发送消息和接收消息对象分别进行初始化,还要对CAN控制寄存器(CAN0CN)、位定时寄存器(BITREG)进行设置。其中,位定时寄存器的设置较复杂,这里使用内部晶振, CAN通信速率为500kb/s,得到BITREG的初始值为0x49C2。主程序中规定对象初始化、发送和接收初始化,最后才启动处理机制(对BITREG和CAN0CN初始化)。CAN通讯初始化程序流程如图5。
图5CAN通讯初始化程序流程图
3.3.2 发送程序
报文发送是由CAN控制器自动完成的,CAN用户只需根据接收到的远程帧的识别符,将对应的数据转移到发送缓冲寄存器,然后将此报文对象的编码写入命令请求寄存器启动发送即可,而发送由硬件来完成。其发送程序结构如下:
void transmit_ data (char MsgNum)
{
SFRPAGE= CAN0_PAGE; //将特殊功能寄存器指针指向CAN寄存器页
CAN0ADR= IF1DATA1; // 将CAN页寄存器指针指向第一个要发送的字节
for (num=0; num<8; num++ )//每次发送8个字节
{ CAN0DATH=sdata[num];
num++;
CAN0DATL=sdata[num];
}
CAN0ADR= IF1CMDRQST; // 将CAN页寄存器指针指向IF1命令请求寄存器
CAN0DATL = MsgNum;// 启动发送
}
3.3.3接收程序
当微处理器接收数据时可采用中断方式。接收消息对象初始化时将RxIE位置1。当程序进入到CAN中断服务子程序时,先判断CAN状态寄存器的RxOK位是否已置位,若已置位,则说明CAN控制器已经成功接收到一个数据帧(因为CAN通讯有多个中断源,而中断向量只有一个)。这时再调用相应的函数,取出数据帧中有用的字节进行处理或执行相应的操作。源程序代码如下:
void ISRname (void) interrupt 19
{ status = CAN0STA;
if ((status&0x10) != 0) //判断RxOk?(当前中断是否由接收引起)
{ CAN0STA = (CAN0STA&0xEF)|0x07; // 复位RxOk
/* 从消息RAM里读数据*/
SFRPAGE= CAN0_PAGE;
CAN0ADR = INTREG;
MsgIntNum =CAN0DAT;
receive_data (MsgIntNum);
}
}
4 结束语
试验证明,基于此方案升级后的测井仪器井下系统具有连接线少、可靠性高、传输速率快、扩展灵活的特点。在通信波特率设置为500kb/s时通信顺畅、可靠,较好地克服了DTB总线的不足。目前,该方案已成功应用于国产高性能测井系统的改造项目中,具有广泛的应用前景。
参考文献:
[1]孙钦涛等.基于CAN总线的测井数据采集系统的研制[J].测井技术,2007,31(4).
[2]邬宽明.CAN总线原理和应用系统设计[M].北京:航空航天大学出版社,2002.
[3]李刚,林凌.与8051兼容的高性能高速单片机- C8051Fxxx[M].北京:北京航空航天大学出版社,2002.
[4]C CAN User's Manual Revision 1.2USA:rOBERT bOSCH gMB h2000.
关键词:CAN总线;测井仪器;遥传;C8051F060控制器
中图分类号:TP393.1 文献标识码:A
CAN Bus Application in Logging Tool Updating
LUO Mingzhang,XIONG Xiao-dong,WU Ai-ping
(School of Electronics and Information; Yangtze University; Jingzhou 434023; China)
Key words: CAN bus; application;logging tool;updating
伴随石油测井仪器组合化的发展趋势,国内大多数遥传传输速度也由100 kbit/s升级到300 kbit/s或500kbit/s,测井仪器井下系统常用的DTB总线已不能满足快速组合测井平台数据传输的要求[1]。所以,我们非常有必要对测井仪器井下系统的总线结构进行升级改造。CAN总线是目前较为流行的现场总线之一,也是近年来发展较快的一种现场总线,在汽车制造领域已经有了成功的应用,在石油测井仪器领域也有广泛的应用前景。
1 CAN总线及其特点[2]
CAN (Cont roller Area Network) 即控制器局域网络,是一种具有国际标准的现场总线。由于其高可靠性、灵活性以及独特的设计,CAN 总线越来越受到人们的重视并被广泛应用于航海、航空、医疗及工业现场领域。CAN 总线的特点:
(1)通信方式灵活。可以采用多主通信方式,也可以采用单主多从的通信方式;
(2)CAN总线采用非破坏性仲裁技术,从而大大节省了总线冲突仲裁时间;
(3)通过报文滤波即可实现点对点、点对多点及全局广播等几种方式传送接收数据,无需专门的“调度”;
(4)通信速率最高可达1Mbps(通信距离最长为40m);
(5)CAN上的节点数主要取决于总线驱动电路,目前可达110个。
测井仪器井下系统是一种分布式实时测控系统,而CAN 总线自身的特点使CAN 总线能够有效地支持分布式实时测控系统。结合CAN 总线在分布式实时测控系统中的成功应用经验以及测井仪器井下系统的特点,将CAN 总线应用于测井仪器井下系统具有较大的优势。
2 CAN总线在测井仪器井下系统升级改造中的应用[1]
图1为一种典型的基于CAN总线的测井仪器井下系统示意图。
高速电缆遥传与井下测井仪器之间采用高速CAN总线协议方式通信,通信速率可以达到1Mbps。其中高速电缆遥传由井下调制MOD/解调DEMOD单元及井下CAN总线主控制单元组成,二者通过双口RAM相连接;为了井下测井仪器与高速电缆遥传的CAN通信,每支井下测井仪器必须配备相应的CAN总线子节点接口。下面详细介绍了基于CAN总线子节点短节的实现过程。
图1 一种典型的CAN总线井下仪器系统
3 CAN总线子节点的设计[3][4]
3.1C8051F060的片内CAN控制器
C8051F系列单片机是Silicon Laboratories公司推出的混信号系统级芯片,具有与80C51兼容的CIP-51内核 ,指令集与MCS-51全兼容。C8051F060内部集成的控制器包括一个CAN内核、消息RAM (独立于CIP-51内核)、消息处理单元、控制寄存器等。C8051F060内部的CAN结构框图如图2所示。
图2 C8051F060内部的CAN结构框图
图3 CIP-51访问CAN和每个消息的路径图
C8051F060内部的CAN只是一个协议控制器,它并不提供物理层的驱动。CAN控制器有32个可以被用来构成发送或传输数据的消息目标。接收到的数据、消息目标和识别码全部存储在消息RAM中。CAN内核通常不能直接访问消息,而必须通过RAM接口寄存器IF1或IF2来访问。所有的协议功能(如数据的传输和接收滤波等)由CAN控制器完成,而不是CIP-51MCU。用这种方法,只需要CPU较少的带宽就可以实现CAN通信。在CAN控制器里只有三个寄存器可通过CIP-51中的特殊功能寄存器直接访问,其它的寄存器只能通过CAN0ADR和CAN0DATH 、CAN0DATL寄存器以地址索引的方式间接访问。其中CAN0ADR用来指出要访问寄存器的地址, 这时就相当于CAN0DATH 、CAN0DATL要访问的16位寄存器的高、低字节的映射寄存器, 而对它们的读写则相当于对所指向寄存器的读写。图3给出了CIP-51 如何访问CAN中控制寄存器和每个消息的路径图。
3.2外围硬件电路设计
C8051F060内嵌的CAN核只提供CAN控制协议,应用时需外加CAN总线收发器。本应用中选用MAX3050作为CAN总线收发器,CAN控制器外围电路如图4。MAX3050收发器是协议控制器和物理传输线路之间的接口,速率可以高达1Mbps。为了提高系统的抗干扰能力和对CAN控制器的保护,在CAN收发器和CPU的CAN核之间加入一级磁隔离(IL712-3),这样就实现了总线上各CAN节点之间的电气隔离,提高了节点的稳定性和安全性。
图4 CAN控制器外围电路设计
同时,设计者在MAX3050与CAN总线接口部分也采用了一些安全和抗干扰措施。在MAX3050的CANH和CANL引脚各自并接一个120欧姆的电阻,再通过一个47P的电容连接到地,起阻抗匹配和抗干扰作用。CANH和CANL之间跨接一只100P的电容,可以起到滤除总线上的高频干扰和防电磁辐射的能力。
3.3CAN通信模块软件设计
CAN通讯软件设计主要包括三个模块:系统初始化程序、发送程序、接收程序。
3.3.1初始化程序
初始化程序主要完成对所有消息对象初始化(将所有值置零),对发送消息和接收消息对象分别进行初始化,还要对CAN控制寄存器(CAN0CN)、位定时寄存器(BITREG)进行设置。其中,位定时寄存器的设置较复杂,这里使用内部晶振, CAN通信速率为500kb/s,得到BITREG的初始值为0x49C2。主程序中规定对象初始化、发送和接收初始化,最后才启动处理机制(对BITREG和CAN0CN初始化)。CAN通讯初始化程序流程如图5。
图5CAN通讯初始化程序流程图
3.3.2 发送程序
报文发送是由CAN控制器自动完成的,CAN用户只需根据接收到的远程帧的识别符,将对应的数据转移到发送缓冲寄存器,然后将此报文对象的编码写入命令请求寄存器启动发送即可,而发送由硬件来完成。其发送程序结构如下:
void transmit_ data (char MsgNum)
{
SFRPAGE= CAN0_PAGE; //将特殊功能寄存器指针指向CAN寄存器页
CAN0ADR= IF1DATA1; // 将CAN页寄存器指针指向第一个要发送的字节
for (num=0; num<8; num++ )//每次发送8个字节
{ CAN0DATH=sdata[num];
num++;
CAN0DATL=sdata[num];
}
CAN0ADR= IF1CMDRQST; // 将CAN页寄存器指针指向IF1命令请求寄存器
CAN0DATL = MsgNum;// 启动发送
}
3.3.3接收程序
当微处理器接收数据时可采用中断方式。接收消息对象初始化时将RxIE位置1。当程序进入到CAN中断服务子程序时,先判断CAN状态寄存器的RxOK位是否已置位,若已置位,则说明CAN控制器已经成功接收到一个数据帧(因为CAN通讯有多个中断源,而中断向量只有一个)。这时再调用相应的函数,取出数据帧中有用的字节进行处理或执行相应的操作。源程序代码如下:
void ISRname (void) interrupt 19
{ status = CAN0STA;
if ((status&0x10) != 0) //判断RxOk?(当前中断是否由接收引起)
{ CAN0STA = (CAN0STA&0xEF)|0x07; // 复位RxOk
/* 从消息RAM里读数据*/
SFRPAGE= CAN0_PAGE;
CAN0ADR = INTREG;
MsgIntNum =CAN0DAT;
receive_data (MsgIntNum);
}
}
4 结束语
试验证明,基于此方案升级后的测井仪器井下系统具有连接线少、可靠性高、传输速率快、扩展灵活的特点。在通信波特率设置为500kb/s时通信顺畅、可靠,较好地克服了DTB总线的不足。目前,该方案已成功应用于国产高性能测井系统的改造项目中,具有广泛的应用前景。
参考文献:
[1]孙钦涛等.基于CAN总线的测井数据采集系统的研制[J].测井技术,2007,31(4).
[2]邬宽明.CAN总线原理和应用系统设计[M].北京:航空航天大学出版社,2002.
[3]李刚,林凌.与8051兼容的高性能高速单片机- C8051Fxxx[M].北京:北京航空航天大学出版社,2002.
[4]C CAN User's Manual Revision 1.2USA:rOBERT bOSCH gMB h2000.