这些PLC的用户程序由主程序、子程序和中断程序组成。在每一个扫描循环周期 , CPU都要调用一次主程序。主程序可以调用子程序,小型控制系统可以只有主程序。中断程序用于快速响应中断事件。在中断事件发生时,CPU将停止执行当时正在处理的程序或任务,去执行用户编写的中断程序。执行完中断程序后, 继续执行被暂停执行的程序或任务。它们的子程序和中断程序没有局部变量,子程序没有输入、输出参数。
如果子程序和中断程序有局部变量,并且它们内部只使用局部变量,不使用全局变量,因为与其他POU没有地址冲突,不需作任何改动,就可以将子程序移植到别的项目中去。
S7-30/400的共享数据块可供所有的逻辑块使用。
4. IEC61131-3的程序结构
IEC61131-3是PLC的编程语言标准。IEC61131-3是世界上第一 个,也是至今为止唯-的工业控制领域的编程语言标准。IEC
61131-3有三种POU :程序、功能块和功能。
功能是有多个输入参数和一个输出参数(返回值)的POU ,返回值的名称与功能的名称相同,需要定义返回值的数据类型。调用具有相同输入值的功能总是返回相同的结果。功能可以调用其他功能,但是不能调用功能块或程序。功能可定义的局部变量有VAR和VAR_ INPUT.
功能块是有多个输入输出参数和内部存储单元的POU ,功能块的输出参数值与其内部存储单元的值有关。功能块可以调用其他功能块或功能,但是不能调用程序。
在调用功能块之前,必须在要调用功能块的POU中为每次调用声明功能块的实例,操作系统将为每次调用分配功能块专用的存储区
(类似于S7-300/400的背景数据块)。
功能因为没有内部存储区,调用时不需要实例化。
程序的行为和用途类似于功能块,程序具有输入和输出参数,而且可以具有内部存储区。程序通常包含有对功能和功能块的调用。
IEC61131-3定义了若干标准的功能和功能块。
5. S7-300/ 400与IEC61131 -3程序结构的区别
1) S7-300/400的功能可以有多个输出参数,返回值也属于输出参数。IEC61131-3的功能只有一 个返回值。
2) IEC61131-3的功能块用于保存局部变量的专用存储区是在声明功能块的实例时分配的,它对用户是不透明的,其他POU不能直接访问该存储区。
S7-300/400的功能块的局部变量(不包括临时变量)保存在它的背景数据块中。其他POU可以访问背景数据块中的变量。如果需要多次调用同一个功能块来控制同一类型的被控对象,每次调用都需要指定一个背景数据块,但是这些背景数据块中的变量又很少,这样在项目中就出现了大量的背景数据块。可以使用多重背景数据块来减少背景数据块的数量。但是需要增加一个用来管理多重背景的功能块。
3 ) S7-300/400的功能块的局部变量有临时变量和静态变量, IEC61131-3的功能块的内部变量Var相当于S7-300/400的静态变量。
4) S7-300/400将数据区划分为数据块来使用,数据块的大小与数据块中定义的变量的数据类型和变量的个数有关。IEC61131-3没有数据块的概念。