SIEMENS 西门子 S120伺服电机 1FK7022-5AK71-1LG5-Z
如果是从 1997 年 2 月以前购买的 FM 或通信处理器中(以下称“旧模块”)读取多个数据 记录,“RD_REC”的响应与在新模块中不同。这种特殊情况在“使用旧 S7-300 FM 和通信处 理器(数据记录数 >1)”部分有阐述(见下面)。 如果通过 GSD 文件(GSD 修订版 V3 及更高版本)组态了 DPV1 从站,并且 DP 主站的 DP 接 口设置为“S7 兼容”,则不能在用户程序中使用指令“RD_REC”从 I/O 模块中读取任何数据记 录。在这种情况下,DP 主站寻址到错误的插槽(已组态的插槽 + 3)。 补救措施:将 DP 主站的接口设置为“DPV1”。下表列出了“RD_REC”指令的参数: 参数 声明 数据类型 存储区 说明 REQ Input BOOL I、Q、M、D、L 或 常量 REQ = 1:读取请求 LADDR Input HW_IO I、Q、M、D、L 或 常量 模块的硬件标识符。 RECNUM Input BYTE I、Q、M、D、L 或 常量 数据记录编号(值范围:0 到 240) RET_VAL Return INT I、Q、M、D、L 在指令执行过程中如果发生错误,则返回值 将包含错误代码。另外:实际传送的数据记 录长度(单位为字节)(可能的值:+1 到 +240),如果目标范围大于传送的数据记 录且传送过程中无错误发送。参数 声明 数据类型 存储区 说明 BUSY Output BOOL I、Q、M、D、L BUSY = 1:读取过程尚未完成。 RECORD Output VARIANT I、Q、M、D、L 读取数据记录的目标范围。异步执行 “RD_REC”时, 应确保所有调用中 RECORD 的实参都具有相 同的 长度信息。数据类型只能为“BYTE ”。 注:请注意,对于 S7-300 CPU,参数 RECORD 通常需要完整指定 DB 参数(如, P#DB13.DBX0.0 字节 100)。在 S7-300 CPU 中,DB 编号不能省略显式,否则会导 致用户程序报错。 有关有效数据类型的更多信息,请参见“有效数据类型概述参数 RECORD 说明 如果要确保始终读取整个数据记录,则选择的目标范围长度为 241 个字节。如果数据传送 无误,则 RET_VAL 中将包含实际的数据记录长度。 使用旧 S7-300 FM 和通信处理器(数据记录数 >1) 使用指令“RD_REC”从旧的 S7-300 FM 或 S7-300 通信处理器读取多个数据记录时,应注意以 下几点: • 如果目标范围大于所需数据记录的实际长度,则 RECORD 中不输入任何数据。将 RET_VAL 写入 W#16#80B1。 • 如果目标范围小于数据记录所需的实际长度,则 CPU 将从该记录的起始位置处读取 RECORD 长度信息中所指定的字节数目,并将该字节数目输入到 RECORD 中。RET_VAL 的值将为“0”。 • 如果 RECORD 中指定的长度与所需数据记录的实际长度相同,则 CPU 即读取数据记录, 并输入到 RECORD 。RET_VAL = 0。
参数 RET_VAL • 如果在该函数的执行过程中出错,则返回值将包含一个错误代码。 • 如果传送过程中没有出错,则 RET_VAL 具有以下值: – 0,整个目标范围填充了所选数据记录中的数据时(数据记录也可能不完整)。 – 实际传送的数据记录长度(单位为字节)(可能的值:+1 到 +240),如果目标范围 大于传送的数据记录。 说明 如果发生常见错误 W#16#8745,则只表示连过程映像的一个字节也不能访问。数据 记录已由模块正确读取,并写入 I/O 存储区。 在下表中查看“实际”错误消息(错误代码 W#16#8xyz)时,可能存在以下两种不同情况: • 临时错误(错误代码 W#16#80A2 至 80A3、80Cx): 此类错误可自动消除而无需用户操作。此时,建议再次调用该指令(必要时,可多次调 用)。 临时错误举例:当前正在使用的必要资源(W#16#80C3)。 • yongjiu错误(错误代码 W#16#809x,80A0,80A1,80Bx): 这类错误代码不能自行修正。错误消除后,需要再次调用该指令。yongjiu错误举例: RECORD 中的长度规格错误(W#16#80B1)。 说明 如果将数据记录使用“WR_REC (页 2916)”传送到 DPV1 从站,或使用“ RD_REC ”从 DPV1 从站读取数据记录,且该 DPV1 从站处于 DPV1 模式,则 DP 主站会如下评估从从站接收 到的错误信息: 如果错误信息在 W#16#8000 ~ W#16#80FF 或 W#16#F000 ~ W#16#FFFF 范围内,则 DP 主站会将错误信息传送给指令。如果错误信息超出该范围,则 DP 主站会将值 W#16#80A2 传送给指令,并将从站挂起。 有关 DPV1 从站错误信息的说明,请参见 STATUS[3] 参数 STATUS对于“WR_REC (页 2916)”:仅当 CPU 处于 STOP 模式时,才 写入数据。注:这意味着不能由用户程序写入。只能使用 PG/PC 在线写入数据。 对于“RD_REC”:模块传送数据记录,但没有数据或只有 CPU 处于 STOP 模式时才能读取数据。注:如果只有 CPU 处于 STOP 模式时才能读取数据,则不能由用户程序进行评估。此 时,只能使用 PG/PC 在线读取数据。 对于“DPNRM_DG (页 2950)”:无可用诊断数据。WR_REC: 向 I/O 写入数据记录 (S7-1500) 说明 使用指令“WR_REC”,可以将数据记录 RECORD 传送到寻址的模块中。 在第一次调用时,要传送的数据从参数 RECORD 中读取。如果数据记录的传送时间长于一次 调用的时间,则参数 RECORD 的内容不再与后续指令调用相关(对于同一作业)。DPRD_DAT:读取 DP 标准从站的一致性数据 (S7-1200, S7-1500) 说明 通过指令“DPRD_DAT”读取 I/O 模块中的一致性数据。 该指令适用于中央模块以及 DP 标准从站和 PROFINET IO 设备。 由于使用访问 I/O 或过程映像输入表的加载命令只能读取Zui多 4 个连续的字节,因此需要使用 “DPRD_DAT”。根据需要,还可以通过输入的过程映像,读取一致性数据。请参见相关文档,以了解您的 CPU 是否支持此功能。有关 DP 标准从站/PROFINET IO 设备的一致性数据的更多 信息,请参见“数据一致性 (页 5475)”章节。 必要时,也可将指令“DPRD_DAT”读取 1 个字节或更大的数据区域。有关数据Zui大长度的信息, 请参见 CPU 文档(如 S7-1214 为 64 个字节)。 • 可通过参数 LADDR 选择 DP 标准从站/PROFINET IO 设备的模块。如果出现访问错误,则 输出错误代码 W#16#8090。 • 使用参数 RECORD,可定义读取数据的目标范围: – 目标范围长度至少应与所选模块的输入长度相同。如果目标范围大于模块的输入,则 从输入值之前写入;对于 S7-1200 CPU,目标范围的剩余字节保持不变;对于 S7-1500 CPU,剩余字节则为“0”。如果从带有模块化组态或多个 DP 标识符的 DP 标准从站中读 取,则在每次调用“DPRD_DAT”时,只能访问具有所组态硬件标识符的模块的数据。如 果所选的目标范围过小,则在参数 80B1 处输出错误代码 RET_VAL。 – 可以使用以下数据类型:BOOL,BYTE,CHAR,WCHAR,WORD,LWORD, DWORD,INT,UINT,USINT,SINT,LINT,ULINT,DINT,UDINT,REAL,LREAL。 在类型为 ARRAY 或 STRUCT 的数据结构中也可使用这些数据类型。 – 不支持数据类型 STRING 和 WSTRING 。 – 支持 PLC 数据类型 (UDT) 和系统数据类型。 • 如果在数据传输过程中未发送任何错误,则所读取的数据将输入到参数 RECORD 中所定 义的目标范围内。DPWR_DAT:将一致性数据写入 DP 标准从站 (S7-1200, S7-1500) 说明 通过指令“DPWR_DAT”可将参数 RECORD 中的数据保持一致地传送到中央模块或 DP 标准从站/ PROFINET IO 设备的寻址模块中,必要时还可传送到过程映像中(例如,受影响的 DP 标准 从站地址范围与过程映像中地址范围相同时)。 由于使用访问 I/O 或过程映像输出的传送命令只能写入Zui多 4 个连续的字节,因此需要使用 “DPWR_DAT”。必要时,也可以通过过程映像输出读取一致性数据。请参见相关文档,以了 解您的 CPU 是否支持此功能。写入一致性数据时,请勿同时进行以下操作:要么使用 “DPWR_DAT”,要么通过过程映像输出表写入。有关 DP 标准从站/PROFINET IO 设备的一致性数据的更多信息,请参见“数据一致性 (页 5475)”章节。如果 DP 标准从站采用模块化设计, 则只能访问 DP 从站的一个模块。 小心 I/O 访问 使用“DPWR_DAT”时,应避免访问具有分配了 OB6x 连接(等时同步模式中断)的过程映像 分区的 I/O 区域。 如有必要,指令“DPRD_DAT”也可用于 1 个字节或 1 个字节以上的数据区域。有关数据Zui大 长度的信息,请参见 CPU 文档(如 S7-1214 为 64 个字节)。 • 可使用 LADDR 参数选择 DP 标准从站/PROFINET IO 设备。如果寻址的模块上出现访问错 误,则输出错误代码 8090。 • 可使用 RECORD 参数定义要被写入的数据的源范围: – 源范围长度至少应与所选模块的输出长度相同。仅传送输出,不考虑其它字节。如果 通过参数 RECORD 指定的源区域长度大于所组态模块的输出长度,则Zui多可传输输出 长度的数据量。如果参数 RECORD 中指定的源区域长度小于所组态模块的输出长度, 则将输出错误代码 80B1。。 – 可以使用以下数据类型:BOOL,BYTE,CHAR,WCHAR,WORD,LWORD, DWORD,INT,UINT,USINT,SINT,LINT,ULINT,DINT,UDINT,REAL,LREAL。 在类型为 ARRAY 或 STRUCT 的数据结构中也可使用这些数据类型。 – 不支持数据类型 STRING 和 WSTRING 。 – 支持 PLC 数据类型 (UDT) 和系统数据类型。 数据传送为同步操作,指令执行完成后,写入操作也同时完成。 参数 下表列出了“DPWR_DAT”指令的参数: 参数 声明 数据类型 存储区 说明 LADDR Input HW_IO I、Q、M、L 或常 量 将写入数据的模块硬件 ID。 硬件标识符可以在系统常量中找到。 RECORD Input VARIANT I、Q、M、D、L 写入用户数据的 源区域。 RET_VAL Return INT I、Q、M、D、L 在指令执行过程中如果发生错误,则返回 值将包含错误代码。 有关有效数据类型的更多信息,请参见“有效数据类型概述。