红豆Cat 1开源|项目四: 从0-1设计一款TCP版本DTU产品的软硬件全过程

在这里插入图片描述
在这里插入图片描述
TCP版本DTU产品项目概述
远程终端单元( Remote Terminal Unit,DTU),一种针对通信距离较长和工业现场环境恶劣而设计的具有模块化结构的、特殊的计算机测控单元,它将末端检测仪表和执行机构与远程控制中心相连接。
产品定义&功能描述
硬件功能概述

TCP DTU,用于将远程现场的传感器和执行器数据传输到中央控制系统或监控中心。DTU通常用于工业自动化、能源管理、环境监测等领域,它可以收集和传输各种类型的数据,如温度、压力、流量、电流、电压等。
TCP DTU具有5*6贴片卡/外置SIM卡/全网通卡功能,支持卡基站定位,内嵌看门狗,掉线自动恢复。标准工业RS232/485接口,可以支持6-20V的宽电压输入。
TCP DTU为用户提供标准固件以及对应源码,以及对应的TCP透传、AT指令配置等功能的操作例程。
软件功能概述
网络通讯功能:为了实现远程控制中心对终端测控单元的控制,DTU首先应该具备联网的能力,通过网络将两者连接起来。实现了网络通讯,就要考虑网络稳定的问题,如果不稳定,需要实现断线重连等。服务器确定设备目前在线
参数配置功能:网络通讯可以选择TCP,MQTT等协议。连接TCP服务器,需要配置TCP服务器地址,端口号等参数;连接MQTT服务器需要配置鉴权信息,订阅和发布的Topic等参数。此外,其它复杂功能,也会涉及到一些参数的配置。
网络参数配置功能:上述功能实现后,可以考虑后期维护过程中,当DTU现场维护不方便,使用网络对其进行配置的方式。配置的方式可以选择多种形式,可以将上面的指令稍微修改,也可以另外写一份协议。
心跳功能:当DTU和远程服务器建立连接后,服务器判断设备是否在线,需要DTU定时发送一串数据给服务器,用通信来确认DTU在线。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
也可以购买标准硬件进行软件开发,购买链接:
https://item.taobao.com/item.htm?id=768412868192&spm=a1z10.1-c-s.w4004-25306266394.3.7c4517edPbkQLY
在这里插入图片描述
产品软件功能定义
开源项目实现功能:

  • AT指令配置设备运行参数,包括:服务器连接IP、端口号;心跳包开启/关闭;心跳包内容;注册包模式;注册包内容。以及复位和查询相关配置参数指令。
  • 可随时选择进入、退出透传模式
  • 心跳保持功能,心跳间隔可配置
  • 网络重连功能
  • 理论上可以发送无限长度数据包
  • 波特率固定为115200,可以根据客户需求定制
  • 网络AT指令和JSON协议配置功能,可以通过服务器下发远程AT指令配置
  • 支持远程升级
    软件功能模块分析:
    按照上面的分析,开发的过程就是实现一个个组件,几个组件完成一个模块,几个模块完成一个项目的开发。
    开发过程会从核心组件验证,完整代码详解,调试三个章节来讲,如何使用服务层API或应用层组件中的代码实现组件和模块,从而完成整个项目。
    软件流程图:
    根据上面的讲解,我们可以轻松画出每个模块的流程图:
    在这里插入图片描述
    基开发豆平台开发分析(用了哪些应用层组件和服务层组件)
    我们的目的是做一款RTU,根据RTU应该具有的的功能,代码可以分为:数据存储模块,AT指令模块,切卡模块,透传模式切换模块,TCP模块,心跳模块,掉线重连模块,GNSS模块,DI模块,DO模块,AI模块,JSON模块,闹钟模块,Modbus模块。
    模块是根据相似的功能,把对应的代码放到同一个源文件中。每个功能算作一个组件,不同组件组合以来,构成了模块的主要功能。
  • 数据存储组件:包括文件创建,初始化,读写,关闭等。
  • AT指令组件:包括串口初始化,串口数据接收,发送,数据分析,AT指令解析
  • 切卡组件:包括GPIO初始化,复位切卡
  • 透传模式切换组件:包括串口初始化,串口数据接收,发送,数据分析,切换模式
  • 掉线重连组件:包括连接状态检测,掉线重连
  • TCP组件:包括参数配置,创建Socket,连接服务器,发送,接收数据
  • 心跳组件:包括参数配置,定时发送
    上述模块功能大致是按照依赖顺序来的,下面的模块实现可能要基于上面的组件。
  • AT指令模块
  • 心跳模块
  • TCP网络模块
  • 网络AT模块
  • 主任务模块
  • 升级模块
  • IO模块
  • 文件模块

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/799786.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

同时用到,网页,java程序,数据库的web小应用

具体实现功能:通过网页传输添加用户的请求,需要通过JDBC来向 MySql 添加一个用户数据 第一步,部署所有需要用到的工具 IDEA(2021.1),Tomcat(9或10),谷歌浏览器,MySql,jdk(17) 第二步,创建java项目,提前部…

Celery 是一个简单、灵活且可靠的分布式系统——python库

目录 引言 Celery 是什么? 安装 Celery 配置 Celery 创建任务 运行 Celery Worker 调用任务 更多示例 示例 1:发送电子邮件 示例 2:图片处理 示例 3:数据处理 结论 引言 今天我们来分享一个超强的 python 库&#xf…

微信小程序下载

首先进入微信网站链接:微信公众平台 (qq.com) 下载开发工具: 下载 / 稳定版更新日志 (qq.com) 下载稳定版

AV1技术学习:Translational Motion Compensation

