如何提高数据采集产品的兼容性和适用性,减少工作量
公司开发一款数据采集类产品,对多路模拟量输出传感器 和 多路串口传感器进行数据采集 并传输至服务器。根据不同的项目需求 传感器路数不太一样串口传感器的协议也有可能不一样 输出的数据格式也不太一样 这样做的结果就是来一个项目做一套板子和一套程序 重复劳动很多 容易出问题 产品也不易做稳定。初步想法是硬件上做足够多的路数 把核心的代码 和外围接口的代码分开,修改时只修改外围接口代码。 如何实现 还没想太明白 ?
大家还有什么好的经验 分享一下。
核心宗旨是 提高软硬件复用性 把研发人员解放出来 我们也在做这样的事情。 本帖最后由 liansh2002 于 2018-1-4 11:28 编辑
我的想法,借鉴面向对象,把不同传感器的公有属性提取出来,用struct封装,大概就这样
typedef struct{
void *const pData; //数据在RAM中存储的位置
unsigned char ucDataSize; //数据在RAM中占用字节数
unsigned char ucSenseInfo; //传感器的相关信息
void (*const vUart)(); //通讯方法
void (*const vConver); //数据转换(原始数据与实际值间的变化)
}
核心程序调用vUart()获取数据,需要使用时调用vConver()获取实际值,这样核心不要关心传感器,只需要关心数据,做到了外围和核心分离 软件定义协议。以串口为例,硬件上只实现串口的读写时许。至于串口发什么数据给传感器以及从传感器读回来的数据是啥,硬件都不管,全部传输到后台上,后台去解析。这样前端硬件通用,增加传感器就只修改后台的协议就行。 整理需求,模块化设计,硬件模块化,软件模块化。 谢谢大家! 以前也做过采集器的项目,当时也是几种做法:1.数字量不管啥全部给上位机处理,模拟量硬件做的全一点即可。2.底层硬件解析协议,尽量把现场要采集的数字量协议都写进去。2.采用远程升级代码的方式,如果有新设备要采集,远程升级采集器的firmware. 做成CAN采集模块,做很多的模块,然后CAN总线通讯。有一个模块接收CAN数据负责通讯。 物联网的东西吧 tjjack 发表于 2018-1-10 11:28
物联网的东西吧
差不多吧,现在都这么叫 嵌入脚本,比如lua等等,后台处理也用脚本,比如python nodejs 工业上用can很好用,公司内部可以制定通用的协议,以后慢慢维护 速度速度速度很重要,要是不要速度很简单,做一个信号切换板轻松搞定。 modbus rtu 不同的地方全部上位机处理即可 协议制定得好,麻烦事会少很多,参考protobuf yj_yulin 发表于 2018-2-17 09:46
协议制定得好,麻烦事会少很多,参考protobuf
谢谢 看看 学习一下 这方面是需要好好学习的!
页:
[1]