- {{item.name}}
怎样使用通讯功能块 FC50 和 FC60 编程?
- 1
- 721
- 9515
使用下面的连接通信,必须在S7-400的S7程序中调用通信功能块 FC50 "AG_LSEND" 和 FC60 "AG_LRECV" 。
- TCP 连接
- ISO-on-TCP 连接 (RFC 1006)
- ISO 传输连接
- UDP 连接
- FDL 连接
通讯功能块 FC50 “AG_LSEND” 和 FC60 “AG_LRECV”的特点
- FC50 和 FC60 是异步通讯功能块。
- FC50 和 FC60 的运行需要几个 OB1 周期。
- FC50 由输入参数 "ACT"激活。
- 通讯任务结束由 “DONE”, "NDR" 或 “ERROR”指示。
- AG_LSEND 和 AG_LRECV 可以通过同一个连接同时通讯。
- 最新版本的功能块 FC50 "AG_LSEND" 和 FC60 "AG_LRECV" 可以在 SIMATIC_NET_CP 库"CP 400 > Blocks" 里找到。
例程说明
S7 程序包含来自 SIMATIC_NET_CP 库的通讯功能块 FC50 “AG_LSEND”和 FC60 “AG_LRECV”的调用。 FC50 “AG_LSEND”用于发送数据到 S7 或 S5 站,PC 或者第三方系统。FC60 “AG_LRECV” 用于接收来自 S7 或 S5 站,PC站或第三方系统的数据。
例程中通讯功能块 FC50 "AG_LSEND" 和 FC60 "AG_LRECV" 用于 ISO-on-TCP 连接的通讯。
首先创建 S7-400 站的硬件配置。
注意:
将 MB10 配置为时钟标志。发送任务由该时钟标志触发。保存并编译 S7-400 站的硬件组态并装载到 CPU。
例程中用到了定时器 T10 。
然后在 NetPro 中为 CPU 配置一种上面提到的通讯连接。如果通讯伙伴也在该 STEP7 项目中一起配置,可以配置一个指定的通讯连接。如果通讯伙伴没有与 S7-400 站在同一个 STEP7 项目下,可以配置一个未指定的通讯连接。配置通讯连接时,确认 IP 地址或 Profibus 地址已经正确分配。 同样,确认 PORT,TSAP,LSAP 已经正确分配。这些 用于识别通讯伙伴间的通讯连接。
FC50 “AG_LSEND”和 FC60 “AG_LRECV”的输入参数“ID”和“LADDR”必须被指定。该参数在通讯连接的属性对话框“常规”选项卡中设置。
图1
STEP7 的程序由块 OB100, OB1, FB200, DB200, DB201, FC50 和 FC60 组成。
OB100:
OB100 是启动组织块,当 CPU 重新启动(暖启动)时运行。在这个组织块中通过 M1.0 使能第一次通讯触发器。
OB1:
OB1 循环组织块。在这个组织块中调用 FB200 (背景数据块:DB200) ,使用 M0.3“INIT” 作为参数 (INIT_COM)。FB200一旦执行则复位 M0.3。
图. 02
FB200
FB200 在 OB1 中调用。在 FB200 中调用了 FC50 “AG_LSEND” 和 FC60 “AG_LRECV”。
参数化FC50"AG_LSEND"
在FC50 的输入参数“ACT”得到一个上升沿后触发发送任务。 时钟标志位 M10.7和变量 “SND_BUSY”及"CONNECTION_BROKEN_SEND"参数控制发送任务的触发。当发送任务正在执行时,“SND_BUSY”被置位 ,此时不能触发新的发送任务,由于功能块的执行是异步的,并可以持续几个周期,所以联锁功能尤其重要。如果不等待第一个发送工作成功完成或出错终止就不间断的触发新的发送任务会引起通讯过载。 如果连接没有建立,通讯块每10s被调用1次同时触发发送任务。
输入参数 “ID” 和 “LADDR”的值必须取自 NetPro中通讯连接的属性对话框(参见 图01)。需要为 FC50 的 “SEND”输入参数指定包含将要发送数据的数据区地址和长度(发送缓冲区), 例如: P#DB201.DBX0.0 BYTE 100。
在“LEN”输入参数中键入要发送的字节数,本例中是100。
输出参数 “DONE”, “ERROR” 和 “STATUS”用于任务评估,并且只在同一个周期内有效。
图.03
图. 04
当发送任务成功完成后,“SND_BUSY” 被复位。 然后可以触发下一个发送任务。
图.05
如果发送任务出错终止,“SND_BUSY” 也会被复位 ,FC50 输出参数 “STATUS”的值被保存用于故障分析。
如果 “STATUS”输出参数的值是 0x7000Hex (28672Dec),FC50 “AG_LSEND”再次被调用。
图.06
如果输出参数“STATUS”的值是 0x8183Hex (32381Dec) 或者 0x8304Hex (31996Dec), 也就是说通信连接不能建立的时候,变量"CONNECTION_BROKEN_SEND" 被置位为1持续10s,在此期间FC50不被调用和处理,然后新的发送任务被触发,如果连接仍然不能建立, "CONNECTION_BROKEN_SEND"再次被置位为1并持续10s,当连接不能建立的时候每10秒发起一次发送任务。
图07
参数化 FC60 "AG_LRECV"
接收任务通过M0.1为“TRUE”控制触发,M0.1为“TRUE始终为1,那么FC60 "AG_LRECV" 一直处于准备好接收状态,能够随时接收数据
输入参数 “ID” 和 “LADDR”的值必须取自 NetPro中通讯连接的属性对话框(参见 图 01)。需要为 FC60 的输入参数“RECV”指定包含接收数据的数据区域地址和长度(接收缓冲区),例如:P#DB201.DBX100.0 BYTE 100。
图08
输出参数“NDR "用于表示已经接收到了新数据。输出参数 " LEN "表示接收到的数据长度。
如果没有成功接收到数据,输出参数“STATUS”的值被保存用于故障分析。
图.09
如果输出参数 "STATUS" 的值是 0x8183Hex (32381Dec) 或者 0x8304Hex (31996Dec), 即不能建立连接时,变量"CONNECTION_BROKEN_RECV"被置位为1保持10秒。在此期间,FC60不能被调用同时没有数据被接收。只有在过了10秒后才可能再次接收数据。
图.10
成功接收数据的长度保存在静态变量里。
图.11
在 FB200 中,对 FC50 "AG_LSEND" 和 FC60 "AG_LRECV" 的 STATUS 各种值出现次数有评估。这些信息保存在 FB200 的"Structure"类型的变量"STATISTIC" 中,这是 FB200 统计信息接口参数。
图.12
可以通过变量"#STATISTIC.ON_OFF" 打开/关闭 STATUS 评估,该状态评估默认为开启状态。
图.13
特例
如果通过 TCP连接进行数据交换,只有在接收缓冲区满后才会置位“NDR”输出参数。输出参数“LEN”的数值总是指示接收缓冲区的总长度。
下载 STEP 7 项目:
例程 STEP 7 项目包括项目"net_s7400_lsend_lrecv.zip"。
解压"net_s7400_lsend_lrecv.zip" 文件后,可以使用STEP7 打开和编辑此项目。
net_s7400_lsend_lrecv.zip (213,5 KB)
调用环境
此FAQs中的截屏和下载文件由STEP 7 V5.6 创建。
提示
从SIMATIC_NET_CP 库 或者标准库中拷贝最新版本的通讯块FC50和 FC60 到你的程序中,然后在程序中调用它们。
关键字
发送,接收
http://support.automation.siemens.com/CN/view/zh/18513371
剩余80%未阅读,请登录后下载/查看文档
- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错
- 怎样使用通讯功能块FC5和FC6?
- 如何使用通讯功能块FC11和FC12用于PROFINET IO 控制器编程?
- S7-300中如何使用通信功能块FB12 "BSEND" 和 FB13 "BRCV"进行数据交换?
- Sinamics S120 通讯功能介绍
- 怎样使用 SIMATIC 程序控制 CU320(带有 DriveCLIQ)的 ALM (调节型电源模块) 功能?
- SINUMERIK 828D, 840D sl: RCS commander远程遥控使用通讯端口
- 在模拟输入模块6ES7 331-7PF01-0AB0中应该如何处理未使用通道和导线断线这两种问题?
- 怎样使用CAD Creator
- 怎样使用CAD Creator
- 怎样使用DT Configurator
{{item.nickName}}