1 / 12
文档名称:

基于RTLinux的闸门实时控制系统.doc

格式:doc   大小:144KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

基于RTLinux的闸门实时控制系统.doc

上传人:ipod0b 2023/1/26 文件大小:144 KB

下载得到文件列表

基于RTLinux的闸门实时控制系统.doc

文档介绍

文档介绍:该【基于RTLinux的闸门实时控制系统 】是由【ipod0b】上传分享,文档一共【12】页,该文档可以免费在线阅读,需要了解更多关于【基于RTLinux的闸门实时控制系统 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。基于RTLinux的实时把握系统
摘要:从技术背景、系统结构、硬件和软件设计等方面论述了基于RTLinux的闸门实时把握系统的组成、原理以及实现方法,并着重分析了软件实现的关键问题。
   关键词:RTLinux实时把握TCP/IPMYSQL数据库
在水电站闸门把握系统中,设备地理位置分散、把握分散,基于常规继电器的把握系统不能满足电厂无人值班把握系统和全厂综合自动化的要求,必需将智能把握和工业网络相结合,实现实时把握的同时又能对设备进行智能管理和维护。目前比较常用的把握系统大多由PLC构成,成本较高,缺乏客户定制的机敏性。本文从系统功能实现和经济指标两个方面考虑,半基于RTLinux的把握平台、工业以太网和数据库技术引入闸门把握系统。
基于RTLinux的实时把握系统
摘要:从技术背景、系统结构、硬件和软件设计等方面论述了基于RTLinux的闸门实时把握系统的组成、原理以及实现方法,并着重分析了软件实现的关键问题。
   关键词:RTLinux实时把握TCP/IPMYSQL数据库
在水电站闸门把握系统中,设备地理位置分散、把握分散,基于常规继电器的把握系统不能满足电厂无人值班把握系统和全厂综合自动化的要求,必需将智能把握和工业网络相结合,实现实时把握的同时又能对设备进行智能管理和维护。目前比较常用的把握系统大多由PLC构成,成本较高,缺乏客户定制的机敏性。本文从系统功能实现和经济指标两个方面考虑,半基于RTLinux的把握平台、工业以太网和数据库技术引入闸门把握系统。
1RTLlinux、工业以太网和数据库
RTLinux是由新墨西高校的VictorYodaiken等人开发的,现在已有商业化的版本推出。在RTLinux面世之前,Linux在实时性方面作过一些尝试。,规定了实时进程的一些标准,但由于Linux内核的不行抢先性,真正的实时进程无法在标准的Linux环境下实现。RTLinux接受简洁而有效的方法解决了此问题而不用重写Linux内核代码。RTLinux实现了一个高效的可抢先的实时调度核心,全面接管中断,并把Linux作为此实时核心的一个优先级最低的进程运行。当有实时任务需要处理时,RTLinux运行实时任务;无实时任务时,RTLinux运行Linux的非实时进程。图1是RTLinux的结构图。
为保证明时进程与非实时Linux进程部挨次进行数据交换,RTLinux引入了RT-FIFO队列。RT-FIFO被Linux视为字符设备,最多可达150个,分别命名为/der/rtf0、/dev/rtf1……/dev/rtf63。最大的RT-FIFO数量在系统内核编译时设定。图2说明白RT-FIFO的工作原理。
RTLinux程序运行于两个空间:用户空间内核态。RTLinux供应了应用程序接口,借助这些API函数将实时处理部分编写成内核模块,并装载到RTLinux内核中,运行于RTLinux的内核态。非实时部分的应用程序则在Linux下的用户空间中执行,这样可以发挥Linux对网络和数据库的强大支持功能。
TCP/IP协议和以太网在Internet上的成功应用吸引着越来越多把握程师。尽管以太网的时间不确定性给以太网应用于工业把握现场的实时性带来了很多争辩,但是实际应用中,经网络传输的数据绝大多数用于系统管理和维护等方面,用于实时把握的数据传输很少,这也是基于管理集中、把握分散的系统设计策略考虑的。在较高的以太网传输速度下,现场智能处理单元的处理速度才是传输延迟的主要缘由。本系统现场把握单元接受高速处理器,并接受RTLinux作为现场把握单元的把握平台,直接用以太网传输数据,系统的网络层次削减,信号的传输实时性也得到提高。
目前,有很多数据库开发商供应了Linux平台上的数据库软件,例如Oracle、Sybase、Informix和MYSQL等都推出了Linux版本。基于RTLinux的把握系统在实时把握领域有巨大的潜力。
2系统组成
本系统分为现场和集中级。现场把握级由分散在现场的4个现场把握单元把握,分别完成闸门位置、油缸油压和油路状态等的采集,现场操作按钮的监视以及闸门提升和下降的把握等。集中级由集中监控站、维护站组成,分别执行监视、智能维护及诊断等功能。打印机用于数据的硬备份、报表的输出。系统结构如图3所示。

