如何对S7-300模拟量模块通道定义的诊断进行编程

更新时间:2024-04-07 08:15:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

如何对S7-300模拟量模块通道定义的诊断进行编程? 说明:

诊断报警OB 82

正在使用一个诊断兼容模拟量模块并已释放诊断报警。当模拟量模块检测到一个错误,就向CPU发送诊断报警请求。然后操作系统调用OB 82。在其本地变量中它包括故障模块的逻辑基本地址OB82_MDL_ADDR (LW 6)和以OB82_MDL_DEFECT (L 8.0)开始到OB82_RESERVED_3 (L 11.7)为止的4字节诊断数据。STEP 7在线帮助中有OB 82的一个(参数)描述 。 信号模块的诊断数据

下面标题为“DiagAIAO_Data.pdf”的文件说明了结构为

? ? ?

信号模块的通用诊断数据字节0...3。 模块定义的诊断数据字节4...7。

对于模拟量模块0...7通道的通道定义诊断数据字节8...15。

字节0...3在所谓的数据记录0中而系统写入到OB 82(参见上面)的本地数据的4个字节在一个诊断案例中。数据记录1收集了全部诊断数据即字节0到最大字节15 ,包括 数据记录0。

附件 1:DiagAIAO_Data.pdf ( 6268 KB )

(以上文件是摘自手册“Programmable Logic Controllers S7-300 Module Data”的B部分,版本 02/2004,条目号8859629。) 判断诊断数据

下例中将演示如何在OB 82中读出和判断S7-300模拟模块的特定通道诊断数据。为了得到模拟模块的特定通道诊断数据,在OB 82中 调用SFC 59 “RD_REC”(读记录)。通过该例读取寻址模块的Data record 1。在成功的数据传送后输入到要被参数化的目标区域。然后对每个错误 分配事件ID。这些ID从可下载得到的文件“DiagAIAO_Events.pdf”中获得。通过所发生诊断消息的事件ID来参数化系统函数SFC 52 “WR_USMSG”,从而进入CPU的诊断缓冲区。STEP 7在线帮助中有关于块SFC 59 “RD_REC”和SFC 52 “WR_USMSG”的(参数)描述。该例的代码可以在OB 82中直接编程。对该例提供OB 82 STL源(DiagAIAO_Code.pdf)和STEP 7项目(DiagAIAO_Project.zip, 自解压缩归档)。

附件1:DiagAIAO_Events.pdf ( 5199 KB )

(上表是摘自参考手册“System Software for S7-300/400 System and Standard Functions”的33.9节,版本07/2005,条目号1214574)。

附件2:DiagAIAO_Code.pdf ( 38 KB )

附件3:DiagAIAO_Project.zip ( 185 KB )

(下载文件到创建的系统中并且从SIMATIC管理器中将其解压缩。) 在诊断缓冲区中显示诊断数据

下图用实例显示了诊断缓冲区,此例中在模拟输入模块的通道0上的地址256超出了测量范围。图1显示了用十进制表示的事件信息,图2则用十六进制显示。可以在“Settings...”下切换诊断缓冲区窗口中的两个视图。

( 21 KB )

图 1

( 22 KB )

图 2

确保指定了以下内容

?

当在指针写入模式(例如P#L 6.0 WORD 1)下参数化时参数INFO1 (ANY)的数据宽度为字。

?

当在指针写入模式(例如P#L 28.0 DWORD 1)下参数化时参数INFO2 (ANY)数据宽度为双字。

如果用字节指定数据宽度(例如P#L 6.0 BYTE 2 或P#L 28.0 BYTE 4),系统功能不工作。

本文来源:https://www.bwwdw.com/article/ixar.html

Top