S7-300_PLC课件 数据块中的数据存储,组织快,结构化编程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
青岛大学-西门子先进自动化技术实验室 青岛大学自动化工程学院
SIEMENS
错误组织块应用举例
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
错误处理OB块中的附加信息
OB 122 (访问错误)中的附加信息
变量 OB122_EV_CLASS OB122_SW_FLT OB122_PRIORITY OB122_OB_NUMBR OB122_BLK_TYPE 类型 BYTE BYTE BYTE BYTE BYTE 描述 事件类别, IDs = B#16#29 错误代码: (可能的值为: B#16#42, B#16#43, B#16#44, B#16#45) 发生错误的OB块的优先级 OB块的号码 (122) 发生错误的块的类型: B#16#88: OB? B#16#8A: DB? B#16#8C: FC? B#16#8E: FB? 内存区域和访问类型 发生错误处的内存地址 导致错误的MC7指令所在块的地址 导致错误的MC7 指令的相对地址 OB块被调用的日期和时刻
复杂数据 类型 (长于32位)
• 时间 (DATE_AND_TIME) • 矩阵 (ARRAY) • 结构 (STRUCT)
• 字符串 (STRING)
用户定义数据类型 (长于 32 位)
数据类型 UDT (用户定义数据类型)
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
数据块 (DB)
所有块可以访问 OB1
功能 FC10
全局数据
DB20
功能 FC20
FB1的背景DB
功能块 FB1
背景数据
DB5
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
STEP 7数据类型概述
基本数据 类型 (到32 位) • 位数据类型 (BOOL, BYTE, WORD, DWORD, CHAR) • 数学数据类型 (INT, DINT, REAL) • 定时器类型 (S5TIME, TIME, DATE, TIME_OF_DAY)
插入 / 移除 中断
CPU 硬件故障 程序执行错误 机架错误
通讯错误
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
同步错误
错误类型 例子 OB 优先级
编程错误
在程序中调用一个 CPU中并不存在的块
OB121 与被中断的错误 OB优先级相同
访问错误
访问一个模块有故障或不存在的模块 OB122 (例如,直接访问一个不存在的 I/O模块)
硬件组态:
模拟模块的属性 模拟输入模块 CPU的属性
断线
+27648
0
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
异步错误组织块
错误类型 时间错误 电源故障 诊断中断 例 子 超出最大循环扫描时间 后备电池失效 有诊断能力模块的输入断线 在运行时移除S7-400的信号模块 MPI接口上出现错误的信号电平 更新映像区错误(模块有缺陷) 扩展设备或DP从站故障 读取信息格式错误 OB OB80 OB81 OB82 OB83 OB84 OB85 OB86 OB87 26 / 28 优先级 26
例如 OB20 (优先级 3) =延时中断。 检测到一个信号后 延迟3.25s 执行。
OB号 OB 1 OB 10 OB 20 OB 35 OB 40 OB 82
OB 类型 循环程序 日期时间中断 延时中断 循环中断 硬件中断 错误处理
优先级 1 2 3 12 16 26 / 28
青岛大学-西门子先进自动化技术实验室
OB122_MEM_AREA OB122_MEM_ADDR OB122_BLK_NUM OB122_PRG_ADDR OB122_DATE_TIME
BYTE WORD WORD WORD DATE_AND_TIME
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
控制中断组织块的系统功能块
序号 1 步骤
设置CPU的参数,使得在课程结束时执行 日期时间中断。
结果
2
根据要求生成、保存、下装OB10。
3
测试程序的功能
在课程结束时,蜂鸣器发出声音。
4
Байду номын сангаас
禁止日期时间中断,并将修改的配置下装。
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
练习4: 利用时间中断实现定时检测
额定范围
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
数据块(DB)中的数据存储
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
数据存储区
位存储器 PIQ PII I/O 区 DBy DBx
DBz
.. .
L 堆栈
数据块
青岛大学-西门子先进自动化技术实验室
M35.0 以 3 Hz 频率闪烁
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
延时中断 (OB20)
I 0.0
M0.1
(P)
20 T#500ms W#16#01
EN OB_NR DTIME SIGN
SFC 32 (SRT_DINT)
M2.0 ENO RET_VAL
( )
OB 20...23
(延时中断)
OB 80...87
(异步错误)
OB 30...38
(循环中断)
OB 40...47
(硬件中断)
OB 121, 122
(同步错误)
中断 OB
青岛大学-西门子先进自动化技术实验室
错误 OB
青岛大学自动化工程学院
SIEMENS
启动组织块
再启动(手动) 完全再启动 • 仅指 S7-400 (根据硬件组态的设置): STOP -> RUN + WRST S7-400 STOP->RUN + CRST 执行 OB 101 完成剩余的循环 清除 PIQ (可设置) 超过重启动的 监视时间? 否 允许输出 读入 PII
青岛大学自动化工程学院
SIEMENS
被中断的 OB 块的数据保存
中断堆栈 (I 堆栈) ACCU1, ACCU2 累加器的内容
系统调用新的 OB
AR1, AR2 地址寄存器的内容
DB, DI 数据块寄存器的内容
局部数据堆栈的地址指针 在执行新的 OB 前, 保存被中断块的寄 存器
状态字, MCR 寄存器, B 堆栈指针
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
日期时间中断OB10(2)
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
练习2: 设置系统时间
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
练习3: 编写日期时间中断程序
模拟输入模块
令 CPU 调用一个 OB 以检测 和控制罐的温度,从一个特定 日期和时间开始每分钟执行一 次。 PIW304 +14000 = 温度上限 +13000 = 温度下限 Q4.7 加热器
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
循环中断 (OB35)
RUN
Interval
SIEMENS
组织块
FC 操作系统 OB1 FB FC FB
SFC
SFB
其它
OBs
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
组织块概述
启动 OB 100 OB 101 OB 102
循环的 程序执行
定期的 程序执行
事件驱动的 程序执行
OB 1
OB 10...17
(日期时间中断)
组织块 功能 日期时间中断 代号 OB 10 ... 17 在S7-300 用于控制OB 中的优先级 的SFC 2 SFC 28 ... 31 备注
或通过硬件组态来设置
循环中断
延时中断 硬件中断 诊断中断
OB 30 ... 38
OB 20 ... 23 OB 40 ... 47 OB 81 ... 87
Once(一次): 只在特定日期和时间执行一次。 Every minute(每分钟): 从某一特定日期和时间开始,每分钟执行 一次。 Hourly(每小时): 从某一特定日期和时间开始,每小时执行一次。 Daily(每天): 从某一特定日期和时间开始,每天执行一次。 Weekly(每周): 从某一特定日期和时间开始,每周执行一次。 Monthly(每月): 从某一特定日期和时间开始,每月执行一次。 Annually(每年): 从某一特定日期和时间开始,每年执行一次。
块堆栈 (B 堆栈) DB 和 DI 寄存器
临时数据 (L 堆栈)的指针
块的号码 返回地址
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
日期时间中断OB10(1)
日时钟 OB (OB10 在 S7-314) 允许你在某一特定日期或 特定间隔,中断正在循环的 OB 而去执行中断程序。你可 以对此 OB 编程使其按下列间隔运行:
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
错误类型
错误类型 外部错误 举例 模拟模块输入断线 CPU的反应 停机, 如果相应的错误OB块不存在且模 块诊断功能被激活 停机, 如果相应的错误OB块不存在且模 块诊断功能被激活 停机 停机, 如果相应的错误OB块不存在 停机, 如果相应的错误OB块不存在
OB35
Interval
OB35
Interval
OB35
OB1
OB1
O
B1
OB1
OB1
OB1
OB1 O
B1
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
练习5: 利用循环中断产生闪烁信号
序号 1 步骤
根据要求设置OB35的调用间隔
结果
2
生成、保存并下装OB35
3
测试程序的功能
启动时间
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
中断循环程序
例如:OB82 (优先级26) =错误处理程序。 当模拟输入PIW352 断线时执行。 例如OB10 (优先级2) =日期时间中断。 从9:30开始每分钟 执行一次。
OB1 连续执行 ...... 直到被其它OB中断
组织块的启动信息
局部变量 字节 0/1 2/3 4/5 6/7 8/9 10 / 11 12 / 13 14 / 15 16 / 17 18 / 19 启动事件 优先级 序列号 OB 号 管理信息
局部变量字节8, 9, 10, 11的数据格式 附加信息 1 附加信息 2 附加信息 3 年 日 分钟 1/10 秒, 1/100 秒 (例如,中断模块的起始地址) (例如,中断状态) (例如,通道号码) 月 小时 秒 1 /1000 秒, 星期 启动信息
自动
S7-300 / 400 S7-300
手动
Power ON STOP->RUN
清除过程映像,非保持的M, T, C
执行 OB 100 允许输出
是
STOP
循
执行OB1
循 环
输出 PIQ
读入 PII 执行 OB1 输出 PIQ
环
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
MW10
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
硬件中断 (OB40)
硬件组态:
模拟输入模块的属性 CPU的属性 模拟输入模块
+27648 上限值 下限值 0
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
诊断中断,异步错误中断(OB81...87)
内部错误
AD转换器的转换错误
系统错误 用户程序错误 在S7-400中移动 和连接模块
MPI接口的硬件错误 调用一个不存在的块 在运行状态下移动模块
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
使用错误组织块
• 为避免发生某错误时CPU进入停机状态,可以在 CPU中建立一个相应的空错误组织块。 • 可以在错误OB块中编程实现所希望的响应,如果 需要,在执行完规定指令后,调用系统功能SFC 46申请停机。 • 在错误组织块的启动信息中包含有错误的特征, 可以在程序中使用。 • 关于错误组织块的详细描述参见在线帮助或系统 和标准功能手册。 • 当CPU不支持某些错误OB时,相关的错误信息就不 会记录在OB块中。
12
3 16 26
无
SFC32 ... 34 无 无 必须使用
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
练习6: 模拟量模块的诊断中断
模拟量输入模块 当模块通道上的测量值超限时, OB82被调用,当测量值回到 允许范围内时,又将调用一次。
超上限 超上界
任务: 只要有一个转换后的数值超限,输出 Q 5.1就一直闪烁。 .
SIEMENS
错误组织块应用举例
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
错误处理OB块中的附加信息
OB 122 (访问错误)中的附加信息
变量 OB122_EV_CLASS OB122_SW_FLT OB122_PRIORITY OB122_OB_NUMBR OB122_BLK_TYPE 类型 BYTE BYTE BYTE BYTE BYTE 描述 事件类别, IDs = B#16#29 错误代码: (可能的值为: B#16#42, B#16#43, B#16#44, B#16#45) 发生错误的OB块的优先级 OB块的号码 (122) 发生错误的块的类型: B#16#88: OB? B#16#8A: DB? B#16#8C: FC? B#16#8E: FB? 内存区域和访问类型 发生错误处的内存地址 导致错误的MC7指令所在块的地址 导致错误的MC7 指令的相对地址 OB块被调用的日期和时刻
复杂数据 类型 (长于32位)
• 时间 (DATE_AND_TIME) • 矩阵 (ARRAY) • 结构 (STRUCT)
• 字符串 (STRING)
用户定义数据类型 (长于 32 位)
数据类型 UDT (用户定义数据类型)
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
数据块 (DB)
所有块可以访问 OB1
功能 FC10
全局数据
DB20
功能 FC20
FB1的背景DB
功能块 FB1
背景数据
DB5
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
STEP 7数据类型概述
基本数据 类型 (到32 位) • 位数据类型 (BOOL, BYTE, WORD, DWORD, CHAR) • 数学数据类型 (INT, DINT, REAL) • 定时器类型 (S5TIME, TIME, DATE, TIME_OF_DAY)
插入 / 移除 中断
CPU 硬件故障 程序执行错误 机架错误
通讯错误
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
同步错误
错误类型 例子 OB 优先级
编程错误
在程序中调用一个 CPU中并不存在的块
OB121 与被中断的错误 OB优先级相同
访问错误
访问一个模块有故障或不存在的模块 OB122 (例如,直接访问一个不存在的 I/O模块)
硬件组态:
模拟模块的属性 模拟输入模块 CPU的属性
断线
+27648
0
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
异步错误组织块
错误类型 时间错误 电源故障 诊断中断 例 子 超出最大循环扫描时间 后备电池失效 有诊断能力模块的输入断线 在运行时移除S7-400的信号模块 MPI接口上出现错误的信号电平 更新映像区错误(模块有缺陷) 扩展设备或DP从站故障 读取信息格式错误 OB OB80 OB81 OB82 OB83 OB84 OB85 OB86 OB87 26 / 28 优先级 26
例如 OB20 (优先级 3) =延时中断。 检测到一个信号后 延迟3.25s 执行。
OB号 OB 1 OB 10 OB 20 OB 35 OB 40 OB 82
OB 类型 循环程序 日期时间中断 延时中断 循环中断 硬件中断 错误处理
优先级 1 2 3 12 16 26 / 28
青岛大学-西门子先进自动化技术实验室
OB122_MEM_AREA OB122_MEM_ADDR OB122_BLK_NUM OB122_PRG_ADDR OB122_DATE_TIME
BYTE WORD WORD WORD DATE_AND_TIME
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
控制中断组织块的系统功能块
序号 1 步骤
设置CPU的参数,使得在课程结束时执行 日期时间中断。
结果
2
根据要求生成、保存、下装OB10。
3
测试程序的功能
在课程结束时,蜂鸣器发出声音。
4
Байду номын сангаас
禁止日期时间中断,并将修改的配置下装。
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
练习4: 利用时间中断实现定时检测
额定范围
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
数据块(DB)中的数据存储
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
数据存储区
位存储器 PIQ PII I/O 区 DBy DBx
DBz
.. .
L 堆栈
数据块
青岛大学-西门子先进自动化技术实验室
M35.0 以 3 Hz 频率闪烁
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
延时中断 (OB20)
I 0.0
M0.1
(P)
20 T#500ms W#16#01
EN OB_NR DTIME SIGN
SFC 32 (SRT_DINT)
M2.0 ENO RET_VAL
( )
OB 20...23
(延时中断)
OB 80...87
(异步错误)
OB 30...38
(循环中断)
OB 40...47
(硬件中断)
OB 121, 122
(同步错误)
中断 OB
青岛大学-西门子先进自动化技术实验室
错误 OB
青岛大学自动化工程学院
SIEMENS
启动组织块
再启动(手动) 完全再启动 • 仅指 S7-400 (根据硬件组态的设置): STOP -> RUN + WRST S7-400 STOP->RUN + CRST 执行 OB 101 完成剩余的循环 清除 PIQ (可设置) 超过重启动的 监视时间? 否 允许输出 读入 PII
青岛大学自动化工程学院
SIEMENS
被中断的 OB 块的数据保存
中断堆栈 (I 堆栈) ACCU1, ACCU2 累加器的内容
系统调用新的 OB
AR1, AR2 地址寄存器的内容
DB, DI 数据块寄存器的内容
局部数据堆栈的地址指针 在执行新的 OB 前, 保存被中断块的寄 存器
状态字, MCR 寄存器, B 堆栈指针
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
日期时间中断OB10(2)
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
练习2: 设置系统时间
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
练习3: 编写日期时间中断程序
模拟输入模块
令 CPU 调用一个 OB 以检测 和控制罐的温度,从一个特定 日期和时间开始每分钟执行一 次。 PIW304 +14000 = 温度上限 +13000 = 温度下限 Q4.7 加热器
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
循环中断 (OB35)
RUN
Interval
SIEMENS
组织块
FC 操作系统 OB1 FB FC FB
SFC
SFB
其它
OBs
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
组织块概述
启动 OB 100 OB 101 OB 102
循环的 程序执行
定期的 程序执行
事件驱动的 程序执行
OB 1
OB 10...17
(日期时间中断)
组织块 功能 日期时间中断 代号 OB 10 ... 17 在S7-300 用于控制OB 中的优先级 的SFC 2 SFC 28 ... 31 备注
或通过硬件组态来设置
循环中断
延时中断 硬件中断 诊断中断
OB 30 ... 38
OB 20 ... 23 OB 40 ... 47 OB 81 ... 87
Once(一次): 只在特定日期和时间执行一次。 Every minute(每分钟): 从某一特定日期和时间开始,每分钟执行 一次。 Hourly(每小时): 从某一特定日期和时间开始,每小时执行一次。 Daily(每天): 从某一特定日期和时间开始,每天执行一次。 Weekly(每周): 从某一特定日期和时间开始,每周执行一次。 Monthly(每月): 从某一特定日期和时间开始,每月执行一次。 Annually(每年): 从某一特定日期和时间开始,每年执行一次。
块堆栈 (B 堆栈) DB 和 DI 寄存器
临时数据 (L 堆栈)的指针
块的号码 返回地址
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
日期时间中断OB10(1)
日时钟 OB (OB10 在 S7-314) 允许你在某一特定日期或 特定间隔,中断正在循环的 OB 而去执行中断程序。你可 以对此 OB 编程使其按下列间隔运行:
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
错误类型
错误类型 外部错误 举例 模拟模块输入断线 CPU的反应 停机, 如果相应的错误OB块不存在且模 块诊断功能被激活 停机, 如果相应的错误OB块不存在且模 块诊断功能被激活 停机 停机, 如果相应的错误OB块不存在 停机, 如果相应的错误OB块不存在
OB35
Interval
OB35
Interval
OB35
OB1
OB1
O
B1
OB1
OB1
OB1
OB1 O
B1
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
练习5: 利用循环中断产生闪烁信号
序号 1 步骤
根据要求设置OB35的调用间隔
结果
2
生成、保存并下装OB35
3
测试程序的功能
启动时间
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
中断循环程序
例如:OB82 (优先级26) =错误处理程序。 当模拟输入PIW352 断线时执行。 例如OB10 (优先级2) =日期时间中断。 从9:30开始每分钟 执行一次。
OB1 连续执行 ...... 直到被其它OB中断
组织块的启动信息
局部变量 字节 0/1 2/3 4/5 6/7 8/9 10 / 11 12 / 13 14 / 15 16 / 17 18 / 19 启动事件 优先级 序列号 OB 号 管理信息
局部变量字节8, 9, 10, 11的数据格式 附加信息 1 附加信息 2 附加信息 3 年 日 分钟 1/10 秒, 1/100 秒 (例如,中断模块的起始地址) (例如,中断状态) (例如,通道号码) 月 小时 秒 1 /1000 秒, 星期 启动信息
自动
S7-300 / 400 S7-300
手动
Power ON STOP->RUN
清除过程映像,非保持的M, T, C
执行 OB 100 允许输出
是
STOP
循
执行OB1
循 环
输出 PIQ
读入 PII 执行 OB1 输出 PIQ
环
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
MW10
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
硬件中断 (OB40)
硬件组态:
模拟输入模块的属性 CPU的属性 模拟输入模块
+27648 上限值 下限值 0
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
诊断中断,异步错误中断(OB81...87)
内部错误
AD转换器的转换错误
系统错误 用户程序错误 在S7-400中移动 和连接模块
MPI接口的硬件错误 调用一个不存在的块 在运行状态下移动模块
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
使用错误组织块
• 为避免发生某错误时CPU进入停机状态,可以在 CPU中建立一个相应的空错误组织块。 • 可以在错误OB块中编程实现所希望的响应,如果 需要,在执行完规定指令后,调用系统功能SFC 46申请停机。 • 在错误组织块的启动信息中包含有错误的特征, 可以在程序中使用。 • 关于错误组织块的详细描述参见在线帮助或系统 和标准功能手册。 • 当CPU不支持某些错误OB时,相关的错误信息就不 会记录在OB块中。
12
3 16 26
无
SFC32 ... 34 无 无 必须使用
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
练习6: 模拟量模块的诊断中断
模拟量输入模块 当模块通道上的测量值超限时, OB82被调用,当测量值回到 允许范围内时,又将调用一次。
超上限 超上界
任务: 只要有一个转换后的数值超限,输出 Q 5.1就一直闪烁。 .