1、怎样使用通讯功能块 FC5和 FC6?表 01 说明了通过通信处理器(CP)有哪些通信连接可用来做数据交换,以及 CP 所支持的通信连接。使用表 01 中列出的任一通信连接通信时,在 S7-300 的 S7 程序中 必须调用通信功能块 FC5 “AG_SEND“ 和 FC6 “AG_RECV“ 。通信连接 CP 订货号 备注CP343-1Lean6GK7343-1CX10-0XE06GK7343-1CX00-0XE0CP343-1Standard6GK7343-1EX30-0XE06GK7343-1EX21-0XE06GK7343-1EX20-0XE06GK7343-1EX11-0XE0CP3
2、43-1Advanced6GK7343-1GX30-0XE06GK7343-1GX31-0XE06GK7343-1GX21-0XE0 TCP 连接 ISO-on-TCP 通信(RFC 1006) UDP 连接CP343-1 IT 6GK7343-1GX20-0XE06GK7343-1GX11-0XE0关于 TCP, ISO-on-TCP (RFC 1006) 和 UDP 协议的更多信息请参考条目号 26171811,26484227 和26484229.CP343-1Standard6GK7343-1EX21-0XE06GK7343-1EX30-0XE06GK7343-1EX11-0XE0 I
3、SO 传输连接CP343-1Advanced6GK7343-1GX31-0XE06GK7343-1GX30-0XE06GK7343-1GX21-0XE0关于 ISO 传输协议的更多信息请参考条目号 26582267.CP343-1 IT 6GK7343-1GX11-0XE0CP342-5 6GK7342-5DA03-0XE06GK7342-5DA02-0XE06GK7342-5DA01-0XE06GK7342-5DA00-0XE0CP342-5 FO 6GK7342-5DF00-0XE0 FDL 连接CP343-5 6GK7343-5FA01-0XE06GK7343-5FA00-0XE0关于
4、FDL 协议的更多信息请参考条目号 26098555.表 01通信功能块 FC5 “AG_SEND“ 和 FC6 “AG_RECV“的特点 FC5和 FC6是异步通信方式。 在本例中,通过 OB1调用这些功能块 。(见 Entry ID: 2795485) 。 它们的执行可能需要多个 OB1循环。 FC5通过输入参数 “ACT“激活。 由“DONE“或 “ERROR“表示任务结束。 AG_SEND 和 AG_RECV 能够同时通过同一连接通信。 最新版本的功能块 FC5 “AG_SEND“ 和 FC6 “AG_RCV“可以在 SIMATIC_NET_CP 库中 “CP 300 Blocks“下
5、找到 。示例程序说明示例 S7程序包含从 SIMATIC_NET_CP 库中对通信功能块 FC5 “AG_SEND“ 和 FC6 “AG_RCV“的调用。FC5 “AG_SEND“用于向另外的 S7站、计算机站或者第三方的系统发送数据。FC6 “AG_RECV“ 用于从另外的 S7站、计算机站或者第三方的系统接收数据。示例程序演示了通过 ISO-on-TCP 连接通信时 FC5 “AG_SEND“ 和 FC6 “AG_RCV“ 的功能。首先创建 S7-300站的硬件配置。注意设置 MB10 作为时钟标记,发送请求由此时钟标记触发,保存和编译 S7-300硬件配置并下载到 CPU 中。在本示例程
6、序中使用了定时器 T10。在 NetPro 中为 CPU 配置上述的通信功能块。如果通信对象组态在同一个 S7项目中,那么就能够配置一个指定的通信连接;如果通信对象没有作为一个 S7站组态在同一个 S7项目中,那么可以配置一个非指定的通信连接。当配置通信连接时,确保指定了正确的 IP 地址或者 PROFIBUS 地址,以及正确的端口、TSAP, 或者 LSAP,这些用于在通信对象之间正确识别通信连接。通信功能块 FC5 “AG_SEND“ 和 FC6 “AG_RECV“必须使用的输入参数“ID”和“LADDR”在通信连接的属性- “General“对话框中可以找到。图 01示例 STEP7 程
7、序包含了 OB100, OB1, FB200, DB200, DB201, FC5 和 FC6块。OB100OB100是启动 OB,在 CPU 重新启动(暖启动)时执行。在这个 OB 块中,首次通信的触发位 M0.3 “START-UP“被使能。OB1OB1是循环调用块。FB200(背景数据块:DB200) 在 OB1中调用,M0.3 “START-UP“作为调用参数(INIT_COM)的实参,在 FB200运行后,复位 M0.3 “START-UP“。 图 02FB200OB1循环调用 FB200。在 FB200中调用通信功能块 FC5 “AG_SEND“ 和 FC6 “AG_RECV“FC
8、5 “AG_SEND“ 参数在输入参数 “ACT“输入一个上升沿,来触发发送请求。通过时钟位 M10.7和变量“SND_BUSY“.来控制发送请求。如果发送请求正在运行,“SND_BUSY“被置位,不可能再触发一个新的发送请求。这个互锁是非常重要的,因为通信是异步的,能够持续几个循环周期。持续触发新的发送请求,而没有等待检查任务是否结束或因出错而停止,将会导致通信过载。输入参数“ID“ 和 “LADDR“的值必须和 NetPro 中通信连接的属性对话框中的参数一致(见图1) 。在 FC5的输入参数 “SEND“中,必须指定被发送的数据区域的地址和长度,它包含要发送的数据(发送缓冲区) ,例如
9、P#DB201.DBX0.0 BYTE 100 。在输入参数 “LEN“中,需要输入被发送数据的字节长度,本例中是100字节。输出参数“DONE“, “ERROR“和 “STATUS“用来评估通信任务,并且仅在同一个循环中有效。图 03如果发送请求成功完成,“SND_BUSY“被复位,然后可以再次触发一个新的发送请求。如果发送请求产生错误,“SND_BUSY“同样被复位,并且 FC5的“STATUS“ 输出参数值被保存用于错误分析。图 04FC6 “AG_RECV“ 参数输入参数“ID“ 和 “LADDR“的值必须和 NetPro 中的通信连接的属性对话框中的参数一致(见图1) 。在 FC6的
10、输入参数 “RECV“中,必须指定接收的数据区域(接收缓冲区)的地址和长度,它包含接收数据,例如 P#DB201.DBX100.0 BYTE 100 。图 05输出参数 “NDR“ 表示是否接收到新数据,输出参数 “LEN“ 表示接收数据的长度。 如果没有成功接收数据,输出参数的值将被保存和分析。图 06在 FB200中,有对 FC5 “AG_SEND“ 和 FC6 “AG_RCV“产生的相关 STATUS 值发生频率的评价,该信息保存在 FB200的统计接口参数 “STATISTIC“ ,数据类型为“Structure“ 。图 07通过变量“#STATISTIC.ON_OFF“可以打开/ 关掉 STATUS 评价。 默认 STATUS 评价打开。图 08特殊情况如果通过建立 TCP 连接交换数据,只有整个接收缓存区填满的情况下,输出参数“NDR“ 才能被置位。因此输出参数 “LEN“的值总是表示了接收缓冲区的整个长度。下载 STEP7项目示例 STEP7 项目包含了调用 FC5和 FC6并包括状态评估的示例程序,程序由 STEP 7 V5.4 SP3创建。S7_300_SEND_RCV.zip ( 45 KB )注意从 SIMATIC_NET_CP 库中复制最新的通信块 FC5 和 FC6 到用户程序,并在程序中调用它们。