基于STM32F103C8T6的AD采集与电机调速Proteus仿真实战指南

用Proteus仿真STM32温控风扇:从传感器读取到PWM电机控制的完整流程 本文详细介绍了使用Proteus与Keil联调开发STM32温控风扇系统的完整流程,涵盖温度传感器读取、PWM电机控制等核心功能实现。通过硬件连接示意图、代码示例和调试技巧,帮助开发者快速掌握温控系统的设计与仿真技术,提升嵌入式开发效率。 阅读详情

1. 项目概述与硬件选型

做嵌入式课设的时候,AD采集和电机调速真的是经典组合了。我自己用STM32F103C8T6这块板子做过好几次类似的项目,性价比真的高,资源够用又不会太浪费。Proteus仿真环境对学生特别友好,不用买实物硬件就能验证方案,特别适合课程设计和毕业设计。

STM32F103C8T6是ST的经典款,72MHz主频的Cortex-M3内核,64KB闪存,20KB RAM,完全够处理AD转换和电机控制任务。最重要的是它有2个12位的ADC,最多16个输入通道,采样速率最高1MHz,做双通道AD采集绰绰有余。电机驱动我用的是L298N,这模块驱动能力够强,能同时带两个直流电机,正反转控制也简单。

OLED显示屏我选了0.96寸的SSD1306,I2C接口的,接线简单不占IO口。显示个电压值、电机状态什么的完全够用。滑动变阻器就是普通的10kΩ可调电阻,用来模拟电压输入。

提示:STM32F103C8T6和R6系列引脚兼容,如果你的老师要求用R6,直接在Keil里改个设备型号就行,代码都不用动。

2. Proteus原理图设计与实战技巧

画原理图这块,新手最容易卡在找元件和接线上了。我刚开始用Proteus的时候,光是找输入输出端子就找了半天。

2.1 核心元件添加与连接

打开Proteus,点击左侧的"P"按钮进入元件库。STM32F103C8T6直接搜"STM32F103C8",别输全称反而找不到。L298N搜"L298",OLED搜"OLED",滑动变阻器搜"POT-HG"。

接线的时候注意,STM32的PA0和PA1用作ADC输入,接两个滑动变阻器的中间引脚。L298N的输入IN1-IN4接STM32的PA4-PA7,这样用4个IO口就能控制两个电机的正反转。OLED的SDA和SCL分别接PB7和PB6,我用的是I2C1。

2.2 常见问题解决方案

AD采集有问题是我踩过最大的坑。一开始电压读数老是乱跳,查了半天才发现是VBAT引脚没接。STM32的VBAT是后备供电引脚,不接的话ADC参考电压会不稳定。简单粗暴的解决方法就是直接把它和VDD连起来。

找输入输出端子有个小技巧:点击左侧工具栏的"Terminals Mode",选"INPUT"或"OUTPUT"就能放置了。放好后双击可以修改标号,我一般直接用引脚名,比如"PA0"、"PA1"这样,不容易乱。

电压探针在"Probe Mode"里,选"VOLTAGE"就能放置。把它放到PA0引脚上,运行时就能实时显示电压值了,调试特别方便。

示波器在"Virtual Instruments"里,图标是个小 oscilloscope。有时候不小心关了示波器窗口,别慌,点菜单的"Debug" -> "Reset Debug Popup Windows",选"Yes"就回来了。

3. 软件编程与代码解析

代码结构我分了几个模块,这样清晰好维护。主程序负责调度,AD采集、PWM生成、电机控制都单独写成模块。

3.1 主程序逻辑设计

主程序里我先初始化各个外设,然后进入循环读取两个ADC的值,根据大小关系决定电机转向和转速。中间值2047对应3.3V/2=1.65V,这样就能根据电位器位置控制正反转了。

#include "stm32f10x.h"
#include "Delay.h"
#include "OLED.h"
#include "AD.h"
#include "PWM.h"
#include "MOTOR.h"

uint16_t ADValueA, ADValueB;

int main(void)
{
    OLED_Init();
    AD_Init();
    PWM_Init();
    MOTOR_Init();
    
    OLED_ShowString(1, 1, "ADValue:");
    OLED_ShowString(2, 1, "State:");
    
    while(1)
    {
        ADValueA = AD_GetValue(ADC_Channel_0);
        ADValueB = AD_GetValue(ADC_Channel_1);
        Delay_ms(50);
        
        if(ADValueA > ADValueB)
        {
            // 电机A正转或反转逻辑
            if(ADValueA > 2047){
                GPIO_ResetBits(GPIOA, GPIO_Pin_4);
                move(1, 1, (ADValueA-2047)*100/2048);
            }
            // 其他状态处理...
        }
        else
        {
            // 电机B控制逻辑
        }
    }
}

