石毅壮
(赤峰市农牧业机械化研究推广中心推广科,内蒙古赤峰024000)
远程监控系统软件功能主要包括工业现场模拟数据、数字量的采集、触摸屏的界面显示、坐标向量的获取、GPRS串行通信任务的完成.
整个嵌入式软件系统软件框架是在基于μC/OS-Ⅱ操作系统的多任务环境和启动多任务运行上构建的,如图1所示.系统对μC/OS-Ⅱ和目标电路板进行初始化,紧接建立模拟量采集、数字量采集、触摸屏界面显示、触摸屏坐标的获取和GPRS串行通信等多项任务.若要在多任务调度开始后启动程序,需要由其他任务建立任务程序.
远程监控系统软件将嵌入式开发平台作为基础,优先考虑任务的实时性操作,具体过程为:首先在STM 32平台上移植μC/OS-Ⅱ;然后编写对应软件驱动程序及用户操作界面,并在接口函数里开发应用程序,构成对应的嵌入式软件;最后按照实时性优先级将软件中不同种类功能模块进行分类,并分配到对应的任务中.
图1 图1系统软件框
为保证远程监控操作系统正常运行,函数OSInit()的初始化、μC/OS-Ⅱ中所有的变量以及数据结构要最先被调用,为了使任务区域功能始终处于就绪状态,要建立空闲任务OS_Taskldle().
在多项任务运行之前,与硬件相关的内容需要进行对应的配置,来完成目标板的初始化.如硬件初端的驱动部分与API接口进行对应的配置,这样可使多项任务在同时运行过程中不需要过多的与硬件相关联部分的操作.目标电路板的初始化主要包括中断源的配置、系统时钟的初始化、DMA控制器的初始化、ADC的初始化、触摸电路初始化、I/O口的初始化、串口的初始化、FSMC的初始化及TFT接口初始化.
远程监控系统模拟量采集过程的实质是将直接存储器存取用来提供给外设和存储器之间或者存储器和存储器之间的高速数据进行传输,也就是将ADC转换结果以DMA方式传递出去.其中ADC通道选择分为规则组和注入组,注入组最多只能设置4个通道,需要触发才可以采集到设置通道里的ADC值,而规则组可以依照通道设置的先后顺序对各通道依次进行数据采集,解决了多路ADC通道的自动采集缺陷.由于规则通道转换的值储存在指定的数据寄存器里,即便转换多个规则通道并保证同时实现DMA功能时,也可以避免存储在ADC_DR寄存器中的数据丢失.规则通道的转换结束后,产生了DMA请求,通过ADC_DR寄存器将已转换的数据传输到用户指定地址.由于利用了DMA数据的快速移动性能,节省了CPU空间资源,节省下来的资源可以完成其他操作任务.
ADC单次转换时间为采样周期(对电压的采样时间)和转换周期(采样结束后的转换时间)的总和.ADC采样周期取决于时钟来源.配置RCC时,PLL为72M作为主时钟,配置PCLK2为PLL的2分频,同时配置ADC时钟为PCLK2的4分频.时钟频率Fadc为9 MHz,设定采样时间为55.5个时钟周期,ADC的转换时间为12.5个时钟周期,整个转换所需要的周期数为68个时钟周期,单次的转换时间为7.5μs.
设置配置I/O口为数字量的采集上拉输入模式,二进制数字量的读取通过读引脚状态,来完成对应I/O口存到相应变量的采集功能.
通过建立BUTTON来控件触摸屏界面显示任务是自动监控状态还是手动发送状态.当没有响应的情况下,系统进入自动状态,并且每隔一定的时间向远程监控终端(手机)发送当前采集到的所有数据量(包括模拟量和数字量),同时对通道进行编号排序,为功能区域扩展做铺垫;当系统采用手动模式时,界面弹出选择查看窗口,通过BUTTON选择来进入查看模拟量或数字量的界面.所有显示通道数值后边都对应复选框控件,使操作者能够手动发送当前相应通道的数据量至远程监控终端(手机),其流程如图2所示.
图2 界面显示程序流程
远程监控系统里通信任务必须保证其实时性,通过向GPRS模块发送AT命令来控制其向远程监控终端(手机)发送数据.采集每个数据量(包括模拟量和数字量)的通道都有标志位.若选择手动模式,为确保是否发送该通道的数值,需要检查发送短信的信号量之后每个通道的标志位;若选择自动模式,则省略此流程,直接发送全部通道数值,随后每个通道的标志位自动清零.串行通信任务流程,如图3所示.
图3 串行通信任务流程
为了验证GPRS远程监控系统设计系统是否能够达到设计要求,需要对系统整体性能进行测试.
利用可调电位器产生模拟电压进行测试,数字量用高低电平来替代,A/D参考电压范围0~3.3 V,数字量显示正常,如图4所示.
图4 信号的采集显示
监控系统通道选择界面时,系统开始直接进入自动监控界面,可人工选择手动进入通道查看选择界面,用以发送所需要传输的数据.
在实现GPRS远程监控系统过程中,人机交互界面设计得简洁方便,参照模块化设计思想,依照各种功能的实时性要求的不同,将终端的功能需求进行分类,并在各自不同任务中得以实现,最后通过操作系统对任务进行管理,实现嵌入式远程监控系统的各项功能.
[1] 张森,陈源,陈昌敏.在Linux上模拟μC/OS-Ⅱ实时操作系统的实现[J].微计算机信息,2006,(23):80-82.
[2] 拉伯罗斯.嵌入式实时操作系统μC/OS-Ⅲ应用开发[M].宫辉,曾鸣,龚光华,等译.北京:北京航空航天大学出版社,2012.
[3] 陈瑶,李佳,宋宝华.Cortex-M 3+μC/OS-Ⅱ嵌入式系统开发入门与应用[M].北京:人民邮电出版社,2010.
[4] 黄燕平.μCOS ARM移植要点详解[M].北京:北京航空航天大学出版社,2005.