PLC的程序分为操作系统和用户程序,操作系统用来实现与特定的控制任务无关的功能,处理PLC的启动、刷新过程映像输入/输出表、调用用户程序、处理中断和错误、管理存储区和处理通信等。用户程序包含处理用户特定的自动化任务所需要的所有功能。
1.用户程序的结构
STEP7将用户编写的程序和程序所需的数据放置在块中,使单个的程序部件标准化。通过块与块之间类似于子程序的调用,使用户程序结构化,可以简化程序组织,使程序易于修改、查错和调试。块结构显著地增加了PLC程序的组织透明性、可理解性和易维护性。各种块的简要说明见表4-1,OB、FB、FC、SFB和SFC都包含程序,统称为逻辑块。程序运行时所需的大量数据和变量存储在数据块中。
可以将控制任务分层划分为工厂级、车间级、生产线、设备等多级任务,分别建立与各级任务对应的逻辑块。每一层的控制程序(逻辑块)作为上一级控制程序的子程序,前者又可以调用下一级的子程序。这种调用称为嵌套调用,即被调用的块又可以调用别的块。
可以多次重复调用同一个块,来处理同一类任务。FB和FC的内部应全部使用局部变量,不使用I、Q、M、T、C和共享数据块中的全局地址。这样的块具有很好的可移植性,不作任何修改,就可以用于其他项目。
FB和FC通过其输入、输出参数来实现与“外部”的数据交换,即与过程控制的传感器和执行器、用户程序中的其他块交换数据。在块调用中,调用者可以是各种逻辑块,被调用的块是OB之外的逻辑块。调用功能块和系统功能块时需要为它们指定一个背景数据块,后者随这些块的调用而打开,在调用结束时自动关闭。
在图4-1中,OB1调用FB1,FB1调用FC1,应按下面的顺序创建块FC1→FB1及其背景数据块→OB1,即编程时被调用的块应该是已经存在的。
如果出现中断事件,CPU将停止当前正在执行的程序,去执行中断事件对应的组织块OB(即中断程序)。中断程序执行完后,返回到程序中断处继续执行。
2.组织块(OB)
组织块是操作系统与用户程序的接口,由操作系统调用,用于控制扫描循环和中断程序的执行、PLC的启动和错误处理等,CPU的档次越高,能使用的同类型组织块越多。
(1) OB1
OB1是用户程序中的主程序,CPU的操作系统完成启动过程后,将循环执行OB1,可以在0B1中调用其他逻辑块。
(2)事件中断处理
如果出现中断事件,例如时间中断、硬件中断和错误处理中断等,当前正在执行的块在当前指令执行完后被停止执行(被中断),操作系统将会调用一个分配给该事件的组织块。该组织块执行完后,被中断的块将从断点处继续执行。
这意味着部分用户程序不必在每次循环中处理,而是在需要时才被及时地处理。处理中断事件的程序放在该事件驱动的 OB 中。
(3)中断的优先级
OB按触发事件分成几个级别,这些级别有不同的优先级,高优先级的OB可以中断低优先级的0B。
3.临时局部数据
生成功能和功能块时可以声明临时局部数据。这些数据是临时的,退出逻辑块时不保留临时局部数据。它们又是局部(Local)数据,只能在生成它们的逻辑块内使用。CPU按优先级划分局部数据区,同一优先级的块共用一片局部数据区。可以用STEP7改变S7-400每个优先级的局部数据区的大小(见图2-35)。
除了临时局部数据外,所有的逻辑块都可以使用共享数据块中的共享数据。