西门子300模块6ES7332-5HB01-0AB0
西门子300模块6ES7332-5HB01-0AB0
模块化程序设计的逻辑清晰、组织结构透明,增加了程序的可理解性和可维护性,易于修改、调试和检查错误。创建好的“块”可以一劳永逸的重复使用,减少了编程的工作量,提高了工作效率。
在上一篇文章《PLC基础篇之PLC的诞生及工作原理》中我们讲过,PLC内部的程序包括操作系统程序和用户程序两种。操作系统本身的程序设计不在今天的讨论范围之内,这里我们主要讨论的是操作系统与用户程序的接口及用户程序本身的模块化设计。
组织块(Organization Block,OB)是操作系统和用户程序的接口,操作系统通过调用特定的组织块,来完成特定的功能。用户的程序要写到组织块中才能被调用。
组织块(OB)可以分为启动组织块,循环调用组织块和中断组织块。
启动组织块:CPU从停止模式切换到启动模式时,操作系统会调用一次启动组织块(注意:仅调用一次)。启动组织块的主要作用是用来初始化一些变量。
上面说的都是操作系统和用户程序接口的组织架构,下面谈谈用户程序的模块化设计;
在用户程序中,我们可以把完成某个功能的代码,保存成一个“块”,称为“功能块(Function Block,FB)”或“功能(Function,FC)”。“功能块(FB)”和“功能(FC)”都是能完成某种特定功能的代码的集合,是一个子程序。它们的不同之处在于:“功能块(FB)”需要有特定的数据块(Data Block,DB)来保存静态变量;而“功能(FC)”没有静态变量,因此不需要特定的数据块。
“功能块(FB)”所需要的特定的数据块(DB),被称为背景数据块(Instance Data Block)。背景数据块的属性是私有的,它只能被它所属的功能块(FB)访问。
与背景数据块相对应的另一种数据块,是全局数据块(Global Data Block)。全局数据块是公有的,可以被所有的“功能块(FB)”或者“功能(FC)”访问。
在西门子S7-300/400系列PLC中,程序的运行起始于组织块OB1。OB1就相当于C语言的Main函数;在S7-200 smart中,更是直接把OB1称为Main块。
如果程序比较复杂,还可以把一些常用的功能设计成模块,以便重复利用。这些小的模块称为子程序。
子程序存在于主程序中,操作系统通过调用主程序,就能让子程序也得到运行。在S7-300/400中,子程序包括FB和FC。
除了主程序接口,PLC还提供中断程序的接口。比如S7-300/400系列PLC的组织块OB35(循环中断)、OB40(硬件中断)、OB82(诊断中断)、OB122(IO访问故障中断)等等。中断程序接口中的程序,称为“中断处理程序”,中断处理程序由用户自己编写。