西门子NCU571.4 6FC5357-0BB14-0AA0SINUMERIK 840D/DE NCU 571.4,400MHz,64MB 不带系统软件 存储器:NC 0.5MB,PLC 96KB PROFIBUS-DP 准备 描述 可以通过CPU 集成的 PROFINET 接口或 CP443-1 Advanced 使用工业以太网 "开放用户通信方式" 进行数据交换, 例如: 这种方式支持下列通信协议: TCP ISO-on-TCP UDP 使用 ISO-on-TCP 协议的工业以太网 "开放用户通信方式" 可以使用下列通信块: FB65 "TCON" 用于建立连接 FB66 "TDISCON" 用于断开连接 FB63 "TSEND" 用于发送数据 FB64 "TRECV" 用于接收数据 这些通信功能块可以在函数库 Standard Library -> Communication Blocks 中找到。 在标准程序库中将上述通信功能块的较新版本拷贝至用户程序中,然后编写程序时调用。 用于建立 ISO-on-TCP 连接的连接参数存储于一个数据结构体中。在这次例子中,使用数据结构 "OUCW_1",在这个例子中数据结构保存在 DB1 数据块中,并由用户进行参数化。 注意 ISO-on-TCP 通信连接不在 NetPro 中配置。 表 01 提供了数据结构 "OUCW_1" 中哪些连接数据被保存。 字节 参数 数据类型 描述 0 to 1 block_length WORD 数据结构 "OUCW_1" 的长度 2 to 3 id BYTE 对连接的引用 数值范围:W#16#0001 to W#16#0FFF 必须为该连接块的 ID *一个参数值。 4 connection_type BYTE ISO-on-TCP 协议版本:B#16#12 5 active_est BOOLEAN 建立连接方式的标识号 FALSE:被动创建连接 TRUE:主动创建连接 6 local_device_id BYTE 通过 CPU 315-2 PN/DP 集成的 PROFINET 接口进行通信:B#16#02 7 local_tsap_id_len BYTE 所使用的参数 local_tsap_id 的长度 如果连接类型为 B#16#12,可能的值:2 to 16 8 rem_subnet_id_len BYTE 该参数当前未使用。必须将 B#16#00分配给它。 9 rem_staddr_len BYTE 远程连接终端的地址长度: 0:未*,即参数 rem_staddr 不相关。 4:参数 rem_staddr 中有效的 IP 地址。 10 rem_tsap_id_len BYTE 所使用的 rem_tsap_id 参数的长度 如果连接类型为 B#16#12,可能的值:0 or 2 to 16 主动端:2 to 16 被动端:0 or 2 to 16 (0 代表未*) 11 next_staddr_len BYTE 所使用的参数 next_staddr 的长度 12 to 27 local_tsap_id ARRAY [1..16] of BYTE 本地 TSAP,例如 ISO1: local_tsap_id[1] = B#16#49 local_tsap_id[2] = B#16#53 local_tsap_id[3] = B#16#4F local_tsap_id[4] = B#16#31 local_tsap_id[5-16] = B#16#00 注意 如果 CPU 不支持 ASCII 格式的TSAP,那么 TSAP 的头两个字节必须写入数值 B#16#E0 和 B#16#02。 28 to 33 rem_subnet_id ARRAY [1..6] of BYTE 该参数当前未使用。必须将 B#16#00 分配给它。 34 to 39 rem_staddr ARRAY [1..6] of BYTE 远程连接端点的 IP 地址,例如 192.168.0.30: rem_staddr[1] = B#16#C0 rem_staddr[2] = B#16#A8 rem_staddr[3] = B#16#00 rem_staddr[4] = B#16#1E rem_staddr[5-6] = B#00 (保留) 40 to 55 rem_tsap_id ARRAY [1..16] of BYTE 远程连接端点的 TSAP,例如 ISO1: rem_tsap_id[1] = B#16#49 rem_tsap_id[2] = B#16#53 rem_tsap_id[3] = B#16#4F rem_tsap_id[4] = B#16#31 rem_tsap_id[5-16] = B#16#00 注意 如果 CPU 不支持 ASCII 格式的 TSAP,那么 TSAP 的头两个字节必须写入数值 B#16#E0 和 B#16#02。 56 to 61 next_staddr ARRAY [1..6] of BYTE next_staddr[1-6] = B#16#00 注意 如果 local_device_id=B#16#00,那么这需要* (本地) CP 的机架和插槽。 62-63 spare WORD 保留,分配 W#16#0000 给该参数。 表 01 以下 CPU 支持 ASCII 格式的 TASP。 CPU 314C-2 PN/DP CPU 315(F)-2 PN/DP, CPU 317(F)-2 PN/DP V3.1 及以上 CPU 315T-3 PN/DP, CPU 317T-3 PN/DP, CPU 317TF-3 PN/DP CPU 319(F)-3 PN/DP CPU 414-3 PN/DP, CPU 416(F)-3 PN/DP V5.2 及以上 CPU 414F-3 PN/DP, CPU 412-2 PN CPU 412-5H PN/DP, CPU 414-5H PN/DP, CPU 416-5H PN/DP, CPU 417-5H PN/DP IM 151(F)-8 PN/DP CPU V2.7 及以上 IM 154(F)-8 CPU V3.2 及以上 简单例程描述 S7 程序中包含 FB65 "TCON 的调用和带有 "OUCW_1" 数据结构的 DB1,其中 "OUCW_1" 保存着创建 ISO-on-TCP 连接的参数。S7 程序中还包含函数库 Standard Library -> Communication Blocks 中函数 FB63 "TSEND" 和 FB64 "TRCV" 的调用 。通过调用 FB63 "TSEND" 块,可以将数据发送给一个 S7 站或一个 S5 站或一个 PC 站或第三方系统。通过调用 FB64 "TRCV" 块,可以接收从一个 S7 站或一个 S5 站或一个 PC 站或第三方系统发送的数据。 首先在 S7-300 站中创建硬件配置,将 MB100 作为时钟脉冲。发送请求由时钟脉冲触发。存盘编译并将硬件配置下载到 CPU 中。 STEP 7 程序包含程序块 OB100, OB1, FB400, DB400, FB420, UDT65 和 FB63, FB64, FB65 及 FB66。 OB100 OB100是一个重启 OB,当 CPU 重新启动时执行一次 (暖起动)。 在这个 OB 块中,**次的通信可以通过 M0.3 触发。 OB1 OB1是循环执行。FB1 在 OB1 中调用,其背景数据块是 DB11,且使用 M0.3 作为 INIT_COM 参数,使用M10.0 作为 ABORT 参数。FB1 被调用后,M0.3 在OB1 中被复位。 图 01 FB1 FB1 在 OB1 中循环调用。下述功能块在 FB1 中被调用。 FB65 "TCON" FB63 "TSEND" FB64 "TRCV" FB66 "TDISCON" 定义连接数目 用户可以单独修改连接数目,根据配置在 FB1 的网络段 2 中修改连接数目。连接数目保存在一个静态变量中,如背景数据块 DB11 中。本示例定义的连接数为 "1"。 图 02