Download presentation
Presentation is loading. Please wait.
Published byIrmgard Magdalena Zimmermann Modified 6年之前
1
组织块 操作系统 OB1 FC FB FB FC SFC SFB OBs 其它 目录 页码
目录 页码 组织块概述 …… 启动组织块 组织块的启动信息 练习4.1: 在OB100中确定启动类型 中断循环程序 被中断的 OB 块的数据保存 ………… … 7 日时钟中断(OB10) 练习4.2: 设置系统时间 … 练习4.3: 编写日时钟中断程序 练习4.4: 利用时间中断实现定时检测 循环中断 (OB35) 练习4.5: 利用循环中断产生闪烁信号 延时中断 (OB20) 硬件中断 (OB40) 诊断中断,异步错误中断(OB ) 异步错误组织块 同步错误 错误类型 使用错误组织块 错误组织块应用举例 错误处理OB块中的附加信息 … 23 控制中断组织块的系统功能块 练习4.6: 模拟量模块的诊断中断 其它 OBs
2
组织块概述 启动 OB 102 OB 100 OB 101 循环的 程序执行 OB 1 定期的 程序执行 事件驱动的 程序执行
(日期时间中断) OB (延时中断) OB (异步错误) OB (循环中断) OB (硬件中断) OB 121, 122 (同步错误) 启动 当CPU上电后,或操作模式改变为运行状态(通过CPU上的模式选择开关或利用PG),在循环程序执行之前,要执行启动程序。 OB 100 到 OB 102 就是用于启动程序的组织块。 例如,在这些块里可以预置通讯连接。 循环的程序执行 需要连续执行的程序存在组织块OB1里。OB1中的用户程序执行完毕后,将开始一个新的循环:刷新映像区然后从OB1的第一条语句开始执行。循环扫描时间和系统响应时间就是由这些操作来决定的。 系统响应时间包括CPU操作系统总的执行时间和执行所有用户程序的时间。系统响应时间,也就是当输入信号变化后到输出动作的时间,等于两个扫描周期。 定期的程序执行 定期的程序执行可以根据设定的间隔中断循环的程序执行。 通过循环中断,组织块OB 30 到 OB 37 可以每隔一段预定的时间(例如100ms)执行一次。例如,在这些块中可以调用循环采样控制程序。 通过日期时间中断,一个OB可以在特定的时间执行,例如每天17:00保存数据。 事件驱动的程序执行 硬件中断可以用于快速响应的过程事件。当事件发生后,马上打断循环程序并执行中断程序。 延时中断可以在一个过程事件出现后延时一段时间响应。 通过错误OB可以在出现错误时(例如,后备电池故障)决定系统如何响应。 中断 OB 错误 OB
3
启动组织块 循 循 环 环 再启动(手动) • 仅指 S7-400 (根据硬件组态的设置): STOP -> RUN + WRST
完全再启动 自动 手动 S7-300 / 400 S7-300 STOP->RUN S7-400 STOP->RUN + CRST 执行 OB 101 完成剩余的循环 Power ON 清除 PIQ (可设置) 清除过程映像,非保持的M, T, C STOP 是 否 超过重启动的 监视时间? 执行 OB 100 允许输出 允许输出 读入 PII 读入 PII 循 环 组织块的起动 组织块只能由操作系统来启动。各种组织块由不同的事件启动,且具有不同的优先级。组织块中包含一个常规的控制程序,和一个声明表。 优先级 每一个OB在执行程序的过程中可以被更高优先级的事件(OB)中断(在指令边界处)。优先级的范围从0-27, 其中0 优先级最低,26优先级最高。 具有同等优先级的OB不能相互中断,而是按照发生的先后顺序执行。 启动的类型 S7-300的启动类型为完全再启动,启动时过程映像和不保持的定时器、计数器及标志存储器被清除,然后程序从OB1的第一条指令开始执行。 S7-400还有再启动的启动类型,在启动时所有数据(过程映像、定时器、计数器及标志存储器)被保持,程序从断点处恢复执行。 完全再启动时执行OB 100,再启动时执行 OB 101。 冷启动 318-2和 CPU还具有冷启动型的启动方式。针对电源故障可以定义这种附加的启动方式。它是通过硬件组态时的CPU参数来设置。 冷启动时,所有过程映像和定时器、计数器及标志存储器被清除,数据块保持其预置值。首先执行启动组织块OB 102, 然后从OB1的第一条指令开始执行。 循 环 执行OB1 执行 OB1 输出 PIQ 输出 PIQ
4
组织块的启动信息 局部变量 字节 0 / 1 2 / 3 启动事件 优先级 序列号 OB 号 管理信息 4 / 5 6 / 7 8 / 9
10 / 11 局部变量字节8, 9, 10, 11的数据格式 附加信息 1 (例如,中断模块的起始地址) 附加信息 2 (例如,中断状态) 附加信息 3 (例如,通道号码) 启动信息 12 / 13 14 / 15 16 / 17 18 / 19 年 日 分钟 1/10 秒, 1/100 秒 月 小时 秒 1 /1000 秒, 星期 启动时间 启动信息 当OB被操作系统调用时,用户可以在局部数据堆栈中获得规范化的启动信息。启动信息的长度为20字节,可在OB开始执行后访问。 访问启动信息 STEP 7软件为启动信息制造了一个标准的声明表,因此可利用声明表中的符号名来访问启动信息 (以OB 81为例)。 说明 标准的声明表可以被改变和补充。 在线帮助功能或标准及系统功能手册(Standard and System Functions manual)中有对声明表中变量意义的详细解释。 在本例中,局部变量 OB81_FLT_ID中包含了一个故障的代码,可用来指明故障原因。
5
练习4.1: 在OB100中确定启动类型 序号 步骤 结果 1 在硬件站“My Station” 下的S7程序中
在启动块里编写了 显示启动类型的程序 2 下装OB100到CPU中 3 调试程序 根据启动的类型 仿真器上的LED指示灯将点亮 要求 在S7-300中只有一个启动组织块OB100。通过分析OB100的启动信息,可以在程序中确定启动的类型。在局部变量OB100_STRTUP中操作系统输入如下标识: • B#16#81 = 手动完全再启动 • B#16#82 = 自动完全再启动 在OB100中编程使得当手动完全再启动输出Q4.4被置位,而当自动完全再启动时Q 4.5被置位。 判断手动完全再启动的示例程序如下: L OB100_STRTUP //装载启动标识 L B#16#81 //装载16进制数81 ==I //比较是否相同 = Q //显示启动类型 步骤 1. 在硬件站“My Station”(项目 “My Project”)下的S7程序中打开OB100。 2. 输入程序。 3. 下装并调试。
6
中断循环程序 OB1 连续执行 ...... 直到被其它OB中断 例如:OB82 (优先级26) =错误处理程序。 当模拟输入PIW352
断线时执行。 例如OB10 (优先级2) =日期时间中断。 从9:30开始每分钟 执行一次。 OB1 连续执行 直到被其它OB中断 例如 OB20 (优先级3) =延时中断。 检测到一个信号后 延迟3.25s 执行。 OB 1 3 日期时间中断 循环中断 1 16 错误处理 循环程序 延时中断 硬件中断 2 12 26 / 28 OB 20 OB 40 OB 10 OB 35 OB 82 OB号 OB 类型 优先级 组织块 组织块(OB)是CPU操作系统和用户程序的接口。 OB1中包含循环程序或通过调用其它块来组织程序。 调用 组织块不能被其他块调用,只能在一定事件发生时被操作系统调用: • 当CPU启动 • 在一个特定时间 • 经过一定的间隔 • 经过一个设定的时间延迟 • 当出现错误 • 当发生硬件中断 优先级 组织块按照优先级的顺序执行(1=最低,29=最高优先级)。 中断循环程序 当操作系统调用其它组织块时,循环的程序执行被中断,因为OB1的优先级最低.所以任何其它的OB可以中断主程序并执行自己的程序,执行完毕后从断点处开始恢复执行OB1。 当比当前执行的程序优先级更高的OB被调用时,在当前指令结束后产生中断。操作系统为被中断的块保存全部的寄存器堆栈。当返回被中断的块时,寄存器的信息被恢复。.
7
被中断的 OB 块的数据保存 中断堆栈 (I 堆栈) ACCU1, ACCU2 累加器的内容 AR1, AR2 地址寄存器的内容
DB, DI 数据块寄存器的内容 局部数据堆栈的地址指针 状态字, MCR 寄存器, B 堆栈指针 DB 和 DI 寄存器 临时数据 (L 堆栈)的指针 块的号码 返回地址 系统调用新的 OB 在执行新的 OB 前, 保存被中断块的寄 存器 为被中断的程序 当系统检测到一个OB块中断时,则被中断块的累加器和寄存器上 存储数据 的当前信息将被作为一个中断堆栈存储起来(I 堆栈)。 如果新的OB块调用FB和FC, 则每一个块的处理数据将被存储 在块堆栈中(B堆栈)。 当新的OB块执行结束后, 操作系统将把I堆栈中的信息重新装载 并在中断发生处继续执行被中断的块。 注意 如果CPU转换到STOP状态(可能是由于程序中的错误), 你可以 使用模块信息选项来检查I堆栈和B堆栈。这将有助于你确定模 式转换的 原因。
8
日期时间中断OB10(1) 日时钟 OB (OB10 在 S7-314) 允许你在某一特定日期或特定间隔,
按下列间隔运行: Once(一次): 只在特定日期和时间执行一次。 Every minute(每分钟): 从某一特定日期和时间开始,每分钟执行一次。 Hourly(每小时): 从某一特定日期和时间开始,每小时执行一次。 Daily(每天): 从某一特定日期和时间开始,每天执行一次。 Weekly(每周): 从某一特定日期和时间开始,每周执行一次。 Monthly(每月): 从某一特定日期和时间开始,每月执行一次。 Annually(每年): 从某一特定日期和时间开始,每年执行一次。 为了使用日时钟中断(OB10), 你必须执行下列任务: - 通过定义它执行的起始时刻(日期和/或时间)和间隔时间, 对OB10进行 配置。这可以通过S7组态工具配置CPU的日时钟的中断参数或者在程序 中调用SFC28(SET_TINT)来实现。 - 激活OB10。这可以通过S7组态工具在CPU的日时钟中断参数块中选择 激活项,或者在程序中调用SFC30(ACT_TINT)来实现。 - 在OB10中编辑你想执行的日时钟中断程序, 并将OB块装载到CPU中 作为你程序的一部分。
9
日期时间中断OB10(2) 配置日时钟中断 使用硬件组态工具来配置日时钟中断。选择菜单功能CPU -> Object Properties ->->“Time-of-Day Interrupts”,可以定义何时、以何方式执行OB10。 激活 如果点中“激活”( Active) 选项框,在CPU每次全启动后将执行日期时间中断OB。 说明 日时钟中断可以在程序运行时由系统功能块来控制。可使用下列系统功能块: • SFC 28 “SET_TINT” 设置启动日期、时刻和周期 • SFC 29 “CAN_TINT”取消日期时间中断 • SFC 30 “ACT_TINT” 激活日期时间中断 • SFC 31 “QRY_TINT”查询日期时间中断 S7-400 在S7-400 PLC 中有8个不同的日期时间中断OB (OB 10 to 17) 。
10
练习4.2: 设置系统时间 要求 设置S7 CPU的正确系统时间。
步骤 1. 选择菜单功能 PLC -> Set Date and Time (SIMATIC管理器或程序编辑器)。2. 在对话框中输入正确的日期和时间。
11
练习4.3: 编写日期时间中断程序 序号 步骤 结果 1 2 3 4 设置CPU的参数,使得在课程结束时执行 日期时间中断。
根据要求生成、保存、下装OB10。 2 3 测试程序的功能 在课程结束时,蜂鸣器发出声音。 禁止日期时间中断,并将修改的配置下装。 4 要求 每天课程结束时,传送带上的蜂鸣器将接通。使用仿真器上的一个空闲的输入应答声音信息。 说明 在“My Project”项目的硬件站“My Station”中编写程序。 结果 按时提醒下课。
12
练习4.4: 利用时间中断实现定时检测 模拟输入模块 令 CPU 调用一个 OB 以检测 和控制罐的温度,从一个特定
练习4.4: 利用时间中断实现定时检测 模拟输入模块 = 温度上限 = 温度下限 Q4.7 加热器 PIW304 令 CPU 调用一个 OB 以检测 和控制罐的温度,从一个特定 日期和时间开始每分钟执行一 次。 目的 编写一个组织块(OB10),从特定的日期和时间开始,然后每隔一 分钟重复执行一次。(这个程序中不要求使用OB1)控制要求如下: -如果温度传感器传送出一个小于或者等于13000的值, 则加热器 Q4.7将打开,直到传感器的值达到或者超出14000。 -当模拟值达到14000时,则加热器将关闭。 步骤 1.按照上述的过程控制要求在“My Project”项目的硬件站“My Station”中编 写程序编写一个OB10块。将OB10存盘并装载 到CPU中。 2.打开硬件站“My Station” 。选择CPU,然后再选择日时钟 中断菜单。 3.将OB10配置为激活状态,并每隔1分钟执行一次。 4.将配置存盘并装载到CPU中(在STOP状态下)。
13
循环中断 (OB35) RUN OB35 OB35 OB35 OB1 OB1 O B1 OB1 OB1 OB1 OB1 O B1
循环中断 循环中断(看门狗)用于在一定的间隔执行程序块。在S7-300中,循环中断组织块为 OB 35,它的缺省调用时间为100ms,其允许的设定范围为1ms至1分钟。 启动时刻 当一个时间控制中断被激活后,应以“启动时刻”为参考点设定中断的时间间隔.每次CPU从STOP切换为RUN的时刻为启动时刻。 时间间隔 必须保证所定义的时间间隔大于组织块中程序的执行时间。操作系统在设定的间隔后调用OB35时,如果上一次执行的OB35仍未结束,则操作系统将调用OB80(循环中断错误)。 说明 在程序运行时,循环中断无法用系统功能来控制。 S7-400 在S7-400 PLC 中有9种不同的循环中断组织块 (OB30 至 38)。 为了使用循环处理中断(OB35),你必须执行下列任务: -通过在S7组态工具中定义循环时间来对OB35进行配置;即在CPU模块中 对循环中断进行设置。在1至60000毫秒之间选择OB35的循环时间, 并 将配置装载到CPU中。 -在OB35中编写你所希望执行的循环中断服务程序。装载OB35到CPU中, 并将CUP转换到RUN状态。CPU从STOP状态转换到RUN状态将使得用于循 环计时的内部计时器启动,并且OB35在每一个设定的间隔后将被执行。 RUN OB35 OB35 OB35 Interval Interval Interval OB1 OB1 O B1 OB1 OB1 OB1 OB1 O B1
14
练习4.5: 利用循环中断产生闪烁信号 序号 步骤 结果 1 2 3 根据要求设置OB35的调用间隔 生成、保存并下装OB35
测试程序的功能 M35.0 以 3 Hz 频率闪烁 要求 假如要使用 3 Hz的闪烁频率信号。而闪烁频率存储器中又不能提供该频率。所以利用循环中断在M35.0中设置闪烁频率。 说明 在“My Project”项目的硬件站“My Station”中编写程序。
15
延时中断 (OB20) ( ) ( P ) I 0.0 M0.1 SFC 32 (SRT_DINT) EN ENO OB_NR DTIME
( ) I 0.0 M0.1 SFC 32 (SRT_DINT) EN ENO OB_NR DTIME SIGN RET_VAL 20 T#500ms W#16#01 MW10 M2.0 延时中断 当某一事件发生后,延时中断组织块(OB20)可以经过一段规定的延时后执行。 OB20 只能通过调用系统功能SFC32而激活,同时还可设置延时时间。 SFC 32 • OB_NR = 延时中断组织块的号码 • DTIME = 延时时间 (1 到 60000ms) • SIGN = 启动延时中断组织块时用户自定义的信号 • RET_VAL = 错误代码,如果执行延时中断组织块时出现错误则返回一个 错误代码(利用在线帮助可了解错误代码的含义)。 说明 除了SFC32外,下列SFC也可用于处理延时中断: • SFC33 (CAN_DINT) = 取消延时中断 • SFC34 (QRY_DINT) = 查询延时中断组织块 S7-400 在S7-400 PLC 中有4个不同的延时中断组织块 (OB20 到 23) 。
16
硬件中断 (OB40) 硬件组态: 模拟输入模块的属性 CPU的属性 模拟输入模块 +27648 上限值 下限值
• 对于可分配参数的信号模块 (DI, DO, AI, AO),可使用硬件组态工具来定义触 发硬件中断的信号。 • 对于CP模块和FM模块,利用相应的组态软件可以定义中断的特性。 示例 在本例中,模拟输入模块被设置了适当的界限值。当测量值超出该界限时,OB40将被调用。 当超出界限时,在OB1中通过比较指令调用一个FB或FC块也可起到同样的作用.但是,采用OB40则不需在其它块中编写程序。 S7-400 在S7-400 PLC中有8个不同的硬件中断组织块 (OB40到47) 。 为了使用硬件处理中断,必须执行下列任务: -使用必要的组态软件(S7用于模拟模块的组态工具),来设置硬件处理事件, 例如模拟量的上限或FM的状态问题,然后将组态设置装载到CPU中。 -在OB40中编写当硬件处理中断事件发生时你希望执行的中断服务程序。将 OB40装载到CPU中并将CPU转换到RUN状态。当硬件处理事件发生时, OB40 将中断主程序的执行并开始运行。 下限值
17
诊断中断,异步错误中断(OB81...87) 硬件组态: 断线 模拟模块的属性 CPU的属性 模拟输入模块 +27648
断线 异步错误 异步错误是 PLC的功能性错误。它们的出现与程序执行无关,不能跟踪到程序中的某个具体位置(例如,模块的诊断中断)。 响应 在RUN模式下检测到一个故障后,如果已经编写了相关的组织块,则调用并执行该组织块中的程序。 该程序中可包含下列功能: • 发出一个报警信号 • 备份数据然后停机 • 记录故障出现的频率,然后继续运行。 说明 如果故障相应的错误OB并不存在,CPU将自动进入停机状态。 示例 异步错误中断OB82在下列情况下被调用,例如: • 有诊断功能模块的断线故障 • 模拟输入模块的电源故障 • 输入信号超出模拟模块的测量范围
18
异步错误组织块 错误类型 例 子 OB 26 / 28 优先级 26 时间错误 超出最大循环扫描时间 OB80 电源故障 后备电池失效
例 子 OB 26 / 28 优先级 26 时间错误 超出最大循环扫描时间 OB80 电源故障 后备电池失效 OB81 诊断中断 有诊断能力模块的输入断线 OB82 插入 / 移除 中断 在运行时移除S7-400的信号模块 OB83 CPU 硬件故障 MPI接口上出现错误的信号电平 OB84 程序执行错误 更新映像区错误(模块有缺陷) OB85 优先级 由于具有最高的优先级,处理异步错误的组织块可以立即执行。 • 当前正在执行的OB优先级较低(<26) 时,异步错误的组织块的优先级为26。 • 当前正在执行的OB为启动组织块时(优先级为27),异步错误的组织块的优先级为28。 时间错误 循环监控时间的缺省设定为150ms。如果实际的循环时间超过150 ms,将被认为是时间错误。当时间错误在一个循环周期中发生两次,则CPU进入停机状态。 电源错误 备用电池失效或未安装,对于S7-400还包括中央机架或扩展机架上24V供电故障, 被认为是电源错误。与其他类型的错误不同,当相应的错误OB不存在时,CPU仍处于运行状态,此时CPU模块上的红色错误指示灯点亮。 诊断中断 有诊断能力的模块,如模拟模块,当发生故障时可以触发一个诊断中断。该模块在参数设置时需要激活诊断中断。. 插入/移除模块错误 在S7-400 PLC中当模块被插入或移除时触发该中断。当模块插入时,操作系统检查所插入的模块类型是否正确。该功能允许在运行状态下插入或移除模块。 CPU 硬件错误 在 S7-400中,MPI接口错误、通讯总线或远程I/O接口错误被认为是CPU硬件错误。 程序执行错误 包括当刷新过程映象时模块访问错误及其它错误,例如,当时间中断发生时相应的错误OB块不存在。 机架故障 包括机架、PLC系统中的子系统及分布式I/O站的错误。 通讯错误 对于S7-300,包括接收全局数据时得到错误的标识信息或数据块太短不足以存储状态信息。对于S7-400,还包括其他错误,如不能发出同步信息。 机架错误 扩展设备或DP从站故障 OB86 通讯错误 读取信息格式错误 OB87
19
同步错误 错误类型 例子 OB 优先级 与被中断的错误 OB优先级相同 编程错误 在程序中调用一个 CPU中并不存在的块 OB121
访问错误 访问一个模块有故障或不存在的模块 (例如,直接访问一个不存在的 I/O模块) OB122 同步错误 同步错误与程序执行有关,可以跟踪到某一具体指令的位置。由同步错误所触发的错误处理组织块将作为程序的一部分来执行,与错误出现时正在执行的块具有相同的优先级。 错误OB 利用错误组织块,用户可以定义当错误发生时,CPU所做的响应。如果在CPU中没有相应的错误组织块,当错误出现时将导致停机。
20
错误类型 错误类型 上图列出了在SIMATIC S7中可能产生的各种错误。每一个错误都是一个诊断事件,将在CPU中触发一个诊断中断,此时错误被记录在诊断缓冲区中,当没有编程相应的错误处理组织块时,将导致CPU停机。
21
使用错误组织块 为避免发生某错误时CPU进入停机状态,可以在CPU中建立一个相应的空错误组织块。
可以在错误OB块中编程实现所希望的响应,如果需要,在执行完规定指令后,调用系统功能SFC 46申请停机。 在错误组织块的启动信息中包含有错误的特征,可以在程序中使用。 关于错误组织块的详细描述参见在线帮助或系统和标准功能手册。 当CPU不支持某些错误OB时,相关的错误信息就不会记录在OB块中。 使用启动信息 请注意使用错误组织块的规则。 操作系统将启动信息以临时变量的形式存储在错误组织块的变量声明表中。启动信息包括块调用的原因等内容。例如,OB81的启动信息如下: 变量 OB81_FLT_ID的意义如下: B#16#21: 至少有一个中央机架的备用电池失效(BATTF) B#16#22: 中央机架的缓冲区掉电(BAF) B#16#23: 中央机架的 24-V供电故障 B#16#31: 至少有一个扩展机架的备用电池失效 B#16#32: 一个扩展机架的缓冲区掉电 B#16#33: 扩展机架的 24-V供电故障
22
错误组织块应用举例 任务 当电池失效时,在操作面板上显示错误信息;更换电池后,错误显示自动结束。
任务 当电池失效时,在操作面板上显示错误信息;更换电池后,错误显示自动结束。 程序说明 当发生电源故障时,例如电池失效,操作系统将调用一次错误组织块OB81。当故障排除后,OB81将再次被调用。 在OB81中,用户程序考察变量OB81_FLT_ID以判断电池是否失效。当电池失效时,该变量的值为22H,通过比较指令,使M81.1为1。 错误显示在电池失效时(事件到来)被启动,当故障排除后(事件结束)被终止。 利用变量 OB81_EV_CLASS的值来区分上述状态: - B#16#39 事件到来 - B#16#38 事件结束 根据上述变量的值来置位或复位辅助标志M81.0。M81.0可以与闪烁频率信号结合起来分配给某个输出位用于指示故障。该输出位在电池失效或无电池时将一直闪烁。
23
错误处理OB块中的附加信息 OB 122 (访问错误)中的附加信息 变量 类型 描述
变量 类型 描述 OB122_EV_CLASS BYTE 事件类别, IDs = B#16#29 OB122_SW_FLT BYTE 错误代码: (可能的值为: B#16#42, B#16#43, B#16#44, B#16#45) OB122_PRIORITY BYTE 发生错误的OB块的优先级 OB122_OB_NUMBR BYTE OB块的号码 (122) OB122_BLK_TYPE BYTE 发生错误的块的类型: B#16#88: OB? B#16#8A: DB? B#16#8C: FC? B#16#8E: FB? OB122_MEM_AREA BYTE 内存区域和访问类型 OB122_MEM_ADDR WORD 发生错误处的内存地址 OB122_BLK_NUM WORD 导致错误的MC7指令所在块的地址 OB122_PRG_ADDR WORD 导致错误的MC7 指令的相对地址OB122_DATE_TIME DATE_AND_TIME OB块被调用的日期和时刻 简介 像所有的组织块一样,错误处理组织块(Obs)中包含了关于调用原因的附加信息。操作系统将这些信息记录在该组织块的临时变量中,用户可以在程序中对他们进行访问,以便于诊断故障。 示例 当出现模块访问错误时,将出错模块的地址记录在一个内存字中。之后使CPU进入停机( STOP)状态。此时可以从与其相连的 OP (操作面板) 上读出这个内存字的内容。在这种情况下不需要使用编程器。 在程序中通过访问变量 OB122_SW_FLT, 可以判断出是否有模块访问错误发生。如果不是模块访问错误,跳过保存错误模块地址的指令。否则,从变量OB122_MEM_ADDR中读出地址并保存在一个内存字中。最后调用系统功能SFC 46使CPU进入 STOP状态。 L OB122_SW_FLT //I/O read access error? L B#16#42 ><I JC STOP // if not, jump L OB122_MEM_ADDR //Load address and save in MW 20 T MW 20 STOP:CALL SFC 46 //Stop state
24
控制中断组织块的系统功能块 组织块 功能 代号 在S7-300 中的优先级 用于控制OB 的SFC 备注 日期时间中断
2 SFC 或通过硬件组态来设置 循环中断 OB 无 12 延时中断 OB 3 SFC 必须使用 硬件中断 OB 16 无 诊断中断 OB 26 无 组织块 通过在线帮助可以获得关于错误组织块的全面说明: LAD/STL/FBD Editor -> Help -> Contents -> Help on Blocks -> Help on Organization Blocks。 系统功能 系统功能块的使用将在高级编程课程中深入介绍。
25
练习4.6: 模拟量模块的诊断中断 模拟量输入模块 当模块通道上的测量值超限时, OB82被调用,当测量值回到 允许范围内时,又将调用一次。
任务: 只要有一个转换后的数值超限,输出 Q 5.1就一直闪烁。 . 超上限 任务 应用诊断中断OB82及具有诊断能力的模拟量输入模块模块解决幻灯片上提出的问题。 说明 如果想确定哪一个通道输入超限,必须使用系统功能。 步骤 1. 重新配置模拟量输入模块的参数,激活诊断中断。 2. 根据任务在S7程序“FILL” 中编写OB82。 3. 在OB 1编程来控制输出 Q 5.1。 4. 调试程序。 超上界 额定范围
Similar presentations