0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OB优先级和运行时特性

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 2023-01-07 11:41 次阅读

OB 优先级和运行时特性

S7-1200-CPU 支持优先级 1(最低)到 27(最高)。为 OB 分配其启动事件的优先级。中断 OB 只能由时间错误中断进行中断。 此规则也适用于优先级高于当前激活 OB 的事件。即,除时间错误中断 OB 外,只能激活一个中断 OB。

正在执行中断 OB 时,生成的任何其它事件都会按照其优先级添加到队列中。稍后按照其发生的时间顺序来处理队列中的启动事件。

CPU 上的程序执行:

循环 OB 由中断 OB 进行中断。

中断 OB 只能由时间错误中断 OB 进行中断。

下图显示了基本顺序:

d63b7a9e-8e1b-11ed-bfe3-dac502259ad0.png

① and ②某个事件(如硬件中断)调用其相关联的 OB。

不中断地执行已调用的 OB 及其所有嵌套块。如果队列不包含任何可触发 OB启动的事件,则在完成中断处理时会继续执行循环 OB。

③ 中断 OB 只能由时间错误中断 OB (OB 80) 进行中断。

④ 中断处理期间会发生新的报警触发事件。这个新事件会添加到队列中。排队的事件只能在完成执行当前中断 OB 后按照以下规则连续调用其相应的 OB:

● 事件按照其优先级顺序进行处理(从最高优先级开始)

● 优先级相同的事件按照时间顺序进行处理

⑤ 循环 OB 相继进行处理。

过程事件及其优先级

过程事件由 I/O(例如通过数字量输入)触发并在 S7-1200 CPU 中启动对已分配 OB 的调用。 分配给硬件中断事件的 OB 就是所谓的硬件中断 OB。

过程事件及其优先级的示例:

● 中断触发模块中的过程事件“上升沿”或“下降沿”:由此事件启动的硬件中断 OB 总是分配为优先级 5。

● 来自高速计数器的过程事件

– 计数值对应于参考值

– 更改计数方向

– 高速计数器的外部复位

由此事件启动的硬件中断 OB 总是分配为优先级 6。

下图显示了硬件中断执行的顺序。

d64517de-8e1b-11ed-bfe3-dac502259ad0.png

硬件中断执行

① 硬件中断触发事件(如输入端的上升沿)调用它所属的 OB。

② 如果执行 OB 时发生触发硬件中断的新事件,则将该事件输入到队列中。

③ 触发硬件中断的新事件会启动分配给此事件的硬件中断 OB。

分配中断触发事件在设备视图的输入属性中,将中断触发事件分配给 OB。

● 只能将中断触发事件分配给单个 OB。

● 但是,可将 OB 分配给多个中断触发事件。

即,可将上升沿事件和下降沿事件分配给同一个中断 OB,以便对任何输入信号的切换触发相同的响应。

● 每条指令中,已启动的 OB 都可以中断循环 OB。一致的数据访问由最多双字大小来保证。

● 可参数化模块特定的中断触发事件,如输入端的上升沿和下降沿。

● 在中断触发模块的组态中分配中断触发事件和要启动的 OB。但是,在已启动的硬件中断 OB 中,可通过 DETACH 指令覆盖此分配,或者通过 ATTACH 指令将相同的事件分配给不同的 OB。使用该功能可对外部过程信号进行灵活的响应。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10446

    浏览量

    206570
  • 计数器
    +关注

    关注

    32

    文章

    2123

    浏览量

    92987
  • S7-1200
    +关注

    关注

    11

    文章

    329

    浏览量

    17223

原文标题:OB 优先级和运行时特性

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    [转] STN32抢占优先级与副优先级及中断优先级NVIC理解

    首先来说说两个概念,1、NVIC的优先级概念 抢占式优先级 (pre-emption priority): 高占先式优先级的中断事件会打断当前的主程序/中断程序运行— —抢断式
    发表于 04-15 14:14

    默认优先级问题

    默认的优先级,timer0正在执行时,int1有了触发信号,等timer执行完后,int1的信号消失了,那int1 是否执行,(用c编写)
    发表于 07-28 03:43

    CC1310rtos里面,优先级定义时,是1的优先级高还是2的优先级高?

    CC1310rtos里面,优先级定义时,是1的优先级高还是2的优先级高?
    发表于 06-21 10:12

    如何保证任务优先级的高低?

    往里面加任务 ,加入 我这个任务高优先级 怎么保证不影响 四轴一些比较低优先级但又必须执行任务的执行时间。因为我看视频freertos主要都是单个例子 多个 怎么组合。。有点困惑
    发表于 07-22 04:35

    请问UCOS-III是怎么运行高度不同优先级的任务的?

    大家好请教个问题:ucos-iii是可剥夺式内核,总是先运行就绪的高优先级的任务,那么低优先级的任务啥时候被运行呢?比如,任务1的优先级是3
    发表于 10-14 04:37

    如何理解任务优先级反转?

    嵌入式实时操作系统USCOSii中第四章 的 图4-15中有描述 关于任务优先级反转示意图:有疑问就是为什么 在C运行时候 A B都在等待,却B获得CPU的运行权限?
    发表于 11-04 03:57

    移植ucos低优先级的任务一直在运行优先级的任务没有运行是为什么?

    移植ucos,低优先级的任务一直在运行,高优先级的任务没有运行
    发表于 06-02 12:12

    软件定时器的优先级与任务的优先级是同一个东西吗?

    任务A在运行,则软件定时器即使时间到也不能运行。硬件中断的优先级则是最高的,如果freeRTOS不屏蔽中断,则任何中断都可以中断都可以打断正在运行的任务
    发表于 06-19 04:06

    freertos的任务运行时间怎么设置

    对于相同优先级的任务采用时间片轮询的方式运行,那比如说有两个优先级都为5的任务,那这两个任务的运行时间如何设置呢?在rt-thread中创建任务时就可以设置任务的
    发表于 07-19 08:03

    优先级判断STM32

    一:综述STM32 目前支持的中断共为 84 个(16 个内核+68 个外部), 16 可编程中断优先级的设置(仅使用中断优先级设置 8bit 中的高 4 位)和16个抢占优先级(因
    发表于 08-13 06:50

    中断优先级设置碰到的问题

    出现另一个中断优先级低的刚等待定时器执行完要开始执行时,定时时间到了又进定时中断。如此循环低优先级的中断永远也进不去。(给低优先级中断IE位重新复位可以在短时间无视
    发表于 11-24 06:22

    什么是先占优先级和从优先级

    什么是先占优先级和从优先级
    发表于 12-13 07:00

    优先级执行了75s怎么办?它会被杀死吗?

    不能一直抢占住CPU运行超过75s。也就是即使有其他低优先级线程运行时,高优先级线程也不能抢占低优先级线程
    发表于 05-17 14:41

    如何应用优先级错误处理组织块(OB85)

    优先级错误组织块(OB85) 只要发生下列事件之一,CPU的操作系统即调用OB85: 1.尚未装载的OB (OB8、
    的头像 发表于 10-14 16:18 3579次阅读

    Go运行时:4年之后

    自 2018 年以来,Go GC,以及更广泛的 Go 运行时,一直在稳步改进。近日,Go 社区总结了 4 年来 Go 运行时的一些重要变化。
    的头像 发表于 11-30 16:21 532次阅读