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

基于RTLinux的实时控制系统

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

算机硬件的直接访问能力,为避免不确定的延迟,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。

3.2 应用程序

Linux下应用程序gatect1_app工作流程见图4,其程序用Linux下的C语言开发。集中监控站和维护站的程序在Windows下用Visual C++开发。其中有几点要说明:

·RT-FIFO被Linux视为字符设备,因此可以通过调用open("/dev/rtf1",O_RDONLY)来获得rtf1的指针,rtf2的rtf3类似。获得指针后通过read和write函数实现对RT_FIFO的读写操作。

·程序中调用select函数检查RT_FIFO是否忙,以避免读RT_FIFO时出现阻塞现象。

·LCD显示模块MGLS-240128内置智能控制器,只需将待显示的数据送控制器的显示缓冲区就能实现显示功能,数据显示不会占用系统过多的时间。
基于RTLinux的实时控制系统
    ·系统数据传输和维护通过网络数据库来实现。数据库采用客户端/服务器模块,将LCU、集中维护站设置为客户端,将集中监控站设置为服务器。本系统采用基于TCP/IP协议的MYSQL数据库为实现数据管理。MYSQL是一个多用户、多线程的SQL数据库服务器,由客户端/服务器结构来实现。它由一个服务器守护程序mysqld和不同的客户程序及库组成,使用TCP/IP把多个客户(LCU等)连接到一个服务器(集中监控站)上。在运行前应将主机名、IP地址等设备就绪,在LCU的应用程序gatectl_app中应包含MYSQL.h头文件,其中有MYSQL的API函数的具体实现。在用户空间,C语言程序通过这些API函数访问远程的数据库服务器。

·数据的预处理:为防止被干扰的数据上传到服务器,应用程序对数据进行滤波,再对数据进行分类。经过预处理后的数据才可以送数据缓冲区,通过API函数向数据库服务器上传。

4 应用效果

目前该系统正在试验室运行。从连续运转的情况看,控制实时性和可靠性均达到了设计要求,网络和数据库均运行正常,可见本设计思路是可行的。下一步将设放到工业现场进一步验证。RTLinux实现实时控制功能并与Linux有机结合,这一设计思路既满足了实时控制系统对响应的快速性、时间的精确性和控制的可预测性的要求,又充分发挥了Linux对网络和数据库的支持功能。将RTLinux引入控制领域,拓宽了Linux的应用范围,必须加速工业控制的信息化。


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

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