《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > IPC配电测控实验台多任务实时调度系统的设计
IPC配电测控实验台多任务实时调度系统的设计
谢 辉, 陈立万
(重庆三峡学院 应用技术学院, 重庆 万州 404000)
摘要: 针对目前高校测控实验仪功能单一,对测控系统的可靠性、实时性等不能很好地模拟等问题,研究和设计了一套配电测控模拟实验台,由上下位机系统构成。下位机以工控机为核心,配装简化的多任务实时操作系统,能够对16路开关量、64路模拟量及多个键盘任务进行实时检测和控制,并能够和上位机进行定时通信,将收集数据及时传送给上位机,进行汇总、分析和报表打印等。重点分析了下位机的实时多任务之间的关系,调度过程原理及简化的多任务实时操作系统的设计。
Abstract:
Key words :

摘  要: 针对目前高校测控实验仪功能单一,对测控系统的可靠性、实时性等不能很好地模拟等问题,研究和设计了一套配电测控模拟实验台,由上下位机系统构成。下位机以工控机为核心,配装简化的多任务实时操作系统,能够对16路开关量、64路模拟量及多个键盘任务进行实时检测和控制,并能够和上位机进行定时通信,将收集数据及时传送给上位机,进行汇总、分析和报表打印等。重点分析了下位机的实时多任务之间的关系,调度过程原理及简化的多任务实时操作系统的设计。
关键词: 配电测控实验台; 下位机系统; 多任务实时操作系统

      目前,配电网络自动化和工业测控技术发展迅速,对系统的实时性、可靠性和多功能性要求也越来越高。而高校测控专业实验设备模块单一、功能简单,远远落后于现代控制技术的发展。针对高校测控专业实际需求,研究和设计了一套分布式IPC(Industrial Personal Computer)工业配电测控系统,由1台上位机和8台下位机构成。各下位机能够根据需要对多路模拟量(如电压、电流、功率因素、有功功率、无功功率等)、开关量(如各出线开关分合闸状态、补偿电容器的状态等)进行检测和控制。上位机可以发出指令和任何一台与之相连的下位机进行通信,收集各下位机传送来的模拟量和开关量信息,进行相关的分析、汇总、报表生成等处理,并对各下位机子系统进行监控和宏观调度[1]。多任务调度管理是系统设计的重点和难点,本文将重点叙述其调度管理过程[2]。
1 下位机系统功能概述
   下位机主要模拟配电测控系统运行,可实现多路模拟量、开关量的采集、存储、显示以及与上位机的通信。同时,为了丰富以后实验系统的教学和实验内容,还特意增加了2个具有典型代表性的工业控制环节:直流电动机子系统的控制和模拟的温度测控子系统(即步进电机控制系统)。因此,下位机是一个较为复杂的测控子系统,普通的单片机功能简单,很难胜任,为此选用了控制功能强大的研华IPC-610工业控制计算机,配装了2块PC-6313多功能模入/模出板卡[3]。每块PC-6313板卡有24路开入/开出、32路单端模拟量输入/16路双端输入、3个定时器/计数器、2路模拟量输出,结构紧凑、功能齐全,性价比高,配接相应的传感器和执行机构即可完成所有的功能,下位机系统框图如图1所示。IPC-610底板可扩展性强,有近20个ISA插槽和PCI插槽,可随时方便系统的升级。


     工业测控系统最重要的是稳定性,DOS系统比Windows系统稳定性强且占用内存小,非常适应工业系统需要。为此,本系统采用DOS操作系统,编程语言采用C语言。下位机模拟的是配电测控系统运行,有多道任务程序,同时要求运行速度快、稳定性强,是一个复杂的多任务实时系统。多任务实时调度过程的分析和设计是下位机系统运行的关键。
