APP下载

喷水推进上位机监控系统ARM设计与实现

2016-05-11ARMbasedDesignandImplementationofSupervisionControlSystemforWaterjetPropulsion

自动化仪表 2016年3期
关键词:线程组态上位

ARM-based Design and Implementation of Supervision Control System for Waterjet Propulsion

王晓初1 徐 亮1 龚征华2 陈建平2 袁景淇1(上海交通大学自动化系1,上海 200240;中船708研究所喷水推进技术重点实验室2,上海 200011)



喷水推进上位机监控系统ARM设计与实现

Multi-thread CAN bus ARM

国家自然科学基金资助项目(编号:61233004);

教育部博士点基金资助项目(编号:20110073110018)。

修改稿收到日期:2015-07-28。

第一作者王晓初(1990-),男,现为上海交通大学控制科学与工程专业在读硕士研究生;主要从事喷水推进控制系统和嵌入式系统的研究。

0 引言

喷水推进是一种重要的船舶动力技术,广泛应用于高性能船舶[1]。喷水推进器的可靠运行离不开稳定、高效的上位机监控系统。喷水推进系统上位机监控系统的主要任务包括:对输入设备的采样、为用户提供良好的人机交互界面、与下位机进行数据通信以及对系统信息的存储与查询等。

上位机监控系统的实现需要稳定、高效的嵌入式硬件和软件。随着高性能芯片制造技术的不断提升,具有体积小、功耗低、可靠性高的ARM系列芯片得到广泛应用[2]。由于ARM芯片可适应多种嵌入式操作系统,因此成为嵌入式处理器的首选。在操作系统的选择上,VxWorks在实时性和可靠性上具有巨大优势,但价格相当昂贵,且开放性差,开发难度大; Linux具有源代码开放、实时性和可移植性良好等特点,但是尚没有很好的用户图形界面; WinCE是微软推出的一款多任务、多线程的实时操作系统,具有紧凑、可靠性高等特点,且用户图形界面良好,开发周期短、通用性强,可满足大部分工业领域嵌入式系统开发[3]。因此,本文采用WinCE作为上位机操作系统。

1 总体框架

基于ARM和WinCE喷水推进系统上位机的总体框架见图1,主要包括采样模块、组态串口屏、数据库和CAN总线通信4个部分。

图1 喷水推进系统上位机总体框架Fig. 1 Overall framework of the host computer in waterjet propulsion system

系统采样模块包括6路模拟量采样(A/D)和8路数字量采样(DI),采样周期达到20 ms;组态串口屏包括喷水推进系统仪表及数值的显示,并提供历史数据查询的人机交互界面;数据库则对系统实际运行数据进行存储,并响应用户的查询操作; CAN总线通信作为上位机与下位机的桥梁,完成二者间信息交互。

需要说明的是,尽管WinCE操作系统具有较好的用户图形界面,但在开发过程中发现图形界面的绘制会消耗系统不小的内存资源,制约了系统采样频率的提高。因此将系统的人机交互界面模块独立出来,以组态串口屏的形式实现其功能。

2 系统硬件设计与实现

图2给出了系统硬件设计框图,其核心是TI公司生产的AM3352微处理器[4],内核为ARM Cortex-A8,频率为800 MHz。针对A/D采样和组态串口屏模块,由于二者均为串口(RS-232串口,以下均简称串口)通信,可利用处理器自带的UART1和UART2,并通过MAX3243E芯片转换电平得到串口; 8路DI采样由系统内部提供的GPIO接口实现;系统提供的USB OTG接口用于连接计算机,完成程序调试及下载; LCD接口外接调试屏,用于开发过程的界面显示;存储器方面,扩展了256 MB DDR3 SDRAM和256 MB NAND Flash,以提高系统性能;同时,为了能够更大容量地存储系统运行数据,对系统内部SD卡接口进行了扩展,得到TF卡接口;处理器还自带2路CAN总线接口,通过CAN总线控制芯片CTM8251AT,可实现CAN总线网络的数据通信[5]。

图2 系统硬件设计方案Fig. 2 Design scheme of system hardware

