ET 200S串行接口 (S7-300, S7-400) 用于 3964(R) 和 ASCII 的 ET 200S 1SI (S7-300,S7-400) S_RCV:接收数据 (S7-300, S7-400) 说明 S_RCV 指令根据 DB_NO 和 DBB_NO参数指定的内容将数据从 ET 200S 1SI 模块传送至 S7 数据区。为进行数据传输,可在循环或者时间控制的程序的静态(无条件)操作中调用 S_RCV 指令。 工作原理 参数 EN_R处的(静态)信号状态“1”启动对要从 ET 200S 1SI 模块读取的数据的检查。 可以 通过在参数 EN_R处设置信号状态“0”以及在参数 R 处设置信号状态“1”来取消激活的传输。 (由于参数 EN_R设为“1”后可能无法启动传输,除了将 EN_R 设为“0”之外还应将参数 R 设 为“1”以取消激活的传输。)终止已取消的接收请求,生成一条错误消息(STATUS 输 出)。 在参数 EN_R 处设置信号状态“0”之后,会禁用接收功能。数据传输可能会进行多次 调用(程序周期),具体取决于数据量。 如果指令检测到参数 R 的信号状态为“1”,则将取消当前的传输作业,并将S_RCV 指令复位 为初始状态。在参数 R 处设置信号状态“1”之后,会禁用接收功能。 如果信号状态恢复为“0”,则从头开始重新接收取消的消息帧。 参数 LADDR 指定要寻址的 ET 200S 1SI 的地址。 输出 NDR指示“作业已完成且无错/数据已接收”(已读取全部数据),ERROR 指示错误事 件。 如果发生错误,会在 STATUS中显示相应的错误编号。 如果接收缓冲区占用超过其容 量的 2/3,则在每次调用 S_RCV 时,STATUS都会返回警告。如果无错误或警告处于未决状态, 则 STATUS 的值为“0”。 复位 S_RCV 指令后,还会输出 NDR 和ERROR/STATUS (LEN == 16#00)(请参见时序图)。 如果出现错误,则复位二进制结果 BR。如果块已完成且无错,则二进制结果的状态为“1”。
在区域“函数代码 FC 02 的 Modbus 寻址的转 换”(Conversion of the Modbusaddresses with function code FC 02) 的规范中组态的“从/到”组合 无效。 (存储器位和输入区域)。驱动程序尚未就绪。 更正驱动程序的参数分配。 0E27 在区域“函数代码 FC 01、05、15 的 Modbus 寻址的转换”(Conversion of the Modbus addresses with function code FC 01,05, 15) 的规范中的组态出现重 叠。 (存储器位、输出、定时器和计数器的区域)。 驱动程序尚未就绪。 更正驱动程序的参数分配。0E28 在区域“函数代码 FC 02 的 Modbus 寻址的转 换”(Conversion of the Modbusaddresses with function code FC 02) 的规范中的组态出现重叠。 (存储器位和输入区域)。驱动程序尚未就绪。 更正驱动程序的参数分配。 0E2E 读取接口参数文件时出错。 驱动程序尚未就绪。 重新启动 CP(Power_On)。 0E30 数据传送到 CPU 期间发生内部错误: 意外的被动确认。 如果只是间断性地发生,可以忽略。 0E31数据传送到 CPU 的过程中超时。 检查 CP-CPU 接口。 0E32 通过 RCV 将数据传送到 CPU 期间出错:确切的故障原因(详细错误)在此条目前的 SYSTAT 中。 检查 CP-CPU 接口。 0E33 数据传送到 CPU期间发生内部错误: 自动化设备的状态非法 检查 CP-CPU 接口。 : 0E38 使用函数代码 FC 01 或 FC 02 访问SIMATIC 区域“存 储器位、输出、定时器、计数器、输入”时出错: 例如,输入不可用或读取尝试超出区域限制范围。 检查所寻址的SIMATIC 区域是否存在,以 及所做的访问尝试是否超出范围限制。 0E39 使用函数代码 FC 03、04、06、16 访问SIMATIC“数 据块”区域时出错: 数据块不可用或长度不足。 检查所寻址的数据块是否存在,以及该数 据块是否足够长。
使用函数代码 FC 05、15执行写作业时出错: MODBUS 指令的背景数据块不存在或长度不足。 检查 MODBUS 通信指令的参数中分配的背景数据块是否存在,以及长度是否足够。 0E3B Modbus 通信指令执行写作业时发生超时(等待确 认)。 检查连接组态以及CP-CPU 接口 (SFB SEND);如有必要,请重新装载 MODBUS 通信指令。 0E3C 此驱动程序的作业非法。 仅允许SFB SEND 和 STATUS(仅适用于 CP 441-2)。 0E50 对于基于字的 SIMATIC 定时器/计数器区域,来自于产生的 Modbus 地址的其余位数不等于 0。 仅使用可产生有效位数的 MODBUS 地址。 0E51 接收到的 Modbus地址超出了组态的“从/到”区域 范围。 仅将先前已在组态中定义的地址用作请求 消息帧中的地址信息。 0E52 • 在 Modbus主站系统进行的访问尝试过程中超出 了 SIMATIC 区域限制: 产生的 DB 号 < 1 •对尚未释放的区域进行写访问(组态) • 对通信指令的背景数据块进行写访问 限制对有效 SIMATIC 存储区的访问范围。 0E53 在Modbus 主站系统进行的访问尝试过程中超出了 SIMATIC 区域限制: 例如,构成产生的 DB 号 (> 65535)时溢出 限制对有效 SIMATIC 存储区的访问范围。 0E54 访问超出组态的区域,或访问超出 SIMATIC 区域。 限制对有效SIMATIC 存储区的访问范围。 0E55 不允许对此 SIMATIC 存储区进行写访问。 只能写 SIMATIC存储器位,输出数据区域。 0E56 数据链路无法进行操作,因为通信指令未激活。 在 STEP 7 用户程序中以循环时间间隔调用MODBUS 通信指令。 如有必要,重新初始化通信指令。 0E57 在通信指令中执行 MODBUS 函数代码时发生错误。分析具体原因。参数 声明 数据类型 说明 EN_R INPUT BOOL 启用数据读取 R INPUT BOOL 取消作业取消正在进行的作业。 接收被禁止。 LADDR INPUT INT ET 200S 1SI 模块的起始地址 起始地址从 STEP 7获取。 DB_NO INPUT INT 数据块号 接收数据块号:依 CPU 而定,不允许为 零 DBB_NO INPUT INT数据字节号(接收数据) S7-1500: 0 ≤ DBB_NO 且 DBB_NO + LEN ≤ 数据块大小 S7-300/400:0 ≤ DBB_NO 且 DBB_NO + LEN < 8190 NDR 1 OUTPUT BOOL作业已完成且无错,数据已接收 STATUS 参数 == 16#00 ERROR 1 OUTPUT BOOL 作业已取消但有错误STATUS 参数 (页 9036)包含错误信息。 LEN 1 OUTPUT INT 已接收消息帧的长度 1 ≤ LEN ≤224 按字节数指定 STATUS 1 OUTPUT WORD 错误规范 如果 ERROR == 1,则 STATUS 参数(页 9036)包含错误信息。 COM_RST IN_OUT BOOL 指令重新启动 1接收作业成功完成后,NDR、ERROR、LEN 和 STATUS 参数仍在一个 CPU 周期的时间内可 用。数据区中的分配 S_RCV指令与 I_RCV 背景数据块结合使用。 调用时包含 DB 号。禁止访问背景数据块中的 数据。 说明 例外:如果出现错误 STATUS== W#16#1Exx,可以检查 SFCERR 变量以获得其它详细信息。 该错误变量必须通过对背景数据块进行符号访问来装载。 启动S_RCV 指令的 COM_RST 参数用于向指令报告启动。 在启动 OB 中将参数 COM_RST 设置为 1。在循环模式中调用指令,无需设置或复位 COM_RST 参数。 如果设置了 COM_RST 参数: • 该指令获取有关 ET 200S1SI 模块的信息(I/O 区域中的字节数,无论是否为分布式 I/O)。 • 该指令会复位本身,取消之前启动的任何作业(在上一次CPU 切换为 STOP 之前)。 该指令获取有关 ET 200S 1SI 模块的信息后,会自动复位 COM_RST 参数。