编码块根据运动矢量在参考帧中找到相应的预测块,如下图所示,当前块的左上角的位置为(x0, y0),在参考帧中找到同样位置(x0, y0)的块,根据运动矢量移动到目标参考块(左上角位置为:(x1, y1))。 AV1…

C语言之带环链表

带环链表是数据结构链表中的一个经典问题,这里我们研究该问题分为两个方向:链表是否带环、返回链表的入环节点。 下面我们通过两个题目来分析带环链表: 1.判断链表是否带环 141. 环形链表 - 力扣(LeetCode) 那么我们…

# Redis 入门到精通(四)-- linux 环境安装 redis

Redis 入门到精通(四)-- linux 环境安装 redis 一、linux 环境安装 redis – 基于 Linux 安装 redis 1、基于 Center 0S7 或者 unbunt-18.04 安装 Redis 1)下载安装包wget http://download.redis.io/releases/redis-?.?.?.tar.gz 如&…

Unity最新第三方开源插件《Stateful Component》管理中大型项目MonoBehaviour各种序列化字段 ,的高级解决方案

上文提到了UIState, ObjectRefactor等,还提到了远古的NGUI, KBEngine-UI等 这个算是比较新的解决方法吧,但是抽象出来,问题还是这些个问题 所以你就说做游戏是不是先要解决这些问题? 而不是高大上的UiImage,DoozyUI等 Mono管理引用基本用法 ① 添加Stateful Component …

每日复盘-20240715

20240715 六日涨幅最大: ------1--------300807--------- 天迈科技 五日涨幅最大: ------1--------300807--------- 天迈科技 四日涨幅最大: ------1--------300807--------- 天迈科技 三日涨幅最大: ------1--------300713--------- 英可瑞 二日涨幅最大: ------1--------3007…

前端Vue组件化实践:自定义加载组件的探索与应用

在前端开发领域,随着业务逻辑复杂度的提升和系统规模的不断扩大,传统的开发方式逐渐暴露出效率低下、维护困难等问题。为了解决这些挑战,组件化开发作为一种高效、灵活的开发模式,受到了越来越多开发者的青睐。本文将结合实践&…

代码随想录训练营第三十六天 1049最后一块石头的重量II 494目标和

第一题: 原题链接:1049. 最后一块石头的重量 II - 力扣(LeetCode) 思路: 首先确认这是一道01背包问题的题目,如何转换:剩下尽可能小的重量,如何剩下呢?跟分割等和子集很…

基于RAG大模型的变电站智慧运维-第十届Nvidia Sky Hackathon参赛作品

第十届Nvidia Sky Hackathon参赛作品 1. 项目说明 变电站是用于变电的设施,主要的作用是将电压转化,使电能在输电线路中能够长距离传输。在电力系统中,变电站起到了极为重要的作用,它可以完成电能的负荷分配、电压的稳定、容错保…

基坑安全:自动化监测系统的革新力量

在日新月异的基坑工程领域,基坑安全自动化监测系统犹如一位守护者,以其独特的优势,为工程的安全与质量保驾护航。该系统集先进的测量仪器、计算机技术与现代传感技术于一体,对基坑的围护结构及周边环境进行全方位、高精度的实时监…

【C++基础】初识C++(1)

目录 一、认识C 1.1 C 相关概念 1.2 C的发展 1.3 C的关键字 1.4 第一个程序 二、命名空间 2.1 namespace的定义 2.2 命名空间的使用 三、C输入和输出 四、缺省函数 五、函数重载 一、认识C 1.1 C 相关概念 1983年,Bjarne Stroustrup在C语⾔的基础上…

内网安全:权限维持的各种姿势

1.Linux权限维持 2.Windows权限维持 目录: 一.Linux权限维持: 1.webshell: 2.定时任务: 3.SUID后门: 4.SSH Key免密登录后门: 5.添加用户后门: 二.Windows权限维持 1.计划任务后门&…

NetSuite RPA技术实践

近期有同学提出一个需求。 “需要存取的報表是存貨分類帳(stock ledger),將查到的各個[Item|Location]作為一組key,分別將報表中的「期末庫存量」「期末平均成本」「期末庫存量價值」這三欄的值,在每個月月底的時候自動將這個報表的這三欄數…

rollup打包工具

rollup打包工具 在学习vite和vue3源码的时候,接触到了rollup,所以过来学习一下 什么是rollup rollup是一个模块化的打包工具,会将javascript文件进行合并。比起webpack,webpack在打包的时候会进行代码注入(保障兼容性)&#xf…

位图——哈希思想的应用

三、位图 0、位图概念 所谓位图,就是用每一个比特位来存放某种状态(0或1),是一种哈希思想的应用,适用于海量数据,整数,数据无重复的场景。通常是用来判断某个数据存不存在的。(注意…

GaussDB DWS 详解

文章目录 GaussDB DWS 详解一、简介二、DWS的分布式架构架构概述关键组件 三、分布式查询数据查询流程SQL执行的示例 批注:本文引鉴了Forlogen博主的一些内容,并加以补充,以供学习了解。 GaussDB DWS 详解 一、简介 DWS(Data Warehouse Ser…

数据库-三范式

第一范式 1 数据库所有字段都只有单一属性。 2 单一属性由基本数据类型构成。 3 数据库的表都是二维的行与列。 例如上面的例子就不满足第一范式,因为是可以继续拆分的,拆分为更多的属性。 第二范式 1 符合第一范式 2 表必须有个主建 3 其它字段可以…

《0基础》学习Python——第十一讲__时间函数

一、时间函数是Python中的内置函数和模块,用于处理日期和时间相关的操作。以下是常用的时间函数的种类和用法: 1、time.time():返回当前时间的时间戳。 时间戳(timestamp)是一种表示日期和时间的方式,它是一…