传统(S7-1500) S_CU:分配参数并加计数 (S7-1500) 说明 可使用“分配参数并加计数”指令递增计数器值。当 CU参数的信号状态从“0”变为“1”(信 号上升沿)时,当前计数器值加 1。通过参数 CV 提供当前计数器值。计数器值达到上限 999后,停止增加。如果达到限值,出现信号上升沿,计数器值也不再递增。 当 S 参数的信号状态从“0”变为“1”时,计数器值将设置为PV 参数的值。如果置位计数器且输 入 CU 处的逻辑运算结果 (RLO) 为“1”,没有检测到信号边沿变化,计数器也会在下一周期计数一次。 当 R 参数的信号状态变为“1”时,计数器值将设置为 0。只要参数 R 的信号状态为“1”,参数 CU 和 S的信号状态变化就不会影响计数值。 如果计数器值大于 0,参数 Q 的信号状态就为“1”。计数器值等于 0 时,参数 Q 将返回信号状态“0”。 说明只需在程序中的某一位置处使用计数器,即可避免计数错误的风险。如果参数“Tag_Start”的信号状态从“0”变为“1”(信号上升沿)且当前计数器值小于“999”时,则计数器值递增 1。如果“Tag_1”输入的信号状态从“0”变为“1”,则将 BCD 格式的计数器值设置为操作数“Tag_PresetValue”的值。当“Tag_Reset”操作数的信号状态为“1”时,计数器值复位 为“0”。当前计数器值以十六进制编码的形式存储在操作数“Tag_Value”中。只要当前计数器值不等于“0”,输出“Tag_Status”的信号状态便为“1”。当前计数器值在“Tag_Value”操作数中,并作为函数值返回。S_CD:分配参数并减计数 (S7-1500) 说明可使用“分配参数并减计数”指令递减计数器值。当 CD 参数的信号状态从“0”变为“1”(信 号上升沿)时,当前计数器值减 1。通过参数CV 提供当前计数器值。计数器值达到下限 0 时,将停止递减。如果达到下限值,出现信号上升沿,计数器值也不再递减。 当 S参数的信号状态从“0”变为“1”时,计数器值将设置为 PV 参数的值。如果置位计数器且参 数 CD 处的逻辑运算结果 (RLO)为“1”,没有检测到信号边沿变化,计数器也会在下一周 期计数一次。 当 R 参数的信号状态变为“1”时,计数器值将设置为0。只要参数 R 的信号状态为“1”,参数 CD 和 S 的信号状态变化就不会影响计数值。 如果计数器值大于 0,参数 Q的信号状态就为“1”。计数器值等于 0 时,参数 Q 将返回信号状态 “0”。 说明只需在程序中的某一位置处使用计数器,即可避免计数错误的风险。
当“Tag_Start”操作数的信号状态从“0”变为“1”(信号上升沿)且当前计数器值大于“0”时,计 数器值减1。如果“Tag_1”操作数的信号状态从“0”变为“1”,则将 BCD 格式的计数器值设置为“Tag_PresetValue”操作数的值。当“Tag_Reset”操作数的信号状态为“1”时,计数器值复位为 “0”。当前计数器值存储在“Tag_Value”操作数中。只要当前计数器值不等于“0”,“Tag_Status”操作数的信号状态便会返回“1”。当前计数器值在“Tag_Value”操作数中,并作为函数值返回。S_CUD:分配参数并加/减计数 (S7-1500) 说明可使用“分配参数并加/减计数”指令递增和递减计数器值。当 CU 参数的信号状态从“0”变为 “1”(信号上升沿)时,当前计数器值加1。当 CD 参数的信号状态从“0”变为“1”(信号上升 沿)时,计数器值减 1。通过参数 CV提供当前计数器值。如果在一个程序周期内参数 CU 和 CD 出现了信号上升沿,计数器值将保持不变。 计数器值达到上限 999后,停止递增。达到上限后,出现信号上升沿,计数器值也不 再递增。达到下限值“0”时,计数器值不再递减。 当 S参数的信号状态从“0”变为“1”时,计数器值将设置为 PV 参数的值。如果置位计数器且 CU 和 CD 参数的逻辑运算结果 (RLO)为“1”,没有检测到信号边沿变化,计数器也会在下一 周期计数一次。 当 R 参数的信号状态变为“1”时,计数器值将设置为 0。只要R 参数的信号状态为“1”,参数 CU、 CD 和 S 信号状态的改变就不会影响该计数器值。 如果计数器值大于 0,参数 Q的信号状态就为“1”。计数器值等于 0 时,参数 Q 将返回信号状态 “0”。 说明只需在程序中的某一位置处使用计数器,即可避免计数错误的风险。当检测到操作数“Tag_CU”的信号状态为上升沿且当前计数器值小于“999”,则计数器值将加1。 当检测到操作数“Tag_CD”的信号状态为上升沿且当前计数器值大于“0”,则计数器值递减 1。如果“Tag_1”操作数的信号状态从“0”变为“1”,则将 BCD 格式的计数器值设置为“Tag_PresetValue”操作数的值。当“Tag_Reset”操作数的信号状态为“1”时,计数器值复位为 “0”。当前计数器值存储在“Tag_Value”操作数中。只要当前计数器值不等于“0”,“Tag_Status”操作数的信号状态便会返回“1”。当前计数器值在“Tag_Value”操作数中,并作为函数值返回。TypeOfElements:检查 VARIANT 变量的 ARRAY元素的数据类型 (S7-1200, S7-1500) 说明 可以使用“检查 VARIANT 变量的 ARRAY元素的数据类型”指令查询 VARIANT 变量所指向的变量的数据类型。比较变量的数据类型与在块接口中声明的变量的数据类型,确定这两者是 “相等”还是“不相等”。 操作数必须具有VARIANT 数据类型。比较操作数可以是基本数据类型或 PLC 数据类型。 如果 VARIANT 变量的数据类型为ARRAY,将比较 ARRAY 元素的数据类型。 在 IF 或 CASE 指令中,只能使用指令“检查 VARIANT 变量中ARRAY 元素的数据类型”。有关有效数据类型的更多信息,请参见“另请参见”。 说明 检查 ARRAY 数据块 如果 IS_ARRAY指令中使用 ArrayDB 并通过 DB_ANY_TO_VARIANT 生成输入参数 VARIANT, 则程序中需使用 ArrayDB符号作为数据类型为 VARIANT 的形参的实参。只需下载使用点即 可正常运行,而无需执行该使用点。TypeOfDB:查询 DB的数据类型 (S7-1500) 说明 指令“查询 DB 的数据类型”用于查询某个数据块的数据类型,该数据块由 DB_ANY 数据类型变量进行寻址。由变量寻址的 DB 的数据类型可与另一个变量的数据类型进 行比较,也可以直接与“Equal”或“Notequal”中的某个数据类型进行比较。 该变量必须为 DB_ANY 数据类型。例如,比较操作数可以是 PLC 数据类型、系统数据类型、轴或 FB。 在 IF 或 CASE 指令中,只能使用指令“查询 DB 的数据类型”。// 如果寻址 DB 的操作数#InputDBAny 操作数的数据类型等于 TO_SpeedAxis 数据类型,则 置位输出“TagOut”。满足以下条件时,不置位输出“TagOut”: • 数据块的编号为“0”。 • 数据块不存在。 • 该数据块是一个 ARRAY 数据块。• 数据块包含数据类型 UDT(PLC 数据类型)的变量。