当前位置:首页 > 财富探索 > 正文

线性化编程与结构化编程的不同点

来源:晓煜大发现

嗨~大家马年好呀!今天是马年的开工的第一篇文章。本期我们来讨论一下线性化编程与结构化编程的不同点,及如何选择!本期我们采用PLC的作为讲解,比较直观。不如足之处欢迎大家指出!

编程基本定义对比

线性化编程

线性化编程是将整个用户程序连续放置在一个循环程序块(OB1)中,按顺序执行的编程范式。这种结构与PLC所代替的硬接线继电器控制类似,CPU逐条地处理指令,体现了早期PLC编程的简单性和直观性。说白了就是一条路走到黑,所有功能从上往下写。

它的核心特点主要有:

结构简单:不带分支,一个程序块包含系统的所有指令。

执行方式:CPU循环扫描时不断地依次执行OB1中的全部指令

传统性:与传统的继电器控制逻辑相似,易于电气工程师理解

2d35a572-1faf-11f1-90a1-92fbcf53809c.png

结构化编程

结构化编程是将过程要求类似或相关的任务归类,形成通用解决方案的编程范式。该程序块编程时采用形式参数,可以通过不同的实际参数调用相同的程序块,体现了现代软件工程的模块化思想。

它的核心特点主要有:

模块化设计:将复杂任务分解成能够反映过程工艺、功能或可反复使用的单独解决的小任务

参数化调用:通过使用参数,可将块设计得十分灵活

代码重用性:块可以根据需要在不同地方以不同参数数据记录进行调用

优势对比

优点 缺点
线性化编程 结构简单直观:程序结构简单,不带分支,一个程序块包含系统的所有指令

易于理解:与传统继电器控制逻辑类似,CPU逐条处理指令,概念简单

快速实现:对于简单的控制任务,开发速度快,无需复杂的程序组织

CPU效率低下:每个扫描周期都要扫描执行所有指令,即使某些代码在大多数时候并不需要执行

代码重复:相同或类似操作需要重复编写相同程序

维护困难:程序结构不清晰,管理和调试不方便

结构化编程 高代码重用性:通用的数据和代码可以共享,编写通用程序块,提高编程和调试效率

编程结构清晰:适合于复杂的控制任务,结构层次分明

CPU利用率高:只有在需要时才调用相关的程序块,每次循环中不是所有的块都执行

技术门槛高:结构化编程必须对系统功能进行合理地分析、分解和综合,对编程设计人员的要求较高

前期设计复杂:需要进行详细的需求分析和系统设计

学习成本高:需要掌握程序组织单元、参数传递、数据管理等概念

举个例子多电机控制程序编写

//线性编程
Network1: 电动机1控制
LDI0.0// 启动按钮1
OQ4.0// 自锁
ANI0.1// 停止按钮1
=Q4.0// 电动机1输出
Network2: 电动机2控制
LDI1.0// 启动按钮2
OQ4.1// 自锁
ANI1.1// 停止按钮2
=Q4.1// 电动机2输出
代码重复度高,修改一个电机逻辑需要修改多处
//结构化编程


// FC1 - 通用电机控制功能块
FUNCTION_BLOCK FC1
VAR_INPUT
StartButton :BOOL;
StopButton :BOOL;
END_VAR
VAR_OUTPUT
MotorOutput :BOOL;
END_VAR
// OB1主程序调用
CALLFC1(StartButton := I0.0, StopButton := I0.1, MotorOutput => Q4.0)
CALLFC1(StartButton := I1.0, StopButton := I1.1, MotorOutput => Q4.1)
代码重用性高,参数化设计,只需修改FC1,所有调用处自动更新