0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于μC/OS-II和ARM处理器实现现场数据采集器的设计

电子设计 来源:单片机与嵌入式系统应用 作者:陈玉川,史幼迪, 2021-06-21 17:32 次阅读

作者:陈玉川,史幼迪,胡剑凌

方便、舒适、高效、安全,以及环保节能等作为人们对自身生活和工作场所的基本要求由来已久。自上世纪90年代以来,随着数字通信技术和信息技术的飞速发展,基于网络智能化建筑和住宅是该领域的一个主要发展方向。

现介绍其中一种利用ARM技术、嵌入式实时内核和TCP协议设计的现场数据采集器。

1 现场数据采集器的基本功能

“一线通”系统的基本架构如图1所示,3台管理计算机互为冗余。

系统是面向设备管理的,基本功能可归结为三点,即“监”、“控’’和“报警”。“监”是指管理机查询设备的状态;

控,是管理者通过监控界面操纵现场设备;“报警”是当设备运行状态超越报警限时,及时向管理机报告。管理机监控界面采用组态王6.5通用组态软件进行设计。

“一线通”系统将监测与报警合并。在现场,设备的DEC控制器和智能仪表通过485总线连接到数据采集器,在整理设备状态数据的基础上,根据状态的变化,由采集器向管理机发送设备最新变化状态。彻底避免了无谓的查询,减轻了网络的通信负荷。这就是数据采集器的由来。

现场数据采集器的基本功能要求分为两个方面。首先,要定期采集各DDC控制器(以下称子站)和智能仪表中的状态数据,并将状态变化信息发送到管理机。其次,也要传递管理机对设备的控制命令。

2 现场数据采集器的设计实现

设计采用了EasyARM2200开发板,CPU是Philips公司的32位嵌入式处理器LPC2210(ARM7TDMI-S核)。开发板基本结构如图2所示。CPU采用11.059 2 MHz晶振,通过片内锁相环和外设分频器,分别获得44 MHz系统时钟和11 MHz外设时钟频率。串行通信波特率为19 200 bps。

采集器用C语言编制实现。设计大致分四步进行。

(1) 协议设计

在“一线通”系统中,设备以采集器号、子站号和设备号惟一确定。管理机用采集器号区别局域网上的采集器。采集器用子站号标识总线上的DDC控制器。同一子站下可能有不止一个设备,相互以设备号区分。

所有的状态和控制数据都以设备为单位进行组织。通过工程项目的配置文件,系统中确定的设备与具体设备类型联系起来。采集器中设备状态数据块格式定义为

设备状态数据和控制数据格式由设备类型数据协议规定。

采集器与子站的串行通信数据帧基本格式为

STX协议数据ETX校验和

所有协议数据传输字节加ETX生成校验和。由16个ASCII字符O~9、A~B作为传输字节对协议数据和校验和进行编码,传输字节的最高位用作奇偶校验位。

通信采用主从方式,由采集器向子站写控制数据。写命令帧协议数据为

设备状态数据块或控制数据块可任意组合到用户数据域中。标志字符指明用户数据的类型。例如,是采集器向管理机发送的设备状态数据块组合,还是管理机向采集器发送的设备控制数据块组合。

(2)数据结构

采集器中,为设备控制数据块设置从网口到串口的队列。设备状态数据块须定期地从各子站中读取并刷新存储,变化的状态须向管理机发送。为此,设置子站项和设备记录块两种基本结构,构成三种链表,如图3所示。

子站项的基本域是子站号。各子站项通过指针NextDDC相互连接,构成一个循环链表,管理对子站的采集过程。指针CurrDDC指向当前正被访问的子站项。采集器根据CurrDDC沿循环链表的依次移动,确定下一个访问的子站站号。

在子站项数据域中设置了一个故障计数器。当某子站对采集器读命令连续多次无正常应答时,采集器判定其故障,将暂停对其读取,并启动计数器。计时结束后再尝试重新访问该子站。如果成功,便恢复正常;否则,停止读取而重新计时。这样将大大减少对故障子站的超时等待时间,实现了故障屏蔽和自动恢复的连接重试功能。

设备记录块的基本域是设备号。在其记录数据域中存放着一个完整的最新设备状态数据块,由记录长度域指明长度。

每个子站下连接着数目不等的若干个设备,每个设备对应一个设备记录块。同一子站下的设备记录块通过指针域RBPtr连成一个单链表。采集器能根据子站下设备的增加自动添加设备记录块。

