当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于us/OS-II操作系统的断路器控制器研制

0. 引言

  断路器的智能操作是断路器智能化发展过程中的一个全新的概念。智能控制器是实现智能操作的核心部件[1],其基本任务是通过对电网参数的采集和处理,给出相应的控制信息。此外,智能控制器通过现场总线可以和计算机连接,进行远程监控管理。智能控制器的核心部分是软件设计。目前,我国的大多数控制器的软件设计都是采用主循环程序和中断服务程序相配合的设计方法。而近年来嵌入式系统的使用越来越成熟,其中us/OS-II嵌入式操作系统由于源代码公开化,内核体积小,可移植性好等原因,受到广泛的应用。本文采用了TI公司的DSP芯片TMS320LF2407A作为嵌入式系统硬件,将us/OS-II嵌入式操作系统移植到DSP芯片中,提高了系统的运行效率和可靠性。

1. us/OS-II嵌入式操作系统

  嵌入式系统是执行专用功能并被内部计算机控制的设备或系统,操作系统以及应用软件集成于计算机硬件系统之中,即系统的应用软件和系统的硬件一体化,嵌入式系统具有软件代码少,高度自动化,响应速度快等特点,特别是适合于要求实时和多任务处理的情况。

  us/OS-II嵌入式操作系统是一个完整的、源代码公开的、可移植的、固化的、可裁剪的占先式实时多任务内核,它是一种不可剥夺型内核,所以在任务调度是必须先设定任务的优先级。us/OS-II包括以下几个部分:内核管理、任务管理、时间管理、事件控制块、信号量管理、邮箱管理等。

  us/OS-II中创建的任务有5种状态[2],分别是:睡眠态、等待态、就绪态、运行态、中断服务态。us/OS-II是占先式内核,每个任务都要设置优先级,优先级最高的任务可以先进入CPU运行,其它任务只能先在就绪状态中等待。us/OS-II最多可以创建多达64个任务(实际可以使用的是56个,因为前4个和后4个任务优先级被保留做系统升级用)。

2. 嵌入式系统的硬件设计

  2.1 智能控制器总体结构及工作原理

  智能控制器硬件系统的总体结构如图1所示。该控制器的主要任务是采集电网上的电流和电压信号,经过信号处理电路的调理后,使信号变换成DSP的输入标准电压0到3.3V,DSP控制器通过对采集来的信号进行分析,正确的发出动作指令,并通过CAN总线向监控计算机发送相关数据,实现远程监控管理。系统构成主要包括DSP及其外围电路所构成的最小系统、A/D信号采集与处理电路,液晶显示电路,电源,脱扣电路等部分。DSP的外围电路包括晶振、滤波回路和片外RAM连接选择存储空间时使用的一些门电路。

2.2 TMS320LF2407A芯片及其开发环境CCS2.2简介

  TMS320LF2407A是专为基于控制的应用而设计的,它将高性能的DSP内核和丰富的微控制器的外设集成于单片中,从而成为传统的微控制器的理想替代。TMS320LF2407A DSP控制器的外设包括[3]:①事件管理器②CAN接口③A/D通道模数转换④SPI串行外设接口⑤SCI串行通信接口⑥通用双向I/O引脚。CCS2.2是CCS系列中的最新版本,有很多既方便又强大的功能。主要包括:①支持同时载入多个工程文件②增加了单步调试命令③编译器有所加强,对语法的检查更加严格④通过建立库工程,支持编译函数文件成为库文件

