第四章:PLC编程进阶(西门子1200)——模拟量处理、PID控制与运动控制

各位好,我是老张。在锂电设备这行摸爬滚打了十几年,今天咱们聊聊西门子1200 PLC里几个比较硬核的东西。说实话,很多新手工程师一听到“模拟量”、“PID”、“运动控制”就头大,觉得太抽象。其实没那么玄乎,咱们一个一个拆开看。

4.1 模拟量处理:FC105与FC106

先说说模拟量。锂电设备里,温度、压力、流量、张力……这些物理量都是连续变化的,不是简单的开或关。PLC要读懂它们,就得靠模拟量输入模块。

但有个问题:PLC读进来的原始值,是一个数字,比如0到27648。这跟实际的温度、压力不是一回事。怎么办?西门子贴心地准备了两个功能块:FC105(SCALE)和FC106(UNSCALE)。

核心逻辑:

  • FC105:把原始数字(0~27648)转换成工程值(比如0~100℃)。
  • FC106:反过来,把工程值转换成PLC能输出的原始数字。

我个人习惯,在调用FC105之前,一定先确认模拟量模块的量程。是0~10V?还是4~20mA?这决定了你的原始值范围。我曾经在一条涂布机上吃过亏,传感器输出4~20mA,结果我按0~10V去算,温度直接飘了20度,差点把烘箱烧了。

来看一个典型的调用示例:

// FC105 调用示例
// 输入:AIW0(模拟量输入通道)
// 输出:MD10(实际温度值,单位℃)
CALL "SCALE" , FC105
IN := AIW0
HI_LIM := 100.0   // 量程上限
LO_LIM := 0.0     // 量程下限
BIPOLAR := FALSE  // 单极性
RET_VAL := MW20   // 错误代码
OUT := MD10       // 转换后的工程值

嗯,这里要注意:BIPOLAR参数,如果你用的是单极性信号(比如4~20mA),一定要设成FALSE。设成TRUE的话,原始值范围会变成-27648~+27648,结果就全乱了。

避坑指南:

我曾经在调试一台卷绕机时,发现张力值总是跳变。查了半天,原来是模拟量线没屏蔽,干扰太大。后来加了磁环,把信号线跟动力线分开走,问题就解决了。记住:模拟量信号很脆弱,布线时一定要远离变频器、电机这些干扰源。

4.2 PID控制基础与参数整定

PID控制,说白了就是让一个物理量(比如温度、压力)稳定在你想要的值上。你想想看,锂电设备里,涂布机的烘箱温度、卷绕机的张力、注液机的压力……哪个不需要PID?

西门子1200里,PID控制有专门的工艺对象,叫“PID_Compact”。它把比例(P)、积分(I)、微分(D)三个参数封装好了,你只需要填几个关键参数就行。

但问题来了:P、I、D这三个值怎么设?很多新手一上来就乱调,结果系统要么震荡,要么响应太慢。

我个人经验,参数整定有个“三步走”的方法:

  1. 先调P(比例):把I和D设成0,只加P。从小到大慢慢加,直到系统开始出现等幅震荡。记住这个P值,叫“临界比例度”。
  2. 再加I(积分):把P设为临界值的0.6倍,然后加I。I的作用是消除静差,但I太大容易超调。我一般从较大的I值开始往下减,直到系统稳定。
  3. 最后加D(微分):D能预测偏差,提前调整。但D对噪声很敏感,锂电设备里如果传感器信号有毛刺,D反而会坏事。我建议,除非系统响应特别慢,否则D可以不加。

警告:

PID参数整定一定要在设备空载或低负载下进行。我曾经在一条满产的生产线上调PID,结果温度超调了20度,整批极片报废,被生产经理骂了一下午。切记:安全第一,先离线调试。

来看一个PID_Compact的组态示例:

// PID_Compact 组态
// 控制器类型:温度
// 输入:MD10(实际温度)
// 输出:AQW0(加热器控制信号)
PID_Compact_1(Input := MD10,
              Output := AQW0,
              Setpoint := MD20);  // 目标温度

在TIA Portal里,你还可以启用“自整定”功能。它会自动给系统加一个扰动,然后分析响应曲线,帮你算出P、I、D值。说实话,这个功能在大多数情况下够用了,但遇到非线性系统(比如加热器有死区),还是得靠手动微调。

4.3 运动控制:轴工艺对象配置

运动控制,是锂电设备里最核心的部分。涂布机的走带、卷绕机的收放卷、模切机的飞剪……这些动作背后,都是一个个“轴”在协同工作。

西门子1200的运动控制,是通过“轴工艺对象”来实现的。说白了,就是把一个电机抽象成一个“轴”,然后你告诉它:走多远、走多快、怎么走。

配置一个轴,我建议按以下步骤来:

  • 第一步:硬件组态。确认驱动器类型(比如V90)、编码器类型(增量式还是绝对式)、通信方式(PROFINET还是脉冲)。
  • 第二步:轴参数设置。在TIA Portal里添加“TO_Axis_PTO”或“TO_Axis_Peripheral”,然后填上每转脉冲数、机械传动比、单位(mm或度)。
  • 第三步:调试。用“轴控制面板”手动点动,看看方向对不对,速度是否平滑。

关键参数说明:

参数 说明 我的建议
每转脉冲数 电机转一圈,编码器发出的脉冲数 一般设成10000或2500,看驱动器手册
机械传动比 电机转几圈,负载转一圈 比如减速比10:1,就填10
最大速度 轴允许的最高速度 别超过机械极限,我见过有人设太快,直接把丝杠崩了
加减速时间 从0加速到最大速度的时间 锂电设备一般设0.1~0.5秒,太快会抖动

配置好之后,就可以用MC_Power、MC_MoveAbsolute、MC_MoveRelative这些指令来控制轴了。举个例子:

// 绝对定位指令
// 轴:Axis_1
// 目标位置:100.0 mm
// 速度:50.0 mm/s
MC_MoveAbsolute_1(Axis := Axis_1,
                  Execute := M0.0,
                  Position := 100.0,
                  Velocity := 50.0);

嗯,这里有个小细节:Execute信号一定要用上升沿触发。如果你一直给高电平,指令会重复执行,轴就会一直往目标位置冲,停不下来。我刚开始学的时候犯过这个错,轴直接撞了硬限位,还好速度不快,不然就出事故了。

个人经验:

在锂电设备里,多轴同步是个大难题。比如卷绕机,收卷轴和放卷轴要同步,张力才能稳定。我建议用“电子齿轮”功能,把两个轴的主从关系设好。西门子1200里,可以用MC_GearIn指令实现。记住:主轴的编码器信号一定要干净,否则从轴会跟着抖。

本章小结

好了,这一章的内容就这些。模拟量处理、PID控制、运动控制,这三个东西是锂电设备自动化的基石。你想想看,一条涂布机,从放卷到涂布到烘干到收卷,哪个环节离得开它们?

我个人觉得,学这些东西,光看书没用,一定要动手。找个旧PLC,接个电位器当模拟量输入,写个PID程序控制一个灯泡的亮度,再配个步进电机练练定位。搞通了,你就能应付大部分锂电设备的调试工作了。

最后送大家一句话:自动化这行,经验比理论重要。多踩坑,多总结,你也能成为老司机。


专注资料整理