- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
朗风快学PLC(八)西门子S7-300的程序结构OB,FB,FC,DB
想要学习西门子PLC,OB,FB,FC和DB是必须要学习的!那么它们在整个程序里面起到什么作用呢?
今天带大家了解一下。
OB是西门子300/400里面最重要的组织块,从OB1-OB122它们有很多不同的功能,今天我们将最常用的OB1,OB1是主程序循环,一个程序中90%的指令都是写在OB1里面或者是在OB1里面调用的,那么其他10%写在哪?答案是其他的组织块里面。
PLC采用循环扫描的工作方式。从OB1的第一行扫描到最后一行。
但是对于300系列PLC,程序都是非常多的。即使是90%的程序写在OB1里面也是不现实的。
所以需要调用FB和FC。进而使得程序可看性更强一些。这也就是结构化编程。
FB和FC块,我们从两者的名字就可以进行区分,可以用一个公式即FB=FC+DB来表示,FB是具有DB背景块的特殊FC,也就是说FB具有FC的功能,同时拥有一个DB块。FC全称是Function函数。注:DB块全称DataBlock数据存储区域,类似数据库中关系表结构。那首先什么函数呢?
函数f(x)就像机器或黑箱,给予输入值x便产生唯一输出值f(x)。x是自变量,f(x)是因变量。
我们再看一下FB和FC的内部结构,作为一个块拥有属于自己的管脚,其中包括:
IN——变量从外部输入,只能被本程序读,不能被本程序写。
OUT——是由本程序块输出的,可以被本程序块读写,其他程序只能读这个值而不能写。
IN_OUT——输入输出变量,本程序和其他程序都可以读写这个引脚的值。
TEMP——临时变量,顾名思义是暂时存储数据的变量。这些临时的数据存储在CPU工作储存区的局部数据堆栈(即L区)中。
STAT——在plc运行期间始终被存储,S7将静态变量定义在背景数据块(仅FB拥有静态变量),当被调用时可以读写静态变量,调用结束后静态变量保存在数据块中,静态变量在某种程度上可以作为全局变量来进行使用,但使用时需要注意,这里不建议新手使用。
我们再看一下FC和FB的区别;
FC,功能。因为是一个功能,如果这个功能在多处都能用到,那么这段FC就具有通用性。我们在程序的其他地方就可以调用,简化代码,这个是FC的模块式的作用。当然,FC也可以作为我们被调用的一个子程序,用OB1去调用他,以实现结构化编程。
因此,对于FC而言,它的功能是:
第一,实现功能化编程。比如,我们有大车,小车,起升3个结构。我们就可以定义3个FC,跟这3个机构一一对应,然后用OB1依次调用。为什么这样做,为什么不都放在OB1里。你也可以放OB1里,对段数比较少,很简单的项目就把代码都放在OB1里。如果功能,机构多了,最好还是分开来,这样有利于程序的可读可调,更符合规范。否则一个小故障都会导致你把OB1翻个遍,会很麻烦的。找准故障机构,在相应的FC里再去找会少看很多代码。这个道理比较简单。
而且,对于同样的功能,比如说我们有5个功能一样的阀或者电机,我们就可以做一个FC,然后调用5次FC就可以。
但是一般情况下,FC是无法储存数据的,因为程序没有给它建立一个独特的存储区。
如果我们有5个电机,但这5个电机的温度需要存储怎么办?这个时候就需要数据块,也就是FB和DB的配合。
在建立FB块的时候我们只需要填写输入和输出接口就可以。但是在调用的时候就需要输入数据块也就是DB了。
编写FB的时候需要将INPUT和OUTPUT进行编辑。
调用FB的时候需要填写DB块,否则PLC会报红,而FC则不需要。
因为FB功能更强悍些,每次调用他都需要一个DB来供他为逻辑计算存放数据。而不像FC,需要输入输出接口地址来作为数据来源。每次调用FB时,需要指明一个DB,两个相互配合。而DB中存放的数据,也可以供全局享用。比如,有一个电机的加速功能块,作用是调节电机的加速。我们需要输入的参数是加速时间,最高速度两个参数,然后计算得出速度给定。这个时候我们最好用FB。现有电机1,输入加速时间2,最高速度20。那么2,20这个值放在哪呢,我们调用FB时,就可以放到DB电机1里去了。现有电机2,加速时间3,最高速度30,。我们仍然调用这个FB,3和30放DB电机2里就可以了。如果用FC,也可以做这个块。但是,没有DB来存放这些数据,就很不方便,也就失去了通用性。
当然我不是说FC就不能实现带数据的功能,只是通常来说FB处理带数据的复杂功能,FC处理没有数据的简单功能,这样做很容易。
但其实FC也是可以储存数据,只是程序写起来比较复杂,而且故障率较高,因此不建议新手尝试。
OB,FB,FC都是必须要掌握的知识,大家可以自己使用step7软件进行熟练操作。
关注我
轻松学习电气知识
文档评论(0)