s7300功能组织块说明.docx
《s7300功能组织块说明.docx》由会员分享,可在线阅读,更多相关《s7300功能组织块说明.docx(87页珍藏版)》请在冰豆网上搜索。
![s7300功能组织块说明.docx](https://file1.bdocx.com/fileroot1/2023-4/16/04285524-3727-4140-aed7-e5325fe65bfd/04285524-3727-4140-aed7-e5325fe65bfd1.gif)
s7300功能组织块说明
组织块(OB)概述
何为组织块?
组织块(OB)是指CPU的操作系统与用户程序之间的接口。
OB用于执行特定的程序段:
1)启动CPU时在循环或定时执行过程中
2)出错时
3)发生硬件中断时。
组织块按照已分配的优先级来执行。
哪些OB可用?
并非所有的CPU均可处理STEP7中可用的所有OB。
请参阅操作列表/72/和/102/以确定您CPU中所包含的OB。
在何处查找详细信息?
请参阅在线帮助和下列手册以获取更多信息:
1)/70/:
此手册包含描述不同S7-300CPU性能的技术数据。
2)/101/:
此手册包含描述不同S7-400CPU性能的技术数据。
下表中给出了属于每个OB的启动事件和默认优先级。
OB启动事件默认优先级解释
OB1启动结束或OB1结束1空闲周期
OB10时间中断02未指定默认时间
OB11时间中断12
OB12时间中断22
OB13时间中断32
OB14时间中断42
OB15时间中断52
OB16时间中断62
OB17时间中断72
OB20延时中断03未指定默认时间
OB21延时中断14
OB22延时中断25
OB23延时中断36
OB30循环中断0(默认时间间隔:
5s)7
OB31循环中断1(默认时间间隔:
2s)8
OB32循环中断2(默认时间间隔:
1秒)9
OB33循环中断3(默认时间间隔:
500sms)10
OB34循环中断4(默认时间间隔:
200sms)11
OB35循环中断5(默认时间间隔:
100sms)12
OB36循环中断6(默认时间间隔:
50sms)13
OB37循环中断7(默认时间间隔:
20sms)14
OB38循环中断8(默认时间间隔:
10sms)15
OB40硬件中断016循环中断
OB41硬件中断117
OB42硬件中断218
OB43硬件中断319
OB44硬件中断420
OB45硬件中断521
OB46硬件中断622
OB47硬件中断723
OB55状态中断2DPV1中断
OB56更新中断2
OB57制造商特定中断2
OB60SFC35"MP_ALM"调用25多处理中断
OB61同步循环中断125
OB62同步循环中断225
OB63同步循环中断325
OB64同步循环中断425
OB65技术同步中断25技术
OB70I/O冗余错误(仅在HCPU中)25冗余错误中断
OB72CPU冗余错误(仅在HCPU中)28
OB73通讯冗余错误OB(仅在HCPU中)25
OB80时间错误26、281)异步错误中断
OB81电源故障26、281)(对于S7-300),25、281)(对于S7-400
和CPU318)
OB82诊断中断26、281)(对于S7-300),25、281)(对于S7-400
和CPU318)
OB83插入/删除模块中断26、281)(对于S7-300),25、281)(对于S7-400
和CPU318)
OB84CPU硬件故障26、281)(对于S7-300),25、281)(对于S7-400
和CPU318)
OB85编程错误26、281)(对于S7-300),25、281)(对于S7-400
和CPU318)
OB86扩展机架、DP主站系统或用于分布式I/O的站故障26、281)(对于S7-300),
25、281)(对于S7-400和CPU318)
OB87通讯错误26、281)(对于S7-300),25、281)(对于S7-400
和CPU318)
OB88处理中断28
OB90暖重启或冷重启,或删除OB90中正在执行的块,或将在CPU上装载OB90或终止OB90292)背景周期
OB100暖启动271)启动
OB101热启动271)
OB102冷启动271)
OB121编程错误导致错误的OB优先级同步错误中断
导致错误的OB优先级
OB122I/O访问错误
1)优先级27和28在启动的优先级模型中有效。
2)优先级29对应于优先级0.29。
这就意味着后台循环的优先级低于自由循环。
S7CPU的操作系统定期执行OB1。
执行OB1后,操作系统将再次启动它。
完成启动后,将启动OB1的循环执行。
可调用OB1中的其它功能块(FB、SFB)或功能(FC、SFC)。
程序循环组织块(OB1)
了解OB1的操作
在运行期受监视的所有OB中,OB1的优先级最低,换言之,除OB90之外的其它所有OB均可中断OB1的执行。
以下事件可导致操作系统调用OB1:
2完成启动。
3已完成OB1的执行(上一循环)。
执行OB1后,操作系统发送全局数据。
重新启动OB1之前,操作系统会将过程映像输出表写入输出模块中、更新过程映像输入表以及接收CPU的任何全局数据。
S7监视最大的扫描时间,并确保最大的响应时间。
最大扫描时间的值预置为150ms。
您可设置一个新值,也可在用户程序中的任意位置使用SFC43"RE_TRIGR"来重新启动时间监视。
如果用户程序超出了OB1的最大周期,则操作系统将调用OB80(时间错误OB);如果OB80没有编程,则CPU将转为STOP模式。
除了监视最大扫描时间外,还可以保证最小扫描时间。
操作系统将延迟启动新循环(将过程映像输出表写入输出模块中),直至达到最小扫描时间为止。
请参阅手册/70/和/101/以了解参数"最大"和"最小"扫描时间的范围。
可使用STEP7更改参数设置。
OB1的本地数据
下表描述了OB1的临时(TEMP)变量。
变量名为OB1的默认名称。
变量类型描述
OB1_EV_CLASSBYTE事件等级和标识符:
B#16#11:
OB1激活
OB1_SCAN_1BYTE?
B#16#01:
完成暖重启?
B#16#02:
完成热重启?
B#16#03:
完成主循环?
B#16#04:
完成冷重启?
B#16#05:
主站-保留站切换和"停止"上一主站之后新主站CPU的首个OB1循环
OB1_PRIORITYBYTE优先级1
OB1_OB_NUMBRBYTEOB编号(01)
OB1_RESERVED_1BYTE保留
OB1_RESERVED_2BYTE保留
OB1_PREV_CYCLEINT上一次扫描的运行时间(ms)
OB1_MIN_CYCLEINT自上次启动后的最小周期(ms)
OB1_MAX_CYCLEINT从上次启动后的最大周期(ms)
OB1_DATE_TIMEDATE_AND_TIME调用OB时的DATE_AND_TIME
时间中断组织块(OB10到OB17)
描述
STEP7提供了多达八个OB(OB10至OB17),这些OB可单次运行,也可定期运行。
可使用SFC或STEP7为CPU分配参数,以便以下列时间间隔处理这些OB:
1单次
2每分钟
3每小时
4每天
5每周
6每月
7每个月末
注意对于每月执行的时间中断OB,只可将1、2、...28号作为起始日期
了解时间中断OB的操作,要启动时间中断,必须先设置中断,然后再将其激活。
有以下三种可能的启动方式:
1)自动启动时间中断。
一旦使用STEP7设置并激活了时间中断,即会发生此情况。
下表说明了使用STEP7激活时间中断的基本可能情况。
2)使用STEP7设置时间中断,然后通过调用程序中的SFC30"ACT-TINT"来激活它。
3)通过调用SFC28"SET_TINT"来设置时间中断,然后通过调用SFC30"ACT_TINT"来激活它。
时间间隔描述
未激活时间中断未执行,即使将其装载到CPU中也是如此。
可通过调用SFC30来激活它。
仅激活一次时间OB按指定时间运行一次后,即被自动取消。
用户程序可使用SFC28和SFC30来复位并重新激活OB。
定期激活当发生时间中断时,CPU将根据当前的时间和周期计算时间中断的下一次启动的时间。
当前后拨动时钟时,时间中断的特性将如/234/中所述。
注意:
如果以如下方式组态时间中断,即单次处理相应的OB要,则DATE_AND_TIME必须为过去的时间(相对于CPU的实际时间)。
如果以如下方式组态时间中断,即定期处理相应的OB,而启动DATE_AND_TIME为过去的时间,随后将在下次预期的时间处理该时间中断。
下图对此进行了说明。
可以使用SFC39至42禁用或延迟和重新启用时间中断。
影响时间中断OB的条件
由于时间中断仅以指定的时间间隔发生,因此在执行用户程序期间,某些条件可能会影响OB的操作。
下表列出了其中的一些条件,并说明了该条件对执行时间中断OB的影响。
条件:
用户程序调用SFC29(CAN_TINT)并取消时间中断。
结果:
操作系统清除了时间中断的启动事件(DATE_AND_TIME)。
必须再次设置启动事件并在再次调用OB之前激活它
条件:
用户程序试图激活时间中断OB,但未将OB加载到CPU中。
结果:
操作系统调用OB85。
如果OB85尚未编程(装载到CPU中),则CPU将转为STOP模式。
条件:
当同步或更正CPU的系统时钟时,您提前设置了时间并跳过时间OB的启动事件日期或时间。
结果:
操作系统调用OB80并对时间OB的编号和OB80中的启动事件信息进行编码。
随后操作系统将运行一次时间OB,而不管本应执行此OB的次数。
OB80的启动事件信息给出了第一次跳过时间OB的DATE_AND_TIME。
条件:
当同步或更正CPU的系统时钟时,推后设置了时间以使OB的启动事件、日期或时间得以重复。
结果:
S7-400-CPU和CPU318:
如果在推后设置时钟之前已激活了时间OB,则不会再次调用它。
S7-300-CPU:
执行时间OB。
条件:
CPU通过暖重启或冷重启运行。
结果:
由SFC组态的所有时间OB会被改回在STEP7中指定的组态。
如果已为相应OB的单次启动组态了时间中断,并使用STEP7对其进行了设置,并将其激活,则当所组态的启动时间为已过去的时间(相对于CPU的实时时钟)时,会在暖重启或冷重启操作系统后调用一次OB。
条件当发生下一时间间隔的启动事件时,仍执行时间OB。
结果:
操作系统调用OB80。
如果OB80没有编程,则CPU转为STOP模式。
如果装载了OB80,则会首先执行OB80和时间中断OB,然后再执行请求的中断。
时间中断OB的本地数据
下表给出了时间中断OB的临时(TEMP)变量。
变量名为OB10的默认名称。
变量类型描述
OB10_EV_CLASSBYTE事件等级和标识符:
B#16#11=中断处于激活状态
OB10_STRT_INFOBYTEB#16#11:
OB10的启动请求(B#16#12:
OB11的启动请求):
:
(B#16#18:
OB17的启动请求)
OB10_PRIORITYBYTE分配的优先级;默认值为2
OB10_OB_NUMBRBYTEOB编号(10至17)
OB10_RESERVED_1BYTE保留
OB10_RESERVED_2BYTE保留
OB10_PERIOD_EXEWORDOB以指定的时间间隔执行:
W#16#0000:
单次W#16#0201:
每分钟一次W#16#0401:
每小时一次W#16#1001:
每天一次W#16#1201:
每周一次W#16#1401:
每月一次W#16#1801:
每年一次W#16#2001:
月末
OB10_RESERVED_3INT保留
OB10_RESERVED_4INT保留
OB10_DATE_TIMEDATE_AND_TIME调用OB时的DATE_AND_TIME
延时中断组织块(OB20至OB23)
描述
S7提供多达四个在指定延迟后执行的OB(OB20至OB23)。
每个延时OB均可通过调用SFC32(SRT_DINT)来启动。
延迟时间是SFC的一个输入参数。
当程序调用SFC32(SRT_DINT)时,需要提供OB编号、延迟时间和用户专用的标识符。
经过指定的延迟后,OB将会启动。
还可取消尚未启动的延时中断。
了解延时中断OB的操作
延迟时间(同OB编号一起传送给SFC32的值,单位为ms)到期后,操作系统将启动相应的OB。
要使用延时中断,必须执行以下任务:
1必须调用SFC32(SRT_DINT)。
2必须将延时中断OB作为用户程序的一部分下载到CPU。
只有当CPU处于RUN模式下时才会执行延时OB。
暖重启或冷重启将清除延时OB的所有启动事件。
如果延时中断还未启动,则可使用SFC33(CAN_DINT)取消执行。
延迟时间的分辨率为1ms。
已到期的延迟时间可立即再次启动。
可使用SFC34(QRY_DINT)查询延时中断的状态。
如果发生以下事件之一,操作系统将调用异步错误OB:
1如果操作系统试图启动一个尚未装载的OB,并且您在调用SFC32"SRT_DINT"时指定了其编号。
2如果在完全执行延时OB之前发生延时中断的下一个启动事件。
可使用SFC39至42来禁用或延迟并重新使能延迟中断。
延时中断OB的本地数据
下表描述了延时中断OB的临时(TEMP)变量。
变量名为OB20的默认名称。
变量类型描述
OB20_EV_CLASSBYTE事件等级和标识符:
B#16#11:
中断处于激活状态
OB20_STRT_INFBYTEB#16#21:
OB20的启动请求(B#16#22:
OB21的启动请求)(B#16#23:
OB22的启动请求)(B#16#24:
OB23的启动请求)
OB20_PRIORITYBYTE分配的优先级:
默认值3(OB20)至6(OB23)
OB20_OB_NUMBRBYTEOB编号(20至23)
OB20_RESERVED_1BYTE保留
OB20_RESERVED_2BYTE保留
OB20_SIGNWORD用户ID:
来自调用SFC32(SRT_DINT)的输入参数SIGN
OB20_DTIMETIME已组态的延迟时间(单位为ms)
OB20_DATE_TIMEDATE_AND_TIME调用OB时的DATE_AND_TIME
周期性中断组织块(OB30至OB38)
S7提供了多达九个的循环中断OB(OB30至OB38),它们以固定的时间间隔来中断用户程序。
下表给出了循环中断OB的默认时间间隔和优先级。
OB编号默认时间间隔默认优先级
OB305s7
OB312s8
OB321s9
OB33500ms10
OB34200ms11
OB35100ms12
OB3650ms13
OB3720ms14
OB3810ms15
了解循环中断OB的操作
循环中断OB的等距启动时间是由时间间隔和相位偏移量决定的。
请参阅/234/,以了解OB的启动时间、周期以及相位偏移量之间的关系。
注意:
必须确保每个循环中断OB的运行时间远远小于其时间间隔。
如果因时间间隔已到期,如果在预期的再次执行前未完全执行循环中断OB,则启动时间错误OB(OB80)。
稍后将执行导致错误的循环中断。
可使用SFC39至42来禁用或延迟,并重新启用循环中断
请参阅用户特定CPU的说明书,了解参数时间间隔、优先级和相位偏移量的范围。
可使用STEP7来更改参数设置。
循环中断OB的本地数据
下表给出了循环中断OB的临时(TEMP)变量。
变量名为OB35的默认名称。
变量类型描述
OB35_EV_CLASSBYTE事件等级和标识符B#16#11:
中断处于激活状态
OB35_STRT_INFBYTEB#16#30:
H系统中周期性中断组织块的特殊启动请求(选择了特殊处理,用于切换到"冗余"系统状态)?
B#16#31:
OB30的启动请求。
B#16#36:
OB35的启动请求。
B#16#39:
OB38的启动请求。
B#16#3A:
周期性中断组织块(OB?
0至OB?
8)的启动请求,要求周期性中断时钟速率低于1毫秒
OB35_PRIORITYBYTE分配的优先级:
默认值为7(OB30)至15(OB38)
OB35_OB_NUMBRBYTEOB编号(30至38)
OB35_RESERVED_1BYTE保留
OB35_RESERVED_2BYTE保留
OB35_PHASE_OFFSETWORD如果OB35_STRT_INF=B#16#3A:
以靤为单位表示的相位偏移?
在其它情况下:
相位偏移以毫秒为单位
OB35_RESERVED_3INT保留
OB35_EXC_FREQINT如果OB35_STRT_INF=B#16#3A:
以靤为单位表示的循环时间?
在其它情况下:
时间间隔(单位为ms)
OB35_DATE_TIMEDATE_AND_TIME调用OB时的DATE_AND_TIME
硬件中断组织块(OB40至OB47)
描述
S7提供了多达八个的独立硬件中断,每一中断都具有自己的OB。
通过STEP7分配参数,可以为将要触发硬件中断的每个信号模块指定以下内容:
1)在何种条件下触发硬件中断的通道。
2)要分配给个别通道组的硬件中断OB(默认情况下,将由OB40来处理所有的硬件中断)。
借助于CP和FM,可使用其各带软件来分配这些参数。
可使用STEP7选择各个硬件中断OB的优先级。
了解硬件中断OB的操作
在模块触发硬件中断后,操作系统将标识插槽以及相应的硬件中断OB。
如果此OB的优先级高于当前激活的优先级,则将启动该OB。
当执行完此硬件中断OB后,将发送通道指定的确认。
如果在对硬件中断进行标识和确认的这段时间内,在同一模块中发生了触发硬件中断的另一事件,则应用以下规则:
1)如果该事件发生在先前触发硬件中断的通道中,则新中断丢失。
在下图中,将根据数字输入模块的通道实例对此进行说明。
触发事件是上升沿。
硬件中断OB是OB40。
2)如果该事件发生在同一模块的另一通道中,通常不会触发任何硬件中断。
然而此中断不会丢失,而是在确认当前激活的硬件中断后被触发。
如果因来自另一模块中的硬件中断而使某一硬件中断被触发,并且其OB当前处于激活状态,则将记录新请求并且在OB空闲时对其进行处理。
可使用SFC39至42来禁用或延迟,并重新启用硬件中断。
既可以使用STEP7,也可以使用SFC55至57为模块的硬件中断分配参数。
硬件中断OB的本地数据
下表给出了硬件中断OB的临时(TEMP)变量。
变量名为OB40的默认名称。
变量类型描述
OB40_EV_CLASSBYTE事件等级和标识符:
B#16#11:
中断处于激活状态
OB40_STRT_INFBYTEB#16#41:
通过中断线1中断。
B#16#42:
通过中断线2中断(仅限S7-400)?
B#16#43:
通过中断线3中断(仅限S7-400)。
B#16#44:
通过中断线4中断(仅限S7-400)?
B#16#45:
WinAC:
通过PC触发中断注意:
将中断行1,?
4分配给多处理模式中的CPU1,?
4。
OB40_PRIORITYBYTE分配的优先级:
默认值为16(OB40)至23(OB47)
OB40_OB_NUMBRBYTEOB编号(40至47)
OB40_RESERVED_1BYTE保留
OB40_IO_FLAGBYTE输入模块:
B#16#54输出模块:
B#16#55
OB40_MDL_ADDRWORD触发中断的模块的逻辑基址
OB40_POINT_ADDRDWORD对于数字模块:
触发硬件中断的模块上带输入的位域OB40_POINT_ADDR的哪一位分配给模块的哪个通道可在相关模块的说明中找到。
对于模拟模块:
位域包含表示哪个通道超出何种限制的信息(要获取清晰的结构描述,请参考/71/或/101/)。
对于CP或IM:
模块的中断状态(与用户无关)
OB40_DATE_TIMEDATE_AND_TIME调用OB时的DATE_AND_TIME
注意:
如果使用呢具有DPV1功能的CPU,可借助于SFB54"RALRM"获取有关中断的其它信息,这些信息不止包含OB的起始信息。
在S7兼容模式下操作DP主站时,这一点也同样适用。
状态中断OB(OB55)
注意:
状态中断OB(OB55)仅对具有DPV1功能的CPU可用。
描述
如果状态中断是通过DPV1从站的插槽触发,则CPU操作系统调用OB55。
如果DPV1从站的组件(模块或机架)更改了其工作模式(例如由RUN改为STOP),则可能会发生这种情况。
有关可触发状态中断的事件的详细信息,请参阅DPV1从站制造商的文档。
状态中断OB的本地数据
下表给出了状态中断OB的临时(TEMP)变量。
所选变量的名称为OB55的默认名称。
变量数据类型描述
OB55_EV_CLASSBYTE事件等级和标识符:
B#16#11(即将发生的事件)
OB55_STRT_INFBYTE?
B#16#55:
DP的状态中断?
B#16#58:
PNIO的状态中断
OB55_PRIORITYBYTE已组态的优先级,默认值为2
OB55_OB_NUMBRBYTEOB编号(55)
OB55_RESERVED_1BYTE保留
OB55_IO_FLAGBYTE输入模块:
B#16#54输出模块:
B#16#55
OB55_MDL_ADDRWORD中断触发组件(模块)的逻辑基址
OB55_LENBYTE中断所提供的数据块长度
OB55_TYPEBYTE中断类型"状态中断"的ID
OB55_SLOTBYTE中断触发组件(模块)的插槽号
OB55_SPECBYTE说明符?
位0至1:
中断说明符?
位2:
Add_Ack?
位3至7:
顺序号
OB55_DATE_TIMEDATE_AND_TIME调用OB时的日期和时间
注意通过OB55调用SFB54"RALRM",可获得DP消息帧所含中断的完整辅助信息。
如果要对依赖于启动事件的OB55进行编程,建议按如下方式组织局部变量:
变量数据类型
OB55_EV_CLASSBYTE
OB55_STRT_INFBYTE
OB55_PRIORITYBYTE
OB55_OB_NUMBRBYTE
OB55_RESERVED_1BYTE_
OB55_IO_FLAGBYTE
OB55_MDL_ADRWORD
OB55_Z2WORD
OB55_Z3WORD
OB55_DATE_TIMEDATE_AND_TIME
根据启动事件,变量OB55_Z2和OB55_Z3包含不同的信息。
详细说明如下。
OB55_Z2的含义
OB55_ST