APP下载

基于平板电脑STM32的多波长自动旋光仪软件设计

2014-08-07陈若雷

光学仪器 2014年3期

文章编号: 10055630(2014)03024706

收稿日期: 20131219

作者简介: 陈若雷(1958),男,高级工程师,主要从事精密科学仪器的软件编制方面的研究。

摘要: 旋光度是反映物质旋光性质的指标,通过测定旋光度,可分析物质的浓度、含量、纯度等。SGW5多波长自动旋光仪利用平面偏振光和法拉弟磁光效应测量旋光物质在特定检测波长和温度下的旋光度。为了满足SGW5的功能需要,采用了带WINCE嵌入式系统的平板电脑和STM32单片机相结合的硬件系统,并对该系统进行软件设计。该软件设计在几个方面有一定特点,达到了仪器的性能指标要求。

关键词: WINCE; STM32; 旋光度; 多波长

中图分类号: TH 744文献标志码: Adoi: 10.3969/j.issn.10055630.2014.03.013

Software design for multiwavelength automatic polarimeter

based on a tablet PC and STM32

CHEN Ruolei

(Shanghai Instrument Physical Optics Instrument Co., Ltd., Shanghai 200233, China)

Abstract: Optical rotation is the reflected material optical properties. The substance concentration, content and purity can be analyzed through the determination of optical rotation. SGW5 multiwavelength automatic polarimeter uses a plane polarized light wavelength and measuring optical rotation Faraday magnetooptical effect materials in a particular rotation of the test wavelength and temperature. In order to meet the need of SGW5 function, it adopts hardware system with WINCE embedded system flat computer and STM32 microcontroller combination, and software design of the system. This software design has certain characteristic in several aspects, and achieved the performance requirements of the instrument.

Key words: WINCE; STM32; optical rotation; multiwavelength

引言旋光仪是测定物质旋光度的仪器,通过旋光度的测定,可分析物质的浓度、含量、纯度等,广泛应用于制糖、制药、石油、食品、化工等工业部门及有关高等院校和科研单位。SGW5多波长自动旋光仪利用平面偏振光和法拉弟磁光效应测量旋光物质在特定检测波长和温度下的旋光度。随着技术的发展和人们对旋光仪功能、性能要求的不断提高,研制了SGW5多波长自动旋光仪。为了满足多波长自动旋光仪的设计要求,SGW5采用了带WINCE嵌入式系统平板电脑和STM32单片机结合控制仪器。本文主要探讨基于WINCE嵌入式系统和STM32单片机的软件设计。1测量原理光学零位原理:若使自然光依次经过理想起偏器和检偏器,以起偏器和检偏器的通光方向正交时作为零位,检偏器偏离正交位置的角度与入射检偏器的光强I之间的关系,由马吕斯定律可表示为I=Kcos2α(1)当法拉弟线圈两端加以频率为f的正弦交变电压u=Usin2πft时,按照法拉弟磁光效应,通过的平面偏振光振动平面将迭加一个附加转动α=βsin2πft(2)其中β为物质的磁光系数。仪器上电后,自动停在正交位置上。若有样品放进试样室则检偏器相对于起偏器偏离正交位置,出现频率为f的交变光强信号,相应地有频率f的电信号,此电信号经过选频放大,功率放大,驱动伺服电机通过机械传动带动检偏器转动,使检偏器向正交位置趋近直到检偏器到达正交位置,频率为f的电信号消失,伺服电机停转。角度检测器检测出检偏器转过的α角度数,就得到了待测样品在特定的检测波长和温度下的旋光度[1] 。根据上述测量原理进行旋光度测定的SGW5多波长自动旋光仪的仪器结构总框图如图1所示。光学仪器第36卷

第3期陈若雷:基于平板电脑和STM32的多波长自动旋光仪软件设计

图1SGW5结构总框图

Fig.1General diagram of SGW5 Structure

2基于仪器控制系统的软件设计

2.1SGW5软件的总体设计根据多波长自动旋光仪多种输入输出的功能要求和实时性很强的性能需求,SGW5采用了带WINCE嵌入式系统的平板电脑和STM32单片机相结合的硬件系统(SGW5硬件系统见图2),并对该系统进行软件设计。SGW5软件总体上分平板电脑和STM32两部分设计,平板电脑程序框图见图3,STM32程序框图见图4,图5是平板电脑的主操作界面。从这些图中可以看到:平板电脑的功能主要是输入(按键响应)和输出(显示数据、保存数据、导出文件等)。输入响应可分两个方面:(1)响应触摸屏按键,然后向STM32发控制命令。主要响应“复测”、“清零”、“温控”及“测量参数”和“校正参数”页面上的按键操作。(2)响应触摸屏按键,然后执行操图2硬件系统框图