3.2 ADC采集模块实现

ADC配置要注意时钟分频和采样时间。我设的是6分频,因为APB2时钟是72MHz,6分频后ADC时钟是12MHz,在允许范围内。采样时间设为55.5个周期,这样转换时间足够准确。

void AD_Init(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA, ENABLE);
    RCC_ADCCLKConfig(RCC_PCLK2_Div6);
    
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    
    ADC_InitTypeDef ADC_InitStructure;
    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
    ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
    ADC_InitStructure.ADC_ScanConvMode = DISABLE;
    ADC_InitStructure.ADC_NbrOfChannel = 1;
    ADC_Init(ADC1, &ADC_InitStructure);
    
    ADC_Cmd(ADC1, ENABLE);
    ADC_ResetCalibration(ADC1);
    while(ADC_GetResetCalibrationStatus(ADC1));
    ADC_StartCalibration(ADC1);
    while(ADC_GetCalibrationStatus(ADC1));
}

uint16_t AD_GetValue(uint8_t ADC_Channel)
{
    ADC_RegularChannelConfig(ADC1, ADC_Channel, 1, ADC_SampleTime_55Cycles5);
    ADC_SoftwareStartConvCmd(ADC1, ENABLE);
    while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
    return ADC_GetConversionValue(ADC1);
}

3.3 PWM生成与电机控制

PWM用TIM2生成,频率设为2kHz,这个频率对直流电机来说正合适,既听不到噪音控制效果也好。ARR设为100-1,这样调速分辨率是1%,够用了。

void PWM_Init(void)
{
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
    
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    
    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
    TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
    TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInitStructure.TIM_Period = 100 - 1;
    TIM_TimeBaseInitStructure.TIM_Prescaler = 36 - 1;
    TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);
    
    TIM_OCInitTypeDef TIM_OCInitStructure;
    TIM_OCStructInit(&TIM_OCInitStructure);
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    TIM_OCInitStructure.TIM_Pulse = 0;
    
    TIM_OC3Init(TIM2, &TIM_OCInitStructure);
    TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);
    TIM_OC4Init(TIM2, &TIM_OCInitStructure);
    TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable);
    
    TIM_ARRPreloadConfig(TIM2, ENABLE);
    TIM_Cmd(TIM2, ENABLE);
}

电机控制函数里,我用select参数选择电机,FX参数控制方向,PWM参数控制速度。L298N的IN1和IN2控制一个电机的方向,ENABLE脚接PWM信号控制速度。

void move(uint8_t select, uint8_t FX, uint16_t PWM)
{
    if(select == 1)  // 电机A
    {
        if(FX == 1)  // 正转
        {
            GPIO_ResetBits(GPIOA, GPIO_Pin_4);
            GPIO_SetBits(GPIOA, GPIO_Pin_5);
            PWM_SetCompare3(PWM);
        }
        else if(FX == 2)  // 反转
        {
            GPIO_SetBits(GPIOA, GPIO_Pin_4);
            GPIO_ResetBits(GPIOA, GPIO_Pin_5);
            PWM_SetCompare3(PWM);
        }
    }
    // 电机B控制类似...
}

4. 调试技巧与性能优化

仿真调试的时候,有几个小技巧能省不少时间。首先是ADC读数校准,最好在程序开始时连续读几次丢弃掉,因为前几次读数可能不太准。

PWM频率选择很重要,我用2kHz是因为频率太低电机会有噪音,太高了MOS管开关损耗又大。如果控制的是小型直流电机,1-5kHz都是不错的选择。

注意:Proteus仿真速度比实物慢很多,特别是开了示波器之后。如果仿真卡顿,可以暂时关闭示波器,需要的时候再打开。

电源去耦很重要,虽然在仿真里不太明显,但实际做板子时每个芯片的VCC和GND之间都要加0.1uF的瓷片电容。STM32的VDDA和VSSA也要单独加电容,这对ADC精度影响很大。

如果发现电机干扰ADC读数,可以在软件里加个滤波算法。简单的移动平均滤波就很有效,取10次平均值就能让读数稳定很多。

#define SAMPLE_COUNT 10

