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

说明:
如果您要使用 S7-300 工业以太网模板作为 PROFINET IO 控制器或者 PROFINET IO 设备,那么您必须调用一下通讯功能块在用户程序中:n

  • FC11 "PNIO_SEND"
  • FC12 "PNIO_RECV"

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

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

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

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

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

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

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

  • CPU 319-3PN/DP

STEP 7 项目包括以下被组态成 PROFINET IO 设备的 S7-300站:n

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

如何编写 PROFINET IO 设备通讯块 FC11 和 FC12
图. 01:组态n

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

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

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

如何编写 PROFINET IO 设备通讯块 FC11 和 FC12
图. 02:PROFINET IO设备 CP343-1 Lean 的输入/输出地址区:n

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

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

如何编写 PROFINET IO 设备通讯块 FC11 和 FC12
图. 03: PROFINET IO设备 ET 200S 的输入/输出地址区:n

最终的地址区是:n

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

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

  • OB1
    OB1 被循环调用。 在这个OB中, FB100 (实例 DB: DB100)被调用。

如何编写 PROFINET IO 设备通讯块 FC11 和 FC12
图. 04: OB1n

  • FB100
    FB100 被调用在 OB1 中。 在这个 FB 中,FC11 “PNIO_SEND”和 FC12 “PNIO_RECV” 被调用。

如何编写 PROFINET IO 设备通讯块 FC11 和 FC12
图. 05: 调用 FC11 "PNIO_SEND"n

如何编写 PROFINET IO 设备通讯块 FC11 和 FC12
图. 06: 调用 FC12 "PNIO_RECV"n

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

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

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

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

发送接收缓冲区 (例如 数据块) 包含了被发送和接收的数据,长度至少要和被定义的发送和接收数据一样长。在这个例子中,DB包含的发送数据长度必须大于等于 24字节并且 DB 包含的接收数据长度必须大于等于 20 字节。n

如何编写 PROFINET IO 设备通讯块 FC11 和 FC12
图. 07: CP343-1 Lean 的属性对话框-> “ 地址”标签n

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

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

如何编写 PROFINET IO 设备通讯块 FC11 和 FC12
图. 08:保存 FC11 和 FC12 的状态字n

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

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

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

如何编写 PROFINET IO 设备通讯块 FC11 和 FC12 FC11_und_FC12_DEV.zip ( 296 KB )

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

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

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

相关推荐

发表回复

登录后才能评论