Fig.2Block diagram of hardware system作。完成“报告”、“记录”、“信息”及“帮助”页面上的功能。包括数据记录的储存、浏览和删除、多种格式文件的导出、中英文信息的手写和软键盘输入、与PC机的通信等,并且在完成这些功能时,不影响测量的正常进行。平板电脑的程序设计满足了用户的功能要求。STM32程序完成的是实时性要求很高的脉冲记数、温度控制、温度读取等操作,这直接决定了SGW5的示值误差、重复性、控温准确度等性能指标的实现。本文主要讨论STM32、平板电脑和PC机的软件设计。

图3平板电脑程序框图

Fig.3Block diagram of flat computer图4STM32程序框图

Fig.4Block diagram of STM32

2.2SGW5几个有特点的软件设计

2.2.1STM32软件设计STM32软件设计的关键是:(1)脉冲计数不能发生漏记或多记的情况,这是仪器测量是否可靠的基图5平板电脑主页面

Fig.5Main operating page of flat computer础。因此,STM32的中断资源必须用于脉冲计数,其他的功能不能和脉冲计数争资源。(2)尽量简化仪器结构系统。DS18B20温度传感器是单总线器件,具有体积小,硬件开销低,抗干扰能力强,精度高的优点。但时序要求高,使用DS18B20温度测量时,一般关闭中断系统,将单片机的所用资源交给它,直到测量完成后才开中断系统允许处理其它事情。由于SGW5有脉冲计数、控温过程、RS232实时通信等功能,实时性要求都非常高,不可能在DS18B20读温度期间不工作,所以只能采用非中断方式读取DS18B20值完成了功能。采用这种方式的关键在于延时程序和DS18B20初始化程序的编制,SGW5的程序采用非中断方式成功地读取了多种型号的DS18B20。图6步进电机控制程序框图

Fig.6Block diagram of

step motor controlSGW5是多波长旋光仪,和其他旋光仪相比增加了滤光片切换功能。六种波长的滤光片放置在一个盘上,在步进电机带动下自动切换滤光片即切换波长。这种切换装置的特点是:(1)机械机构简便,仅有一个光电传感器通过狭缝定位。(2)滤光片盘惯性较大。实际上,这也是波长切换软件设计的两个关键点,程序框图见图6[23] 。通过对光电传感器的反复定位及步进电机不同转速、不同停止时间的控制,程序正确无误地完成了滤光片切换功能。

2.2.2平板电脑软件设计平板电脑的厂家提供了组态软件,但该组态软件有两个不足:(1)数据类型中没有数组;(2)用组态软件不能保存数据。因此该组态软件的功能显然不能满足仪器设计要求,决定采用NCF编制平板电脑的程序。平板电脑软件设计的关键是显示和键盘响应要快速无误,程序调试要方便。STM32每20 ms将计数数据传送给平板电脑显示一次,因此,利用文本框显示数据在WINCE系统下会有一种跳跃感。用图片框显示数据可以达到没有跳跃感,但有内存泄露问题。而.net提供了垃圾收集机制,一般认为不需要考虑内存泄露问题,但实际使用证明至少在WINCE系统中内存泄露是存在的。SGW5解决内存泄露的方法是:(1)在全局变量处声明:Dim bmp1 As Bitmap(2)在循环体外实例化:bmp1=New Bitmap(Pictbox1.Width,Pictbox1.Height)(3)在循环体内完成数据显示(在字符串str1中):Dim Myg1 As System.Drawing.GraphicsDim Wordb As New SolidBrush(MyColor2)Pictbox1.Image=bmp1Myg1=Graphics.FromImage(bmp1)Myg1.Clear(Color.Black)Myg1.DrawString(str1,myfont1,Wordb,10,10)Wordb.Dispose()Myg1.Dispose()(4)在循环体最后强制回收:GC.Collect()经上述过程就能动态、即时、快速地记录整个测量过程。SGW5对平板电脑程序调试时采用的方法是:将STM32和PC机的RS232口直接连接,用VS2005下的程序模拟调试,调试完成后稍改动几句语句即能在WINCE上使用。这样调试的好处是避免使用Platform Builder编译环境,避免定制WINCE内核,用这种方法调试NCF程序更方便快速[45]。VS2005下程序调试完成后,对SGW5仅调整了两处:(1)调用了“coredll.dll” 函数库中的两个函数;(2)增加InputPanel控件调用软键盘。下面例子是调用软键盘并显示在屏幕右下角。For Each InpM In InP1.InputMethodsIf InpM.Name="LargeKB" ThenInP1.CurrentInputMethod=InpMEnd IfNext InpMDim h As IntPtr=FindWindow("SipWndClass",Nothing)MoveWindow(h,335,295,480,420,False)可以看到,经过两处调整,软键盘的选择、调用、隐藏在WINCE系统下很方便。

