设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
西门子PLC1200中OB、FB、FC、DB概念详解(一) ...
返回列表
发新帖
[西门子]
西门子PLC1200中OB、FB、FC、DB概念详解(一)
[复制链接]
135
|
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
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
工控老炮儿
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』