您好,欢迎访问一九零五行业门户网

C/OS-II和CORTEX-M3单片机在电磁流量计中的应用

c /os- ii和cortex- m3单片机在电磁流量计中的应用c /os- ii和cortex- m3单片机在电磁流量计中的应用
摘要: 为了提高电磁流量计的流量检测和数据处理的实时性, 设计了基于实时嵌入式操作系统..c /os- ii和以新型cortex - m 3内核单片机为控制器的电磁流量计。通过实时多任务的软件程序设计, 实现了数据采集、处理、人机交互等复杂功能, 并提高了仪表系统的实时性、稳定性与可靠性。
关键词: ..c /os- ii; cortex- m 3; 电磁流量计
1.. 以cortex-m3单片机为核心的系统原理设计
1. 1.. 系统总体硬件设计方案及原理
电磁流量计测量原理框图如图1所示。单片机控制励磁激励模块输出励磁电流, 励磁电流通过电磁流量计传感器的励磁线圈后产生了磁场, 当流体流过传感器产生的磁场时, 产生了反映流速的感应电动势信号; 流速信号经过去噪放大后, 经电压/频率的模数转换, 由单片机进行采集、处理, 最后显示在液晶屏上。图1.. 电磁流量计功能模块示意图整个硬件电路主要由以下5部分组成:
1) 开关电源。提供3. 3v 数字电源(提供单片机和数字芯片电源), 5v 电源, 20v 电源用于电流输出; 模拟地和数字地通过单点接地。
2) 励磁激励输出模块。产生低频矩形波励磁, 输出固定激励电流到传感器励磁线圈, 产生测量流速的磁场。
3) 模拟信号采集处理模块。采集反映流速的电压信号, 差分去噪, 放大滤波, 经过v /f (电压/频率) 转换芯片ad7741转换成一定频率的脉冲信号, 由单片机对脉冲信号进行脉冲计数, 测算脉冲频率。
4) 人机交互模块。包括19264 点阵液晶和四个触摸键, 实时显示测量数据, 提供设置仪表参数的人机接口。
5) 以stm 32f103vc 单片机为核心的数字信号处理模块, 对整个仪表的运行进行控制。
1. 2.. cortex - m3单片机的特点
系统选用了stm32f103vc 作为电磁流量计的微控制器, 是意法半导体公司生产的一款基于cortex - m3内核的单片机。arm v7架构的arm co rtexm 系列为成本控制和微处理器应用提供优化, 是基于
arm v7- m 架构的款arm 处理器。可以在对功能和成本敏感的嵌入式应用中实现较高的系统性能, 从而大大简化了可编程性, 使arm 架构成为各种应用方案( 即使是的方案) 的上佳选择。stm32f103vc 单片机支持硬件乘法和硬件除法, 能显著提高电磁流量计的数据处理速度, 提高流量测量实时性和反应能力。
2.. ..c /os- ii在电磁流量计中的应用
2. 1.. ..c /os- ii简介
c /os- ii是一个源代码公开、可移植、可固化、可剪裁的占先式实时多任务内核, 具备现代操作系统的特点, 可用于8 位、16 位和32 位单片机、arm 或dsp。..c /os- ii的特点有: 源代码公开; 已经被移植到多种不同架构的微处理器上; 可固化性; 可裁剪, 用户程序可以只编译自己需要的功能, 不用编译不需要的功能; 可剥夺, 服务的执行时间具有确定性; 每个任务都有自己单独的栈; 提供很多服务系统, 具有对任务运行进行协调的能力; 中断可以使正在执行的任务暂时挂起; 具有稳定性和可靠性。
2. 2.. ..c /os- ii在电磁流量计中应用的优点
( 1) 提高电磁流量计数据采集和处理部分功能的实时性。本系统的电磁流量计只采用了一片stm32f103vc 单片机, 单片机的处理任务既包括实时性要求非常高的信号激励和采集任务, 还包括实时性要求相对低一些的数据处理和4~ 20ma 输出任务, 还有实时性要求的液晶显示和按键响应任务。应用..c /os- ii可以使数据采集和处理的功能得到优先执行, 使单片机软件资源分配更加合理。
( 2) 相比不带操作系统的前后台程序系统, 提高了软件系统的整体实时性。不应用操作系统的嵌入式程序叫做前后台系统, 即应用程序是一个无限循环, 循环中调用相应的函数完成相应的操作, 这部分可以看成后台行为; 中断服务程序处理异步事件, 这部分可以看成前台行为。如果采用前后台系统, 实时性要求的信号激励和采集任务可以放在中断中进行, 而其余软件任务都放在后台程序中一次运行, 数据处理和4~ 20ma输出任务的实时性会受到慢速的液晶显示任务的影响, 液晶显示刷新一次, 最多需要10ms, 数据处理任务有可能被液晶显示任务拖延10m s。而在操作系统管理下, 仪表在执行液晶显示任务时, 如果突然有数据处理需要, 数据处理任务可以抢占cpu, 优先进行数据处理后再继续运行液晶显示任务, 从而提高了仪表软件的整体实时性。
( 3) 优化软件系统的结构, 减少各软件模块之间的耦合度, 便于程序的维护升级。在前后台系统中, 程序的耦合度大, 特别是在后台的无限循环程序中, 不同功能的程序模块互相耦合, 给程序的修改和维护增加了难度, 往往程序的某一处修改, 会导致整个系统运行变化, 牵一发而动全身。应用了操作系统后, 程序按功能、硬件关联性以及实时性要求被分割成不同的任务, 修改其中某个任务不会影响到程序系统中的其余部分, 简化程序的调试、升级和维护。
( 4) 从程序员的角度看, 应用..c /os- ii可以简化编程环境, 并且帮助程序员有效地使用硬件。..c / os- ii直接作用在硬件之上, 为应用软件提供硬件接口, 使应用软件不需要了解硬件的底层实现, 通过调用系统服务, 即可控制硬件。
2. 3.. ..c /os- ii在cortex - m3单片机中的移植
c /os- ii的代码大部分是用c 语言编写的, 但是根据应用的单片机不同, 需要用c 语言和汇编语言编写一些与处理器硬件相关的代码。m icri..m公司已经完成了把..c /os- ii移植到cortex- m3单片机的工作, 可以从网站上下载移植完毕的程序包, 随后对操作系统进行配置, 设置操作系统节拍, 裁剪操作系统, 去除不需要的操作系统服务, 如消息邮箱, 消息队列, 内存管理等。
c /os- ii在设计时已经充分考虑了可移植性, 所以移植较为简单, 主要编写os _cpu. h, os _cpu _ c. c, os _cpu _a. asm, os _dbg. c 这四个文件的代码。os_cpu. h 中包含了涉及处理器和相关应用上的常量, 宏, 函数的定义。os_cpu _c. c 中包含任务堆栈的初始化函数, 一些按照特殊需要扩展操作系统功能的函数。os_cpu _a. asm 中包含了需要用汇编语言编写的与处理器相关的函数, 如触发pendsv 中断, 任务切换, pendsv的中断处理。os_dbg. c 是与系统调试相关的代码。
3.. 基于..c /os- ii的电磁流量计软件设计
在编写基于..c /os- ii的程序时, 需要对程序进行分层, 尽量做到把与硬件有关的程序和与硬件无关的程序分开, 分别称为硬件层和应用层。硬件层为单片机和相关外设的驱动函数, 应用层与下层硬件无关。本程序中硬件层的程序包括: 单片机片内外设的配置驱动程序、液晶驱动程序、按键驱动程序、ad420驱动程序、ad采集驱动程序。应用层的程序包括: 液晶人机界面程序、数据处理程序、信号激励程序、信号采集程序。
3. 1.. ..c /os- ii的任务设计
首先需要理解..c /os- ii在stm32f103vc 单片
机上实现任务调度的方法。任务调度的时机包括: 创建或者删除任务、挂起或者恢复任务、改变任务优先级; 任务主动使用ost imed ly 函数延时的时候; 发送(或者等待)信号量、邮箱、消息的时候; 中断函数返回的时候。当发生任务切换时, 系统置位pendsv 软中断, 单片机在进入中断时, 自动把寄存器xpsr, pc, lr, r12和r0~ r3压入堆栈。进入pendsv 中断后, 程序保存除psp以外的其余寄存器, 把psp保存在任务控制块ostcb的个数据中。找出就绪状态的优先级任务, 把该任务中的任务堆栈指针赋给系统堆栈psp, 任务堆栈中寄存器全部出栈, 从而实现任务切换。在理解了任务调度原理和时机之后, 把电磁流量计的软件功能划分成若干个任务。任务划分的首要目标是满足系统实时性指标, 任务数目必须合理。本文中任务的划分是以任务实现的功能为标准的, 任务的功能不同, 其实时性要求也不同。模拟信号采集功能作为一个任务, 它的实时性要求; 数据处理程序也被包装成一个任务, 实时性要求为其次; 再次是4~ 20ma 输出部分的任务; 最后是人机交互任务。电磁流量计的软件系统中, 信号激励程序的实时性要求非常高, 并且这部分程序的执行语句较少, 运行时间短, 与工频信号同步; 工频信号由外部中断检测, 故把这部分程序放在中断中运行。4个主要任务的程序框图如图2所示。图2.. 任务流程图任务1: 系统引导任务。程序启动后建立的个任务, 进行一些硬件初始化工作, 创建其余任务, 最后删除自身。任务2: 模拟信号采集任务。实时性要求, 设为优先级2。当需要采集液位信号时, 在中断服务程序中向模拟信号采集任务发信号量, 退出中断后, 立即进行任务切换, 运行模拟信号采集任务。任务3: 数据处理任务。实时性要求相对较低, 设为优先级3。当一个采集周期结束后, 由中断服务程序向数据处理任务发送信号量, 当中断服务程序退出后, 等待信号量的数据处理任务进入就绪状态, 进行任务调度, 数据处理任务开始执行。任务4: 4~ 20ma 电流输出任务。需要等待数据处理任务处理完数据, 获取数据处理完成信号量后执行电流输出程序, 设优先级为4。任务5: 人机交互任务。包括液晶显示和按键处理, 实时性要求, 设为优先级5。当其余任务都处在挂起状态时, 人机交互任务开始执行, 不断刷新屏幕显示。
3. 2.. 基于..c /os- ii的中断服务程序设计
c /os- ii系统管理下的中断服务程序的执行流程如下: 进入中断后, 除了保护现场之外, 还需要调用.. 进入中断..服务程序, 用来通知实时操作系统, 使操作系统掌握当前中断的嵌套层数; 接着运行中断服务功能代码, 实现与任务的通信, 在退出中断时必须执行操作系统规定的.. 退出中断..语句。如果允许任务调度, 当退出中断时, 操作系统将运行进入就绪状态的任务优先级的任务。基于..c /os- ii的电磁流量计程序主要包括三种中断: 按键中断, 工频中断, 定时器中断。按键中断的功能是捕捉按下的键号, 置为按键的标志位, 在人机交互任务中将查询按键标志位。工频中断服务的功能是进行励磁激励, 励磁激励的实时性要求非常高, 所以放在中断中进行。定时器中断服务程序的功能包括励磁激励, 以及向数据采集任务发送信号量, 激活数据采集任务。整个程序系统的运行过程如下: 系统上电后, 首先进行..c /os - ii内核初始化, 然后进行单片机和相关硬件的初始化, 接着创建任务, 最后启动多任务环境。通过各任务和中断服务程序间的协调运行, 实现了电磁流量计的数据采集、数据运算、人机交互等全部功能。
4.. 总结
文中提出的应用..c /os- ii和cortex - m3单片机的方法, 已经成功运用到电磁流量计中, 制作出了样机。通过理论验证和实践, 证明这种方法与采用传统增强型51单片机和普通裸机程序结构相比, 简化了程序结构, 增强了程序执行的实时性, 使程序运行更快速, 更高效。这种方法在工业仪表的应用中具有普遍意义, 能提高仪表性能, 具有一定应用价值。参考文献: [ 1] 姚文详, 宋岩. arm c ortex- m 3指南[m ]. 北京: 北京航空航天大学出版社, 2009. [ 2] 周航慈. 基于嵌入式实时操作系统的程序设计[m ]. 北京: 北京航空航天大学出版社, 2006.--扩展阅读:开封中仪流量仪表有限公司专业生产电磁流量计、孔板流量计、涡街流量计、文丘里流量计、v锥流量计、v型锥流量计、喷嘴流量计、插入式电磁流量计、智能电磁流量计、分体式电磁流量计、一体式电磁流量计、标准孔板流量计、标准孔板、一体化孔板流量计、标准喷嘴流量计、长径喷嘴流量计、标准喷嘴、长径喷嘴、插入式涡街流量计、智能涡街流量计、锥型流量计、v锥型流量计、节流装置、节流孔板、限流孔板等流量产品,更多有关电磁流量计、孔板流量计、涡街流量计的信息请访问开封中仪网站:
其它类似信息

推荐信息