ERTEC200P-2 PROFINET设备完全开发手册(6-1)

news2024/9/27 17:34:39

报警和诊断

Profinet提供了强大的诊断功能,这是其他通讯协议所无法比拟的。PN设备检测到问题后可以向控制器发送报警信息,报警分为三大类:

  1. 诊断报警 (PN设备本身故障触发的报警,例如:温度测量通道变送电路损坏)
  2. 过程报警 (PN设备测量的过程值出现异常触发的报警,例如:温度测量通道测量值过高)
  3. 状态报警 (PN设备工作正常,需要通知PLC某些状态事件,例如:1000次温度测量平均值计算完成)

需要根据报警的触发条件向PLC发送不同类型的报警,诊断报警相对比较常见。

6.1 报警和诊断的机制与实现

对于PN IO设备,基本的设备模型为如下形式:

在子槽、子模块上都有一个或若干个通道,每个通道既可对应输入输出点,也可以对应某个内部组件(硬件或软件)。对与提供诊断功能的每个通道,都会有相应的观测器(observer)检查在此通道上是否有故障。如果观测器检测到故障,将故障的诊断信息添加到设备的诊断信息数据库中,如果检测到故障消除,再将之前的诊断信息从诊断信息数据库删除。如下图所示:

 

为了区分在一个通道上的不同类型的故障,还需要使用ErrorType (故障类型) 来指示:IEC 61158-6-10定义的标准故障类型编码如下表所示:

 并且诊断事件也有对应的严重程度

严重程度

例子:编码器光源的亮度

Normal (正常)

编码器功能有保障,无任何限制

Maintenance Required

编码器光源的亮度变弱,编码器功能有保障,需要采购新的编码器

Maintenance Demanded

编码器光源的亮度变的很弱,编码器功能不再有保障,需要尽快更换编码器

Fault (故障)

编码器光源已损坏,编码器失效,需要立即更换编码器

 

此外,设备的指示灯需要根据诊断信息数据库中诊断信息的严重程度,设置为黄色、橙色或红色。

诊断信息是由以下信息构成的:

模块、子模块、通道号、故障类型、严重程度、方向(输入/输出)以及附加信息组成

因此任何一个诊断报警事件都可以对应到设备的某一个通道上,所以也叫做通道报警。

诊断报警有两种,诊断事件产生/到达(appear)和诊断事件消失/离去(disappear)

如果PN设备检测到故障发生,并将诊断信息添加至诊断数据库,就会伴随诊断事件到达报警发送到PLC;当设备检测该通道的故障状态消除,并将诊断信息从诊断数据库删除,就会伴随诊断事件离去报警发送至PLC。PLC在收到通道报警后,会触发OB 82: Diagnostic Error Interrupt。在OB82中可以使用ALARM结构分析和处理详细的诊断信息。

