Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
风力发电机组健康检查系统
发布于 2024-09-16 17:42:08 浏览:235
订阅该版
[tocm] # 风力发电机组健康检查系统 ## 项目背景及意义 随着我国能源结构的调整和环保意识的提升,风力发电得到了快速发展。然而,风力发电系统在长期运行过程中,受到自然环境和设备老化等因素的影响,常常会出现诸如叶片损坏、发电机故障、变桨系统异常等各类问题。传统的人工巡检和设备状态监测方式不仅耗时费力,且检测的准确性较低,难以及时发现问题。基于此背景,针对传统检测方式存在的准确性和实时性不足的问题,本设计提出了一套基于边缘智能的风力发电机组智能巡检系统。该系统旨在提升风力发电机组的运维管理效率,实现更精准、实时的设备状态监测和故障检测。 ### 关键词 风力发电机组;齿轮箱;电机故障;智能化检测 ## 边缘智能风力发电机组健康检查系统系统架构设计 利用RT-Thread操作系统提供的物联网通信能力和实时性,构建起对整个底层边缘传感器数据的的实时采集和传输。随后通过Linux丰富的生态构建起边缘AI智能模型,对采集到的数 据进行实时的分类和识别,实现对风力发电机组的智能巡检。整个系统架构如下。 ![边缘系统架构.png](https://oss-club.rt-thread.org/uploads/20240916/a19e04037cb167cf71ff8afb073bafd6.png.webp) ## 边缘智能运维原理 在风力发电机组工作过程中,齿轮箱、发电机等极易出现机械振动过大、卡机、转速不稳定、运行宕机等故障。如果不能及时发现故障元件进行更换,就会危急整个系统的正常运转, 照成大量的经济损失。传统单一的震动检查存在可靠性不高的问题,为了提高对风力发电机组健康检测的有效率,需要结合声音、红外图像、图像等方面来构建整个风力发电机组的 健康检查模型。 ## RT-Thread工程配置 ### RT-Thread版本选择 本项目选择**5.0.2**版本进行设计,该版本支持finsh调试时第二位参数支持自动补全,如过去的 `list_thread、list_sem、list_mutex`等指令都在 `list`指令下,通过 `list [参数]`进行选择,利用该特性,可以极大的便利用户对调试代码的设计。 ### MCU选择 这里选择常用的**STM32F407ZGT6**作为边缘MCU设备,该设备资源丰富,通过拓展**SRAM**和**SD**卡等存储设备,可以融入更多的功能,为后续多样的需求提供支持。 ### RT-Thread工程架构 由于时间和精力有限,目前对整个项目的功能设计较为简单,实现了一部分简单功能,如数据采集和传输、文件系统等功能。RT-Thread工程架构如下图所示。 ![RT-Thread工程架构.png](https://oss-club.rt-thread.org/uploads/20240916/5cbcb1c847ad3a74c56165472f30c70b.png) ### Modbus组件配置 #### 组件选择 这里选择**FreeModus**组件,该组件可以支持从站RTU、ASCII、TCP模式,和主站RTU模式,但值得注意的是,该组件在主站设计上仍有一些个人觉得不妥的地方,需要进行修改。 ## 边缘计算平台 预定计划采用华为Atlas200进行设计,但参加缺货,所以这里采用RK3658进行设计。 ## 内网穿透 这里有一个详细的frp内网穿透教程,大家可安装教程学习。 [内网穿透教程-哔哩哔哩](https://www.bilibili.com/video/BV1zQ4y177F7/?spm_id_from=333.788) ### 客户端配置 在按照教程配置后,进行frpc开机后自动运行配置。 个人配置的frpc.toml的内容 > ``` > root@topeet:~$ cat app/frp/frpc.toml > user = "topeet" > > serverAddr = "服务器ip地址" > serverPort = 略 > > auth.method = "token" > auth.token = "token密码" > > [[proxies]] > name = "ssh" > type = "tcp" > localIP = "127.0.0.1" > localPort = 22 > remotePort = 略 > ``` 使用**systemctl** 实现 frpc 开机后台运行 > ```shell > root@topeet:~$ vim /etc/systemd/system/frpc.service > root@topeet:~$ cat /etc/systemd/system/frpc.service > [Unit] > Description = frp cloud > After = network.target syslog.target > Wants = network.target > > [Service] > Type = simple > TimeoutStartSec=infinity > ExecStartPre=/bin/sleep 60 > Restart=on-failure > RestartSec=5s > ExecStart = /root/app/frp/frpc -c /root/app/frp/frpc.toml > ExecReload = /root/app/frp/frpc reload -c /root/app/frp/frpc.toml > LimitNOFILE = 1048576 > > [Install] > WantedBy = multi-user.target > ``` 专门用于jupyter的frpc.toml配置,这里得先进行ssh连接之后,才能进行启动。 > ```shell > root@topeet:~$ cat app/frp/frpc-jupyter.toml > user = "topeet" > > serverAddr = "服务器ip地址" > serverPort = 略 > > auth.method = "token" > auth.token = "token密码" > > [[proxies]] > name = "jupyter" > type = "http" > localIP = "127.0.0.1" > localPort = jupyter运行的端口 > # http username and password are safety certification for http protocol > # if not set, you can access this customDomains without certification > # httpUser = "admin" > # httpPassword = "admin密码" > # if domain for frps is frps.com, then you can access [web01] proxy by URL http://web01.frps.com > subdomain = "" > customDomains = ["服务器ip地址"] > ``` 用于测试的指令 > ```shell > systemctl enable frpc # 使能 frpc 服务 > systemctl start frpc # 启动 frpc 服务 > systemctl stop frpc # 启动 frpc 服务 > systemctl restart frpc # 如果修改了frpc.toml文件,则重启 frpc 服务 > systemctl status frpc # 显示 frpc 服务运行的状态 > ``` ### 服务器端配置 服务器端自动启动frps服务的配置 > ```shell > root@hcss-ecs-aa62:~/frp# vim /etc/systemd/system/frps.service > root@hcss-ecs-aa62:~/frp# cat /etc/systemd/system/frps.service > [Unit] > Description = frp cloud > After = network.target syslog.target > Wants = network.target > > [Service] > # 指定服务的类型为 simple,意味着这个服务会启动一个进程,并假定这个进程不会派生出其他的子进程。 > Type = simple > # 表示该服务的启动时间没有限制,即启动过程可以无限期地等待完成。 > TimeoutStartSec = infinity > # 在执行主服务命令之前,会先执行一个预执行命令,即 sleep 60,这意味着启动前服务会等待 60 秒。 > ExecStartPre = /bin/sleep 60 > # 指定该服务在失败时会自动重启。 > Restart = on-failure > # 如果服务失败,5 秒后重新启动。 > RestartSec = 5s > # 用于启动主进程 > ExecStart = /root/frp/frps -c /root/frp/frps.toml > # 重新加载配置文件,通常是当配置文件内容改变时,执行该命令让服务重新加载新配置。 > ExecReload = /root/frp/frps reload -c /root/frp/frps.toml > # 该指令设置进程可以打开的最大文件数为 1048576。这个值用于增加文件句柄的限制, > # 通常对于网络代理服务比较重要,因为它可能会处理大量的网络连接。 > LimitNOFILE = 1048576 > > [Install] > # 表示该服务应在系统的 multi-user.target 启动级别中启动,通常对应没有图形界面的多用户模式。 > WantedBy = multi-user.target > > ``` 用于测试的指令 > ```shell > systemctl enable frps # 使能 frps 服务 > systemctl start frps # 启动 frps 服务 > systemctl stop frps # 启动 frps 服务 > systemctl restart frps # 如果修改了frps.toml文件,则重启 frps 服务 > systemctl status frps # 显示 frps 服务运行的状态 > ``` ## miniconda配置 ### 1.安装miniconda #### 1.1 配置sd卡 为了减小miniconda对原系统内存的占用,这里将miniconda下载到外部sd卡上 > ```shell > root@topeet:~$ lsblk # 列出系统中所有可用的块设备信息 > NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT > mmcblk0 179:0 0 29.1G 0 disk > ├─mmcblk0p1 179:1 0 4M 0 part > ├─mmcblk0p2 179:2 0 4M 0 part > ├─mmcblk0p3 179:3 0 64M 0 part > ├─mmcblk0p4 179:4 0 64M 0 part > ├─mmcblk0p5 179:5 0 32M 0 part > ├─mmcblk0p6 179:6 0 12G 0 part / > ├─mmcblk0p7 179:7 0 192M 0 part /oem > └─mmcblk0p8 179:8 0 16.8G 0 part /userdata > mmcblk0boot0 179:32 0 4M 1 disk > mmcblk0boot1 179:64 0 4M 1 disk > mmcblk1 179:96 0 29.2G 0 disk > └─mmcblk1p1 179:97 0 29.2G 0 part /mnt/sdcard # 这里我挂接在目录/mnt/sdcard,这列可以联想RT-Thread挂接文件系统的过程,两者有异曲同工的地方 > ``` 格式化sd卡,将其配置为ext文件系统类型,因为这样才能将软件下载到这上面。 > ```shell > root@topeet:~$ cat /etc/fstab > #
> /dev/root / auto rw,noauto 0 1 > proc /proc proc defaults 0 0 > devpts /dev/pts devpts defaults,gid=5,mode=620 0 0 > tmpfs /dev/shm tmpfs mode=0777 0 0 > tmpfs /tmp tmpfs mode=1777 0 0 > tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0 > sysfs /sys sysfs defaults 0 0 > debug /sys/kernel/debug debugfs defaults 0 0 > pstore /sys/fs/pstore pstore defaults 0 0 > PARTLABEL=oem /oem ext2 defaults 0 2 > PARTLABEL=userdata /userdata ext2 defaults 0 2 > /dev/mmcblk1p1 /mnt/sdcard ext4 defaults 0 2 # 这一行为我添加的内容 > ``` #### 1.2 下载安装miniconda 这一步操作和网上关于miniconda配置安装大体一样,没有什么区别。 #### 1.3 安装开发所需的必须包 > ``` shell > root@topeet:~$ conda create -n ml python=3.8 # 创造一个用于机器学习的conda环境,python版本为3.8 > root@topeet:~$ conda activate ml # 激活ml环境,注意下载python包时得注意下载的环境,后续的环境都是 ml 环境 > (ml)root@topeet:~$ conda install pyserial # 用于串口通信的python包 > (ml)root@topeet:~$ pip install pymodbus # 用于modbus通信的python包,注:经过测试,在arcch64环境下,使用conda下载该包时,很多时候都不成功,得用pip指令下载。 > (ml)root@topeet:~$ conda install jupyter # 用于下载jupyter包,编译远程python调试编程 > ``` ### 2.jupyter notebook配置 输入指令`jupyter notebook --generate-config`,得到配置文件`/root/.jupyter/jupyter_notebook_config.py`,并修改文件内容。 ```shell (ml)root@topeet:~$ jupyter notebook --generate-config root@topeet:~$ vim /root/.jupyter/jupyter_notebook_config.py ``` 让后添加如下内容: ```shell c.ServerApp.allow_remote_access = True # 允许远程访问,该配置很重要,不然无法通过内网穿透访问。 c.ServerApp.allow_root = True # 允许root启动jupyter notebook c.ServerApp.ip = '0.0.0.0' # 监听所有ip,该配置很重要,不然无法通过内网穿透访问。 c.ServerApp.notebook_dir = '/mnt/sdcard' # 指定jupyter notebook运行时工作的目录目录 c.ServerApp.open_browser = False # 禁止自动打开浏览器 c.ServerApp.password_required = True # 需要密码 c.ServerApp.password = '密码' # 下一步生成 c.ServerApp.port = 8888 # 指定端口 ``` 配置jupyter notebook的访问密码,执行命令:`jupyter notebook password`,输入密码,再次输入密码,即可完成配置。得到文件`/root/.jupyter/jupyter_server_config.json`,内容如下: > ```shell > (ml)root@topeet:~/.jupyter$ cat jupyter_server_config.json > { > "IdentityProvider": { > "hashed_password": "密码" > } > } > ``` 运行jupyter notebook,可以指定运行ip地址,例如:jupyter notebook --ip=设备的ip地址,该方法适用于局域网访问 > ``` > (ml)root@topeet:~/ jupyter notebook # 或者 jupyter notebook --ip=设备的ip地址 > ``` 此时便可以通过网上的操作进行访问jupyter服务 ## 基于EMQX的MQTT服务器搭建 这里有一个详细的EMQX MQTT服务搭建的教程,大家可安装教程学习。 [基于EMQX搭建自己的MQTT服务器-哔哩哔哩](https://www.bilibili.com/video/BV1d84y1Q71X/?spm_id_from=333.337.search-card.all.click)
1
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
火华兰樱
西南科技大学研究生一枚
文章
1
回答
1
被采纳
0
关注TA
发私信
相关文章
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
YZRD
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部