状态发生变化的设备记录块由指针域RBInList连接成发送链表。以太网发送程序将给设备状态数据块加上采集器号,组合到用户数据报中。这样的方式能保证发送设备最新的状态数据。

(3)任务设计

μC/OS-II(v2.52)被移植到LPC2210上,是独立于采集器程序外的一段代码。作为可剥夺型内核,它能保证实时性的需要,使时间要求苛刻的事件得到快捷的处理。

采集器程序由一组任务构成,如表1所列。

Task_UartProcess()是采集器的核心任务。它依次循环地完成:

◆发送写命令帧(如果有控制数据块)。从设备控制数据块队列中取出新的控制数据块,组合到写命令帧中。利用串行发送中断服务发送写命令帧。

◆发送读命令帧。从子站项循环链表中获得访问子站号,生成读命令帧。同样,利用串行发送中断服务发送读命令帧。

◆等待子站应答帧。当收到UartRcvMbox中消息或超时退出时,进入应答帧数据处理程序。数据处理程序完成对设备状态数据块的刷新存储和变化处理。

◆发采集信号量通知发送服务器和发送客户端。

(4)程序设计

LPC2210上电后需运行一段汇编代码,完成中断向量表的定义和重映射,外部存储控制器的初始化,并分配系统堆栈空间,然后进入main()函数[2,3]。

在main()中:

◆调用()SInit()函数对内核多任务调度所用系统变量和数据结构完成初始化,并建立空闲任务。

◆调用()SStart()函数进入内核。

内核中集成了TCP/IP协议栈,数据报交换通过连接来进行。主要Socket API函数如表2所列。

ADS开发环境下,函数都是可重入的。

采集器发送客户端或发送服务器均能独立地完成对变化的设备状态数据块的发送,和对控制数据块的接收。采集器发送客户端程序状态如图4左端所示。调用connect()函数发起与管理机的连接。连接只需与三台管理机之一建立即可。

连接建立后,可用send()发送设备状态数据块组合帧。采集器在访问每个子站后,都要检查设备状态变化情况,并及时向管理机汇报。

当故障发生时,send()函数将不能成功返回。若干次发送失败后,客户端程序将调用close()断开连接,然后重新发起建立连接。

实际上,close()并不一定能正常断开连接,这将影响连接的重新建立。故约定,当设备状态无变化时,采集器也将间隔一定时间发送一个空数据报。进入故障处理后,管理机因收不到定期的空数据报,亦将关闭连接而重新侦听。

采集器发送服务器程序状态如图4右端所示。事先指定侦听的连接数,通过accept()函数查看管理机与采集器的连接情况。

当有管理机连接后,即可通过send()发送设备状态数据块帧,所有过程同客户端中一样。不同的只是,当进入故障处理后,将退回到accept()重新侦听远程连接。

采集器由5个源文件和6个头文件组成,编译后约8 KB代码。包括启动代码、实时内核和TCP/IP协议栈后,总共40 KB,并占用125 KB数据空间。

管理计算机可对采集器的数据结构和工作方式等进行必要的配置。

采集器正常工作时测得的串口通信时序示意图如图5所示。其中,读命令帧历时约3.8 ms,子站应答帧约13.2 ms.子站应答延迟取决于子站的处理时间。

由图5可见,子站的访问时间约35 ms。期间除完成子站访问外,还包括以太网发送等各项任务。如果要求总线访问周期小于1 s,则可连接25个子站。

结 语

本文介绍的现场数据采集器采用32位ARM处理器加实时内核μC/OS-II的嵌入式实现方案。它将现场各类设备与管理计算机连接起来,使智能小区“一线通”监控系统的结构和对网络资源的利用更趋合理。

通常,对电梯运行状态的监控实时性要求较高,延迟一般应小于O.5 s。其他诸如安防报警等,也应小于2 s。现场数据采集器能很好地满足实时性要求。当十台电梯均以4 m/s以上的高速模拟运行时,监控界面上所有的参数都能及时得到反映,并几乎感觉不到延迟。事实上,每个状态的数据都能被传递达2次以上。

现场数据采集器已被成功地使用于上海金色家园等多处智能化小区工程中。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18202

    浏览量

    221925
  • 嵌入式
    +关注

    关注

    4975

    文章

    18235

    浏览量

    287833
  • 数据采集
    +关注

    关注

    38

    文章

    4472

    浏览量

    112296
