最近看到有做汽车测试的LabVIEW案例,突然心动一下,想起自己从入职到现在做的虚拟仪器的项目。
记得刚入职时,从一个柴油发电机监控的项目做起,此项目完成多台发电机的远程监控功能,基于modbus协议的RS485通信。现在回想起来确实简单,但是刚从大学出来懵懵懂懂,想用C#来做,来来转转发现做的太复杂,于是想到了以前大学的虚拟仪器,赶紧捡起来慢慢做起来。从分析协议到设计程序方面,第一次真的是太难受了,想得多想得复杂,做出来灵活性很差,后期改动起来就非常麻烦。好在慢慢积累经验,现在提起电脑,短时间就可以实现基础的功能。
后来做了一些小项目,冷水机组的监控、Linux日志分析可视化、电台运维辅助工具、导航设备维护测试、机房环境监控系统等等,基本围绕机房的监控和维护来做,功能也较为单一,加上有经验、有想法、有能力,基本可以很快复制一些小项目。做的稍大点的项目,功能更加丰富、业务稍多的就是台站设备监控与动环监控系统和电台的自动测试维护系统,设备多一些,协议多一些,仪表多一些,但是底层的结构基本不变,就上上层需要统筹。涉及到软件设计架构方面的,读“中大型LABVIEW软件三层设计架构”有感 ,笔者基本遵从这个架构模式。
但是总的来说,设计模式多种多样,例如LabVIEW 设计模式与分析,最让笔者有时感叹的结构还是下面的两个,感觉太经典了。
一、两重生产者消费者
两重生产者消费者可以实现将各个功能模块解耦合,有点类似于现在的微服务的功能。数据采集、数据处理、数据文件分开来进行,中间通过队列来实现交互,完成异步处理。
双重生产者消费者
二、 数据缓冲设计
在数据生成时,并不是实时的将数据写入文件,而是等待一定量后再写入文件中,这样对于文件IO来说就十分友好。类似于网络音频或者视频,需要进行一段时间的缓冲才开始播放。对于程序来说,再内存中处理非常块,和数据库一样,制约最大的就是文件IO,这样设计可以极大的减少文件IO的压力。
数据缓冲










网友评论