同步更新于 WeChat:荣小菜在补钙
大家好,我是荣小菜,也可以叫我Richie,今天继续分享基于LabVIEW OOP的仪表控制库系列。
上一期我们完成了一系列用户层的仪表控查Vi,仪表控制库已经基本上结束啦。但是在用户使用这些Vi时必须输入正确的“仪表信息”,导致使用起来不是很方便,因此我们需要设计类似“仪表配置”这样的函数,可以根据仪表实际返回的标识,来生成“仪表信息”,这就是最终目标。
1. “仪表配置”Vi的总体设计
明确了目标,我们要进行“仪表配置”Vi的总体设计。(功能规划,文字叙述较多)
基础功能:
a) 进行TCP通讯获取仪表型号功能。完成这一功能后其实我们就能获得“型号”、“IP”、“TCP Link”这3个信息了。
b) 判断仪表的“类型”功能。主要是根据“型号”来判断“类型”,如E4447A是频谱仪,SMF100A是信号源。如何做出这样的判断我目前没有什么太好的办法,只能采用配置文件来预设。因此如果增加新的仪表,配置文件就必须改动。不过这不是什么问题,我们的仪表库本来就是要不断维护更新的。
高级功能:
a) 自动获取同IP字段下全部设备的仪表信息功能。该功能主要是考虑到用户可能会同时使用多台仪表,且使用的仪表IP也不固定(说白了就是将仪表搬来搬去乱用,这发生在我国绝大多数公司),因此若能够实现该功能,软件易用性将大大提高。
b) 可自定义仪表的驱动库功能。该功能主要考虑到用户没有仪表库里支持的仪表,仅有近似的仪表时应急使用。比如当前仪表库仅支持E4447A频谱仪,而用户手头只有E4440A,但两个频谱仪属于同系列的且大部分功能可兼容,此时若用户可以将E4440A的驱动指定为E4447A频谱仪驱动,就可以继续使用了。当然,该功能的实现也可以大大缩短仪表驱动库的上线周期,减少维护成本,毕竟这样就无需将同系列的仪表全都写入库内。
c) 网络共享与版本更新功能。仪表驱动库作为一个通用库,肯定是还要具有网络共享功能的,这样当发行新版仪表驱动库后,用户可以选择通过网络访问仪表驱动库并在线切换成不同版本。
d) 非标设备识别功能。考虑到国内可能存在不少非标仪表,它们返回的标识(*IDN?询问)可能是各式各样的非标准格式。因此仪表配置要预留识别这类仪表的功能,可以采用配置文件的形式,将非标设备的返回标识转为标准的。这样当我们在仪表驱动库中加入非标设备时就无需更改代码架构。
2. 文件IO -文件路径设计
各项功能已经明确,我们可以就开始了。但可惜没那么简单,由于其中涉及到大量的配置文件数据,因此我们要从基础的工程文件路径设计开始,如下图所示,我们一个工程中应包含“项目文档”文件夹、“文件IO路径”vi和其它文件。项目文档中一般包含“开发文档”、“项目配置文件”、“用户手册”和“运行日志”,而“项目配置文件”中就存放的就是我们项目中需要的.ini文件了。
“文件IO路径”Vi要放在最外层路径下,通过它我们可以得到里层各文件的路径信息(Development System或Run time System)。这是我们今后读写各类文件各核心。由于代码较为复杂,已经上传附件(
)。
3. 总结
本期我们开始了“仪表配置”Vi设计,对该Vi的各功能做了规划,并初步进行了基础的文件IO设计,后面我们将基于此继续设计配置文件的读写。