3. 嵌入式系统的软件设计

  3.1 us/OS-II在2407上的移植

  us/OS-II在2407上的实现移植是嵌入式系统软件设计的关键所在,主要工作是对移植相关的OS_CPU.H,OS_CPU_A.ASM,OS_CPU_C.C三个文件的编写以及对OS_CFG.H配置的正确设定。

  在对OS_CFG.H配置中根据嵌入式实时系统的实际需要,对最低优先级OS_LOWEST_PRIO、最多任务控制块OS_MAX_EVENTS、最多任务数OS_MAX_TASKS进行设置,对需要使用的功能进行选择置位。[!--empirenews.page--]

  对OS_CPU.H文件的编写主要包括对以下4个宏进行设置:

  ① OS_ENTER_CRITICAL()

  ② OS_EXIT_ CRITICAL()

  ③ OS_STK_GROWTH

  ④ OS_TASK_SW()

  其中,OS_ENTER_CRITICAL()和OS_EXIT_ CRITICAL()是关于关中断和开中断的设置,由于在TMS320LF2407A中C编译器可以嵌入汇编语言,所以本文设置:

  #define OS_ENTER_CRITICAL() asm(" SETC INTM") //关中断

  #define OS_EXIT_CRITICAL() asm(" CLRC INTM") //开中断

  OS_STK_GROWTH是关于堆栈的使用方式,由于TMS320LF2407A中堆栈是从低地址向高地址递增的,所以本文设置:

  #define OS_STK_GROWTH 0

  OS_TASK_SW()是在任务切换中使用的,任务切换其实就是将原来任务的相关寄存器值入栈保存,以便以后这个任务被再次调用时可以恢复原先的相关寄存器值。本文设置OS_TASK_SW()作为中断调用软中断指令OSCtxSw。

  对OS_CPU_C.C文件的编写包括编写以下10个C语言函数:

  ① OSTaskStkInit()② OSTaskCreatHook()③ OSTaskDelHook()④ OSTaskSwHook()

  ⑤ OSTaskIdleHook()⑥ OSTaskStatHook()⑦ OSTimeTickHook()⑧ OSIintHookBegin()

  ⑨ OSInitHookEnd()⑩ OSTCBInitHook()

  在本文的实时嵌入式系统设计中,只对OSTaskStkInit()函数进行了编写,OSTaskStkInit()函数的作用是初始化任务的栈结构,将任务所有寄存器的值都保存到堆栈中。OSTaskStkInit()函数的示意性代码如下所示。

  OS_STK *OSTaskStkInit(void (*task)(void *pd),

  void *pdata,

  OS_STK *ptos,

  INT16U opt)

  {

  opt = opt;

  *ptos++ = (OS_STK)pdata; /* augument */

  *ptos++ = (OS_STK)0; /* blank */

  *ptos++ = (OS_STK)0x27FC;/* ST1 */

  *ptos++ = (OS_STK)0x2600;/* ST0 */

  *ptos++ = (OS_STK)0; /* ACCH */

  *ptos++ = (OS_STK)0; /* ACCL */

  *ptos++ = (OS_STK)0; /* PH */

  *ptos++ = (OS_STK)0; /* PL */

  *ptos++ = (OS_STK)0; /* T */

  *ptos++ = (OS_STK)0; /* AR0 */

  *ptos++ = (OS_STK)0; /* AR2 */

  *ptos++ = (OS_STK)0; /* AR3 */

  *ptos++ = (OS_STK)0; /* AR4 */

  *ptos++ = (OS_STK)0; /* AR5 */[!--empirenews.page--]

  *ptos++ = (OS_STK)0; /* AR6 */

  *ptos++ = (OS_STK)0; /* AR7 */

  … … …

  return ptos;

  }

  其余9个C语言函数只进行了声明,没有包含代码或者为了防止C编译器误发警告只编写了简单的指针自我赋值程序。

  对OS_CPU_A.ASM文件的编写包括编写以下4个汇编语言函数:

  ① OSStartHighRdy()② OSCtxSw()③ OSIntCtxSw()④ OSTickISR()

  其中,调用OSStartHighRdy()是用来使就绪态任务中优先级最高的任务开始运行。OSCtxSw()是用来实现任务切换,中断服务子程序、陷阱或异常处理的向量地址必须指向OSCtxSw()。OSIntCtxSw()也是用来实现任务切换的,所不同的是OSIntCtxSw()是在中断服务程序中实现任务切换。OSTickISR()是用来实现时钟节拍功能。

  将以上这些函数编写好以后,如果能编译通过并且装载入2407或外部RAM中,则说明us/OS-II在2407上移植成功。移植成功以后就要进行测试,可以编写例如点亮指示灯这样的小程序作为任务,装载入DSP运行,如果运行成功,就在此程序基础上进行嵌入式系统的软件开发。

  3.2 智能控制器软件设计

  本文在进行软件设计时根据需要,编写了以下几个功能程序,主要包括液晶显示程序、A/D采样转换程序、保护算法、瞬动判断保护程序、滤波算法及有效值计算、CAN通信的发送和接受等[4]。在各个功能程序编写好以后,创建多个任务,每个任务包含一个功能程序。对各个任务要根据不同的实际情况赋予不同的优先级,其中A/D采样转换和瞬动判断保护由于对实时性的要求比较高,应赋予较高的优先权,液晶显示由于为了人们读取的视觉需要,延时时间比较长,赋予的优先权最低。任务优先级的安排如下:

  A/D采样转换程序 > 瞬动判断保护程序 > 滤波算法及有效值计算 > 保护算法> CAN通信的发送和接受 > 液晶显示

  任务通过函数OSTaskCreateExt()来创建,创建一个任务的示例代码如下:

  //创建任务:

  INT8U OSTaskCreate (void (*task) (void *pd), void *pdata, OS_STK *ptos, INT8U prio)

  其中task是指向任务代码的指针;pdata是任务开始执行时,传递给任务的参数指针;ptos是分配给任务的堆栈的栈顶指针;prio是分配给任务的优先级。

  //任务示例代码:

  void Task (void *pdata)

  { While (1)

  {/***根据实际功能编写的代码**/

  OSTimeDly(INT16U ticks); //任务延时

  }

  }

  当任务被剥夺CPU的使用后,us/OS-II用任务控制块OS_TCB来保存该任务的状态。

