s7-1200之间通信

2018年6月22日17:28:57 发表评论 3,423 阅读

S7-1200 可实现 CPU 与编程设备、HMI 和其它 CPU 之间的多种通信。

PROFINET

PROFINET 用于使用用户程序通过以太网与其它通信伙伴交换数据:

  • CPU 提供以下 PROFINET 和 PROFIBUS 支持:
    • 在 V3.0 中,PROFINET 支持 16 个最多具有 256 个子模块的 IO 设备。PROFIBUS 允许 3 个独立的 PROFIBUS DP 主站,支持 32 个最多具有 512 个子模块的 IO 设备。
    • 在 V2.2 中,PROFINET 支持 8 个最多具有 128 个子模块的 IO 设备(如果配置了八个或更少的 PROFIBUS 从站或子模块)。 PROFIBUS 在单个主站上最多支持16 个 PROFIBUS IO 设备,每个 IO 设备最多具有 256 个子模块。
  • S7 通信
  • 用户数据报协议 (UDP)
  • ISO on TCP (RFC 1006)
  • 传输控制协议 (TCP)

PROFINET RT IO 控制器

作为采用 PROFINET RT 的 IO 控制器,CPU 在本地 PN 网络上或通过 PN/DP 耦合器(连接器)提供以下支持。 有关详细信息,请参见 PROFIBUS 和 PROFINET International (PI)。

  • 在 V3.0 中,S7-1200 最多可与 16 个 PN 设备通信。
  • 在 V2.2 中,S7-1200 最多可与 8 个 PN 设备通信。

PROFIBUS

PROFIBUS 用于使用用户程序通过 PROFIBUS 网络与其它通信伙伴交换数据:

  • 借助 CM 1242-5,CPU 作为 PROFIBUS DP 从站运行。
  • 借助 CM 1243-5,CPU 作为 1 类 PROFIBUS DP 主站运行。
  •  支持的异步通信连接数
  • 在 V3.0 中,PROFIBUS DP 从站、PROFIBUS DP 主站以及 ASi(3 个左侧通信模块)和 PROFINET 是独立的。
  • 在 V2.2 中,CPU 提供以下 PROFINET 和 PROFIBUS 支持:
  • 16 台设备和 256 个子模块,以及最多 16 台 PROFIBUS DP 从站设备和 256 个子模块(如果未组态任何 PROFINET IO 设备或子模块)。

说明

在 V2.2 中共有 16 台 PROFINET 和 PROFIBUS 设备,其中包括以下内容:

  1. 通过 PROFIBUS DP 主站 (CM 1243-5) 连接的 PROFIBUS DP 从站模块
  2. 任何与 CPU 相连接的 PROFIBUS DP 从站模块 (CM 1242-5)
  3. 通过 PROFINET 端口与 CPU 连接的任何 PROFINET 设备

例如,对于采用一个 CM 1243-5 主站模块和两个 CM 1242-5 从站模块,共三个PROFIBUS CM 的配置,PROFIBUS DP 主站 (CM 1243-5) 能够访问的最大从站模块的数量将降为 14。

AS-i: 通过 S7-1200 CM 1243-2 AS-i 主站可将 AS-i 网络连接到 S7-1200 CPU。

CPU 至 CPU S7 通信

远程服务通信

在通过 GPRS 的 TeleService 中,安装了 STEP 7 的工程师站通过 GSM 网络 Internet 和与具有 CP 1242-7 的 SIMATIC S7-1200 站进行通信。该连接通过用作中介并连接到Internet 的远程控制服务器运行。

支持的异步通信连接数

对于 PROFINET 和 PROFIBUS,CPU 最多可支持下列数量的并发异步通信连接:

  1. 8 个用于开放式用户通信(主动或被动)的连接: TSEND_C、TRCV_C、TCON、TDISCON、TSEND 和 TRCV。
  2. 用于服务器 GET/PUT 数据的 3 个 CPU 至 CPU S7 连接。
  3. 用于客户端 GET/PUT 数据的 8 个 CPU 至 CPU S7 连接。

说明

S7-1200、S7-300 和 S7-400 CPU 使用 GET 和 PUT 指令进行 CPU 至 CPU S7 通信。 S7-200 CPU 使用 ETHx_XFER 指令进行 CPU 至 CPU S7 通信。

HMI 连接: CPU 提供专用的 HMI 连接,以支持最多 3 个 HMI 设备。 (最多可以有2 个 SIMATIC 精智面板。) 支持的 HMI 总数受组态中 HMI 面板类型的影响。 例如,可以将最多 3 个 SIMATIC 基本面板连接到 CPU,或者最多可以连接两个SIMATIC 精智面板与一个附加基本面板。

  • PG 连接: CPU 提供连接以支持 1 个编程设备 (PG)。
  • Webserver (HTTP) 连接: CPU 提供用于 Webserver 的连接。

PROFINET

本地/伙伴连接

本地/伙伴(远程)连接定义两个通信伙伴的逻辑分配以建立通信服务。 连接定义了以下内容:

  • 涉及的通信伙伴(一个主动,一个被动)
  • 连接类型(例如,PLC、HMI 或设备连接)
  • 连接路径

通信伙伴执行指令来设置和建立通信连接。 用户使用参数指定主动和被动通信端点伙伴。 设置并建立连接后,CPU 会自动保持和监视该连接。有关组态连接参数的信息,请参见 “组态本地/伙伴连接”。

如果连接终止(例如,因断线),主动伙伴将尝试重新建立组态的连接。 不必再次执行通信指令。

CPU 可使用标准 TCP 通信协议与其它 CPU、编程设备、HMI 设备和非 Siemens 设备通信。

 CPU 连接到编程设备

CPU 连接到编程设备

CPU 连接到 HMI

CPU 连接到 HMI

CPU 连接到另一个 CPU

CPU 连接到另一个 CPU

以太网交换

CPU 1211C、1212C 和 1214C 上的 PROFINET 端口不包含以太网交换设备。 编程设备或 HMI 与 CPU 之间的直接连接不需要以太网交换机。 不过,含有两个以上的 CPU 或

HMI 设备的网络需要以太网交换机。

① CPU 1215C

s7-1200之间通信-4 s7-1200之间通信-5

② CSM1277 以太网交换机

CPU 1215C 没有内置 2 端口以太网交换机。 您可使用具有 CPU 1215C 和另两个 S7- 1200 CPU 的网络。 也可以使用安装在机架上的 CSM1277 4 端口以太网交换机来连接多个 CPU 和 HMI 设备。

开放式用户通信

PROFINET 指令的连接 ID

将 TSEND_C、TRCV_C 或 TCON PROFINET 指令插入到用户程序中时,STEP 7 会创建一个背景数据块,以组态设备之间的通信通道(或连接)。 使用指令的“属性”(Properties) 来组态连接的参数。 这些参数中有该连接的连接 ID。

  1. 连接 ID 对于 CPU 必须是唯一的。 创建的每个连接必须具有不同的 DB 和连接 ID。
  2. 本地 CPU 和伙伴 CPU 都可以对同一连接使用相同的连接 ID 编号,但连接 ID 编号不需要匹配。 连接 ID 编号只与各 CPU 用户程序中的 PROFINET 指令相关。
  3. CPU 的连接 ID 可以使用任何数字。 但是,从“1”开始按顺序组态连接 ID 可以很容易地跟踪特定 CPU 使用的连接数。

说明

用户程序中的每个 TSEND_C、TRCV_C 或 TCON 指令都创建一个新连接。 为每个连接使用正确的连接 ID 非常重要。

