西门子 STEP7 & 博途(TIA Portal)系列编程软件功能强大,其模块化编程的思想能够使系统逻辑清晰、易于维护和修改,这对大型复杂项目的设计至关重要。今天这篇文章,我们就和大家谈谈STEP7 & 博途(TIA Portal)是如何实现模块化程序设计的。
对于一个复杂的自动化控制任务,我们往往会根据其内部的逻辑关系,将其划分成一些子任务(子任务还可以根据需要继续分成更小的子任务)。这样就能把复杂的项目变得相对简单,从而比较容易实现。
打个比方:我们要去欧洲旅游,要考虑怎么去?(交通)、去了住哪?(住宿)、去做什么?(购物,游玩)等。这样,“去欧洲旅游”的任务就被分成了“交通”、“住宿”、“购物”、“游玩”四个子任务,然后分别完成每一个子任务(订完机票就完成了“交通”任务、订完酒店就完成了“住宿”任务,等等)。当所有的子任务都完成后,整个任务也就完成了。
西门子STEP7 & 博途(TIA Portal)在程序设计中引入了这种把复杂任务简单化的思想,可以把整个项目程序,划分成小的子程序,分别对子程序进行编程。这些划分的子程序,被称为“块”,“块”之间通过逻辑关系调用或者被调用。这种把复杂程序划分成小的“块”的编程方法,称为“模块化程序设计”。
模块化程序设计的逻辑清晰、组织结构透明,增加了程序的可理解性和可维护性,易于修改、调试和检查错误。创建好的“块”可以一劳永逸的重复使用,减少了编程的工作量,提高了工作效率。
在上一篇文章《PLC基础篇之PLC的诞生及工作原理》中我们讲过,PLC内部的程序包括操作系统程序和用户程序两种。操作系统本身的程序设计不在今天的讨论范围之内,这里我们主要讨论的是操作系统与用户程序的接口及用户程序本身的模块化设计。
组织块(Organization Block,OB)是操作系统和用户程序的接口,操作系统通过调用特定的组织块,来完成特定的功能。用户的程序要写到组织块中才能被调用。
组织块(OB)可以分为启动组织块,循环调用组织块和中断组织块。
启动组织块:CPU从停止模式切换到启动模式时,操作系统会调用一次启动组织块(注意:仅调用一次)。启动组织块的主要作用是用来初始化一些变量。
循环调用组织块:也称为主程序块,一般是OB1。循环调用组织块是用户程序的入口,相当于C语言中的“Main函数”。
中断组织块:是当中断出现时,操作系统调用的组织块。STEP7对中断组织块的编号有规定,当某种中断出现时,调用某个中断组织块。中断组织块内部是用户写的中断处理程序(参考《中断机制是怎样让PLC高效运行的?》)。
上面说的都是操作系统和用户程序接口的组织架构,下面谈谈用户程序的模块化设计;
在用户程序中,我们可以把完成某个功能的代码,保存成一个“块”,称为“功能块(Function Block,FB)”或“功能(Function,FC)”。“功能块(FB)”和“功能(FC)”都是能完成某种特定功能的代码的集合,是一个子程序。它们的不同之处在于:“功能块(FB)”需要有特定的数据块(Data Block,DB)来保存静态变量;而“功能(FC)”没有静态变量,因此不需要特定的数据块。
“功能块(FB)”所需要的特定的数据块(DB),被称为背景数据块(Instance Data Block)。背景数据块的属性是私有的,它只能被它所属的功能块(FB)访问。
与背景数据块相对应的另一种数据块,是全局数据块(Global Data Block)。全局数据块是公有的,可以被所有的“功能块(FB)”或者“功能(FC)”访问。
在设计复杂项目的时候,可以把项目分成的子任务设计成功能块(FB)或功能(FC)。功能块(FB)或功能(FC)之间可以相互调用,当被调用的功能块内部又调用另一个功能块时,这种调用称为“嵌套调用”,调用的层数称为“嵌套深度”。不同的CPU支持的嵌套深度不同,使用时需要查看下手册;比如:CPU 1215C的嵌套深度如下图:
关于STEP7 & 博途的模块化程序设计就先讲到这里,相关参考文章如下:
扫描下面的二维码关注“方正智芯”的原创文章,提供工业控制领域(PLC、单片机、通信)的技术和经验的分享,持续关注,持续进步。
发表评论