4. 实验

  本文设计的实验样机首先在实验室进行调试,然后再到企业试验站进行现场调试。主要试验项目包括液晶显示、测量、保护特性测试、上位机和控制器之间的CAN总线通信等。试验结果表明:本文设计的智能控制器实现了测量、保护、通信和监控等功能,实时性好,指标达到预期要求。

5. 结束语

  本文为了实现低压断路器的可通信与智能化,研制了一种基于DSP和嵌入式实时操作系统us/OS-II的新型智能控制器,不仅实现了断路器的基本功能,而且由于采用了us/OS-II嵌入式实时操作系统,提高了DSP的运行效率和控制器的可靠性。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

断路器,作为一种关键的电力系统保护装置,广泛应用于家庭、商业建筑、工业设施等各类用电环境,其主要功能在于过载电流保护、短路保护以及欠电压保护。本文将详细介绍断路器的工作原理,包括其设计构造、工作过程以及实际应用场景下的运...

关键字: 断路器 灭弧

【2024年4月10日,德国慕尼黑讯】英飞凌科技股份公司(FSE代码:IFX / OTCQX代码:IFNNY)推出了业界首款-48 V宽输入电压数字热插拔控制器XDP700-002,扩展了其XDP™数字功率保护控制器系列...

关键字: 控制器 晶体管 5G

【2024年4月10日,德国慕尼黑和美国加利福尼亚州旧金山讯】全球功率系统和物联网领域的半导体领导者英飞凌科技股份公司(FSE代码:IFX / OTCQX代码:IFNNY)宣布其OPTIGA™ Trust M安全控制器现...

关键字: 物联网 控制器 供应链

作为全球最大数据产生国之一,随着数据规模的成倍增长,中国对更高性能数据中心的需求日益迫切。根据IDC Global DataSphere对每年数据产生量的预测,全球数据量的复合年增长率(CAGR)将达到 21.2%,并在...

关键字: 数据中心 CXL技术 控制器

北京,2024年4月8日,运动与控制领域的先行者——派克汉尼汾携APK系列控制器、CRV系列工业电磁阀、RRV系列快开电磁阀和SEHI系列电子膨胀阀组等新品亮相2024中国制冷展,并展示公司在商超冷库、冷水机组、环测设备...

关键字: 控制器 工业电磁阀 数据中心

为增进大家对视频控制器的认识,本文将对视频控制器模块设计、视频控制器的特殊技术予以介绍。

关键字: 控制器 指数 视频控制器

在电力系统中,断路器作为一种关键的电气保护设备,起着至关重要的作用。它能够在电路发生故障时迅速切断电源,保护电路和相关设备不受损坏。本文将对断路器的原理进行深入探讨,包括其工作原理、类型、应用以及未来发展趋势等方面,以期...

关键字: 断路器 电力系统 保护电路

Windows Embedded Compact 7(简称WinCE)是一种专为嵌入式系统设计的操作系统,具有体积小、效率高、可定制性强的特点。在WinCE中设置自动运行软件,通常是为了满足设备在启动后自动执行特定任务的...

关键字: 嵌入式系统 软件 操作系统

PLC(可编程逻辑控制器)和单片机是两种不同的控制设备,它们之间存在明显的区别:

关键字: 单片机 plc 控制器
关闭
关闭