以下示例显示了两个 CPU 之间的通信,这两个 CPU 使用 2 个单独的连接来发送和接收数据。

CPU_1 中的 TSEND_C 指令通过第一个连接(CPU_1 和 CPU_2 上的“连接 ID 1”) 与 CPU_2 中的 TRCV_V 链接。

CPU_1 中的 TRCV_C 指令通过第二个连接(CPU_1 和 CPU_2 上的“连接 ID 2”)与CPU_2 中的 TSEND_C 链接。

s7-1200之间通信-6

① CPU_1 上的 TSEND_C 创建一个连接并为该连接分配一个连接 ID(CPU_1 的连接 ID 1)。

② CPU_2 上的 TRCV_C 为 CPU_2 创建连接并分配连接 ID(CPU_2 的连接 ID 1)。

③ CPU_1 上的 TRCV_C 为 CPU_1 创建第二个连接并为该连接分配不同的连接 ID(CPU_1 的连接 ID 2)。

④ CPU_2 上的 TSEND_C 创建第二个连接并为该连接分配不同的连接 ID(CPU_2 的连接 ID 2)。

以下示例显示了两个 CPU 之间的通信,这两个 CPU 使用 1 个连接来发送和接收数据。

  • 每个 CPU 都使用 TCON 指令来组态两个 CPU 之间的连接。
  • CPU_2 中的 TSEND 指令通过由 CPU_1 中的 TCON 指令组态的连接 ID(“连接 ID 1”)链接到 CPU_2 中的 TRCV 指令。 CPU_2 中的 TRCV 指令通过由 CPU_2 中的TCON 指令组态的连接 ID(“连接 ID 1”)链接到 CPU_1 中的 TSEND 指令。
  • CPU_2 中的 TSEND 指令通过由 CPU_2 中的 TCON 指令组态的连接 ID(“连接 ID 1”)链接到 CPU_1 中的 TRCV 指令。 CPU_1 中的 TRCV 指令通过由 CPU_1 中的TCON 指令组态的连接 ID(“连接 ID 1”)链接到 CPU_2 中的 TSEND 指令。

s7-1200之间通信-7

① CPU_1 上的 TCON 创建一个连接并在 CPU_1 上为该连接分配连接 ID(ID=1)。

② CPU_2 上的 TCON 创建一个连接并在 CPU_2 上为该连接分配连接 ID(ID=1)。

③ CPU_1 上的 TSEND 和 TRCV 使用CPU_1 上的 TCON 创建的连接 ID(ID=1)。CPU_2 上的 TSEND 和 TRCV 使用CPU_2 上的 TCON 创建的连接 ID(ID=1)。

如以下示例所示,还可以使用单个 TSEND 和 TRCV 指令通过由 TSEND_C 或 TRCV_C 指令创建的连接进行通信。 TSEND 和 TRCV 指令本身不会创建新连接,因此必须使用由 TSEND_C、TRCV_C 或 TCON 指令创建的 DB 和连接 ID。

① CPU_1 上的 TSEND_C 创建一个连接并为该连接分配连接 ID (ID=1)。

② CPU_2 上的 TRCV_C 创建一个连接并在 CPU_2 上为该连接分配连接 ID(ID=1)。

③ CPU_1 上的 TSEND 和 TRCV 使用CPU_1 上的 TSEND_C 创建的连接

协议

CPU 的集成 PROFINET 端口支持多种以太网网络上的通信标准:

  • 传输控制协议 (TCP)
  • ISO on TCP (RFC 1006)
  • 用户数据报协议 (UDP)

表格 10- 1 协议以及用于每种协议的通信指令

协议 用途示例 在接收区输入数据 通信指令 寻址类型
TCP CPU 与 CPU 通信帧传输 特殊模式 仅 TRCV_C 和

TRCV

将端口号分配给本地

(主动)和伙伴(被动)设备

指定长度的数据接收 TSEND_C、

TRCV_C、TCON、

TDISCON、TSEND

和 TRCV

ISO on TCP CPU 与 CPU 通信消息的分割和重组 特殊模式 仅 TRCV_C 和

TRCV

将 TSAP 分配给本地

(主动)和伙伴(被动)设备

协议控制 TSEND_C、

TRCV_C、TCON、

TDISCON、TSEND

和 TRCV

UDP CPU 与 CPU 通信用户程序通信 用户数据报协议 TUSEND 和 TURCV 将端口号分配给本地

(主动)和伙伴(被动)设备,但不是专

用连接

S7 通信 CPU 与 CPU 通信

从 CPU 读取数据/ 向 CPU 写入数据

指定长度的数据传输和接收 GET 和 PUT 将 TSAP 分配给本地

(主动)和伙伴(被动)设备

PROFINET RT CPU 与

PROFINET IO 设

备通信

指定长度的数据传输和接收 内置 内置

特殊模式

通常,TCP 和 ISO-on-TCP 接收指定长度的数据包(1 到 8192 字节)。 但 TRCV_C 和TRCV 通信指令还提供“特殊”通信模式,可接收可变长度的数据包(1 到 1472 字节)。

说明

如果将数据存储在“优化”DB(仅符号访问)中,则只能接收数据类型为 Byte、Char、USInt 和 SInt 的数组中的数据。要针对特殊模式组态 TRCV_C 或 TRCV 指令,可将 LEN 参数设置为 65535 (0xFFFF)。如果在特殊模式下并未频繁调用 TRCV_C 或 TRCV 指令,则可在一次调用中接收多个数据包。 例如: 如果要通过一次调用接收五个 100 字节的数据包,TCP 可将这五个数据包打包成一个 500 字节的数据包一起传送,而 ISO-on-TCP 则可将该数据包重组成五个100 字节的数据包。

TCP 和 ISO on TCP

传输控制协议 (TCP) 是由 RFC 793 描述的一种标准协议: 传输控制协议。 TCP 的主要用途是在过程对之间提供可靠、安全的连接服务。 该协议有以下特点:

由于它与硬件紧密相关,因此它是一种高效的通信协议它适合用于中等大小或较大的数据量(最多 8192 字节)它为应用带来了更多的便利,特别是对于错误恢复、流控制和可靠性。它是一种面向连接的协议它可以非常灵活地用于只支持 TCP 的第三方系统有路由功能只能应用静态数据长度。消息会被确认。使用端口号对应用程序寻址。大多数用户应用协议(例如 TELNET 和 FTP)都使用 TCP。由于使用 SEND/RECEIVE 编程接口的缘故,需要编程来进行数据管理。

基于传输控制协议 (TCP) 的国际标准组织 (ISO) (RFC 1006) (ISO on TCP) 是一种能够将ISO 应用移植到 TCP/IP 网络的机制。该协议有以下特点:

它是与硬件关系紧密的高效通信协议

它适合用于中等大小或较大的数据量(最多 8192 字节)与 TCP 相比,它的消息提供了数据结束标识符并且它是面向消息的。

具有路由功能;可用于 WAN可用于实现动态数据长度。由于使用 SEND/RECEIVE 编程接口的缘故,需要编程来进行数据管理。

通过传输服务访问点 (TSAP, Transport Service Access Point),TCP 协议允许有多个连接访问单个 IP 地址(最多 64K 个连接)。借助 RFC 1006,TSAP 可唯一标识连接到同一个 IP 地址的这些通信端点连接。

TSEND_C 和 TRCV_C

