微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > EasyARM2200的局域网现场数据采集器

EasyARM2200的局域网现场数据采集器

时间:11-15 来源:互联网 点击:
(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次以上。
现场数据采集器已被成功地使用于上海金色家园等多处智能化小区工程中。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top