2.2.3PC机软件设计SGW5利用平板电脑的下载线作为向PC机实时上传数据的通讯线,这样就简化了仪器接口和PC机的接线。使单向下载线平板具有了双向数据通讯的功能。上位机通讯部份的程序如下:Imports OpenNETCF.Desktop.CommunicationDim MyRapi As RAPIDim FileName(1501) As StringDim FileNum As IntegerDim Num,VrNum As IntegerDim rsorusb As BooleanPublic Function CopyFileFromSGW() As BooleanDim i As LongMyRapi=New RAPITryMyRapi.Connect()Do While Not MyRapi.DevicePresent()MyRapi.Connect()LoopIf MyRapi.DeviceFileExists("\harddisk\SGW5\data\test.stxt") ThenMyRapi.CopyFileFromDevice(Application.StartupPath & "\test.dat","\harddisk\SGW5\data\test.stxt",True)Do While (MyRapi.DeviceFileExists("\harddisk\SGW5\data\test.stxt"))MyRapi.DeleteDeviceFile("\harddisk\SGW5\data\test.stxt")LoopReturn TrueElseReturn FalseEnd IfCatch ex As ExceptionApplication.Exit()Return FalseEnd TryEnd Function这样既达到了实时通讯的效果又简化了仪器系统的设计。3结论SGW5多波长自动旋光仪试制完成后各项性能指标[6]达到设计要求,通过了上海计量测试所的测试。经过设计、生产过程的调试检测,用户的使用,证明SGW5软件设计是成功的,程序安全可靠,方法实用可行。参考文献:

[1]冯林,金涛,贾宏志,等.新型旋光仪测量原理的研究[J].光学仪器,2009,31(2):912.

[2]王永虹,徐炜,郝立平.STM32系列ARM Cortexm3微控制器原理与实践[M].北京:北京航空航天大学出版社,2008.

[3]李宁.基于MDK的STM32处理器开发应用[M].北京:北京航空航天大学出版社,2008.

[4]PHUNG S.Windows CE6.0嵌入式高级编程[M].张冬松,陈芳园,译.北京:清华大学出版社,2009.

[5]高磊,王洪滨,张欢.Windows CE系统开发高级编程与典型实例[M].北京:中国电力出版社,2011.

[6]许海滨,李宏宁,徐林丽,等.旋光检测中角度定位算法[J].光学仪器,2013,35(5):16.

Fig.6Block diagram of

step motor controlSGW5是多波长旋光仪,和其他旋光仪相比增加了滤光片切换功能。六种波长的滤光片放置在一个盘上,在步进电机带动下自动切换滤光片即切换波长。这种切换装置的特点是:(1)机械机构简便,仅有一个光电传感器通过狭缝定位。(2)滤光片盘惯性较大。实际上,这也是波长切换软件设计的两个关键点,程序框图见图6[23] 。通过对光电传感器的反复定位及步进电机不同转速、不同停止时间的控制,程序正确无误地完成了滤光片切换功能。