对于硬件的扩展部分,考虑到CAN总线通信和存储器扩展技术比较成熟,因此主要对A/D采样和组态串口屏两个模块作进一步说明。

2. 1 A/D采样

A/D采样包括对手轮、手柄等输入信号的采样,共6路,电压范围为0~5 V,采样周期达到20 ms。考虑到系统只留有4路ADC接口,因此对A/D采样进行扩展。

由于系统具有丰富的UART,且串口通信实现简单、通信波特率可达57 600 Bd/s,因此选用串口实现A/D采样模块与CPU的通信。

为了实现A/D采样,本文选用了PIC18F2423集成芯片。该芯片是美国MICROCHIP公司研发的一种用于开发和控制外围设备的集成电路,自带13通道12位精度A/D模块,单通道转换速率可达50 000次/s,可满足6通道20 ms采样周期要求。

A/D采样模块的工作模式如图3所示。PIC与CPU之间通过串口进行通信。考虑到采样模块的定时并不精确,因此采用CPU通过串口定时发送采样命令,PIC接收命令采样并上传的模式。

图3 A/D采样工作模式Fig. 3 A/D sampling mode

2. 2组态串口屏

组态串口屏是带有组态控件、串口控制的液晶屏。组态控件包括文本、仪表、曲线、图标、进度条等,组态串口屏接收CPU通过串口发送的指令,便可完成显示操作。考虑到在WinCE上绘制大量仪表、数值会消耗大量系统资源,因此将上位机的人机交互显示界面以组态串口屏的方式独立出来,以提高系统稳定性。

本系统选用广州大彩光电科技有限公司生产的10. 4英寸(1英寸= 25.4 mm)组态串口屏,其核心处理器为Cortex-M3 +高速FPGA,带触摸,内置虚拟数字小键盘和全功能键盘,支持串口通信方式,最高通信波特率可达115 200 Bd/s。

组态串口屏的示意界面见图4,其主要包括运行参数仪表显示、输入(模拟量和开关量)显示以及查询界面显示。

图4 组态串口屏显示界面Fig. 4 Display interface of serial configuration screen

CPU发送给组态串口屏的数据主要包括两类:①用户设定信息和喷水推进系统实际运行信息;②根据用户查询信息从数据库提取出的历史数据。需要注意的是,当待显示数据过多时,可选择分次发送并调整发送频率,以便组态串口屏更好地完成显示功能。

3 软件设计

喷水推进系统上位机软件设计过程采用模块化设计,根据不同的硬件设备,设计出相应的软件模块,之后再将各独立软件模块和上位机任务合理地结合起来,从而实现上位机各项功能。本节先简要介绍基于ARM的WinCE 7. 0操作系统的定制过程,然后重点讨论多线程技术、WinCE下串口通信和SQLite数据库的实现。

3. 1 WinCE系统定制

Platform Builder是微软公司发布的一款用于定制WinCE操作系统的集成开发环境,开发人员可使用这个集成开发环境完成嵌入式操作系统的定制、编译和调试[6]。通过Platform Builder,最终可得到该平台操作系统。其具体形式为映像文件nk. bin和nk. nb0,其中nk. nb0可通过相应工具下载到开发板内存中运行。最后,在应用程序开发前,需使用Platform Builder针对硬件开发板输出相应的软件开发工具包(software development kit,SDK),用以辅助硬件程序的开发。

3. 2应用程序开发

3. 2. 1多线程技术

分析A/D采样模块可知: CPU需完成定时、发送和接收3个任务,以实现系统定时采样。为了实现系统精确定时,选用Query Performance Frequency&Counter基于硬件时钟的定时方式。该定时方式通过获取系统频率和系统计数器,可实现毫秒级精确定时。

针对系统采样频率高、数据量大的情况,可对系统发送和接收任务分别创建线程,以提高系统资源的利用效率,从而加快系统应用程序的响应速度。WinCE提供了便捷的线程创建机制,包括基于Win API和MFC这2种线程创建方式[7],这里选用MFC中的CWinThread类创建线程。其中发送线程的相关代码如下。

