西门子 PLC中OB、FC、FB、SFC、SFB中功能块

合集下载

SIEMENS S7300-400程序块的类型和区别

SIEMENS S7300-400程序块的类型和区别

SIEMENS S7-300/400程序块的类型及区别(总结)来源:作者:时间:2007-11-01 点击:85在SIEMENS S7-300/400系列PLC中有多种程序块,如下图(在管理器右边的空白区域点击右键),主要有:组织块(OB),功能块(FB),功能(FC),数据块(DB)及系统功能(SFC)和系统功能块(SFB)等。

注:快捷菜单中的其它两项:数据类型和变量表。

数据类型(UDT)用于指定程序中数据元素的大小与格式;变量表(VAT)用来在程序调试和运行时修改和监视变量的内容(在地址栏中输入地址后,符号栏中会自动显示在符号表中定义的符号)。

这几种程序块的功能简要说明如下:说明:调用程序块:OB,FB,FC(可以调用除OB块外的其它程序块);被调用程序块:FB,FC,SFB,SFC。

1、组织块OBOB由系统自动调用,并执行用户在OB块中编写的程序,所以OB的基本作用是调用用户程序。

在OB块中编写程序的最大容量,S7-300是16KB,S7-400是64KB。

除主程序循环OB1外,其它OB均是由事件触发的中断。

2、函数FC函数FC有两个作用:(1)作为子程序用;(2)作为函数用,函数中通常带形参。

函数中程序的最大容量,S7-300是16KB,S7-400是64KB。

FC的形参通常也称为接口区,参数类型分为输入参数,输出参数,输入/输出参数和临时数据区。

在编写函数FC的输出参数时,应避免没有直接输出(否则,可能输出一个随机值,影响程序的判断)。

可以在函数的开始,将字输出参数清0,位输出参数复位。

3、函数块FBFB与FC相比,FB每次调用都必须分配一个背景数据块,用来存储接口数据区(TEMP类型除外)和运算的中间数据。

其它程序可以直接使用背景数据区中的数据。

FB中程序的最大容量,S7-300是16KB,S7-400是64KB。

FB的接口区比FC多了一个静态数据区(STAT),用来存储中间变量。

程序调用FB时,形参不像FC那样必须赋值,可以通过背景数据块直接赋值。

step7内通讯块FB-FC以及各种系统通讯块SFB-SFC都是在什么场合使用-

step7内通讯块FB-FC以及各种系统通讯块SFB-SFC都是在什么场合使用-

step7内通讯块FB/FC以及各种系统通讯块SFB/SFC都是在什么场合使用?
最近在学习西门子的通讯,但是越学越晕了,有好多通讯用的SFC和SFB,这些已经有好多已经明白是怎么用了,但是又发现有很多FB/FC,FB/FC和SFB/SFC实现的功能貌似是相同的,但是具体的区别和使用场合自己还是搞不懂。

SFC用在非组态连接的场合,通讯较少量数据,SFB用于400内组态通信连接的场合,适合数据量较大的通信。

但是两者应用的网络以及连接方式还是不太清楚。

最佳答案
1、但是又发现有很多FB/FC,FB/FC和SFB/SFC实现的功能貌似是相同的?
是的。

他们的功能是相同的,其实就是同一个程序。

2、但是具体的区别和使用场合自己还是搞不懂?
详见:
下载:
/download/Upload/AS/manual/1 023.pdf。

西门子 PLC 中各个组织块OB作用

西门子 PLC 中各个组织块OB作用

1、自由循环组织块OB1S7 CPU启动完成后,操作系统循环执行OB1,OB1执行完成后,操作系统再次启动OB1。

在OB1中可以调用FB、SFB、FC、SFC等用户程序使其循环执行。

除OB90以外,OB1优先级最低,可以被其他OB中断。

OB1默认扫描监控时间为150ms(可设置),扫描超时,CPU自动调用)B80报错,如果程序中没有建立OB80,CPU进入停止模式。

2、日期中断组织块OB10~OB17在CPU属性中,可以设置日期中断组织块OB10~OB17触发的日期、执行模式(到达设定的触发日期后,OB只执行一次或按每分、每小时、每周、每月周期执行)等参数,当CPU的日期值大于设定的日期值时,触发相应的OB并按设定的模式执行。

