一文看懂西门子PLC的程序结构

汽车起重机 3年前 ( 2020-12-18 05:51:47 ) 0条评论
摘要: 所谓PLC程序结构,就是构成PLC中PLC程序的各种网络或“功能程序段”的组织管理形式。无论PLC控制系统有多复杂,归根结底,PLC用户程序是由大量基本编程指令组成...

所谓PLC程序结构,就是构成PLC中PLC程序的各种网络或“功能程序段”的组织管理形式。

无论PLC控制系统有多复杂,归根结底,PLC用户程序是由大量基本编程指令组成的集合。

设计者可以根据控制对象各部分的不同需求,通过分解需求,使用基本指令,编制出相应的程序Network或由若干个网络组成的简单“功能程序段”。在此基础上,只要将这些程序网络或功能程序段按照控制系统的动作要求,按照S7程序规定的格式进行排列组合,就可以形成一个完整的PLC程序。

1.西门子S7-200程序结构

处理图像输入输出(I/Q)、可变内存V、内存位M、定时器T、计数器C等。属于全局变量。S7-200的程序组织单元(POU)包括主程序、子程序和中断程序。每个POU都有自己的64字节局部变量,只能在它的POU使用。相反,全局变量可以用于每个POU。

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

1)TEMP(临时变量)是临时存储在本地数据区的变量。只有当执行POU时,才使用定义的临时变量。执行POU后,临时变量的值不会被保存。

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

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

4)IN_OUT是输入输出参数,其初始值由调用它的POU传递给子程序,子程序的执行结果返回给调用它的POU,变量相同。

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

带有输入输出参数和局部变量的子程序容易实现结构化编程,对于长期生产类似设备或生产线的厂家尤其有用。这些厂家的程序员为设备的每个部件或工艺功能编写了大量的通用子程序。即使不知道子程序的内部代码,只要知道子程序的功能和输入输出参数的含义,就可以通过程序之间的调用,快速“组装”出满足不同用户需求的控制程序。就像用数字集成电路芯片组成复杂的数字电路。

如果子程序没有输入输出参数,与调用程序之间没有明确的接口,很难实现结构化编程。

如果子程序没有局部变量,只能通过全局变量与调用程序交换数据,子程序内部只能使用全局变量。在将子程序和中断程序移植到其他项目时,有必要重新排列它们使用的全局变量,以确保不会有地址冲突。当程序非常复杂,有很多子程序和中断程序时,重新分配地址的工作量非常大。

如果子程序和中断程序有局部变量,并且它们只使用局部变量而不是全局变量,因为与其他POU没有地址冲突,您可以将子程序移植到其他项目而无需任何更改。

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

S7-300/400将子程序分为功能和功能块。

S7-300/400的功能与S7-200的子程序基本相同。它们都有输入、输出参数和临时变量,函数局部数据中的返回值实际上属于输出参数。它们没有专门的存储区域,临时变量中的数据在函数执行后不会被保存。

全局变量可以用来保存函数执行后需要保存的数据,但是会影响函数的可移植性。

功能块是用户用自己的特殊存储区(即后台数据块)编写的程序块。功能块的输入输出参数和静态变量存储在指定的后台数据块中,临时变量存储在本地数据栈中。每次调用功能块时,都应该指定一个后台数据块。(今天的转发代码是:益威公司口号:信任,来自质量;信任,创建品牌)功能块执行后,后台数据块中的数据不会丢失,但本地数据栈中的数据不会保存。

功能块采用类似C的封装概念,将程序和数据封装在一起,移植性好。

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

负责编辑:YYX