2 下位机系统实时多任务调度过程分析和设计
2.1 任务及其占用资源的关系

     下位机配电测控系统,共有19个任务程序和1个简化的、初级的多任务实时操作系统MROS,构成了一个多任务实时测控系统[4]。各个任务程序的名称及其功能如下:
     task_0 ( ):0点制表任务程序。
   task_4 ( ):4点制表任务程序。
   task_8 ( ):8点制表任务程序。
   task_12 ( ):12点制表任务程序。
   task_16 ( ):16点制表任务程序。
   task_20 ( ):20点制表任务程序。
   getad ( ):每2 s采集模拟量任务程序。
   task_s ( ):每2 ms采集开关量任务程序。
   stepping( ):每500 ms采集温度测控子系统的温度值,根据温度偏差,控制步进电动机正/反转。
   motor( ):每250 ms采集1次直流电动机的转速,控制直流电动机按设定值运行。
   pmotor( ):根据直流电动机的转速,绘制直流电动机的动态运行曲线。
   mnxs( ):在屏幕上排列显示各个模拟量的当前值。
   kgxs( ):在屏幕上排列显示各个开关量的当前值。
   Subdl( ):在屏幕上绘制工厂配电系统的电气主接线图。
   Kg( ):把采集的开关量填入电站的电气主接线图中,完成开关量在图中的动态显示。
   tad( ):把采集的模拟量填入电站的电气主接线图中,完成模拟量在图中的动态显示。
   Stepmotor( ):步进电动机升降速全过程控制,动态绘制升降速全过程。
   Slaver( ):从机和主机的通信任务。将本机的64路模拟量和16路开关量以及温度测控子系统的数据上传给上位机进行显示。
     Subtime( ):北京时间动态显示。屏幕上各个画面正上方中均有北京时间。
   quit( ):退出运行处理,返回C集成开发环境。
   19个任务要求占用硬件资源的关系十分复杂,表述如下:所有任务均要求占用CPU,而CPU只有1个;不同的任务要求占用不同的外设资源(例如对板卡的占用),多个任务可能要求占用同一外设(例如对CRT、打印机的占用);各任务之间存在横向联系;多个任务在宏观上的并发操作;多任务实时操作系统MROS的主要功能就是协调以上各种关系,有效地管理分配各种资源[4]。
   可以把MROS形象地比喻成一条“软件总线”,各个任务程序“挂”在上面,形成一个“管控一体化运行软件”。
2.2 多任务实时操作系统的简化
   标准的MROS一般包括CPU管理、外设管理、中断管理、存储器管理和文件管理等[5],占用内存空间较大,CPU的运行速度较慢。下位机测控系统具有如下特点:
   (1)对各量的监测和控制,实际上是周期性地重复执行各任务程序。
   (2)人机联系任务虽然是随机的,但任务的内容是固定的,操作人员只是通过键盘调用一些编制就绪的程序而不修改程序本身。
   (3)监测对象固定,主机和外设规模也是固定不变的。
   对于这样一个系统,若采用标准的MROS,将占用较多内存空间和CPU的运行时间,降低系统资源的利用率和系统的实时性。因此,本系统采用了一种与硬件资源和测控对象相适应的简化的、初级的MROS,保留了标准MROS的核心功能。即CPU管理、外设管理和中断管理,其主要工作如下:
     (1)任务调度
   任务调度的主要职能,一是根据任务调度算法分配CPU,即实现某个时间或事件驱动的任务切换;二是从任务收回CPU。
   按照任务的优先级是否可以动态地改变,调度算法可以分为:静态调度和动态调度。
   按照调度过程是否允许采用抢先方式,调度算法可以分为:抢先调度方式和非抢先调度方式。非抢先调度方式在满足高优先级别任务的时限方面比抢先调度方式要差一些,但是它实现起来简单,时间确定性好,并且避免了因为资源共享而引起的互斥,实际应用较广。
   本系统设计时,按照多任务实时操作的基本原则来编写任务程序,通过硬件配合,可使每个任务都在几十个微秒内完成。因此,可采用静态调度方式设计图1所示的IPC系统。但某些任务的优先级别可以局部改变;若采用非抢先调度方式,可把1个功能分解为若干个可以在1 μs到几十微秒内完成的程序段,以改善实时性。
     (2)进程控制
   为了描述和控制进程的运行,系统为每个进程定义了一个数据结构——进程控制块(PCB)。PCB主要包括:进程标识符、进程当前状态、进程队列指针、程序开始地址、进程优先级、CPU现场保护区、通信信息、家族联系、占有资源清单等。系统将根据PCB感知进程的存在,PCB是进程存在的唯一标志。
   为了简化问题,本系统按一定的原则编制每一个任务程序,使得每一个任务程序都在规定的时间内(1 ?滋s到几十微秒)执行完毕,即每一个任务程序在执行完后才交还CPU的使用权,因此,在本系统所设计的MROS中,就只使用PCB中的“进程当前状态”这一个概念。
     (3) “tick”信号
   “tick”信号是MROS在运行过程中需要的基本的、最小的定时单位。在图1所示的系统中,“tick”由PC-6313板卡的定时/计数器8253产生。当系统初始化时,使PC-6313 1#板卡8253的 T2 OUT2每1 ms输出1个脉冲,把这个脉冲信号作为中断请求信号加在IRQ3上,每1次中断即产生1个“tick”,在IRQ3的中断服务程序进行与时间相关的操作。