TSEND_C 指令兼具 TCON、TDISCON 和 TSEND 指令的功能。 TRCV_C 指令兼具TCON、TDISCON 和 TRCV 指令的功能。 最少可传送 (TSEND_C) 或接收 (TRCV_C) 1 个字节的数据,最多 8192 字节。TSEND_C 不支持传送布尔位置的数据,TRCV_C 也不会在布尔位置中接收数据。 有关使用这些指令传送数据的信息,请参阅 数据一致性 (页 154)部分。

说明

初始化通信参数

插入 TSEND_C 或 TRCV_C 指令之后,可使用 该指令 (页 129)的“属性”(Properties) 来组态通信参数。 在巡视窗口为通信伙伴输入参数时,STEP 7 会在指令的背景数据块中输入相应数据。如果要使用多重背景数据块,必须在两个 CPU 上手动组态该 DB。表格 10- 2 TSEND_C 和 TRCV_C 指令

LAD/FBD SCL 说明
s7-1200之间通信-8 "TSEND_C_DB"(

req:=_bool_in_, cont:=_bool_in_, len:=_uint_in_, done=>_bool_out_, busy=>_bool_out_, error=>_bool_out_, status=>_word_out_, connect:=_struct_inout_, data:=_variant_inout_, com_rst:=_bool_inout_);

TSEND_C 可与伙伴站建立 TCP 或 ISO on TCP 通信连接、发送数据,并且可以终止该连接。 设置并建立连接后,CPU

会自动保持和监视该连接。

s7-1200之间通信-9 "TRCV_C_DB"(

en_r:=_bool_in_, cont:=_bool_in_, len:=_uint_in_, done=>_bool_out_, busy=>_bool_out_, error=>_bool_out_, status=>_word_out_, rcvd_len=>_uint_out_, connect:=_struct_inout_, data:=_variant_inout_, com_rst:=_bool_inout_);

TRCV_C 可与伙伴 CPU 建立 TCP 或 ISO on TCP 通信连接,可接收数据,并且可以终止该连接。 设置并建立连接后,CPU

会自动保持和监视该连接。

1、 STEP 7 会在插入指令时自动创建 DB。

表格 10- 3 TSEND_C 和 TRCV_C 参数的数据类型

参数和类型 数据类型 说明
REQ (TSEND_C) IN Bool 控制参数 REQ 在上升沿启动具有 CONNECT 中所述连接的发送作业。
EN_R (TRCV_C) IN Bool 启用接收的控制参数: EN_R = 1 时,TRCV_C 准备接收。 处理接收作业。
CONT IN Bool
  • 0: 断开连接
  • 1: 建立并保持连接
LEN IN UInt 要发送 (TSEND_C) 或接收 (TRCV_C) 的最大字节数:

  • 默认 = 0: DATA 参数确定要发送 (TSEND_C) 或接收 (TRCV_C) 的数据长度。
  • 特殊模式 = 65535: 设置可变长度的数据接收

(TRCV_C)。

参数和类型 数据类型 说明
CONNECT IN_OUT TCON_Param 指向连接描述的指针
DATA IN_OUT Variant
  • 包含要发送数据的地址和长度 (TSEND_C)
  • 包含接收数据的起始地址和最大长度 (TRCV_C)。
COM_RST IN_OUT Bool 允许重新启动指令:

  • 0: 不相关
  • 1: 完成函数块的重新启动,现有连接将终止。
DONE OUT Bool
  • 0: 作业尚未开始或仍在运行。
  • 1: 作业无错完成。
BUSY OUT Bool
  • 0: 作业完成。
  • 1: 作业尚未完成。 无法触发新作业。
ERROR OUT Bool 状态参数,可具有以下值:

  • 0: 无错误
  • 1: 处理时出错。 STATUS 提供错误类型的详细信息。
STATUS OUT Word 包括错误信息的状态信息。 (请参见下表中的“错误和状态参数”。)
RCVD_LEN (TRCV_C) OUT Int 实际接收到的数据量(字节)

说明

TSEND_C 指令需要通过 REQ 输入参数的上升沿来启动发送作业。 然后,BUSY 参数在处理期间会设置为 1。 发送作业完成时,将通过 DONE 或 ERROR 参数被设置为 1 并持续一个扫描周期进行指示。 在此期间,将忽略 REQ 输入参数的上升沿。

说明

LEN 参数的默认设置 (LEN = 0) 使用 DATA 参数来确定要传送的数据的长度。 确保TSEND_C 指令传送的 DATA 的大小与 TRCV_C 指令的 DATA 参数的大小相同。

TSEND_C 操作

下列功能说明了 TSEND_C 指令的操作:

  • 要建立连接,请在 CONT = 1 时执行 TSEND_C。
  • 成功建立连接后,TSEND_C 便会置位 DONE 参数一个周期。
  • 要终止通信连接,请在 CONT = 0 时执行 TSEND_C。连接将立即中止。 这还会影响接收站。 将在接收站关闭该连接,并且接收缓冲区内的数据可能会丢失。
  • 要通过建立的连接发送数据,请在 REQ 的上升沿执行 TSEND_C。 发送操作成功执行后,TSEND_C 便会置位 DONE 参数一个周期。
  • 要建立连接并发送数据,请在 CONT =1 且 REQ = 1 时执行 TSEND_C。发送操作成功执行后,TSEND_C 便会置位 DONE 参数一个周期。

TRCV_C 操作

下列功能说明了 TRCV_C 指令的操作:

  1. 要建立连接,请在参数 CONT = 1 时执行 TRCV_C。
  2. 要接收数据,请在参数 EN_R = 1 时执行 TRCV_C。参数 EN_R = 1 且 CONT = 1时,TRCV_C 连续接收数据。
  3. 要终止连接,请在参数 CONT = 0 时执行 TRCV_C。连接将立即中止且数据可能丢失。
  4. TRCV_C 处理与 TRCV 指令相同的接收模式。 下表说明了在接收区输入数据的方法。

表格 10- 4 将数据输入接收区

协议选项 将数据输入接收区 参数

“connection_type”

LEN 参数的值 RCVD_LEN 参数的值

(字节)

TCP 特殊模式 B#16#11 65535 1 到 1472
TCP 指定长度的数据接收 B#16#11 0(推荐)或 1 到 8192,

65535 除外

1 到 8192
ISO on TCP 特殊模式 B#16#12 65535 1 到 1472
ISO on TCP 协议控制 B#16#12 0(推荐)或 1 到 8192,

65535 除外

1 到 8192

说明

特殊模式

使用 TCP 或 ISO on TCP 协议时可以存在“特殊模式”。 用户通过将“65535”分配给 LEN参数来设置特殊模式。 接收区与 DATA 构成的区域相同。 接收数据的长度将输出到参数RCVD_LEN 中。

如果将数据存储在“优化”DB(仅符号访问)中,则只能接收数据类型为 Byte、Char、USInt 和 SInt 的数组中的数据。

说明

将包含“特殊模式”的 S7-300/400 STEP 7 项目导入 S7-1200 中在 S7-300/400 STEP 7 项目中,通过将“0”分配给 LEN 参数来选择“特殊模式”。 在 S7-1200 中,用户通过将“65535”分配给 LEN 参数来设置特殊模式。如果将包含“特殊模式”的 S7-300/400 STEP 7 项目导入 S7-1200 中,则必须将 LEN 参数更改为“65535”。

说明

由于 TSEND_C 采用异步处理,所以在 DONE 参数值或 ERROR 参数值为 TRUE 前,必须保持发送方区域中的数据一致。

对于 TSEND_C,参数 DONE 状态为 TRUE 表示数据已成功发送。 但并不表示连接伙伴CPU 实际读取了接收缓冲区。

