[西门子] TIA博图笔记:程序块的类型有哪些?什么是结构化逻辑编程?

[复制链接]
查看94572 | 回复0 | 2024-4-13 15:26:48 | 显示全部楼层 |阅读模式
上节回顾:如何在TIA博图中使用转换值、缩放和标准化指令?

本节重点:TIA博图重点程序块和结构化逻辑编程


一、组织块:

组织块(OB)是CPU的操作系统与用户程序之间的接口,CPU系统自动执行,无需调用,不同类型的OB块具有不同的执行触发条件,具有优先级的区别,优先级数字越小优先级越低



组织块的分类:

1、循环OB

我们编写出来的程序本身就是一个循环程序,而循环OB是根据程序执行条件去执行某一部分相关的程序,该过程执行之后,操作系统将再次开始执行。

循环程序可以有一个或多个循环 OB。这些OB 的优先级为 1,是所有 OB 中优先级最低的。任何其它事件类别的事件都可以中断循环程序。

2、启动OB

操作系统从“STOP”切换到“RUN”模式时,将调用每个启动OB。每个启动OB只会启动一次,通常是用来作为编写程序的初始化功能来使用。

3、循环中断OB

当收到一个中断执行指令的时候,循环中断OB会停止当前的程序而转去执行需要更加“着急”的程序,等到执行完毕之后又反过来执行中断前的程序。

循环中断 OB按照所设置的时间参数循环执行。(如100ms,则意味着每隔100ms执行一次循环中断OB中的程序),优先级高于循环OB。

循环中断 OB的启动时间根据其时间间隔和相位偏移来通过以下公式确定:

启动时间 = n * 时间间隔 + 相位偏移(n = 0, 1, 2 ...


  • 时间间隔即为两次调用之间的时间段, 是 1 µs     基本时钟周期的整数倍。

  • 相位偏移是以时间间隔为倍数,从启动时间进行偏移的时间间隔。
              使用多个循环中断 OB 时可使用相位偏移。例如,当它们的时间间隔具有公倍数时,可使用相位偏移来防止同时启动。

循环中断 OB的运行时间必须远小于其时间间隔。否则,会在循环中断时间间隔结束后仍在处理相应循环中断 OB。此时,操作系统会生成时间错误(调用 OB 80)。稍后将执行导致错误的循环中断或将其放弃。但是,对于每个优先级稍后只能执行一个循环中断 OB。

4、硬件中断 OB和I/O 访问错误 OB

硬件或程序中出现相应故障后自动执行,每次故障仅执行一次相应OB中的程序,具有较高的优先级。

……

二、函数块(FB)和函数(FC)

我们所编写的函数块FB和函数FC这两种模块,最终来讲,都是要通过OB块来进行执行的。

既然都是要通过OB块来执行的,那么它们两个有什么区别?

最大的区别本质是:函数块FB在调用执行的时候,需要创建生成相应的背景数据块

函数(FC)执行时如需使用中间变量时,使用临时变量区域(L区)。

函数块(FB)执行时如需使用中间变量时,可以使用自带的背景数据块。

就好比生活中的例子:我们可以把雇主当作是函数,而函数执行过程中,需要找人来帮助完成项目,那么一些零碎的临时工就可以当作是临时变量,我们需要使用到临时变量时,只需要调用就可以,当我们用完之后又可以将这些临时变量放回到临时变量区中去。

而我们可以把老板当作是函数块,当一个项目下来的时候,那么就需要找到他自带的手下(也就是背景数据块)来完成项目,当然了,假如人手不够时,也是可以找一些临时变量,但是一般来说,会优先使用自身的背景数据块。

以上介绍了那么多,其实就是为了以下做铺垫:实现结构化逻辑编程。



什么叫做结构化逻辑编程?

在项目程序中,根据项目实际情况,按功能编写FC/FB程序块,每个程序块对应一种功能,然后依照项目的逻辑,在OB中分别调用所编写的FC/FB 程序块的程序,就叫做结构化逻辑编程。

比如我们在写一个机器人的程序时,先将机器人分为几个工作模块:六轴电机每轴电机的单独动作,机器人工作程序,机器人交换信号程序等等,我们可以单独对一个电机进行编写一段程序,让对应的伺服电机能实现转动,然后根据逻辑控制去每次调用同一个程序的不同动作指令,最终将这些程序全部总结在一个主程序中调用,这样的程序就叫做结构化逻辑编程。

这样做出来的程序会直接简洁明了,逻辑上也是非常的清晰,如果在实际应用中出现故障也能快速的寻找到目标的故障问题点。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则