返回主站|会员中心|保存桌面

三菱电机服务商    

PLC、变频器、伺服驱动、触摸屏,机器人

联系方式
  • 联系人:吴经理
  • 电话:18576370666
  • 邮件:18576370666@163.com
新闻分类
  • 暂无分类
站内搜索
 
首页 > 新闻中心 > 三菱结构化编程学习!
新闻中心
三菱结构化编程学习!
发布时间:2025-10-19        浏览次数:1        返回列表

三菱结构化编程是基于 IEC 61131-3 标准的模块化编程方法,核心是将复杂程序拆分为功能块(FB)、功能(FC)、程序组织单元(POU) 等独立模块,提升代码的复用性、可读性和维护性。以下从核心概念、学习路径、实战案例、关键技巧四个维度,系统梳理三菱三菱结构化编程的学习方法:

一、先搞懂结构化编程的核心概念(区别于传统线性编程)

相比传统的 “从头到尾” 线性编程(如三菱早期的 F 系列 PLC),结构化编程的核心是 “模块化拆分”,需先理解三个关键要素:

  1. 程序组织单元(POU)整个程序的 “大框架”,包括:

    • 主程序(Main):程序入口,负责调用其他模块(如 FB、FC),自身不处理具体逻辑;

    • 功能(FC,Function):无内部状态的 “工具模块”,输入参数→处理→输出结果(类似数学函数),如 “计算平均值”“单位转换”,调用后不保存数据(如 FC1 被调用 100 次,每次都是独立计算);

    • 功能块(FB,Function Block):带内部状态的 “独立单元”,有自己的 “记忆”(内部变量断电保持),如 “电机控制”“计数器”,调用时需分配背景数据块(DB)存储状态(如 FB1 调用两次,需两个不同 DB,分别记录两台电机的运行状态)。

  2. 数据类型与变量

    • 基础类型:BOOL(布尔)、INT(整数)、REAL(浮点数)等;

    • 自定义类型(UDT):将多个基础类型组合成新类型,如 “工件信息”=INT(长度)+REAL(重量)+BOOL(合格标志),简化变量管理;

    • 变量作用域:全局变量(整个程序可访问)、局部变量(仅在模块内部生效,如 FB 的输入 / 输出参数)。

  3. 调用与实例化

    • FC 调用:直接输入参数即可(如FC_计算平均值(IN1, IN2, OUT));

    • FB 实例化:调用时必须分配背景 DB(如FB_电机控制_DB1(启动信号, 停止信号)),DB1 会保存该 FB 的当前状态(如是否运行、累计时间)。

二、分阶段学习路径(从软件操作到实战)

以三菱主流 PLC(FX5 系列、Q 系列)和编程软件 GX Works3 为例,分 3 个阶段进阶:

阶段 1:掌握软件操作与基础模块创建

  1. 软件环境熟悉

    • 新建结构化工程:GX Works3 中选择 “结构化工程”(区别于 “简单工程”),勾选 “支持 IEC 61131-3”;

    • 理解工程结构:左侧 “导航窗口” 中,“程序” 文件夹存放 POU,“数据” 文件夹存放 DB 和 UDT。

  2. 创建第一个 FC(功能)示例:写一个 “两数相加” 的 FC,输入 IN1、IN2(INT 类型),输出 OUT(INT 类型)。

    • 步骤:右键 “程序”→新建→功能(FC)→命名 “FC_加法”;

    • 编辑界面:左侧定义变量(IN1:INT, IN2:INT, OUT:INT),右侧梯形图 / ST 语言编写逻辑(OUT := IN1 + IN2;);

    • 调用:在主程序中拖拽 “FC_加法”,关联实际变量(如 IN1=D0, IN2=D2, OUT=D4)。

  3. 创建第一个 FB(功能块)示例:写一个 “电机启停控制” FB,包含启动、停止、过载保护逻辑,记录运行时间。

    • 输入(IN):启动信号(BOOL)、停止信号(BOOL)、过载信号(BOOL);

    • 输出(OUT):运行状态(BOOL)、故障报警(BOOL);

    • 内部变量(TEMP/STATIC):运行时间(INT,STATIC 类型才会被 DB 保存);

    • 步骤:右键 “程序”→新建→功能块(FB)→命名 “FB_电机控制”,分配背景 DB(如 DB1);

    • 定义变量:

    • 编写逻辑:

      stl

    • // ST语言示例
      IF 停止信号 OR 过载信号 THEN
          运行状态 := FALSE;
          故障报警 := 过载信号;
      ELSIF 启动信号 THEN
          运行状态 := TRUE;
          运行时间 := 运行时间 + 1;  // 每扫描周期+1(需配合定时器实际计时)
      END_IF;
    • 实例化调用:在主程序中调用FB_电机控制_DB1(启动按钮, 停止按钮, 热继信号, 电机运行灯, 报警灯),DB1 会自动记录该电机的运行时间和状态。

阶段 2:学习模块化设计思维(核心难点)

