3、AALC编程基础:IEC 61131-3标准概述、梯形图(LD)入门、结构化文本(ST)入门、功能块图(FBD)入门

好,咱们正式开始动手写程序了。

在敲第一行代码之前,有个东西必须得先搞清楚——IEC 61131-3标准。说白了,这就是PLC编程界的“普通话”。没有它,各家厂商各玩各的,你换个品牌就得重新学一门语言,那得多痛苦?

3.1 IEC 61131-3标准概述

这个标准定义了五种编程语言:梯形图(LD)、结构化文本(ST)、功能块图(FBD)、指令表(IL)和顺序功能图(SFC)。咱们AALC控制器全面支持这五种,但实际工程中,最常用的就是LD、ST和FBD这三种。

我个人习惯这样分:

  • 梯形图(LD):电气工程师的最爱,画起来像电路图,直观
  • 结构化文本(ST):像C语言,适合复杂算法和数学运算
  • 功能块图(FBD):图形化连线,适合信号流处理

你想想看,一个项目里往往三种语言混着用。我在做一条汽车焊装线时,主逻辑用LD,PID运算用ST,模拟量处理用FBD。各取所长,才是高手之道。

核心要点:IEC 61131-3标准的核心思想是“语言无关,逻辑统一”。不管用哪种语言写,最终编译成AALC控制器能执行的机器码。所以,选你顺手且适合场景的语言就行。

下面这张图,是我自己梳理的AALC编程语言选择逻辑,帮你快速定位该用哪种:

AALC编程语言选择逻辑图 控制任务是什么? 逻辑/顺序控制 梯形图(LD) 复杂算法/数学运算 结构化文本(ST) 信号流/模拟量处理 功能块图(FBD) 💡 实际项目常混合使用 例如:主框架用LD,复杂计算用ST,模拟量用FBD

3.2 梯形图(LD)入门

梯形图,说白了就是“画电路”。左边一根竖线代表火线,右边一根竖线代表零线,中间画触点、线圈。电气工程师上手最快,因为跟继电器电路几乎一模一样。

举个例子,一个最简单的自锁电路:

||---[ 启动按钮 ]----[ 停止按钮 ]----( 电机运行 )---|
|                                                      |
|   电机运行触点 ----+                                  |
|                   |                                  |
|    [ 热继电器 ]----+                                  |

嗯,这里要注意:梯形图的执行顺序是从左到右、从上到下。跟实际电路不一样,实际电路是同时导通的。我在调试一个包装机项目时,就因为这个“同时”和“顺序”的区别,闹过笑话——明明电路图看着没问题,电机就是抖。后来才发现,梯形图里触点扫描有先后,得加个中间变量做同步。

小技巧:写LD时,把常开触点想象成“按钮按下就通”,常闭触点想象成“按钮没按时通”。这样画起来不容易乱。

3.3 结构化文本(ST)入门

ST语言,如果你写过C语言,那上手就是分分钟的事。它用文本描述逻辑,特别适合做数学运算、字符串处理、数组操作这些梯形图搞不定的活儿。

看一个简单的电机启动/停止逻辑:

// 电机控制 - ST版本
IF Start_PB AND NOT Stop_PB THEN
    Motor_Run := TRUE;
ELSIF Stop_PB OR Overload THEN
    Motor_Run := FALSE;
END_IF;

// 延时启动
IF Motor_Run THEN
    Timer_Start(IN := TRUE, PT := T#5S);
    IF Timer_Start.Q THEN
        Motor_Accelerate := TRUE;
    END_IF;
ELSE
    Timer_Start(IN := FALSE);
    Motor_Accelerate := FALSE;
END_IF;

我个人习惯把ST用在三个地方:PID运算、配方管理、通讯协议解析。有一次做多轴同步控制,用梯形图写数学公式简直要命,换成ST,三行搞定。

注意:ST虽然灵活,但别滥用。纯逻辑控制用ST写,后期维护的人会骂娘的。我见过一个项目,全部用ST写,结果电气工程师看不懂,机械工程师也看不懂,最后只能我自己去改。记住:合适的语言用在合适的地方

3.4 功能块图(FBD)入门

FBD,你可以把它想象成“搭积木”。把一个个功能块(比如与门、或门、定时器、PID)拖出来,用线连起来。数据从左流到右,逻辑一目了然。

举个例子,一个简单的“与或”逻辑:

  [传感器A] ---|   |
               |AND|---[报警灯]
  [传感器B] ---|___|

  [急停按钮] ---|   |
               |OR |---[蜂鸣器]
  [手动确认] ---|___|

FBD最大的好处是:可读性极强。你不需要懂编程,看连线就知道信号怎么走的。我在做水处理项目时,模拟量处理全部用FBD,甲方工程师一看就懂,验收特别顺利。

不过,FBD也有短板——逻辑复杂了,线会乱成一团。我建议一个FBD网络别超过10个功能块,超过就拆成子程序。

总结一下:

语言 适合场景 不适合场景
LD 开关量逻辑、顺序控制、急停回路 复杂数学运算、字符串处理
ST 算法、PID、配方、通讯 纯继电器逻辑(维护困难)
FBD 模拟量处理、信号流、简单逻辑 超复杂逻辑(线太多)

好了,三种语言的基础就这些。别急着背语法,先理解它们各自是干什么的。下一节咱们会拿一个实际项目,三种语言各写一遍,你就能感受到它们的区别了。

专注资料整理