1、 设备编号从:0 开始,第四个为编号“4 ”在系统常量中找到:数据类型:HW_IOSYSTEM 的变量;当前值:257;十进制按 F1 帮助:DeviceStates: 读取 IO 系统的模块状态信息说明指令“DeviceStates”用于查询 IO 系统中所有模块的特定状态信息,即: PROFINET IO 系统中所有 IO 设备的状态信息 或 DP 主站系统中所有 DP 从站的状态信息输出的布尔值指示所选状态适用于的模块。 例如,可以读取 PROFINET IO 系统中当前禁用的 IO 设备。此信息的显示还依赖于要读取的状态信息是否适用于至少一个 IO 设备或 DP 从站。可在循环 OB
2、以及中断 OB(例如,OB82 - 诊断中断)中调用此指令。参数下表列出了指令“DeviceStates”的参数:参数 声明 数据类型 存储区 说明LADDR Input HW_IOSYSTEMI、Q、M、L 或常量 PROFINET IO 或 DP 主站系统的硬件标识符(请参见以下说明)MODE Input UINT I、Q、M、D、L 或常量 选择要读取的状态信息(请参见以下说明)RET_VALReturnINT I、Q、M、D、L 指令的状态(请参见以下说明)STATE InOut VARIANT I、Q、M、D、L IO 设备或 DP 从站的状态缓冲区(请参见以下说明)有关有效数据类型
3、的更多信息,请参见“有效数据类型概述”。参数 LADDR使用 LADDR 参数通过硬件标识符选择 PROFINET IO 或 DP 主站系统。硬件标识符位于: PROFINET IO 或 DP 主站系统属性的网络视图中。 或数据类型为 HW_IOSYSTEM 的所列系统常量的 PLC 变量表中。参数 MODE使用 MODE 参数可读取状态信息。 可读取整个 PROFINET IO 或 DP 主站系统的下列一条状态信息: 1: IO 设备/DP 从站已组态 2: IO 设备/DP 从站故障 3: IO 设备/DP 从站已禁用 4: IO 设备/DP 从站存在 5: 出现问题的 IO 设备/DP
4、从站。 例如:o 维护要求或建议o 不可访问o 不可用o 出现错误参数 STATE通过 STATE 参数,输出由 MODE 参数选择的 IO 设备/DP 从站的状态。 如果使用 MODE 选择的状态适用于 IO 设备/DP 从站,则在 STATE 参数中将下列位设置为“1”: 位 0 = 1: 组显示。 至少有一个 IO 设备/DP 从站的第 n 位设置为“1”。 位 n = 1:通过 MODE 选择的状态将应用到 IO 设备/DP 从站。 o 对于 PROFINET IO 系统,第 n 位对应于相应 IO 设备的设备编号(请参见设备视图和网络视图中的 PROFINET 接口属性)。o 对于
5、PROFINET DP 系统,第 n 位对应于 DP 从站的 PROFIBUS 地址(请参见设备视图和网络视图中的 DP 从站属性)。使用“BOOL”或“Array of BOOL”作为数据类型: 要仅输出状态信息的组显示位,可在 STATE 参数中使用 BOOL 数据类型。 要输出所有 IO 设备/DP 从站的状态信息,请使用下列长度的 Array of BOOL:o 对于 PROFINET IO 系统:1024 位o 对于 DP 主站系统:128 位参数 RET_VAL错误代码*(W#16#.)说明0 无错误8091 LADDR 参数的硬件标识符不存在。 请检查(例如,在系统常量中)项目中
6、是否有 LADDR 值。8092 LADDR 不会寻址 PROFINET IO 或 DP 主站系统。8093 STATE 参数中的数据类型无效。80B1 CPU 不支持“DeviceStates”指令。80B2 LADDR 参数中指定的 IO 系统所用的 CPU 不支持所选的 MODE 参数。8452 完整的状态信息,不适用于 STATE 参数中组态的变量。* 在程序编辑器中,错误代码可显示为整数或十六进制值。有关切换显示格式的信息,请参见“另请参见”。示例 - 读取 PROFINET IO 主站系统中是否存在 IO 设备在以下示例中,将在 IO 系统中查询是否存在 IO 设备。IO 系统将包
7、含两个 S7-1500 系列的 CPU。“PLC_14”CPU 将包含程序,其中包括“DeviceStates”指令。“PLC_13”CPU 将组态为一个 IO 设备。在“PLC_14”CPU 中:在全局数据块中创建三个变量和一个“STATE”结构(数据类型为 Array of BOOL),用于存储数据。在“PLC_14”CPU 中:在循环 OB 中调用指令。如下所示互连指令的参数。在“PLC_13”CPU 中:使用 CPU 属性将此 CPU“PLC_13”设为 IO 设备。IO 设备接收设备编号 1。IO 系统显示在网络视图中。在“PLC_14”CPU 中:通过参数 LADDR(“LADDR
8、”)使“DeviceStates”指令了解 IO 系统的硬件标识符。根据参数 MODE(“MODE”)的值“4”,在 IO 系统中搜索 IO 设备。在参数 STATE(“STATE”)中,输出 IO 设备是否存在(基于参数 MODE)的值。位 0 作为组值,指示 IO 设备存在。位 1 指示存在设备编号为 1 的 IO 设备。输出参数 RET_VAL(“returnValue”)指示处理无错误。 示例 - 读取 PROFINET IO 主站系统中发生故障的站PROFINET IO 系统包含设备编号为 1、2、3 和 4 的 4 个 IO 设备,其中编号为 2 的 IO 设备发生了故障。对于 M
9、ODE = 2(故障/无故障)的 PROFINET IO 系统,执行“DeviceStates”指令。 在 STATE 参数中设置了下列位: 位 0 = 1: 至少有一个 IO 设备发生了故障。 位 1 = 0: 设备编号为 1 的 IO 设备未发生故障。 位 2 = 1: 设备编号为 2 的 IO 设备发生了故障。 位 3 = 0: 设备编号为 3 的 IO 设备未发生故障。 位 4 = 0: 设备编号为 4 的 IO 设备未发生故障。 位 5 = 0: 无关 位 6 = 0: 无关 .示例 - 读取 PROFIBUS DP 主站系统中发生故障的站DP 主站系统包含 PROFIBUS 地址为
10、 3、4、5 和 6 的 4 个 DP 从站,其中地址为 4 的 DP 从站发生了故障。对于 MODE = 2(故障/无故障)的 DP 主站系统,执行“DeviceStates”指令。在 STATE 参数中设置了下列位: 位 0 = 1: 至少有一个 DP 从站发生了故障。 位 1 = 0: 无关 位 2 = 0: 无关 位 3 = 0: 地址为 3 的 DP 从站未发生故障。 位 4 = 1: 地址为 4 的 DP 从站发生了故障。 位 5 = 0: 地址为 5 的 DP 从站未发生故障。 位 6 = 0: 地址为 6 的 DP 从站未发生故障。 位 7 = 0: 无关 位 8 = 0:无关 .