admin管理员组

文章数量:1531452

2024年6月20日发(作者:)

PLC的程序结构及其特点 - plc

下面介绍几种常见的plc的程序结构及其特点:

1.某些国外的小型PLC的程序结构

这些PLC的用户程序由主程序、子程序和中断程序组成。在每一

个扫描循环周期,CPU都要调用一次主程序。主程序可以调用子程序,

小型控制系统可以只有主程序。中断程序用于快速响应中断事件。在

中断事件

发生时,CPU将停止执行当时正在处理的程序或任务,去执行用户编

写的中断程序。执行完中断程序后,继续执行被暂停执行的程序或任

务。它们的子程序和中断程序没有局部变量,子程序没有输入、输出

参数。

2.西门子的S7-200的程序结构

过程映像输入/输出(I/Q)、变量存储器V、内部存储器位M、定

时器T、计数器C等属于全局变量。S7-200的程序组织单元

(ProgramOrganizationalUnit,简称为POU)包括主程序、子程序和

中断程序。每个POU均有

自己的64字节局部变量,局部变量只能在它所在的POU中使用。与

此相反,全局变量可以在各POU中使用。

下面是子程序可以使用的局部变量:

1)TEMP(临时变量)是暂时保存在局部数据区中的变量。只有在执

行该POU时,定义的临时变量才被使用,POU执行完后,不再保存临

1

时变量的数值。

2)IN是由调用它的POU提供的输入参数。

3)OUT是返回给调用它的POU的输出参数(子程序的执行结果)。

4)IN_OUT是输入_输出参数,其初始值由调用它的POU传送给子

程序,并用同一变量将子程序的执行结果返回给调用它的POU。

主程序和中断程序的局部变量中只有临时变量TEMP。

具有输入、输出参数和局部变量的子程序易于实现结构化编程,

对于长期生产同类设备或生产线的厂家尤为有用。这些厂家的编程人

员为设备的各组件或工艺功能编写了大量的通用的子程序。即使不知

道子程序

的内部代码,只要知道子程序的功能和输入、输出参数的意义,就可

以通过程序之间的调用快速“组装”出满足不同用户要求的控制程序。

就好像用数字集成电路芯片组成复杂的数字电路一样。

子程序如果没有输入、输出参数,它和调用它的程序之间没有清

晰的接口,很难实现结构化编程。

子程序如果没有局部变量,它和调用它的程序之间只能通过全局

变量来交换数据,子程序内部也只能使用全局变量。将子程序和中断

程序移植到别的项目时,需要重新统一安排它们使用的全局变量,以

保证不会出现地址冲突。当程序很复杂,子程序和中断程序很多时,

这种重新分配地址的工作量非常大。

如果子程序和中断程序有局部变量,并且它们内部只使用局部变

量,不使用全局变量,因为与其他POU没有地址冲突,不需作任何改

2

动,就可以将子程序移植到别的项目中去。

3.西门子的S7-300/400的程序结构

S7-300/400将子程序分为功能(Function,或称为函数)和功

能块(FunctionBlock)。

S7-300/400的功能与S7-200的子程序基本上相同。它们均有输

入、输出参数和临时变量,功能的局部数据中的返回值实际上属于输

出参数。它们没有专用的存储区,功能执行结束后,不再保存临时变

量中的数据可以用全局变量来保存那些在功能执行结束后需要保存

的数据,但是会影响到功能的可移植性。 功能块是用户编写的有自

己专用的存储区(即背景数据块)的程序块,功能块的输入、输出参

数和静态变量存放在指定的背景数据

可以用全局变量来保存那些在功能执行结束后需要保存的数据,

但是会影响到功能的可移植性。

功能块是用户编写的有自己专用的存储区(即背景数据块)的程

序块,功能块的输入、输出参数和静态变量存放在指定的背景数据块

中,临时变量存储在局部数据堆栈中。每次调用功能块时,都要指定

一个背景数据块。功能块执行完后,背景数据块中的数据不会丢失,

但是不会保存局部数据堆栈中的数据。

功能块采用了类似于C++的封装的概念,将程序和数据封装在一

起,具有很好的可移植性。

S7-300/400的共享数据块可供所有的逻辑块使用。

4.IEC61131-3的程序结构

3

IEC61131-3是PLC的编程语言标准。IEC61131-3是世界上第一

个,也是至今为止唯一的工业控制领域的编程语言标准。IEC61131-3

有三种POU:程序、功能块和功能。

功能是有多个输入参数和一个输出参数(返回值)的POU,返回

值的名称与功能的名称相同,需要定义返回值的数据类型。调用具有

相同输入值的功能总是返回相同的结果。功能可以调用其他功能,但

是不能调用功能块或程序。功能可定义的局部变量有VAR和

VAR_INPUT。

功能块是有多个输入/输出参数和内部存储单元的POU,功能块

的输出参数值与其内部存储单元的值有关。功能块可以调用其他功能

块或功能,但是不能调用程序。 在调用功能块之前,必须在要调用

功能块的POU中为每次调用声明功能块的实例,操作系统将为每次调

用分配功能块专用的存储区

(类似于S7-300/400的背景数据块)。

4

本文标签: 子程序程序数据功能调用