接收线程的创建与发送过程类似,用于读取采样数据。接收在发送结束后自行启动,且发送与接收应轮流执行。在开发过程中发现二者并不同步,导致数据接收不正确,因此考虑对发送和接收线程进行同步处理。

WinCE操作系统中,提供了事件(event)、互斥对象(mutex)、信号量(semaphores)和临界区(critical _ section)4种同步控制对象来实现线程间的同步[7-8]。结合本系统要求和各个同步控制对象的特点及使用情况,选择互斥对象来实现发送和接收线程的同步。互斥对象的原理为只有拥有互斥对象的线程才具有访问资源的权限,且互斥对象只有一个,因此决定了某一时刻只有一个线程在运行[7]。为了使得发送线程和接收线程轮流拥有互斥对象,在每个线程执行完毕后释放互斥对象,并利用Sleep()函数使当前线程进入挂起状态,以确保另一线程的执行。

以下为利用互斥对象实现线程同步的代码。

3. 2. 2 WinCE下串口通信

发送和接收线程都需要通过串口进行操作,WinCE下串口通信主要包括3个步骤[9]:①初始化串口;②串口通信;③关闭串口。其实现代码如下:

串口发送较简单,这里仅对串口读数据进行分析。串口读数据使用ReadFile函数(使用见上述代码),其中dwLength为指定要读取的字节数,dwLengthRcv为实际读取的字节数。A/D采样每次上传数据为12字节,因此应取dwLength =12,即当ReadFile函数读到12字节数据后返回,这时dwLengthRcv = dwLength = 12。数据偶尔丢失会导致实际读取数小于12,从而影响整个数据的正常接收。事实上,串口读数据函数ReadFile还与串口超时参数有关。下面将对串口超时参数的选择进行分析说明。

串口读有两种超时:间隔超时和总超时,分别用T1和T0表示。其中,间隔超时T1是指在接收时两个字符之间的最大时延,总超时T0是指读操作总共花费的最大时间。通常,总超时T0一般取较大值(如1 000 ms),以保证数据的正常读取;间隔超时T1用于控制ReadFile读取间隔字符的最长等待时间,会对接收过程产生重大影响。以本文为例,采样周期Ts= 20 ms,即CPU间隔20 ms接收12 B数据。假设某异常情况下CPU只接收了10 B,因未达到设定要求而进入等待状态。此时,为了不影响下次数据的接收,间隔超时应小于采样周期,即T1<Ts,至于本次接收的错误数据应当丢弃。

3. 2. 3 SQLite数据库的实现

(1)SQLite3数据库在WinCE平台下的移植。

SQLite数据库是由D. Richard Hipp开发的一个基于C库的轻量级嵌入式关系数据库引擎。SQLite3是其最新版本,具有自身短小、快速高效、稳定可靠、可移植性好等众多优点[10],非常适合嵌入式系统中数据的存储管理。

SQLite没有提供针对WinCE系统平台统一的工程配置文件,需要根据不同平台自己创建工程[11]。SQLite3在WinCE 7.0平台的移植流程主要包括4个步骤:①创建SQLite3动态链接库;②获取CppSQLite3U;③将SQLite3加入项目工程;④应用程序配置。

(2)SQLite3数据库的使用。

SQLite3数据库在WinCE上的使用主要包括创建数据库和表、插入记录和查询记录,下面给出相应关键代码。

4 测试结果

对完成的上位机系统进行短时和长时的测试,结果表明该系统基本达到预期,可靠、稳定。其中:高速采样周期为20 ms; CAN总线通信周期为20 ms; SQLite数据库每隔1 s进行存储;组态串口屏实现了用户设定和运行信息的显示,刷新频率为500 ms,同时响应了用户的查询操作。

表1给出了系统A/D采样过程的统计信息。

表1 A/D采样统计信息Tab. 1 A/D sampling statistics

需要指出的是,A/D采样周期决定了系统运行周期,对整个系统运行效率影响重大。从表1可以看出,系统的采样周期为20 ms,达到了设定要求。