uint16_t AD_GetFilteredValue(uint8_t ADC_Channel)
{
    uint32_t sum = 0;
    for(uint8_t i=0; i<SAMPLE_COUNT; i++)
    {
        sum += AD_GetValue(ADC_Channel);
        Delay_ms(1);
    }
    return sum / SAMPLE_COUNT;
}

5. 常见问题与解决方案

做这个项目最容易遇到的就是电机干扰问题。表现在仿真里就是ADC读数跳变,电机转动时读数不准。除了加滤波算法外,还可以在硬件上做好隔离。

L298N的供电最好和STM32分开,如果用同一个电源,电机启动时的电流波动会影响ADC参考电压。在Proteus里可以给电机驱动部分单独加个电源,实际做板子时也可以用光耦或者磁耦隔离。

另一个常见问题是PWM输出没反应。先检查时钟配置对不对,TIM2是APB1上的,时钟频率是36MHz。再检查GPIO是否配置为复用推挽输出,普通推挽输出是产生不了PWM的。

OLED显示不正常的话,检查I2C地址对不对。0.96寸OLED的地址通常是0x78或0x7A,用0x78的时候要多。如果显示乱码,可能是初始化序列没写对,江科大的库我用过挺稳的。

ADC读数始终为0的话,先检查VBAT接了吗,然后看看GPIO模式是不是设成了模拟输入(AIN)。如果用库函数开发,还要记得开启ADC和GPIO的时钟,这个很容易忘。

最后提醒一下,Proteus仿真和实物还是有区别的。仿真能跑通不代表实物就一定行,特别是电机这类大电流负载,实际做板子时一定要留足余量,电源线要够粗,地线要完整。

