13296444375

全站搜索

首页 / doinb雷竞技 / PLC 子程序调用:用 “电机启停子程序” 案例,理解子程序参数传递逻辑
返回

PLC 子程序调用:用 “电机启停子程序” 案例,理解子程序参数传递逻辑

浏览次数:39 分类:doinb雷竞技 分类:52raybet

摘要: 本文通过一个“电机启停控制”的子程序案例,形象地类比“配方”与“食材”的关系,帮助初学者彻底理解PLC子程序的参数传递(IN, OUT, IN_OUT)机制。

一、 为什么需要子程序?——从“做菜”说起

假设你要控制10台相同的电机,每台都有“启动”、“停止”按钮,“运行”指示灯和“故障”信号。如果每台电机都写一遍相同的梯形图逻辑,程序会变得冗长且难以维护。

子程序就像一个通用的“做菜配方”,比如“炒青菜”。配方里定义了步骤:放油、下菜、翻炒、调味。而参数就是每次炒菜时用的具体食材:这次是油菜,下次是菠菜。

二、 创建“电机控制”子程序与参数定义

我们创建一个名为MC_Motor的子程序,并定义它的“接口”(即参数表):

  • 输入参数:

    • i_Start (IN BOOL): // 启动按钮,相当于“油”

    • i_Stop (IN BOOL): // 停止按钮,相当于“盐”

    • i_Fault (IN BOOL): // 故障信号,相当于“火候”

  • 输出参数:

    • o_Run (OUT BOOL): // 运行状态输出,相当于“成菜”

    • o_Alarm (OUT BOOL): // 报警输出

  • 输入输出参数:

    • io_RunCond (IN_OUT BOOL): // 一个保持型的运行条件,它既是输入也是输出,相当于“锅里的底味”

注意: IN参数是子程序只能读取的“食材”,OUT是子程序加工后产出的“菜品”,IN_OUT是子程序可以读取并修改的“调料罐”。

三、 编写子程序内部逻辑

                                                                                                                                      在MC_Motor子程序内部,00我们编写一个标准的启保停电路:

(注:为简化,io_RunCond的使用略复杂,可理解为需要记忆的上次状态,此处用%M0.0替代其功能)

四、 调用子程序并传递参数

在主程序中,我们可以多次调用这个“配方”,为每台电机提供各自的“食材”。

  • 调用电机1:

    • i_Start := %I0.0 // 将物理输入点I0.0(启动按钮1)传递给子程序

    • i_Stop := %I0.1 // 停止按钮1

    • o_Run => %Q0.0 // 将子程序的运行结果输出到物理输出点Q0.0(接触器1)

    • o_Alarm => %M100.0 // 将报警输出到内部标志位M100.0

  • 调用电机2:

    • i_Start := %I0.2 // 启动按钮2

    • i_Stop := %I0.3 // 停止按钮2

    • o_Run => %Q0.1 // 接触器2

    • o_Alarm => %M100.1 // 报警2

五、 核心理解:参数传递的逻辑

  • IN参数: 是单向的。调用时,将外部变量(如%I0.0)的复制给子程序内部的i_Start。子程序内部如何修改i_Start,都不会影响外部的%I0.0

  • OUT参数: 是单向的。子程序执行完毕后,将内部o_Run最终结果复制给外部变量(如%Q0.0)。

  • IN_OUT参数: 是双向的。调用时,将外部变量的内存地址都传递给子程序。子程序直接在这个内存地址上操作,所以它的修改会直接影响外部变量。

总结: 子程序通过参数化,实现了代码的高度复用和结构化。理解IN、OUT、IN_OUT三种参数的数据流向,是灵活运用子程序的关键。

点击取消回复

    分类

    在线客服x

    客服
    顶部 回到顶部
    Baidu
    pc版雷竞技