因此设备诊断的基本流程如下:

  1. 设备在某一通道上检测到故障
  2. 生成对应的诊断信息 (模块、子模块、通道号、故障类型、严重程度
  3. 添加通道诊断信息至数据库
  4. 新增诊断信息的行为产生一个“到达”报警事件发送至PLC
  5. PLC黄/橙/红灯亮(取决于诊断事件的严重程度)并执行OB82
  6. PLC诊断缓冲区可以看到通道报警“出现”
  7. 设备检测到故障消除
  8. 删除之前添加的记录
  9. 删除记录的行为产生了一个“离去”报警事件发送至PLC
  10. PLC绿灯
  11. PLC诊断缓冲区可以看到通道报警“离去”

在协议栈中,通道诊断信息的添加和删除以及对应报警事件触发是由以下接口实现:

其中MaintenanceReq和MaintenanceDem控制报警严重程度以及‘产生/消失‘

在协议栈中,通道报警的处理被封装在函数

OS_CODE_FAST PNIO_UINT32 UsrChanDiag     (PNIO_UINT16 AlarmState, // DIAG_CHANPROP_SPEC_ERR_APP, DIAG_CHANPROP_SPEC_ERR_DISAPP, DIAG_CHANPROP_SPEC_ERR_DISAPP_MORE
                             PNIO_UINT32 SlotNum,	 // slot number
                             PNIO_UINT32 SubNum,	 // subslot number
                             PNIO_UINT16 ChanNum,	 // channel number
                             PNIO_UINT16 ErrorNum,	 // error number, see PNIO specification coding of "ChannelErrorType"
                             PNIO_UINT16 ChanDir,	 // channel direction (DIAG_CHANPROP_DIR_IN, DIAG_CHANPROP_DIR_OUT,...)
                             PNIO_UINT16 ChanTyp,	 // channel type (DIAG_CHANPROP_TYPE_BYTE, DIAG_CHANPROP_TYPE_WORD,...)
							 PNIO_UINT16 DiagTag)    // user defined diag tag, used as reference

添加通道诊断信息会触发协议栈发送RTA_Dat(alarm)报警报文到控制器。控制器会回复RTA_Dat(al-ack)到协议栈并触发相应的回调函数。同时添加诊断信息到设备的诊断数据库中,可以通过TIA查看添加的诊断信息。

移除通道诊断信息也会触发协议栈发送RTA_Dat(alarm)报警报文到控制器。控制器会回复RTA_Dat(al-ack)到协议栈并触发相应的回调函数。同时从设备的诊断数据库中移除对应的诊断信息。

 过程报警是通过PNIO_process_alarm_send实现

Addr.Geo.Slot		= EXAMPL_1_SLOTNUM;	            // slot number
Addr.Geo.Subslot	= EXAMPL_1_SUBSLOTNUM;			// subslot number
Status = PNIO_process_alarm_send(PNIO_SINGLE_DEVICE_HNDL,
              PNIO_DEFAULT_API,
              &Addr,					  // location (slot, subslot)
			  &ProcessAlarmData[0],		  // alarm data
			  sizeof (ProcessAlarmData),  // alarm data length
              EXAMPL_1_USER_STRUCT_IDENT, // 0...0x7fff: user struct. is manufac. specific
			  EXAMPL_1_DIAG_TAG);	      // user defined handle

			  if (Status != PNIO_OK)
                  PNIO_ConsolePrintf ("Error %x occured\n", PNIO_get_last_error ());
              break;

 协议栈的处理过程如下图所示

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/430152.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Activiti学习02

这里写目录标题一、流对象简介1.1 事件1.2 活动1.3 条件二、Activiti系统服务结构图核心类:服务类:RepositoryServiceRuntimeServiceTaskServiceHistoryServiceFormServiceIdentityServiceManagementService三、Activiti数据库支持一、流对象简介 一个业务流程图有三个流对象的…

ATFX国际:中国一季度GDP同比增长4.5%,社消总额约11.5万亿元

ATFX国际:中国统计局发布一季度国民经济运行报告,其中值得关注两大数据分别为GDP同比增速、社会消费品零售总额增速。统计显示,一季度GDP总额28.5万亿元,同比增长4.5%,其中第一产业和第二产业的增速低于平均值&#xf…

Pyqt案例讲解(实现模拟计算器效果)

PyQt5是一个用于Python的GUI框架,它提供了一个简单易用的GUI工具包,可以用于创建各种类型的应用程序,包括计算器。下面是一个简单的计算器的实现,其中包括了一些难点和复杂的地方。 难点: 使用Qt的布局管理器来创建窗…

证书扫描件怎么弄?手机也能轻松扫描

现代社会中,证书是人们展示自己能力和经历的重要凭证。然而,我们有时需要将证书扫描并保存在电脑或手机中,以备不时之需。本文将介绍如何扫描证书以及手机上是否能进行扫描。 证书扫描的方法 将证书扫描成电子文档可以方便地将其存储在电脑或…

C++ Primer 第7章 类 - 中(零基础学习C++,精简学习笔记)

🤖 作者简介:努力的clz ,一个努力编程的菜鸟 🐣🐤🐥 👀 文章专栏:C Primer 学习笔记 📔专栏简介: 本专栏是博主学习 C Primer 的学习笔记,因为…

技巧:WIN10手动指定某个应用程序使用独立显卡

目录1. 背景2. 解决方法,假如要让剪映始终使用独立显卡2.1 步骤1,右击电脑桌面空白处,选择“显示设置”2.2 步骤2,拉到最下面,点击图形设置2.3 步骤3,选择桌面应用,点击浏览2.4 步骤4&#xff0…

领课在线教育系统源码 各行业都适用的分布式在线教育系统+支持讲师入驻功能

领课教育系统(roncoo-education)是基于领课网络多年的在线教育平台开发和运营经验打造出来的产品,致力于打造一个各行业都适用的分布式在线教育系统。系统采用前后端分离模式,前台采用vue.js为核心框架,后台采用Spring…

bash shell 无法使用 perl 正则

1.案例现象 前几天有一个小伙伴在群里求助,说他这个 shell 脚本有问题,让大家帮忙看看 #!/bin/bash regularExpression"^\[(\d)\].$" contentcat $1 for i in ${content} doif [[ $i ~ $regularExpression ]]thenecho -e "\033[32m 【 i…

一款多参数多合一的空气质量传感器【温湿度、TVOC甲醛CO2粉尘等】

档案馆库房专用的一款智能型空气质量云测仪 空气质量检测仪 空气质量传感器 环境集成传感器 集成/温湿度、粉尘PM2.5 PM10/甲醛/TVOC/CO2等高度集成的一款传感器/RS485信号输出 ◆温度测量参数: (1)温度测量范围: -40~80℃(2)输出分辨率:0.1oC (3)…

从零开始学架构——高性能负载均衡

高性能负载均衡 单服务器无论如何优化,无论采用多好的硬件,总会有一个性能天花板,当单服务器的性能无法满足业务需求时,就需要设计高性能集群来提升系统整体的处理性能。高性能集群的本质很简单——通过增加更多的服务器来提升系…

Pandas入门实践1 -初探

我们将开始介绍Series、DataFrame和Index类,它们是pandas的基本构建块,并展示如何使用它们。在本节结束时,您将能够创建DataFrame并对它们执行操作以检查和筛选数据。 DataFrame剖析 DataFrame由一个或多个Series组成。Series的名称构成列名…

( “树” 之 DFS) 111. 二叉树的最小深度 ——【Leetcode每日一题】

111. 二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:2…

matplotlib 笔记:subplot之间间距拉开

0 前情介绍 使用matplotlib的subplot时,由于默认间距不大,所以可能导致出的图会挤在一起 import matplotlib.pyplot as pltplt.subplot(221) plt.plot([1, 2, 3])plt.subplot(222) plt.bar([1, 2, 3], [4, 5, 6])plt.xlabel(xlabel, fontsize15, color…

码云私有仓库+宝塔面板部署WebHooks实现代码同步

权限问题,要分清楚两个帐号的权限www和root sudo -u www ssh -T gitgitee.com sudo -u root ssh -T gitgitee.com看清楚是用那个,建议用WWW帐号权限,不能用ROOT权限(最高权限不建议) 所以生成SSH是要注意要用那个帐号来生成: 一…

关于yolov7的一些理解

论文: https://arxiv.org/abs/2207.02696 Github: https://github.com/WongKinYiu/yolov7 YOLOV7的一些理解 1.摘要2.创新点3.具体工作3.1.网络结构优化3.2.辅助头训练3.3.标签分配策略3.4.重参数结构3.5.其它 1.摘要 Yolov7是Yolov4团队的作品,受到了yolo原作者…

Vue3瀑布流(Waterfall)

Vue2瀑布流&#xff08;Waterfall&#xff09; 可自定义设置以下属性&#xff1a; 图片数组&#xff08;images&#xff09;&#xff0c;类型&#xff1a;Array<{title: string, src: string}>&#xff0c;默认 [] 要划分的列数&#xff08;columnCount&#xff09;&a…

Linux下_多线程

线程 1. 为什么使用线程? 使用fork创建进程以执行新的任务&#xff0c;该方式的代价很高。多个进程间不会直接共享内存线程是进程的基本执行单元&#xff0c;一个进程的所有任务都在线程中执行&#xff0c;进程要想执行任务&#xff0c;必须得有线程&#xff0c;进程至少要有一…

11、响应数据

文章目录1、响应JSON1.1、引入开发场景1.2 、jackson.jar ResponseBody1、装填返回值处理器2、返回值初步处理3、获取并使用返回值处理器4、观察如何获取返回值处理器5、返回值处理器接口内部6、返回值处理器支持的类型7、返回值解析器原理1.3、HTTPMessageConverter 原理1、M…

c# 通过webView2模拟登陆小红书网页版,解析无水印视频图片,以及解决X-s,X-t签名验证【2023年4月15日】

一、c# WebView2简介 1.一开始使用WebBrowser&#xff0c;因为WebBrowser控件使用的是ie内核&#xff0c;经过修改注册表切换为Edge内核后&#xff0c; 发现Edge内核版本较低&#xff0c;加载一些视频网站提示“浏览器版本过低“&#xff0c;”视频无法加载“。 2.WebBrowser…

CentOS上PHP源码安装和配置

CentOS上PHP源码安装和配置 此文是在CentOS 7上已经部署了Nginx的基础上进行的 关于CentOS7上安装Nginx&#xff0c;可参考我之前的文章&#xff1a; CentOS上Nginx安装记录 我们现在在这个基础上安装PHP 7。 PHP里面概念挺多的&#xff0c;没想到安装这个PHP需要花那么多时…