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

如何编写 PROFINET IO 设备通讯块 FC11 和 FC12

star star star star star
5.0 分
  • 通信(通讯)
文档编号:31764614| 文档类型:常问问题| 发布时间:2023年10月24日
  • 0
  • 903
  • 7162
内容预览: 说明: 如果您要使用 S7-300 工业以太网模板作为 PROFINET IO 控制器或者 PROFINET IO 设备, 那么您必须调用一下通讯功能块在用户程序中: FC11 "PNIO_SEND" FC12 "PNIO_RECV" 通讯块 FC11 “PNIO_SEND” 和 FC12 “PNIO_RECV” 的特性: ......

如果将S7-300的工业以太网CP用作PROFINET IO控制器或PROFINET IO设备,则必须在用户程序中调用通讯功能FC11“PNIO_SEND”和FC12“PNIO_RECV”。


通讯块 FC11 “PNIO_SEND” 和 FC12 “PNIO_RECV” 的特性:

  • FC11 和 FC12 是同步通讯块。
  • 块被包含在 S7-300 控制器“SIMATIC_NET_CP” 库中。
  • 块必须被调用在 OB1 中 (参看文档 ID: 2795485) 。
  • 功能调用结束通过 “DONE”, “NDR” 或 “ERROR” 表示。

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

  • 作为 PROFINET IO 控制器
    功能块通过通讯处理器传送指定输出范围内的过程数据 (输出) 到 PROFINET IO 设备并且作为状态显示提供PROFINET IO 设备输出的IO消费者状态(IOCS)。
  • 作为 PROFINET IO 设备
    功能块读取 PROFINET IO 设备 CPU 的过程映像输入区并且传送它们到 PROFINET IO 控制器 (被组态的输入地址);此外作为状态显示提供 PROFINET IO 控制器输出的IO消费者状态(IOCS)。

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

  • 作为 PROFINET IO 控制器
    功能块接收 PROFINET IO 设备(控制器输入)的过程数据(输入) 并且提供来自于 PROFINET IO 设备的指定输入区的IO提供者状态(IOPS)。
  • 作为 PROFINET IO 设备
    功能块接收 PROFINET IO 控制器发送的数据 (被组态的输出地址) 并把 PROFINET IO 控制器的传送数据的IO提供者状态(IPOS)写到 PROFINET IO 设备已组态好的输出数据区中。

组态描述
STEP 7 项目包含以下被组态成 PROFINET IO 控制器的 S7-300 站:

  • CPU 319-3PN/DP

STEP 7 项目中以下模块被组态成 PROFINET IO 设备:

  • CPU 315-2DP 和 CP343-1 Lean (6GK7 343-1CX10-0XE0)
  • ET 200S


图. 1: 组态

以下输入/输出模块被组态到 PROFINET IO 设备 CP343-1 Lean中:

  • 地址是 0-15 的 16 字节输入模块
  • 地址是 16-23 的 8 字节输入模块
  • 地址是 0-15 的 16 字节输出模块
  • 地址是 16-19的 4 字节输出模块

这表明输入地址区和输出地址区分别是 24 字节 (0-23) 和 20 字节 (0-19)。 输入和输出首地址可以不是"0".


图. 2:  PROFINET IO 设备 CP343-1 Lean 的输入/输出地址区

接下来的输入/输出模块被组态到 ET 200S 中

  • 地址是 20.0-20.1 的 2 位输出模块


图. 3: PROFINET IO 设备 ET 200S 的输入/输出地址区

最终的地址区是:

  • 输入: 0-23 = 24 字节
  • 输出: 0-20 = 21 字节

PROFINET IO设备的用户程序描述

在此例中, CP343-1 Lean 连接一个S7-300站作为 PROFINET IO 设备被用到一个 PROFINET IO 系统中。字节 MB0 被定义成 S7-300 CPU 时钟位。STEP 7 程序包括 OB1,FB100,DB30,DB31,DB12,FC11 和 FC12。

  • OB1
    OB1 循环调用。 在OB1中调用FB100 (实例 DB: DB100)。