5 结束语

本系统建立在ARM Cortex-A8硬件和WinCE 7. 0操作系统的基础上,完成了喷水推进系统上位机数据采集、存储、显示、通信等各项功能。针对系统仪表显示消耗大量系统资源的情况,利用组态串口屏将系统的人机交互界面独立出来,提高了系统稳定性和实时性。另一方面,在处理器A/D采样通道数不足的情况下,利用串口对其进行了扩展,并在串口通信中利用多线程技术实现了系统的20 ms的定时采样。测试结果表明,系统的各项性能均达到了预期效果。

参考文献

[1]钮会武.喷水推进装置及其控制技术研究[D].哈尔滨:哈尔滨工程大学,2009.

[2]周旭,李小敏,俞承芳.基于ARM的集散系统上位机设计[J].仪器仪表学报,2006(S1): 704-706.

[3]陈立定,杨俊辉,肖力扬.三种通用嵌入式操作系统的分析与比较[J].微计算机信息,2009(11): 89-91.

[4]凌秀泽,周俊,王俊仁.基于AM335X的液晶显示控制系统设计[J].计算机测量与控制,2015(1): 96-98.

[5]马舒.基于CAN总线的汽车倒车雷达系统研究[D].长春:吉林大学,2012.

[6]余宏兵,李宝安,申功勋.基于ARM的WinCE系统定制[J].现代电子技术,2008(10): 73-75.

[7]黄丹,邵惠鹤.基于Windows CE平台的多线程编程[J].微计算机信息,2007,35(7): 53-55.

[8]阚能琪. VC + +串口通信中多线程技术的应用研究[J].西华大学学报:自然科学版,2005(4): 84-85,88.

[9]韩宝俊,卢建华,闵华松. WinCE下串口通信模型设计与实现[J].计算机工程与设计,2008(8): 1997-1999.

[10]廖一鹏.嵌入式SQLite在温湿度巡检仪中的应用[J].光电技术应用,2010(5): 61-64,79.

[11]刘祥,邓中亮,吴巍荪. SQLite3在基于WinCE平台的智能移动终端的应用[J].工业控制计算机,2009(3):19-20.

ARM-based Design and Implementation of Supervision Control System for Waterjet Propulsion

王晓初1徐亮1龚征华2陈建平2袁景淇1
(上海交通大学自动化系1,上海200240;中船708研究所喷水推进技术重点实验室2,上海200011)

摘要:为提高喷水推进监控系统的效能和可靠性,提出了一种基于ARM Cortex-A8内核和WinCE 7. 0操作系统的上位机监控系统设计方案。分析了系统的硬件架构和软件实现,并详细讨论了系统采样模块、人机交互界面的设计与实现,以及WinCE下多线程编程和SQLite数据库实现等关键技术。该系统可实现6通道高速采样,人机交互界面良好,且具有体积小、功耗低、可靠性高等优点。

关键词:喷水推进嵌入式系统上位机监控系统WinCE串口通信多线程CAN总线ARM

Abstract:Based on kernel of ARM Cortex-A8 and WinCE 7. 0 operating system,the design scheme of a supervision control system for waterjet propulsion is proposed. The hardware architecture and software implementation are analyzed,and the key technologies of the design and implementation of sampling module,interactive interface,and multi-thread programming under WinCE and SQLite database are discussed in detail. The system is characterized with 6-channel high-speed sampling,good user interface,compact,low power consumption and high reliability.

Keywords:Waterjet propulsionEmbedded systemHost computer monitoring systemWinCESerial port communication

中图分类号:TH-39; TP312

文献标志码:A

DOI:10.16086/j.cnki.issn1000-0380.201603011

猜你喜欢

线程组态上位
基于C#线程实验探究
基于PLC及组态技术的恒温控制系统开发探讨
基于国产化环境的线程池模型研究与实现
线程池调度对服务器性能影响的研究*
特斯拉 风云之老阿姨上位
基于PLC和组态的智能电动拧紧系统
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
铸造行业三维组态软件的应用
基于PLC和组态的新型回转类测试设备的研制