2.3 多任务实时调度系统的设计原则
   在单CPU系统中,不可能有真正意义上的并行操作,所有任务只能遵循调度策略,串行地占用CPU,即:宏观上在同一时段内多个程序的同时执行,而微观上则是多个任务的交替执行。整个测控系统必须遵循的设计原则如下[6]:
   (1)快速的任务调度和切换。调度程序本身必须是低开销,本系统编写的实时调度程序,占用CPU的执行时间小于1μs。调度所需的“tick”是通过定时器/计数器模板上的8253产生的,可以根据需求确定调度精度,从几百微秒到若干毫秒。
   (2)在设计测控电路和编制各个实时任务程序时,应注意任何任务都不能加重CPU的负担,它只能在接收控制信号和调节命令后,就脱离CPU的“关注”而独立运行,直到新的控制信号和调节命令到来后又在新的条件下“独立”运行。
2.4 多任务实时调度的过程分析
     图2是任务调度的过程示意图。


    图2任务调度说明如下:
    (1) 实时时钟在0点、4点、8点、12点、16点和20点时,分别把task_0( )、task_4( )、task_8( )、task_12( )、task_16( )和task_20( )推入就绪队列。
    (2) 实时时钟每隔5 ms、500 ms、2 s,分别把task_s( )、stepping( )、getad( )推入就绪队列。
    (3) a键、s键、b键、q键,分别把mnxs( )、kgxs( )、stepmoter( )、quit( )推入就绪队列。
    (4) m键把允许标志pmotorf1置1,在motor( )任务执行过程中,如果发现pmotorf1=1,就把pmotor( )推入队列。
    (5) t键和d键均把subd1( )推入就绪队列。在subd1( )的执行过程中,如果发现是t键,则把kg( )推入就绪队列;如果发现是d键,则把tad( )推入就绪队列。
    (6) kg( )、tad( )、mnxs( )、kgxs( )在各自运行过程中,又把自己推入就绪队列,CPU不断对它们提供运行机会,在没有其他按键操作的情况下,pmotorf1总是等于1,即一直允许绘制直流电动机运行曲线,每250 ms运行motor( )时,pmotor( )都可以被设置为就绪状态。pmotor( )每运行1次,就在屏幕上显示1次直流电动机的当前速度值。
    (7) 下位机串行口中断一直处于开放状态,若主机要求和该下位机通信,则把slaver( )推入就绪状态。Slaver( )运行时,将指定的数据传送给上位机。由于采用智能通信模块,下位机只需把指定的数据传送给智能通信模块即可,其后,由通信模块将数据传送给主机。串行通信的速度很快,可满足系统实时性的要求。
3 下位机软件系统设计流程
  下位机软件系统结构示意图如图3所示。软件系统由三大块子系统构成:图3(a)为初始化及任务调度,是系统的管理层负责任务调度;图3(b)为任务程序集合,它们在管理层的调度下实现各种功能;图3(c)为中断服务程序,是简化MROS的组成部分。可以据此画出更详细的软件系统流程图并编写相应的程序。


     本文介绍了一种分布式IPC配电测控实验系统的多任务实时调度系统的设计,说明了在单CPU系统中,多任务实时调度系统的设计原则,并据此设计了一个简化的MROS,能够完成标准MROS的核心功能,即CPU管理、外设管理和中断管理。下位机系统在该简化的MROS调度管理下,可以很好地完成各项任务,系统运行稳定,调度精度可达毫秒级。实验系统较好地模拟了配电测控系统的调度、运行和管理过程,融合了工控机、总线、接口技术、通信技术、控制技术等多方面的知识,可以让学生更具体地了解工控系统的组成,更真实地触摸工控系统的工作原理。该系统配备相应的测量仪表和传感器即可构成一个实时性很强的配电测控系统。因此具有一定的理论价值和应用价值。
参考文献
[1]     陈曾汉,刘明白,赵志强,等. 工业PC及测控技术[M].北京:机械工业出版社,2004:271-298.
[2]     谢辉,陈曾汉.分布式IPC工业测控系统[J].仪表技术与传感器, 2008,1(1):35-37.
[3]     北京中泰研创科技有限公司[EB/OL].PC-6313多功能模入模出接口卡技术说明书.http://www.ztic.com.cn/
upload/shuoming/Pc6313.doc,2006-06-28.
[4]     周航慈,吴光文.基于嵌入式实时操作系统的程序设计技术[M].北京:国防工业出版社,2006:55-61.
[5]     TANENBAUM A S. 操作系统设计与实现[M].陈渝,等译. 北京:电子工业出版社,2007:167-174.
[6]     王立刚.开放式混合实时系统中的调度方法研究[D]. 中国科学技术大学,2006:85-87.

此内容为AET网站原创,未经授权禁止转载。