FIFO:输出表格的第一个值 (S7-300, S7-400) 说明 此指令将以函数值的形式输出表“FIFO”中的Zui旧的条目。将条目数减一。 如果在表格中 尚存在其它条目,则将这些条目的编号均减一。 表“FIFO”由字组成。 可使用 ATT(页 7997) 将值输入到表“FIFO”中。 • 表格中的第一个条目指定了表格的Zui大长度。 •表格中的第二个条目指定现有条目数。 • 表格的第三个条目则包含了数据的第一个字。
下表列出了指令“FIFO”的参数:参数 声明 数据类型 存储区 说明 TABLE Input *Pointer I、Q、M、D 指向表“FIFO”的起始地址。RET_VAL 返回 WORD I、Q、M、D、L、 P 表“FIFO”中的Zui旧的条目。 * 指针格式为双字,用于跨区域间接寄存器寻址有关有效数据类型的更多信息,请参见“有效数据类型概述 (页 255)”。 参数 RET_VAL如果表“FIFO”为空(条目数 = 0),则 RET_VAL 保持不变,“BR/ENO”的信号状态设置为“0”。 示例 (LAD)"只有输入 I 0.0 的信号状态为“1”(激活)时,才执行指令“FIFO”。 在本示例中,表格中第一 个条目将作为功能值 (MW2.0) 返回。 将条目数从 5 递减为 4,表格中剩下的条目向下移动 一位。 如果正确执行了指令“FIFO”,则将“BR/ENO”和Q 0.0 的信号状态设置为“1”。TBL_FIND: 在表格中查找值 (S7-300, S7-400) 说明可使用此指令来搜索存储器以了解模式。 指令“TBL_FIND”用于在源模式(参数 PATRN)和源 表(参数SRC)中的条目之间执行比较(参数 CMD)。 从参数 INDX 指定的条目开始,此 指令将搜索表中符合比较条件的下一条目。条目编号存储在参数 INDX 中。 如果未找到匹 配项,则参数“INDX”将指向表的末尾,并且指令“TBL_FIND”的输出将被禁用。• 如果 CMD = 1,则指令“TBL_FIND”搜索与参数 PATRN 的值相符的第一个值。 • 如果 CMD =2,则指令“TBL_FIND”搜索与参数 PATRN 的值不相符的第一个值。• 表格中的第一个条目指定了表格的Zui大长度。 •表格的第二个条目包含有第一个表格值。 说明 请确保,将初始化表格的第一个条目(表格长度)。 参数下表列出了指令“TBL_FIND”的参数: 参数 声明 数据类型 存储区 说明 SRC Input *Pointer I、Q、M、D指向表格的起始地址。 PATRN Input *Pointer I、Q、M、D 指向待搜索的模式。 CMD Input BYTEI、Q、M、D、L、 P 指定命令: • B#16#01 = 等于 • B#16#02 = 不等于 E_TYPE Input BYTEI、Q、M、D、L、 P 指定表格条目的数据类型: B#16#02 = BYTE B#16#04= WORD B#16#05=INTB#16#06=DWORD B#16#07=DINT B#16#08=REAL RET_VAL 返回 WORD I、Q、M、D、L、P 如果正确执行操作,则返回值 W#16#0000 。 INDX InOut WORD I、Q、M、D、L 表格索引将提供以下信息:• 输入: 开始搜索的条目编号。 • 输出:与指定模式相匹配的条目编号。 * 指针格式为双字,用于跨区域间接寄存器寻址有关有效数据类型的更多信息,请参见“有效数据类型概述。示例 (LAD) 只有输入 I 0.0的信号状态为“1”(激活)时,才执行指令“TBL_FIND”。 在本例中,由于参数 E_TYPE=“4”,表中的数据以字的形式存储,从参数 SRC 指向的地址开始。 这些字将与 存储在由参数 PATRN指定的地址中的模式“5555”进行比较。 由于 CMD = 1,该指令搜 索参数 SRC 中与该模式匹配的第一个值。 参数INDX 指向应开始搜索的地址。 指令执行完 之后,参数 INDX 指定在表中发现该模式的匹配项处的条目编号。如果正确执行了指令“TBL_FIND”,则将 ENO 和 Q 0.0 的信号状态设置为“1”,并将 RET_VAL 设置为值W#16#0000。 指令“MOVE”只是用于在每个循环中将“MW2”的值复位。LIFO: 输出表格的Zui后一个值 (S7-300,S7-400) 说明 此指令将以函数值的形式输出表“LIFO”中的Zui新的条目。 将条目数减一。 表“LIFO”由字 组成。可使用指令 ATT (页 7997) 将值输入到表“LIFO”中。 • 表格的第一个条目指定该表格的Zui大条目数(表格长度)。• 表格中的第二个条目指定现有条目数。 • 表格的第三个条目则包含了数据的第一个字。下表列出了指令“LIFO”的参数: 参数 声明数据类型 存储区 说明 TABLE Input *Pointer I、Q、M、D 指向表“LIFO”的起始地址。 RET_VAL 返回WORD I、Q、M、D、L、P 表“LIFO”中的Zui新的条目。 * 指针格式为双字,用于跨区域间接寄存器寻址有关有效数据类型的更多信息,请参见“有效数据类型概述 (页 255)”。 参数 RET_VAL如果表“LIFO”为空(条目数 = 0),则 RET_VAL 保持不变,“BR/ENO”的信号状态设置为“0”。 示例 (LAD)只有输入 I 0.0 的信号状态为“1”(激活)时,才执行指令“LIFO”。 在本例中,表“LIFO”中的Zui新条目将以函数值的形式返回 (MW 2.0)。 条目数从 5 递减为 4。 如果正确执行了“LIFO”,则将“ENO”和 Q 0.0的信号状态设置为“1”。TBL: 执行表格指令 (S7-300, S7-400) 说明 此指令使用源表来执行指定指令(参数CMD),并将结果写入表中的同一条目。 • 表格的第一个条目指定该表格的Zui大条目数(表格长度)。 •表格的第二个条目包含有第一个表格值。 • 如果将参数 E_TYPE 设置为 REAL ,则用于求反码的 CMD 值无效。 说明创建表格时,将初始化第一个条目。 参数 下表列出了指令“TBL”的参数: 参数 声明 数据类型 存储区 说明 SRC Input*Pointer I、Q、M、D 指向表格的起始地址。 CMD Input BYTE I、Q、M、D、L、 P 指定待执行的指令。以下指令有效: B#16#03 = 求反码 B#16#04 = 删除 B#16#05 = 取反 B#16#06 = 平方根E_TYPE Input BYTE I、Q、M、D、L、 P 指定表格条目的数据类型。 下列数据类型 有效: B#16#04 =WORD B#16#05 = INT B#16#06 = DWORD B#16#07 = DINT B#16#08 = REALRET_VAL 返回 WORD I、Q、M、D、L、 P 如果正确执行操作,则返回值 W#16#0000 。 *指针格式为双字,用于跨区域间接寄存器寻址 有关有效数据类型的更多信息,请参见“有效数据类型概述参数 RET_VAL 如果参数 CMD或 E_TYPE 无效,并且/或者参数 CMD 和 E_TYPE 不匹配,则表中的值保持 不变。 将 BR/ENO的信号状态设置为“0”,并将 RET_VAL 设置为值 W#16#0008 。 示例 (LAD) 只有输入 I 0.0的信号状态为“1”(激活)时,才执行指令“TBL”。 在本例中,参数 SRC 指向 将由此指令处理的数据块中的地址。 由于参数E_TYPE = 4,表中的数据将以字的形式 存储,从参数 SRC 指定的地址开始。 由于 CMD =4(清除),在执行指令“TBL”时,表 中的所有字将被清除(设置为“0”)。 如果表中第一个条目的表长度值为“5”,则会导致将表中的下面五个条目删除。TBL_WRD: 从表格中复制值 (S7-300, S7-400) 说明指令“TBL_WRD”(从复制表中的值)可将由参数 INDX 指定的条目从表 SRC 复制到 DEST 输 出。 如果 INDX的值小于 (SRC[0]) 表的第一个字中指定的Zui大长度,则该值将递增。 如果 参数 INDX指定Zui后一个表条目,则在执行之后将输出位设置为“0”。 • 表格的第一个条目指定该表格的Zui大条目数(表格长度)。 •表格的第二个条目包含有第一个表格值。 说明 创建表格时,将初始化第一个条目。 参数 下表列出了指令“TBL_WRD”的参数: 参数声明 数据类型 存储区 说明 SRC Input *Pointer I、Q、M、D 指向表格的起始地址。 DEST Input*Pointer I、Q、M、D 指向目标的起始地址。 E_TYPE Input BYTE I、Q、M、D、L、 P指定表格条目的数据类型。 下列数据类 型有效:参数 声明 数据类型 存储区 说明 RET_VAL 返回 WORD I、Q、M、D、L、P 如果正确执行操作,则返回值 W#16#0000。 Q Output BOOL Q、M、D、L 如果变量 INDX的值为调用“TBL_WRD”时 表中的Zui后一个值,则将返回值“0”。 INDX InOut WORD I、Q、M、L待复制条目的编号。 有关有效数据类型的更多信息,请参见“有效数据类型概述"TBL_WRD" 指令执行,只有输入 I 0.0的信号状态为“1”(激活)时。在本例中,由于 E_TYPE = 4,会将存储在由 SRC 引用的表条目中的数据字复制到由 DEST引用的条目。 INDX 的 值指向要复制的表条目。执行“TBL_WRD”之后,INDX 的值自动递增一个条目。如果 INDX 的内容不是调用“TBL_WRD”时的Zui后一个表条目,则在执行后将输出 ENO 设置为“1”。