气动系统中,两个气缸按照固定顺序伸出、缩回,是比较典型的一类顺序控制问题。比如要求两个双作用气缸依次完成:
A 伸出 → B 伸出 → B 缩回 → A 缩回
如果直接搭建硬件,一旦阀件选择、控制气路或动作节拍存在问题,往往需要反复调整管路。相比之下,先在仿真环境中把整个回路跑一遍,可以提前检查气路结构和顺序控制逻辑。
最近我在 MoHub 上看到一个双气缸顺序控制案例。模型包含气源处理、方向控制阀、行程反馈阀以及两个双作用气缸,而且控制信号通过气动端口传递。
案例地址:
https://mohub.net/model/26115/summary
我在 Sysplorer 中实际运行了一遍,下面主要看看这个气动回路是怎么搭起来的,以及最终的动作顺序是否符合设计目标。
双气缸顺序控制模型
案例的目标是利用气动元件和气动控制信号,实现两个双作用气缸的顺序动作。
在 Sysplorer 中搭建完成后的整体模型如下。
从模型结构可以看到,整个系统主要分为几个区域:
气源处理
气缸 A 主回路
气缸 B 主回路
行程反馈控制信号
图中实线主要表示主气路,虚线表示控制气路。两个气缸的工作气路和控制信号被放在同一张模型图中,因此可以比较直观地沿着连接关系观察各个阀件之间的控制过程。
对应的气动系统原理图如下。
案例中共包含 7 个主要阀件:
| 阀件 | 主要作用 |
|---|---|
| 阀1 | 启动阀 |
| 阀2 | 气缸 A 主换向阀 |
| 阀3、阀4 | 气缸 A 行程反馈阀 |
| 阀5 | 气缸 B 主换向阀 |
| 阀6、阀7 | 气缸 B 行程反馈阀 |
按照设计,整个回路需要完成:
A+ → B+ → B- → A-其中:
A+:气缸 A 伸出 B+:气缸 B 伸出 B-:气缸 B 缩回 A-:气缸 A 缩回也就是 A 缸先动作,A 到位后触发 B 缸伸出;随后 B 缸缩回,最后 A 缸回到初始位置。
模型中的几个关键设置
模型运行环境为Sysplorer + Modelica,依赖TYPneumatics气动组件库。
主要仿真参数为:
StopTime = 20 s Interval = 0.02 s Tolerance = 1e-6气源压力设为0.6 MPa。
两个气缸的主要参数分别为:
| 参数 | 气缸A | 气缸B |
|---|---|---|
| 缸径 | 50 mm | 40 mm |
| 杆径 | 20 mm | 16 mm |
| 行程 | 200 mm | 150 mm |
在该模型中,阀2和阀5采用带气动控制接口的DirectionalValve24作为主换向阀,通过左右控制端的压力改变阀芯位置;其余几个控制阀采用 3/2 气动信号阀。
因此主换向动作并不是直接用布尔量或电信号控制,而是通过气动控制端口完成。
另外一个比较关键的处理是行程反馈信号的等效实现。
真实气动系统中,行程阀通常由气缸运动到指定位置后机械触发。而在这个模型中,采用了:
Pulse → PressureSource → 行程阀的方式,在指定时刻产生一段气动控制压力,等效气缸到位后触发行程阀的过程。
因此,这个模型能够保持气动控制信号的传递形式,但实际动作时刻也会受到Pulse参数的直接影响。
仿真结果:两个气缸实际是怎么动作的?
仿真完成后,首先观察气缸 A 和气缸 B 的位移曲线。
从曲线中可以比较清楚地看到两个气缸的动作过程。
气缸 A 首先伸出,在约0.7 s左右达到最大行程:
A ≈ 200 mm随后气缸 B 开始动作,并在约3.3 s左右伸出到:
B ≈ 150 mm到这里,前两个动作符合预期:
A+ → B+但继续观察缩回阶段,会发现一个比较明显的问题。
气缸 A 在约5.6 s左右已经缩回到零位,而气缸 B 一直到约7.4 s才缩回。
所以从实际位移曲线来看,本次仿真的动作顺序实际上是:
A+ → B+ → A- → B-而模型原本标注的目标顺序是:
A+ → B+ → B- → A-也就是说:
两个气缸的伸出顺序是正确的,但缩回顺序与设计目标相反。
这一点很值得注意,因为如果只看“模型是否能够正常仿真”和“两个气缸是否都完成了往复运动”,这个问题很容易被忽略。
为什么气缸A会提前缩回?
回头检查模型中的触发参数,可以找到一个比较直接的原因。
启动阀对应的脉冲pulseStart设置为:
width = 12 period = 40按照当前参数,启动控制信号持续到约5 s左右。
当启动信号释放后,控制阀状态随之发生变化,气缸 A 的主换向阀复位,因此 A 缸开始提前缩回。
这与图3中的结果基本对应:
约 5 s:启动信号释放 约 5.6 s:气缸 A 缩回而按照原本的设计逻辑,应该先完成 B 缸缩回,再触发 A 缸缩回。
因此这里暴露出的并不是“气缸不能动作”,而是一个更具体的控制节拍问题。
由于模型中的行程反馈采用Pulse + PressureSource进行等效,所以:
startTime width period这些脉冲参数实际上已经参与到了顺序控制逻辑中。
如果几个脉冲之间的时间关系没有正确匹配,即使气动回路能够正常连接和运行,最终得到的动作顺序仍然可能与设计目标不同。
这也是仿真的一个实际价值:不仅验证模型能不能运行,还能通过结果曲线检查控制逻辑是否真的正确。
主供气压力是否稳定?
除了两个气缸的位移,我还观察了减压阀出口的主供气压力。
气源设定压力为:
0.6 MPa也就是约:
600 kPa从图4可以看到,系统启动后主供气压力很快上升到接近 600 kPa,并在大部分时间保持稳定。
在几个气缸动作和换向时刻,压力出现了比较明显的瞬时下降。
例如气缸动作过程中,压力会短暂下降到约480~500 kPa,随后重新恢复到 600 kPa 左右。
这种变化与气缸换向和瞬时用气有关。
整体来看,压力波动主要集中在动作瞬间,并没有出现持续性的供气压力下降。两个气缸动作完成后,系统压力重新稳定在设定值附近。
因此,从供气侧来看,模型中的气源处理和减压环节能够维持基本稳定的主供气。
这个案例适合看什么?
跑完整个模型后,我觉得这个案例比较有价值的地方不只是“两根气缸能不能动”,而是可以比较直观地观察几个气动系统中的基础问题。
1. 主气路和控制气路如何配合
主气路负责向气缸提供压缩空气,控制气路则通过压力信号改变主换向阀的状态。
整个控制过程可以理解为:
控制信号 ↓ 行程阀 ↓ 气动控制压力 ↓ 主换向阀 ↓ 气缸运动把这条链路放到完整模型中以后,比单独看阀件符号更容易理解。
2. 顺序控制不能只看“有没有动作”
本次仿真中,两个气缸都能够正常伸出和缩回,如果只验证这一点,很容易认为模型已经满足要求。
但把位移曲线与目标动作顺序放在一起比较,就能发现:
目标:A+ → B+ → B- → A- 实际:A+ → B+ → A- → B-这说明对于顺序控制系统而言,动作发生了并不等于动作逻辑正确。
3. 仿真结果可以反过来定位参数问题
发现动作顺序不一致后,再去检查pulseStart等触发参数,就能进一步定位到控制信号释放过早的问题。
这也是仿真相比直接搭建硬件比较方便的一点:不仅能看到最终结果,还可以沿着模型参数和控制链路继续排查原因。
这个模型也有一个明显的简化
需要说明的是,这个案例中的行程反馈并不是根据气缸实际位移自动产生,而是采用:
Pulse + PressureSource模拟到位后的气动压力触发。
真实系统中更接近:
气缸运动 ↓ 到达行程位置 ↓ 机械触发行程阀 ↓ 产生控制压力而当前模型更接近:
到达预设时间 ↓ Pulse触发 ↓ 产生控制压力 ↓ 控制行程阀因此它目前更适合用于气动顺序控制原理演示、气路逻辑验证和 Modelica 气动系统建模练习。
如果希望模型进一步接近真实系统,可以考虑让行程反馈直接与气缸实际位移关联。这样下一阶段动作什么时候发生,就由前一个气缸是否真正到位决定,而不是预先设定好触发时间。
小结
这个案例利用 TY 气动库搭建了一个完整的双气缸顺序控制回路,包括气源处理、主换向阀、行程反馈和两个双作用气缸。
从实际仿真结果来看:
气缸 A 可以伸出约 200 mm
气缸 B 可以伸出约 150 mm
两个气缸均能完成伸出和缩回
主供气压力大部分时间稳定在约 0.6 MPa
换向过程中会出现短时压力下降
实际动作顺序为
A+ → B+ → A- → B-与目标顺序
A+ → B+ → B- → A-存在差异顺序偏差可以进一步定位到触发脉冲参数的设置
所以这个模型除了可以用来理解气动顺序控制原理,也比较适合说明一个很实际的问题:
模型能够正常运行,不代表控制逻辑一定符合设计要求。对于顺序控制系统,最终还是需要结合气缸位移、压力等仿真结果逐项验证。
案例源码、模型文件以及相关说明可以在这里获取:
双气缸顺序控制系统案例
https://mohub.net/model/26115/summary