在用户程序中也可以通过调用SFC28系统函数设定CPU日期中断的参数,调用SFC30激活日期中断投入运行,与在CPU属性中的设置相比,通过用户程序,可以在CPU运行时灵活地修改设定的参数,两种方式可以任意选择,也可以同时对一个OB进行设置。

3、时间延迟中断组织块OB20~OB23时间延迟中断组织块OB20~OB23的优先级及更新过程映像区的参数需要在CPU属性中设置,通过调用系统函数SFC32触发执行,OB号及延迟时间在SFC32参数中设定,延迟时间为1~60000ms,大大优于定时器精度。

4、循环中断组织块OB30~OB38循环中断组织块OB30~OB38按设定的时间间隔循环执行,循环中断的间隔时间在CPU属性中设定,每一个OB默认的时间间隔不同,例如)B35默认的时间间隔为100ms,在OB35中的用程序将每隔100ms 调用一次,时间间隔可以自由设定,最小时间间隔不能小于55ms。

OB中的用户程序执行时间必须小于设定的时间间隔,如果间隔时间较短,由于循环中断OB没有完成程序扫描而被再次调用,从而造成CPU故障,触发OB80报错,如果程序中没有创建OB80,CPU进入停止模式。

西门子PLC S7OB组织块功能一览表

西门子PLC S7OB组织块功能一览表
OB组织块一览表
组织块一览表
OB编号
启动事件
默认优先级
说明
OB1
启动或上一次循环结束时执行OB1
1
主程序循环
OB10~OB17
日期时间中断0~7
2
在设置的日期时间启动
OB20~OB23
时间延时中断0~3
3~6
延时后启动
OB30~OB38
循环中断0~8时间间隔分别为5s,2s,1s
7~15
以设定的时间为
同步循环中断1~4
25
同步循环中断
OB70
I/O冗余错误
25
冗余故障中断
OB72
CPU冗余错误,例如一个CPU发生故障
28
只用于H系列的CPU
OB73
通行冗余错误中断,例如冗余连接的冗余丢失
25
OB80
时间错误
26启动为28
OB81
电ቤተ መጻሕፍቲ ባይዱ故障
27启动为28
OB82
诊断中断
28启动为28
OB83
插入/拔出模块中断
27
启动
OB102
冷启动
27
OB121
编程错误
与引起中断的
同步错误中断
OB122
I/O访问错误
OB相同
500ms,200ms,100ms,50ms,20ms,10ms
周期运行
OB40~OB47
硬件中断0~7
16~23
检测外部中断请求时启动
OB55
状态中断
2
DPV1中断(profibus-dp)
OB56
刷新中断
2
OB57
制造厂特殊中断
2

西门子PLC讲义 2-2 功能和功能块 FCFBs

西门子PLC讲义 2-2 功能和功能块 FCFBs
输入参数 输出参数 输入/输出 参数
定义FC 20形式参数
定义
in out In_out
形式参数
使用方法
只能读 只能写 可读/可写
图形显示
在块的左侧 在块的右侧 在块的左侧
编辑可以分配参数的块
调用可以分配参数的块
练习: 编辑可以分配参数的FC块
练习: 调用可以分配参数的FC块
第一次调用FC20时 的参数分配
2. 创建一个新的背景数据块 在 SIMATIC Manager
练习: 编辑功能块
练习: 调用功能块并测试
之前
之后
之后插入/删除块的参数
Adding a parameter
Save
检查块的一致性
调用被修改过的块时应做的更正
单击鼠标右键
比较: 功能和功能块
特性 静态变量 变量的初始值 需要背景数据块 当被调用时必须使用所有的实际参数
FBD
FC1 CALL
FC1
EN
ENO
FC2
EN
Par3
Par1
Par2 ENO
DB2
FB1
EN
ENO
DB3
FB2
EN
Par3
Par1 Par2
ENO
FC 2
FC 3
?? . ? EN ENO
EN ENO
EN ENO
=
总结: 块的调用
语言
STL
LAD
无参数
• UC FC1 • CC FC1 • CALL FC1
FC1
( CALL )
FC1
EN
ENO
FC
有参数
• CALL FC2 Par1: ... Par2: ... Par3: ...

西门子编程里面的各种块(Block)宝宝-OBFBFCDBSFC科普

