基于CAN总线的远动测控终端的设计与实现
摘要:本文首先分析了一种电力测控系统终端的整体设计方案,然后结合系统中遥测模块和主控板之间的CAN总线通信方式,重点介绍系统中CAN模块的硬件构成及工作原理,最后阐述了为uClinux添加CAN设备驱动的方法。
基于CAN总线的远动测控终端的设计与实现
闫亮亮、江平、王晶
(华东交通大学交通信息工程及控(本文转载自 www.yzbxz.com 一枝笔写作网)制研究所,南昌,330013)
摘要:本文首先分析了一种电力测控系统终端的整体设计方案,然后结合系统中遥测模块和主控板之间的CAN总线通信方式,重点介绍系统中CAN模块的硬件构成及工作原理,最后阐述了为uClinux添加CAN设备驱动的方法。
关键词:CAN总线、SJA1000、Linux设备驱动
中图分类号:TP31文献标识码:B
Design and application of Remote Terminal Unit Based on CAN bus
YAN liang-liang、JIANG ping、WANG jing
(Department of Electrics&Electrical, East China Jiaotong University, Nanchang 330013)
Abstract: This paper first analyzed one kind of Remote Terminal Unit system's overall design plan, then combined the CAN-bus communication means between the Main board and Measureing board Mainly introduced the CAN module's hardware constitution and the operation principle, finally elaborated on the steps to add the CAN driver in the uCLinux system。.
Keywords: CAN bus SJA1000 Linux Device Drivers
1、引言
随着电力需求的增加,电网结构越来越复杂,为了保证电力系统可靠稳定的运行,就需要实时监控电网的运行状况,以在故障发生前有预警,同时在故障发生后又能够及时的处理。这就对测控单元整体性能提出了更高的要求,不仅要求数据准确可靠、而且要求实时性要好。在测控终端内部的各个模块中以遥测板和主控板的通信数据量最大、最复杂。传统的采用RS-232或RS-485的通信方式通信效率较低,而且不易于扩展。而CAN是多主的工作方式,通信方式灵活,无需站地址等节点信息,采用非破坏性总线仲裁技术,能充分满足实时要求。另外CAN采用短帧结构传输信号,传输时间短,具有较强的抗干扰能力。强化了数据的安全性。基于CAN总线的以上优点,本系统选用CAN总线做为主控板和遥测板的通信媒介。
2、CAN-bus通信在信号电源测控系统中的应用
2.1、系统组成
系统的硬件组成主要包括四部分:主控板、遥测板、遥信板、遥控板。采用直插结构,上述各模块都通过母板上的总线进行通信。遥测板用于采集现场的交流信号,通过电压/电流互感器(PT/CT)和信号调理电路,然后经过ADC转换,将模拟的电信号转换成数字信号。数字信号处理器DSP控制ADC的采样并读取转换结果,并对结果进行实时处理得到各种电参数(电压、电流的有效值、有功功率、无功功率、功率因素、频率、相序等),然后将这些参数进行处理并按规定组桢后通过CAN-bus与主控板通讯。遥信板主要采集现场的各种开关位置信号,储能信号、故障信号等,然后通过母板上的总线结构直接与主控板进行数据通信。遥控板主要对现场的断路器、电容器、继电器进行控制。而主控板则主要完成整个系统的控制功能、数据的收集与处理、人机界面、网络通信等功能。其中每块遥测板可采集3路电压信号和3路电流信号,本系统中配置了两块遥测板。系统硬件结构图如图1所示:
系统的软件设计以主控板为核心,主控板移植了uClinux操作系统。uClinux是从Linux2.0/2.4内核派生而来,主要面向没有MMU(MemoryManagementUnit)的硬件平台。在经过了裁剪和优化后,形成了一个高度优化,代码紧凑的嵌入式Linux。它沿袭了Linux的绝大部分特性,具有体积小、稳定、良好的移植性、优秀的网络功能、能支持多种文件系统。采用uClinux系统可优化利用系统资源、简化程序的设计与调试、方便程序的维护和二次开发、增强系统的可靠性。
图1:系统结构图
遥信板和遥控板通过母板上的数据总线直接与主控板交换数据,遥测板和主板选用CAN总线的通信方式。
主控板软件设计分为以下几个重要步骤:
1、uClinux操作系统的移植。
2、uClinux设备驱动程序的编写。
3、应用程序的编写。
对于第一步网上已经有针对S3C4510B的uClinux内核的源代码,只要根据系统需要进行适当的裁剪就可以直接使用了,对与像串口、网口、FLASH、SDRAM等都有完整的驱动程序代码可供参考,在此不再敷述。以下将重点介绍与CAN相关部分的设计包括硬件和软件的设计方案。图2为主板CAN模块的硬件结构图:
CAN模块的设计以SJA1000为核心,SJA1000内部集成了CAN协议的物理层与数据链路层,它可工作在BasicCAN、PeliCAN两种模式下,其中PeliCAN模式能够处理所有的CAN2.0B定义的帧类型,本系统中我们选用了BasicCAN模式。通信数据经过高速光耦6N137隔离,经A82C250收发器后从外部端子连接到母板总线最后连接到外部CAN总线。S0作为片选信号,S3C4510B的外部中断INT3做为中断源。通信报文的设计采用了一个简单的协议。
2.2、Linux设备驱动简介:
设备驱动程序是Linux系统内核同外围设备交互的媒介,设备驱动程序做为系统内核的一部分,它把外围的设备完整的封装了起来,使某个特定的硬件响应一个定义良好的内部编程接口,这些接口完全隐藏了设备的工作细节。这样在应用程序开发者看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作,设备驱动程序主要完成以下的功能:对设备初始化和释放、把数据从内核传送到硬件和从硬件读取数据、读取应用程序传送给设备文件的数据和回送应用程序请求的数据。在Linux操作系统下有两类主要的设备文件类型,一种是字符设备,另一种是块设备,字符设备是个能够像字节流一样被访问的设备,块设备一般主要指磁盘等大容量设备。
linux的设备驱动可以通过动态和静态两种方式进行加载,动态加载利用了Linux的MODULE特性,可以在系统启动后通过insmod命令把驱动程序加载上去,不用的时候用rmmod命令来卸载。一般情况下我们用动态加载的方式调试驱动程序,而调试正确后再通过静态编译的方式编译进内核。(责任编辑:一枝笔写作事务所)