SIEMENS西门子 S120伺服电机 1FK7022-5AK71-1DG5
![](http://static.11467.com/img/ab-prev-0.png)
![](http://img.11467.com/2024/05-18/1060681774_small.jpg)
![](http://img.11467.com/2024/05-18/1060681774_small.jpg)
![](http://img.11467.com/2024/05-18/1060929247_small.jpg)
![](http://img.11467.com/2024/05-18/1060749534_small.jpg)
![](http://static.11467.com/img/ab-next-0.png)
ARRAY 数据块 (S7-1500) ReadFromArrayDB:从 ARRAY 数据块中读取 (S7-1500) 说明 可以使用“从 ARRAY 数据块中读取”(Read from ARRAY data block) 指令从索引引用的 ARRAY DB 块类型的数据块中读取元素并将元素值写入目标范围。 ARRAY 数据块是仅包含一个 ARRAY of <数据类型> 的数据块。ARRAY 的元素可以是 PLC 数据 类型或其它任何基本数据类型。ARRAY 通常从下限“0”开始计数。 参数 下表列出了“从 ARRAY 数据块中读取”指令的参数: 参数 声明 数据类型 存储区 说明 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 错误信息: 如果指令执行期间出错, 则在参数 RET_VAL 中输出 错误代码。 1) VALUE 参数声明为 Output,因为数据流入变量。但此变量本身在块接口中必须声明为 InOut。
尝试将 DB_ANY 分配给一个工艺对象的引用 工艺对象的引用始终指向特定的工艺对象,例如 REF_TO TO_SpeedAxis。如果要在运行期间 通过 DB_ANY 类型的变量分配工艺对象,需要检查该工艺对象与声明的引用是否匹配。为此, 可使用赋值操作。尝试赋值时,运行过程中将检查该工艺对象是否具有所声明的类型。如果 数据类型正确,则会执行分配。如果分配执行成功,则目标变量中包含一个有效的引用,否 则为 NULL。 尝试将 DB_ANY 分配给一个工艺对象的引用时,遵循以下规则: • DB_ANY 必须指向优化存储区中的工艺对象。 • 两个相同类型的工艺对象可以相互分配。 • 派生类型可以分配给其基本类型。 • 基本类型不能分配给其派生类型。在程序代码中,尝试将“myVariant”分配给引用变量“myReference”。在运行过程中,如果 “myVariant”的数据类型为“Int”,则"myReference" 中包含一个指向 VARIANT 源变量的有效引 用,否则为 NULL。如果下一个“NOT_NULL”查询为 True,则表示分配成功而且输出参数 “Tag_Out”可写入。 随后会尝试将 "myDB" 分配给 "myReferenceTO" 引用变量。如果运行期间 "myDB" 指向类型为 “定位轴”的工艺对象,则 "myReferenceTO" 包含有效引用,否则为 NULL。如果赋值操作 成功,使能输出“ENO”的信号状态为“1”,并且可以写入输出参数“Tag_Out”。WriteToArrayDB:写入 ARRAY 数据块 (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 参数的大小与 ARRAY 数据块中的元素长度不匹配。 • 这两个变量不在具有“优化访问”的存储区内。有关存储区访问类型的更多 信息,请参见“块访问的基本知识 (页 63)” * 在程序编辑器中,错误代码可显示为整数或十六进制值。有关切换显示格式的更多信息, 请参见“另请参见”。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 的值将保持不变。 参数 下表列出了“从装载存储器的 ARRAY 数据块中读取”指令的参数: 参数 声明 数据类型 存储区 说明 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”。下表将通过具体的操作数值对该指令的工作原理进行说明: 参数 操作数 值 RE BOOL DB ArrayDB 操作数“ArrayDB”是数据类型 为 ARRAY [0 to 10] of INT 的 ARRAY DB。 INDEX 2 “ArrayDB”的第二个元素 VALUE SourceField 操作数“SourceField”是 INT 数 据类型的全局变量。 BUSY TagBusy BOOL DONE TagDone BOOL 当“TagReq”操作数中检测到信号上升沿时,将执行该指令。在操作数“TagBusy”处检测到下降 沿时,将立即终止该指令的执行并将参数 VALUE 中的值写入“ArrayDB”的第二个元素中。该 指令执行后,操作数“TagDone”的信号状态将为 TRUE。下表列出了“写入装载存储器的 ARRAY 数据块中”指令的参数: 参数 声明 数据类型 存储区 说明 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) 该数据块必须创建为带有“优化”块属性。