1. 项目整体架构与方案选型
先把这个项目的底细说清楚。这可不是一个简单的PLC点动启停程序,而是一套完整的液压伺服闭环控制系统。系统里同时有PLC、触摸屏、伺服驱动器和液压执行机构,四个大件协同工作,任何一个环节掉链子,整个项目都跑不起来。我接手的这个项目,核心需求是通过西门子SMART200 PLC,实时采集液压缸上的压力或位移信号,经过PID运算后输出控制指令给伺服系统,由伺服驱动液压泵或伺服阀来调节液压缸的动作,最终让液压系统达到设定目标值并且稳定住。
这套系统最值钱的地方,也是最有技术含量的地方,就在于PID闭环控制。液压系统和普通电气传动不一样,它本质上是非线性的,油液温度变化、负载波动、阀口流量特性,都会影响控制效果。如果用开环控制,精度基本靠运气,而加入PID之后,系统可以根据实际反馈不断修正输出,做到设定的压力值就是实际的压力值,偏差可以控制在很小范围内。
我为什么选SMART200这款PLC?最大的原因是性价比和易用性。很多项目方一上来就要求用高端PLC,说实话,对于这种单轴液压伺服系统,SMART200的资源完全够用了。它自带PID指令,不需要额外扩展PID模块,而且模拟量采集和输出都是标配的基座,4路模拟量输入和1路模拟量输出,刚好满足压力传感器、位移传感器和伺服阀控制信号的需求。再一个是它的以太网接口,通过网口就能和昆仑通态MCGS触摸屏通讯,调试的时候也可以在线监控程序,比老式的串口通讯方便太多。
昆仑通态MCGS这边,我考虑的是它和SMART200的兼容性,以及国产组态软件的上手速度。MCGS支持西门子S7-200 SMART的以太网驱动,直接通过TCP/IP就能读写PLC的V区数据。我试过其他品牌的触摸屏,有些需要装驱动转换器,有些还要填一堆通讯参数,而MCGS这边的配置相对简单,打开设备窗口,选择对应驱动,填上PLC的IP地址,再建好变量连接,基本就能通讯上。
东元伺服驱动器在这个项目里扮演的是执行层角色。PLC的PID输出是模拟量信号,送给东元伺服驱动器的模拟量速度/力矩指令端口,伺服驱动器再去驱动伺服电机,控制液压泵的转速或伺服阀的开度。东元伺服在国内液压行业用得非常多,特别是一些老设备改造项目,它的响应速度比变频器快不少,而且支持多种控制模式,可以通过参数切换速度模式、转矩模式和位置模式,灵活性很高。
整套系统下来,硬件清单大概是这样:
| 设备 | 型号/规格 | 用途 |
|---|---|---|
| PLC | 西门子SMART200 SR40(或ST40) | 主控制器,逻辑运算与PID运算 |
| 触摸屏 | 昆仑通态MCGS TPC7062系列 | 人机交互,参数设定与监控 |
| 伺服驱动器 | 东元TECO JSDG2系列 | 驱动伺服电机,实现液压泵/阀的控制 |
| 伺服电机 | 东元配套电机(带编码器) | 执行机构 |
| 压力传感器 | 4-20mA输出 | PID反馈信号 |
| 位移传感器 | 4-20mA(或0-10V)输出 | 位置反馈信号 |
| 液压单元 | 液压泵、伺服阀/比例阀、液压缸 | 执行液压动作 |
这套配置方案的优势在于,它把主流的工业自动化组件串联成了完整的闭环,每一层都有明确的分工:MCGS负责人机交互,PLC负责大脑运算,伺服负责力量输出,传感器负责感知反馈。
2. 液压伺服PID控制的核心细节
2.1 PID控制在液压系统里的特殊性
PID控制大家都很熟悉,比例P、积分I、微分D三个参数的组合,但是在液压伺服系统里,PID调起来比普通温度控制、速度控制要麻烦不少。主要原因是液压系统存在明显的滞后性和非线性特征。
我举一个例子,当你通过PLC输出一个模拟量给伺服阀时,阀芯移动需要时间,油液压力建立需要时间,液压缸动作还需要时间,整个链路的延迟叠加起来,就会导致反馈信号跟不上给定信号。如果PID的比例系数调得太大,系统就会震荡,液压缸会在目标位置附近来回抖动,不仅控制精度差,时间长了还会损坏液压元件。
所以液压PID调参的第一原则是“稳字当头”。我一开始调试的时候,比例系数只给了1.0左右,积分时间拉到5秒以上,微分基本先不放,让系统先能稳定运行,再逐步增加比例系数提高响应速度。
2.2 采样时间的选取
这是液压PID项目里经常被忽略的细节。SMART200的PID指令是在定时中断里去执行的,采样时间设置多少,直接决定控制效果。采样时间太长,系统的实时性不够,外部负载突变时PLC反应不过来;采样时间太短,PID输出的频繁变化又会让伺服阀和液压系统承受不必要的压力波动。
我在这个项目里把PID采样时间设定为100毫秒,也就是每秒执行10次PID运算。为什么选这个值?因为液压系统的机械惯量比较大,太高的控制频率实际意义不大,反而会带来噪声干扰;而100毫秒的采样周期,对于压力控制和液压缸位置控制来说,已经足够跟上系统的动态变化了。当然,如果你的系统要求特别高的响应速度,可以适当缩短到50毫秒,但我个人不建议低于20毫秒,超出SMART200的运算能力不说,还可能加剧执行机构的磨损。
2.3 PID指令与输出限幅
SMART200的PID指令使用起来有个容易踩坑的地方,就是输出值的范围问题。它的PID输出是0.0到1.0之间的归一化数值,你必须把它重新换算成实际的控制信号才能输出给伺服驱动器。比如伺服驱动器接收的模拟量指令是0到10V,PLC的模拟量输出模块对应0到27648的数字量,那么PID输出的0.0到1.0就要映射到0到27648。
还有一个问题是输出限幅,我在程序里给PID输出加了上下限保护,比如限制输出最大只能到80%,哪怕PID运算结果要求全开,我也不会让输出值超过上限。这样做的目的是保护液压系统,防止突然的全幅度输出造成液压冲击,把油管憋爆或者把机械结构冲击坏。
3. SMART200 PLC程序实现与实操记录
3.1 程序整体结构
拿到这个项目后,我没有急着写PID指令,而是先把程序框架规划清楚。整个PLC程序分为几个模块:开机初始化模块、模拟量采集与标定模块、模式选择模块、PID运算模块、伺服使能与报警模块、通讯数据交换模块。
开机初始化模块的作用是把所有输出清零,确保上电瞬间伺服不会突然动作。这一步非常重要,因为很多设备事故就是出在PLC上电那几分钟,如果输出没有初始化,之前残留在寄存器里的值会直接变成控制信号,轻则设备乱动,重则造成安全事故。
模拟量采集模块负责读取压力传感器和位移传感器的4-20mA信号。SMART200的模拟量通道,4-20mA对应的数值范围是0到27648,但实际硬件上需要做一些处理。我建议在程序里做标准化处理,把原始数值转换成工程单位。比如压力传感器量程是0到25MPa,那么换算公式就是:实际压力值 = AIW原始数值 / 27648 × 25。这个换算写在程序里,调试时就能直接看触摸屏上的压力值是不是和压力表一致。
3.2 PID指令的调用方式
SMART200的PID指令,我使用的是PID向导生成的PID子程序。这个向导的好处是,它会自动把PID参数、设定值、反馈值都映射到V存储区,你只需要在程序里调用这个子程序,并且给相应的V区赋值就可以了。
关键的V区地址我列一下:
| 参数 | V区地址(以向导生成为例) | 说明 |
|---|---|---|
| 设定值 | VDxx | 目标压力/目标位置 |
| 反馈值 | VDxx+4 | 来自模拟量模块的实际值 |
| 比例增益 | VDxx+8 | P参数 |
| 积分时间 | VDxx+12 | I参数 |
| 微分时间 | VDxx+16 | D参数 |
| 输出值 | VDxx+20 | PID计算结果(0.0-1.0) |
实际操作时,我会把设定值和P、I、D参数都做成可以在触摸屏上修改的变量。这样调试的时候就不用反复插网线改程序了,直接在MCGS触摸屏上就能调整PID参数,边调边看实时曲线,效率高很多。
3.3 模拟量到伺服的输出映射
PID算出来的输出值是一个0到1.0的小数,真正控制伺服驱动器之前,我必须把它转成模拟量通道的数字量。SMART200的模拟量输出是AQW,在程序里做一次乘法运算:AQW值 = PID输出值 × 27648 × 输出百分比限制系数。
举例来说,如果PID输出值是0.5,输出限制是80%,那最终给到伺服的指令就是0.5 × 27648 × 0.8 = 11059,这个数值对应伺服驱动器的模拟量指令电压大约是4V。东元伺服在这个模拟量指令电压下会以相应的速度运转,进而驱动液压泵输出对应的流量和压力。
这里有个细节要提醒一下,就是伺服驱动器的模拟量指令端子的正负极性。有些伺服驱动器可以接收正负电压来改变电机转向,如果PLC输出的只是单极性的0到10V信号,那电机只能单向旋转。对于液压控制来说,一般需要的是双向控制,比如液压缸既要前进又要后退,这时候就得上双极性方案。我在这个项目里采用的方法是,用PLC的两个模拟量输出通道,一个接正转指令,一个接反转指令,根据PID输出的正负方向来选择输出到哪个通道。
这部分的梯形图逻辑说起来不复杂,但是真到写程序的时候容易绕晕。我的做法是,先把PID输出值减去中间值0.5,如果结果大于0,说明需要正转,就把差值放大到27648的一半范围输出到正转通道;如果结果小于0,说明需要反转,就把绝对值输出到反转通道。这样就实现了双向控制,而且逻辑清晰,后面维护也好理解。
3.4 伺服使能与报警逻辑
东元伺服驱动器运行前需要给一个使能信号,硬件上是PLC的输出端子接到伺服驱动器的伺服使能输入端。这个信号我没敢用普通输出点直接控制,而是在程序里做了条件判断:只有系统没有报警、急停按钮没有按下、液压系统压力在正常范围内、伺服驱动器本身没有故障输出这几个条件都满足时,才允许接通伺服使能。
报警逻辑这边,我读取了伺服驱动器的报警输出端子信号。东元伺服在过载、过流、编码器故障等情况下,会输出一个报警信号。我把这个信号接入PLC的输入点,程序检测到报警后立即切断伺服使能,同时在触摸屏上弹出报警画面。这套联锁逻辑是整套系统安全性的最后一道防线,绝对不能省。
4. 昆仑通态MCGS组态与画面设计
4.1 设备通讯与变量连接
MCGS和SMART200的通讯,我用的是以太网方式。在MCGS的设备窗口里,添加一个通用TCP/IP父设备,然后在下面挂接西门子S7-200 SMART的驱动子设备。驱动需要设置PLC的IP地址,我在这里强烈建议给PLC一个固定IP,不要用DHCP动态获取,不然PLC断电重启后IP变了,触摸屏就找不到了。
变量连接是组态过程中最繁琐的一步。MCGS里必须为每一个需要实时监控的数据项建立一个变量,然后把这个变量关联到PLC的具体寄存器地址。我常用的地址映射方法:
| MCGS变量 | 对应PLC地址 | 数据类型 | 用途 |
|---|---|---|---|
| 压力设定值 | VD200 | 实数 | 目标压力输入 |
| 压力实际值 | VD204 | 实数 | 压力实时监测 |
| PID比例值 | VD208 | 实数 | P参数在线修改 |
| 伺服启停按钮 | M0.0 | 位 | 伺服使能控制 |
| 系统急停状态 | I0.0 | 位 | 急停监控 |
建变量的时候,数据类型一定要选对。SMART200的浮点数在PLC里是32位实数,MCGS这边必须对应选择“浮点数”,否则读上来的数据就是乱码或者只有整数部分。这个问题我遇到不下三次了,每次都是花半天时间排查,最后发现是数据类型没有匹配。
4.2 监控画面的布局思路
MCGS的画面设计,我按照功能分成了四个页面:主监控画面、参数设定画面、实时趋势画面、报警记录画面。
主监控画面放的是系统最核心的信息:压力设定值和实际值的大字显示、伺服运行状态指示灯、液压泵启停按钮、急停状态显示。字体够大,颜色对比够明显,这是给现场操作工看的,他们要一眼就能看出设备当前状态。
参数设定画面就比较密集了,PID的三个参数、采样时间、输出限幅百分比、传感器量程设置,都放在这个页面上。之所以把PID参数单独放一页,而不是放在主画面,是为了防止误操作。现场操作工会不小心碰到触摸屏,如果主画面上全是数字输入框,随便碰一下就可能改了PID参数,设备分分钟失控。
实时趋势画面我用了MCGS的实时曲线控件,把压力设定值和压力实际值两条曲线同时显示在坐标轴上。调试PID参数的时候,这个画面就是我的主力工具。比例增益调大,曲线会看到明显的震荡;积分时间调小,曲线会出现超调;微分时间调大,曲线会变得迟钝。整个过程一目了然。
报警记录画面用来显示历史报警信息,比如伺服过载、压力超限、通讯故障等。MCGS有专门的报警显示控件,配置好报警变量后会自动记录报警发生的时间和事件内容。我在项目的最后阶段,还会把这套报警数据导出来分析,看看设备运行过程中哪个环节最容易出问题,为后续的维护优化提供依据。
4.3 配方功能在参数切换中的应用
这个项目还有一个特殊需求,就是液压系统要在多种工作模式之间切换,不同的模式下,压力目标值和PID参数是不一样的。比如快速加压模式和保压模式,控制策略就完全不同,快速加压时比例增益要大一些,让系统尽快到达目标;保压时比例增益要小一些,防止压力波动。
我用MCGS的配方功能实现了参数的一键切换。把不同工作模式的PID参数、目标压力、输出限幅全部存成配方记录,操作工在触摸屏上选择工作模式,MCGS就把对应的配方数据写入PLC的V区,系统自动切换控制策略。
这个功能在实际使用中被现场操作工评价很高。之前没有配方功能的时候,切换模式需要人工记录一组参数,再手动填入触摸屏,用纸笔记录很容易记错,填错了就是设备动作异常。有了配方功能,几个触摸屏按键就能完成模式切换,不容易出错,效率也高。
5. 东元伺服驱动器配置与整定
5.1 伺服驱动器的控制模式设置
东元伺服驱动器参数非常多,第一次接触的人很容易被参数手册吓到。但实际上,跟我们这个项目相关的参数就那么几个,核心就是设定控制模式和控制指令来源。
我设置的是速度控制模式,指令源选择模拟量输入。在伺服驱动器参数里,需要找到控制模式选择参数,设为速度模式;再把速度指令来源指向模拟量输入端子AUX。这样一来,PLC输出的模拟量电压就直接决定了伺服电机的转速,转速又决定了液压泵的输出流量。整个逻辑链是:PID输出变化 → 模拟量电压变化 → 电机转速变化 → 液压流量变化 → 压力/位置变化 → 反馈信号变化。
有个关键点必须提醒:伺服驱动器的模拟量输入端子的最大电压范围通常默认是10V,而SMART200的模拟量输出是0到10V,这两个是匹配的。如果你用错端子,或者端子类型选错,可能导致指令电压范围缩小,系统就会不受控制。
5.2 增益参数整定
东元伺服驱动器内部还有一组增益参数,它们决定了伺服电机对指令的跟随能力。参数太大会产生异响和震动,参数太小则电机响应迟钝。我的做法是先用伺服驱动器的自整定功能跑一遍,让驱动器自动计算一组基础增益,然后在这个基础上微调。
自整定完成之后,我习惯手动检查一下速度环增益和速度积分时间常数这两个参数。速度环增益一般设置在50到200之间,速度积分时间常数设置在5到20毫秒之间。具体的值要现场听电机声音来判断:电机啸叫了说明增益大了,电机起步迟钝说明积分时间长了。
这里多说一句,伺服整定和PID整定是两个不同层面的东西,千万不要搞混。伺服驱动器内部的增益是解决“电机能不能快速跟随指令”的问题,PLC里的PID是解决“系统最终达到的效果符不符合要求”的问题。如果伺服没整定好,电机本身就乱抖,你PID调得再完美也没用。
5.3 电子齿轮比与编码器分辨率的匹配
东元伺服电机的编码器分辨率一般在2500线以上(对应伺服驱动器内部乘4倍频后是10000脉冲/圈),这意味着电机每转一圈,编码器就能产生上万个脉冲反馈给驱动器。
对于纯速度控制的液压系统来说,编码器分辨率主要影响速度检测精度,而不是像位置控制系统那样直接影响定位精度。但如果你是做伺服液压缸的位置闭环控制,就得认真考虑电子齿轮比的问题了。
举个例子,如果液压缸的行程是500毫米,通过丝杠或活塞杆直接连接,那就要计算出每毫米对应的编码器脉冲数。我在一个子项目里做过这样的计算:伺服电机转一圈,通过减速机构和丝杠带动液压缸移动10毫米,那每1毫米位移对应的脉冲数就是10000/10 = 1000脉冲。这个数值会用在伺服驱动器的电子齿轮比设定里,让位置指令的单位匹配到实际机械移动量。
需要注意的是,电子齿轮比设置完之后,一定要通过手动方式验证一下实际位移是否和指令位移一致。我吃过这个亏,有次设置完直接跑自动,结果液压缸实际走了50毫米,屏幕上显示走了100毫米,要不是及时发现,液压缸早就撞到限位了。
6. 调试验收与常见问题排查
6.1 调试步骤编排的讲究
液压伺服项目的调试一定是循序渐进的,一上来就满负荷跑PID,出了问题你根本没法判断是气穴还是振荡信号。我的标准调试流程分四步:
第一步,不带压力,只给伺服使能,通过触摸屏手动控制输出一个很小的模拟量指令,确认伺服电机转向正确、转速稳定,液压泵有油压建立。这一步是验证伺服系统和PLC输出链路是否正常。
第二步,手动模式小幅度动作液压缸,分别朝两个方向动作,确认极限位置限位开关有效,确认液压缸动作方向符合程序逻辑。
第三步,把手动模式切换为闭环模式,设定一个较小的目标压力,比如最大压力的20%,观察PID控制效果。这一步最关键,如果曲线震荡太厉害或者压力上不去,就在这个阶段停下来调参数。
第四步,逐步把目标压力提升到额定工作压力的80%和100%,同时反复切换工作模式,验证配方切换时系统不会出现剧烈的压力突变。
每次调试验收都要做记录,我在现场习惯用手机拍下触摸屏上的趋势曲线截图,附图附在调试记录里,这些都是后续做项目验收报告和维护资料的重要依据。
6.2 高频故障与排查思路
我在多个液压伺服项目里,积累了不少调试期故障的排查经验。汇总成一张速查表,方便大家直接对照排查:
| 故障现象 | 可能原因 | 排查方向 |
|---|---|---|
| PID输出始终为0 | 反馈信号异常、PID使能位没接通 | 检查传感器接线、查看PLC实时反馈值 |
| 压力过冲严重,曲线强烈震荡 | 比例增益过大、输出限幅太高 | 降低P值,检查输出上限 |
| 系统响应慢,目标值长时间达不到 | 积分时间过大、增益偏小、伺服整定不良 | 减小积分时间,检查伺服电机跟随性 |
| 伺服电机啸叫或过热 | 伺服增益过大、机械共振 | 降低伺服驱动器增益参数 |
| 触摸屏和PLC通讯时断时续 | 网线质量差、PLC IP冲突 | 更换标准网线,检查IP地址 |
| 液压缸动作反向 | 模拟量输出正负极性接反 | 检查伺服驱动器指令端子接线 |
| 压力正常但位置偏差大 | 位置传感器标定不准 | 重新做位置传感器两点标定 |
6.3 干接点与模拟量的现场抗干扰
这个项目在车间调试的时候,还遇到了一个挺典型的干扰问题:只要车间大功率设备一启动,触摸屏上的压力曲线就出现毛刺,严重的时候还会导致压力反馈值瞬间乱跳,PID跟着乱输出。
问题根源是模拟量信号线的屏蔽层没有正确接地。我在布线规范里都会注明:模拟量信号必须使用屏蔽双绞线,屏蔽层在PLC一侧单端接地。但现场有些工人不理解为什么要单端接地,直接把屏蔽层剥掉不接,或者两端都接地了,反而形成地环流,干扰更严重。
后来我统一整改了所有模拟量线路,传感器到PLC之间换成了合格的屏蔽线,屏蔽层严格单端接地,PLC侧和伺服驱动器侧的电源地也理顺了。整改之后,再启动车间的大功率设备,压力曲线的毛刺明显消失了。这件事给我最大的教训是,自动化项目里接线和布线的工作量,甚至比写程序还要重要。
6.4 项目资料归档与后续维护
项目验收交付阶段,我除了提供可运行的PLC程序、MCGS组态工程和伺服驱动器参数表之外,还会整理一套完整的文档包,包括:系统接线图(标明每一根线的端子编号和信号类型)、PLC变量表(说明每个V区的含义和取值范围)、伺服驱动器参数清单(注明哪些是出厂默认值、哪些是修改过的、修改的理由是什么)、PID整定记录(记录不同工况下的最终参数)、设备操作手册(给现场操作工看的傻瓜式教程)。
这套文档的价值在于,它能让一个完全没接触过这个项目的工程师,在最短的时间内接手维护工作。很多自动化项目做完几年后,设备出了问题,原来做项目的人早就不在了,后来的人对着程序和图纸完全摸不着头脑。有了完整的文档集,这种情况就能避免。
一套完整文档集对于项目验收和后续维护来说价值巨大,而且这也是这个项目标题里特别强调“包含完整文档集”的原因所在。
我在交付前的最后一件事,是带着现场操作工一起走一遍完整的操作流程:开机启动、模式切换、参数修改(仅限允许修改的页面)、停机断电。同时明确告诉他们哪些东西不能动,尤其是参数设定画面里的PID值,一旦改了程序还能从配方里恢复,但如果设备正在运行的时候改了PID,后果就严重了。这一趟培训走下来,客户对项目的满意度会提升一大截。
7. 实操心得与适用场景扩展
7.1 我在这个项目里最受益的三个习惯
回头复盘这套项目的时候,有三个习惯是值得保留的。第一个是“先把模拟量换算做对”,很多时候PID调不出来不是算法问题,而是反馈值根本不对。压力传感器4-20mA怎么换算、零点是否偏移、满量程校准是否做对了,这些问题如果不在程序调试之前解决,后面全是白忙活。
第二个习惯是“所有参数必须能在线修改”。在触摸屏上放PID参数输入框这件事,看着简单,但很多人一开始图省事,把参数写死在程序里,每次调参都得连电脑改PLC程序,效率低到怀疑人生。我几乎所有的项目都会把关键参数开放到触摸屏上,哪怕有些参数实际使用中根本不会改,但也保留修改通道,万一要做仿真或者测试呢。
第三个习惯是“调试时先记录初始值”。在你准备调第一版PID参数之前,先记录下当前系统的各项数据:零位对应多少数值、满量程对应多少数值、伺服驱动器当前的增益值、PLC扫描周期等等。这些初始值是你后续调参的参照系,有了参照系,参数方向才不会跑偏。我见过太多次别人把参数调乱了然后重置回默认值,重新调的时候各种拍脑袋,浪费时间。
7.2 这套方案的适用范围
这套SMART200加MCGS加东元伺服的组合,我后来在好几个类似的液压控制项目上复用过了,包括压力机液压控制、注塑机液压比例控制、吹瓶机成型压力控制等,凡是需要液压系统做恒压控制或速度控制的场景,这套架构都能覆盖。
当然,如果系统的控制精度要求特别高,比如要达到非常高精度的同步控制,那SMART200的资源可能就不够用了,得上到更高性能的PLC,PID算法也可能要换成更高级的自适应或者前馈策略。但对于大多数常规液压伺服应用场景,SMART200这套方案完全够用,而且成本控制得很好。
根据我个人经验,这个项目最值得借鉴的并不是某个具体的指令或者某段程序,而是整个项目从硬件选型、程序框架、触摸屏界面、伺服整定、到文档交付的完整方法论。把这套方法论吃透,遇到类似的液压控制项目,不管换什么牌子的PLC、什么牌子的伺服驱动器,你都能很快搭建出一套能够稳定运行的系统。