[西门子] 西门子PLC1200中OB、FB、FC、DB概念详解(一)

[复制链接]
查看134 | 回复0 | 2024-4-30 21:49:23 | 显示全部楼层 |阅读模式
在PLC中,程序的结构一般分为3种:线性化、模块化和结构化。



线性化程序结构不太适合较大程序量的程序;

模块化程序结构是将程序按照一定的规律分割成多个子程序,然后由主程序去调用它们,模块化子程序一般编写在函数——FC中;

结构化程序结构是将相同功能的程序编写在函数——FC,或者函数块——FB中,并多次被上一级程序调用,这样相同功能的程序只需写一次,相当于同样的代码被多次复用,程序得到了一定程度的简化,结构更加清晰,可读性更好。

在西门子1200中程序块可以分为函数块(FB)、函数(FC)、数据块(DB)和组织块(OB)四种类型。



一、组织块(Organization Black,OB)是PLC操作系统与用户程序之间的接口。OB间不能互相调用,也不能被FC或FB调用,由PLC操作系统自动调用。

下表为各OB的名称类型、启动事件、优先级等信息


OB名称

OB类型及启动事件

默认优先级

可能的OB编号

数量

Startup

启动

1

100,≥123

≥0

Program cycle

程序循环

1

1,≥123

≥1

Time of day

时间中断

2

≥10

≤2

Time delay interrupt

延时中断

3

≥20

≤4

Cyclic interrupt

循环中断

8

≥30

≤4

Hardware interrupt

硬件中断

18

≥40

≤50

Status

状态中断

4

55

≤1

Update

更新中断

4

56

≤1

Profile

制造商或配置文件特定中断

4

57

≤1

Time error interrupt

时间错误

22

80

≤1

Diagnostic error interrupt

诊断中断

5

82

≤1

Pull or plug of modules

模块拔出/插入中断

6

83

≤1

Rack or station failure

机架错误

6

86

≤1

1、启动组织块——Startup

CPU从STOP切换到RUN模式时,将调用启动块,一次性完成后,将开始执行主程序OB。启动组织块主要是对程序进行初始化,比如清零、赋值等。

举例:PLC从STOP到RUN切换时,对数据存储区进行清零或者赋初始值。

步骤如下:

(1)添加新块,OB100;



(2)打开0B100,在OB100写程序,清零或者赋值;



(3)下载。

2、程序循环组织块——Program cycle

即主程序块main,在RUN模式时,PLC的操作系统每个周期调用程序循环组织块一次。也可以使用多个程序循环组织块(OB编号≥123),并按序号由小到大的顺序依次执行。



3、循环中断组织块——Cyclic interrupt

循环中断组织块按设定的时间间隔循环执行,是固定时间间隔中断,间隔时间可修改;循环中断适合处理需要固定扫描周期的用户程序;使用多个循环中断时,应使用相位偏移量。

举例:循环时间设定为1000,每隔1S,MW100自动+1。

第一步:创建循环中断组织块



第二步:也可在块属性中修改循环时间



第三步:编写程序



4、时间中断组织块——Time of day

时间中断组织块可以实现在某个预定时间达到时只运行一次,或者按每分、每小时、每日、每周、每月、每月底或每年的周期运行(每次达到周期时间,时间中断组织块中的程序都执行一次)。

1)建立时间中断



2)调用时间中断



3)时间中断指令介绍

设置时间中断指令“SET_TINTL”用于在用户程序中设置时间中断组织块的开始日期和时间,而不是在硬件配置中进行设置。

  • 通过参数 OB_NR 输入待设置开始日期和时间的时间中断 OB 编号。

  • 通过参数 SDT 和 PERIOD,可指定调用时间中断 OB 的时间和频率:

    • 一次性调用:在参数SDT 中输入日期和时间。使用参数 PERIOD 处的值“0”。

    • 重复调用:在参数 SDT 中输入首次调用的日期和时间。然后,通过参数 PERIOD 定义 OB 后续调用的时间间隔。

  • 可通过参数 LOCAL 选择由参数 SDT 所指定的时间为本地时间或是系统时间。


  • 通过 ACTIVATE 参数,可指定组织块用于该设置的时间:

    • ACTIVATE = true:直接应用这些设置。


    • ACTIVATE = false:仅在“ACT_TINT”调用后才应用设置。



    取消时间中断指令“CAN_TINT”可用于删除指定时间中断组织块的开始日期和时间。这会取消激活时间中断,并且不再调用该组织块。

    如果要重复调用时间中断,则必须复位开始时间(指令“SET_TINTL”或“SET_TINT”)。

    之后,需重新激活时间中断:

    • 如果使用带有参数 ACTIVE=false 的指令“SET_TINT”或“SET_TINTL”对时间中断进行设置,则将调用指令“ACT_TINT”。

    • 使用指令“SET_TINTL”时,也可通过参数 ACTIVE=true 直接激活时间中断。



    启用时间中断指令“ACT_TINT”可用于从用户程序中激活时间中断组织块。在执行该指令之前,时间中断 OB 必须已设置了开始日期和时间。



    查询时间中断的状态“QRY_TINT”可使用该指令在 STATUS 输出参数中显示时间中断组织块的状态。







    免责声明:部分素材来自网络,如有侵权请联系作者删除!


本帖子中包含更多资源

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

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

本版积分规则