收藏 人收藏

    评论

    相关推荐

    ARM7和UC/OS-II设计的信号采集系统

    ARM7和UC/OS-II设计的信号采集系统 概述:介绍了一种用ARM7+μC/OSII设计的数据采集系统。给出了
    发表于 04-16 14:06 736次阅读
    用<b class='flag-5'>ARM</b>7和UC/<b class='flag-5'>OS-II</b>设计的信号<b class='flag-5'>采集</b>系统

    μC/OS-II操作系统在3种处理器上的移植,你会哪一种???

    /OS-II操作系统的大部分源代码都是用C语言书写的,但仍需使用汇编语言来完成一些和处理器相关的操作,例如读写处理器、寄存时只能使用汇编语
    发表于 08-10 10:59

    μCOS-II操作系统在各种处理器上的移植

    仍需使用汇编语言来完成一些和处理器相关的操作,例如读写处理器、寄存时只能使用汇编语言来实现。因此,将μC/
    发表于 08-14 09:46

    μCOS-II在总线式数据采集系统中有哪些应用?

    的多少),支持现有大多数型号的8位、16位、32位MCU/MPU,已被广泛应用于交换机、路由、过程控制、汽车业、办公自动化、计算机外设以及民用消费类产品等,具有稳定的可靠性。把μC/OS-II应用在总线式
    发表于 10-10 07:11

    μC/OS-II的中断按键怎么处理

    μC/OS-II是一个完整的、可移植、可裁减的占先式实时多任务内核。本文主要讨论了μC/OS-II环境下中断按键消抖处理及LCD多级菜单显示
    发表于 03-23 08:13

    μC/OS-II是什么?μC/OS-II有哪些应用?

    μC/OS-II的原理是什么?如何去改进μC/OS-II的调度算法?μC/OS-II有哪些应用?
    发表于 04-26 07:17

    μC/OS-II在P89V51RD2上是怎样实现移植的?

    μC/OS-II是什么?μC/OS-II内核结构是由哪些组成的?什么是P89V51RD2微处理器?μC
    发表于 04-27 06:18

    如何去设计并实现一种现场数据采集器

    现场数据采集器有哪些基本功能?如何去设计并实现一种现场数据采集器
    发表于 06-04 06:53

    μC OS-II 在S3C44B0X 处理器上的移植

    介绍实时操作系统μC/OS-II 的特点和内核结构,给出μC/OS-II 在Samsung 嵌入式S3C44B0X ARM7 微处理器上的移植的步骤及详细相关代码,同时阐述μC/
    发表于 05-15 13:34 18次下载

    轻型PPP协议在μC/OS-II操作系统中的实现

    针对实时操作系统μC/OS-II 没有自己的网络协议栈,提出了基于ARM7TDMI 处理器的μC/OS-II 操作系统上轻型PPP 协议的设计与实现
    发表于 08-13 09:05 15次下载

    基于ARM处理器的μC/OS-II的移植研究

    本文介绍了基于ARM处理器的μC/OS-II 的移植,并对其进行扩展,主要包括内核、lwip、μC/GUI 的移植。关键字:微处理器; μC/O
    发表于 08-27 11:50 14次下载

    uc/os-iiARM处理器上的移植

    uc/os-iiARM处理器上的移植:基于ARM体系结构的处理器因本身固有的硬件结构特点.使其对操作系统的运行提供了充分的硬件支持.本文简
    发表于 09-13 14:16 65次下载

    基于ARM+μC/OS-II的嵌入式数据采集系统设计

    基于ARM+μC/OS-II的嵌入式数据采集系统设计摘 要:比较了常见的几种数据采集系统方案,说明了基于ARM 的嵌入式系统方案的优势。通过
    发表于 05-30 17:06 35次下载

    μC/OS-II在S3C44BOX处理器上的移植

     摘要:介绍实时操作系统μC/OS-II的特点和内核结构,给出μC/OS-II在Samsung嵌入式S3C44BOX ARM7微处理器上的移植的步骤及详细相关代码,同时阐
    发表于 03-11 12:39 1215次阅读
    μC/<b class='flag-5'>OS-II</b>在S3C44BOX<b class='flag-5'>处理器</b>上的移植

    用协处理器提高μC/OS-II的实时性

    用协处理器提高μC/OS-II的实时性 μC/OS-II是一种可移植、可固化、可裁剪及可剥夺型的多任务实时操作系统(RTOS)。本文提出用双核单片机提高实时操作系统
    发表于 03-29 15:10 735次阅读
    用协<b class='flag-5'>处理器</b>提高μC/<b class='flag-5'>OS-II</b>的实时性