红豆Cat 1开源|项目三: 从0-1设计一款HTTP版本RTU(支持GNSS)产品的软硬件全过程

HTTP版RTU(支持GNSS)项目概述

RTU(Remote Terminal Unit),中文即远程终端控制系统,负责对现场信号、工业设备的监测和控制。RTU是构成企业综合自动化系统的核心装置,通常由信号输入/出模块、微处理器、有线/无线通讯设备、电源及外壳等组成,由微处理器控制,并支持网络系统。它实现企业中央监控与调度系统对生产现场一次仪表的遥测、遥控、遥信和遥调等功能。RTU可以实现远程测控设备,通过控制现场IO控制现场设备运行。

产品定义描述

产品功能定义:

传统设备需接入云平台,在不改变其自身的条件下,通过串口连接一个可连接服务器的设备,以便在不修改传统设备的情况下,为其赋予上云功能。

HTTP RTU+GNSS 版本的 RTU 具备 5*6 贴片卡/外置 SIM 卡/全网通卡功能,支持北斗/GPS 定位,支持卡基站定位,内置看门狗,掉线自动恢复。其配备标准工业 RS232/485 接口,支持 6-20V 宽电压输入,支持 5 路 DO,5 路 DI,1 路 AI。

HTTP RTU+GNSS 版本的 RTU 为用户提供标准固件及对应源码,以及 HTTP 透传、GNSS、DI、DO、AI 等功能的操作例程。用户可借此快速了解如何从 0 开始开发项目,快速完成产品功能定义,加快开发进程。

产品硬件分析框图:

系统框图

功能简介

  1. 电源:为 SOM 核心板+底板和扩展外设提供电源。

  2. SOM 核心板+底板:作为产品的核心部分。

  3. 上位机:用于配置设备参数。

  4. 4G 天线:用于信号的接收和发送。

  5. DI/DO:开关量输入和输出。

  6. AI:模拟输入。

  7. SOM 板和底板之间的接口使用板对板连接器。

硬件资料包括,SOM板原理图和PCB,主板原理图和PCB,部分组件资料。

硬件设计原理图、Layout图、BOM信息等资料详情点击下面链接🔗:硬件开发部分

产品核心板资料和产品datesheet点击如下链接🔗:1)AM430EV5 SOM板1(5*6卡)2)Datasheet

也可以购买标准硬件进行软件开发,购买链接:

https://item.taobao.com/item.htm?id=768412868192&spm=a1z10.1-c-s.w4004-25306266394.3.7c4517edPbkQLY

软件开发分析:

开发一个项目时会产生大量代码。通常,项目开发人员会将项目功能拆分成一个个功能点,然后逐一实现,最后合并成最终的产品代码。

产品软件流程分析

我们的目标是研发一款 RTU(远程终端单元)。RTU 是一种针对通信距离较长和工业现场环境恶劣而设计的具有模块化结构的特殊计算机测控单元,用于将末端检测仪表和执行机构与远程调控中心的主计算机连接起来。

该项目实现的功能有:

  • 通过 AT 指令配置设备运行参数,包括服务器连接 IP、端口号、心跳包开启/关闭、心跳包内容、注册包模式、注册包内容以及复位和查询相关配置参数指令。

  • 可随时选择进入或退出透传模式。

  • 具备心跳保持功能,心跳间隔可配置。

  • 具备网络重连功能。

  • 理论上可发送无限长度数据包。

  • 波特率固定为 115200,也可根据客户需求定制。

  • 支持网络 AT 指令和 JSON 协议配置功能,可通过服务器下发远程 AT 指令进行配置。

  • 支持远程升级。

  • 支持 5 路数字输入(DI),DI 可配置为上拉/下拉、初始电平、主动上报、定时上报,还可单独读取某一路或同时读取 5 路。

  • 支持 5 路数字输出(DO),包含上拉/下拉、初始电平、重启状态,可单独设置某一路的输出电平,也可同时设置 5 路的输出电平。

  • 支持 1 路模拟输入(AI),可采集 4-20mA 的电流,可配置阈值,根据配置触发报警,周期上报。

  • 闹钟功能,DO 可定时执行设置动作。

  • 支持 IO 联动,DI/AI 作为输入源,DO 跟随动作,包括正向跟随、反向跟随 DI,以及在阈值内、阈值外执行相应动作。

