SIEMENS西门子 S120伺服电机 1FK7022-5AK71-1HB5-Z
- 供应商
- 浔之漫智控技术(上海)有限公司
- 认证
- 西门子
- 代理商
- S120
- 全新原装 假一罚十
- 德国
- 正品现货 实体经营
- 联系电话
- 15801815554
- 手机号
- 15801815554
- 联系人
- 邓经理
- 所在地
- 上海市松江区石湖荡镇塔汇路755弄29号1幢一层A区213室
- 更新时间
- 2024-11-22 08:00
gather:将各个位组合为位序列 (s7-1200, s7-1500) 说明指令“将各个位组合为位序列”用于将仅包含布尔型元素的 array of bool、匿名 struct 或 plc数据类型中的各个位组合为一个位序列。位序列保存在数据类型为 byte、word、 dword 或 lword 的变量中。 说明 多维array of bool 使用“将各个位组合为位序列”指令时,不支持多维 array of bool。下表列出了该指令的参数: 参数声明 数据类型 存储区 说明 s7-1200 s7-1500 in input 以下类型 array[*] 的元 素 - byte -word - dword 以下类型 array[*] 的元素 - byte - word - dword - lword i、q、m、d、l 所解析的 array of <位序 列> 这些值不得位于的 i/o 区 域或工艺对象的 db 内。count_in input usint, uint, udint usint, uint, udint, ulint i、q、m、d、l 对待解析源 array 中的元 素数量进行计数。 该值不得位于的 i/o 区域 或工艺对象的数据库内。 outoutput 以下类型 array[*] 的元 素 - bool - struct - plc 数据类型 以下类型 array[*]的元素 - bool - struct - plc 数据 类型 i、q、 m、d、l 保存 array、struct 或 plc数据类型中的各个位 有关有效数据类型的更多信息,请参见“另请参见”。
说明array、struct 或 plc 数据类型的长度 array、struct 或 plc数据类型中包含的元素数目必须恰好等于位序列指定的数量。 例如,如果数据类型为 byte,则 array、匿名 struct 或 plc数据类型中必须恰好包含 8 个 元素(word = 16、dword = 32、lword = 64)。 说明 该指令的可用性该指令可用于固件版本为 v4.2 及以上版本的 s7-1200 系列 cpu 和固件版本为 v2.1 及以上 版本的 s7-1500系列 cpu。 如果满足下列条件之一,使能输出 eno 将返回信号状态“0”: • 使能输入 en 的信号状态为“0”。 •array、匿名 struct 或 plc 数据类型 (udt)中 bool 元素的数量少于或多于位序列所指定的数量。此时,系统不传送 bool 元素。 • 可用的元素数少于所需的位数量。gather_blk:将单个位合并到 array of<位序列> 的多个元素中 (s7-1200, s7-1500) 说明 指令“将各个位组合为 array of<位序列> 的多个元素”用于将仅包含布尔型元素的 array of bool、匿名 struct 或 plc数据类型中的各个位组合为 array of <位序列> 中的一个或 多个元素。您可以在 count_out参数中指定要写入的目标 array 元素数量。在此步中,还 可隐式指定 array of bool、匿名 struct 或 plc数据类型中所需的元素数量。out 参数中 目标 array 的元素数量可能多于 count_out参数中的指定数量。要保存待组合的各个位, array of <位序列> 中必须包含足够的元素数目。但目标 array可能更大。 说明 多维 array of bool 如果 array 是一个多维 array ofbool,即使维度的填充位未明确声明且不可访问,但仍 会进行计数。 示例 1:array[1..10,0..4,1..2] ofbool 的处理方式与 array[1..10,0..4,1..8] of bool 或 array[0..399] of bool类似。 示例 2:在 out 参数处,将互连一个 array[0..5] of word(sourcearrayword[2])。参数 count_in 的值为“3”。在 in 参数处,将互连一个array[0..1,0..5,0..7] of bool (destinationarraybool[0,0,0])。参数 in和参数 out 中两个数组的大小均为 96 位。48 个单 个位将组合为 array of bool。 说明 如果源 array 的array 下限不是“0”,请注意以下几点: 出于性能方面的原因,索引必须始终以 byte、word、dword 或 lword限制开始。这就 意味着索引必须从 array 的下限处开始计算。通过以下公式进行相应计算: 有效下标 = array 下限 +n(位序列数量)× 所需位序列位数 对于 array[-2..45] of bool 和位序列 word,计算如下所示:该指令的可用性该指令可用于固件版本为 v4.2 及以上版本的 s7-1200 系列 cpu 和固件版本为 v2.1 及以上 版本的 s7-1500系列 cpu。 如果满足下列条件之一,使能输出 eno 将返回信号状态“0”: • 使能输入 en 的信号状态为“0”。 • 源array 的下标不能以 byte、word、dword 或 lword 限值开始。此时,不会向 array of<位序列> 中写入任何结果。 • array[*] of <位序列> 中未提供所需的元素数量。 –s7-1500-cpu:此时,将尽可能多地组合位序列并写入 array of <位序列> 中。不再 考虑剩余的位。 –s7-1200-cpu:不含复制过程。 说明 s7-1200-cpu:使能输出 eno = 0 使能输出 eno的信号状态为“0”时,不会将任何数据写入输出参数 out 中。如果操作数 #enable 在使能输入 en返回信号状态“1”,则将执行该指令。从操作数 #sourcearraybool 的第 1 个元素开始,将 48 个位组合到操作数#destinationarrayword 中。 目标 array 中的起点是第三个元素。这意味着前 16 位将写入目标 array的第三个字,第 二组 16 位写入第四个字,第三组 16 位写入第五个字。如果在指令执行期间出现错误,操 作数 #enableout将在使能输出 eno 处返回信号状态“0”。assignmentattempt:引用的赋值操作 (s7-1500) 说明使用“assignmentattempt”指令,可对引用变量进行赋值。 支持以下赋值操作: • 尝试将 variant 分配给一个引用• 尝试将 db_any 分配给一个工艺对象的引用 说明 scl:null 赋值尝试 在 scl 中,还可以在赋值尝试时分配null,专门设置对 null 的引用:尝试将 variant 分配给一个引用 引用变量的数据类型在声明时确定,而 variant变量的数据类型则在运行时确定。引用变 量不允许进行隐式数据转换。因此,为两个变量指定两个数据类型时,可使用赋值尝试指令。借助赋值操作,会在运行期间进行检查,以确认分配的变量的数据类型是否正确。如果正确,则执行该指令。如果该指令执行成功,则目标变量中包含一个有效的引用,否则为 null。尝试赋值后,可以检查尝试是否成功,并根据该结果继续处理程序。在 lad 和 fbd 中,可以将使能输出“eno”用于检查操作。如果赋值尝试成功,“eno”将返回信号状态“1”。只有成 功后才能在程序段中继续执行后续指令。 在stl 和 scl 中,可使用指令“is_null”或“not_null”来检查赋值尝试是否成功等。请参见 以下示例。 以下规则适用于variant 的赋值尝试。在运行过程中,如果 variant 变量不符合以下规则, 则返回值“null”。 • variant需指向一个优化存储区中的地址。 • variant 不得指向临时存储区中的地址。• 如需将 variant 指定给一个 array引用,则需遵循以下规则: – variant 变量必须指向一个限值与所声明的引用完全相同的 array。指向 array [0..9]的 variant 变量与变量 ref_to array[1..10] 不匹配。 – 此外,在固件版本为 v2.5 的 s7-1500系列 cpu 中,用于生成 variant 变量值的块还 应执行一次编译操作。 • variant 不能指定给一个工艺对象的引用。 •在 scl 中,赋值操作无法用于多重赋值运算 (a := b := c;) 中。 尝试将 db_any 分配给一个工艺对象的引用工艺对象的引用始终指向特定的工艺对象,例如 ref_to to_speedaxis。如果要在运行期间 通过 db_any类型的变量分配工艺对象,需要检查该工艺对象与声明的引用是否匹配。为此,可使用赋值操作。尝试赋值时,运行过程中将检查该工艺对象是否具有所声明的类型。如果数据类型正确,则会执行分配。如果分配执行成功,则目标变量中包含一个有效的引用,否 则为 null。 尝试将 db_any分配给一个工艺对象的引用时,遵循以下规则: • db_any 必须指向优化存储区中的工艺对象。 •两个相同类型的工艺对象可以相互分配。 • 派生类型可以分配给其基本类型。 •基本类型不能分配给其派生类型。在程序代码中,尝试将“myvariant”分配给引用变量“myreference”。在运行过程中,如果“myvariant”的数据类型为“int”,则"myreference" 中包含一个指向 variant 源变量的有效引 用,否则为null。如果下一个“not_null”查询为 true,则表示分配成功同时可将值“10”写 入目标变量中。