- {{item.name}}
如何使用通讯功能块FC11和FC12用于PROFINET IO 控制器编程?
- 0
- 1390
- 3785
说明:
如果使用 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%未阅读,请登录后下载/查看文档
- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错
- 如何编写 PROFINET IO 设备通讯块 FC11 和 FC12
- 怎样使用通讯功能块 FC50 和 FC60 编程?
- 怎样使用通讯功能块FC5和FC6?
- S7-300中如何使用通信功能块FB12 "BSEND" 和 FB13 "BRCV"进行数据交换?
- 如何使用 SIMATIC NET PC 软件为 SIMATIC NET OPC 服务器配置作为 PROFINET IO 控制器的 PC 站与作为 PROFINET IO 设备的 S7 站建立连接
- 如何使用FB15 "PUT" 和 FB14 "GET"功能块进行组态和编程,创建一个 S7 连接用于一个S7-1200和一个S7-300 CPU的数据传输?
- Sinamics S120 通讯功能介绍
- 使用FB126功能块对PROFIBUS DP和PROFINET IO网络进行诊断时要注意什么?
- 在PROFIBUS中,主站在读取和写入从站连续数据时(大于4个字节)需要使用SFC14和SFC15。那么在PROFINET中控制器读取或写入IO设备连续数据时又需要怎么处理?
- PROFINET IO 设备提示版本不一致是什么意思和如何使用网络设备的在线诊断 ?
{{item.nickName}}