PROFINET开放式用户通信CPU 的集成PROFINET 端口支持多种以太网网络上的通信标准:● 传输控制协议 (TCP)● ISO on TCP (RFC 1006)●用户数据报协议 (UDP)表格 7- 2 协议以及用于每种协议的通信指令协议 用途示例 在接收区输入数据 通信指令 寻址类型TCPCPU 与 CPU 通信帧传输特殊模式 仅 TRCV_C 和TRCV(V4.1及早期指令)将端口号分配给本地(主动)和伙伴(被动)设备指定长度的数据接收TSEND_C、TRCV_C、TCON、TDISCON、TSEND 和TRCV(V4.1及早期指令)ISO on TCP CPU 与CPU 通信消息的分割和重组特殊模式 仅 TRCV_C 和TRCV (V4.1及早期指令)将TSAP分配给本地(主动)和伙伴(被动)设备协议控制 TSEND_C、TRCV_C、TCON、TDISCON、TSEND 和TRCV(V4.1及早期指令)UDP CPU 与 CPU 通信用户程序通信用户数据报协议 TUSEND 和 TURCV将端口号分配给本地(主动)和伙伴(被动)设备,但不是专用连接轻松实现设备间通信7.5 PROFINET入门手册158 设备手册,01/2015, A5E02486780-AG协议 用途示例 在接收区输入数据 通信指令 寻址类型S7 通信 CPU 与 CPU通信从 CPU读取数据/向 CPU写入数据指定长度的数据传输和接收GET 和 PUT 将TSAP分配给本地(主动)和伙伴(被动)设备PROFINET IO CPU 与PROFINETIO设备通信指定长度的数据传输和接收内置 内置7.5.1.1 特殊模式通常,TCP 和 ISO-on-TCP 接收指定长度的数据包(1到 8192 字节)。 但 TRCV_C 和TRCV 通信指令还提供“特殊”通信模式,可接收可变长度的数据包(1 到 1472字节)。说明如果将数据存储在“优化”DB(仅符号访问)中,则只能接收数据类型为Byte、Char、USInt 和 SInt的数组中的数据。要针对特殊模式组态 TRCV_C 或 TRCV 指令,请置位 ADHOC 指令输入参数。如果在特殊模式下并未频繁调用TRCV_C 或 TRCV指令,则可在一次调用中接收多个数据包。 例如: 如果要通过一次调用接收五个 100字节的数据包,TCP可将这五个数据包打包成一个 500 字节的数据包一起传送,而 ISOon-TCP 则可将该数据包重组成五个 100字节的数据包。轻松实现设备间通信7.5 PROFINET入门手册设备手册, 01/2015, A5E02486780-AG1597.5.1.2 开放式用户通信指令的连接 ID将 TSEND_C、TRCV_C 或 TCON PROFINET指令插入到用户程序中时,STEP7会创建一个背景数据块,以组态设备之间的通信通道(或连接)。使用指令的“属性”(Properties) (页 163)组态连接的参数。 这些参数中有该连接的连接ID。● 连接 ID 对于 CPU 必须是唯一的。 创建的每个连接必须具有不同的 DB和连接 ID。● 本地 CPU 和伙伴 CPU 都可以对同一连接使用相同的连接 ID 编号,但连接 ID编号不需要匹配。 连接 ID编号只与各 CPU 用户程序中的 PROFINET 指令相关。● CPU 的连接 ID 可以使用任何数字。从“1”开始按顺序组态连接 ID可以很容易地跟踪特定 CPU 使用的连接数。说明用户程序中的每个 TSEND_C、TRCV_C或 TCON 指令都创建一个新连接。为每个连接使用正确的连接 ID 非常重要。轻松实现设备间通信7.5 PROFINET入门手册160设备手册, 01/2015, A5E02486780-AG以下示例显示了两个 CPU 之间的通信,这两个 CPU 使用2个单独的连接来发送和接收数据。● CPU_1 中的 TSEND_C 指令通过第一个连接(CPU_1 和 CPU_2 上的“连接ID1”)与 CPU_2 中的 TRCV_C 链接。● CPU_1 中的 TRCV_C 指令通过第二个连接(CPU_1 和 CPU_2上的“连接 ID 2”)与CPU_2 中的 TSEND_C 链接。① 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)。轻松实现设备间通信7.5PROFINET入门手册设备手册, 01/2015, A5E02486780-AG 161以下示例显示了两个 CPU之间的通信,这两个 CPU 使用 1 个连接来发送和接收数据。● 每个 CPU 都使用 TCON 指令来组态两个 CPU之间的连接。● CPU_1 中的 TSEND 指令通过由 CPU_1 中的 TCON 指令组态的连接 ID(“连接 ID1”)链接到CPU_2 中的 TRCV 指令。 CPU_2 中的 TRCV 指令通过由 CPU_2 中的TCON 指令组态的连接 ID(“连接ID 1”)链接到 CPU_1 中的 TSEND 指令。● CPU_2 中的 TSEND 指令通过由 CPU_2 中的 TCON指令组态的连接 ID(“连接 ID1”)链接到 CPU_1 中的 TRCV 指令。 CPU_1 中的 TRCV 指令通过由 CPU_1中的TCON 指令组态的连接 ID(“连接 ID 1”)链接到 CPU_2 中的 TSEND 指令。① 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)。轻松实现设备间通信7.5 PROFINET入门手册162 设备手册, 01/2015,A5E02486780-AG如以下示例所示,还可以使用单个 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 创建的连接ID (ID=1)。CPU_2 上的 TSEND 和 TRCV使用CPU_2 上的 TRCV_C 创建的连接 ID(ID=1)。轻松实现设备间通信7.5 PROFINET入门手册设备手册,01/2015, A5E02486780-AG 1637.5.1.3 PROFINET 连接的参数TSEND_C、TRCV_C 和TCON 指令要求指定与连接相关的参数,以连接到伙伴设备。这些参数将通过 TCP、ISO-on-TCP 和 UDP 协议的TCON_Param 结构来分配。通常使用指令的“属性”(Properties) 中的“组态”(Configuration)选项卡来指定这些参数。如果无法访问“组态”(Configuration) 选项卡,则必须通过程序指定 TCON_Param结构。TCON_Param表格 7- 3 连接描述的结构 (TCON_Param)字节 参数和数据类型 说明0 … 1block_length UInt 长度: 64 个字节(固定)2 … 3 id CONN_OUC(Word)对该连接的引用:值范围: 1(默认值)到 4095。在 ID下为指令 TSEND_C、TRCV_C 或 TCON指定该参数的值。4connection_type USInt 连接类型:• 17: TCP(默认)• 18: ISO-on-TCP• 19: UDP5active_est Bool 连接类型的 ID:• TCP 和 ISO-on-TC:– FALSE: 被动连接– TRUE:主动连接(默认)• UDP: FALSE6 local_device_id USInt 本地 PROFINET 或工业以太网接口的ID: 1(默认值)7 local_tsap_id_len USInt 所用 local_tsap_id参数的长度(以字节表示);可能值:• TCP: 0(主动,默认值)或 2(被动)• ISO-on-TCP: 2 到 16• UDP:28 rem_subnet_id_len USInt 该参数未使用。9 rem_staddr_len USInt伙伴端点地址的长度(以字节表示):• 0: 未指定(参数 rem_staddr 不相关)• 4(默认值): 参数 rem_staddr中的 IP地址有效(仅对于 TCP 和 ISO-on-TCP)字节 参数和数据类型 说明10 rem_tsap_id_lenUSInt 所用 rem_tsap_id 参数的长度(以字节表示);可能值:• TCP: 0(被动)或 2(主动,默认值)•ISO-on-TCP: 2 到 16• UDP: 011 next_staddr_len USInt 该参数未使用。12…27local_tsap_id Array [1..16]of Byte连接的本地地址部分:• TCP 和 ISO-on-TC:本地端口号(可能值: 1 到49151;推荐值: 2000...5000):– local_tsap_id[1] =十六进制表示的端口号的高位字节;– local_tsap_id[2] = 十六进制表示的端口号的低位字节;–local_tsap_id[3-16] = 不相关• ISO-on-TCP: 本地 TSAP-ID:–local_tsap_id[1] = B#16#E0;– local_tsap_id[2] = 本地端点的机架和插槽(位 0 到4:插槽号,位 5 到 7: 机架号);– local_tsap_id[3-16] = TSAP 扩展,可选• UDP:该参数未使用。注: 请确保 local_tsap_id 的每个值在 CPU中都是唯一的。28 …33rem_subnet_idArray [1..6] ofUSInt该参数未使用。34 …39rem_staddr Array [1..6] ofUSInt仅TCP 和 ISO-on-TCP: 伙伴端点的 IP 地址。(与被动连接不相关。) 例如,IP 地址192.168.002.003存储在数组的下列元素中:rem_staddr[1] = 192rem_staddr[2] =168rem_staddr[3] = 002rem_staddr[4] = 003rem_staddr[5-6] =不相关轻松实现设备间通信7.5 PROFINET入门手册设备手册, 01/2015, A5E02486780-AG 165字节参数和数据类型 说明40 …55rem_tsap_id Array [1..16]of Byte连接的伙伴地址部分• TCP:伙伴端口号。 范围: 1 到 49151;推荐值:2000 到 5000):– rem_tsap_id[1] =十六进制表示的端口号的高位字节– rem_tsap_id[2] = 十六进制表示的端口号的低位字节;–rem_tsap_id[3-16] = 不相关• ISO-on-TCP: 伙伴 TSAP-ID:– rem_tsap_id[1] =B#16#E0– rem_tsap_id[2] = 伙伴端点的机架和插槽(位 0 到 4:插槽号,位 5 到 7: 机架号)–rem_tsap_id[3-16] = TSAP 扩展,可选• UDP: 该参数未使用。56 …61next_staddr Array[1..6] ofByte该参数未使用。