保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

基于RTLinux的实时控制系统


在编写实时程序时,应特别注意的是:实时任务运行在内核水平,是为了提供对计算机硬件的直接访问能力,为避免不确定的延迟,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内置智能控制器,只需将待显示的数据送控制器的显示缓冲区就能实现显示功能,数据显示不会占用系统过多的时间。

    ·系统数据传输和维护通过网络数据库来实现。数据库采用客户端/服务器模块,将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

《基于RTLinux的实时控制系统(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/174563.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。