根据 RTU 应具备的功能,代码可分为数据存储模块、AT 指令模块、切卡模块、透传模式切换模块、TCP 模块、心跳模块、掉线重连模块、GNSS 模块、DI 模块、DO 模块、AI 模块、JSON 模块、闹钟模块。

模块内拆解的功能点分析

模块是将具有相似功能的代码组织到同一个源文件中。每个功能都被视为一个功能点,不同功能点的组合构成了模块的主要功能。

  • 数据存储功能点:包括文件创建、初始化、读写和关闭等操作。

  • AT 指令功能点:包括串口初始化、串口数据接收、发送、数据分析以及 AT 指令解析。

  • 切卡功能点:包括 GPIO 初始化和复位切卡操作。

  • 透传模式切换功能点:包括串口初始化、串口数据接收、发送、数据分析以及切换模式操作。

  • 掉线重连功能点:包括连接状态检测和掉线重连操作。

  • TCP 功能点:包括参数配置、创建 Socket、连接服务器、发送和接收数据等操作。

  • 心跳功能点:包括参数配置和定时发送操作。

  • GNSS 功能点:包括参数配置、串口初始化、串口数据接收、数据分析、模式切换以及定时上报操作。

  • DI 功能点:包括参数配置、GPIO 初始化、中断检测、模式切换、定时上报和中断上报操作。

  • AI 功能点:包括参数配置、ADC 接口初始化、电流计算、定时上报操作。

  • DO 功能点:包括参数配置、GPIO 初始化、模式切换、定时上报、跟随 DI 或 AI 操作。

  • 闹钟功能点:包括参数配置、定时和超时动作操作。

  • JSON 功能点:包括数据接收、解析和发送操作。

上述模块功能点的顺序大致是按照依赖关系排列的,下面讲述的模块实现可能需要基于上述功能点来完成。

开发过程(基于红豆平台搭乐高模式开发)

根据上述分析,开发过程即为实现一个个功能点,再由数个功能点组成一个模块,最终由数个模块完成整个项目的开发。开发过程将从核心功能点验证、完整代码详解和调试三个章节展开,详细介绍如何使用服务层 API 或应用层组件中的代码来实现功能点和模块,从而完成整个项目。在软件开发部分,我们对这个开源项目进行了模块划分,并对每个模块拆解出相应的功能点。在本章节中,我们将对所有功能点进行逐一验证,拼接出我们最终的 RTU 产品代码。

本产品基于以上软件分析共涉及以下 13 个功能模块:数据存储模块、AT 指令模块、切卡模块、透传模式切换模块、TCP 模块、心跳模块、掉线重连模块、GNSS 模块、DI 模块、DO 模块、AI 模块、JSON 模块和闹钟模块。

这13个功能模块在红豆开源平台RTOS系统服务层组件&应用层组件都提供相关的服务,可以直接采用搭乐高开发模式。红豆平台的相关资源介绍链接:红豆平台RTOS技术架构。

第一步:基于RTOS的组件快速完成每一个功能模块的验证,针对本次工程每个功能模块验证详情链接:核心功能点验证

第二步:验证完功能点和功能模块后,从0快速搭建出一个RTU工程,进行系统级联调测试。RTU工程完整代码讲解链接:完整代码详解;RTU工程代码调试详解链接:调试:产品固件Gitee链接:​ 软件源码树文件介绍及Gitee链接 。 ​

本工程的代码对第一次接触红豆平台也非常友好,提供详细的代码讲解备注,例如以下:文件模块的代码,可以迅速了解上手,也可以根据自己的需求做优化改进。

工程成果下载

