今日头条
介绍以下常见的plc程序结构及其特点:
1.国外一些小型可编程控制器程序结构
这些可编程逻辑控制器的用户程序由主程序、子程序和中断程序组成。在每个扫描周期中,CPU调用主程序一次。主程序可以调用子程序,小控制系统只能有主程序。中断程序用于快速响应中断事件。在中断事件中
当这种情况发生时,中央处理器将停止执行当时正在处理的程序或任务,并执行用户编写的中断程序。执行中断程序后,继续执行暂停的程序或任务。它们的子程序和中断程序没有局部变量,子程序没有输入输出参数。
2.西门子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是一个input _ output参数,其初始值由调用它的POU传递给子程序,子程序的执行结果以相同的变量返回给调用它的POU。
主程序和中断程序的局部变量中只存在临时变量temp。
带有输入、输出参数和局部变量的子程序易于实现结构化编程,对于长期生产类似设备或生产线的厂家尤其有用。这些制造商的程序员为设备的每个部件或过程功能编写了大量的通用子程序。即使你不知道子程序
只要知道子程序的功能和输入输出参数的含义,就可以通过程序之间的调用,快速“组装”出满足不同用户需求的控制程序。就像用数字集成电路芯片组成复杂的数字电路。
如果一个子程序没有输入输出参数,与调用它的程序之间没有明确的接口,就很难实现结构化编程。
如果子程序没有局部变量,只能通过全局变量与调用它的程序交换数据,子程序内部只能使用全局变量。将子程序和中断程序移植到其他项目时,需要重新排列它们使用的全局变量,以确保不会有地址冲突。当程序非常复杂,有很多子程序和中断程序时,重新分配地址的工作量非常大。
如果子程序和中断程序都有局部变量,并且内部只使用局部变量,不使用全局变量,因为与其他pou没有地址冲突,那么子程序可以移植到其他项目中,而不需要做任何更改。
3.西门子S7-300/400的程序结构
S7-300/400将子程序分为功能和功能块。
S7-300/400的功能与S7-200基本相同。它们都有输入、输出参数和临时变量,函数局部数据中的返回值实际上属于输出参数。他们没有专门的存储区。函数完成后,临时变量中的数据将不被保存。全局变量可以用来保存函数完成后需要保存的数据,但是会影响函数的可移植性。功能块是由用户用其自己的专用存储区(即后台数据块)编写的程序块。功能块的输入和输出参数以及静态变量存储在指定的背景数据中。
全局变量可以用来保存函数执行后需要保存的数据,但是会影响函数的可移植性。
功能块是用户用自己的专用存储区(即后台数据块)编写的程序块。功能块的输入输出参数和静态变量存储在指定的后台数据块中,临时变量存储在本地数据栈中。每次调用功能块时,都应该指定一个后台数据块。执行功能块后,后台数据块中的数据不会丢失,但本地数据栈中的数据不会保存。
功能块采用类似C++的封装概念,将程序和数据封装在一起,移植性好。
S7-300/400的共享数据块可由所有逻辑块使用。
4.IEC 61131-3的程序结构
IEC61131-3是可编程逻辑控制器的编程语言标准。IEC61131-3是世界上第一个也是唯一一个工业控制领域的编程语言标准。IEC61131-3有三种POU:程序、功能块和函数。
函数是具有多个输入参数和一个输出参数(返回值)的POU函数。返回值的名称与函数的名称相同,需要定义返回值的数据类型。调用具有相同输入值的函数总是返回相同的结果。函数可以调用其他函数,但不能调用功能块或程序。具有可定义函数的局部变量是var和VAR_INPUT。
功能块是具有多个输入/输出参数和内部存储单元的POU,功能块的输出参数值与其内部存储单元的值相关。功能块可以调用其他功能块或函数,但不能调用程序。在调用功能块之前,您必须在要调用该功能块的POU中为每个调用声明一个功能块实例,并且操作系统将为每个调用分配一个专用于该功能块的存储区域。
编辑:ymf
全部0条评论
快来发表一下你的评论吧 !