如何编程通信程通信块 FB63 "TSEND", FB64 "TRCV", FB65 "TCON" 和 FB66 "TDISCON" 以实现实现用 S7-300 或 S7-400 CPU 的 PROFINET 口进行基于 TCP 协议的数据交据交换? 条目号 :29737950 日期 :2012-05-03 S7-400 CPU 41x -- 通信组态和编程 -- 使用 S7 通信块 ET 200S ( 标准模块 ) -- 通信组态和编程 -- 使用 S7 通信块 ET 200pro -- 通信组态和编程 -- 使用通信块 S7-300 CPU 31x -- 通信组态和编程 -- 使用 S7 通信块 WinAC RTX -- 通信组态和编程 -- 组态连接 如何编程通信块 FB63 "TSEND", FB64 "TRCV", FB65 "TCON" 和 FB66 "TDISCON" 以实现用 S7-300 或 S7-400 CPU 的 PROFINET 口进行基于 TCP 协议的数据交换? 描述 : 集成 PROFINET 口的 CPU 和 WinAC RTX, 支持开放式 IE 通信 关于集成 PROFINET 口的 CPU 和 WinAC RTX 所支持的通信服务总览, 请参见条目 18909487 此总览包含有关集成 PROFINET 口的 CPU 和 WinAC RTX 所支持的开放式 IE 通信协议的信息 下列通信块可以用于基于 TCP 协议的开放式通信 : FB65 "TCON" 用于建立连接 FB66 "TDISCON" 用于中止连接 FB63 "TSEND" 用于发送数据 FB64 "TRCV" 用于接收数据 这些通信块可以在 Standard Library -> Communication Blocks 下找到 从标准库中拷贝最新版本的上述通讯块到用户程序中, 然后再编写程序中调用它们 建立 TCP 连接的连接参数保存在一个数据结构中 本例中, 用到 UDT65 "TCON_PAR" 这个数据结构, 它是由用户来完成参数化的 这个 TCP 连接不在 NetPro 中组态 例程描述 : S7 程序中包含了对 FB65 "TCON" 的调用和带有建立 TCP 连接的连接参数数据结构 UDT65 "TCON_PAR" 也包含了来自于 Standard Library -> Communication Blocks 下的 FB63 "TSEND" 和 FB64 "TRCV" 的调用 FB63 "TSEND" 用于发送数据到 S7 站或 S5 站, 以及到 PC 站或到第三方系统. FB64 "TRCV" 用于接收来自其他 S7 站,S5 站,PC 站和第三方系统的数据 首先为 S7-300 站创建硬件组态 注意配置 MB10 作为时钟为时钟存储器 发送请求由该时钟存储器触发 保存编译 S7-300 站的硬件组态, 下载到 CPU STEP 7 程序由 OB100 OB1 FB300 DB300 FC97 UDT65 和 FB63 FB64 FB65 以及 FB66 组成 OB100: OB100 是重启 OB 块, 当 CPU 重新启动时 ( 暖启动 ) 执行一次. 在 OB100 中, 第一次通信由 M0.3 "START-UP" 触发 Page 1 of 8
OB1: OB1 循环调用 FB300 在 OB1 中被调用 ( 背景数据块 : DB300), M0.3 "START-UP" 作为 INIT_COM 参数 在 OB1 中调用 FB300 结束后,M0.3"START-UP" 被复位 图. 01 FB300: 在 OB1 中调用 FB300 该 FB300 中调用了 FC97 "SET_TCP_ENDPOINTx" 和 FB65 "TCON" FB63 "TSEND" FB64 "TRCV" 以及 FB66 "TDISCON" Page 2 of 8
图. 02 TCP 连接的本地和远程参数通过 FC97 "SET_TCP_ENDPOINTx" 的输入参数来设置 输入参数数据类型描述 ID Word 连接 ID DEV_ID Byte "local_device_id" 是本地端口参数 通过此端口, FB65 "TCON" 建立 TCP 连接 ACTIVE Boolean 0 = 被动建立连接 1 = 主动建立连接 关于 "local_device_id" 的信息, 请参见条目 51339682 通过配置输入参数 DEV_ID,FB65 "TCON" 建立 TCP 连接, 是基于工业以太网的开放式通信 LOC_PORT DInt CPU 本地端口名为 "System and Standard Functions for S7-300/400 Volume 1 and Volume 2" 的手册第 24.2 节, 有关于建立 TCP 和 UDP 通信的端口号信息 该手册可在条目 44240604 中下载 REM_PORT DInt 通信伙伴的远程端口 名为 "System and Standard Functions for S7-300/400 Volume 1 and Volume 2" 的手册第 24.2 节, 有关于建立 TCP 和 UDP 通信的端口号信息 该手册可在条目 44240604 中下载 Page 3 of 8
IP_ADDR1 Int 通信伙伴的 IP 地址 IP_ADDR2 IP_ADDR3 IP_ADDR4 Int Int Int 如果 CPU 连接的建立是被动的, 如 ACTIV=0, 此时不需要指定通信伙伴的远程端口号, 可以定义 REM_PORT=0. 如果 CPU 连接的建立是被动的, 如 ACTIV=0, 此时不需要指定通信伙伴的 IP 地址, 可以定义 IP_ADDR1=0, IP_ADDR2=0, IP_ADDR3=0 以及 IP_ADDR4=0. 在 FB300 的 Network 2 中定义连接号 它会存储在静态变量中, 当然也存在于背景数据块 DB DB300. 图. 03 通过 FB65"TCON" 的输入参数 "REQ" 的上升沿触发来建立连接 FB300 的背景数据块中集成了带有连接参数的数据结构 UDT65 "TCON_PAR" FB65 "TCON" 的输入参数 "CONNECT" 需要指定一个含有连接参数的存储区 在系统启动时连接建立并保持, 直到调用 FB66 "TDISCON" 来断开连接, 或让 CPU 进入停止模式或关闭电源来断开连接 Page 4 of 8
图. 04 在 "FB63 "TSEND" 的输入参数 "REQ" 上施加上升沿以触发发送请求 发送任务的触发是由时钟标志 M10.6 和变量 "C1.SEND_BUSY" 来控制的 如果发送任务运行, "C1.SEND_BUSY" 则被置位, 无法再触发新的发送请求 可以为输入参数 "DATA" 指定包含要发送数据的存储区 并在输入参数 "LEN" 填写要发送的字节数 输出参数 "DONE", "ERROR" 和 "STATUS" 用于任务评价 图. 05 如果发送任务成功完成, "C1.SEND_BUSY" 被复位 这时新的发送任务才可以被触发. 如果发送任务执行出错, 那么 "C1.SEND_BUSY" 变量同样被复位,FB63 的输出参数 "STATUS" 的值被保存用于错误分析 Page 5 of 8
图. 06 图. 07 一旦 TCP 连接建立了, 就能接收数据 用输入参数 "DATA" 指定保存接收数据的存储的地址和长度 Page 6 of 8
图. 08 输出参数 "NDR" 用于表示已接收到新数据 输出参数 "LEN" 表明接收数据的长度 如果数据未被成功接收, 那么输出参数 "STATUS" 可以保存下来并用于评估状态 图. 09 可以通过 FB66 "TDISCON" 有目的地结束 TCP 连接 在 FB66 "TDISCON" 的输入参数 "REQ" 上施加上升沿以请求结束 TCP 连接 Page 7 of 8
图. 10 示例程序中 TCP 协议用来数据传输, 需在数据结构 UDT65 中设定参数 "connection_type" 为 "B#16#11" S7-300 CPUs V2.3 支持 TCP ( 兼容模式 ) 如在 S7-300 CPU V2.3 中运行示例程序, 需在数据结构 UDT65 中设定参数 "connection_type" 为 "B#16#01" STEP 7 项目下目下载示例的 STEP 7 项目包含了调用 FB300 和 FC97 "SET_TCP_ENDPOINTx" FB65 "TCON" FB66 "TDISCON" FB63 "TSEND" 和 FB64 "TRECV" 以及状态评估 该程序由 STEP 7 V5.5 创建 Sample_open_TCP.zipSample_open_TCP.zip ( 46 KB ) 配置额外 TCP 连接要配置其它的额外的 TCP 连接, 将 FB300 复制一份命名为其它功能块 ( 如 FB301), 修改参数并生成一个新的背景数据块 在手册 "System and Standard Functions for S7-300/400 Volume 1 and Volume 2" 中提及的工业以太网开放式通讯协议的详细信息参见条目 44240604 对于配置 S7-300 和 S7-400 工业以太网 CP 进行 TCP 连接的说明息可参见条目 22385024 条目号 :29737950 日期 :2012-05-03 Siemens AG 2014 版权所有 - 法人信息 - 保密政策 - 应用条款 Page 8 of 8