应用下图说明了如何使用此处说明的指令在已组态连接上进行双向数据传送。指定 CPU 上的数据区 调用指令时,将传送 CPU中数据区的地址和长度。请记住,数据区的Zui大长度将取决于正 在使用的指令的类型和版本。 • AG_SEND 和 AG_RECV 截至版本V3.0 的指令,Zui多可以发送或接收 240 个字节。当前版本允许 S7300 具有Zui多 8192 个字节的数据区。对于S7400,AG_LSEND/AG_LRECV 必须仍用于较大的数据区。 • AG_LSEND/AG_LRECV 使用 S7-400的 CP 及较早版本的 S7-300 的 CP 时,只能通过 AG_LSEND 或 AG_LRECV 传 送较大的数据区。请在 CP的产品信息中检查数据区的长度。 • AG_SSEND/AG_SRECV 当支持 PROFINET 通信的 S7−400 的 CP与版本为 V5.1 起的 CPU 一起工作时,可使用 AG_SSEND 或 AG_SRECV 以较高的传输速度传送数据(不适用于 CP443−1 Advanced 6GK7 443–1EX41–0XE0)。 可以在 CP 手册中查看从 V5.1 版本起CPU 支持哪些 CP 类型(“使用要求”部分)。 下表显示了各种不同连接类型的限制值。
说明 有关可通过较旧版本的以太网CP 进行传送的数据区的长度信息,请参见所使用的以太网 CP 的产品信息/手册。 在无作业报头时使用在指定的连接上,由连接组态指定地址和作业参数。在通过 AG_SEND / AG_LSEND / AG_SSEND 发送数据或通过AG_RECV / AG_LRECV / AG_SRECV 接收数据时,用户程序只提供 UDP 数据区中的用户数据。 使用报头 自由的UDP 连接要求在用户数据区中有一个作业报头。 下面的示意图说明了作业缓冲区的结构以及作业报头中参数的含义和位置(高字节/低字节)。•在图(十六进制条目)中,使用下列 IP 地址作为实例:142.11.40.35; • 对于端口地址1003,应输入下列内容:对于高字节:03H;对于低字节:EBH。 • 用户数据区Zui多可为 2048 个字节。Zui多可传送 2042个字节的用户数据。为作业报头保 留 6 个字节。 请注意,指令调用中指定的数据长度(LEN 参数)必须包括报头和用户数据!只有在对作业进行确认之后才能修改调用参数 说明 一旦触发了作业,只能在指令通过 DONE=1 或 ERROR=1确认作业完成后,才能更改 AG_SEND 或 AG_RECV 指令的调用接口的调用参数。 如果不遵守该规则,则可能因错误而中止作业。指令调用接口上的状态显示;AG_SEND/AG_RECV 的特殊情况 (S7-300*) 以下行为仅适用于自版本 V4.0起带程序块的 S7-300。 使用 AG_SEND 和 AG_RECV,您会接收到下列表示提到的运行状况的状态代码: • CP 处于STOP 状态。 • 未组态连接。 • 未建立连接。 • 连接已中止。 代码: • AG_SEND:DONE=0;ERROR=1;Status=8183H • AG_RECV: DONE=0; ERROR=0;Status=8180H or DONE=0; ERROR=1;Status=8183HAG_SEND/AG_LSEND/AG_SSEND (S7-300, S7-400)AG_SEND/AG_LSEND/AG_SSEND(工业以太网) (S7-300, S7-400) 说明AG_SEND/AG_LSEND/AG_SSEND 将数据传递到以太网 CP,用于通过已组态连接进行传送。所选择的数据区可以是一个位存储器区或一个数据块区。 如果可以通过以太网发送整个用户数据区,则会指示无错执行。 注:除非声明,否则下面的所有信息对 AG_SEND、AG_LSEND 和 AG_SSEND 都适用。 调用 FBD表达式中的调用接口AG_SEND/AG_LSEND/AG_SSEND 的参数 (IE) (S7-300, S7-400)形式参数的说明 下表对 AG_SEND/AG_LSEND/AG_SSEND 指令的所有形式参数进行了说明: 参数 声明 数据类型取值范围 说明 ACT INPUT BOOL 0,1 如果在 ACT=1 时对指令进行调用,则会从 SEND 参 数指定的 ISO传输数据区中发送 LEN 个字节。 如果在 ACT = 0 时调用该指令,则更新状态代码 DONE、ERROR 和 STATUS。ID INPUT INT 1,2...64 (S7-400) 1,2...16 (S7-300) 在参数 ID 中指定连接的连接数。LADDR INPUT WORD 模块起始地址 如果通过 STEP 7 组态 CP,则会在组态表中显示模 块起始地址。在此指定该地址。 SEND INPUT ANY 指定地址和长度 数据区的地址指向下列两个位置之一: • 存储器位区 • 数据块区LEN INPUT INT 在 ISO 传输和 ISO‐ onTCP/TCP 上: 1、2 到 8192(或Zui 大为“为 SEND参数 指定的长度”) 在 UDP 上: 1、2 到 2048(或Zui 大为“为 SEND 参数 指定的长度”)要通过该作业从数据区发送的字节数目。 可能的 数值范围为 1 至 SEND 参数中指定的长度。 • 请注意指令的类型: – 对于S7-300 AG_SEND 的当前版本Zui多允许传送 8192 个 字节(对于 UDP 来说为 2048 个字节)。 – 对于S7-400 使用 AG_SEND 时,会将数据区限制为Zui多 240 个字节。 请注意 S7-400 的下列事项: •通过较短的数据记录提高性能: 传送Zui多为 240 字节的数据记录能带来更好的 性能! 这在任何条件下均适用,与所使用的指 令类型无关(AG_SEND/AG_LSEND)。 • 对于 AG_SSEND,将数据区限制为Zui大 1452 个字节。参数 声明 数据类型取值范围 说明 DONE OUTPUT BOOL 0: 作业处于活动状态 1: 作业已完成 该状态参数指示是否无错完成作业。 只要DONE = 0,就不会触发其它作业。 如果接受 该作业,则 CP 会将 DONE 设置为 0。 ERROR OUTPUT BOOL0: - 1:错误 故障代码 对于与 DONE 和 STATUS 参数一起使用时的含义, 请参见参数 DONE、ERROR 和STATUS (页 9085) STATUS OUTPUT WORD 状态代码 对于与 DONE 和 ERROR参数一起使用时的含义, 请参见参数 DONE、ERROR 和 STATUS 参数 DONE、ERROR 和 STATUS(S7-300, S7-400) 条件代码 下表显示了根据 DONE、ERROR 和 STATUS形成的条件代码,其中这些参数必须由用户程序 进行评估。 说明 对于 STATUS 中以 8FxxH编码的条目,请参见引用的系统程序块说明中输出参数 RET_VAL 的 相关信息 可在 STEP 7中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。 表格 4-410 AG_SEND/AG_LSEND/AG_SSEND状态代码 DONE ERROR STATUS 含义 1 0 0000H 无错完成作业。 0 0 0000H 没有任何作业在执行中。 00 8181H 激活作业。 0 1 7000H 此条件代码仅适用于 S7-400: 在 ACT=0 时调用该指令;尚未处理作业。 01 8183H 以太网 CP 上没有任何组态或尚未启动 ISO/TCP 服务。DONE ERROR STATUS 含义 0 18184H • 为 SEND 参数指定非法数据类型。 • 系统错误(源数据区不正确)。 0 1 8185H LEN 参数长度大于SEND 源区域。 0 1 8186H ID 参数无效。 • ID != 1、2 到 16 (S7-300) • ID != 1、2到 64 (S7-400)。 0 1 8302H 目标站上没有接收源。 接收站无法尽快处理已接收数据,或尚未使任何接收 源可用。 01 8304H 不建立连接。 在等待至少 100 毫秒之后,才能尝试发送作业。 0 1 8311H不能到达指定的以太网地址的目标站。 0 1 8312H CP 上的以太网错误。 0 1 8F22H 源区域无效,例如: 该区在 DB中不存在 LEN 参数 < 0 0 1 8F24H 读取参数时发生区域错误。 0 1 8F28H 读取参数时发生队列错误。 01 8F32H 参数包含的 DB 编号太大。 0 1 8F33H 错误 DB 编号 0 1 8F3AH 没有装载区域(DB)。 0 18F42H 从 I/O 区域中读取参数超时。 0 1 8F44H 阻止在指令执行期间对要读取的参数进行访问。 0 1 8F7FH内部错误,例如,非法 ANY 引用 例如,参数 LEN=0。 0 1 8090H • 带该模块起始地址的模块不存在; •所使用的指令与正在使用的系统系列不匹配(请记住为 S7300 和 S7400 使 用不同的指令)。 0 1 8091H模块起始地址不是一个双字边界。 0 1 8092H 在 ANY 引用中,指定了一个非 BYTE 的类型。 (仅 S7-400) 0 180A4H 没有建立 CPU 与 CP 之间的通讯总线连接。 (对于较新的 CPU 版本) 0 1 80B0H该模块不能识别数据记录。