2011年11月16日,第二稿
_11.1 应用开发中所必要的工作
_ 图形化编程的确提高了编程的效率简化了程序设计方法,特别是:依靠NI公司所提供的范例、DAQ助手、仪器助手和Express VI为程序开发提供了十分有效的帮助。
但这里我们要说明的是:这些快速的方式和方法更适合于内部的实验和验证、外部的演示和评估。并不适用于实现应用项目的开发过程。这是因为:应用程序的开发不仅仅是完成某项工作和任务,它需要完整的纪录和保存应用程序的全部信息(应用项目档案)。这些对日后应用程序的改进和服务都是相当重要的。
试想,一年后用户再次找到你并要求对应用程序进行某些简单的改进时,你会告诉他们这一切都需要重新设计吗?或者对他们说:原来搞项目的同志已经退休(调离),我们没有办法对此进行改进,唯一的办法只能是重新设计。
为了应对解决这些类似的问题,应用程序开发中我们必须习惯于完成下列工作。
但这里我们要说明的是:这些快速的方式和方法更适合于内部的实验和验证、外部的演示和评估。并不适用于实现应用项目的开发过程。这是因为:应用程序的开发不仅仅是完成某项工作和任务,它需要完整的纪录和保存应用程序的全部信息(应用项目档案)。这些对日后应用程序的改进和服务都是相当重要的。
试想,一年后用户再次找到你并要求对应用程序进行某些简单的改进时,你会告诉他们这一切都需要重新设计吗?或者对他们说:原来搞项目的同志已经退休(调离),我们没有办法对此进行改进,唯一的办法只能是重新设计。
为了应对解决这些类似的问题,应用程序开发中我们必须习惯于完成下列工作。
_11.1.1 创建完善的需求文档
_ 需求文档应该是以用户方式提出应用项目中的全部要求。作为项目的开发人员应该理解和消化了这些全部需求的含义,并创建一个实现该应用项目的设计规范。
从开发人员的角度看,可能会有更多的事情需要考虑。比如:已经设计的软件是否适合其它类似的硬件使用;传感器的更换是否涉及到软件的改变等等。如果充分的注意到或预见到这些未来可能发生的变化,并在在软件设计中给予了相应的考虑和处理,这样的软件设计就是双赢的设计。
一个良好的设计规范实质上就是一个标准的作业指导书。事实上,我们往往会忽略这项工作。不要紧,现在开始习惯这样的开发模式也不算太晚。
下面我们来看看BLOOMY公司的项目需求文档的样式。参见下图所示。
从开发人员的角度看,可能会有更多的事情需要考虑。比如:已经设计的软件是否适合其它类似的硬件使用;传感器的更换是否涉及到软件的改变等等。如果充分的注意到或预见到这些未来可能发生的变化,并在在软件设计中给予了相应的考虑和处理,这样的软件设计就是双赢的设计。
一个良好的设计规范实质上就是一个标准的作业指导书。事实上,我们往往会忽略这项工作。不要紧,现在开始习惯这样的开发模式也不算太晚。
下面我们来看看BLOOMY公司的项目需求文档的样式。参见下图所示。
_ 这里所展示的模板仅仅可作为我们的参考。事实上,我们完全可以创建符合自己开发特点的项目需求文档。
_11.1.2 依据需求文档进行硬件设计
_ 需求文档中更多的是用户的要求。比如:我们曾经接过的一个项目中,用户是这样提出要求的(这里我们仅仅给出用户需求部分):
在便携式系统中,需要实现以下技术指标:
1、模拟输出部分(AO)
输出信号频率:点频,50Hz
输出信号幅度:0-5Vrms,连续可调,调节细度:0.01%(满度值)
2、模拟输入部分(AI)
测量通道数:2个
输入信号幅度:0-5Vrms,
输入信号频率:点频,50Hz
测量参数显示:输出电压、负载电流、负载功率因数、负载阻抗
3、数字I/O部分(DIO)
四位DIO输出,译码后驱动小型继电器
我们在项目设计中就是需要解读这些技术要求,从而实现硬件的最佳化设计。我们下面试着分析解读用户需求。
在项目中首先可以确定的是一个便携式系统(以笔记本电脑作为系统平台),这样我们就排除了PXI、PCI总线在系统中的使用。同时,硬件的落脚点也就重点放置在USB接口的数据采集模块上。显然,可同时满足上述AO、AI、DIO的基于要求的基于USB接口的数据采集模块有:X系列、M系列、cDAQ平台等等可供选择,可是在项目中我们到底选择那个呢?
从测量结果的要求上看,因为需要测量功率和功率因数。所以,最好选择具有同步功能的数据采集模块。
X系列同步采集模块(NI USB_6356;它的价格2.5-2.8万)
cDAQ(NI cDAQ_9174、NI 9215、NI 9263、NI 9401等;合计价格1.5万)
这些具有同步采集功能的模块完全可以满足我们的要求,唯一的缺憾就是系统造价略高些。同时cDAQ的体积略大些。
能否进一步降低系统造价,选择M(NI USB_6211;价格0.63万元)系列中的模块呢?
我们知道,通常在需要同步测量的情况下,为了满足测量要求,应该采用同步数据采集模块。但是,我们也应该注意到这样一个事实,就是本项目中有一个极特殊的情况,测量仅仅需要测量50Hz点频的功率和功率因数。如果我们能够在技术上进行简单的处理,通过修正非同步采集模块所带来的相位延迟(角差),就同样可以达到本项目测量的要求。基于这样的考虑,我们最终选择了NI USB_6211数据采集模块。
非同步数据采集模块的这个相位延迟,是由于模拟通道需要轮回切换从而导致时间延迟的发生。在不同的信号频率和一定的数据采样速率下,这个延迟时间都是不同的,要想全信号带宽下进行修正也是极其不容易做到的。
就本项目而言,因为输入信号为固定不变的50Hz,这样我们就可以将其影响通过相位补偿(相位偏差常数)来得到一定效果的修正。
实践证明:我们的方案是合理的,同时降低了系统的造价。
这个应用实例表明,只要我们对数据采集模块有一定的了解,并对数据采集过程有足够的认识,就会很好的指导我们的设计工作,趋向于我们与用户之间达到双赢的目的。
在便携式系统中,需要实现以下技术指标:
1、模拟输出部分(AO)
输出信号频率:点频,50Hz
输出信号幅度:0-5Vrms,连续可调,调节细度:0.01%(满度值)
2、模拟输入部分(AI)
测量通道数:2个
输入信号幅度:0-5Vrms,
输入信号频率:点频,50Hz
测量参数显示:输出电压、负载电流、负载功率因数、负载阻抗
3、数字I/O部分(DIO)
四位DIO输出,译码后驱动小型继电器
我们在项目设计中就是需要解读这些技术要求,从而实现硬件的最佳化设计。我们下面试着分析解读用户需求。
在项目中首先可以确定的是一个便携式系统(以笔记本电脑作为系统平台),这样我们就排除了PXI、PCI总线在系统中的使用。同时,硬件的落脚点也就重点放置在USB接口的数据采集模块上。显然,可同时满足上述AO、AI、DIO的基于要求的基于USB接口的数据采集模块有:X系列、M系列、cDAQ平台等等可供选择,可是在项目中我们到底选择那个呢?
从测量结果的要求上看,因为需要测量功率和功率因数。所以,最好选择具有同步功能的数据采集模块。
X系列同步采集模块(NI USB_6356;它的价格2.5-2.8万)
cDAQ(NI cDAQ_9174、NI 9215、NI 9263、NI 9401等;合计价格1.5万)
这些具有同步采集功能的模块完全可以满足我们的要求,唯一的缺憾就是系统造价略高些。同时cDAQ的体积略大些。
能否进一步降低系统造价,选择M(NI USB_6211;价格0.63万元)系列中的模块呢?
我们知道,通常在需要同步测量的情况下,为了满足测量要求,应该采用同步数据采集模块。但是,我们也应该注意到这样一个事实,就是本项目中有一个极特殊的情况,测量仅仅需要测量50Hz点频的功率和功率因数。如果我们能够在技术上进行简单的处理,通过修正非同步采集模块所带来的相位延迟(角差),就同样可以达到本项目测量的要求。基于这样的考虑,我们最终选择了NI USB_6211数据采集模块。
非同步数据采集模块的这个相位延迟,是由于模拟通道需要轮回切换从而导致时间延迟的发生。在不同的信号频率和一定的数据采样速率下,这个延迟时间都是不同的,要想全信号带宽下进行修正也是极其不容易做到的。
就本项目而言,因为输入信号为固定不变的50Hz,这样我们就可以将其影响通过相位补偿(相位偏差常数)来得到一定效果的修正。
实践证明:我们的方案是合理的,同时降低了系统的造价。
这个应用实例表明,只要我们对数据采集模块有一定的了解,并对数据采集过程有足够的认识,就会很好的指导我们的设计工作,趋向于我们与用户之间达到双赢的目的。
_11.1.3 软件开发环境的规范化
_ 虚拟仪器系统集成过程中,硬件的选择或评估是非常重要的。但是,更重要工作还是软件的设计和开发工作。为了更好的做好软件开发工作,我们应该确保软件开发环境的长期稳定、有效。
我们在软件开发中,制定了以下几个原则:
1、创建、保持一个独立、稳定的开发环境
所谓独立的开发环境就是说:使用一部装有单一LabVIEW版本的(包括:DAQmx等工具包)、独立运行的计算机(PXI平台)。原则上这台计算机不允许上网,随意使用USB接口。并由专门的软件开发人员操作使用。
这样做的目的是:避免计算机系统出现病毒或由其它应用软件出现意外所带来的负面影响。
多年来,我们一直遵守这一原则,确保了软件开发环境的稳定可靠。
2、软件开发环境使用的LabVIEW版本较低
由于LabVIEW版本变化较快,几乎每年一个新的版本。所以,从2004年开始我们一直使用LabVIEW 7.1.1作为软件开发环境,直到2006年。从2007年开始使用LabVIEW 8.5.1一直使用到2010年。从2011年开始我们使用LabVIEW 2009 SP1作为软件开发环境直到现在。
这样做的目的就是:稳定开发人员所熟悉的使用环境。避免频繁、快速更新版本所带来的不确定性影响(内部Bug)。
每个新的LabVIEW版本仅仅作为学习用途。
3、只有硬件升级才更新DAQmx
我们知道:DAQmx的版本并不是与LabVIEW的版本同步升级的,每当NI有新的硬件模块推出时都会发布新的DAQmx版本。所以,如果项目中没有选择新的硬件,一般不会轻易主动升级新的DAQmx版本。
这样做的目的依然是确保软件开发系统的稳定。
作为最小的系统集成开发者,我们的这些做的目的确保了用户的长期利益和自身的长远利益。
我们在软件开发中,制定了以下几个原则:
1、创建、保持一个独立、稳定的开发环境
所谓独立的开发环境就是说:使用一部装有单一LabVIEW版本的(包括:DAQmx等工具包)、独立运行的计算机(PXI平台)。原则上这台计算机不允许上网,随意使用USB接口。并由专门的软件开发人员操作使用。
这样做的目的是:避免计算机系统出现病毒或由其它应用软件出现意外所带来的负面影响。
多年来,我们一直遵守这一原则,确保了软件开发环境的稳定可靠。
2、软件开发环境使用的LabVIEW版本较低
由于LabVIEW版本变化较快,几乎每年一个新的版本。所以,从2004年开始我们一直使用LabVIEW 7.1.1作为软件开发环境,直到2006年。从2007年开始使用LabVIEW 8.5.1一直使用到2010年。从2011年开始我们使用LabVIEW 2009 SP1作为软件开发环境直到现在。
这样做的目的就是:稳定开发人员所熟悉的使用环境。避免频繁、快速更新版本所带来的不确定性影响(内部Bug)。
每个新的LabVIEW版本仅仅作为学习用途。
3、只有硬件升级才更新DAQmx
我们知道:DAQmx的版本并不是与LabVIEW的版本同步升级的,每当NI有新的硬件模块推出时都会发布新的DAQmx版本。所以,如果项目中没有选择新的硬件,一般不会轻易主动升级新的DAQmx版本。
这样做的目的依然是确保软件开发系统的稳定。
作为最小的系统集成开发者,我们的这些做的目的确保了用户的长期利益和自身的长远利益。