0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

VASS06中使用GET_DIAG的用法科普

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 2023-11-15 10:15 次阅读

说明

指令“GET_DIAG”用于读取硬件组件的诊断信息。硬件组件将通过 LADDR 参数进行选择。通过 MODE 参数,选择要读取的诊断信息。MODE=0 时,S7-1200 CPU 将忽略参数 LADDR。

参数

下表列出了“GET_DIAG”指令的参数:

参数 声明 数据类型 存储区 说明
MODE Input UINT I、Q、M、D、L 或常量 通过 MODE 参数,选择要输出的诊断数据。
LADDR Input HW_ANY (UINT) I、Q、M、L 或常量 硬件组件的的硬件 ID
RET_VAL Return INT I、Q、M、D、L 指令的状态
CNT_DIAG Output UINT I、Q、M、D、L 预留(始终为“0”)。
DIAG InOut VARIANT I、Q、M、D、L 诊断信息与所选模式一致,请参见下表
DETAIL InOut VARIANT I、Q、M、D、L 参数被隐藏。不要使用此参数!

参数 MODE

根据 MODE 参数中的值,在 DIAG、CNT_DIAG 和 DETAIL 输出参数中输出不同的诊断数据。

MODE 说明 DIAG CNT_DIAG
0 以 DWORD 格式输出硬件组件所有支持的诊断信息,其中位 X=1 表示支持模式 X。 DWORD 数据类型的位:
位 0 = 1:支持 MODE 0。
位 1 = 1:支持 MODE 1。
位 2 = 1:支持 MODE 2。
位 3 到 31:不相关
MODE=0 时,S7-1200 CPU 将忽略参数 LADDR。
0
1 输出所寻址硬件组件的诊断状态。 结构 DIS(请参见下文描述):
MaintenanceState
ComponentStateDetail
OwnState
IOState
OperatingState
0
2 输出所寻址硬件对象中所有从属组件的状态。 结构 DNN(请参见下文描述):
SubordinateState
SubordinateIOState
DNNmode
0

DIS 结构

参数 MODE = 1 时,以 DIS 结构输出诊断信息。此时,在变量声明中输入系统数据类型“DIS”作为数据类型。

说明
确定 OperatingState
确定标准 CPU 的操作状态时,需要选择 LADDR = 52(CPUExecUnit 的硬件标识符)。
确定标准 CPU 的操作状态时,需要选择 LADDR = 65147(Local1~HCPUredCtrl 的硬件标识符)或 LADDR = 65347(Local2~HCPUredCtrl 的硬件标识)。
确定 R/H 系统的系统状态时,需要选择 LADDR = 34(Local1~RHSystem 的硬件标识符)。

下表列出了各参数值的含义:

