首页 百科知识 -可编程控制器的程序结构设计

-可编程控制器的程序结构设计

时间:2022-10-21 百科知识 版权反馈
【摘要】:在程序设计中,程序结构设计与数据结构设计是程序设计的重要内容。它分成不同的项目,这样,一个很复杂的控制任务的结构设计,就被简化为各个CPU程序的结构设计。在进行某项工程过程控制或某种机器控制进行程序设计时,存在有部分控制逻辑常常被重复使用。这样,可以编一些通用的指令块,以便控制一些相似或重复的功能,避免重复程序设计工作。

4.4.2 S7-200可编程控制器的程序结构设计

熟悉了PLC的基本控制指令后,就可以进行PLC系统的程序设计。在程序设计中,程序结构设计与数据结构设计是程序设计的重要内容。合理的程序结构与PLC内存资源的合理分配使用,不仅决定着应用程序的编程质量,而且对编程周期以及程序调试都有很大的影响。在系统设计时,对过程或设备的分解以及创建的各项功能说明书,是程序结构设计与数据设计的主要技术依据。

S7不仅从不同层次充分支持合理的程序结构设计,而且也简化了结构设计的复杂程度。一个复杂的自动化过程可以被分解并定义为一个或多个项目(Project),而对于每个项目,又可以进一步分解并定义给一个或多个CPU,每个CPU有一个控制程序(CPU_PROGRAM)。它分成不同的项目,这样,一个很复杂的控制任务的结构设计,就被简化为各个CPU程序的结构设计。项目间或项目中的各CPU程序之间,能以某种方式联网,实现信息共享。如在S7协议支持下,MPI网以全局数据通信的方式可方便地建立起联系,实现一个项目中各CPU共享信息。典型的过程控制任务是只有一个项目,该项目下也仅有一个CPU程序。

每一个CPU程序又可依据时间特性或事件触发特性的差异分类编入不同的组织块(OB)中。例如,需要以固定时间间隔循环执行的那部分程序编入组织块OB35中,为PLC正常运行而需进行初始化的程序编入组织块OB100中。又如,由硬件触发的中断服务程序编入组织块OB40中,对程序执行中产生的同步错误的响应处理程序编入组织块121或组织块122等。

S7-200的程序有三种:主程序、子程序、中断程序。主程序只有一个,名称为OB1。子程序可以达到64个,名称分别为SBR0~SBR63。子程序可以由子程序或中断程序调用。中断程序可以达到128个,名称分别为INT0~INT127。中断方式有输入中断、定时中断、高速计数中断、通信中断等中断事件引发,当CPU响应中断时,可以执行中断程序。

为了适应设计程序的不同需求,STEP 7为设计程序提供了三种程序设计方法,即线性化编程、分块式编程以及结构化编程。

1)线性化编程

线性化编程就是将用户程序按照顺序连续放置在一个指令块内,比如写在OB1中。即一个简单的程序块内包含系统的所有指令。线性化编程不带分支,通常是OB1程序按事先准备好的顺序执行每一条指令,它类似于硬接线的继电器逻辑,所有的指令都在一个块内,此方法适合于单人编写程序的工程。如图4-33所示的线性结构,显然,线性程序结构简单,一目了然。但是,当控制工程大到一定程度之后,仅仅采用线性程序就会使整个程序变得庞大而难以编制、难以调试了。由于只有一个程序文件,软件管理的功能相对简单。但是,由于所有的指令都在一个块内,即使程序的某些部分并没有使用,每个扫描周期所有的程序都要执行一次。这时,此种方法不能有效地利用CPU。另外,如果在程序中有多个设备,其指令相同,但参数不同,将只能用不同的参数重复编写这段控制程序。

img327

图4-33 线性结构

2)分块式编程

分块式编程是把一项控制任务分成多个小的任务块,每个任务块的控制任务根据具体情况分别放到子程序中,或者放到中断程序中。CPU通过组织块OB内指令不断地调用这些子程序或者被中断程序。在分块式编程中,主循环程序和被调用的块之间仍没有数据的交换。但是,每个功能区被分成不同的块。这样就易于几个人同时编程,而相互之间没有冲突。另外,把程序分成若干小块,将易于对程序调试和查找故障。OB1中的程序包含有调用不同块的指令。由于每次循环中不是所有的块都执行,只有需要时才调用有关的程序块,这样,CPU将更有效地得到利用。一些用户对模块化编程不熟悉,开始时此方法看起来没有什么优点,但是,一旦理解了这个技术,编程人员将可以编写更有效和更易于开发的程序。

3)结构化编程

结构化程序把过程要求的类似或相关的功能进行分类,并试图提供可以用于几个任务的通用解决方案。向指令块提供有关信息(以参数形式),结构化程序能够重复利用这些通用模块。

OB1(或其他块)中的程序都可以调用这些通用执行块,和分块式编程不同,通用的数据和代码可以共享。在进行某项工程过程控制或某种机器控制进行程序设计时,存在有部分控制逻辑常常被重复使用。此类情况的程序设计可以用结构化程序设计方法设计用户程序。这样,可以编一些通用的指令块,以便控制一些相似或重复的功能,避免重复程序设计工作。S7-200要求任何被其他程序调用的块必须在调用前被设计出来,因此,静态变量功能块FB和动态变量功能块FC要在OB1程序之前设计并存在。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