在工业把握系统中通常接受PLC作为现场的把握核心。PLC的不足一方面在于其较高的价格,另一方面在于其难以实现非挨次把握算法,以及缺乏对TCP/IP机敏的支持。本系统接受嵌入式PC作为把握单元的核心,开发人员可自行开发外围接口板,依据系统需要机敏组态,既经济又能使用高级语言开发把握程序。
现场把握闸门的LCU接受相同的硬件配置。CPU板接受研华公司的PCM-5864,CPU的Intel公司的PentiumMMX166MHz,内存为64MB,以太网接口为10MHz的RTL-8139A。CPU板通过PC104总线与采样模块和输出模块相连。此外该板上配有显示、键盘和鼠标等标准接口,便于在线修改和检查程序。。16通道的A/D采样模块PCM-3718H完成模拟量的采集,辨别率为12位;16通道的数字I/O模块PCM-3730用于开关量的采集、把握闸门的启动和停止。为便于现场巡检,LCU配有显示中文信息的LCD模块MGLS-240128,内置T6963C把握器。系统接受了16端口的HUB。
为保证集中站牢靠地工作,集中监控站、集中维护站接受工业PC,配有Intel公司的P处理器,256MB内存和40GB的大硬盘,TCP/IP通信由3COM公司的10/100MbpsPCI网卡3C905C来完成。

系统的软件也分为两部分。集中监控站接受Windows2000操作系统,并安装有MYSQL-forWindows服务器软件和监控软件;维护也接受Windows2000操作系统。此外装有MYSQL的客户端软件包和维护及诊断软件。监控软件和维护及诊断软件均用VisualC++开发。
LCU的软件包括实时Linux操作系统、数据库客户端软件和把握程序。在LCU中,。升级后的核为Linux-,-。数据库的客户端程序包为MYSQL-。把握程序包括实时把握程序和非实时程序两部分。
3系统设计的关键问题
。。前者为内核模块,嵌入到RTLinux核中,用于实时采集和实时把握输出,运行于内核态。后者为Linux应用环境,运行于用户空间,完成数据的预处理、访问数据库和人机接口等工作。

内核模块程序按多线程模式编写,RTLinux供应了与多线程编程相应的API函数。
,完成实时任务的模块主要包括以下两个功能函数:
Intinit_module();
Voidcleanup_module()。
前者在模块第一次装入核中时被调用,完成实时任务的参数(优先级别、中断周期等)的设置,进行任务的启动和终止等操作。后者在模块卸载时被调用,一般在调试或系统退出时使用。模块中可启动多个任务,本系统在实时部分只设计一个实时任务即Task1。
   启动实时任务前必需进行初始化。init_module()中的初始化工作包括以下三部分:
·为保证内核态的实时进程与用户空间的非实时进程间交换信息。须创建3个RTL-FIFO,具体为:rtf1用于实时进程与非实时进程间的数据交换,数据包括采集到的模拟量和数字量;rtf3用于非实时进程向实时进程传递把握命令字,以启动和终止实时任务;rtf2用于保存经ttf3传递的实时任务的把握命令字。创建工作由RTLinux供应的API函数rtf_create(n,buf)来完成。
·创建实时任务Task1对应的线程,并设定其调度优先级,由API函数pthread_create来完成。
·当非实时进程通过rtf3进行把握命令传递时,实时进程应准时响应。因此必需在实时程序中建立跟踪rtf3变化的子程序,调用rtf_create_handler(3,&data_handler)来完成此功能。
内核态的主体程序有两种实现方式:中断处理和周期实时线程方式。本系统接受周期性实时线,即周期性地执行数据采集、输出把握结果以及与处于用户空间中的非实时进程交换数据。具体过程见图4。
在编写实时程序时,应特殊留意的是:实时任务运行在内核水平,是为了供应对计算机硬件的直接访问力量,为避开不确定的延迟,RTLinux给代码和数据安排固定的内存空间。实时任务不能使用Linux的系统调用及Linux中的程序与数据结构,否则难以保证数据的全都性。此外应把握实时程序的执行时间,编写程序时应留意包含与API函数对应的头文件。
内核程序中与RT-FIFO相关的函数有:
rtf_create():创建RT-FIFO。
rtf_get():从RT-FIFO读数据。
rtf_put():向RT-FIFO写数据。
rtf_create_handler():建立响应RT-FIFO变化的子程序。
内核程序中与实时任务线程相关的函数有:
pthread_create():创建实时任务对应的线程。
pthread_wait_np():将当前线程挂起,直至下一个周期线程。
pthread_makeperiodic_np():设置线程的属性并启动线程。
pthread_suspend_np():将本线程无限期挂起,即终止任务。
在调试阶段,需要将有bug的模块卸载。该项工作由cleanup_module()来完成。在卸载模块时将rtf1、rf2和rtf3撤销,并撤销实时任务Task1。