n
描述
可以通过CPU 集成的 PROFINET 接口或 CP443-1 Advanced 使用工业以太网 "开放用户通信方式"进行数据交换, 例如: 这种方式支持下列通信协议:n
- TCPn
- ISO-on-TCPn
- UDP
使用 ISO-on-TCP协议的工业以太网 "开放用户通信方式"可以使用下列通信块:n
- FB65 "TCON" 用于建立连接n
- FB66 "TDISCON"用于断开连接n
- FB63 "TSEND"用于发送数据n
- FB64 "TRECV"用于接收数据
这些通信功能块可以在函数库 Standard Library -> Communication Blocks 中找到。
在标准程序库中将上述通信功能块的最新版本拷贝至用户程序中,然后编写程序时调用。
用于建立 ISO-on-TCP 连接的连接参数存储于一个数据结构体中。在这次例子中,使用数据结构 "OUCW_1",在这个例子中数据结构保存在 DB1 数据块中,并由用户进行参数化。n
注意
- 使用 "开放通信向导" 可以方便连接数据的创建。该向导可在此下载,条目号: 98957840。n
- 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 | coection_type | BYTE | ISO-on-TCP协议版本:B#16#12 |
5 | active_est | BOOLEAN | 建立连接方式的标识号 n
|
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 | 远程连接终端的地址长度: n
|
10 | rem_tsap_id_len | BYTE | 所使用的 rem_tsap_id 参数的长度 如果连接类型为 B#16#12,可能的值:0 or 2 to 16 n
|
11 | ext_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 n 注意 |
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 n 注意 |
56 to 61 | ext_staddr | ARRAY [1..6] of BYTE | ext_staddr[1-6] = B#16#00 n
注意 |
62-63 | spare | WORD | 保留,分配 W#16#0000 给该参数。 |
表 01
n
以下 CPU 支持ASCII 格式的 TASP。n
- CPU 314C-2 PN/DPn
- CPU 315(F)-2 PN/DP, CPU 317(F)-2 PN/DP V3.1 及以上n
- CPU 315T-3 PN/DP, CPU 317T-3 PN/DP, CPU 317TF-3 PN/DPn
- CPU 319(F)-3 PN/DPn
- CPU 414-3 PN/DP, CPU 416(F)-3 PN/DP V5.2及以上n
- CPU 414F-3 PN/DP, CPU 412-2 PNn
- CPU 412-5H PN/DP, CPU 414-5H PN/DP, CPU 416-5H PN/DP, CPU 417-5H PN/DPn
- IM 151(F)-8 PN/DP CPU V2.7及以上n
- 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 站或第三方系统发送的数据。n
首先在 S7-300 站中创建硬件配置,将 MB100 作为时钟脉冲。发送请求由时钟脉冲触发。存盘编译并将硬件配置下载到 CPU 中。n
STEP 7 程序包含程序块 OB100, OB1, FB400, DB400, FB420, UDT65和 FB63, FB64, FB65 及 FB66。n
OB100
OB100是一个重启 OB,当 CPU 重新启动时执行一次 (暖起动)。 在这个 OB 块中,第一次的通信可以通过 M0.3 触发。n
OB1
OB1是循环执行。FB1 在 OB1 中调用,其背景数据块是 DB11,且使用 M0.3 作为 INIT_COM 参数,使用M10.0 作为 ABORT 参数。FB1 被调用后,M0.3 在OB1 中被复位。n
图 01n
FB1
FB1 在 OB1 中循环调用。下述功能块在 FB1 中被调用。n
- FB65 "TCON"n
- FB63 "TSEND"n
- FB64 "TRCV"n
- FB66 "TDISCON"
定义连接数目
用户可以单独修改连接数目,根据配置在 FB1 的网络段 2 中修改连接数目。连接数目保存在一个静态变量中,如背景数据块 DB11 中。本示例定义的连接数为 "1"。n
图 02n
建立连接
通过 FB65 "TCON" 的 "REQ"输入参数的上升沿来开始建立一个连接。带有连接参数的数据结构 "OUCW_1" 被整合到数据块 DB1中。
一旦FB65 "TCON" 的输入参数 "CONNECT" 使能,包含连接参数的存储区即被指定。
在系统启动后连接被建立。除非调用 FB66 "TDISCON",或者CPU 进入 STOP 模式,或者切断电源,该连接才会断开。n
图 03n
发送请求可通过一个上升沿触发 FB63 "TSEND" 的输入参数 "REQ"来完成。发送请求由时钟位 M10.6 和变量 "SEND_BUSY" 控制。如果发送请求开始执行,那么"SEND_BUSY" 就被置位。这时无法触发一个新的发送请求。
用户在输入参数 "DATA" 指定发送数据的存储区。
用户在输入参数 "LEN" 指定发送字节长度。
本示例中,发送数据存放在 DB100 中,将100 个字节数据发送给伙伴。
输出参数 "DONE","ERROR" 和 "STATUS" 用来评估工作状态。n
图 04n
如果发送任务成功完成,"SEND_BUSY" 被置位。一个新的发送任务此时可以被触发。
如果发送任务完成并带有错误,那么 "SEND_BUSY" 同样会被复位,同时 FB63的 "STATUS" 输出参数会保存一个用来进行错误分析的数值。n
图 05n
Fig. 06n
ISO-on-TCP 连接建立后,就可以接收数据。
用输入参数 "DATA"和 "LEN" 来指定要保存接收数据的数据区的地址和长度。
本示例中,接收 100 字节的数据并保存在 DB200 中。n
Fig. 07n
输出参数 "NDR" 用于表示新数据已经被接收。输出参数 "RECV_LEN" 表示被接收数据的长度。
如果数据被成功接收,那么输出参数 "RECV_LEN" 的值被保存。n
Fig. 08n
如果数据接收没有成功,那么输出参数 "STATUS" 的值被保存并用来评估。n
Fig. 09n
用户可以使用 FB66 "TDISCON" 断开 ISO-on-TCP 连接。可以使用 FB66 "TDISCON" 输入参数"REQ" 的上升沿来启动断开 ISO-on-TCP 连接的请求。n
Fig. 10n
下载的 STEP 7 项目
本STEP 7 项目包含一个例子程序,例子程序中包含 FB1 和带有状态评估的功能块 FB65 "TCON", FB66 "TDISCON",FB63 "TSEND"和 FB64 "TRECV"。本项目使用 STEP 7 V5.4 SP3 创建。n
Sample_open_IoT.zip ( 285 KB ) n
配置其他的 ISO-on-TCP 连接
如果要配置其他的 ISO-on-TCP 连接,可以复制 FB1 得到另一个功能块 (例如 FB101)。修改参数生成新的背景数据块。n
更多信息
- 详细信息可以参见手册 "System and Standard Functions for S7-300/400 Volume 1 and Volume 2"中提及的工业以太网开放式通讯协议,条目号:44240604。
- 关于使用 S7-300 和 S7-400 工业以太网 CPs 模块组态一个 ISO-on-TCP 通信连接的指南,可以参见条目号:47885440
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc325210.html