怎样使用通讯功能块FC5和FC6

更新时间:2023-06-01 10:17:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

使用下面的通讯连接,在S7-300中的S7程序中,必须调用通信功能块 FC5 "AG_SEND" 和 FC6 "AG_RECV" 。

TCP 连接 ISO-on-TCP 连接 (RFC 1006) ISO 传输连接 UDP 连接 FDL 连接

通信功能块 FC5 "AG_SEND" 和 FC6 "AG_RECV" 的特点

FC5和FC6是异步通信方式。 在本例中,是通过OB1调用这些功能块的 。(见 Entry ID: 2795485) 。 能够在OB1的几个循环中执行. FC5通过输入参数 "ACT"被激活。 由"DONE"或 "ERROR"表示工作结束状态。 AG_SEND 和 AG_RECV能够通过连接实时通信。 在SIMATIC_NET_CP 库中 "CP 300 > Blocks",能够找到功能块 FC5 "AG_SEND"

V4.2 和 FC6 "AG_RCV" V4.7。

示例程序

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站中进行硬件配置。

注意Note:

设置MB10 作为时钟字节,时钟标记触发发送请求,保存和编译S7-300硬件配置并下载到CPU中。在本示例程序中使用了定时器T10。

在NetPro中配置通信连接,如果通信对象在同一个S7项目中被设置,那么就能够设置一个指定的通信连接;如果通信对象没有在同一个S7项目中被设置,那么一个非指定的通信连接可以被设置。当设置通信连接时,确保正确的IP地址或者PROFIBUS 地址,以及正确的接口,TSAP,或者LSAP,这些是在通信对象之间建立通信连接的条件。

在通信连接-> "General"属性对话框中,能够找到通信功能块 FC5 "AG_SEND" 和 FC6 "AG_RECV"输入参数"ID" 和 "LADDR"。

图一:设置通信连接

STEP7程序包含了OB100, OB1, FB200, DB200, DB201, FC5 和 FC6块。

OB100:

OB100是CPU重新启动(热启动)块。在这个OB块中,通过标记M0.3 "START-UP".使能首次通信。

OB1:

OB1是循环调用块。调用参数(INIT_COM)为M0.3 "START-UP"的FB200(背景数据块:DB200),在FB200运行后,复位M0.3 "START-UP"。

图二OB1

FB200

OB1调用FB200,在FB200中调用通信功能块 FC5 "AG_SEND" 和 FC6 "AG_RECV",在输入参数"ACT"输入一个上升沿,来触发发送请求。通过时钟标记M10.7和变量 "SND_BUSY".来控制发送请求。如果发送请求正在运行,这时候"SND_BUSY"被置位,那么触发一个新的发送请求是不可能的。

这个互锁是非常重要的,因为通信是异步的,并且能够持续几个循环周期。持续的触发新的发送请求,而没有等待检查工作是否结束,这将会产生通信过载的错误。

输入参数"ID" 和 "LADDR"的值必须和通信连接的属性对话框中的参数一致(见图一)。在FC5的输入参数 "SEND"中,必须指定被发送的数据区域(发送缓冲区)的地址和长度,例如

P#DB201.DBX0.0 BYTE 100 。在输入参数 "LEN"中,需要输入被发送的字节长度(100)。输出参数"DONE", "ERROR"和 "STATUS"用来表示同一个循环中通讯完成情况及状态。

图三FB200FC5 "AG_SEND" 调用

如果发送请求成功完成,"SND_BUSY"被复位,然后一个新的发送请求能够被再次触发。

如果发送请求产生错误,"SND_BUSY"同样被复位,并且FC5的"STATUS" 输出参数值作为错误记录被保存。

图四:FB200复位"SND_BUSY" 和保存"STATUS" 。

输入参数"ID" 和 "LADDR"的值必须和通信连接的属性对话框中的参数一致(见图一)。在FC6的输入参数 "RECV"中,必须指定接收的数据区域(接收缓冲区)的地址和长度,例如 P#DB201.DBX100.0 BYTE 100 。

图5:FB200调用

FC6 "AG_RECV"

输出参数 "NDR" 是表示新数据是否被接收,输出参数"LEN" 表示接收数据的长度。 如果没有成功接收数据,输出参数的值将被保存和分析。

图6 :FB200:FC6的状态和接收的数据的长度

在FB200中,有对FC5 "AG_SEND" 和 FC6 "AG_RCV"产生的状态值的分析,在数据类型"Structure".的变量"STATISTIC"里保存着FB200的这些统计接口参数。

图7:数据类型"Structure" 的统计变量 "STATISTIC"

通过变量"#STATISTIC.ON_OFF"可以打开/关掉状态分析。

图8:打开/关闭状态分析

特殊情况:

如果通过TCP连接建立数据交换,在整个数据缓存区都被占用的情况下,这个输出参数"NDR"仅仅能被置位。

输出参数 "LEN"的值总是表示了缓冲区的整个长度。

下载的STEP7项目:

这个STEP7 项目包含了一个调用具有状态分析的FC5和FC6 示例程序,它由 STEP 7 V5.4 SP3创建。

S7_300_SEND_RCV.zip ( 45 KB )

关键字:

FUP, SEND/RECEIVE,FUP, SEND/RECEIVE, 示例程序,STEP7配置,数据传输。

本文来源:https://www.bwwdw.com/article/jdc1.html

Top