结构化编程的关键不是 “会用 FB/FC”,而是 “如何拆分模块”,遵循以下原则:

  1. 按功能拆分:将生产线按 “工序” 或 “设备” 拆分为独立 FB,如:

    • 一条包装线可拆分为:FB_上料机构FB_输送机构FB_封口机构FB_下料机构

    • 每个 FB 只处理自身逻辑(如FB_输送机构仅负责启停、速度调节、故障检测),通过输入 / 输出参数与其他 FB 交互(如FB_上料机构.完成信号作为FB_输送机构.启动信号)。

  2. 高内聚低耦合

    • 内聚:一个模块只做一件事(如FB_计数器只负责计数,不掺杂报警逻辑);

    • 耦合:模块间通过参数传递数据,避免直接读写对方的内部变量(如FB_电机A不应直接修改FB_电机B.DB的数据)。

  3. 复用性设计

    • 通用功能做成 FC:如 “定时器延时”“数据滤波”“报警复位”,可被多个 FB 调用;

    • 同类设备用同一 FB 实例化:如 3 台输送带,只需一个FB_输送控制,通过 3 个不同 DB(DB1/DB2/DB3)分别控制,避免重复编写 3 套代码。

阶段 3:结合实际场景实战(以生产线为例)

以 “小型装配生产线” 为例,完整结构化程序设计流程:

  1. 需求分析:生产线包含上料、搬运、检测、下料 4 个工位,需实现自动循环、手动操作、报警功能。

  2. 模块拆分

    • 全局变量:总启动、总停止、急停(供所有模块使用);

    • 工位 FB:FB_上料FB_搬运FB_检测FB_下料(各带启动、完成、故障信号);

    • 通用 FC:FC_延时启动(处理工位间的等待逻辑)、FC_报警处理(统一管理故障信息);

    • 主程序:调用各 FB,按 “上料完成→搬运启动→检测启动→下料启动→循环” 的逻辑串联。

  3. 关键代码示例(主程序 ST 语言)

    stl

  4. // 主程序逻辑
    IF 总停止 OR 急停 THEN
        // 停止所有工位
        FB_上料_DB1(启动:=FALSE, ...);
        FB_搬运_DB2(启动:=FALSE, ...);
        ...
    ELSIF 总启动 THEN
        // 上料工位启动
        FB_上料_DB1(启动:=TRUE, 完成=>上料完成);
        
        // 上料完成后,启动搬运
        IF 上料完成 THEN
            FB_搬运_DB2(启动:=TRUE, 完成=>搬运完成);
        END_IF;
        
        // 搬运完成后,启动检测(通过FC延时1秒)
        FC_延时启动(IN:=搬运完成, 延时:=1000, OUT=>检测启动);
        FB_检测_DB3(启动:=检测启动, 完成=>检测完成);
        
        // 检测完成后启动下料,下料完成后循环
        IF 检测完成 THEN
            FB_下料_DB4(启动:=TRUE, 完成=>下料完成);
            IF 下料完成 THEN
                上料完成 := FALSE;  // 复位标志,准备下次循环
            END_IF;
        END_IF;
    END_IF;
  5. 调试技巧

    • 用 GX Works3 的 “监视模式” 查看各 FB 的背景 DB,实时监控内部变量(如FB_上料_DB1.运行状态);

    • 单个模块调试通过后再联调,避免多个模块问题交织。

三、避坑指南与进阶技巧

  1. 变量管理

    • 优先用 UDT 定义复杂数据(如 “产品参数”),避免大量零散变量;

    • 全局变量集中放在 “全局 DB” 中,注明用途(如全局DB.设备状态),减少 “魔法数字”。

  2. FB 与 FC 的选择

    • 无状态逻辑用 FC(如计算、转换);

    • 有状态保持(需记录历史)用 FB(如电机、阀门,需记住当前是否运行)。

  3. 版本控制

    • 复杂工程建议用 GX Works3 的 “版本管理” 功能,或导出 XML 备份,避免模块修改后无法回溯。

  4. 兼容传统梯形图:三菱结构化编程支持 “梯形图 + ST 语言混合编程”,可在 FB 内部用梯形图实现简单逻辑,ST 语言实现复杂运算,兼顾习惯与效率。

四、学习资源推荐

  • 官方手册:《GX Works3 结构化编程入门》《三菱 PLC 功能块应用指南》(官网可下载);

  • 视频教程:三菱电机官方培训视频(B 站搜索 “三菱结构化编程”);

  • 实战练习:用 GX Works3 模拟 “自动门控制”“交通灯控制”,尝试用 FB 拆分逻辑(如FB_开门FB_关门FB_传感器检测)。

从简单的 FB 创建开始,逐步过渡到完整生产线的模块化设计,重点培养 “拆分问题” 的思维 —— 这才是结构化编程的核心价值。

收缩
  • QQ咨询

  • 电话咨询

  • 18576370666
  • 添加微信客服