ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于PLC的直流电机调速实验:原理、接线与PID闭环实现

基于PLC的直流电机调速实验:原理、接线与PID闭环实现 简介一份面向电气自动化与电力系统专业学生、PLC初学者的直流电机调速实验实训文档。内容以西门子S7-224XPcn型可编程控制器为核心系统讲解采用PID算法实现电机启动、运行、停止控制启动电流限制电枢电流与转速监测超速过流保护以及开环与闭环调速等完整环节并给出了目标转速每分钟一千五百转时的调节思路与保护阈值设定方法。文档还配有调速系统原理图、流程图以及数模转换、整流模块等核心部件的工作原理说明有助于读者将可编程控制器编程与电力电子控制相结合直接用于课程设计或实训报告撰写。整个资料仅包含一个文档文件压缩包仅733KB结构清晰便于快速查阅与对照实验。目前已有四十五人学习下载内容覆盖实训目的、设计步骤、保护机制与总结建议对希望掌握可编程控制器模拟量控制及PID工程应用的读者尤其有价值。1. 基于PLC的直流电机调速实验到底在做什么把一台直流电机调速实验台从“拧电位器”改成“在触摸屏上敲一个转速”多数人的第一反应是加一块PWM调速板让PLC输出模拟量转速大小由给定电压决定。真正接线调试之后才会发现问题不在“能不能转”而在“负载一变转速就掉”。直流电机有个基本特性电磁转矩必须等于负载转矩转速才稳定而电枢电阻上的压降会随电流变化开环给定在这个环节是补偿不了的。所以这个实验的本质不是做一个简单的电压调节器而是做一个带转速反馈的闭环系统PLC作控制器直流电机驱动电路作执行器编码器或测速发电机作反馈元件再用梯形图或结构化文本把PWM调速、PID调速串到一起。下面按原理、接线、程序、验证四条线展开既能应付课程设计也能用于小型设备改造。2. 直流电机调速实验的原理与方案选型为什么优先做单闭环2.1 从转速公式理解可控量电枢电压是调速主变量直流他励电机在稳态下的电动势平衡方程为U E Iₐ·Rₐ其中 E Cₑ·Φ·n代入后得到转速表达式n (U − Iₐ·Rₐ) / (Cₑ·Φ)这个公式里藏着两个关键信息。第一电枢电流 Iₐ 由负载决定负载变大时 Iₐ·Rₐ 这一项变大转速会往下掉第二端电压 U 和磁通 Φ 是外部可控制的量。工程上把调速方式分成三种对比如下表。调速方式控制量机械特性变化典型应用电枢串电阻串入电阻分压特性变软转速随负载波动大有级调速能耗大基本淘汰调节电枢电压端电压U特性曲线平行移动硬度不变基速以下恒转矩无级调速弱磁调速励磁磁通Φ转速上移转矩能力下降基速以上恒功率调速实验台上常见的直流电机额定电压多为 24V、48V 或 110V工作点在基速以下所以首选调电枢电压。注意不要为了“做出效果”去动励磁回路弱磁调速需要配合电流限幅和超速保护课程设计里做不好容易出现飞车。2.2 三种落地方案的取舍晶闸管调压、IGBT斩波与H桥确定了调压调速下一步是选执行器。实验室里主要有三类直流电机驱动电路晶闸管相控整流适合 5kW 以上的大功率场合通过控制导通角改变平均电压但会产生较大的电网谐波触发电路也复杂。中小功率实验台更常见的是 IGBT 或 MOSFET 斩波电路开关频率固定靠改变占空比调节平均电压。带正反转和回馈制动需求时用 H 桥四个开关管交叉导通还能做再生制动但要注意死区时间上下桥臂直通会烧管子。方案功率范围控制信号能否再生制动实验难度晶闸管相控5kW以上移相触发脉冲可需有源逆变高IGBT半桥斩波百瓦到数千瓦PWM占空比否低H桥PWM百瓦到数千瓦两路互补PWM可中对大多数 PLC 直流电机调速实验H桥或半桥斩波最合适因为 PLC 本身可以输出高速脉冲占空比计算交给程序驱动板只做功率放大。2.2.1 PWM 直流电机驱动电路里的频率与死区边界PWM 频率不能随手填。频率太低电枢电流断续电机会出现明显的顿挫感和噪声频率太高MOSFET 开关损耗上升驱动板发热。我一般按电机时间常数来定小功率永磁直流电机取 8kHz 到 20kHz既能避开人耳敏感区又不会让开关损耗失控。至于死区时间通常取 1μs 到 3μs具体看驱动芯片的传播延迟半桥电路用互补 PWM 时务必加死区否则上下管重叠导通瞬间相当于短路。2.3 单闭环直流调速系统仿真先行确定时间常数再上电参数整定之前先用一阶惯性模型估算机电时间常数能少走很多弯路。直流电机转速环的简化传递函数一般写成 G(s) K/(Ts1)K 是稳态增益T 是机电时间常数。拿到电机铭牌后可以用下面这段 Python 脚本离线仿一下阶跃响应。# 直流电机一阶模型 K/(Ts1)0.8s 处给 800rpm 阶跃 K 1.2 # 稳态增益近似为转速/电压比例 T 0.6 # 机电时间常数单位秒 dt, total 0.005, 5.0 t, v 0.0, 0.0 points [] while t total: target 800.0 if t 0.8 else 0.0 dv (K * target - v) / T # 一阶惯性差分方程 v dv * dt points.append((t, v)) t dt print(f稳态值: {points[-1][1]:.1f} rpm, 到达95%时间: f{next(t for t, v in points if t 0.8 and v 760):.2f} s)这段代码把电机近似成一个惯性环节输出是转速轨迹。算出的到达 95% 稳态时间能直接指导后面 PID 调速的采样周期选多大。如果仿真显示开环从给定到稳态要两三秒说明电机和负载的转动惯量偏大PID 里的积分时间常数就不能取得太小。3. PLC 端硬件接线与 I/O 映射把编码器、驱动器和急停接到 PLC3.1 实验平台的最小部件清单一个能完成闭环调速的实验台至少需要六样东西PLC 本体、直流电机、直流电机驱动电路板、测速反馈元件、开关电源、操作按钮。选型时要注意反馈元件和 PLC 高速计数器的匹配这是很多实验做不下去的根源。部件建议规格作用直流电机24V/48V几百瓦以内被控对象H桥驱动板带死区和过流保护PWM功率放大编码器200~1000线增量式转速反馈或测速发电机输出电压与转速成正比替代编码器方案PLC带高速计数器和高频脉冲输出控制核心开关电源电压比电机额定高20%以上供电PLC 选型上西门子 S7-200 SMART 和三菱 FX 系列都带 100kHz 高速脉冲输出做这个实验富余。如果手里只有不具备高速输出的经济型 PLC可以退而求其次用模拟量输出接一个电压控制的 PWM 功率板但这样做不到精确闭环实验效果会打折扣。3.2 I/O 分配与接线要点以下是一套比较稳妥的 I/O 分配方案以 S7-200 SMART SR20 为例高速计数器和高速脉冲输出都用本体自带的点。PLC地址信号接法说明I0.0编码器A相接HSC0模式12正交计数I0.3正转启动按钮常开触点上升沿有效I0.4停止按钮常闭触点I0.5急停常闭触点串入硬件回路Q0.0PWM输出接H桥PWM输入端Q0.2正转方向接H桥方向控制Q0.3反转方向接H桥方向控制接线里有个容易被忽略的点停止和急停按钮用常闭触点接入 PLC程序里读的是常开状态。这样一旦线路断裂PLC 读到的是断开状态程序能自动判为急停触发。如果按钮本身用常开触点断线后系统反而认为按钮没按下安全联锁形同虚设。3.2.1 测速反馈接入方式高速计数器还是模拟量编码器反馈接高速计数器转速由频率换算得到测速发电机则是输出电压接模拟量模块。两种方案各有适用场景。编码器方案精度高、响应快但要求 PLC 至少有 20kHz 以上的高速计数能力测速发电机接线简单不需要高速输入但输出电压有纹波模拟量采样后要做滤波响应会慢几十毫秒。用编码器时转速换算公式为 n 60·f/P其中 f 是 A 相脉冲频率P 是编码器每转脉冲数。假设编码器 500 线4 倍频后每转 2000 个计数那么 100ms 内如果计到 3333 个脉冲转速约为 1000rpm。PLC 程序里用定时中断配合高速计数器当前值做差值即可这个差值就是反馈转速的原始值。3.3 上电前的安全联锁逻辑闭环调速程序里最先写的不是 PID而是联锁。下面是 STL 写的一小段运行请求逻辑Network 1 // 运行请求正转启动且停止和急停未动作 LD I0.3 // 正转启动按钮常开 AN I0.4 // 停止按钮常闭接线程序读常开 AN I0.5 // 急停按钮常闭接线程序读常开 M0.0 // 运行请求中间位 Network 2 // 方向互锁正转和反转不能同时为ON LD M0.0 AN Q0.3 // 反转输出为OFF时才允许正转 Q0.2这段代码有两个细节。第一Network 2 里用 Q0.3 做互锁是程序级互锁H桥驱动板本身的硬件互锁也要保留程序万一跑飞至少还有硬件兜底第二M0.0 是运行请求后续 PWM 输出和 PID 计算都要判断这个位一旦急停后积分器随之清零防止恢复上电瞬间电机突然加速。4. 用 PLC 编程实现 PWM 调速与 PID 闭环核心代码与参数表4.1 PLC 梯形图里的 PWM 不是唯一的做法很多教材一上来就教 PWM 向导或 PLSY 指令但实际工程里 PWM 生成有三种思路选哪个要看具体场景。第一种是用 PLC 本体高速脉冲输出指令比如 S7-200 SMART 的 PLS 或三菱的 PLSY。优点是不占扫描周期占空比由特殊寄存器设定输出稳定缺点是一块 CPU 的高速脉冲通道有限通常只有两路。第二种是用 PWM 向导生成的子程序适合不想自己写脉冲逻辑的场合。第三种是纯梯形图自写 PWM用定时器翻转输出适合频率低、精度要求不高的演示缺点是定时器分辨率有限占空比调节粗糙转速波动会比较大。做调速实验我会优先选第一种。PLC 梯形图上调用 PWM 子程序时需要注意占空比寄存器是 16 位还是 32 位以及周期和脉宽的单位是微秒还是毫秒不同厂家的定义差很多。拿到一台不熟悉的 PLC先翻一下高速脉冲输出部分的特殊寄存器表比对着例程猜参数可靠得多。4.2 一个可直接移植的 SCL 调速功能块PID 部分不建议完全依赖向导生成的 PID 块。向导块调试简单但内部的积分限幅和输出限幅策略是固定死的实验里想观察抗积分饱和效果时不够灵活。下面是一个用 SCL 写的位置式 PID 功能块接口做了通用化处理博途和三菱 GX Works 3 里的结构化文本也能对应移植。FUNCTION_BLOCK FB_DCMotorSpeed VAR_INPUT bRun : BOOL; // 运行使能来自联锁逻辑M0.0 rSetSpeed : REAL; // 转速给定单位rpm rActSpeed : REAL; // 转速反馈由高速计数器换算 rKp : REAL : 1.5; // 比例增益 rKi : REAL : 0.08; // 积分增益含采样周期折算 rKd : REAL : 0.05; // 微分增益 rSampleTime : REAL : 0.05; // 采样周期单位秒 END_VAR VAR_OUTPUT iPWM : INT; // PWM占空比0~1000 bRegActive : BOOL; // 调节器激活指示 END_VAR VAR rError : REAL; rIntegral : REAL; rLastError : REAL; rOut : REAL; rDerivative : REAL; END_VAR IF NOT bRun THEN rIntegral : 0.0; rLastError : 0.0; iPWM : 0; bRegActive : FALSE; ELSE rError : rSetSpeed - rActSpeed; rIntegral : rIntegral rError * rSampleTime; // 积分限幅防止深度饱和 rIntegral : LIMIT(MIN : -100.0, MAX : 100.0, IN : rIntegral); rDerivative : (rError - rLastError) / rSampleTime; rOut : rKp * rError rKi * rIntegral rKd * rDerivative; rLastError : rError; // 输出限幅到0~1000对应占空比0~100% rOut : LIMIT(MIN : 0.0, MAX : 1000.0, IN : rOut); iPWM : INT(rOut); bRegActive : TRUE; END_IF;这段代码里有几个参数含义需要说清楚。rKi 是积分增益前面的 rIntegral 累加项乘了采样周期所以 rKi 的实际量纲是“每秒补偿多少占空比”而不是单纯累加误差。微分项对测量噪声极其敏感如果传感器反馈毛刺大建议直接令 rKd 为 0否则转速波动会被微分放大成占空比抖动。输出上下限设成 0 到 1000是为了避免 PWM 占空比超出 100% 或变成负值这个限幅在真实电机上就是堵转保护和失控保护的第一道闸。4.3 PID 调速的参数整定采样周期与三个系数有了功能块参数不能拍脑袋填。先定采样周期再调比例后加积分最后考虑微分。采样周期的参考值可以按电机机电时间常数的十分之一到二十分之一来取前面的 Python 仿真已经给出了时间常数量级。电机类型机电时间常数建议采样周期初始Kp初始Ki小功率永磁电机几十瓦0.1~0.3s10~20ms0.5~20.02~0.08中功率他励电机几百瓦0.3~1s20~50ms1~30.05~0.15带大惯量负载1s以上50~100ms2~50.05~0.1整定步骤我习惯这样走先把 rKi 和 rKd 设为 0只留比例项从小到大加 Kp观察空载阶跃响应是否出现等幅振荡。出现振荡后把 Kp 退回到振荡值的 60% 左右此时系统已经有约 4:1 衰减比再加积分消除稳态误差。Ki 从小往大调如果转速出现低频来回摆动说明 Ki 偏大要往回退。微分项在这个实验里不是必需品除非负载波动频繁否则不加反而稳定。4.3.1 抗积分饱和的具体做法位置式 PID 在给定突变或者电机堵转时积分项会持续累加占空比冲到限幅值反馈转速却迟迟追不上给定。等误差反转积分需要很长时间退回来这期间电机一直全压运行表现就是转速过冲严重甚至持续超调。上面的代码已经处理了这个问题积分限幅比输出限幅更严格限幅值取得越紧退出饱和越快。实际实验里还可以加积分分离当误差绝对值超过一定阈值时暂停积分累加只在误差收窄后才恢复这种做法对频繁启停的实验台很有效。5. 调试波形、验证指标和把实验 doc 写厚5.1 用 PLC 数据监控验证阶跃响应闭环调通后验证环节通常用示波器抓波形但在 PLC 实验台上更直接的办法是将给定值和反馈值按固定周期写入数据块用通信读取后离线分析。S7-200 SMART 可以用数据块导出 CSV三菱 FX 可以用串口助手抓 D 寄存器。下面这段 Python 脚本专门用来从 CSV 里计算阶跃响应的三个指标。# 用法: python step_analysis.py trace.csv # CSV列名: time_s, setpoint_rpm, feedback_rpm import csv, sys t, sp, fb [], [], [] with open(sys.argv[1]) as f: for row in csv.DictReader(f): t.append(float(row[time_s])) sp.append(float(row[setpoint_rpm])) fb.append(float(row[feedback_rpm])) target sp[-1] # 阶跃目标值 start_idx next(i for i, v in enumerate(sp) if v target * 0.9) step sp[start_idx] # 阶跃发生时刻的给定 peak max(fb[start_idx:]) # 反馈峰值 settle next(i for i in range(start_idx, len(fb)) if abs(fb[i] - target) target * 0.05) # 进入5%误差带 overshoot (peak - target) / target * 100 settle_time t[settle] - t[start_idx] print(f超调量: {overshoot:.1f}% 调节时间: {settle_time:.2f}s f稳态误差: {fb[-1] - target:.1f}rpm)如果脚本输出的超调量超过 20%优先检查是不是积分限幅太松调节时间过长检查采样周期是不是比电机时间常数大太多。这类分析和示波器波形互相印证比单独看一条趋势线更能定位问题。5.2 实验 doc 里必须留下的数据和结论写实验报告时别把注意力全放在梯形图上。一份合格的直流电机调速实验 doc 至少要包含三块内容一是电机铭牌和实测参数的对照表包括额定电压、额定电流、实测电枢电阻、编码器线数二是阶跃响应曲线和特征指标即上一节脚本算出的超调量、调节时间、稳态误差三是至少一组 PID 参数的整定记录写明哪组参数对应什么现象。这样写出来的文档别人拿着能复现实验而不是只看到一张完美的响应曲线。本文还有配套的精品资源点击获取
返回列表