西门子编程里面的各种块(Block)宝宝-OBFBFCDBSFC科普

西门子编程里面的各种块(Block)宝宝-OBFBFCDBSFC科普引言西门子程序采用结构化编程,把程序分成多个模块,各模块完成相应的功能结合起来就能实现一个复杂的控制系统,就像高级语言一样用子程序实现特定的功能,再通过主程序调用各子程序,从而能实现复杂的程序。

结构化编程STEP7的程序结构 l 线性程序结构 l 分块程序结构 l 结构化程序结构一、西门子编程里面的块简介1.编程块概述变成块汇总2.程序访问顺序程序访问西门子PLC CPU 程序访问顺序:主程序OB块、功能块FB&FC、数据块DB二、西门子编程各块应用案例分析1.OB块案例组织块代号1.1组织循环(OB1)块程序循环 OB 在 CPU 处于 RUN 模式时,周期性地循环执行。

可在程序循环OB 中放置控制程序的指令或调用其它功能块(FC 或 FB)。

主程序(Main)为程序循环 OB ,要启动程序执行,项目中至少有一个程序循环OB 。

操作系统每个周期调用该程序循环 OB 一次,从而启动用户程序的执行。

1.2延时中断( OB20)块延时中断块1、调用“SRT_DINT”指令启动延时中断;2、当到达设定的延时时间,操作系统将启动相应的延时中断 OB ;3、图例中,延时中断 OB20 中断程序循环 OB1 优先执行;4、当启动延时中断后,在延时时间到达之前,调用“CAN_DINT”指令可取消已启动的延时中断。

1.3 循环中断(OB30)块循环中断OB 在经过一段固定的时间间隔后执行相应的中断OB 中的程序。

循环中断块1、PLC 启动后开始计时;2、当到达固定的时间间隔后,操作系统将启动相应的循环中断OB ;3、图例中,到达固定的时间间隔后,循环中断 OB30 中断程序循环 OB1 优先执行。

1.4硬件中断(OB 40)块硬件中断OB 在发生相关硬件事件时执行,可以快速的响应并执行硬件中断 OB 中的程序(例如立即停止某些关键设备)。

西门子OB,FB,FC模块

西门子OB,FB,FC模块

OB、FC、FB、SFC、SFB的区别
S7-300/400PLC程序采用结构化程序,把程序分成多个模块,各模块完成相应的功能。

结合起来就能实现一个复杂的控制系统。

就像高级语言一样,用子程序实现特定的功能,再通过主程序调用各子程序,从而能实现复杂的程序。

在S7-300/400PLC中写在OB1模块里和程序就是主程序,子程序写在功能(FC),功能块(FB)。

FC运行是产生临时变量执行结束后数据就丢失--------------不具有储存功能
FB运行时需要调用各种参数,于是就产生了背景数据块DB。

例如用FB41来作PID控制,则它的PID控制参数就要存在DB里面。

FB具有储存功能
系统功能块(SFB)和系统功能(SFC)也是相当于子程序,只不过SFB和SFC是集成在S7 CPU中的功能块,用户能直接调用不需自已写程序。

SFC与FC 不具有储存功能,FB和SFB具有储存工办。

OB模块相当于主程序,负责调用其他模块。

如果程序简单只需要OB就可以实现。

FB中可以定义静态变量,每个FB可以定义多个背景数据块,来代表同种类型的不同设备。

这样只通过一个功能块就可以完成多个设备的变程。

而FC中不可以定义背景数据块,一般情况下只能使用共享数据块中的数据,但同时也可以通过全局变量定义方式来访问其他背景数据块。

我个人的经验:在有多个类似的设备的时候,尽量抽象出这些设备的共同点,编写一个FB,然后通过FC来挂点或处理一些不同点。

西门子PLC中各个组织块OB作用

西门子PLC中各个组织块OB作用

西门子PLC中各个组织块OB作用1.OB1:OB1是西门子PLC中最重要的一个组织块,也是原始程序的入口点。

OB1在PLC加电后首先执行,并决定其他OB组织块的执行顺序。

它包含了初始化程序、故障处理、中断处理等主要功能,它对整个控制过程起着关键性作用。

2.OB2:OB2是一个错误组织块,用于处理运行时的错误和异常。

在PLC运行过程中,如果发生错误,比如传感器故障、通信异常等,OB2将负责处理和记录这些错误。

它可以通过警报或报警灯等方式告知操作员错误的发生。

3.OB3:OB3是一个系统状态组织块,用于监控PLC系统运行状态。

它可以检测并记录PLC中的各种状态信息,比如CPU利用率、内存使用情况、网络通信状态等。

OB3可以帮助工程师了解系统的运行情况并进行优化。

4.OB10:OB10是一个周期性组织块,用于周期性地执行程序中的周期任务。

它可以通过设置时间周期和触发条件来执行周期性操作,比如定期更新数据、定时刷新显示等。

OB10可以根据实际需求进行灵活配置,以确保程序的正常运行。

5.OB20:OB20是一个中断组织块,用于处理外部中断事件。

当PLC接收到外部中断信号时,OB20将被触发,执行相应的任务。

这些中断事件可以是硬件设备的故障信号、紧急停机信号等。

OB20可以确保及时处理这些中断事件,并采取相应的措施。

6.OB40:OB40是一个硬件故障组织块,用于监测和处理与硬件设备相关的故障。

当硬件设备发生故障时,OB40将负责处理该故障,比如停止相应的操作、记录故障信息等。

OB40可以保护设备免受损坏,并防止故障进一步扩大。

7.OB80:OB80是一个厂商特定组织块,用于定制特殊功能和特定的控制逻辑。

它可以根据用户的需要进行编程,添加一些定制化的功能,比如与外部设备的通信、数据处理等。

OB80可以根据不同的应用场景进行灵活配置和调整。

除了以上介绍的几个典型的OB组织块外,西门子PLC还提供了其他一些特殊的组织块,如OB5、OB100等,它们各自具有不同的功能和作用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西门子 PLC中OB、FC、FB、SFC、SFB中功能块使用概述
(2013-12-05 16:13:52)
S7-300/400PLC程序采用结构化程序,把程序分成多个模块,各模块完成相应的功能。

结合起来就能实现一个复杂的控制系统。

就像高级语言一样,用子程序实现特定的功能,再通过主程序调用各子程序,从而能实现复杂的程序。

在S7-300/400PLC中写在OB1模块里和程序就是主程序,子程序写在功能(FC),功能块(FB)。

FC运行是产生临时变量执行结束后数据就丢失-----不具有储存功能
FB运行时需要调用各种参数,于是就产生了背景数据块DB。

例如用FB 41来作PID控制,则它的PID控制参数就要存在DB里面。

FB具有储存功能系统功能块(SFB)和系统功能(SFC)也是相当于子程序,只不过SFB 和SFC是集成在S7 CPU中的功能块,用户能直接调用不需自已写程序。

SFC与FC不具有储存功能,FB和SFB具有储存功能。

OB模块相当于子程序,负责调用其他模块。

如果程序简单只需要OB就可以实现。

用西门子PLC编程时,可以用到功能块FB和功能FC(FB、FC都是组织块)资料上说FB与FC都可以作为用户编写的子程序,但是我不明白这两个组织块之间到底有什么区别阿?在应用上到底有什么不同之处吗?
FB--功能块,带背景数据块
FC--功能,相当于函数
他们之间的主要区别是:FC使用的是共享数据块,FB使用的是背景数据块
举个例子,如果您要对3个参数相同的电机进行控制,那么只需要使用FB编程外加3个背景数据块就可以了,但是,如果您使用FC,那么您需要不断的修改共享数据块,否则会导致数据丢失。

FB确保了3个电机的参数互不干扰。

FB,FC本质都是一样的,都相当于子程序,可以被其他程序调用(也可以调用其他子程序)。

他们的最大区别是,FB与DB配合使用,DB中保存着F B使用的数据,即使FB退出后也会一直保留。

FC就没有一个永久的数据块来存放数据,只在运行期间会被分配一个临时的数据区。

在实际编程中,是使用FB还是FC,要看实际的需要决定。

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时是如何传递参数一节讲述),那么我们如何将参数传递给FB呢?又如何将FB的输出读出来呢?
我在前面说过,背景数据块是可以像访问普通数据块一样使用共享数据块访问,这就解决了我们参数传递的问题。

相关文档
最新文档