此功能有选择地读取 TM3 模拟量或温度模块的 I/O 通道状态,并由 ModuleIndex 予以指示。此功能块从 pStatusBuffer 所指向的内存位置处开始写入每个被请求通道的状态。
被请求模块的每个模拟量/温度 I/O 通道都需要一个字节的内存。如果为所请求的 I/O 模块通道状态数分配的缓冲区内存不足,则该功能可能会覆盖为其他目的分配的内存,或者可能会尝试覆盖限制内存区。
警告 | |
---|---|
下表描述了输入变量:
输入 |
类型 |
注释 |
---|---|---|
ModuleIndex |
BYTE |
扩展模块的索引(对于最靠近控制器的模块,为 0,次之的为 1,以此类推) |
StatusOffset |
BYTE |
要在状态表中读取的第一个状态的偏移。 |
StatusSize |
BYTE |
要在状态表中读取的字节数。 |
pStatusBuffer |
POINTER TO BYTE |
缓冲区,包含读取状态表 (IBStatusIWx / IBStatusQWx)。 |
下表介绍了输出变量:
输出 |
类型 |
注释 |
---|---|---|
TM3_GetModuleInternalStatus |
如果命令正常运行,则返回 |
以下示例介绍如何获取模块内部状态:
VAR
TM3AQ2_Channel_0_Output_Status: BYTE;
END_VAR
TM3AQ2 is on position 1
Status of channel 0 is at offset 0
We read 1 channel
TM3_GetModuleInternalStatus(1, 0, 1, ADR(TM3AQ2_Channel_0_Output_Status));
status of channel 0 is in TM3AQ2_Channel_0_Output_Status
TM3AQ2 模块(2 路输出)
获取第一个输出 QW0 的状态
StatusOffset = 0(0 输入 x 2)
StatusSize = 1(要读取 1 个状态)
pStatusBuffer 需要至少 1 个字节
VAR
TM3AM6_Channels_1_2_Input_Status: ARRAY[1..2] OF BYTE;
END_VAR
TM3AM6 is on position 1
Status of channel 1 is at offset 1
We read 2 consecutive channels
TM3_GetModuleInternalStatus(1, 1, 2, ADR(TM3AM6_Channels_1_2_Input_Status));
status of channel 1 is in TM3AM6_Channels_1_2_Input_Status[1]
status of channel 2 is in TM3AM6_Channels_1_2_Input_Status[2]
TM3AM6 模块(4 路输入,2 路输出)
获取输入 IW1 和 IW2 的状态(IW0 是第一个输入)
StatusOffset = 1(1 跳过 IW0 状态)
StatusSize = 2(要读取 2 个状态)
pStatusBuffer 需要至少 2 个字节