SIEMENS西门子 S120 伺服电机 1FK7022-5AK71-1LG3-Z
SWAP:交换 (S7-1500) 说明 可以使用“交换”指令更改操作数中各个字节的顺序。 根据使用的数据类型,可以交换累加器 1 中的所有字节或仅交换累加器 1 的低字中的字节。 下图说明了如何交换 DWORD 数据类型操作数中的字节:如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”: • 源 ARRAY 的下标不能以 BYTE、WORD、DWORD 或 LWORD 限值开始。此时,不会向 ARRAY of <位序列> 中写入任何结果。 • ARRAY[*] of <位序列> 中未提供所需的元素数量。此时,将尽可能多地组合位序列并写入 ARRAY of <位序列> 中。不再考虑剩余的位。 说明 S7-1200-CPU:使能输出 ENO = 0 使能输出 ENO 的信号状态为“0”时,不会将任何数据写入输出参数 OUT 中。 参数 下表列出了该指令的参数: 参数 声明 数据类型 存储区 说明 IN Input 以下类型 ARRAY[*] 的元 素 - BOOL - STRUCT - PLC 数据类型 I、Q、M、D、L ARRAY of BOOL、STRUCT 或 PLC 数据类 型,其中各个位 待组合(源 ARRAY) 这些值不得位于 的 I/O 区域或工 艺对象的 DB 内。 COUNT_OUT Input USINT, UINT, UDINT, ULINT I、Q、M、D、L 计数目标 ARRAY 的元素数量。 该值不得位于的 I/O 区域或工艺对 象的数据库内。 OUT Output 以下类型 ARRAY[*] 的元 素 - BYTE - WORD - DWORD - LWORD I、Q、M、D、L 保存各个位的 ARRAY of <位序 列>(目标 ARRAY)下表将通过具体的操作数值对该指令的工作原理进行说明: 参数 操作数 数据类型 IN SourceArrayBool[14] 操作数“SourceArrayBool”的 数据类型为 ARRAY[-2..93] of BOOL。由于起点是第 16 个 元素,因此仅 80 个 BOOL 元 素可再次组合到字中。 COUNT_OUT CounterOutput = 3 UDINT3(要写入 3 个字。这 意味着源 ARRAY 中必须包含 48 个位。) OUT DestinationArrayWord[2] 操作数 “DestinationArrayWord”的数 据类型为 ARRAY[0..5] of WORD。即,包含有 6 个 WORD 的元素。 从操作数 #SourceArrayBool 的第 16 个元素开始,将 48 个位组合到操作数 #DestinationArrayWord 中。目标 ARRAY 中的起点是第三个元素。这意味着将忽略源 ARRAY 的前 16 位。第二组 16 位将写入目标 ARRAY 的第三个字,第三组 16 位写入第四个字,第 四组 16 位写入第五个字。不考虑源 ARRAY 剩余的 64 个位。
ARRAY 数据块 (S7-1500) ReadFromArrayDB:从数组数据块中读取 (S7-1500) 说明 可以使用“从 ARRAY 数据块中读取”(Read from ARRAY data block) 指令从 ARRAY DB 块类型 的数据块中读取数据并将其写入目标区域中。 ARRAY 数据块是仅包含一个 ARRAY of [数据类型] 的数据块。ARRAY 的元素可以是 PLC 数据 类型或其它任何基本数据类型。ARRAY 通常从下限“0”开始计数。 参数 下表列出了该指令的参数: 参数 声明 数据类型 存储区 说明 DB Input DB_ANY I、Q、M、D、L 待读取的数据块 INDEX Input DINT I、Q、M、D、 L、P 或常量 DB 中被读取的元素。标准 值可以是常数、全局变量 或索引值。参数 声明 数据类型 存储区 说明 VALUE Output 1) VARIANT L(可在块接口 的“Input”、 “InOut”和 “Temp”部分进行 声明。) 待读取并输出的值 RET_VAL Output INT I、Q、M、D、 L、P 指令的结果 1) VALUE 参数声明为 Output,因为数据流入变量。但此变量本身在块接口中必须声明为 InOut。 有关有效数据类型的更多信息,请参见“另请参见”。下表将通过具体的操作数值对该指令的工作原理进行说明: 参数 操作数 值 DB ArrayDB 操作数“ArrayDB”是数据类型 为 Array [0 to 10] of INT 的 ARRAY DB。 INDEX 2 “ArrayDB”的第二个元素 VALUE TargetField 操作数“TargetField”是 INT 数 据类型的全局变量。 将读取“ArrayDB”中的元素并将其写入操作数“TargetField”中。WriteToArrayDB:写入数组数据块 (S7-1500) 说明 可以使用“写入 ARRAY 数据块”(Write to ARRAY data block) 指令将数据写入 ARRAY DB 块类 型的数据块中。ARRAY 数据块是仅包含一个 ARRAY of [数据类型] 的数据块。ARRAY 的元素可以是 PLC 数据 类型或其它任何基本数据类型。ARRAY 通常从下限“0”开始计数。 参数 下表列出了该指令的参数: 参数 声明 数据类型 存储区 说明 DB Input DB_ANY I、Q、M、D、L 待写入数据的数据块 INDEX Input DINT I、Q、M、D、 L、P 或常量 待写入数据的 DB 中的元 素。标准值可以是常数、 全局变量或索引值。 VALUE Input VARIANT L(可在块接口 的“Input”、 “InOut”和 “Temp”部分进行 声明。) 待写入的值 RET_VAL Output INT I、Q、M、D、 L、P 指令的结果 有关有效数据类型的更多信息,请参见“另请参见”。ReadFromArrayDBL:从装载内存的数组数据块中读取 (S7-1500) 说明 可以使用“从装载存储器的 ARRAY 数据块中读取”(Read from ARRAY data block in load memory) 指令从装载存储器 ARRAY DB 块类型的数据块中读取数据并将其写入目标区域中。 ARRAY 数据块是仅包含一个 ARRAY of [数据类型] 的数据块。ARRAY 的元素可以是 PLC 数据 类型或其它任何基本数据类型。ARRAY 通常从下限“0”开始计数。 如果 ARRAY 数据块使用块属性“仅存储在装载存储器”进行指定,则该数组数据块将仅存 储在装载存储器中。 当 REQ 参数中检测到信号上升沿时,将执行该指令。参数 BUSY 的信号状态将为“1”。当 BUSY 参数中检测到信号下降沿时,将终止该指令。在一个程序周期内,DONE 参数的信号状态为 “1”,而且在该周期内,读取的值将输出到 VALUE 参数中。在所有其它程序周期内,参数 VALUE 的值将保持不变。下表列出了该指令的参数: 参数 声明 数据类型 存储区 说明 REQ Input BOOL I、Q、M、D、L 或常量 REQ = "1":开始读取 ARRAY 数据块 DB 1) Input DB_ANY I、Q、M、D、L 待读取的 ARRAY 数据块。 INDEX Input DINT I、Q、M、D、 L、P 或常量 DB 中被读取的元素。标准 值可以是常数、全局变量 或索引值。参数 声明 数据类型 存储区 说明 VALUE 1) InOut VARIANT D(全局数据块 的元素) L(可在块接口 的“Input”、 “InOut”和 “Temp”部分进行 声明。) 指向待读取工作存储器中 的 DB 的指针,并写入该 工作存储器的值。 不必使用“TEMP”部分的本 地常数或变量。 BUSY Output BOOL I、Q、M、D、L BUSY = "1":仍在读取数 组数据块 DONE Output BOOL I、Q、M、D、L DONE = "1":该指令执行 成功 ERROR Output INT I、Q、M、D、 L、P 错误信息: 如果在该指令执行期间出 错,则在参数 ERROR 中输 出一个错误代码。 1) 该数据块必须创建为带有“优化”块属性。当“TagReq”操作数中检测到信号上升沿时,将执行该指令。将读取“ArrayDB”中的第二个元素 并输出到“VALUE”参数中。在操作数“TagBusy”处检测到下降沿时,将中止该指令的执行同时 参数 VALUE 将不再变化。该指令执行后,操作数“TagDone”的信号状态将为 TRUE。WriteToArrayDBL:写入装载内存的数组数据块中 (S7-1500) 说明 可以使用“写入装载存储器的 ARRAY 数据块”(Write to ARRAY data block in load memory) 指 令将数据写入装载存储器中 ARRAY DB 块类型的数据块中。 ARRAY 数据块是仅包含一个 ARRAY of [数据类型] 的数据块。ARRAY 的元素可以是 PLC 数据 类型或其它任何基本数据类型。ARRAY 通常从下限“0”开始计数。 如果 ARRAY 数据块使用块属性“仅存储在装载存储器”进行指定,则该数组数据块将仅存 储在装载存储器中。 当 REQ 参数中检测到信号上升沿时,将执行该指令。参数 BUSY 的信号状态将为“1”。如果在 BUSY 参数中检测到信号下降沿,则将终止该指令同时将 VALUE 参数中的值写入该数据块中。 在一个程序周期内,参数 DONE 的信号状态为“1”。下表列出了该指令的参数: 参数 声明 数据类型 存储区 说明 REQ Input BOOL I、Q、M、D、L 或常量 REQ = "1":开始写入数组 数据块 DB 1) Input DB_ANY I、Q、M、D、L 待写入数据的 ARRAY 数据 块 INDEX Input DINT I、Q、M、D、 L、P 或常量 待写入数据的 DB 中的元 素。标准值可以是常数、 全局变量或索引值。 VALUE 1) Input VARIANT D(全局数据块 的元素) L(可在块接口 的“Input”、 “InOut”和 “Temp”部分进行 声明。) 指向待读取工作存储器中 的 DB 的指针,并写入该 工作存储器的值。 不必使用“TEMP”部分的本 地常数或变量。 BUSY Output BOOL I、Q、M、D、L BUSY = "1":仍在写入到 数组数据块 DONE Output BOOL I、Q、M、D、L DONE = "1":该指令执行 成功 ERROR Output INT I、Q、M、D、 L、P 错误信息: 如果在该指令执行期间出 错,则在参数 ERROR 中输 出一个错误代码。 1) 该数据块必须创建为带有“优化”块属性。