由于 TRCV_C 采用异步处理,因此仅当参数 DONE = 1 时,接收方区域中的数据才一致。

表格 10- 5 TSEND_C 和 TRCV_C 指令的 BUSY、DONE 和 ERROR 参数

BUSY DONE ERROR 说明
TRUE 不相关 不相关 正在处理作业。
FALSE TRUE FALSE 作业已成功完成。
FALSE FALSE TRUE 作业因错结束。 出错原因可在 STATUS 参数中找到。
FALSE FALSE FALSE 未分配新作业。

Error 和 Status 参数

表格 10- 6 TSEND_C 和 TRCV_C 指令的 ERROR 和 STATUS 的条件代码

ERROR STATUS 说明
0 0000 作业已无错执行
0 7000 无激活的作业处理
0 7001 启动作业处理,正在建立连接,正在等待连接伙伴
0 7002 正在发送或接收数据
0 7003 正终止连接
0 7004 连接已建立并受到监视,无激活的作业处理
1 8085 LEN 参数的值大于允许的最大值。
1 8086 CONNECT 参数超出允许范围。
1 8087 已达到最大连接数;无法建立更多连接。
1 8088 LEN 参数对于在 DATA 中指定的存储区无效。
1 8089 CONNECT 参数未指向数据块。
1 8091 超出最大嵌套深度。
1 809A CONNECT 参数指向的字段与连接描述的长度不匹配。
1 809B 连接描述中的 local_device_id 与 CPU 的不匹配。
1 80A1 通信错误:

  • 尚未建立指定的连接
  • 当前正在终止指定的连接;无法通过该连接传输
  • 正在重新初始化接口
1 80A3 正在尝试终止不存在的连接
1 80A4 远程伙伴连接的 IP 地址无效。 例如,远程伙伴的 IP 地址与本地伙伴的 IP

地址相同。

1 80A5 连接 ID 已被使用。
1 80A7 通信错误: 在 TSEND_C 完成前调用了 TDISCON。
1 80B2 参数 CONNECT 指向使用关键字 UNLINKED 生成的数据块。
ERROR STATUS 说明
1 80B3 不一致的参数:

  • 连接描述错误
  • 本地端口(参数 local_tsap_id)已在另一个连接描述中存在。
  • 连接描述中的 ID 与作为参数指定的 ID 不同
