使用SFC 52 WR_USMSG将用户自定义诊断事件写入诊断缓冲区

已锁定

威师爷

  • 帖子

    5108
  • 精华

    47
  • 被关注

    255

论坛等级:至圣

注册时间:2013-09-18

白金 白金 如何晋级?

使用SFC 52 WR_USMSG将用户自定义诊断事件写入诊断缓冲区

1554

2

2017-02-18 10:15:59

 大家好!

在300/400系统中可以使用系统功能块SFC52把用户自定义的报警信息写入到CPU的诊断缓冲区,诊断缓冲区的报警信息在某些特定情况下可以作为有力的依据,不像HMI的报警可以进行删除,CPU诊断缓冲区的报警必须由系统来删除!


具体例子如下图片:

 

 

 

 

 

 

具体可以参考SFC52的帮助如下:


描述

通过SFC 52 "WR_USMSG" (将用户元素写入诊断缓冲区),可以将用户自定义诊断事件写入诊断缓冲区。还可以将相应的诊断信息发送到为此目的而登录的所有站(通过设置输入参数SEND = TRUE)。如果出错,则输出参数RET_VAL将提供错误信息。

发送用户自定义诊断消息

SFC 52将用户自定义诊断事件写入诊断缓冲区。然后,还可以将相应的诊断消息发送到为此目的而登录的任何站(通过设置输入参数SEND = TRUE)。接下来,用户自定义诊断消息将写入发送缓冲区并自动发送到登录的站。

可以检查当前是否能够发送用户自定义诊断消息。为此,可以通过参数SSL_ID = W#16#0132和INDEX = W#16#0005调用SFC 51 "RDSYSST"。所获取的数据记录的第四个字指示当前能(1)否(0)发送用户元素。


发送缓冲区满

只有在发送缓冲区未满时,才能在发送缓冲区中输入诊断消息。可以在发送缓冲区中输入的条目数取决于所用CPU的类型。

如果发送缓冲区已满,则:

?诊断事件仍输入诊断缓冲区中,

?参数RET_VAL指示发送缓冲区已满(RET_VAL = W#16#8092)。

未登录站

如果要发送用户自定义诊断消息(SEND = TRUE),而未登录任何站,则

?用户自定义诊断事件将输入诊断缓冲区中,

?参数RET_VAL指示未登录任何站(RET_VAL = W#16#8091或W#16#8091。如果使用较早版本的CPU,将显示值W#16#8091)。

常规结构

诊断缓冲区中元素的内部结构如下:

字节 目录
1和2 事件ID
3 优先级
4 OB编号
5和6 保留
7和8 附加信息1
9、10、11和12 附加信息2
13 - 20 时间标志
事件ID

每个事件都分配有事件ID。

附加信息

这是有关事件的附加信息。每个事件的附加信息可以不同。创建诊断事件时,可以自己决定这些条目的内容。

发送用户自定义诊断消息时,可在(事件标识符指定的)消息文本中将附加信息合并为关联值。

时间标志

时间标志的类型为Date_and_Time。

参数 声明 数据类型 存储区 描述
SEND INPUT BOOL I、Q、M、D、L、
常数 启用发送用户自定义诊断消息到所有已登录的站
EVENTN INPUT WORD I、Q、M、D、L、
常数 事件标识符 - 由您分配事件标识符。而不是由消息服务器进行分配。
INFO1 INPUT ANY I、Q、M、D、L 1个字长的附加信息
INFO2 INPUT ANY I、Q、M、D、L 2个字长的附加信息
RET_VAL OUTPUT INT I、Q、M、D、L 故障信息
SEND

如果SEND = TRUE,则用户自定义诊断消息将发送到所有已登录的站。只有当站已经登录且发送缓冲区未满时,才会发送消息。元素的发送将与用户程序异步。

EVENTN

EVENTN参数包含用户事件的事件标识符。可输入类型为W#16#8xyz、W#16#9xyz、W#16#Axyz、W#16#Bxyz的事件标识符。

W#16#8xyz和W#16#9xyz格式的标识符属于预定义事件,W#16Axyz和W#16#Bxyz格式的标识符属于自由定义的事件。

进入状态的事件由x = 1指示,离开状态的事件由x = 0指示。对于A和B等级的事件,"yz"为在消息组态中分配给消息的十六进制格式的消息编号。

事件标识符的结构在第26.1部分介绍。

INFO1

INFO1参数包含一个字长的信息。INFO1允许使用下列数据类型:

?WORD

?INT

?ARRAY [0 - 1] OF CHAR

可以在消息文本中将参数INFO1合并为关联值,从而向该消息添加最新信息。

INFO2

INFO2参数包含两个字长的信息。INFO2允许使用下列数据类型:

?DWORD

?DINT

?REAL

?TIME

?ARRAY [0 - 3] OF CHAR

可以在消息文本中将参数INFO2合并为关联值,从而向该消息添加最新信息。

故障信息

错误代码 (W#16#...) 解释
0000 无错误
0091 未登录任何站(诊断事件输入诊断缓冲区中)
8083 INFO1的数据类型不允许使用
8084 INFO2的数据类型不允许使用
8085 EVENTN不允许使用
8086 INFO1的长度不允许
8087 INFO2的长度不允许
8091 (只有当使用较早版本的CPU时,才会显示此错误代码。)未登录任何站(诊断事件输入诊断缓冲区中)。
8092 目前不可以发送,发送缓冲区已满(诊断事件输入诊断缓冲区中)。
8xyy 一般错误信息,请参见使用输出参数RET_VAL判断故障
参见:

任务




使用SFC 52 WR_USMSG将用户自定义诊断事件写入诊断缓冲区 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54617条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。