图. 4: OB1

  • FB100
    OB1 中调用FB100。 在FB100 中调用 FC11 “PNIO_SEND” 和 FC12 “PNIO_RECV” 。


图. 5: 调用 FC11 "PNIO_SEND"


图. 6: 调用 FC12 "PNIO_RECV"

输入参数 MODE=0, 因为通讯处理器仅被用作 PROFINET IO 设备。如果通讯处理器被同时用作 PROFINET IO 控制器和 PROFINET IO 设备,那么输入参数 MODE=1。

FC11 “ PNIO_SEND” 的输入参数 LEN 是你组态的 CP343-1 Lean (24 字节) 的输入地址区的长度。 这段数据长度被指定为 FC11 “PNIO_SEND” 发送数据的 LEN 参数。这段数据必须与已组态的的输入 (24 字节) 保持一致。

FC12 “ PNIO_RECV” 的输入参数 LEN 是你组态的 CP343-1 Lean (20 字节) 的输出地址区的长度。 这段数据长度被指定为 FC12 “PNIO_RECV” 发送数据的 LEN 参数。这段数据必须与已组态的的输出 (20字节) 保持一致。

在此示例中,以下数据区域用于IO数据:

  • 输入地址范围的DB30:在本例中,DB30的长度必须至少为24字节。
  • 输出地址范围的DB31:在本例中,DB31的长度必须至少为20字节。

在输入通讯功能参数 CPLADDR 需要指定 PROFINET IO 设备的模块地址。你可从硬件组态中可以得到它,在工业以太网通讯模块 -> “ 地址” 标签中 (参看 图. 6)。在这个例子中, CP343-1 Lean  模块地址是 256dec = 100hex


图. 7: CP343-1 Lean 的属性对话框-> “ 地址” 标签

FC11 “PNIO_SEND” 和 FC12 “PNIO_RECV” 的输出参数 “DONE”、“NDR”、“ERROR” 和 “STATUS”是通讯功能块的工作标示位。
如果发送任务成功完成,那么 FC11 “PNIO_SEND”的 “DONE”将被置位。
如果接收任务成功完成 (例如:数据被接收到) ,那么 FC12 “PNIO_RECV”的 “NDR”将被置位。

如果 FC11 “PNIO_SEND” 和 FC12 “PNIO_RECV” 由于错误而结束,可通过状态字进行错误分析。


图. 8: 保存 FC11 和 FC12 的状态字

在PROFINET IO设备的用户程序中访问CP 343-1 Lean的IO数据

在本例中,有两个DB块存储IO数据。

DB30对应CP 343-1输入的地址范围。DB31对应CP 343-1 Lean输出的地址范围。在用户程序中,通过加载和传输命令访问数据块区域,以读取和写入IO地址。


  • T DB30.DBB0 相当于 T IB0
  • L DB31.DBB0 相当于 L QB0

PROFINET IO 控制器的用户程序描述
在这个例子中,一个带有集成以太网接口的 S7-300 CPU 被用作 PROFINET IO 控制器。 字节 MB0 被定义成 S7-300 CPU时钟位。
STEP 7 程序包括 OB1, FB100 和 DB20。

在用户程序中没有必要调用通讯功能块。可以通过装载和传送命令来访问输入/输出区,例如,读出输入值和写值到输出。读到的输入值被保存到数据块 (DB20)中。

注意
包括PROFINET IO控制器中通信块FC11和FC12调用的示例程序,可参考如下条目 ID:   26558253


STEP 7 项目下载
接下来的 STEP 7 项目包含一个调用了 FC11 和 FC12 的事例程序。这个程序通过 STEP 7 V5.4 SP3 创建。

FC11_und_FC12_DEV.zip ( 296 KB )

用 SIMATIC Manager 解压 “FC11_und_FC12_DEV.zip” 文件通过菜单“File > Dearchive”。 STEP 7 项目解压完所有子文件后,你可以使用SIMATIC Manager打开并编辑 STEP 7 项目


您可以前往全球资源库查看此文档: https://support.industry.siemens.com/cs/cn/zh/view/31764614

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

  • 评论
更多
  • 分享

    扫码分享

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

0元领课点我

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