1 80B4 使用 ISO on TCP (connection_type = B#16#12) 建立被动连接时,条件代码

80B4 提示您输入的 TSAP 不符合下列某一项地址要求:

  • 若是本地 TSAP 长度为 2 个字节且首字节的 TSAP ID 值为 E0 或 E1(十六进制),第二字节必须为 00 或 01。
  • 如果本地 TSAP 长度为 3 个或更多字节,且首字节的 TSAP ID 值为 E0 或 E1(十六进制),则第二字节必须为 00 或 01,且所有其它字节必须为有效的 ASCII 字符。
  • 如果本地 TSAP 长度为 3 个或更多字节,且首字节的 TSAP ID 值既不为

E0 也不为 E1(十六进制),则 TSAP ID 的所有字节都必须为有效的

ASCII 字符。

有效 ASCII 字符的字节值为 20 到 7E(十六进制)。

1 80B7 所传送数据的数据类型和/或长度与伙伴 CPU 上用于写入该数据的区域不相符。
1 80C3 所有连接资源都在使用。
1 80C4 临时通信错误:

  • 此时无法建立连接
  • 接口正在接收新参数
  • TDISCON 当前正在删除已组态连接。
1 8722 CONNECT 参数: 源区域无效: DB 中不存在该区域。
1 873A CONNECT 参数: 无法访问连接描述(例如,DB 不可用)
1 877F CONNECT 参数: 内部错误,如无效的 ANY 引用
1 893A 参数包含未装载的 DB 的编号。

以太网连接协议

每个 CPU 都集成了一个支持标准 PROFINET 通信的 PROFINET 端口。 TSEND_C、TRCV_C、TSEND 和 TRCV 指令均支持 TCP 和 ISO on TCP 以太网协议。

TCON、TDISCON、TSEND 和 TRCV

使用 TCP 和 ISO on TCP 协议的以太网通信

说明

TSEND_C 和 TRCV_C 指令

为帮助简化 PROFINET/以太网通信的编程,TSEND_C 指令和 TRCV_C 指令兼具TCON、TDISCON、TSEND 和 TRCV 指令的功能:

  • TSEND_C 兼具 TCON、TDISCON 和 TSEND 指令的功能。
  • TRCV_C 兼具 TCON、TDISCON 和 TRCV 指令的功能。

以下指令控制通信过程:

  • TCON 在客户机与服务器 (CPU) PC 之间建立 TCP/IP 连接。
  • TSEND 和 TRCV 发送和接收数据。
  • TDISCON 断开连接。

最少可传送 (TSEND) 或接收 (TRCV) 一个字节的数据,最多 8192 字节。 TSEND 不支持传送布尔位置的数据,TRCV 也不会在布尔位置中接收数据。

TCON、TDISCON、TSEND 和 TRCV 异步运行,即,作业处理需要多次执行指令来完成。 例如,执行参数 REQ = 1 的 TCON 指令来启动用于设置和建立连接的作业。然后, 另外执行 TCON 来监视作业进度并使用参数 DONE 来测试作业是否完成。

下表给出了 BUSY、DONE 和 ERROR 之间的关系。 使用该表可以确定当前作业状态。

表格 10- 7 BUSY、DONE 和 ERROR 参数之间的交互作用

BUSY DONE ERROR 说明
TRUE 不相关 不相关 正在处理作业。
FALSE TRUE FALSE 作业已成功完成。
FALSE FALSE TRUE 作业因错结束。 出错原因可在 STATUS 参数中找到。
FALSE FALSE FALSE 未分配新作业。

TCON 和 TDISCON

说明

初始化通信参数

插入 TCON 指令之后,可使用 该指令 (页 129)的“属性”(Properties) 来组态通信参数。 在巡视窗口为通信伙伴输入参数时,STEP 7 会在指令的背景数据块中输入相应数据。

如果要使用多重背景数据块,必须在两个 CPU 上手动组态该 DB。

表格 10- 8 TCON 和 TDISCON 指令

LAD/FBD 说明
s7-1200之间通信-10 "TCON_DB"(

req:=_bool_in_, ID:=_undef_in_, done=>_bool_out_, busy=>_bool_out_, error=>_bool_out_, status=>_word_out_, connect:=_struct_inout_);

TCP 和 ISO on TCP: TCON 启动从

CPU 到通信伙伴的通信连接。

s7-1200之间通信-11 "TDISCON_DB"(

req:=_bool_in_, ID:=_word_in_, done=>_bool_out_, busy=>_bool_out_, error=>_bool_out_, status=>_word_out_);

TCP 和 ISO on TCP: TDISCON 终止从

CPU 到通信伙伴的通信连接。

1 STEP 7 会在插入指令时自动创建 DB。

表格 10- 9 TCON 和 TDISCON 参数的数据类型

参数和类型 数据类型 说明
REQ IN Bool 控制参数 REQ 启动用于建立通过 ID 指定的连接的作业。该作业在上升沿时启动。
ID IN CONN_OUC 引用要建立的 (TCON) 或终止的 (TDISCON)、连接
(Word) 到远程伙伴或在用户程序和操作系统通信层之间的
连接。 ID 必须与本地连接描述中的相关参数 ID 相
同。
值范围: W#16#0001 到 W#16#0FFF
参数和类型 数据类型 说明
CONNECT (TCON) IN_OUT TCON_Param 指向连接描述的指针
DONE OUT Bool
  • 0: 作业尚未开始或仍在运行。
  • 1: 作业无错完成。
BUSY OUT Bool
  • 0: 作业完成。
  • 1: 作业尚未完成。 无法触发新作业。
ERROR OUT Bool 状态参数,可具有以下值:

  • 0: 无错误
  • 1: 处理时出错。 STATUS 提供错误类型的详细信息。
STATUS OUT Word 包括错误信息的状态信息。 (请参见下表中的错误和状态条件代码。)

两个通信伙伴都执行 TCON 指令来设置和建立通信连接。 用户使用参数指定主动和被动通信端点伙伴。 设置并建立连接后,CPU 会自动保持和监视该连接。

如果连接终止(例如,因断线或远程通信伙伴原因),主动伙伴将尝试重新建立组态的连接。 不必再次执行 TCON。

执行 TDISCON 指令或 CPU 切换到 STOP 模式后,会终止现有连接并删除所设置的连接。 要设置和重新建立连接,必须再次执行 TCON。

表格 10- 10 ERROR 和 STATUS 指令的 TCON 和 TDISCON 的条件代码

ERROR STATUS 说明
0 0000 连接已成功建立。
0 7000 无激活的作业处理
0 7001 启动作业处理;正在建立连接 (TCON) 或正在终止连接 (TDISCON)
0 7002 后续调用(与 REQ 无关);正在建立连接 (TCON) 或正在终止连接

(TDISCON)

1 8086 参数 ID 超出允许的地址范围。
1 8087 TCON:已达到最大连接数;无法建立更多连接。
1 809B TCON:连接描述中的 local_device_id 与 CPU 不匹配。
1 80A1 TCON:连接或端口已被用户占用。
1 80A2 TCON:本地端口或远程端口已被系统占用。
ERROR STATUS 说明
1 80A3 正在尝试重新建立现有连接 (TCON) 或终止不存在的连接 (TDISCON)。
1 80A4 TCON:远程连接端点的 IP 地址无效;可能与本地 IP 地址匹配。
1 80A5 TCON:连接 ID 已被使用。
1 () 80A7 TCON:通信错误: 在 TCON 完成前执行了 TDISCON。TDISCON 必须先完全终止 ID 引用的连接。
1 80B4 TCON:使用 ISO on TCP (connection_type = B#16#12) 建立被动连接时, 条件代码 80B4 提示您输入的 TSAP 不符合下列某一项地址要求:

  • 如果本地 TSAP 长度为 2 个字节且首字节的 TSAP ID 值为 E0 或 E1

(十六进制),则第二字节必须为 00 或 01。

  • 如果本地 TSAP 长度为 3 个或更多字节,且首字节的 TSAP ID 值为 E0 或 E1(十六进制),则第二字节必须为 00 或 01,且所有其它字节必须为有效的 ASCII 字符。
  • 如果本地 TSAP 长度为 3 个或更多字节,且首字节的 TSAP ID 值既不为

E0 也不为 E1(十六进制),则 TSAP ID 的所有字节都必须为有效的

ASCII 字符。

有效 ASCII 字符的字节值为 20 到 7E(十六进制)。

1 80B6 TCON:参数 connection_type 的参数分配错误
1 80B7 TCON:所传送数据的数据类型和/或长度与伙伴 CPU 上用于写入该数据的区域不相符。
1) 80B8 TCON:本地连接描述中的参数与参数 ID 不同。
1 80C3 TCON:所有连接资源都在使用。
1 80C4 临时通信错误:

  • 此时无法建立连接 (TCON)。
  • TDISCON (TCON) 当前正在删除已组态连接。
  • 当前正在建立连接 (TDISCON)。
  • 接口正在接收新参数(TCON 和 TDISCON)。

TSEND 和 TRCV

表格 10- 11 TSEND 和 TRCV 指令

LAD/FBD SCL 说明
s7-1200之间通信-12 "TSEND_DB"(

req:=_bool_in_, ID:=_word_in_, len:=_uint_in_, done=>_bool_out_, busy=>_bool_out_, error=>_bool_out_, status=>_word_out_, data:=_variant_inout_);

TCP 和 ISO on TCP: TSEND 通过从

CPU 到伙伴站的通信连接发送数据。

s7-1200之间通信-13 "TRCV_DB"(

en_r:=_bool_in_, ID:=_word_in_, len:=_uint_in_, ndr=>_bool_out_, busy=>_bool_out_, error=>_bool_out_, status=>_word_out_, rcvd_len=>_uint_out_, data:=_variant_inout_);

TCP 和 ISO on TCP: TRCV 通过从伙伴站到 CPU 的通信连接接收数据。

1 STEP 7 会在插入指令时自动创建 DB。

表格 10- 12 TSEND 和 TRCV 参数的数据类型

参数和类型 数据类型 说明
REQ IN Bool TSEND:在上升沿启动发送作业。 传送通过 DATA 和

LEN 指定的区域中的数据。

EN_R IN Bool TRCV:允许 CPU 进行接收;EN_R = 1 时,TRCV 准备接收。 处理接收作业。
ID IN CONN_OUC

(Word)

引用相关的连接。 ID 必须与本地连接描述中的相关参数

ID 相同。

值范围: W#16#0001 到 W#16#0FFF

LEN IN UInt 要发送 (TSEND) 或接收 (TRCV) 的最大字节数:

  • 默认 = 0: DATA 参数确定要发送 (TSEND) 或接收

(TRCV) 的数据长度。

  • 特殊模式 = 65535: 设置可变长度的数据接收

(TRCV)。

参数和类型 数据类型 说明
DATA IN_OUT Variant 指向发送 (TSEND) 或接收 (TRCV) 数据区的指针;数据区包含地址和长度。 该地址引用 I 存储器、Q 存储器、M

存储器或 DB。

DONE OUT Bool TSEND:

  • 0: 作业尚未开始或仍在运行。
  • 1: 无错执行作业。
NDR OUT Bool TRCV:

  • NDR = 0:作业尚未启动或仍在运行。
  • NDR = 1:作业已成功完成。
BUSY OUT Bool
  • BUSY = 1:作业尚未完成。 无法触发新作业。
  • BUSY = 0:作业已完成。
ERROR OUT Bool ERROR = 1:处理期间出错。STATUS 提供错误类型的详细信息
STATUS OUT Word 包括错误信息的状态信息。 (请参见下表中的错误和状态条件代码。)
RCVD_LEN OUT Int TRCV:实际接收到的数据量(字节)

说明

TSEND 指令需要通过 REQ 输入参数的上升沿来启动发送作业。 然后,BUSY 参数在处理期间会设置为 1。 发送作业完成时,将通过 DONE 或 ERROR 参数被设置为 1 并持续一个扫描周期进行指示。 在此期间,将忽略 REQ 输入参数的上升沿。

TRCV 操作

TRCV 指令将收到的数据写入到通过以下两个变量指定的接收区:

  • 指向区域起始位置的指针
  • 如果不为 0 则为区域长度或 LEN 上提供的值

说明

LEN 参数的默认设置 (LEN = 0) 使用 DATA 参数来确定要传送的数据的长度。 确保

TSEND 指令传送的 DATA 的大小与 TRCV 指令的 DATA 参数的大小相同。

接收所有作业数据后,TRCV 会立即将其传送到接收区并将 NDR 设置为 1。

表格 10- 13 将数据输入接收区

协议选项 将数据输入接收区 参数“connection_type” LEN 参数的值 RCVD_LEN 参数的值

(字节)

TCP 特殊模式 B#16#11 65535 1 到 1472
TCP 指定长度的数据接收 B#16#11 0(推荐)或 1 到

8192,65535 除外

1 到 8192
ISO on TCP 特殊模式 B#16#12 65535 1 到 1472
ISO on TCP 协议控制 B#16#12 0(推荐)或 1 到

8192,65535 除外

1 到 8192

说明

特殊模式

使用 TCP 或 ISO on TCP 协议时可以存在“特殊模式”。 用户通过将“65535”分配给 LEN参数来设置特殊模式。 接收区与 DATA 构成的区域相同。 接收数据的长度将输出到参数RCVD_LEN 中。 接收数据块后,TRCV 会立即将数据写入接收区并将 NDR 设置为 1。如果将数据存储在“优化”DB(仅符号访问)中,则只能接收数据类型为 Byte、Char、USInt 和 SInt 的数组中的数据。

说明将包含“特殊模式”的 S7-300/400 STEP 7 项目导入 S7-1200 中

在 S7-300/400 STEP 7 项目中,通过将“0”分配给 LEN 参数来选择“特殊模式”。 在 S7-1200 中,用户通过将“65535”分配给 LEN 参数来设置特殊模式。

如果将包含“特殊模式”的 S7-300/400 STEP 7 项目导入 S7-1200 中,则必须将 LEN 参数更改为“65535”。

表格 10- 14 ERROR 和 STATUS 指令的 TSEND 和 TRCV 的条件代码

ERROR STATUS 说明
0 0000
  • 发送作业无错完成 (TSEND)
  • 已接受新数据: 在 RCVD_LEN 中显示已接收数据的当前长度 (TRCV)。
0 7000
  • 无激活的作业处理 (TSEND)
  • 块未准备好接收 (TRCV)
ERROR STATUS 说明
0 7001
  • 启动作业处理,正在发送数据: 在执行此处理期间,操作系统访问

DATA 发送区中的数据 (TSEND)。

  • 块准备接收,接收作业已激活 (TRCV)。
0 7002
  • 后续指令执行(与 REQ 无关),正在处理作业: 在执行此处理期间, 操作系统访问 DATA 发送区中的数据 (TSEND)。
  • 后续指令执行,正在处理接收作业: 数据在执行此处理期间写入接收区。 因此,错误可能导致接收区中的数据不一致 (TRCV)。
1 8085
  • LEN 参数的值大于允许的最大值 (TSEND) 和 (TRCV)。
  • 自第一次指令执行 (TRCV) 以来,LEN 或 DATA 参数发生变化。
1 8086 ID 参数不在允许的地址范围内。
1 8088 LEN 参数大于 DATA 中指定的存储区。
1 80A1 通信错误:

  • 尚未建立指定的连接(TSEND 和 TRCV)。
  • 当前正在终止指定的连接。 无法通过该连接执行传送或接收作业

(TSEND 和 TRCV)。

  • 正在重新初始化接口 (TSEND)。
  • 接口正在接收新参数 (TRCV)。
1 80C3 内部缺乏资源: 具有该 ID 的块正在一个具有不同优先级的组中处理。
1 80C4 临时通信错误:

  • 此时无法建立与通信伙伴的连接。
  • 接口正在接收新参数设置或当前正在建立连接。

以太网连接协议

每个 CPU 都集成了一个支持标准 PROFINET 通信的 PROFINET 端口。 TSEND_C、TRCV_C、TSEND 和 TRCV 指令均支持 TCP 和 ISO-on-TCP 以太网协议。

UDP

UDP 是由 RFC 768 描述的一种标准协议: 用户数据报协议。 UDP 提供了一种一个应用程序向另一个应用程序发送数据报可采用的机制;但是,数据的传输得不到保证。 该协议有以下特点:

由于该协议与硬件紧密相关,因此它是一种快速通信协议适合用于小数据量到中等数据量(最多 2048 字节)UDP 是比 TCP 更加简单的传输控制协议,其薄层占用资源非常少可以非常灵活地与许多第三方系统一起使用有路由功能使用端口号指引数据报不确认消息:需要负责错误恢复和安全性的应用程序由于使用 SEND/RECEIVE 编程接口的缘故,需要编程来进行数据管理

UDP 支持广播通信。 要使用广播,必须组态 ADDR 组态的 IP 地址部分。例如: IP 地址为 192.168.2.10、子网掩码为 255.255.255.0 的 CPU 将使用广播地址 192.168.2.255。

TUSEND 和 TURCV

以下指令控制 UDP 通信过程:

  1. TCON 在客户机与服务器 (CPU) PC 之间建立通信连接。
  2. TUSEND 和 TURCV 发送和接收数据。
  3. TDISCON 断开客户机与服务器之间的通信。

有关 TCON 和 TDISCON 通信指令的更多信息,请参见“TCP 和 ISO-on-TCP”部分中的TCON、TDISCON、TSEND 和 TRCV (页 473)。

表格 10- 15 TUSEND 和 TURCV 指令

LAD/FBD SCL 说明
s7-1200之间通信-14 "TUSEND_DB"(

req:=_bool_in_, ID:=_word_in_, len:=_uint_in_, done=>_bool_out_, busy=>_bool_out_, error=>_bool_out_, status=>_word_out_, data:=_variant_inout_);

TUSEND 指令通过 UDP 将数据发送到参数

ADDR 指定的远程伙伴。

要启动用于发送数据的作业,请调用 REQ =

1 的 TUSEND 指令。

s7-1200之间通信-15 "TURCV_DB"(

en_r:=_bool_in_, ID:=_word_in_, len:=_uint_in_, ndr=>_bool_out_, busy=>_bool_out_, error=>_bool_out_, status=>_word_out_, rcvd_len=>_uint_out_, data:=_variant_inout_);

TURCV 指令通过 UDP 接收数据。 参数

ADDR 显示发送方地址。 TURCV 成功完成后,参数 ADDR 将包含远程伙伴(发送方) 的地址。

TURCV 不支持特殊模式。

要启动用于接收数据的作业,请调用 EN_R

= 1 的 TURCV 指令。

STEP 7 会在插入指令时自动创建 DB。TCON、TDISCON、TUSEND 和 TURCV 异步运行,即,作业处理需要多次执行指令来完成。

表格 10- 16 TUSEND 和 TURCV 参数的数据类型

参数和类型 数据类型 说明
REQ (TUSEND) IN Bool 在上升沿启动发送作业。 传送通过 DATA 和 LEN 指定的区域中的数据。
EN_R (TURCV) IN Bool
  • 0: CPU 无法接收。
  • 1: 允许 CPU 进行接收。 TURCV 指令准备接收,并处理接收作业。
ID IN Word 引用用户程序与操作系统通信层之间的相关连接。ID 必须与本地连接描述中的相关参数 ID 相同。

值范围: W#16#0001 到 W#16#0FFF。

LEN IN UInt 要发送 (TUSEND) 或接收 (TURCV) 的字节数。

  • 默认值为 0。DATA 参数确定要发送或接收的数据长度。
  • 否则为值范围: 1 到 1472
参数和类型 数据类型 说明
DONE (TUSEND) IN Bool 状态参数 DONE (TUSEND):

  • 0: 作业尚未开始或仍在运行。
  • 1: 作业无错完成。
NDR (TURCV) OUT Bool 状态参数 NDR (TURCV):

  • 0: 作业尚未开始或仍在运行。
  • 1: 作业已成功完成。
BUSY OUT Bool
  • 1: 作业尚未完成。 无法触发新作业。
  • 0: 作业已完成。
ERROR OUT Bool 状态参数,可具有以下值:

  • 0: 无错误
  • 1: 处理时出错。 STATUS 提供错误类型的详细信息。
STATUS OUT Word 包括错误信息的状态信息。 (请参见下表中的错误和状态条件代码。)
DATA IN_OUT Variant 发送区 (TUSEND) 或接收区 (TURCV) 的地址:

  • 过程映像输入表
  • 过程映像输出表
  • 存储器位
  • 数据块
ADDR IN_OUT Variant 指向接收方(对于 TUSEND)或发送方(对于

TURCV)的地址的指针(例如,P#DB100.DBX0.0 byte 8)。 该指针可指向任何存储区。

需要 8 字节的结构,具体如下:

  • 前 4 个字节包含远程 IP 地址。
  • 接下来的 2 个字节指定远程端口号。
  • 最后 2 个字节保留。

作业状态由输出参数 BUSY 和 STATUS 指示。STATUS 与以异步方式工作的指令的RET_VAL 输出参数一致。

下表给出了 BUSY、DONE (TUSEND)、NDR (TURCV) 和 ERROR 之间的关系。 通过该表格,用户可以确定指令(TUSEND 或 TURCV)的当前状态或者发送(传送)/接收过程完成的时间。

表格 10- 17 BUSY、DONE (TUSEND)/NDR (TURCV) 和 ERROR 参数的状态

BUSY DONE / NDR ERROR 说明
TRUE 不相关 不相关 正在处理作业。
FALSE TRUE FALSE 作业已成功完成。
FALSE FALSE TRUE 作业因错结束。 错误原因可在 STATUS 参数中找到。
FALSE FALSE FALSE 未给该指令分配(新)作业。

由于指令以异步方式工作: 对于 TUSEND,在 DONE 参数值或 ERROR 参数值为 TRUE 前,必须保持发送方区域中的数据一致。 对于 TURCV,仅当 NDR 参数值为 TRUE 时,接收方区域中的数据才一致。

表格 10- 18 TUSEND 和 TURCV 指令的 ERROR 和 STATUS 的条件代码

ERROR STATUS 说明
0 0000
  • 发送作业无错完成 (TUSEND)。
  • 接受了新数据。 在 RCVD_LEN 中显示已接收数据的当前长度

(TURCV)。

0 7000
  • 无激活的作业处理 (TUSEND)
  • 块未准备好接收 (TURCV)
0 7001
  • 启动作业处理,正在发送数据 (TUSEND): 在执行此处理期间,操作系统访问 DATA 发送区中的数据。
  • 块准备接收,接收作业已激活 (TURCV)。
0 7002
  • 后续指令执行(与 REQ 无关),正在处理作业 (TUSEND): 在执行此处理期间,操作系统访问 DATA 发送区中的数据。
  • 后续指令执行,正在处理作业: 在执行此处理期间,TURCV 指令将数据写入接收区。 因此,错误可能导致接收区中的数据不一致。
1 8085 LEN 参数值大于最大允许值,其值为 0 (TUSEND),或者自第一次执行指令

(TURCV) 以来更改了 LEN 或 DATA 参数的值。

1 8086 ID 参数不在允许的地址范围内。
1 8088
  • LEN 参数大于 DATA 中指定的存储区 (TUSEND) 或接收区 (TURCV)。
  • 接收区过小 (TURCV)。
1 8089 ADDR 参数未指向数据块。
ERROR STATUS 说明
1 80A1 通信错误:

  • 尚未建立用户程序和操作系统通信层之间的指定连接。
  • 当前正在终止用户程序和操作系统通信层之间的指定连接。 无法通过该连接执行传送 (TUSEND) 或接收作业 (TURCV)。
  • 正在重新初始化接口。
1 80A4 远程连接端点的 IP 地址无效;可能与本地 IP 地址匹配 (TUSEND)。
1 80B3
  • 设置的协议(连接说明中的 connection_type 参数)不是 UDP。 请使用

TSEND 或 TRCV 指令。

  • ADDR 参数: 端口号的设置无效 (TUSEND)
1 80C3
  • 具有该 ID 的块正在一个具有不同优先级的组中处理。
  • 内部缺乏资源
1 80C4 临时通信错误:

  • 此时无法建立用户程序和操作系统通信层之间的连接 (TUSEND)。
  • 接口正在接收新参数 (TUSEND)。
  • 当前正在重新启动连接 (TURCV)。

以太网连接协议

每个 CPU 都集成了一个支持标准 PROFINET 通信的 PROFINET 端口。 TUSEND 和TURCV 指令支持 UDP 以太网协议。

操作

两个伙伴在 UDP 通信中均为被动方。 下表给出“TCON_Param”数据类型的典型参数起始值。 端口号 (LOCAL_TSAP_ID) 以 2 字节形式表示。 允许使用除 161、34962、34963 和 34964 外的所有端口。

表格 10- 19 "TCON_Param”数据类型参数值

TCON 指令 TCON“UDP Conn DB”
s7-1200之间通信-16 s7-1200之间通信-17

TUSEND 指令通过 UDP 将数据发送到“TADDR_Param”数据类型中指定的远程伙伴。TURCV 指令通过 UDP 接收数据。 成功执行 TURCV 指令之后,“TADDR_Param”数据类型会显示远程伙伴(发送方)的地址。

表格 10- 20 "TADDR_Param”数据类型参数值

TUSEND 指令 TUSEND“UDP ADDR DB”
s7-1200之间通信-18 s7-1200之间通信-19
T_CONFIG

在用户程序中通过 T_CONFIG 指令可更改 PROFINET 端口的 IP 组态参数。该指令可用来永久更改或设置以下特性:

站名

IP 地址

子网掩码

路由器地址

说明

使用位于“以太网地址”(Ethernet address) 页面的 CPU“属性”(Properties) 中的 “使用其它方法设置 IP 地址” (页 492)(Set IP address using a different method) 单选按钮或者在下载程序之后使用“T_CONFIG”指令,可以在线更改 IP 地址。 这种指定 IP 地址的方法仅适用于 CPU。

使用位于“以太网地址”(Ethernet address) 页面的 CPU“属性”(Properties) 中的 “使用其它方法设置 PROFINET 设备名称” (页 493)(Set PROFINET device name using a different method) 单选按钮或在下载程序之后使用“T_CONFIG”指令,可以在线更改PROFINET 设备的名称。 这种指定 PROFINET 设备名称的方法仅适用于 CPU。

 

警告

使用 T_CONFIG 更改 IP 组态参数之后,CPU 会重启。 CPU 将转到 STOP 模式、暖启动,然后返回 RUN 模式。

控制设备在不安全情况下运行时可能会出现故障,从而导致受控设备的意外操作。这种意外运行可能会导致死亡、严重的人员伤害和/或设备损坏。

请确保 CPU 由于 T_CONFIG 指令执行而重启时,过程会进入安全状态。

表格 10- 21 T_CONFIG 指令

LAD/FBD SCL 说明
s7-1200之间通信-20 "T_CONFIG_DB"(

req:=_bool_in_, interface:=_word_in_, conf_Data:=_variant_in_, done=>_bool_out_, busy=>_bool_out_, error=>_bool_out_, status=>_dword_out_, err_loc=>_word_out_);

在用户程序中使用 T_CONFIG 指令可更改

IP 组态参数。

T_CONFIG 异步运行。 执行作业时需要多次调用指令。

表格 10- 22 参数的数据类型

参数和类型 数据类型 说明
REQ Input Bool 在上升沿时启动该指令。
INTERFACE Input HW_Interface 网络接口的 ID
CONF_DATA Input Variant 引用组态数据的结构;CONF_DATA 通过系统数据类型 (SDT) 来定义。
参数和类型 数据类型 说明
DONE Output Bool
  • 0: 作业尚未启动或仍在运行。
  • 1: 作业已无错执行。
BUSY Output Bool
  • 0: 作业已完成。
  • 1: 作业尚未完成。 无法触发新作业。
ERROR Output Bool 状态参数,可具有以下值:

  • 0: 无错误
  • 1: 处理时出错。 STATUS 提供错误类型的详细信息。
STATUS Output DWord 包括错误信息的状态信息。 (请参见下表中的错误和状态条件代码。)
ERR_LOC Output DWord 故障位置(错误参数的 ID 字段和 ID 子字段)

IP 组态信息与上面所述参数 CONF_DATA 中的 Variant 指针一起存储在 CONF_DATA 数据块中。 T_CONFIG 指令的成功执行以 IP 组态数据传送到网络接口宣告结束。 错误被分配给 STATUS 输出参数。

表格 10- 23 ERROR 和 STATUS 的条件代码

ERROR STATUS 说明
0 00000000 无错误
0 00700000 作业尚未完成 (BUSY = 1)。
0 00700100 开始执行作业
0 00700200 临时调用(与 REQ 无关)
1 C08xyy00 常规故障
1 C0808000 接口标识参数 LADDR 无效。
1 C0808100 给接口标识参数 LADDR 分配了不受支持的硬件接口。
1 C0808200 CONF_DATA 参数错误: Variant 指针的数据类型与数据类型 Byte 不匹配。
1 C0808300 CONF_DATA 参数错误: 区域指针不在 Variant 指针的 DB 中。
1 C0808400 CONF_DATA 参数错误: Variant 指针的长度错误。
1 C0808600 保留
1 C0808700 CONF_DATA 数据块长度与 IP 组态不一致
1 C0808800 CONF_DATA 数据块 field_type_id 的参数无效。 (仅允许 field_type_id =

0。)

ERROR STATUS 说明
1 C0808900 CONF_DATA 数据块 field_type_id 的参数无效或多次使用。
1 C0808A00 IP 组态参数的 LEN 长度或 subfield_cnt 错误
1 C0808B00 IP 组态 ID 参数无效或不被支持。
1 C0808C00 错误地放置了 IP 组态子块(子块错误、顺序错误或多次使用)。
1 C0808D00 语句 LEN 子块的长度无效。
1 C0808E00 子块模式中的参数的值无效。
1 C0808F00 IP 组态与前一子块之间存在子块冲突。
1 C0809000 子字段的参数是写保护的(例如: 通过组态指定参数,或启用了 PNIO 模式)。
1 C0809100 保留
1 C0809400 尚未定义或者可能没有使用 IP 组态子块中的参数。
1 C0809500 IP 组态子块中的参数与其它参数不一致。
1 C080C200 无法执行指令。 某些情况下会发生此错误,例如,与接口的通信丢失。
1 C080C300 没有足够的资源。 某些情况下会发生此错误,例如,使用不同参数多次调用该指令。
1 C080C400 通信故障。 该错误可能会暂时出现,需要重新执行用户程序。
1 C080D200 PROFINET 接口不支持执行该指令。

CONF_DATA 数据块

下图显示了待传送的组态数据在组态 DB 中的存储情况。

组态 DB 子字段 2
组态数据 子字段 n
子字段 1 子字段特定的参数

CONF_DB 的组态数据由一个包含字段头 (IF_CONF_Header) 的字段和多个子字段构成。IF_CONF_Header 提供以下元素:

  1. field_type_id(数据类型 UInt): 零
  2. field_id(数据类型 UInt): 零
  3. subfield_cnt(数据类型 UInt): 子字段数

各子字段又由字段头(subfield_type_id、subfield_length、subfield_mode)和子字段特 定的参数组成。 各子字段必须由偶数个字节组成。 subfield_mode 支持值 1。

说明

目前仅允许一个字段 (IF_CONF_Header)。 其参数 field_type_id 和 field_id 的值必须为零。 其它具有不同 field_type_id 和 field_id 值的字段用于将来扩展。

在 IF_CONF_Header 字段中,目前仅允许两个子字段“addr”(IP 地址)和“nos”(Name of station)。

表格 10- 24 支持的子字段

subfield_type_id 数据类型 说明
30 IF_CONF_V4 IP 参数: IP 地址、子网掩码、路由器地址
40 IF_CONF_NOS PROFINET IO 设备名称 (Name of station)

表格 10- 25 IF_CONF_V4 数据类型的元素

名称 数据类型 起始值 说明
Id UInt 30 subfield_type_id
len UInt 18 subfield_length
mode UInt 1 subfield_mode(1:永久)
InterfaceAddres s IP_V4 - 接口地址
ADDR Array [1..4] of Byte
ADDR[1] Byte b#16#C8 IP 地址高位字节: 200
ADDR[2] Byte b#16#0C IP 地址高位字节: 12
ADDR[3] Byte b#16#01 IP 地址低位字节: 1
名称 数据类型 起始值 说明
ADDR[4] Byte b#16#90 IP 地址低位字节: 144
SubnetMask IP_V4 - 子网掩码
ADDR Array [1..4] of Byte
ADDR[1] Byte b#16#FF 子网掩码高位字节: 255
ADDR[2] Byte b#16#FF 子网掩码高位字节: 255
ADDR[3] Byte b#16#FF 子网掩码低位字节: 255
ADDR[4] Byte b#16#00 子网掩码低位字节: 0
DefaultRouter IP_V4 - 默认路由器
ADDR Array [1..4] of Byte
ADDR[1] Byte b#16#C8 路由器高位字节: 200
ADDR[2] Byte b#16#0C 路由器高位字节: 12
ADDR[3] Byte b#16#01 路由器低位字节: 1
ADDR[4] Byte b#16#01 路由器低位字节: 1

表格 10- 26 IF_CONF_NOS 数据类型的元素

名称 数据类型 起始值 说明
id UInt 40 subfield_type_id
len UInt 246 subfield_length
mode UInt 1 subfield_mode(1:永久)
Nos (Name of station) Array[1..240

] of Byte

0 站名称: 必须从第一个字节开始填充 ARRAY。 如果

ARRAY 比要指定的站名称长,则必须在实际站名称后输入零字节(符合 IEC 61158-6-10)。 否则,将拒绝nos,并且“T_CONFIG (页 486)”指令会在 STATUS 中输入错误代码 DW#16#C0809400。 如果用零填充第一个

字节,则将删除站名称。

站名称有以下限制:

  1. 站名称中的名称部分,即两个点之间的字符串,不得超过 63 个字符。
  2. 不可使用特殊字符,如元音变音、括号、下划线、斜线、空格等。破折号是唯一允许使用的特殊字符。
  3. 站名称不得以“-”字符开始或结尾。
  4. 站名称不得以数字开头。
  5. 不允许站名称形式 n.n.n.n (n = 0 ... 999)。
  6. 站名称不得以字符串“port-xyz”或“port-xyz-abcde”(a、b、c、d、e、x、y、z = 0 ... 9)开头。

说明

还可以创建少于 240 个字节的 ARRAY“nos”,但不能少于 2 个字节。 在这种情况下, 必须相应调整“len”(子字段长度)。

weinxin
plc入门知识问答
所有PLC工程师都会关注的微信公众账号,只需输入您的问题,就会有答案

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: