西门子OB块的作用
西门子OB块使用说明
OB87 OB88 OB90
1-2
循环中断3(默认时间间隔:500ms) 10
循环中断4(默认时间间隔:200ms) 11
循环中断5(默认时间间隔:100ms) 12
循环中断6(默认时间间隔:50ms) 13
循环中断7(默认时间间隔:20ms) 14
循环中断8(默认时间间隔:10ms) 15
STEP 7 激活日期时间中断的基本可能性。
• 您可以在STEP 7 中设置日期时间中断,然后通过程序调用SFC30
“ACT-TINT”,激活日期时间中断。
• 您可以通过调用SFC28 “ SET_TINT ” 设置日期时间中断,通过调用SFC30
“ACT_TINT”,激活日期时间中断。
时间间隔 没有激活
过程中断
28
暖或冷启动或删除一个正在OB90 292)
中执行的块或装载一个OB90 到CPU
或中止OB90
硬件中断
DPV1 中断 多处理器中断 同步循环中断 冗余故障中断 同步故障中断
背景循环
OB OB100 OB101 OB102
OB121
OB122
启动事件 暖启动 热启动 冷启动
编程故障
I/O 访问故障
中断OB1 的执行。以下事件可导致操作系统调用OB1:
• CPU 启动完毕。 • OB1 执行到上一个循环周期结束。 OB1 执行完后,操作系统发送全局数据。再次启动OB1 之前,操作系统会将
输出映像区数据写入输出模板,刷新输入映像区并接收全局数据。S7 监视最
长循环时间,保证最长的响应时间。最长循环时间缺省设置为150ms。您可以
设一个新值或通过SFC43“RE_TRIGR”重新启动时间监视功能。如果您的程序
西门子 PLC中OB、FC、FB、SFC、SFB中功能块
西门子 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就没有一个永久的数据块来存放数据,只在运行期间会被分配一个临时的数据区。
详解西门子1200延时中断功能OB块的使用
详解西门子1200延时中断功能OB块的使用1. 延时中断OB块的功能简单来说延时中断OB块就是,延时中断OB块在经过一段指定的时间延时后,才执行相应的 OB 块中的程序。
S7-1200 最多支持 4 个延时中断 OB块,通过调用“SRT_DINT”指令启动延时中断OB块。
在使用“SRT_DINT”指令编程时,需要提供OB 号、延时时间,当到达设定的延时时间,操作系统将启动相应的延时中断OB块;尚未启动的延时中断OB块也可以通过“CAN_DINT”指令取消执行,同时还可以使用“QRY_DINT”指令查询延时中断的状态。
延时中断OB 的编号必须为20~23,或大于、等于123,比如OB20。
2.调用延时中断OB块的指令指令名称功能说明SRT_DINT 当指令的使能输入EN 上生成下降沿时,开始延时时间,超出参数 DTIME 中指定的延时时间之后,执行相应的延时OB 。
CAN_DINT 使用该指令取消已启动的延时中断(由 OB_NR 参数指定OB 编号)。
QRY_DINT 使用该指令查询延时中断的状态。
3.延时中断 OB 块的执行过程(1)调用“SRT_DINT”指令启动延时中断;(2)当到达设定的延时时间,操作系统将启动相应的延时中断OB 块;(3)图例中,延时中断 OB20 中断程序循环 OB1 优先执行;(4)当启动延时中断后,在延时时间到达之前,调用“CAN_DINT”指令可取消已启动的延时中断。
4. 延时中断OB块使用示例例如:当I0.1由1变成0,延时6秒后启动延时中断OB20,并输出Q0.0置位。
(1)按如下步骤创建延时中断 OB20 。
如图1图1(2)打开 OB20 ,在OB20 中编程,当延时中断执行时,置位Q0.0。
如图2图2(3)在OB1 中编程调用“SRT_DINT”指令启动延时中断;调用“CAN_DINT”指令取消延时中断;调用“QRY_DINT”指令查询中断状态。
在“指令->扩展指令->中断->延时中断”中可以找相关指令,如图3图3(4)调用延时中断指令。
OB块功能详细说明
1、自由循环组织块OB1S7CPU启动完成后,操作系统循环执行OB1,OB1执行完成后,操作系统再次启动OB1。
在OB1中可以调用FB、SFB、FC、SFC等用户程序使其循环执行。
除OB90以外,OB1优先级最低,可以被其他OB中断。
OB1默认扫描监控时间为150ms(可设置),扫描超时,CPU自动调用OB80报错,如果程序中没有建立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默认的时间间隔不同,例如OB35默认的时间间隔为100ms,在OB35中的用程序将每隔100ms调用一次,时间间隔可以自由设定,最小时间间隔不能小于55ms。
OB中的用户程序执行时间必须小于设定的时间间隔,如果间隔时间较短,由于循环中断OB没有完成程序扫描而被再次调用,从而造成CPU故障,触发OB80报错,如果程序中没有创建OB80,CPU进入停止模式。
西门子PLC S7OB组织块功能一览表
组织块一览表
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
西门子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作用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等,它们各自具有不同的功能和作用。
西门子1200延时中断功能OB块的使用
1.延时中断OB块的功能简单来说延时中断OB块就是,延时中断OB块在经过一段指定的时间延时后,才执行相应的OB块中的程序。
S7-1200 最多支持4 个延时中断OB块,通过调用“SRT_DINT”指令启动延时中断OB块。
在使用“SRT_DINT”指令编程时,需要提供OB 号、延时时间,当到达设定的延时时间,操作系统将启动相应的延时中断OB块;尚未启动的延时中断OB块也可以通过“CAN_DINT”指令取消执行,同时还可以使用“QRY_DINT”指令查询延时中断的状态。
延时中断OB 的编号必须为20~23,或大于、等于123,比如OB20。
3.延时中断OB 块的执行过程(1)调用“SRT_DINT”指令启动延时中断;(2)当到达设定的延时时间,操作系统将启动相应的延时中断OB块;(3)图例中,延时中断OB20 中断程序循环OB1 优先执行;(4)当启动延时中断后,在延时时间到达之前,调用“CAN_DINT”指令可取消已启动的延时中断。
4.延时中断OB块使用示例例如:当I0.1由1变成0,延时6秒后启动延时中断OB20,并输出Q0.0置位。
(1)按如下步骤创建延时中断OB20 。
如图1图1(2)打开OB20,在OB20 中编程,当延时中断执行时,置位Q0.0。
如图2图2(3)在OB1 中编程调用“SRT_DINT”指令启动延时中断;调用“CAN_DINT”指令取消延时中断;调用“QRY_DINT”指令查询中断状态。
在“指令->扩展指令->中断->延时中断”中可以找相关指令,如图3图3(4)调用延时中断指令。
如图4“QRY_DINT”指令参数说明:图4(5)测试结果:当I0.1由1变0时,延时6s后延时中断执行,可看到CPU 的输出Q0.0 指示灯亮;当I0.1由1变0时,在延时的6s到达之前,如果I0.2由0变1则取消延时中断,OB20 将不会执行。
西门子OB组织块介绍
西门子OB组织块介绍OB组织块● 什么是组织块?组织块是操作系统和用户程序之间的接口。
OB 用于执行具体的程序:•在 CPU 启动时•循环程序处理•在循环或延时时间到达时•当发生外部条件触发时•当发生故障、错误时OB内部调用FB、FC,并且这些FB、FC还可以继续向下嵌套调用FB、FC。
除主程序和启动OB以外,其他OB的执行是根据各种中断条件(错误、时间、硬件等)来触发的,OB无法被FB、FC调用。
每个组织块都有各自的优先级,在低优先级OB运行过程中,高优先级OB到来会打断低优先级执行。
以主循环程序为例,在没有其他OB执行时,程序循环中的程序,即主程序在周而复始的执行,当有高优先级中断(例如循环中断)出现时,立即停止主程序执行,转而执行高优先级中断OB的程序,当高优先级中断OB的程序执行完,则继续从中断处的主程序执行。
两个不同优先级OB的程序之间的打断也是同样道理。
OB事件● 组织块 OB 的类型图1 OB 的类型* V4.0版本CPU以前,延时中断OB+循环中断OB数量<=4** V4.0版本CPU开始支持** V4.1版本CPU开始支持** V4.2版本CPU开始支持通信优先级通信任务的优先级为1。
因为1 是最低优先级,所以其他事件可以中断通信处理。
其他事件导致的中断可能会对扫描周期的通信处理产生负面影响。
可以调整'通信造成的周期负载'百分比,以增加专用于通信处理的扫描周期部分。
● CPU 为每个OB 优先级提供了临时(本地)存储器:1、16 KB 用于启动和程序循环(包括相关的 FB 和 FC)2、6 KB 用于其他中断事件(包括 FB 和 FC)● 嵌套深度:是指可从 OB 调用功能 (FC) 或功能块 (FB) 等程序代码块的深度,如图1所示。
1、从程序循环 OB 或启动 OB 开始调用 FC 和 FB 等程序代码块,嵌套深度为16层;2、从其他中断 OB 开始调用 FC 和 FB 等程序代码块,嵌套深度为6层。
西门子PLC STEP7主要功能块介绍
西门子PLC STEP7主要功能块介绍西门子PLC S7-300系列和西门子PLC S7-400系列常用在工业自动化领域的中大型项目中,它们使用的编程软件是STEP7,在编程软件STEP7中,西门子为用户提供了多种功能块来方便用户编程使用。
本文下面就对西门子PLC编程软件STEP7中的功能块做一个介绍,为用户的使用提供帮助。
西门子PLC STEP7主要功能块用户在进行西门子PLC编程时,采用的编程工具为STEP7,STEP7是西门子S7/M7/C7系列西门子PLC的编程工具,该软件包以块形式管理用户编写的程序和数据。
STEP7的程序是一种结构化的程序,它把程序分为四种模块:(1) 组织模块(OB)用于对后四种模块的调用与管理;(2) 程序模块(FB)用于实现简单逻辑控制任务;(3) 功能模块(FC)用于对较复杂的控制任务进行编程,以实现调用;(4) 数据模块(DB)存储程序运行所需的数据。
在STEP7的操作系统还固化一些子程序,我们可根据自己的实际需要调用这些模块来满足控制要求,在本程序中,我们使用OB1、OB35、OB100组织模块。
OB1用于线性和结构化的程序执行。
对结构化的程序,所有的模块调用都将写入到OB1中,被OB1调用的模块,OB1可由操作系统自动循环调用。
OB35是一个循环中断程序,操作系统可每隔一定时间就产生中断运行,比OB1更高的优先级,也就是说,OB35可以中断OB1的运行,处理自身程序,中断的时间可在STEP7硬件组态中设定,本设计中,所以我们利用OB35实现对料筒实际温度的采样,其循环中断时间设定为20秒。
西门子PLC编程软件STEP7为用户提供了多种功能块,用户可以在编程组态过程中调用来完成各种逻辑功能。
北京天拓四方科技有限公司。
西门子 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进入停止模式。
西门子编程里面的各种块(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 中的程序(例如⽴即停⽌某些关键设备)。
西门子PLC中OB块的作用
OB1(Free Cycle)顺序扫描OB10~OB17(Time-Of-Day Interrupt)时间-日期中断OB20~OB23(Time-Delay Interrupt)时间延迟中断OB30~OB38(Cyclic Interrupt)周期性中断OB40~OB47(Hardware Interrupt)硬件中断OB55(Status Interrupt)状态中断OB56(Update Interrupt)升级中断OB57 (Manufacturer Interrupt)厂商专用中断OB61~OB64(Synchronous Cycle Interrupt)异步周期中断OB70(I/O Redundancy Error)I/O冗余错误OB72(CPU Redundancy Error)CPU冗余错误OB73(Communication Error)通信错误OB80(Time Error)时间错误OB81(Power Supply Error)电源错误OB82 (Diagnostic Interrupt)诊断中断OB83(Insert/Remove Interrupt)插/拔中断OB84(CPU Hardware Fault)CPU硬件错误OB85(Priority Class Error)优先级错误OB86(Rack Failure)机架错误OB87(Communication Error)通信错误OB88 (Processing Interrupt)过程错误OB90(Background OB)背景OBOB100(Warm Restart)暖启动OB101(Hot Restart)热启动OB102(Cold Restart冷启动OB121(Programming Error)编程错误OB122(I/O Access Error)I/O存储错误注:OB55,OB56,OB57,OB61,OB62,OB63,OB64,OB81,OB84,OB87,OB88,OB90是NOP(空操作)用户不需要用户不需要修改调用空操作的程序。
朗风快学PLC(八)西门子S7-300的程序结构OB,FB,FC,DB
朗风快学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拥有静态变量),当被调用时可以读写静态变量,调用结束后静态变量保存在数据块中,静态变量在某种程度上可以作为全局变量来进行使用,但使用时需要注意,这里不建议新手使用。
什么是PLC的FB,FC,DB,OB,这些块是什么意思?怎么用?
什么是PLC的FB,FC,DB,OB,这些块是什么意思?怎么⽤?朋友们好,我是电⼦及⼯控技术,我来回答这个问题。
很多不管是学习西门⼦PLC的还是学习施耐德或者是三菱的PLC,在PLC的编程软件中我们会常常遇见到“FB”、“FC”、“DB”、“OB”这样的程序块,以⾄于使初学PLC编程的朋友常常对此很容易产⽣混淆,甚⾄⽤错。
今天利⽤闲暇时间给朋友们梳理⼀下这些程序块到底是是代表什么意思,我们⼜该如何去⽤它们。
学过PLC的朋友都知道,在对软件编写程序的时候我们常常⽤三种编程⽅法,⼀种是结构化编程,另⼀种是线性化编写程序,还有⼀种是模块化的程序编写。
特别是在模块化编程和结构化编程中就会常常⽤到上述⽤户块的功能。
⾸先我们先解答⼀下什么是“块”。
“块”的诞⽣和功能1、“块”的功能在PLC程序中有两种程序,⼀种是⼚家在⽣产PLC时把它固化在PLC内部CPU中的系统程序,还有⼀种就是我们需要⾃⼰编写且能够随意“擦写”和下载的⽤户程序。
我们在编写PLC程序时,为了使我们的程序条理清晰和便于管理维护和阅读,软件制作者给我们规制制作了不同功能的块,我们在编写程序时就把不同功能的程序写在不同的程序块中,当PLC运⾏时,它的CPU就会按照程序需要运⾏的条件去命令相应的“块”来完成特定的控制任务,这就是块的功能。
“FC”函数的意义及使⽤在PLC编程软件中的'FC'是指函数的意思,它是⽤户⾃⼰编写的程序块。
在函数(FC)中是没有数据存储器的,它是可以通过调⽤使⽤,在调⽤时要给它的形式参数送⼀个具体的数值才可以⽤。
另外在这个“FC”函数⾥⾯是有局部变量表和块参数的,⽐如这些变量可以是有输⼊、输出和输⼊/输出和临时变量等。
它有点类似⼀个⼦程序,可以在主程序中调⽤。
举个PLC启停控制的简单例⼦,我们可以在主函数中建⽴⼀个⼦函数“FC”命名为“启停控制FC1”,建⽴好函数后给启动按钮与停⽌按钮以及输出继电器关联⼀个具体的实际参数就可以了。
西门子S7-1200组织块与中断
常用的组织块OB
常用的组织块OB
常用的组织块OB
常用的组织块OB
常用的组织块OB
常用的组织块OB
常用的组织块OB
常用的组织块OB
在设定的时间间隔,循环中断组织块被周期性地执行。最多可以组态 4 个循环中 断事件,循环中断 OB 的编号大于等于 200.
在 OB 的巡视窗口中,循环中断的时间间隔的默认值为 10织块OB
常用的组织块OB
常用的组织块OB
常用的组织块OB
常用的组织块OB
启动组织块用于系统初始化,CPU 从 Stop 切换到 RUN 时,执行一次启动 OB。 执行完后,开始执行程序循环 OB1.允许生成多个启动 OB,默认的是 OB100,其 他启动 OB 的编号应大于等于 200.一般只需要使用一个启动组织块。
常用的组织块OB
26
S7-1200 组织块与中断
组织块OB
组织块OB
组织块OB
组织块OB
常用的组织块OB
常用的组织块OB
需要连续执行的程序应放在主程序 OB1 中,CPU 在 RUN 模式时循环执行 OB1,可 以再 OB1中调用 FB 和 FC。如果用户程序生成了其他程序循环 OB,CPU 按 OB 编号的 顺序执行它们,首先执行主循环程序 OB1,然后执行编号大于等于 200 的程序循环 OB。 一般只需要一个程序循环组织块。
S7 300 OB 使用
OB121,OB122响应同步错误(与被中断OB相同)
当检测到程序错误或接受错误时启动
S7-300/400组织块 OB组织块一览表(2011-11-21 23:13:15)转载▼标签: 杂谈
组织块一览表
OB编号 启动事件 默认优先级 说明
受SFC32控制启动,在一特定延时后运行
OB35循环中断(12)
运行在一特定时间间隔内(1ms-1min)
OB40硬件中断(16)
当检测到来自外部模块的中断请求时启动
OB80到OB87响应异步错误(26/启动时28)
当检测到模块诊断错误或超时错误时启动
OB100启动(27)
OB90 冷、热启动、删除或背景循环 29 背景循环
OB100 暖启动 27
OB101 热启动 27 启动
OB102 冷启动 27
OB121 编程错误 与引起中断的 同步错误中断
OB122 I/O访
OB83 插入/拔出模块中断 29 启动为28
OB84 CPU硬件故障 30 启动为28 异步错误中断
OB85 优先级错误 31 启动为28
OB86 扩展几架、DP主站系统或分布式I/O站故障动为28
OB88 过程中断 34 启动为28
OB40~OB47 硬件中断0~7 16~23 检测外部中断请求时启动
OB55 状态中断 2 DPV1中断(profibus-dp)
OB56 刷新中断 2
OB57 制造厂特殊中断 2
OB60 多处理中断,调用SFC35时启动 25 多处理中断的同步操作
OB61~64 同步循环中断1~4 25 同步循环中断
PLC初学者不知道什么是FC、FB、OB、DB块,一定要明白
PLC初学者不知道什么是FC、FB、OB、DB块,⼀定要明⽩
最近经常有初学西门⼦PLC编程的朋友,对于FC、FB、OB、DB块特别迷茫,⼀开始的时候可
能很多⼈都会遇到类似的问题
⼀. 组织块,组织块是操作系统和⽤户程序之间的接⼝。
OB ⽤于执⾏具体的程序,我们最常⽤
的就是OB1,所有的FB和FC块都需要直接或者间接的接受调⽤,才能执⾏,如下图是创建组织
块,每个不同组织块是不同的功能
1、在 CPU 启动时;
2、在⼀个循环或延时时间到达时;
3、当发⽣硬件中断时;
4、当发⽣故障时;
5、组织块根据其优先级执⾏。
初学者先知道OB1的功能如何使⽤,如下图所⽰,所有的FB或者FC做成的⼦程序都需要间接或者直接的接受调⽤。
⼆. FC函数和FB函数块的区别在哪⾥呢,⾸先FB块有⾃⼰的背景数据块,就是专有的存储区,我们什么时候选择建⽴FB块呢,根据我⾃⼰以往的经验来说,就是需要重复使⽤的标准功能,例如⼀个项⽬⾥⾯有50个⽓缸需要控制30个电机需要控制,在这种情况下,我们就可以选择做两个电机和⽓缸的标准FB块,其余的都可以⽤FC。
三. FB块优点:1. 易于移植性,对于相同控制逻辑不同参数的被控对象,只要使⽤不同的背景DB,同⼀个FB块就可以⽅便
2. 多重背景,减少重复⼯作,提⾼效率
3. 多次调⽤时,参数修改⽅便
4. 有独⽴的存储区
四. FC块优点:1. ⼩巧灵活,对于⾮多次调⽤的程序更易理解
2. 不占⽤额外的存储资源
五. 数据块DB:数据块分为全局数据块和背景数据块,背景数据块即前⾯提到的FB块的专⽤存
储空间,如下图是建⽴的背景数据块
便调⽤
说明能够帮助到⼤家,感谢!。
SIEMENS S7 PLC组织块
OB 121, 122
(同步错误)
中断 OB
错误 OB
中断循环程序
例如:OB82 (优先级26) =错误处理程序。 当模拟输入PIW304 断线时执行。 例如OB10 (优先级2) =日期时间中断。 从9:30开始 每分钟执行一次。
OB1 连续执行 ...... 直到被其它OB中断
OB号 OB 1 OB 10 OB 20 OB 35 OB 40 OB 82 OB 类型 循环程序 日期时间中断 延时中断 循环中断 硬件中断 错误处理 优先级 1 2 3 12 16 26 / 28
模拟输入模块
硬件组态:
CPU的属性
模拟输入模块的属性
+27648 上限值 下限值 0
错误类型 时间错误 电源故障 诊断中断
异步错误组 织块
例 子 超出最大循环扫描时间 后备电池失效 有诊断能力模块的输入断线 在运行时移除S7-400的信号模块 MPI接口上出现错误的信号电平 更新映像区错误(模块有缺陷) 扩展设备或DP从站故障 读取信息格式错误
OB OB80 OB81 OB82 OB83 OB84 OB85 OB86 OB87
优先级 26
插入 / 移除 中断
CPU 硬件故障 程序执行错误 机架错误
通讯错误
26 / 28
诊断中断 (OB82)
模拟输入模块
硬件组态:
CPU的属性
模拟模块的属性
断线
+27648
0
同步错误
错误类型 例子 OB 优先级
例如 OB20 (优先级 3) =延时中断。 检测到一个信号后 延迟3.25s 执行。
循环中断 (OB35)
RUN
Interval
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OB55(Status Interrupt)状态中断
OB56(Update Interrupt)升级中断
OB57 (Manufacturer Interrupt)厂商专用中断
OB61~OB64(Synchronous Cycle Interrupt)异步周期中断
OB70(I/O Redundancy Error)I/O冗余错误
西门子OB块的作用
OB1(Free Cycle)顺序扫描
OB10~OB17(Time-Of-Day Interrupt)时间-日期中断
OB20~OB23(Time-Delay Interrupt)时间延迟中断
OB30~OB38(Cyclic Interrupt)周期性中断
OB40~OB47(Hardware Interrupt)硬件中断
OB72(CPU Redundancy Error)CPU冗余错误
OB73(Communication Error)通信错误
OB80(Time Error)时间错误
OB81(Power Supply Error)电源错误
OB82 (Diagnostic rt/Remove Interrupt)插/拔中断
OB84(CPU Hardware Fault)CPU硬件错误
OB85(Priority Class Error)优先级错误
OB86(Rack Failure)机架错误
OB87(Communication Error)通信错误
OB88 (Processing Interrupt)过程错误
OB90(Background OB)背景OB
OB100(Warm Restart)暖启动
OB101(Hot Restart)热启动
OB102(Cold Restart冷启动
OB121(Programming Error)编程错误
OB122(I/O Access Error)I/O存储错误
注:OB55,OB56,OB57,OB61,OB62,OB63,OB64,OB81,OB84,OB87,OB88,OB90是NOP(空操作)用户不需要用户不需要修改调用空操作的程序。