设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
西门子S7-1200/1500怎样利用诊断错误组织块(OB82)来诊断 ...
返回列表
发新帖
[西门子]
西门子S7-1200/1500怎样利用诊断错误组织块(OB82)来诊断模块...
[复制链接]
33084
|
0
|
2024-8-21 20:01:04
|
显示全部楼层
|
阅读模式
之前我曾经写过S7-300/400利用诊断错误组织块进行错误诊断的文章(见:如何使用中断组织块OB82对系统进行故障诊断?),由于S7-1200/1500的组织块接口有些不同,今天我们来介绍下在S7-1200/1500下利用诊断错误组织块来诊断模块错误的方法。
很多模块本身具有诊断功能,比如S7-1500的模拟量输入模块AI 4xU/I/RTD/TC,它是具有4个模拟量输入通道的模块,能接收电压/电流/热电阻/热电偶等模拟量信号(通过硬件配置选择不同的信号类型)。它集成了多种诊断功能,比如可以检测信号的上溢、下溢、断线、无电源电压等,如下图所示:
不过这些诊断功能默认是关闭的,当我们想激活某个诊断功能时,比如断线,需要手动勾选它。当勾选后,该功能就被激活。如果模块检测到该通道连接的传感器出现断线故障,它就会发送一个诊断中断给CPU。CPU接收到该诊断中断后,会尝试调用诊断错误组织块(OB82)。如果CPU没有找到该组织块,将进入停机模式。所以,要启用诊断并且不让CPU停机,首先要添加诊断错误组织块(OB82)并下载到CPU中。
添加的方法如下:
在项目树“程序块”双击“添加新块”,在弹出的对话框中选择“组织块”→“Diagnostic error interrupt(诊断错误中断)”,如下图所示:
该组织块的输入参数如下图所示:
各参数的含义如下:
IO_State:表示模块的状态(16位)。第0位表示组态是否正确,1=正确,0=错误;第4位表示是否出现错误,1=有错误,0=无错误;第6位表示是否有I/O范围错误,1=有错误,0=无错误;
LADDR:模块的硬件标识符;
Channel:模块的通道编号;
MultiError:是否有多个错误,1=有,0=无;
CPU在接收到诊断错误中断后,会调用诊断错误中断组织块(OB82),并且将相关的信息赋值给该组织块的输入参数,我们可以在组织块OB82中编写代码将相关信息保存到全局数据块中,以便在某个具体模块的中进行判断。
比如,我创建了全局数据块“GlobalDiagnostic_DB82”,如下图所示:
在OB82中编写代码如下:
在传感器的函数块中,可以通过与GlobalDiagnostic_DB82中的信息进行比较,获得模块的诊断信息,从而判断传感器是否发生断线等错误。如果有错误发生,可以触发报警提醒操作人员。
诊断错误中断组织块在错误发生时被操作系统调用一次,当错误消失后会再调用一次。如果有多个模块发生类似错误,只能当上一个错误消除后,才会触发下一个错误的消息。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
userlxy007
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』