参数 数据类型 说明 参数构成规则
MaintenanceState DWORD 枚举 MaintenanceState 取决于 ComponentStateDetail。
0 良好 ComponentStateDetail 的位 15 始终为 1。
ComponentStateDetail 的位 11 到 14 的值可以是 0 或 1。
ComponentStateDetail 的位 3 可以是 1。
ComponentStateDetail 的所有其它位均为 0。
1 硬件组件已禁用。 如果 ComponentStateDetail 的位 16 为 1
如果 ComponentStateDetail 的位 17 为 1
2 - -
3 - -
4 - -
5 需要维护 如果 ComponentStateDetail 的位 4 为 1
6 要求维护 如果 ComponentStateDetail 的位 5 为 1
7 错误 如果 ComponentStateDetail 的位 6 为 1
8 上一级硬件组件的状态为“未知/错误” 如果 ComponentStateDetail 的位 11 到 14 的值为 3
如果 ComponentStateDetail 的位 7 到 10 的值为 3 或 4
9 - -
10 输入/输出不可用。 如果 ComponentStateDetail 的位 11 到 14 的值为 2
如果 ComponentStateDetail 的位 7 到 10 的值为 1 或 2
如果 ComponentStateDetail 的位 18 为 1
如果 ComponentStateDetail 的位 19 为 1
ComponentStateDetail DWORD 位数组 状态:
位 0 到 15:硬件组件的状态
位 16 到 31:CPU 的状态
-
0 到 2(枚举) 其它信息:
0:无其它信息
1:不允许传送
-
3 位 3 = 1:至少一个合格诊断可用 -
4 位 4 = 1:至少一个通道或组件需要维护 -
5 位 5 = 1:至少一个通道或组件需要维护 -
6 位 6 = 1:至少一个通道或组件错误 -
7 到 10(枚举) 0:Own - 硬件组件可用
1:Application Ready Pending - 无 I/O 访问
2:Locked by Superordinated - 硬件组件不可访问
3:Locked by IOController - 硬件组件不可访问
4:Locked by IOSupervisor - 硬件组件不可访问
-
11 到 14(枚举) 0(位 11 = 0,位 12 = 0,位 13 = 0,位 14 = 0):OK - 元素正确。
1(位 11 = 1,位 12 = 0,位 13 = 0,位 14 = 0):Substitute - 该元素将替代为一个兼容元素。
2(位 11 = 0,位 12 = 1,位 13 = 0,位 14 = 0):Wrong - 该元素将替代为一个非兼容元素(该元素可访问,但尚未就绪无法操作)。
3(位 11 = 1,位 12 = 1,位 13 = 0,位 14 = 0):No Submodule - 该元素不存在。
-
15 预留(始终为“1”)。 -
16 到 31 CPU 生成的模块状态信息:
第 16 位 = 1:子模块或模块已禁用
第 17 位 = 1:激活 CiR 操作
位 18 = 1:输入不可用
第 19 位 = 1:输出不可用
位 20 = 1:诊断缓冲区溢出
位 21 = 1:诊断不可用
位 22 = 1:Partial device failure(带有 PNIO,可用于共享设备)
位 23 到 31:预留(始终为 0)
-
OwnState UINT 枚举 维护状态 OwnState 取决于 MaintenanceState。
0 良好 如果 MaintenanceState 的值为 0。
1 禁用 如果 MaintenanceState 的值为 1。
2 需要维护 如果 MaintenanceState 的值为 5。
3 要求维护 如果 MaintenanceState 的值为 6。
4 错误 如果 MaintenanceState 的值为 7。
5 不可访问 如果 MaintenanceState 的值为 8。
6 诊断状态未知 未返回诊断事件的组件的默认值。
7 IO not available - 输入/输出不可用。 如果 MaintenanceState 的值为 10。
IOState WORD 位数组 硬件组件的 I/O 状态 可设置一个或多个位。
IOState 取决于 ComponentStateDetail。
位 0 = 1 良好 ComponentStateDetail 的位 15 始终为 1。
ComponentStateDetail 的位 11 到 14 的值可以是 0 或 1。
ComponentStateDetail 的位 3 可以是 1。
ComponentStateDetail 的所有其它位均为 0。
如果位 0 = 1,则位 1 到 5 和位 7 = 0。
位 1 = 1 禁用 如果 ComponentStateDetail 的位 16 为 1
如果 ComponentStateDetail 的位 17 为 1
如果位 1 = 1,则所有其它位均为 0。
位 2 = 1 需要维护 如果 ComponentStateDetail 的位 4 为 1
位 3 = 1 要求维护 如果 ComponentStateDetail 的位 5 为 1
位 4 = 1 错误 如果 ComponentStateDetail 的位 6 为 1
位 5 = 1 Hardware component not reachable - 硬件组件无法访问。 如果 ComponentStateDetail 的位 11 到 14 的值为 3
如果 ComponentStateDetail 的位 7 到 10 的值为 3 或 4
如果位 5 = 1,则所有其它位均为 0。
位 6 = 1: Qualified:位 6 = 1:至少一个合格诊断可用 如果 ComponentStateDetail 的位 3 为 1。
在这种情况下,将位 0、2 或 3 置位。
第 7 位 = 1: I/O data not available - I/O 数据不可用 如果 ComponentStateDetail 的位 11 到 14 的值为 2
如果 ComponentStateDetail 的位 7 到 10 的值为 1 或 2
如果 ComponentStateDetail 的位 18 为 1
如果 ComponentStateDetail 的位 19 为 1
8 到 14 预留(始终为“0”) -
位 15 网络/硬件故障
S7-1200:预留(始终为“0”)
S7-1500:如果位 4 = 1 或位 5 = 1:
位 15 = 0:网络错误
位 15 = 1:硬件错误
-
OperatingState UINT 枚举 -
0 Not Supported - 对于 I/O 模块,OperatingState 的值始终为“0”。 -
1 STOP / 固件更新 -
2 STOP / 存储器复位 -
3 STOP / 自启动 -
4 STOP -
5 存储器复位 -
6 启动 -
7 - -
8 RUN -
9 RUN-Redundant -
10 HOLD -
11 - -
12 - -
13 DEFECT(注:仅在诊断缓冲区条目中可见) -
14 - -
15 断电(注:仅在诊断缓冲区条目中可见) -
16 CiR -
17 STOP,且无 ODIS -
18 RUN ODIS -
19 PgmTest -
20 RunPgmTest(备用 CPU 处于测试模式时主 CPU 的状态) -
21 Run-Syncup(只有主 CPU 处于 SYNCUP 系统状态) -
22 SYNCUP(仅备用 CPU 处于 SYNCUP 系统状态) -
31 伙伴 CPU 的状态未知(如,伙伴 CPU 不可用) -
32 - -
33 STOP 系统状态 -
34 预留 -
35 STARTUP 系统状态 -
36 预留 -
37 RUN-Solo 系统状态 -
38 SYNCUP 系统状态 -
39 预留 -
40 RUN-Redundant 系统状态 -

