泰州地区西门子模块代理

供应商
浔之漫智控技术(上海)有限公司
认证
联系电话
158****1992
全国服务热线
158****1992
经理
聂聪
所在地
上海市松江区广富林路4855弄88号3楼
更新时间
2023-10-26 04:00

详细介绍

泰州地区西门子模块代理

西门子代理商     西门子一级代理商 西门子中国授权代理商

fb与fc没有太大的差别,fb带有背景数据块,而fc没有。所以fb带上不同的数据块,就可以带上不同的参数值。这样就可以用同一fb和不同的背景数据块,被多个对象调用。

   fc和fb像c中的函数,只不过fb可以生成静态变量,在下次函数调用时数据可以保留,而fc的变量只在调用期内有效,下次调用又重新更换。

这是一般的理解;fb需要背景数据块,而fc是没有的;参数的传递方式不同,fb的输入输出对应着背景数据块地址,而fc的输入输出是没有实际地址对应的,只有的程序调用时,才会和实际的地址产生对应关系。fb参数传递的是数据,fc参数传递的是数据的地址。

   fb(功能块)的处理方式是围绕着数据块处理数据,他的入口参数和出口参数都是数据块里的数据,以及stat的数据都是数据块里,入口参数和出口参数、stat可以认为是静态数据,这些数据不会因为函数消失而逝去,他会一直保存在数据块里。fb里的变量与他的背景数据块是一一对应的,而他的对应并不是一层不变的。更确切的说,fb里的变量在调用时将根据ar2的值当作偏移量与背景数据块是一一对应。

   如果一个fb功能块里没有入口参数、出口参数及stat数据,他将不需要背景数据块,这时的fb和没有入口出口参数的fc就没有什么区别了,就只能使用临时变量和全局变量了。用很多人认为,fb的背景数据块必须由fb生成、fb里的个变量对应着背景数据块的个变量,还有就是由fb生成的数据块只能作为fb的背景数据块使用。其实这些理解是错误的,fb的背景数据块不一定是通过fb生成的,可以像生成共享数据块一样生成fb的背景数据块,换句话说,普通的数据块也可以作为fb的背景数据块,不过这种做法是有一定前提的,就是这个数据块的字节数必须大于等于fb所需的字节数,如果小于fb所需的字节数时,fb访问到超出背景数据块的变量时就会找不到变量的地址,肯定会出错了。

   fb里的个变量对应可以对应数据块字节数减去fb所需背景数据块字节数里的任意位置的变量,我觉得这个比较好理解,在多重背景里不就是这样吗。谈到这里我得说点别的,好像这种情况下,fb里不可以有多重背景,在s7里,多重背景好像是不允许嵌套的,说道这里我马上在s7做了测试,证明我的想法是错误的,多重背景是可以嵌套的。话回正题,由fb生成的数据块也是可以像访问普通数据块一样通过共享数据块方式访问,不信,你可以自己试一试。说说如何使用普通的数据块作为fb的背景数据块,会不会有人现在就开始自己试了,怎么不行呢,一调用程序就程序红色,有错误啊。告诉你,使用call指令编写时setp7会自动检查db块和fb的关系,要是时间标记和大小不一致就会报错。在这里我们可以使用uc指令调用fb,uc指令是不传递参数的(对于这个说法,我不太认同,我将会在使用uc调用fc时是如何传递参数一节讲述)。

很多从日系plc或者200plc过来的人,很不习惯于s7 1200 或者tia portal 里面的一些术语,比如ob,db,fc,fb等等,其实这些术语也包含于s7 300,400 ,1500等,所以讲解的内容,理论上也适应于这些plc。虽然我没有玩过这些东西,但是tia portal适合于西门子全系列plc,很多概念性的东西都是一致的。s7 1200的功能强大正式基于拥有各种类型的block和多种变量类型。
我会用不一样观点来讲述plc编程,相比于很多普通的plc教程,你会发现很多有趣的地方。
s7 1200 由以下几类基本元素组成:
ob:组织块,英文名organization block。组织块是cpu系统和用户程序之间的接口,可以在cpu上电启动时调用,也可以循环调用,也可以在plc发生错误时候调用。
db:数据块,英文名data block。从字面含义便知主要用于储存用户数据,比如模拟量转换数据,相当于200里面的v区,欧姆龙plc的w区。
fc:函数,英文名function。我们常常在fc函数中写一些需要重复执行的代码,可以在程序不同地方调用,可以被ob调用,也可以被fc调用。使用fc可以简化我们需要重复执行的任务,提高代码的运行效率。fc类似于200的子程序。
fb:fc+db组合,意思是含有db块的fc函数,与fc的区别是当函数调用结束后,通过static变量仍然可以保留数值,经常用于调用间的数据共享。
ob组织块
当我们新建一个程序时,系统会自动建立一个main[ob1]程序,该程序会在plc的每个扫描周期被调用。main程序和200里面的主程序,是一个同样的概念。也类似于c里面的main ,即为函数点,我们可以在main程序里面调用各种函数和块。下面的图是在程序中调用一个fc和fb,然后在fc中调用另外一个fc,形成嵌套调用。
注:、、、是别名,方便我们记忆和理解,真正的地址在[.....]中,如ob1,fc2,fc1,fb1等等。
图1 main程序
图2 main调用结构
图1显示了main程序具体内容,图2显示了main程序的调用结构。图中很多元素的概念,我们暂时不需要了解,但是可以看到一些整体概念,mian程序包含程序段1(nw1)和程序段2(nw2),在main的调用结构中包含了3个元素test、调用fb和调用fc。其实应该是4个,还有一个嵌套在中,点击左侧箭头,出现如下图所示:
图3 fc嵌套调用
图4 ob分类
我们来分析上图中的ob类型。ob块主要用于程序循环、启动、延时中断、循环中断、硬件中断、hsc中断、诊断错误和时间错误事件。ob块还有两个属性是编号和**级,**级越高,中断级别越高。在同样的**级别,ob编号越小,越**执行。从图1中,我们看到main程序的地址在ob1,是一个循环运行程序,**级为1较低。时间错误事件的**级,当发生该事件时,会暂停执行main程序,**执行时间错误事件ob块。程序循环ob类块的编号属性为“1;>=123”,意为我们可以创建多个类似ob块。因为新建程序默认ob编号为1,假设我们要创立该事件类型ob块,那么默认编号为123起,同时ob1的执行要**于ob123。诊断错误事件ob块和时间错误ob块只有一个。

PLC,CPU,触摸屏,变频器,交换机,电机,电线,电缆,低压,

展开全文

我们其他产品
我们的新闻
优质商家推荐 拨打电话