billtian 发表于 2018-1-4 10:47:32

如何提高数据采集产品的兼容性和适用性,减少工作量

公司开发一款数据采集类产品,对多路模拟量输出传感器 和 多路串口传感器进行数据采集 并传输至服务器。根据不同的项目需求 传感器路数不太一样串口传感器的协议也有可能不一样 输出的数据格式也不太一样 这样做的结果就是来一个项目做一套板子和一套程序 重复劳动很多 容易出问题 产品也不易做稳定。

初步想法是硬件上做足够多的路数 把核心的代码 和外围接口的代码分开,修改时只修改外围接口代码。 如何实现 还没想太明白 ?

大家还有什么好的经验 分享一下。

核心宗旨是 提高软硬件复用性 把研发人员解放出来

悟空间66 发表于 2018-1-4 11:19:19

我们也在做这样的事情。

liansh2002 发表于 2018-1-4 11:21:11

本帖最后由 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()获取实际值,这样核心不要关心传感器,只需要关心数据,做到了外围和核心分离

kitten 发表于 2018-1-4 11:29:31

软件定义协议。以串口为例,硬件上只实现串口的读写时许。至于串口发什么数据给传感器以及从传感器读回来的数据是啥,硬件都不管,全部传输到后台上,后台去解析。这样前端硬件通用,增加传感器就只修改后台的协议就行。

VAN 发表于 2018-1-4 14:13:14

整理需求,模块化设计,硬件模块化,软件模块化。

billtian 发表于 2018-1-10 09:54:42

谢谢大家!

pulan 发表于 2018-1-10 10:35:14

以前也做过采集器的项目,当时也是几种做法:1.数字量不管啥全部给上位机处理,模拟量硬件做的全一点即可。2.底层硬件解析协议,尽量把现场要采集的数字量协议都写进去。2.采用远程升级代码的方式,如果有新设备要采集,远程升级采集器的firmware.

ilan2003 发表于 2018-1-10 11:07:46

做成CAN采集模块,做很多的模块,然后CAN总线通讯。有一个模块接收CAN数据负责通讯。

tjjack 发表于 2018-1-10 11:28:37

物联网的东西吧

billtian 发表于 2018-1-16 21:02:16

tjjack 发表于 2018-1-10 11:28
物联网的东西吧

差不多吧,现在都这么叫

ericdai 发表于 2018-2-15 18:14:02

嵌入脚本,比如lua等等,后台处理也用脚本,比如python nodejs

weichao4808335 发表于 2018-2-15 18:52:58

工业上用can很好用,公司内部可以制定通用的协议,以后慢慢维护

wangyu_2011 发表于 2018-2-15 22:55:07

速度速度速度很重要,要是不要速度很简单,做一个信号切换板轻松搞定。

Excellence 发表于 2018-2-16 18:46:04

modbus rtu

laujc 发表于 2018-2-16 22:30:41

不同的地方全部上位机处理即可

yj_yulin 发表于 2018-2-17 09:46:33

协议制定得好,麻烦事会少很多,参考protobuf

billtian 发表于 2018-2-19 07:42:40

yj_yulin 发表于 2018-2-17 09:46
协议制定得好,麻烦事会少很多,参考protobuf

谢谢 看看 学习一下

tangmintm8013TM 发表于 2018-2-19 08:59:43

这方面是需要好好学习的!
页: [1]
查看完整版本: 如何提高数据采集产品的兼容性和适用性,减少工作量