天天PLC培训学校欢迎您!

|在线报名
天天PLC培训学校
课程导航

PLC编程结构化文本实战技巧

logo
来源:天天PLC

更新:2026/3/7|关注39

资讯详情

核心语法要点

数据类型

ST支持标准数据类型,选择合适类型可优化性能。

VAR
    bRun    : BOOL := FALSE;   // 布尔
    nCount  : INT := 0;        // 整数
    fSpeed  : REAL := 0.0;     // 浮点
    aTemp   : ARRAY[1..8] OF REAL; // 数组
END_VAR

控制结构

条件判断和循环语句使逻辑清晰。

IF bStart AND NOT bFault THEN
    bRun := TRUE;
ELSIF bStop THEN
    bRun := FALSE;
END_IF;

FOR i := 1 TO 8 DO
    aTemp[i] := 25.0;
END_FOR;

函数与函数块

函数无状态,函数块可保存内部状态。

FUNCTION Add : INT
VAR_INPUT a,b : INT; END_VAR
Add := a + b;
END_FUNCTION

FUNCTION_BLOCK FB_Motor
VAR_INPUT bEnable : BOOL; END_VAR
VAR_OUTPUT bRunning : BOOL; END_VAR
VAR eState : (STOP,RUN); END_VAR

CASE eState OF
    STOP: IF bEnable THEN eState := RUN; END_IF;
    RUN: bRunning := TRUE;
END_CASE;
END_FUNCTION_BLOCK

实战案例:输送带控制

需求概述

  • 电机启停控制(手动/自动模式)

  • 物料检测与计数

  • 故障保护(过载、堵转)

  • 速度调节

主程序结构

PROGRAM MAIN
VAR
    fbConv : FB_Conveyor;
    fbCnt  : FB_Counter;
    bAuto  : BOOL := TRUE;
END_VAR

fbConv(bAutoMode:=bAuto, bSensor:=DI_Sensor, bMotor=>DO_Motor);
fbCnt(bTrigger:=fbConv.bPassed, nTotal=>HMI.nCount);
END_PROGRAM

输送带控制函数块

FUNCTION_BLOCK FB_Conveyor
VAR_INPUT bAutoMode,bSensor : BOOL; END_VAR
VAR_OUTPUT bMotor : BOOL; END_VAR
VAR eState : (IDLE,RUN); END_VAR

CASE eState OF
    IDLE:
        bMotor := FALSE;
        IF (bAutoMode AND bSensor) OR (NOT bAutoMode AND bStart) THEN
            eState := RUN;
        END_IF;
    RUN:
        bMotor := TRUE;
        IF (bAutoMode AND NOT bSensor) OR bStop THEN
            eState := IDLE;
        END_IF;
END_CASE;
END_FUNCTION_BLOCK

计数器函数块

FUNCTION_BLOCK FB_Counter
VAR_INPUT bTrigger,bReset : BOOL; END_VAR
VAR_OUTPUT nTotal : DINT; END_VAR
VAR bLast : BOOL := FALSE; END_VAR

IF bTrigger AND NOT bLast THEN
    nTotal := nTotal + 1;
    IF nTotal < 0 THEN nTotal := 0; END_IF; END_IF; bLast := bTrigger; IF bReset THEN nTotal := 0; END_IF; END_FUNCTION_BLOCK

调试关键

  1. 状态机测试:验证所有状态转换。

  2. 边界条件:测试计数器溢出、传感器异常。

  3. 性能监控:关注扫描时间。

  4. 安全验证:确保急停、过载保护有效。

优化技巧

可读性提升

  • 命名规范:b前缀布尔,n前缀整数,f前缀浮点。

  • 注释精简:只在复杂逻辑处添加。

  • 模块单一职责:每个函数块完成一个功能。

效率优化

  • 循环内避免耗时操作。

  • 使用最小适用数据类型。

  • 谨慎使用指针和间接寻址。

健壮性设计

  • 验证所有外部输入范围。

  • 关键操作增加错误检测。

  • 重要设备添加心跳监控。

性能数据

表格


任务 梯形图时间 ST时间 提升
浮点运算100次 1.8ms 0.9ms 50%
数据排序50个 2.3ms 1.2ms 48%
状态机处理 1.5ms 0.8ms 47%

总结

结构化文本为复杂PLC控制提供了高效工具。通过模块化设计、清晰语法和优化技巧,可显著提升代码质量和执行效率。

原文:https://www.gongkong.com/article/202602/plc-st-function-Conveyor-belt-control

  • 培训课程

在线咨询
咨询电话
18501512500
联系人:王老师
工作时间:7*24
联系微信
天天PLC培训