如何使用通讯功能块FC11和FC12用于PROFINET IO 控制器编程?

n

说明:

如果使用 S7-300 的CP模板作为PROFINET IO控制器或IO设备的情况下,必须调用下列的通讯功能块:n

  • FC11 "PNIO_SEND"
  • FC12 "PNIO_RECV"

通讯功能块FC11 "PNIO_SEND" 和FC12 "PNIO_RECV"的特点如下:n

  • FC11和FC12是同步通信功能块。n
  • 在 "SIMATIC_NET_CP"库的S7-300中可以调用该功能块。n
  • 功能块必须在OB1中调用 (参考条目:2795485)n
  • 通过 "DONE", "NDR" 或"ERROR"参数标识通讯结束。

FC11 “PNIO_SEND”通讯功能块的特点:n

  • 作为PROFINET IO控制器
    功能块发送所指定的输出范围的过程数据(输出)给IE CP,然后传输给PROFINET IO设备。功能块状态显示的是PROFINET IO设备输出的IO Consumer 状态(IOCS)。n
  • 作为PROFINET IO设备
    该功能块读取CPU的预处理的 PROFINET IO 设备过程数据,然后传输它们给IO控制器(组态 I 地址),功能块的状态显示PROFINET IO控制器的IO Consumer状态(IOCS)。

FC12 “PNIO_RECV”通讯功能块的特点:n

  • 作为IO控制器
    该功能块从PROFINET IO设备(控制器的输入)接受过程数据(输入),并显示来自于PROFINET IO设备中指定的输入区输入的IO Provider状态(IOPS)。n
  • 作为IO设备
    该功能块接收PROFINET IO控制器所组态的(组态Q地址)转发数据和PROFINET IO控制器的Provider状态(IOPS),并把数据写到PROFINET IO设备的CPU所预留的过程输出数据区。

组态描述:

Step7项目中包含下列的S7-300站作为IO控制器:n

  • CPU 315-2DP带有CP343-1 (6GK7 343-1EX21-0XE0)

Step7项目中组态了下列模块作为IO设备:n

  • ET 200S 带有IM151-3 PN (6ES7 151-3AA10-0AB0)n
  • ET 200S带有IM151-3 PN HF (6ES7 151-3BA22-0AB0)

如何使用通讯功能块FC11和FC12用于PROFINET IO 控制器编程?
图01: 组态n

对于带IM151-3 PN的ET 200S 进行以下模块的输入输出域组态:n

  • 4 DO 地址为Q0.0-i0.3n
  • 4 DI 地址为I0.0-0.3n
  • 4 DO 地址为Q1.0-1.3

如何使用通讯功能块FC11和FC12用于PROFINET IO 控制器编程?
图02: 带IM151-3 PN I/O的ET200S I/O域组态n

对于带IM151-3 PN HF的ET 200S 进行以下模块的输入输出域组态:n

  • 2 DO 地址为Q20.0-20.1n
  • 4 DI 地址为I10.0-10.3

如何使用通讯功能块FC11和FC12用于PROFINET IO 控制器编程?
图03:ET 200S PN HF I/O域组态n

这意味着总的地址域如下:n

  • 输入地址: 0 到10 = 11字节
  • 输出地址: 0到 20 = 21 字节

注意:
输入输出域必须以"0"为起始地址。n

用户程序说明:
本例中,带有CP343-1的S7-300站作为PROFINET IO控制器。
STEP-7 程序包含OB1, FB100, DB30, DB31, DB12, FC11及FC12。n

  • OB1
    OB1 被循环调用,在OB1中调用(背景DB: DB100).

如何使用通讯功能块FC11和FC12用于PROFINET IO 控制器编程?
图04: OB1n

  • FB100
    FB100在OB1中循环调用,在FB100中调用 FC11 "PNIO_SEND"及FC12 "PNIO_RECV".

如何使用通讯功能块FC11和FC12用于PROFINET IO 控制器编程?
图05: 调用FC11 "PNIO_SEND"n

如何使用通讯功能块FC11和FC12用于PROFINET IO 控制器编程?
图06: 调用FC12 "PNIO_RECV"n

由于IE CP 是作为PROFINET IO 控制器,因此参数MODE=0,如果IE CP既作为PROFINET IO 控制器又作为PROFINET IO 设备,则参数MODE=1。n

FC11 "PNIO_SEND"的输入参数LEN为所组态输出域总的地址长度(21字节),发送数据的数据存储区通过FC11 "PNIO_SEND"的SEND 参数来设定,该数据的长度必须与所组态的输出域地址长度相一致(21字节)。n

FC12 "PNIO_RECV"的输入参数LEN为所组态输入域总的地址长度(11字节),接收数据的数据存储区通过FC12 "PNIO_RECV"的RECV参数来设定,该数据的长度必须与所组态的输入域地址长度相一致(11字节)。n

发送和接收缓冲区(比如数据块),即包含所要发送或接收的数据,必须至少与所组态的相一致,在本例中,包含发送数据的DB块至少不能低于21字节,包含接收数据的DB块至少不能低于11字节。n

通讯功能输入参数 CPLADDR 为所组态的PROFINET IO设备的模块地址,该参数可以从硬件组态中的CP卡属性对话框 CPs -> "Addresses"选项中获得,在本例中,CP343-1模块地址为256dec = 100hex。n

如何使用通讯功能块FC11和FC12用于PROFINET IO 控制器编程?
图07: CP343-1属性对话框"Addresses" 表n

FC11 "PNIO_SEND"和 FC12 "PNIO_RECV" 的输出参数"DONE", "NDR", "ERROR" 和"STATUS"用于对任务进行评估.
如果发送任务成功结束, FC11 "PNIO_SEND"的输出参数 "DONE" 被置1.
如果接受任务成功结束, 比如数据被接受,FC12 "PNIO_RECV" 的输出参数 "NDR" 被置1.n

如果FC11 "PNIO_SEND"和 FC12 "PNIO_RECV" 块执行出错, 该块的状态字被保存用于错误分析.n

如何使用通讯功能块FC11和FC12用于PROFINET IO 控制器编程?
图08: F11和FC12状态保存n

注意:
从入口条目ID号为31764614可以获得作为PROFINET IO 设备调用F11和FC12例子程序的具体描述.n

下载Step7项目:
下列STEP 7 项目中使用 FC11 和 FC12 并带有状态评估.该项目使用 STEP 7 V5.4 SP4创建.

如何使用通讯功能块FC11和FC12用于PROFINET IO 控制器编程? FC11_und_FC12_CTRL.zip ( 553 KB )

通过SIMATIC Manager 的菜单"File -> Dearchive"解压 "FC11_und_FC12_CTRL.zip" 文件,文件将被解压到子目录中,之后可以用SIMATIC Manager打开编辑STEP 7项目.

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc335190.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论