Dify-3:系统架构
系统架构
概述了 Dify 的系统架构,解释主要组件如何协同工作以提供大语言模型(LLM)应用开发平台。内容涵盖高层架构、部署选项、核心子系统和外部集成。
1. 整体架构
Dify 采用基于微服务的架构,将前端 Web 应用与后端 API 服务分离。系统设计支持可扩展性、可部署性,并能适应多种环境(包括自托管和云部署)。
高层组件概览
架构组成:
- Web 前端:基于 Next.js 的 Web 应用,为开发者提供应用创建界面,为终端用户提供交互界面。
- API 后端:基于 Flask 的 API 服务器,处理前端请求并协调核心子系统。
- 核心子系统:
- 会话系统:管理聊天与补全交互
- RAG 知识系统:处理文档处理、索引与检索
- 工作流系统:支持复杂 AI 工作流创建
- 模型供应系统:集成多 LLM 供应商
- 账户与租户系统:管理用户、工作空间及认证
- 外部集成:
- LLM 供应商(OpenAI、Azure、Anthropic 等)
- 向量数据库(Weaviate、Qdrant、Milvus 等)
- 关系型数据库(PostgreSQL)
- 缓存系统(Redis)
2. 部署架构
Dify 使用 Docker 实现容器化部署,支持灵活环境部署。系统由多个可独立扩展的服务组成。
关键部署组件:
- API 服务:提供 REST API 端点的 Flask 应用(端口 5001,镜像
langgenius/dify-api
)。 - Web 服务:Next.js 前端应用(端口 3000,镜像
langgenius/dify-web
)。 - 工作节点服务:处理异步任务的 Celery 工作节点(如文档处理与索引)。
- 支持服务:
- sandbox(安全代码执行)
- plugin插件守护进程(管理插件)
- SSRF 代理(防御服务端请求伪造攻击)
- 数据库与缓存:
- PostgreSQL(结构化数据)
- Redis(缓存与 Celery 任务队列)
- 向量数据库(可配置:Weaviate、Qdrant 等)
- Nginx:作为 Web 和 API 服务的反向代理。
3. 核心子系统
3.1 API 后端架构
基于 Flask 的模块化设计,通过服务和控制器处理业务逻辑。
关键组件:
- 入口点:
app.py
(主入口)和app_factory.py
(Flask 应用工厂)。 - 控制器层:位于
api/controllers/
,实现 REST API 端点。 - 服务层:位于
api/services/
,封装核心业务逻辑。 - 异步处理:Celery 工作节点处理文档索引等资源密集型操作。
3.2 Web 前端架构
基于 Next.js 和 React 的现代化响应式界面。
关键组件:
- Next.js 应用:位于
web/app/
,支持服务端渲染。 - 组件库:可复用的基础与功能组件。
- 状态管理:使用 Zustand 管理复杂 UI 状态。
- API集成:与后端API进行通信 使用SWR进行数据获取和缓存以及为不同的端点实现API客户端。
3.3 RAG 知识系统
负责文档处理、嵌入存储和检索,支持 LLM 上下文增强。
关键功能:
- 数据集服务:管理文档数据集
- 创建并配置数据集
- 处理文档上传与处理
- 索引运行器:通过ETL管道处理文档
- 提取:从各种文档格式中获取文本
- 转换:分块、清理并准备文本
- 加载:创建嵌入并存储到向量数据库中
- 检索系统:支持多种检索方法
- 使用向量嵌入进行语义搜索
- 关键词搜索
- 全文搜索
- 结合多种方法的混合方法
- 向量存储工厂:抽象向量数据库实现
- 支持多种向量数据库(如Weaviate、Qdrant、Milvus等)
- 为创建和查询向量存储提供统一接口
3.4 模型供应系统
集成多 LLM 供应商并提供统一接口。
关键功能:
- 模型管理器:模型交互的核心接口
- 支持不同的模型类型(大语言模型、嵌入模型、重排模型等)
- 处理模型选择和回退策略
- 供应商管理器:管理供应商配置
- 安全存储API密钥和端点
- 支持系统管理和用户提供的凭证
- 模型类型:
- 大语言模型(LLMs):用于文本生成
- 文本嵌入模型:用于向量表示
- 重排模型:用于提高搜索相关性
- 文本转语音:用于音频生成
- 语音转文本:用于转录
- 供应商集成:
- 支持20多家模型供应商
- 为所有供应商提供标准化接口
- 凭证管理和API密钥轮换
3.5 对话系统
对话系统负责管理用户与大型语言模型(LLM)之间的交互,处理聊天历史记录、消息格式化和上下文管理。
关键功能
- 对话服务:管理对话会话
- 创建和更新对话
- 维护对话状态和元数据
- 消息服务:处理单独的消息
- 处理用户输入
- 格式化模型响应
- 存储消息历史
- 应用运行器:实现不同的应用类型
- Chat:支持多轮对话
- Completion:处理单次交互
- Agent Chat:支持使用工具的代理交互
- Workflow:执行复杂多步骤流程
- 集成点
- 应用配置
- 文本生成的模型集成
- 知识检索的RAG系统
- 代理能力的工具支持
3.6 工作流系统
工作流系统支持创建和执行复杂的AI流程,将LLM交互与工具、分支逻辑和数据转换相结合。
关键组件
- 工作流编辑器
- 基于节点的可视化编辑界面
- 配置节点参数
- 测试和调试工作流
- 工作流服务
- 存储工作流配置
- 管理版本控制与发布
- 工作流运行器
- 遍历工作流图
- 管理执行状态
- 处理错误恢复
- 节点类型
- LLM节点:文本生成
- 工具节点:调用外部工具和插件
- 分支节点:条件逻辑控制
- 循环节点:迭代处理
- 数据转换:数据操作
- 并行节点:并发执行
- HTTP请求节点:外部API调用
4. 存储与数据库
Dify使用多种存储系统来管理不同类型的数据。
4.1 PostgreSQL
存储结构化数据,关键表包括用户、应用、数据集、会话和工作流。
关键组件:
- 数据库配置:
- 可配置的连接参数
- 为提升性能的连接池
- 对pgvector扩展的支持(可选)
- 关键表:
- 用户与账户
- 租户(工作区)
- 应用程序
- 数据集与文档
- 对话与消息
- 工作流和节点
- 提供商配置
4.2 向量数据库
Dify支持多种向量数据库选项,用于存储RAG系统中使用的嵌入。
关键特征:
-
向量工厂抽象:
- 统一接口:为不同向量数据库提供统一接口
- 动态实例化:基于配置实现动态实例化
- 运行时切换:支持运行时切换向量数据库
-
支持的向量数据库:
- Weaviate(默认)
- Qdrant
- PGVector(PostgreSQL 扩展)
- Milvus
- MyScale
- OpenSearch
- 其他 15+ 选项
-
向量数据存储:
- 文本嵌入向量:存储生成的文本嵌入
- 文档元数据:关联文档的元数据信息
- 节点 ID 检索:存储用于检索的节点标识符
- 内容哈希去重:通过内容哈希值实现去重功能
4.3 文件存储
Dify使用一个可配置的存储系统来进行文件上传和文档存储。
主要特性:
-
存储工厂模式:
- 对不同存储后端的抽象
- 统一文件操作接口
- 支持运行时配置
-
支持的存储选项:
- OpenDAL(默认,支持多后端)
- Amazon S3
- Azure Blob Storage
- Google Cloud Storage
- 阿里云OSS
- 腾讯云COS
- 本地文件系统
- 其他多种存储提供商
-
使用场景:
- RAG系统的文档上传
- 用户文件附件存储
- 应用程序资源管理
5. 系统配置
Dify使用了一套全面的配置系统,该系统支持环境变量、配置文件和运行时设置。
关键配置机制
-
配置来源
- 环境变量(Environment Variables)
.env
配置文件- Docker 环境变量
- 命令行参数(Command-line Arguments)
-
配置分类
- 功能配置:控制应用程序特性开关
- 中间件配置:数据库连接、缓存策略、存储设置
- 部署配置:运行时参数(如端口、并发数)
- 安全配置:身份验证、数据加密、访问控制
-
技术实现
- Pydantic 配置类:基于类型注解的配置建模
- 强类型校验:自动验证配置数据类型
- 环境感知加载:根据运行环境动态载入配置
- 默认值机制:提供安全的缺省参数配置
6. 开发与部署流程
介绍Dify的开发和部署工作流程。
工作流:
本地开发 → 测试 → PR 审查 → 合并至主分支 → CI/CD(GitHub Actions) → 构建镜像 → 部署(Docker/K8s)
核心要点:
-
开发流程:
- 使用Docker Compose进行本地开发
- 本地测试运行
- 代码审查制的Pull Request流程
-
CI/CD管道:
- GitHub Actions自动化流程
- 代码风格检查
- 单元测试与集成测试
- Docker镜像构建与推送
-
部署方案:
- Docker Compose部署(推荐方案)
- Kubernetes集群部署
- 手动配置部署
相关文章:
Dify-3:系统架构
系统架构 概述了 Dify 的系统架构,解释主要组件如何协同工作以提供大语言模型(LLM)应用开发平台。内容涵盖高层架构、部署选项、核心子系统和外部集成。 1. 整体架构 Dify 采用基于微服务的架构,将前端 Web 应用与后端 API 服务…...
使用 docker-volume-backup 备份 Docker 卷
docker-volume-backup 是一个用于备份 Docker 卷的工具,在 Windows 10 上使用它,你可以按照以下步骤操作: 1. 确保 Docker 环境已安装并正常运行 在 Windows 10 上,你需要安装 Docker Desktop for Windows。可以从 Docker 官方网…...
分布式与集群:概念、区别与协同
分布式与集群:概念、区别与协同 在分布式系统与云计算领域,分布式(Distributed)和集群(Cluster)是两个高频出现的核心概念。它们常被混淆,但本质上属于不同维度的设计思想。本文将从定义、分类、实际应用及协同关系四个层面,结合 Dubbo、Git、Hadoop 等典型案例,系统…...
Matlab简单优化模型应用
一、目的 掌握优化模型的建立方法,能够借助Matlab工具对建立的优化模型进行求解。 二、内容与设计思想 1、分析:某石油设备制造厂每月需要100套压缩机用于维护和运营石油开采设备。这些零件由工厂内部生产,每月生产500套,每批压缩机的生产…...
板凳-------Mysql cookbook学习 (四)
综合对比与选择建议 维度 PHP Java Python Ruby Perl 学习门槛 低(适合新手) 高(语法复杂) 低(语法简洁) 中(需理解 Rails 理念) 中(特殊语法…...
C语言学习笔记之条件编译
编译器根据条件的真假决定是否编译相关的代码 常见的条件编译有两种方法: 一、根据宏是否定义,其语法如下: #ifdef <macro> …… #else …… #endif例子: #include <stdio.h>//def _DEBUG_ //定义_DEBUG_ int main(…...
网络安全-等级保护(等保) 2-7 GB/T 25058—2019 《信息安全技术 网络安全等级保护实施指南》-2019-08-30发布【现行】
################################################################################ GB/T 22239-2019 《信息安全技术 网络安全等级保护基础要求》包含安全物理环境、安全通信网络、安全区域边界、安全计算环境、安全管理中心、安全管理制度、安全管理机构、安全管理人员、安…...
Android设备 显示充电速度流程
整体逻辑:设备充电速度的判断 系统通过读取充电器的最大电流(Current)与最大电压(Voltage),计算最大充电功率(Wattage),以此判断当前是慢充、普通充还是快充:…...
megatron——EP并行
1、专家并行(Expert Parallelism, EP)适用场景 定义: 专家并行是指在混合专家模型(Mixture of Experts, MoE)中,将不同的专家(即子模型)分配到不同的设备上,每个设备只负…...
如何轻松删除电脑上的文件(无法恢复文件)
如果您想清理电脑上的存储空间,您可能需要轻松删除电脑上的文件以释放空间。此外,如果您打算出售或捐赠您的旧电脑,永久删除您的文件至关重要,这可以保护您的隐私。无论如何,您需要一种有效且可靠的方法来从计算机中删…...
搭建一个永久免费的博客
搭建永久免费的博客(1)基本介绍 HugoStackGitHub GitHub GitHub GitHub Build and ship software on a single, collaborative platform GitHub 下载安装git Git - Downloads Edge插件authenticator 2fa client Settings->Password and auth…...
计算机底层的多级缓存以及缓存带来的数据覆盖问题
没有多级缓存的情况 有多级缓存的情况 缓存带来的操作覆盖问题 锁总线带来的消耗太大了。...
ICRA 2024 PROGrasp——实用的人机交互物体抓取系统
在机器人抓取任务中,自然语言理解能够显著改善人机交互体验,尤其是在需要机器人根据人类指令进行环境交互的场景中。然而,现有的抓取系统往往要求用户明确指定目标对象的类别,限制了交互的自然性和灵活性。为了解决这一问题&#…...
【Vue篇】潮汐中的生命周期观测站
目录 引言 一、Vue生命周期 二、Vue生命周期钩子 三、、生命周期钩子实战 1.在created中发送数据 2.在mounted中获取焦点 四、综合案例-小黑记账清单 1.需求图示: 2.需求分析 3.思路分析 4.代码 5. 总结 引言 💬 欢迎讨论:如果…...
【OpenCV基础2】图像运算、水印、加密、摄像头
目录 一、图像运算 1、利用“” 2、cv2.add() 3、掩膜异或 二、摄像头 1、读取、视频流保存 2、人脸识别 三、数字水印 1、水印嵌入 2、水印提取 四、图像加密 一、图像运算 1、利用“” import cv2 利用""方法将两幅图像相加img1 cv2.imread(project…...
第 25 届中国全电展即将启幕,构建闭环能源生态系统推动全球能源转型
由 AI 算力爆发引发的能源消耗剧增,与碳中和目标、能源安全需求及电网转型压力形成叠加效应,使全球能源体系面临前所未有的挑战。在此背景下,第 25 届中国全电展(EPOWER EXPO)将于 2025 年 6 月 11 日至 13 日在上海新…...
vue3:十三、分类管理-表格--编辑、新增、详情、刷新
一、效果 实现封装表格的新增、编辑、详情查看,表格刷新功能 实现表格组件中表单的封装 1、新增 如下图,新增页面显示空白的下拉,文本框,文本域,并实现提交功能 2、编辑 如下图,点击行数据,可将行数据展示到编辑弹窗,并实现提交功能 3、详情 如下图,点击行数据,…...
一周快讯 | 银发文娱旅游一周新鲜事
银发文娱旅游一周新鲜事 一周银发文娱旅游产业资讯速览 星期一 5月19日 1 企业动态 同方全球人寿等共建一站式康养服务生态 东秀星健康养老产业等合作赋能康养产业,开发“旅居养老”项目 欧莱雅等合作将推出银发族形象管理课程 2 行业风向 总投资10亿&a…...
C++寻位映射的奇幻密码:哈希
文章目录 1.什么是哈希?2.哈希的常见实现方法2.1 直接定址法2.2 除留余数法 3.哈希冲突4.哈希冲突的解决4.1 闭散列4.1.1 线性探测4.1.1.1 哈希表的基本数据结构4.1.1.2 哈希表的key转换4.1.1.3 哈希表的插入4.1.1.4 哈希表的查找4.1.1.5 哈希表的删除 4.1.2 二次探…...
Spring Boot 集成 druid,实现 SQL 监控
文章目录 背景Druid 简介监控统计 StateFilter其它 Filter详细步骤第 1 步:添加依赖第 2 步:添加数据源配置【通用部分】第 3 步:添加监控配置【关键部分】第 3 步:访问 druid 页面参考背景 😂 在 Code Review 过程中发现,经常有开发会忘记给表加索引。这就导致,生产运…...
从零开始学习three.js(21):一文详解three.js中的矩阵Matrix和向量Vector
一、三维世界的数学基石 在Three.js的三维世界里,所有视觉效果的实现都建立在严密的数学基础之上。其中向量(Vector) 和矩阵(Matrix) 是最核心的数学工具,它们就像构建数字宇宙的原子与分子,支…...
无需笔墨之功,锦绣SQL自成桥——QuickAPI古法炼数据秘术
楔子:锦绣SQL,化身为桥 昔有匠人苦修代码之术,欲通数据库与前朝之界,然笔耕不辍,耗时弥久。今有秘器名曰QuickAPI,但凭三寸SQL文,顷刻间筑起数据虹桥。纵使不谙代码之道者,亦可挥毫…...
模块与包的导入
一、导入官方库 我们复盘下学习python的逻辑,所谓学习python就是学习python常见的基础语法学习你所处理任务需要用到的第三方库 类别典型库解决的问题学习门槛基础工具os、sys、json操作系统交互、序列化数据(如读写 JSON 文件)低科学计算n…...
智能文档抽取技术可以应用于哪些场景?
近日,合合信息编撰并发布了《2025智能文档技术与应用白皮书》。该书中不仅深度解析技术原理与创新突破,更聚焦金融、法律、制造等行业的典型场景,结合典型案例揭示技术如何赋能合同智能审查、票据自动化处理、知识库构建等业务场景࿰…...
实践促成长:成都理工大学华清远见成都中心实训
2025年5月, 华清远见成都中心迎来了成都理工大学大数据管理与应用专业23级以及电子商务22级的同学们,以实践为导向、以提升能力为目标的校企合作实训活动在此展开,为同学们开启了一段充满挑战与收获的学习之旅。 华清远见成都中心为两个专业的同学们量身…...
北京本地 SEO 推广:从技术成本到效果转化的深度拆解
在数字化营销的浪潮中,北京本地企业对 SEO 推广的需求日益增长。然而,SEO 推广服务的价格参差不齐,效果也难以预估。本文将从技术实现、成本构成等角度,深入剖析北京本地 SEO 推广服务的价格与效果,baidu0048为企业选择…...
JavaScript 中的五种继承方式进行深入对比
文章目录 前言JavaScript 五种继承方式对比原型链继承构造函数继承组合继承寄生组合继承ES6 class extends 继承五种继承方式对比表前言 对 JavaScript 中的五种继承方式进行深入对比:原型链继承、构造函数继承、组合继承、寄生组合继承、以及 ES6 的 class extends。 内容将…...
CAU数据库class2 SQL语言
SQL分类 DDL 数据库操作 查询数据库: 查询所有数据库 show databases; 查询名字里有t的数据库 show databases like %t%;查询名字以t为结尾的数据库 show databases like %t;查看数据库name是怎么创建出来的 show create database name;创建数据库 创建…...
软考教材重点内容 信息安全工程师 25章 移动安全 26章 大数据安全
第 25 章移动应用安全需求分析与安全保护工程 移动互联网技术基本组成如图 25-1 所示,包括三个部分:一是移动应用,简称 App;二是通信网络,包括无线网络、移动通信网络及互联网;三是应用服务端,由相关的服务器构成,负责…...
有关Groutine无限创建的分析
有关Groutine无限创建的分析 文章目录 有关Groutine无限创建的分析从操作系统分析进程、线程、协程的区别进程内存线程内存执行单元 cpu切换成本协程切换成本线程切换成本内存占用 Go程是否可以无限创建不控制go程创建引发的问题简单方式控制go程创建channel有buffersync.WaitG…...
FANUC发那科焊接机器人智能气阀
在现代工业生产中,焊接技术的发展日新月异,其中发那科(FANUC)焊接机器人以其高精度和稳定性受到了广泛应用。而智能气阀作为发那科焊接机器人的重要组成部分,在提升焊接效率和质量方面发挥着不可忽视的作用。 工作原理…...
软件架构风格系列(7):闭环控制架构
文章目录 引言一、闭环控制架构:让系统学会“自我调节”的魔法(一)从温控系统理解核心原理(二)核心组件解析 二、架构设计图:闭环控制的“四大核心环节”三、Java实战:手写一个智能温控系统&…...
Java合并两个列表到目标列表,并且进行排序
可以通过使用addAll()方法将两个列表合并到目标列表中。以下是实现代码: java 复制 下载 List<LedgerRecord> rkRecordList warehouseMapper.selectLedgerRkRecordByMaterialNo(materialNo); List<LedgerRecord> ckRecordList warehouseMapper.se…...
关于在Unity项目中使用Post Processing插件打包到web端出现的问题
关于在Unity项目中使用Post Processing插件打包到web端出现的问题 解决方法:是不激活摄像机上的Post Processing有关组件,拉低场景中的Directional Light平行光的强度进行web端打包。 (烘焙灯光时是可以激活。) web端支持这个Pos…...
智象科技:自动化模块驱动IT运维效能升级
智象自动化模块概览 智象科技的一站式IT运维平台中的自动化模块,是企业数字化转型的强大助推器。该模块集成了IT运维作业的流程编排、脚本编排,各类运维资源配置项目和脚本的合规巡检,以及基础信息、监控指标的巡检配置等自动化管理ÿ…...
GPU状态监控
GPU 状态监控 对比: GPU项目名称项目名称单机多 GPUGPU状态监控以时间为横轴展示GPU被占用的动态过程,但不显示具体时间单机多 GPUGPU 实时监控服务多卡GPU统一展示,数据简洁清晰多机多 GPU服务器集群监控面板可以同时监控多个服务器上的GPU…...
VS2017编译openssl3.0.8
openssl是一个功能丰富且自包含的开源安全工具箱。它提供的主要功能有:SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、P…...
构建高效移动端网页调试流程:以 WebDebugX 为核心的工具、技巧与实战经验
现代前端开发早已不仅仅局限于桌面浏览器。随着 Hybrid 应用、小程序、移动 Web 的广泛应用,开发者日常面临的一个关键挑战是:如何在移动设备上快速定位并解决问题? 这不再是“打开 DevTools 查查 Console”的问题,而是一个关于设…...
前缀和——和为K的子数组
作者感觉本题稍稍有点难度,看了题解也思考了有一会TWT 显然,暴力我们是不可取的,但这里我们可以采取一种新的遍历数组形式,从后向前,也就是以i位置为结尾的所有子数组,这个子数组只统计i位置之前的。 然后…...
web常见的攻击方式
web攻击(webAttack)是针对用户上网行为或网站服务器等设备进行攻击的行为,如植入恶意代码、修改网站权限、获取网站用户隐私等等,即使是代码在的很小的bug也有可能导致隐私信息被泄漏,站点安全就是保护站点不受未授权的…...
为什么wifi有信号却连接不上?
WiFi有信号,无法连接WiFi网络的可能原因及解决方法: 1.长时间使用路由器,路由器可能会出现假死现象。重启无线路由器即可。 2.认证类型不合适。尝试更改路由器的认证类型,选择安全的 “WPA2-PSK” 类型模式要好,下面…...
CVE-2015-4553 Dedecms远程写文件
CVE-2015-4553 Dedecms远程写文件 首页 访问 http://192.168.1.3/install/index.php?step11&insLockfilea&s_langa&install_demo_name…/data/admin/config_update.php这句话会跳转到http://updatenew.dedecms.com/base-v57/dedecms/demodata.a.txt中读取内容写入…...
如何评估开源商城小程序源码的基础防护能力?
在电商行业快速发展的背景下,开源商城已经为更多企业或者开发者的首选方案,不过并不是所有的开源商城源码都能让人放心使用,今天就带大家一起了解下如何评估开源商城小程序源码的基础防护能力,帮助大家更好地筛选安全性高的商城源…...
音视频之H.265/HEVC率失真优化
H.265/HEVC系列文章: 1、音视频之H.265/HEVC编码框架及编码视频格式 2、音视频之H.265码流分析及解析 3、音视频之H.265/HEVC预测编码 4、音视频之H.265/HEVC变换编码 5、音视频之H.265/HEVC量化 6、音视频之H.265/HEVC环路后处理 7、音视频之H.265/HEVC熵编…...
linux安装git
[rootMiWiFi-RC06-srv rpm-gpg]# yum install git 已加载插件:fastestmirror Repository base is listed more than once in the configuration Repository updates is listed more than once in the configuration Repository extras is listed more than once in …...
Node 服务监控及通过钉钉推送告警提醒
背景:需要监控某个服务是否在线,运行是否正常; 实现步骤: 1、需要在项目中内置一个可以监控的健康状态接口,详情可参考之前的文章:使用 PM2 启动node服务,并添加监控接口_node pm2-CSDN博客 2、再添加另外一个进程来监控这个接口是否正常在线,然后通过钉钉推送异常消…...
健康生活指南:从日常细节开启养生之旅
在数字化与快节奏交织的时代,健康危机常潜伏于日常的点滴疏忽中。想要保持良好的身体状态,不妨从这些容易被忽视的生活细节入手,开启科学养生之路。 长期伏案工作和沉迷电子设备,让颈椎与腰椎承受巨大压力。调整办公环境&#…...
Node-Red通过Profinet转ModbusTCP采集西门子PLC数据配置案例
一、内容简介 本篇内容主要介绍Node-Red通过node-red-contrib-modbus插件与ModbusTCP设备进行通讯,这里Profinet转ModbusTCP网关作为从站设备,Node-Red作为主站分别从0地址开始读取10个线圈状态和10个保持寄存器,分别用Modbus-Read、Modbus-…...
# YOLOv4:目标检测的全新突破
YOLOv4:目标检测的全新突破 在目标检测领域,YOLO(You Only Look Once)系列算法一直以其高效的检测速度和出色的性能受到广泛关注。从最初的 YOLOv1 到如今的 YOLOv4,这一系列算法不断进化,为实时目标检测和…...
计算机视觉设计开发工程师学习路线
以下是一条系统化的计算机视觉(CV)学习路线,从基础到进阶,涵盖理论、工具和实践,适合逐步深入,有需要者记得点赞收藏哦: 相关学习:python深度学习,python代码定制 python…...