【信息科学与工程学】【控制科学】第十二篇 微型计算机控制技术01 更精确的经典模型:I1在第5周期WB结束,I2最早可在第6周期进入EX,但I2在ID阶段就需要R1,因此I2的ID需在第6周期,而I1的WB在第5周期,所以I2的ID可以紧接在第6周期,但中间仍有一个stall(因为I1的EX结果要等到MEM之后才能转发给ID?有优先级继承后,Task_L被提升优先级,不会被Task_M抢占,阻塞时间缩短为Task_L剩余执行时间(9ms),仍可能超过10ms,但可通过调整任务周期或使用中断处理缓解。电感L=10μH,输出电容C=100μF,ESR=5mΩ。 阅读详情

相关推荐

基于51单片机的智能雨刮控制系统:雨量自适应+多模式手动调节+四位数码管实时状态显示

用STC89C52或类似51单片机搭建的雨刮控制硬件系统,通过模拟/数字雨量传感器(兼容FC-37、YL-69等常见模块)采集玻璃表面雨水信号,自动切换间歇、低速、中速、高速四种工作模式——雨量越强,刮刷越频繁;无雨时停止动作。同时保留完整人工干预能力:点动触发、三档连续调速(慢/中/快)、可调间隔时间的间歇模式,并用共阴极四位数码管实时显示当前模式编号(如‘0’表示停机,‘1’为点动,‘2-4’对应三档速度,‘5’为间歇)及雨量等级(0-9)。配套提供Proteus 8.6可运行仿真工程(含.DSN原理图

swift5iosmith的博客 180

从零到一:STM32F103C8T6的AD采集与电机调速仿真实战避坑指南

本文详细介绍了STM32F103C8T6在Proteus仿真环境中实现AD采集与电机调速的完整流程和避坑指南。重点解析了硬件电路设计要点、软件架构配置、常见问题解决方案,特别是VBAT电源连接等易错细节,帮助开发者快速掌握嵌入式系统仿真的核心技术。

palm99的专栏 753

基于STM32的智能鱼缸水质监控系统:从传感器到PID控制全解析

嵌入式系统是物联网和智能硬件的核心基础,它通过微控制器(MCU)作为大脑,连接传感器与执行器,实现对物理世界的感知与控制。其工作原理在于将模拟信号数字化,并依据预设逻辑或算法做出决策,驱动执行机构动作。这项技术的核心价值在于将复杂的人工监控与操作自动化、精准化,极大地提升了系统的可靠性与效率。在环境监控、智能家居、工业自动化等场景中,嵌入式系统发挥着至关重要的作用。本文聚焦于一个典型的嵌入式应用实例——智能鱼缸系统,深入探讨如何利用**STM32**单片机,结合**DS18B20**水温传感器、PH传感器等

weixin_34216614的博客 227

嵌入式课设 基于stm32f103c8t6,AD采集+电机调速protues仿真

AD_Init();PWM_Init();Key_Init();

YDXBJJH的博客 1211

AI搜索优化(GEO)实战指南:抢占智能对话流量入口

AI SEO,是针对生成式AI平台(如DeepSeek、豆包、Kimi等)的优化策略,旨在通过适配AI算法对内容的理解和引用逻辑,提升品牌在AI生成答案中的可见性与权威性,从而在对话式搜索场景中抢占流量入口。:强化内容经验性(Experience)、专业性(Expertise)、权威性(Authoritativeness)、可信度(Trustworthiness)内容需避免夸大描述,提供可验证的细节(如数据、用户评价)。

Baixue5209的博客 6789

射频收发机(RF Transceiver)

2,既然原来外差的思路是把声音频率的信号,通过混频搬移到高频电磁波频率,那对高频率信号放大的时候,是不是也可以先在比较低的射频频率进行放大,然后再通过频率搬移的方式,将放大后的信号搬移到高频率呢?频率搬移过程中,中间预先设定的固定射频频率被称为“中频”(中间频率,IF,Intermediate Frequency),由于这个频率超出了声音可听的范围,是“超声波”(supersonic),所以被命名为“超外差”(Super-Heterodyne)。混频后的信号在0频率附近,可能会发生DC偏移。

2301_77317229的博客 1123

【proteus仿真】基于 STM32 的智能调速风扇设计

本文基于 STM32F103C8T6 单片机设计一款智能调速风扇,融合人体红外检测、DS18B20 温度采集、L298N 电机驱动与 OLED 显示。系统支持自动 / 手动双模式:自动模式下通过 PCF8591 采集红外信号判断是否有人,结合环境温度自适应输出 PWM 调节风扇转速,无人时自动停机节能;手动模式下通过按键实现启停与档位加减。文中详细介绍硬件方案、Proteus 仿真电路、软件逻辑与关键踩坑记录,附完整工程源码,适合单片机课程设计与毕设参考。

m0_74821307的博客 406

时钟MUX电路结构的时序约束方法分析

一、最简单的设置 对于时钟MUX而言,其output_pin上的时钟在任一时刻一定唯一。可以使用如下命令: set_clock_exclusivity -output output_pin [-type mux | user_defined] ...

Jackiezhang1993的博客 1万+

基于STM32与Proteus的智能窗帘仿真:从光敏采集到L298电机驱动的全流程解析

本文详细解析了基于STM32与Proteus的智能窗帘仿真系统,从光敏采集到L298电机驱动的全流程设计。通过光敏电阻感知环境光线,STM32进行逻辑判断,L298驱动电机实现窗帘自动开合,展示了完整的硬件电路设计与Proteus仿真实现。文章特别强调了ADC配置、电机控制逻辑及系统调试技巧,为嵌入式开发者提供实用参考。

weixin_30746067的博客 201

分位数映射数据后处理-Quantile Mapping后处理 (R语言)

统计后处理器基本上是统计模型,将观察到的关注变量与从气象或水文模型的直接模型输出(DMO)导出的适当预测变量相关联。统计后处理的重要性早已在气象预报中得到认可。早期的工作包括完善的预测(perfect prognosis),模型输出统计(MOS)和模拟方法(analog method)等模型。 近年来,已经提出了许多其他后处理方法,包括秩直方图校准(rank histogram calibrati...

水滴石穿,绳锯木断 1万+

从string一词感受从字母象形到语义生成的底层逻辑

从词源上看,个人认为,soft一词的含义主要来自于“柔软水滑或柔软光滑”这样的含义,是从这样的含义中逐渐窄化,最终主要用来指“柔软”之意,而光滑、水滑这样的含义或语义形象最终被淡化,所以,soft如果符合首字母象形原则,那么它主要的来源形象,应当是【水】,也就是说,soft一词和smooth(a.光滑的)、ski(滑雪)/skate(滑冰)、slip(滑倒)/slippers(拖鞋)、slide(滑动)是相通的,并最终和sea(海)、sweat(汗/汗水)这一类和水一直相关的单词也相通。

nshkfhwr的博客 1271

从VBAT供电缺失到系统稳定:嵌入式仿真中那些容易被忽略的硬件细节

本文探讨嵌入式仿真中常被忽视的硬件细节,重点分析VBAT供电缺失对系统稳定性的影响。以STM32F103C8T6为例,详解电源管理、信号完整性和ADC采集等关键问题,提供Proteus仿真优化策略和实战解决方案,确保从仿真到实物的平滑过渡。

banana的博客 324

区块链入门:用账本、乐高和三台旧电脑讲懂分布式账本

区块链是一种去中心化的分布式账本技术,其核心原理是通过密码学哈希、共识机制和链式结构实现数据不可篡改与多方共同验证。它不依赖单一中心,而是将交易记录同步复制到多个节点,依靠数学规则而非人工信任达成一致,从而在数字世界构建可验证的信用基础设施。这种‘集体见证’模式显著提升了系统抗单点故障与人为干预的能力,广泛应用于供应链溯源、数字身份、教育管理及公益透明等需强信任保障的场景。本文以账本类比、乐高拆解和Ganache实操为线索,面向零基础读者通俗解析哈希值、挖矿与智能合约等关键概念。

weixin_30517215的博客 276

【STM32】 ADC 完全指南:从模拟信号采样量化到五大架构原理

本文系统介绍ADC核心概念与五大主流架构。模拟信号具时间与幅值连续性,需经采样(满足奈奎斯特准则防混叠)、量化(引入±1/2LSB误差,SNR≈6.02N+1.76dB)、编码三步转为数字信号。重点解析Flash(并行高速但受限于比较器数量)、SAR(逐次逼近,低功耗适合MCU如STM32)、双积分(高精度抗工频,用于万用表)、流水线(高速吞吐)及Σ-Δ(高分辨率,靠过采样与噪声整形)五类架构原理、优缺点与应用场景。强调分辨率≠精度,选型本质是速度、精度、功耗与面积的权衡。

专注后端与底层技术,分享实战干货与学习笔记,梦想进入字节跳动,步履不停,热爱不止。 519

leaflet 综合教程170+ 【目录 】(已包含162篇文章)

vue+leaflet系列教程旨在为开发者提供简单快捷的,。在每一个示例中,解释相应的API知识点,做到。注意本示例目录中的内容可能加载是vue+openlayers的示例, 本目录是要加载vue+leaflet的示例,只是内容少,逐渐更新中。

大剑师兰特的GIS世界 1万+

嵌入式Zephyr RTOS面试题及参考答案

在Zephyr中,为自定义外设编写Devicetree绑定(Bindings)有助于内核理解设备树中自定义外设节点的含义和属性。首先,需要创建一个.yaml格式的绑定文件,通常存放在目录下对应的子目录中,文件名应能反映外设的类型和功能。绑定文件的开头要定义基本信息,包括字段,用于简要描述外设的功能和用途;compatible字段,它是一个字符串列表,用于匹配设备树中自定义外设节点的compatible属性,设备树节点和绑定文件通过这个字段关联起来。接下来,要定义外设节点的属性。使用properties。

大模型大数据攻城狮的专栏 988

[学习笔记]超越超级大循环与原生RTOS:事件驱动架构如何改变嵌入式固件的可扩展性

RTC:事件处理器一旦开始,全部状态迁移、进出动作、输出事件必须全部执行完毕才返回;同一个组件,当前处理没结束,不会开始下一条事件。这不是架构给状态机额外施加的限制,这是UML状态图等全部状态机形式化本身固有的语义要求。如果迁移中途可以被打断,状态机会停留在未定义的中间状态。RTC保证两次事件之间,状态机永远处于明确定义的合法状态,便于分析与测试。

MiKiJT的博客 228

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

嵌入式:2.STM32底层基础(存储、寄存器、时钟、总线、GPIO、寄存器点灯)

存储系统用来存放程序、数据、设备状态,核心三大作用:存放程序代码、保存运行时数据(全局、局部、栈、堆)、数据持久化(比如W25Q64 Flash,可以搭配文件系统)。

2401_86731574的博客 375

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

基于STM32的智能浇花系统

本文设计基于STM32F103C8T6的智能浇花系统,集成DHT11、YL-69、MQ-135、GL5528四类传感器,实现温湿度、土壤湿度、CO₂浓度与光照的实时监测。系统支持自动、手动、远程三模式联动控制,通过ESP8266-01S以MQTT协议上云,配合手机APP实现数据可视化与远程指令下发。硬件采用多通道ADC采样、继电器驱动与OLED显示,软件实现精准时序控制与双向通信。测试表明系统稳定可靠,完整覆盖“感知—控制—云联”IoT全链路,具备高扩展性与工程实践价值。

weixin_45732499的博客 175

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

20 嵌入式系统架构:架构模式、实时操作系统、鸿蒙案例

嵌入式架构模式怎么选、RTOS 和通用操作系统差在哪、优先级反转怎么破?本篇把前后台、中断驱动、管态目态几种结构排成一条演进线,手把手算 RMS 可调度界限、判断任务集能不能跑得动,再把优先级继承与优先级天花板两种解法对上号,配鸿蒙案例讲清工程落地。

weixin_46316564的博客 221

锅炉房已经有PLC,还需要IoT吗?从安全控制到全局能效的智能化升级

无论是工业蒸汽锅炉房,还是酒店、医院等商业热水场景,改造都可以从现有条件出发:先梳理控制系统、仪表和通信情况,再明确安全边界与数据需求;盈电物联网的云边协同思路,是在尽量保留原有控制与仪表设备的基础上,通过IOT控制器补齐数据接入和边缘处理能力,再与云端平台协同,逐步建立运行、能耗与运维之间的数据闭环。锅炉房智能化,不是用IoT取代PLC,也不是简单增加一块远程大屏,而是在保障安全控制独立可靠的基础上,让分散的数据真正服务于运行管理。将告警、排查、处理、复核和维修记录串联起来,形成可追溯的设备档案。

olzorange的博客 277

重复网格自动实例化:6400个方块背后的提交成本

这项夹具关闭了G-buffer、AO、GI、阴影、AA、MSAA和大气,用来隔离不透明实例提交成本。本文依据2026年11月9日已合并的PR #792及其中的验证记录撰写,数字不是本次重新运行的测试。这次实现把符合条件的重复不透明网格与材质组合,自动送入现有Vulkan实例化间接绘制路径。EVEngine最近合并的自动实例化改动,针对的正是这段重复工作。它们看起来不像渲染大功能,但位于每对象、每帧的循环里,数量一多就值得测量。真正可复用的是保留场景、构建参数、预热时间和日志汇总工具,再对照同源代码开关。

西风世界 142

工业物联网实战:基于边缘计算的园区机电设备预测性维护架构设计

在大型园区(楼宇自动化BA系统)的运维中,电梯、水泵、消防管网等关键机电设备的可靠性直接关系到整体安全。传统的定期巡检与事后维修模式,难以捕捉设备的偶发性故障。 本文从底层系统架构出发,探讨如何利用边缘计算与AI算法,构建一套高可用、低延迟的设备预测性维护(PdM)系统。

sxyxhwl的博客 212

注塑机数据采集网关 ZK-D1/D3 如何与 MES/IOT 平台对接并展示数据

本文系统阐述注塑车间数据采集难题及ZK-D1/D3网关解决方案,聚焦设备异构协议统一、数据建模规范与四层链路对接。通过明确设备唯一标识、统一命名规则与上行协议选择,实现多品牌注塑机数据标准化采集与传输。结合MQTT/HTTP/OPCUA多协议支持,构建从设备层到MES/IOT平台的完整链路,支撑实时看板、历史趋势、OEE分析与报警管理。强调前期标准化与端到端验证的重要性,确保数据可靠落地,赋能智能制造。

专业采集注塑机数据,为mes系统提供数据服务! 251

中科晟达注塑机数据采集网关 ZK-D1/D3:如何读取各品牌注塑机系统数据并对接 MES/IoT 平台

注塑车间数字化改造核心挑战在于多品牌、多协议设备的数据采集。中科晟达ZK-D1/D3网关通过边缘计算,兼容海天、发那科等主流机型及私有协议,支持EUROMAP63/77、Modbus、OPCUA等标准,实现南向多协议解析与北向标准化上行(MQTT/OPCUA/HTTP)。结合统一点位模型设计与断网续传机制,助力MES高效对接。部署中需重点确认通信权限、合理配置轮询周期、保障时间同步与数据去重,可有效解决“采不到数”“数据不准”等痛点,为OEE分析、工艺追溯与智能运维提供可靠数据底座。

专业采集注塑机数据,为mes系统提供数据服务! 294
上一篇: GPIO(结构解析 + 模式实战 + 应用避坑)
下一篇: 嵌入式开发者的万用表秘籍:IO口检测的五大误区与进阶技巧
普通网友
博客等级 码龄4年 95粉丝 1459原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值