对于大部分制造业企业,测量仪器的自动数据采集一直是个令人烦恼的事情,即使仪器已经具有RS232/485等接口,但仍然在使用一边测量,一边手工记录到纸张,最后再输入到PC中处理的方式,不但工作繁重,同时也无法保证数据的准确性,常常管理人员得到的数据已经是滞后了一两天的数据;而对于现场的不良产品信息及相关的产量数据,如何实现高效率、简洁、实时的数据采集更是一大难题。
在一些工业现场中,设备长时间运行容易出现故障,为了监控这些设备,通常利用数据采集装置采集他们运行时的数据并送给PC机,通过运行在PC机上的特定软件对这些数据进行分析,以此判断当前运行设备的状况,进而采取相应措施。当前常用的数据采集装置,在其系统软件设计中,多采用单任务顺序机制。这样就存在系统安全性差的问题。这对于稳定性、实时性要求很高的数据采集装置来说是不允许的,因此有必要引入嵌入式操作系统。下面以μC/OSⅡ为操作系统平台,基于ARM7系列处理器,对一种高性能的数据采集系统开发进行探索。
软件部分要分别编写S3C4510B部分的程序和CPLD控制程序。前者可分为μC/OSⅡ的移植和各个应用程序的编写,后者用VHDL语言实现。
对于S3C4510B部分,根据整个装置实现的功能和对他的要求进行系统任务分割,并根据实际需要为各个任务分配优先级。系统大致可分为如下几个任务:初始化CPLD控制参数;对FIFO的读取;与上位机的TCP/IP通讯;与上位机的串口通讯。对应每个任务,需要编写相应的应用程序,软件设计部分的关键技术有:μC/OSⅡ内核向S3C4510B中的移植,要根据处理器的特点合理地修改μC/OSⅡ的3个与处理器相关的文件:OS_CPUH,OS_CPU_AASM,OS_CPU_C.C。主要是将文件中的汇编指令,改为ARM7的汇编指令,并根据CPU的特点对文件中寄存器的初值进行改写;内存配置问题。对于存储器容量的设计,要综合考虑μC/OSⅡ内核代码和应用程序代码的大小。每个任务是独立运行的,必须给每个任务提供单独的栈空间(RAM),RAM总量的计算公式为:
RAM总量=应用程序的RAM需求+内核数据区的RAM需求+各任务栈需求之总和+最多中断嵌套所需堆栈;TCP/IP协议在μC/OSⅡ中的实现。为了满足嵌入式设备与Internet网络直接交换信息的要求,在μC/OSⅡ中又移植了LwIP协议栈。
LwIP是瑞士计算机科学院(SwedishInstituteofComputerScience)的AdamDunkels等开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈。LwIP的含义是LightWeight(轻型)IP协议。LwIP可以移植到操作系统上,也可以在无操作系统的情况下独立运行。LwIPTCP/IP实现的重点是在保持TCP协议主要功能的基础上减少对RAM的占用,一般他只需要几十k的RAM和40k左右的ROM就可以运行,这使LwIP协议栈适合在低端嵌入式系统中使用。
LwIP的特性有:支持多网络接口下的IP转发;支持ICMP协议;包括实验性扩展的的UDP(用户数据报协议);包括阻塞控制、RTT估算、快速恢复和快速转发的TCP(传输控制协议);提供专门的内部回调接口(rawAPI)用于提高应用程序性能。
LwIP可以很容易地在μC/OSⅡ的调度下,为系统增加网络通信和网络管理功能。LwIP协议栈在设计时就考虑到了将来的移植问题,他把所有与硬件,OS,编译器相关的部份独立出来,放在/src/arch目录下。因此LwIP在μC/OSⅡ上的实现就是修改这个目录下的文件,其他的文件一般不应该修改。在驱动中主要是根据S3C4510B内的以太网控制特殊功能寄存器,编写网络接口的处发送包、接收包函数,初始化以及用于以太网控制器的外部中断服务程序。 TMS320C6713基于DSP的数据采集程序设计(5):http://www.youerw.com/tongxin/lunwen_9614.html