4. 产线控制编程基础与IEC 61131-3语言
在Modicon产线控制系统中,IEC 61131-3标准定义了五种编程语言:梯形图(LD)、功能块图(FBD)、结构化文本(ST)、顺序功能图(SFC)以及指令表(IL)。不同语言并非互相替代,而是各自适配不同的控制场景。理解它们的适用边界,是编写可维护、可调试产线程序的前提。
四种主力语言的适用场景
LD(梯形图)最贴近继电器逻辑,适合表达“条件—动作”型的联锁与启停控制。例如一条输送线上“急停未按下 且 安全门关闭 且 电机过载未触发”才允许启动,用LD画成串并联触点非常直观,现场电工也能直接读图排查。但LD在数值运算、循环和复杂判断上会迅速变得臃肿。
FBD(功能块图)以功能块和连线表达信号流,适合模拟量处理、PID回路、信号选择与限幅。例如将4~20mA压力信号经量程换算块、滤波块、报警比较块串联,数据流向一目了然。FBD的强项是“信号链”,弱项是顺序逻辑和条件分支。
ST(结构化文本)类似Pascal的高级语言,适合数学计算、数组与结构体处理、状态机编码、循环遍历和复杂条件判断。例如计算多工位节拍、对配方数组做批量赋值、实现字符串与枚举处理,ST比图形语言更紧凑可靠。它不适合直接表达简单联锁,因为可读性反而不如LD。
SFC(顺序功能图)面向“步—转换”模型,适合有明确阶段推进的工艺流程,如灌装机的“上瓶→灌装→封盖→出瓶”,或清洗设备的“预洗→碱洗→漂洗→干燥”。SFC把每一步的动作和步间转换条件分开描述,使流程进度、暂停、复位和异常跳转都清晰可控。
变量命名规范
产线程序的可维护性,很大程度上取决于变量命名是否统一。推荐采用“区域_设备_功能_类型”的分段结构,用下划线分隔,全部使用英文或拼音缩写,避免中文变量名和空格。例如:
L1_CV01_Run_Cmd // 1线1号输送机 运行命令(BOOL,输出)
L1_CV01_Run_Fb // 运行反馈(BOOL,输入)
L1_CV01_Speed_PV // 速度过程值(REAL,输入)
L1_CV01_Speed_SP // 速度设定值(REAL,HMI写入)
L1_CV01_Fault_Alm // 故障报警(BOOL)
L1_CV01_RunTime_Acc // 累计运行时间(TIME)
后缀约定要固定:_Cmd表示命令输出,_Fb表示反馈输入,_PV表示过程测量值,_SP表示设定值,_Alm表示报警,_Acc表示累计量。这样即使不看注释,也能判断变量方向和用途。命名中避免使用Start、Stop这类无区域限定的通用词,防止跨设备重名冲突。
数据类型选择
IEC 61131-3定义了标准数据类型,产线编程中常用的有:BOOL用于按钮、限位、接触器反馈等开关量;INT/DINT用于计数器、工位号、配方编号;REAL用于温度、压力、速度等模拟量;TIME用于延时和累计时间;STRING用于配方名称和报警文本。选型原则是够用即可,不要一律用DINT或REAL,否则既浪费内存又降低可读性。模拟量输入通常先经量程换算为REAL工程量,再参与比较和PID运算。
任务与程序结构设计
Modicon控制器采用“任务—程序—功能块”的层级结构。任务决定执行周期和优先级,程序是组织单元,功能块是代码复用单元。典型配置如下:
- MAST主任务:周期10~20ms,执行全部常规逻辑,包括联锁、模拟量处理、HMI刷新。
- FAST快速任务:周期2~5ms,执行高速计数、位置捕获、快速互锁等对响应时间敏感的逻辑。
- AUX辅助任务:周期100ms或事件触发,执行累计时间统计、报警记录、通信数据打包等非实时性工作。
程序组织上,建议按“设备单元”划分程序段,每个单元内部再按“输入映射—逻辑处理—输出映射”排列。例如输送机单元:先读取L1_CV01_Run_Fb和L1_CV01_Fault_Alm,再执行启停联锁和速度给定,最后写L1_CV01_Run_Cmd。这样扫描顺序清晰,调试时能快速定位信号在哪一段被改变。
综合来看,语言选型没有绝对优劣,关键是让代码结构与产线对象的物理结构和控制流程对应起来。LD管联锁、FBD管信号、ST管计算、SFC管流程,再配合统一的命名和清晰的任务划分,程序才能在长期运行和后续改造中保持可读、可查、可改。