开发成果属于项目完成后,总结出来的一些说明性文件,包括Datasheet,AT指令手册,通信协议,以及固件等,可以作为本开源项目的工程量产资料。

Datasheet

SCH的讲解和Geber文件资料

产品BOM

AT指令手册

JSON通信协议

固件

如需下载相关资料或者需要技术交流请联系我们:

物联网技术发展日新月异,也欢迎反馈您的技术需求,我们会及时更新迭代红豆平台的技术应用能力。

部分素材来源于网络,仅用于交流学习,如有侵权请联系删除!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RT-Thread内核简介

1、RT-Thread 内核介绍 RT-Thread 内核架构图,内核处于硬件层之上,内 核部分包括内核库、实时内核实现 内核库是为了保证内核能够独立运行的一套小型的类似 C 库的函数实现子集。这部分根据编译器的不 同自带 C 库的情况也会有些不同,当使用 GNU GCC 编译器时,会携带…

为什么ClickHouse查询速度快

导读:ClickHouse速度快的秘诀在于——利用存储引擎的特殊设计充分减少磁盘I/O对查询速度的影响。 ClickHouse为什么查询速度快?本文来揭秘。 1 从存储引擎视角看 ClickHouse速度快的秘诀在于——利用存储引擎的特殊设计充分减少磁盘I/O对查询速度的影…

全国各省环境规制强度数据(2004-2022年)

01、数据简介 以保护环境为目的,对各种环境污染行为进行规制,政府相关政策规制,是社会性规制的重要内容,包含大气、水、废弃物、噪声污染等外部行为,对这些行为进行规制就是要将整个社会为其承担的成本转化为其自身承…

通过一篇文章让你了解Linux的重要性

Linux 前言一、什么是Linux后台vs前台为何大多数公司选择使用Linux作为后台服务器 二、国内企业后台和用户使用Linux现状IT服务器Linux系统应用领域嵌入式Linux系统应用领域个人桌面应用领域 三、就个人能力提升来说,该如何看待Linux网络上的人都怎么说知乎 腾讯面经…

IDEA Warnings:SQL dialect is not configured.

springboot项目XxxMapper.xml文件打开后显示warnings:SQL dialect is not configured......(翻译:未配置SQL语言。) 大概意思是没有在IDEA中配置当前sql是MySQl、Oracle还是MariaDB等语言。 配置一下就好: 完了&#…

2024年150道高频Java面试题(二十七)

53. 什么是 Java 中的死锁?如何避免? Java中的死锁是指两个或两个以上的线程因为竞争资源而造成的一种僵持状态,每个线程都在等待其他线程释放锁,但是这些锁又被其他线程持有,导致没有任何线程能继续执行下去&#xf…

中国电子学会(CEIT)2022年03月真题C语言软件编程等级考试四级(含详细解析答案)

中国电子学会(CEIT)考评中心历届真题(含解析答案) C语言软件编程等级考试四级 2022年03月 编程题四道 总分:100分一、拦截导弹(25分) 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度…

npm: .npmrc pnpm

pnpm i 安装依赖时&#xff0c;pnpm 的镜像源优先级遵循以下顺序&#xff1a; 命令行参数&#xff1a;可以通过在 pnpm i 命令中使用 --registry 的方式指定镜像源&#xff0c;此时会优先使用命令行参数指定的镜像源。 pnpm i --registry< registry-url >.npmrc 配置&…

谈谈我的软考高级考证之路(系统架构设计师篇)

系统架构设计师备考资料请移步 2023年软考高级系统架构设计师视频教程&#xff0c;推荐下载&#xff01;获取。 备考总体策略 • 总体策略&#xff1a;刷视频记笔记刷真题 • 备考时间&#xff1a;建议报完名之后&#xff0c;开始备考&#xff0c;大致2-3个月&#xff08;基础…

【Java多线程】案例(4):定时器

