诊断错误 ob82
● 诊断错误 ob82 的功能
s7-1200支持诊断错误中断,可以为具有诊断功能的模块启用诊断错误中断功能来检测模块状态。
出现故障(进入事件),故障解除(离开事件)均会触发诊断中断 ob82 。当模块检测到故障并且在软件中使能了诊断错误中断时,操作系统将启动诊断错误中断,诊断错误中断 ob82 将中断正常的循环程序优先执行。此时无论程序中有没有诊断中断 ob82,cpu 都会保持 run 模式,同时 cpu 的 error 指示灯闪烁。如果希望 cpu 在接收到该类型的错误时进入 stop 模式,可以在 ob82 中加入 stp 指令使 cpu 进入 stop 模式。
● 与诊断错误 ob82 相关的信息
当触发诊断错误中断时,通过 ob82 的接口变量可以读取相应的启动信息,可以帮助确定事件发生的设备、通道和错误原因。ob82 的接口变量及启动信息参考下图1、2。
图1. ob82 接口变量
图2. ob82 启动信息
● 诊断错误 ob 的使用示例:
例如:模拟量输出模块 sm1232 的电压输出通道,对于通道1使能短路诊断,当通道1出现短路错误时,随即触发诊断错误 ob82 ,此时可从 ob82 的启动参数中读取诊断信息。
1、按如下步骤创建诊断错误 ob82 。如图3。
图3. 创建诊断错误 ob82
2、ob82 中编程如下图,创建地址为 mw100、mw102、mw104 的变量用于存储出现诊断错误时读取到的启动信息。如图4。
图4. ob82 中编程
3、在硬件组态窗口中,选中模拟量输出模块,选择模拟量输出通道1的“启用短路诊断”功能。如图5。
图5. 设置诊断功能
4、测试结果:程序下载后,在监控表中给“channel1”设置输出值5000,如果此时出现了短路故障,则将立即触发诊断错误功能。如图6。
图6. 测试结果
在 ob82 中使用 sfb 54 进行诊断
支持诊断的信号模块和功能模块将检测内部和外部错误,并生成诊断中断(可通过调用中断 ob 对其进行响应)。与错误事件有关的 ob 编码和开始信息提供有关错误原因和位置的初始信息。
然后可以通过在此错误 ob 中调用 sfb54(读取附加的中断信息)获得详细的错误事件信息。
sfb54 功能
sfb54“ralarm”将从支持诊断的所有模块读取中断数据,而不管这些模块是插入到中央机架中还是用在 profibus dp 或 profinet io 中。
此信息将写入到输出参数 status、id、len、tinfo 和 ainfo。可以在 tinfo 目标区域中找到 ob 启动和管理信息。页眉信息和附加的中断信息(例如,发生短路)位于 ainfo 目标区域中。
通过在 ob82 中调用 sfb54 进行诊断
如果支持诊断的模块检测到错误,它将向 cpu 输出诊断中断请求(不管是进入事件还是离开事件)。这要求已对相关模块启用诊断中断。操作系统调用 ob82 以对诊断请求进行响应。
ob82 的局部变量包含逻辑基址和关于故障模块的四个字节的诊断数据。如果未对 ob82 进行编程,则 cpu 状态将更改为 stop。
使用 sfb54 对 ob82 进行编程 :
要求:
1. 您已创建并命名了新的 step 7 项目。
2. 您已添加了带有 cpu 317-2 pn/dp 的 simatic 300 站。
3. 您已在 cpu 317-2 pn/dp 的 profinet 子网上组态了 et 200s。
执行以下步骤:
1. 生成可以存储中断数据的背景数据块(idb)。为此 idb 分配称“idb_sfb54”。
2. 插入 ob82
– 在 step 7 中打开您的项目
– 选择 insert(插入) -> s7 block(s7 块)-> organization block(组织块),然后在对话框中输入块名称“ob82”。
3. 启动 lad/stl/fbd 编辑器
– 双击“ob82”符号,打开 lad/stl/fbd 编辑器。
4. 声明 sfb54 中的变量
– 在对话框中输入“call sfb54, db54”以调用 sfb。
– 然后为 sfb54 的参数分配从下表中获取的值。
call sfb54, db54 通过实例 db54 调用 sfb54
mode := 1 将设置所有输出参数(与中断触发组件无关)
f_id := 不必进行设置,因为 f_id 在模式 1 下不相关
mlen := 1500 将要读取的记录信息的最大长度设置为 1500 字节
new := m1000.1 如果已接收新记录,则存储器位 1000.1 = 1
status := md10 md10 包含错误代码
id := md16 存储器双字 16 包含模块或子模块的逻辑起始地址,该地址用于接收中断。
len := mw24 存储器字 24 返回读取的记录信息的长度
tinfo := p#m 500.0 byte 32 指向 mb500 的 any 指针,长度为 32 个字节
ainfo := p#m 1500.0 byte 1431 指向 mb1500 的 any 指针,长度为 1431 个字节
在标志字节 500 或 1500 处开始,输入 tinfo 和 ainfo 变量中返回信息,长度为 32 字节或 1431 字节。tinfo 和 ainfo 目标区域的数据存储器未完全分配,取决于哪个 ob 调用 sfb54。
联想为Chromebook提供了一个新配件,使平板电脑更加有用
高通宣布新一代骁龙旗舰SoC已出样:7nm、可集成5G基带
棒谷科技再引进全柔性分拣解决方案,极智嘉(Geek+)实力再获认可
宁德时代否认匈牙利电池工厂遭欧委会调查:该项目顺利推进中
360N5新机简评,内存很大但华而不实!
西门子PLC在OB82中使用SFB54进行诊断
歌尔光学专家智库正式成立
android studio 开发蓝牙BLE的APP工作总结-搭建环境-第一课
联想人工智能实验室能带来什么启示
机器人可帮助快递物流业变得更加的高效智能化
瑞萨电子推出符合AUTOSAR标准的复合驱动程序软件模块
SDH微波传输中的同步时钟
美光携手联发科率先完成 LPDDR5X 验证
CANoe编写CAPL测试脚本的几点思考
基于物联网的智能冰箱系统设计方案
NVIDIA 公布2021财年Q1财报:收入达30.8亿美元,较去年同期增长39%
晶丰明源发行价每股56.68元 募资总额为8.7亿元
iPhone11将采用OLED屏幕材料_与S10和Note10相同
Arduino UNO R3通过ESP8266-01模块连接机智云平台的实现
新松机器人惯性导航AGV搬运系统方案实例