DNN 结构

参数 MODE = 2 时,以 DNN 结构输出诊断的详细信息。此时,在变量声明中输入系统数据类型“DNN”作为数据类型。

下表列出了各参数值的含义:

参数 数据类型 说明
SubordinateState UINT Enum 从属组件的状态(请参见 DIS 结构的参数 OwnState)
SubordinateIOState WORD Bitarray 从属组件的输入和输出状态(请参见 DIS 结构的参数 IO State)
DNNmode WORD Bitarray 第 0 位 = 0:诊断已启用
位 0 = 1:诊断已禁用
位 1 至 15:预留

参数 RET_VAL

错误代码*
(W#16#...)
说明
0 无错误
n DETAIL 参数中的数据区域太小。未输出诊断数据的所有详细信息。
8080 不支持 MODE 参数中的值。
8081 所选模式(参数 MODE)不支持 DIAG 参数中的类型。
8082 所选模式(参数 MODE)不支持 DETAIL 参数中的类型。
8090 LADDR 不存在
80C1 并行执行的资源不足。
* 在程序编辑器中,错误代码将显示为整数或十六进制值。有关切换显示格式的信息,请参见“另请参见”。

示例

在以下示例中,读取 CPU 的诊断信息。

在全局数据块中创建四个变量和一个“myDIAG”结构(数据类型为 DIS),用于存储数据。

631729a0-82d5-11ee-939d-92fbcf53809c.png

互连该指令的参数,如下所示:

632846ae-82d5-11ee-939d-92fbcf53809c.png

通过参数 LADDR(“myLADDR”)使“GET_DIAG”指令了解 CPU 的硬件标识符。根据参数 MODE(“diagMODE”)的值“1”,以下几点适用:

指令将读取(CPU 的)所寻址硬件对象的状态。

在参数 DIAG(“myDIAG”)中,诊断信息将在结构(DIS 数据类型)中输出。

要了解诊断信息,必须将十六进制值转换为二进制代码。通过参数 DIAG(“myDIAG”),指示以下信息:

MaintenanceState:根据值“0”,CPU 无需维护。

ComponentStateDetail:根据十六进制值“0000_8000”,位 15 已激活。

OwnState:根据值“0”,无故障发生。

IOState:根据十六进制值“0001”,无需维护。

OperatingState:输出“0”。

输出参数 RET_VAL(“returnValue”)用于指示处理无错误。通过输出参数 CNT_DIAG(“CountDiagDetails”),指示参数 DETAIL 的“0”诊断详情已输出。

6344a3ee-82d5-11ee-939d-92fbcf53809c.png

注:例如,可以从 ComponentStateDetail 变量单独读取位 3(通道诊断“是/否”)。

寻址该位,如下所示:ComponentStateDetail.%X3







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10442

    浏览量

    206560
  • S7-1200
    +关注

    关注

    11

    文章

    328

    浏览量

    17222

原文标题:VASS06中使用GET_DIAG的用法

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    主流的微前端的实现库原理及其用法

    本文对微前端的概念和场景进行科普,介绍一些主流的微前端的实现库及其用法,并讲解部分这些库的原理和实践知识。
    的头像 发表于 10-10 14:24 2552次阅读

    Matlab的冒号的用法

    Matlab的冒号的用法
    发表于 03-11 22:22

    DIAG内部是否与EN连接?

    在L6229Q的数据表,第5.2节“引脚EN(使能)具有相同的输入结构,但过流和热保护MOSFET的漏极也连接到该引脚。” 然而,第5.7节说明''引脚DIAG可用于将故障状态信号发送到?C或
    发表于 06-19 16:39

    20个在Linux操作中使用到的ls用法的示例详解

    ls命令用于列出文件和目录,默认列出当前目录的内容。带上参数后,我们可以用ls做更多的事情。这里是一些在日常操作中使用到的ls用法的示例。
    的头像 发表于 12-11 15:22 2433次阅读

    大众VASS06报警信息提示功能

    SIMATIC ProDiag是用于机器和工厂诊断的完全集成的TIA解决方案。它节省了在工程阶段在CPU中进行编程诊断的需求,并提供了对HMI进行故障排除的支持。ProDiag使得监视机器或工厂并在发生故障时进行干预成为可能。
    的头像 发表于 05-10 10:44 4333次阅读
    大众<b class='flag-5'>VASS06</b>报警信息提示功能

    博途VASS06的CPU设置要求

    VASS06版使用的CPU为: CPU 1517F CPU: 为了实现 VASS 标准中的预期功能范围,CPU 1517F至少需要固件版本 V2.5。 安全系统: 这里需要固件版本 V2.1
    的头像 发表于 12-23 15:51 3706次阅读

    VASS06版使用的CPU为: CPU 1517F

    为此,请打开提供的示例项目;TIA将安装那些尚未安装在 TIA 中的 GSD 文件。也可以通过菜单项“选项à管理设备描述文件(GSD)”在“HW-Config”中安装附加的GSD文件。
    的头像 发表于 01-18 11:40 2374次阅读
    <b class='flag-5'>VASS06</b>版使用的CPU为: CPU 1517F

    关于博途VASS6的Profinet诊断

    Profinet 诊断 操作页面包含以下功能范围:  显示所有 Profinet 参与者的状态信息和导航到 Profinet 详细诊断  Profinet I/O 拓扑 这一点VASS06的界面
    的头像 发表于 06-09 16:46 2748次阅读

    关于FB148系统诊断

    /接触器反馈监控)正常 AC :  无钝化(没有模块被钝化;“安全关机”) ACKR : 去钝化请求 _Cfg : 组态位(见组态位表) F-PROG_SIG :  在VASS06中规定
    的头像 发表于 07-07 16:33 1277次阅读

    VASS 标准中的预期功能范围

    为了实现 VASS 标准中的预期功能范围,CPU 1517F至少需要固件版本 V2.5。
    的头像 发表于 07-15 10:50 1658次阅读

    大众VASS06报警信息提示功能

    VASS06由于PLC使用博途1500,博途1500,具有ProDiag功能,因此VASS06PLC的报警功能通过ProDiag来实现的!
    的头像 发表于 01-05 10:04 833次阅读

    浅谈博途VASS06的CPU设置要求

    必须始终在 WinCC 运行系统的设备组态中设置运行系统软件(WinCC Runtime Advanced)的相应组态。
    发表于 10-12 11:24 394次阅读
    浅谈博途<b class='flag-5'>VASS06</b>的CPU设置要求

    VASS06中:用户 DB/数据块配置应用案例

    编号分配 为了简化编号分配并且避免搜索空闲编号,可将编号切换到手动 (1) 并且指定实例 DB 的开始范围“2000”(2)。 出现提示 (3) 该编号已存在的消息。
    的头像 发表于 10-26 10:48 258次阅读
    <b class='flag-5'>VASS06</b>中:用户 DB/数据块配置应用案例

    VASS06电伺服更换行指令 “Messen” (测量)实例

    首次初始化 必须在下列情况下进行: • 在调试时 • 每次更换电极帽之后 使用在 WorkVisual 的 新电极帽的初始化作用力(自 KUKA.ServoGun 3.1: 更换端盖后的测量力起)下配置的作用力。
    的头像 发表于 11-21 11:35 345次阅读
    <b class='flag-5'>VASS06</b>电伺服更换行指令 “Messen” (测量)实例

    VASS06机器人关于A23的用法控制

    编程“无访问要求”/“保护栅锁定”E23/A23 该功能必须在相应机器人程序(序列和子程序)的每个精度点进行编程。 这个函数不能在一集的第一点和最后一点调用!
    发表于 12-07 10:46 200次阅读
    <b class='flag-5'>VASS06</b>机器人关于A23的<b class='flag-5'>用法</b>控制