7
揭阳西门子代理商
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过来的人,很不习惯于S71200或者TIAPORTAL里面的一些术语,比如OB,DB,FC,FB等等,其实这些术语也包含于S7300,400,1500等,所以讲解的内容,理论上也适应于这些PLC。虽然我没有玩过这些东西,但是TIAPORTAL适合于西门子全系列PLC,很多概念性的东西都是一致的。S71200的功能强大正式基于拥有各种类型的block和多种变量类型。
我会用不一样观点来讲述PLC编程,相比于很多普通的PLC教程,你会发现很多有趣的地方。
S71200由以下几类基本元素组成:
OB:组织块,英文名Organizationblock。组织块是CPU系统和用户程序之间的接口,可以在CPU上电启动时调用,也可以循环调用,也可以在PLC发生错误时候调用。
DB:数据块,英文名Datablock。从字面含义便知主要用于储存用户数据,比如模拟量转换数据,相当于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等等。
图1Main程序
图2Main调用结构
图1显示了Main程序具体内容,图2显示了Main程序的调用结构。图中很多元素的概念,我们暂时不需要了解,但是可以看到一些整体概念,Mian程序包含程序段1(NW1)和程序段2(NW2),在Main的调用结构中包含了3个元素test、调用FB和调用FC。其实应该是4个,还有一个嵌套在中,点击左侧头,出现如下图所示:
图3FC嵌套调用
图4OB分类
我们来分析上图中的OB类型。OB块主要用于程序循环、启动、延时中断、循环中断、硬件中断、HSC中断、诊断错误和时间错误事件。OB块还有两个属性是编号和**级,**级越高,中断级别越高。在同样的**级别,OB编号越小,越**执行。从图1中,我们看到Main程序的地址在OB1,是一个循环运行程序,**级为1较低。时间错误事件的**级,当发生该事件时,会暂停执行Main程序,**执行时间错误事件OB块。程序循环OB类块的编号属性为“1;>=123”,意为我们可以创建多个类似OB块。因为新建程序默认OB编号为1,假设我们要创立该事件类型OB块,那么默认编号为123起,同时OB1的执行要**于OB123。诊断错误事件OB块和时间错误OB块只有一个



作为远程终端单元,S7-1200可以应用于自来水厂,污水处理厂,石油天然气泵站,室外显示屏,汽油泵站,配电站等。位置控制方面,应用于组装设备,零件的自动布置,自动堆叠机械,输送控制,自动售货机,常供应机械,物料输送机械,包装机械,印刷机械,纺织机械,焊接机等。楼宇自动化方面,应用于室内温度控制,锅炉控制,机组控制,能源管理控制,火警系统,暖通空调,灯光控制,抽水泵控制,通路管理等。
S7-1200的应用
非传统非制造业方面的应用,包括电信部门,交通运输部门,系统,农业灌溉系统,车库开关门系统,洗车设施,保龄球设施,交通控制,户外应用,太阳能跟踪等更多场合。我们主要介绍了西门子S7-1200的功能与特点以及应用范围,学习更多关于西门子S7-1200的内容,请持续关注本号!西门子S7-1200模拟量转换
在PLC编程中,遇到多的是将现场的模拟量信号转化为实际的工程值,如将0~20mA/4~20mA/0~10V等现场变送器的电流或者电压信号转化为0~10MPa,0~100℃等工程值,对于西门子S7-300/400,可以使用FC105/FC106来实现转化,对于S7-200/SMART200可以使用
一、西门子S7-400PLC的CPU报警指示灯说明
INTF:内部故障例如:用户程序运行**时EXTF:外部故障例如:电源故障,模块故障FRCE:有输入/输出处于被强制的状态RUN:运行模式STOP:停止模式BUS1F:MPI/PROFIBUS-DP接口1总线故障BUS2F:MPI/PROFIBUS-DP接口2总线故障MSTR:CPU处理I/O,仅用于CPU41X-4HREDF:冗余错误,仅用于CPU41X-4HRACK0:CPU在机架0中,仅用于CPU41X-4HRACK1:CPU在机架1中,仅用于CPU41X-4HIFM1F:接口子模块1故障IF:接口子模块2故障
二、红灯如何破,什么意义(清单1)
1. BUSF: • 正常时不亮• 亮:表明总线故障(物理故障),DP接口故障,多DP主站模式下不同传输速率•闪烁表明站故障或至少一个已分配的从站无法寻址2.RUN:亮表明CPU处于RUN状态3.STOP:亮表明CPU处于停止状态4.INTF:亮表明检测到内部错误(编程或参数分配错误)或CPU正在执行CiR。5.EXTF1:亮表明检测到外部错误(换言之,错误原因不在CPU模块上)。6.FRCE:亮表明强制作业已激活。7.BUS1F:亮表明在MPI/DP 接口上检测到错误。8.BUS2F:亮表明在PROFIBUSDP接口上检测到错误。9.IFM1F:亮表明在存储器子模块的接口1上检测到错误。10.IF:亮表明在存储器子模块的接口 2上检测到错误。
三、红灯如何破,什么意义(清单2)
INTF 红色,内部故障,例如用户程序运行**时,用户程序错误。
EXTF 红色,外部故障,例如电源故障,I/O模板故障。
FRCE 黄色,至少有一个I/O被强制时点亮。
RUN 绿色,运行模式。
STOP 黄色,停止模式。
BUS1F 红色,MPI/PROFIBUS-DP接口1的总线故障。
BUS2F 红色,MPI/PROFIBUS-DP接口2的总线故障。
MSTR 黄色,CPU运行。
REDF 红色,冗余错误。
RACK0 黄色,CPU在机架0中。
RACK1 黄色,CPU在机架1中。
IFM1F 红色,接口子模块1故障。
IF 红色,接口子模块2故障