• {{item.name}}
{{item.name}}
{{item2.name}}
更多
常问问题

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

star star star star star
5.0 分
  • 通信(通讯)
  • 系统接口SIMATIC S7
文档编号:26558253| 文档类型:常问问题| 发布时间:2023年12月04日
  • 0
  • 1390
  • 3785
内容预览: 说明: 如果使用 S7-300 的CP模板作为PROFINET IO控制器或IO设备的情况下,必须调用下列的通讯功能块: ......

说明:

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

  • FC11 "PNIO_SEND"
  • FC12 "PNIO_RECV"

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

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

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

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

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

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

组态描述:

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

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

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

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


图 01: 组态

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

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


图02: 带IM151-3 PN I/O的ET200S I/O域组态

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

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


图03:ET 200S PN HF  I/O域组态

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

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

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

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

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


图04: OB1

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


图 05: 调用FC11 "PNIO_SEND"


图06: 调用FC12 "PNIO_RECV"

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

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

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

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

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


图07: CP343-1属性对话框"Addresses" 表

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

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


图08: F11和FC12状态保存

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

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

FC11_und_FC12_CTRL.zip ( 553 KB )

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


您可以前往全球资源库查看此文档:

https://support.industry.siemens.com/cs/cn/zh/view/26558253

剩余80%未阅读,请登录后下载/查看文档

  • 评论
更多
  • 分享

    扫码分享

提示
您即将前往“全球技术资源库”。
“全球技术资源库”的用户名与本地支持中心(下载中心、技术论坛、找答案、1847工业学习平台)的用户名不通用。如果需要在全球技术资源库下载文档,您需要重新登录或注册。
确定

0元领课点我

信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。