目录 一、定时器是什么? 二、Java标准库中的定时器 三、自己实现定时器 四、标准库中更推荐使用的定时器 一、定时器是什么? 定时器是一种用于在指定时间间隔或特定时间点执行特定任务的工具或设备。在计算机科学中&#xff0c;定时器通常是软件或硬件组件&#xff0c;用…

智过网:注册安全工程师注册有效期与周期解析

在职业领域&#xff0c;各种专业资格认证不仅是对从业者专业能力的认可&#xff0c;也是保障行业安全、规范发展的重要手段。其中&#xff0c;注册安全工程师证书在安全生产领域具有举足轻重的地位。那么&#xff0c;注册安全工程师的注册有效期是多久呢&#xff1f;又是几年一…

Elasticsearch下载安装 以及Reindex(数据迁移)

部署Elasticsearch集群 这里介绍使用的是Elasticsearch 7.6.1的版本&#xff0c;配置两台服务器&#xff0c;一台部署主节点&#xff0c;一台部署两个从节点。 下载地址&#xff1a;https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.2-linux-x86_64…

backTrack Mock

1.简而言之&#xff0c;一个集合里求组合就要用startIndex。 2.startIndex本身保证了组合的不同&#xff0c;需要求不同组合就要用startIndex&#xff1b;但从 i 开始还是从 i 1 开始决定了组合元素能不能重复选。&#xff08;39&#xff09; 3.组内既不能重复选&#xff0c…

【Java探索之旅】方法重载 递归

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; Java编程秘籍 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、方法重载1.1 为什么要有方法重载1.2 方法重载的概念与使用1.3 方法签名 二、递归2…

小程序面试题之性能优化提高11道

1.如何实现上拉加载分页列表的性能优化 我们的功能里面有个滚动到底部加载的功能&#xff0c;优化前我们的做法是这样的&#xff1a; 大部分人面对长列表滚动的时候&#xff0c;一开始的处理方式都是这样的&#xff0c;如果数据不多&#xff0c;只有几页可能不会太暴露问题&…

在QT里使用SQLite数据库

什么是SQLite数据库&#xff1f;SQLite是一种轻量级的数据库管理系统&#xff0c;它不需要一个独立的服务器进程&#xff0c;可以被集成到应用程序中。SQLite是开源的&#xff0c;支持跨平台操作&#xff0c;并且使用非常广泛。在QT里如何使用SQLite数据库呢&#xff1f;废话不…

软考高级架构师:随机函数模型

一、AI 讲解 随机函数模型是理解各种随机过程和算法的一个重要概念&#xff0c;在软件工程、算法设计以及系统分析中有着广泛的应用。简而言之&#xff0c;随机函数模型是一种用于描述具有随机性的系统或过程的数学模型&#xff0c;它能够帮助我们预测和分析在不确定性下的系统…

吴恩达2022机器学习专项课程(一) 5.5 特征缩放1 5.6 特征缩放2

问题预览/关键词 什么是特征缩放&#xff1f;作用是什么&#xff1f;特征尺度和参数w权重的关系是&#xff1f;算法为什么要调节w权重&#xff1f;不进行特征缩放对梯度下降的影响&#xff1f;有特征缩放对梯度下降的影响&#xff1f;实现特征缩放的三种方法是&#xff1f;如何…

JetBrains IntelliJ IDEA 2024.1 发布 - 领先的 Java 和 Kotlin IDE

JetBrains IntelliJ IDEA 2024.1 发布 - 领先的 Java 和 Kotlin IDE 请访问原文链接&#xff1a;JetBrains IntelliJ IDEA 2024.1 (macOS, Linux, Windows) - 领先的 Java 和 Kotlin IDE&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;s…

sqlmap一些常用命令

仅供交流学习使用&#xff0c;请勿用于非法用途 1&#xff09;检测url存在漏洞情况&#xff1a;python sqlmap.py -u "http://192.168.88.128/sqli-labs-master/Less-1/?id1" 2&#xff09;获取所有数据库名称&#xff1a;python sqlmap.py -u "http://192.168…