您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

基于RTLinux的实时控制系统

时间:2007-1-20栏目:电子通信论文

4.3GB的笔记本硬盘。基于RTLinux的实时控制系统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来完成。

2.2 系统软件构成

系统的软件也分为两部分。集中监控站采用Windows2000操作系统,并安装有MYSQL-3.23.49 for Windows服务器软件和监控软件;维护也采用Windows2000操作系统。此外装有MYSQL的客户端软件包和维护及诊断软件。监控软件和维护及诊断软件均用Visual C++开发。

LCU的软件包括实时Linux操作系统、数据库客户端软件和控制程序。在LCU中,操作系统Redhat6.2经升级和安装RTLinux后被改造成实时Linux。升级后的核为Linux-2.2.18,RTLinux的版本号为RTLinux2.2 for Linux-2.2.18。数据库的客户端程序包为MYSQL-3.23.49RPM。控制程序包括实时控制程序和非实时程序两部分。

3 系统设计的关键问题

现场单元中与实现控制部分和非实时控制部分程序相对应的文件为gatectl_module.c和gatectl_app.c。二者由gcc编译后生成目标文件gatectl_module.o和gatectl_app.o。前者为内核模块,嵌入到RTLinux核中,用于实时采集和实时控制输出,运行于内核态。后者为Linux应用环境,运行于用户空间,完成数据的预处理、访问数据库和人机接口等工作。

3.1 内核模块

内核模块程序按多线程模式编写,RTLinux提供了与多线程编程相应的API函数。

RTLinux2.2内核中,完成实时任务的模块主要包括以下两个功能函数:

Int init_module();

Void cleanup_module()。

前者在模块第一次装入核中时被调用,完成实时任务的参数(优先级别、中断周期等)的设置,进行任务的启动和终止等操作。后者在模块卸载时被调用,一般在调试或系统退出时使用。模块中可启动多个任务,本系统在实时部分只设计一个实时任务即Task1。
基于RTLinux的实时控制系统
    启动实时任务前必须进行初始化。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。

在编写实时程序时,应特别注意的是:实时任务运行在内核水平,是为了提供对计

上一页  [1] [2] [3] 下一页

下页更精彩:1 2 3 4 下一页