2.2.2平板电脑软件设计平板电脑的厂家提供了组态软件,但该组态软件有两个不足:(1)数据类型中没有数组;(2)用组态软件不能保存数据。因此该组态软件的功能显然不能满足仪器设计要求,决定采用NCF编制平板电脑的程序。平板电脑软件设计的关键是显示和键盘响应要快速无误,程序调试要方便。STM32每20 ms将计数数据传送给平板电脑显示一次,因此,利用文本框显示数据在WINCE系统下会有一种跳跃感。用图片框显示数据可以达到没有跳跃感,但有内存泄露问题。而.net提供了垃圾收集机制,一般认为不需要考虑内存泄露问题,但实际使用证明至少在WINCE系统中内存泄露是存在的。SGW5解决内存泄露的方法是:(1)在全局变量处声明:Dim bmp1 As Bitmap(2)在循环体外实例化:bmp1=New Bitmap(Pictbox1.Width,Pictbox1.Height)(3)在循环体内完成数据显示(在字符串str1中):Dim Myg1 As System.Drawing.GraphicsDim Wordb As New SolidBrush(MyColor2)Pictbox1.Image=bmp1Myg1=Graphics.FromImage(bmp1)Myg1.Clear(Color.Black)Myg1.DrawString(str1,myfont1,Wordb,10,10)Wordb.Dispose()Myg1.Dispose()(4)在循环体最后强制回收:GC.Collect()经上述过程就能动态、即时、快速地记录整个测量过程。SGW5对平板电脑程序调试时采用的方法是:将STM32和PC机的RS232口直接连接,用VS2005下的程序模拟调试,调试完成后稍改动几句语句即能在WINCE上使用。这样调试的好处是避免使用Platform Builder编译环境,避免定制WINCE内核,用这种方法调试NCF程序更方便快速[45]。VS2005下程序调试完成后,对SGW5仅调整了两处:(1)调用了“coredll.dll” 函数库中的两个函数;(2)增加InputPanel控件调用软键盘。下面例子是调用软键盘并显示在屏幕右下角。For Each InpM In InP1.InputMethodsIf InpM.Name="LargeKB" ThenInP1.CurrentInputMethod=InpMEnd IfNext InpMDim h As IntPtr=FindWindow("SipWndClass",Nothing)MoveWindow(h,335,295,480,420,False)可以看到,经过两处调整,软键盘的选择、调用、隐藏在WINCE系统下很方便。

2.2.3PC机软件设计SGW5利用平板电脑的下载线作为向PC机实时上传数据的通讯线,这样就简化了仪器接口和PC机的接线。使单向下载线平板具有了双向数据通讯的功能。上位机通讯部份的程序如下:Imports OpenNETCF.Desktop.CommunicationDim MyRapi As RAPIDim FileName(1501) As StringDim FileNum As IntegerDim Num,VrNum As IntegerDim rsorusb As BooleanPublic Function CopyFileFromSGW() As BooleanDim i As LongMyRapi=New RAPITryMyRapi.Connect()Do While Not MyRapi.DevicePresent()MyRapi.Connect()LoopIf MyRapi.DeviceFileExists("\harddisk\SGW5\data\test.stxt") ThenMyRapi.CopyFileFromDevice(Application.StartupPath & "\test.dat","\harddisk\SGW5\data\test.stxt",True)Do While (MyRapi.DeviceFileExists("\harddisk\SGW5\data\test.stxt"))MyRapi.DeleteDeviceFile("\harddisk\SGW5\data\test.stxt")LoopReturn TrueElseReturn FalseEnd IfCatch ex As ExceptionApplication.Exit()Return FalseEnd TryEnd Function这样既达到了实时通讯的效果又简化了仪器系统的设计。3结论SGW5多波长自动旋光仪试制完成后各项性能指标[6]达到设计要求,通过了上海计量测试所的测试。经过设计、生产过程的调试检测,用户的使用,证明SGW5软件设计是成功的,程序安全可靠,方法实用可行。参考文献:

[1]冯林,金涛,贾宏志,等.新型旋光仪测量原理的研究[J].光学仪器,2009,31(2):912.

[2]王永虹,徐炜,郝立平.STM32系列ARM Cortexm3微控制器原理与实践[M].北京:北京航空航天大学出版社,2008.

[3]李宁.基于MDK的STM32处理器开发应用[M].北京:北京航空航天大学出版社,2008.

[4]PHUNG S.Windows CE6.0嵌入式高级编程[M].张冬松,陈芳园,译.北京:清华大学出版社,2009.

[5]高磊,王洪滨,张欢.Windows CE系统开发高级编程与典型实例[M].北京:中国电力出版社,2011.

[6]许海滨,李宏宁,徐林丽,等.旋光检测中角度定位算法[J].光学仪器,2013,35(5):16.

Fig.6Block diagram of

step motor controlSGW5是多波长旋光仪,和其他旋光仪相比增加了滤光片切换功能。六种波长的滤光片放置在一个盘上,在步进电机带动下自动切换滤光片即切换波长。这种切换装置的特点是:(1)机械机构简便,仅有一个光电传感器通过狭缝定位。(2)滤光片盘惯性较大。实际上,这也是波长切换软件设计的两个关键点,程序框图见图6[23] 。通过对光电传感器的反复定位及步进电机不同转速、不同停止时间的控制,程序正确无误地完成了滤光片切换功能。

2.2.2平板电脑软件设计平板电脑的厂家提供了组态软件,但该组态软件有两个不足:(1)数据类型中没有数组;(2)用组态软件不能保存数据。因此该组态软件的功能显然不能满足仪器设计要求,决定采用NCF编制平板电脑的程序。平板电脑软件设计的关键是显示和键盘响应要快速无误,程序调试要方便。STM32每20 ms将计数数据传送给平板电脑显示一次,因此,利用文本框显示数据在WINCE系统下会有一种跳跃感。用图片框显示数据可以达到没有跳跃感,但有内存泄露问题。而.net提供了垃圾收集机制,一般认为不需要考虑内存泄露问题,但实际使用证明至少在WINCE系统中内存泄露是存在的。SGW5解决内存泄露的方法是:(1)在全局变量处声明:Dim bmp1 As Bitmap(2)在循环体外实例化:bmp1=New Bitmap(Pictbox1.Width,Pictbox1.Height)(3)在循环体内完成数据显示(在字符串str1中):Dim Myg1 As System.Drawing.GraphicsDim Wordb As New SolidBrush(MyColor2)Pictbox1.Image=bmp1Myg1=Graphics.FromImage(bmp1)Myg1.Clear(Color.Black)Myg1.DrawString(str1,myfont1,Wordb,10,10)Wordb.Dispose()Myg1.Dispose()(4)在循环体最后强制回收:GC.Collect()经上述过程就能动态、即时、快速地记录整个测量过程。SGW5对平板电脑程序调试时采用的方法是:将STM32和PC机的RS232口直接连接,用VS2005下的程序模拟调试,调试完成后稍改动几句语句即能在WINCE上使用。这样调试的好处是避免使用Platform Builder编译环境,避免定制WINCE内核,用这种方法调试NCF程序更方便快速[45]。VS2005下程序调试完成后,对SGW5仅调整了两处:(1)调用了“coredll.dll” 函数库中的两个函数;(2)增加InputPanel控件调用软键盘。下面例子是调用软键盘并显示在屏幕右下角。For Each InpM In InP1.InputMethodsIf InpM.Name="LargeKB" ThenInP1.CurrentInputMethod=InpMEnd IfNext InpMDim h As IntPtr=FindWindow("SipWndClass",Nothing)MoveWindow(h,335,295,480,420,False)可以看到,经过两处调整,软键盘的选择、调用、隐藏在WINCE系统下很方便。

2.2.3PC机软件设计SGW5利用平板电脑的下载线作为向PC机实时上传数据的通讯线,这样就简化了仪器接口和PC机的接线。使单向下载线平板具有了双向数据通讯的功能。上位机通讯部份的程序如下:Imports OpenNETCF.Desktop.CommunicationDim MyRapi As RAPIDim FileName(1501) As StringDim FileNum As IntegerDim Num,VrNum As IntegerDim rsorusb As BooleanPublic Function CopyFileFromSGW() As BooleanDim i As LongMyRapi=New RAPITryMyRapi.Connect()Do While Not MyRapi.DevicePresent()MyRapi.Connect()LoopIf MyRapi.DeviceFileExists("\harddisk\SGW5\data\test.stxt") ThenMyRapi.CopyFileFromDevice(Application.StartupPath & "\test.dat","\harddisk\SGW5\data\test.stxt",True)Do While (MyRapi.DeviceFileExists("\harddisk\SGW5\data\test.stxt"))MyRapi.DeleteDeviceFile("\harddisk\SGW5\data\test.stxt")LoopReturn TrueElseReturn FalseEnd IfCatch ex As ExceptionApplication.Exit()Return FalseEnd TryEnd Function这样既达到了实时通讯的效果又简化了仪器系统的设计。3结论SGW5多波长自动旋光仪试制完成后各项性能指标[6]达到设计要求,通过了上海计量测试所的测试。经过设计、生产过程的调试检测,用户的使用,证明SGW5软件设计是成功的,程序安全可靠,方法实用可行。参考文献:

[1]冯林,金涛,贾宏志,等.新型旋光仪测量原理的研究[J].光学仪器,2009,31(2):912.

[2]王永虹,徐炜,郝立平.STM32系列ARM Cortexm3微控制器原理与实践[M].北京:北京航空航天大学出版社,2008.

[3]李宁.基于MDK的STM32处理器开发应用[M].北京:北京航空航天大学出版社,2008.

[4]PHUNG S.Windows CE6.0嵌入式高级编程[M].张冬松,陈芳园,译.北京:清华大学出版社,2009.

[5]高磊,王洪滨,张欢.Windows CE系统开发高级编程与典型实例[M].北京:中国电力出版社,2011.

[6]许海滨,李宏宁,徐林丽,等.旋光检测中角度定位算法[J].光学仪器,2013,35(5):16.