PGH FC-FB-S7CP 52

Download as pdf or txt
Download as pdf or txt
You are on page 1of 334

 用于 SIMATIC NET S7 CP 的程序块 ___________________

前言

___________________
有关处理的概述与常规信息 1

___________________
用于工业以太网的程序块 2
SIMATIC NET
___________
用于 PROFINET IO (S7-300)
的程序块
3

用于 SIMATIC NET S7 CP 的程序


___________
用于 PROFINET CBA 的程序

4

编程手册
___________________
用于 PROFIBUS 的程序块 5

___________
用于 PROFIBUS FMS 的程
序块
6

_______________
文档历史 ____
A

_______________
参考 ____
B

10/2012
C79000-G8952-C229-07
法律资讯
警告提示系统
为了您的人身安全以及避免财产损失,必须注意本手册中的提示。人身安全的提示用一个警告三角表示,仅与财产
损失有关的提示不带警告三角。警告提示根据危险等级由高到低如下表示。

危险
表示如果不采取相应的小心措施,将会导致死亡或者严重的人身伤害。

警告
表示如果不采取相应的小心措施,可能导致死亡或者严重的人身伤害。

小心
表示如果不采取相应的小心措施,可能导致轻微的人身伤害。

注意
表示如果不采取相应的小心措施,可能导致财产损失。

当出现多个危险等级的情况下,每次总是使用最高等级的警告提示。如果在某个警告提示中带有警告可能导致人身
伤害的警告三角,则可能在该警告提示中另外还附带有可能导致财产损失的警告。

合格的专业人员
本文件所属的产品/系统只允许由符合各项工作要求的合格人员进行操作。其操作必须遵照各自附带的文件说明,特
别是其中的安全及警告提示。 由于具备相关培训及经验,合格人员可以察觉本产品/系统的风险,并避免可能的危
险。

按规定使用 Siemens 产品
请注意下列说明:

警告
Siemens 产品只允许用于目录和相关技术文件中规定的使用情况。如果要使用其他公司的产品和组件,必须得到
Siemens 推荐和允许。正确的运输、储存、组装、装配、安装、调试、操作和维护是产品安全、正常运行的前
提。必须保证允许的环境条件。必须注意相关文件中的提示。

商标
所有带有标记符号 ® 的都是西门子股份有限公司的注册商标。本印刷品中的其他符号可能是一些其他商标。若第三
方出于自身目的使用这些商标,将侵害其所有者的权利。

责任免除
我们已对印刷品中所述内容与硬件和软件的一致性作过检查。然而不排除存在偏差的可能性,因此我们不保证印刷
品中所述内容与硬件和软件完全一致。印刷品中的数据都按规定经过检测,必要的修正值包含在下一版本中。

Siemens AG 文件订购号: C79000-G8952-C229 Copyright © Siemens AG 2008 - 2012.


Industry Sector Ⓟ 10/2012 本公司保留技术更改的权利 保留所有权利
Postfach 48 48
90026 NÜRNBERG
德国
前言

有关本手册的信息

目标组和动机

通过现成程序块(FC 和 FB)实现到通信服务的连接。 本手册为对 SIMATIC NET S7 CP 的


程序块进行了详细介绍。 它扩展了 STEP 7 组态工具在线帮助中的描述。

本手册面向 STEP 7 的程序员和维修人员。

本手册的结构

本手册根据网络类型和通信服务来编排结构。

将按照以下部分对每个程序块进行介绍:

● 含义

● 调用接口

● 工作原理

● 形式参数的说明

● 条件代码

这些章节可能包含更多特殊信息。

本手册的适用范围

本手册的当前版本适用于以下版本的 STEP 7 组态软件;

● STEP 7 V5.5

● STEP 7 Professional V11.0

说明
STEP 7 - 同义名称
在本手册后面的章节中使用术语 STEP 7 代替 STEP 7 V5.5 或 STEP 7 Professional

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 3
前言

说明
CP 类型和通信服务
请注意,每个程序块都支持某种通信服务。 因此,程序块的使用与支持特定通信服务
的 CP 类型的使用相关。

“程序块”的含义

本手册中使用的术语“程序块”是以下术语的通称:

● FC(函数)/FB(函数块)

STEP 7 V5.5 中使用的名称会考虑特定类型的程序块。 在 STEP 7 Professional 中,


会继续使用这些块类型并保持不变,只是在库中会显示符号名称。

● 指令

STEP 7 Professional 中系统内部程序块使用的名称。

说明
STEP 7/STEP 7 Professional 产品的组件
随 STEP 7 V5.5 和 STEP 7 Professional 提供的库内容可能有所不同。
本手册中的程序块总览介绍了针对 S7-300 和 S7-400 各种设备系列的可用性。但总览
不提供与 STEP 7 V5.5 或 STEP 7 Professional 各种库的可用性相关的信息。

本版本新增内容

本版本的手册包含编辑的更正信息。 下面部分中介绍了必要的变更:

部分 更改/补充

PROFIenergy (页 192) STEP 7 Professional 中 S7-300 的


PROFIenergy 程序块名称
组态限制/程序块所需的资源(以太网) 组态限制/程序块所需的资源
(页 158)
FB (PROFIBUS FMS)的数量限制/资源要
求 (页 324)
Ping 功能的工作原理 (页 70) SIMATIC NET CP 对 ICMP 帧的响应

用于 SIMATIC NET S7 CP 的程序块


4 编程手册, 10/2012, C79000-G8952-C229-07
前言

替换文档

本手册用于替换 07/2012 版的手册。

手册大全光盘(订货号 A5E00069051)中的 CP 文档

SIMATIC NET 手册大全 DVD 光盘随 S7 CP 发货。该 DVD 光盘定期更新,包含截至光


盘创建时有效的设备手册和描述。

有关当前程序块版本 (FC/FB) 的信息

始终对新用户程序使用最新的块版本。 可从 Internet 上的以下条目 ID 下找到有关最新块


版本和最新程序块的信息。

8797900 (http://support.automation.siemens.com/WW/view/de/8797900)

当更新 CP 时,请遵守 S7 CP 设备手册中与设备相关部分中的指示。

程序块 (FC/FB) 和 SIMATIC NET S7 CP 的版本历史

“SIMATIC NET S7 CP 的版本历史/当前下载”提供到目前为止 SIMATIC S7(工业以太


网、PROFIBUS、IE/PB Link)和程序块 (FC/FB) 所有可用 CP 的相关信息。

可从 Internet 上的以下条目 ID 下找到本文档的最新版本:

9836605 (http://support.automation.siemens.com/WW/view/de/9836605)

SIMATIC NET 快速入门 CD: 与通信相关的示例

可单独订购快速入门光盘,该光盘是程序示例和组态示例宝库。

可在 Internet 上的以下条目 ID 下直接定购该光盘:

21827955 (http://support.automation.siemens.com/WW/view/de/21827955)

关于 SIMATIC S7 和 STEP 7/STEP 7 Professional 的其它信息

SIMATIC 自动化系统组态软件 STEP 7/STEP 7 Professional 的附加文档以电子版形式包


含在 STEP 7 安装中。

有关 SIMATIC 自动化系统的信息还可在快速入门 CD 光盘和 Internet 上的客户支持在线


服务中找到,网址为:

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 5
前言

● Hotspot-Text (http://www.automation.siemens.com/net/index_00.htm)
(关于 SIMATIC NET 的常规信息)

● Hotspot-Text (http://support.automation.siemens.com/WW/view/de)
(产品信息和下载)

SIMATIC NET 词汇表

在 SIMATIC NET 词汇表部分针对本文档中所用的专业术语进行了解释。

用户可在以下位置找到 SIMATIC NET 词汇表:

● SIMATIC NET 手册集

该 DVD 随一些 SIMATIC NET 产品一起提供。

● Internet 上的以下条目 ID:

50305045 (http://support.automation.siemens.com/WW/view/zh/50305045)

用于 SIMATIC NET S7 CP 的程序块


6 编程手册, 10/2012, C79000-G8952-C229-07
目录

前言 ..................................................................................................................................................3
1 有关处理的概述与常规信息 .............................................................................................................13
1.1 用于工业以太网/PROFINET 的程序块................................................................................ 13
1.2 用于 PROFIBUS 的程序块 ................................................................................................. 16
1.3 用于调用程序块的参数 ....................................................................................................... 18
1.4 用于CP和连接分配的参数(输入参数).................................................................................. 18
1.5 用于指定CPU数据区的参数(输入参数) ............................................................................... 19
1.6 状态信息(输出参数) ............................................................................................................ 20
2 用于工业以太网的程序块.................................................................................................................21
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)................................................... 21
2.1.1 程序块及其用途概述 ........................................................................................................... 21
2.1.2 AG_SEND/AG_LSEND/AG_SSEND .................................................................................. 26
2.1.2.1 含义和调用 - AG_SEND / AG_LSEND / AG_SSEND ......................................................... 26
2.1.2.2 AG_SEND / AG_LSEND / AG_SSEND如何工作 ................................................................ 27
2.1.2.3 形式参数的解释 - AG_SEND / AG_LSEND / AG_SSEND .................................................. 30
2.1.2.4 AG_SEND、AG_LSEND 和 AG_SSEND 的状态代码 ........................................................ 32
2.1.3 AG_RECV/AG_LRECV/AG_SRECV .................................................................................. 34
2.1.3.1 含义和调用 - AG_RECV / AG_LRECV / AG_SRECV ......................................................... 34
2.1.3.2 AG_RECV / AG_LRECV / AG_SRECV如何工作 ................................................................ 35
2.1.3.3 形式参数的解释 - AG_RECV / AG_LRECV / AG_SRECV .................................................. 41
2.1.3.4 AG_RECV、AG_LRECV 和 AG_SRECV 的条件代码 ........................................................ 43
2.2 通过 FETCH/WRITE 进行访问协调的程序块...................................................................... 46
2.2.1 程序块及其用途概述 ........................................................................................................... 46
2.2.2 AG_LOCK .......................................................................................................................... 48
2.2.2.1 含义和调用 - AG_LOCK ..................................................................................................... 48
2.2.2.2 形式参数的解释 - AG_LOCK .............................................................................................. 49
2.2.2.3 AG_LOCK的条件代码......................................................................................................... 49
2.2.3 AG_UNLOCK ..................................................................................................................... 50
2.2.3.1 含义和调用 - AG_UNLOCK ................................................................................................ 50
2.2.3.2 形式参数的解释 - AG_UNLOCK ......................................................................................... 52
2.2.3.3 AG_UNLOCK的条件代码 ................................................................................................... 52
2.3 用于连接和系统诊断的程序块............................................................................................. 53
2.3.1 AG_CNTRL ........................................................................................................................ 53
2.3.1.1 含义和调用 - AG_CNTRL ................................................................................................... 53
2.3.1.2 AG_CNTRL如何工作 .......................................................................................................... 55

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 7
目录

2.3.1.3 形式参数的解释 - AG_CNTRL .............................................................................................56


2.3.1.4 AG_CNTRL代码 ..................................................................................................................57
2.3.1.5 命令和作业结果 - AG_CNTRL .............................................................................................59
2.3.2 AG_CNTEX .........................................................................................................................67
2.3.2.1 含义和调用 - AG_CNTEX....................................................................................................67
2.3.2.2 AG_CNTEX 的工作原理 ......................................................................................................69
2.3.2.3 Ping 功能的工作原理...........................................................................................................70
2.3.2.4 形式参数的说明 - AG_CNTEX.............................................................................................72
2.3.2.5 AG_CNTEX 的代码 .............................................................................................................74
2.3.2.6 命令和作业结果 - AG_CNTEX.............................................................................................75
2.4 用于 FTP 服务的程序块.......................................................................................................86
2.4.1 FTP概述 ..............................................................................................................................86
2.4.2 FTP_CMD - 用于 FTP 服务的通用程序块 ............................................................................87
2.4.2.1 含义和调用 - FTP_CMD ......................................................................................................87
2.4.2.2 输入参数 - FTP_CMD..........................................................................................................89
2.4.2.3 输出参数和状态信息 - FTP_CMD ........................................................................................94
2.4.2.4 将 FC 40-44 移植到 FTP_CMD ...........................................................................................98
2.4.3 FTP_CONNECT................................................................................................................100
2.4.3.1 含义和调用 - FTP_CONNECT...........................................................................................100
2.4.3.2 形式参数的解释 - FTP_CONNECT....................................................................................101
2.4.4 FTP_STORE .....................................................................................................................102
2.4.4.1 含义和调用 - FTP_STORE ................................................................................................102
2.4.4.2 形式参数的解释 - FTP_STORE .........................................................................................103
2.4.5 FTP_RETRIEVE................................................................................................................104
2.4.5.1 含义和调用 - FTP_RETRIEVE...........................................................................................104
2.4.5.2 形式参数的解释 - FTP_RETRIEVE ...................................................................................105
2.4.6 FTP_DELETE....................................................................................................................107
2.4.6.1 含义和调用 - FTP_DELETE ..............................................................................................107
2.4.6.2 形式参数的解释 - FTP_DELETE .......................................................................................107
2.4.7 FTP_QUIT.........................................................................................................................109
2.4.7.1 含义和调用 - FTP_QUIT....................................................................................................109
2.4.7.2 形式参数的解释 - FTP_QUIT.............................................................................................109
2.4.8 用于CP和连接分配的参数(输入参数).................................................................................110
2.4.9 状态信息(输出参数) ...........................................................................................................111
2.4.10 数据块文件DB ...................................................................................................................115
2.4.10.1 用于FTP服务的数据块(文件DB) - FTP客户端模式 ............................................................115
2.4.10.2 用于FTP服务的数据块(文件DB)的结构 - FTP服务器模式..................................................118
2.5 用于已编程连接和 IP 组态的程序块...................................................................................121
2.5.1 工作原理............................................................................................................................121
2.5.2 过程...................................................................................................................................124
2.5.3 组态数据块 (CONF_DB)....................................................................................................124
2.5.4 组态数据块 - 实例..............................................................................................................125
2.5.5 系统数据的参数域(IP组态) ................................................................................................129

用于 SIMATIC NET S7 CP 的程序块


8 编程手册, 10/2012, C79000-G8952-C229-07
目录

2.5.6 连接类型的参数域............................................................................................................. 130


2.5.6.1 TCP连接的参数域............................................................................................................. 131
2.5.6.2 UDP连接的参数域 ............................................................................................................ 132
2.5.6.3 ISOonTCP连接的参数域 .................................................................................................. 133
2.5.6.4 电子邮件连接的参数域 ..................................................................................................... 135
2.5.6.5 FTP连接的参数域 ............................................................................................................. 137
2.5.7 子域类型........................................................................................................................... 138
2.5.8 IP_CONFIG - 含义和调用 ................................................................................................. 143
2.5.9 IP_CONFIG如何工作........................................................................................................ 144
2.5.10 形式参数的解释 - IP_CONFIG .......................................................................................... 146
2.5.11 保留的端口号 - IP_CONFIG ............................................................................................. 147
2.5.12 IP_CONFIG 状态代码....................................................................................................... 148
2.6 用于 ERPC-CP 的程序块.................................................................................................. 151
2.6.1 用于逻辑触发器的 LOGICAL_TRIGGER .......................................................................... 151
2.6.2 LOGICAL_TRIGGER的工作原理...................................................................................... 153
2.6.3 LOGICAL_TRIGGER形式参数的说明............................................................................... 153
2.6.4 LOGICAL_TRIGGER 的代码............................................................................................ 155
2.6.5 组态数据块 ....................................................................................................................... 157
2.7 组态限制/程序块所需的资源(以太网) ........................................................................... 158
3 用于 PROFINET IO (S7-300) 的程序块 .........................................................................................161
3.1 程序块及其用途概述 ......................................................................................................... 161
3.2 PROFINET IO - 数据传送和中断评估 ............................................................................... 163
3.2.1 PNIO_SEND..................................................................................................................... 163
3.2.1.1 含义和调用 - PNIO_SEND................................................................................................ 163
3.2.1.2 形式参数的解释 - PNIO_SEND ........................................................................................ 165
3.2.1.3 PNIO_SEND的条件代码................................................................................................... 169
3.2.2 PNIO_RECV..................................................................................................................... 171
3.2.2.1 含义和调用 - PNIO_RECV ................................................................................................ 171
3.2.2.2 形式参数的解释 - PNIO_RECV ........................................................................................ 173
3.2.2.3 PNIO_RECV的条件代码................................................................................................... 178
3.2.3 用于PROFINET IO的FC的常规特征 ................................................................................. 180
3.2.4 数据一致性 ....................................................................................................................... 181
3.2.5 替换值 .............................................................................................................................. 182
3.2.6 PNIO_RW_REC ............................................................................................................... 183
3.2.6.1 含义和调用 - PNIO_RW_REC .......................................................................................... 183
3.2.6.2 形式参数的解释 - PNIO_RW_REC ................................................................................... 184
3.2.6.3 PNIO_RW_REC的条件代码 ............................................................................................. 185
3.2.7 PNIO_ALARM .................................................................................................................. 187
3.2.7.1 含义和调用 - PNIO_ALARM ............................................................................................. 187
3.2.7.2 形式参数的解释 - PNIO_ALARM ...................................................................................... 189
3.2.7.3 PNIO_ALARM的条件代码 ................................................................................................ 190
3.3 PROFIenergy ................................................................................................................... 192

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 9
目录

3.3.1 用于 CP 300 的 PROFIenergy 程序块...............................................................................193


3.3.2 PE_START_END_CP........................................................................................................195
3.3.2.1 含义和调用 - PE_START_END_CP...................................................................................195
3.3.2.2 PE_START_END_CP 形式参数的说明..............................................................................197
3.3.2.3 PE_START_END_CP 的条件代码.....................................................................................198
3.3.3 PE_CMD_CP.....................................................................................................................200
3.3.3.1 含义和调用 - PE_CMD_CP ...............................................................................................200
3.3.3.2 PE_CMD_CP 形式参数的说明...........................................................................................201
3.3.3.3 PE_CMD_CP 的条件代码..................................................................................................206
3.3.4 响应数据............................................................................................................................207
3.3.5 PE_I_DEV_CP...................................................................................................................215
3.3.5.1 含义和调用 - PE_I_DEV_CP .............................................................................................215
3.3.5.2 PE_I_DEV_CP 形式参数的说明.........................................................................................216
3.3.5.3 PE_I_DEV_CP 的条件代码................................................................................................219
3.3.6 PE_I_DEV_CP 的补充程序块 ............................................................................................219
3.3.6.1 FC 概述 .............................................................................................................................219
3.3.6.2 FC 与 PE_I_DEV_CP 的互连 ............................................................................................220
3.3.6.3 FC 的公共参数 ..................................................................................................................221
3.3.6.4 FC 的单独参数 ..................................................................................................................222
3.3.7 DS3_WRITE_CP/PE_DS3_Write_ET200S_CP .................................................................227
3.3.7.1 含义和调用 - DS3_WRITE_CP ..........................................................................................228
3.3.7.2 DS3_WRITE_CP 形式参数的说明 .....................................................................................229
3.3.7.3 DS3_WRITE_CP 的条件代码 ............................................................................................230
3.4 组态限制/程序块所需的资源 (PROFINET).........................................................................231
4 用于 PROFINET CBA 的程序块 .................................................................................................... 233
4.1 PN_InOut/PN_InOut_Fast - 含义和调用 ............................................................................233
4.2 形式参数的解释 - PN_InOut / PN_InOut_Fast ...................................................................234
4.3 PN_InOut和PN_InOut_Fast块的条件代码 .........................................................................235
4.4 时间触发的PN_InOut / PN_InOut_Fast调用 - 关于应用的建议 ..........................................238
5 用于 PROFIBUS 的程序块 ............................................................................................................ 241
5.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)..................................................241
5.1.1 使用概述............................................................................................................................241
5.1.2 AG_SEND/AG_LSEND .....................................................................................................243
5.1.2.1 含义和调用 - AG_SEND / AG_LSEND ..............................................................................243
5.1.2.2 AG_SEND / AG_LSEND如何工作 .....................................................................................245
5.1.2.3 形式参数的解释 - AG_SEND / AG_LSEND .......................................................................247
5.1.2.4 AG_SEND 和 AG_LSEND 的条件代码..............................................................................248
5.1.3 AG_RECV/AG_LRECV .....................................................................................................251
5.1.3.1 含义和调用 - AG_RECV / AG_LRECV ..............................................................................251
5.1.3.2 AG_RECV / AG_LRECV如何工作 .....................................................................................252
5.1.3.3 形式参数的解释 - AG_RECV / AG_LRECV .......................................................................254

用于 SIMATIC NET S7 CP 的程序块


10 编程手册, 10/2012, C79000-G8952-C229-07
目录

5.1.3.4 AG_RECV 和 AG_LRECV 的条件代码 ............................................................................. 255


5.2 用于 S7-300 的 DP(分布式 I/O)的程序块 ..................................................................... 257
5.2.1 使用概述........................................................................................................................... 257
5.2.2 DP_SEND ........................................................................................................................ 258
5.2.2.1 含义和调用 - DP_SEND ................................................................................................... 258
5.2.2.2 DP_SEND如何工作 .......................................................................................................... 259
5.2.2.3 形式参数的解释 - DP_SEND ............................................................................................ 261
5.2.2.4 DP_SEND条件代码 .......................................................................................................... 262
5.2.3 DP_RECV ........................................................................................................................ 264
5.2.3.1 含义和调用 - DP_RECV ................................................................................................... 264
5.2.3.2 DP_RECV如何工作 .......................................................................................................... 265
5.2.3.3 形式参数的解释 - DP_RECV ............................................................................................ 267
5.2.3.4 DP_RECV 的条件代码...................................................................................................... 268
5.2.3.5 DPSTATUS - DP_RECV .................................................................................................. 270
5.2.4 DP_DIAG.......................................................................................................................... 272
5.2.4.1 含义和调用 - DP_DIAG..................................................................................................... 272
5.2.4.2 DP_DIAG如何工作 ........................................................................................................... 273
5.2.4.3 形式参数的解释 - DP_DIAG ............................................................................................. 275
5.2.4.4 作业类型 - DP_DIAG ........................................................................................................ 276
5.2.4.5 诊断数据的环形缓冲区 - DP_DIAG................................................................................... 279
5.2.4.6 DP_DIAG代码 .................................................................................................................. 279
5.2.5 DP_CTRL ......................................................................................................................... 283
5.2.5.1 含义和调用 - DP_CTRL .................................................................................................... 283
5.2.5.2 DP_CTRL如何工作........................................................................................................... 284
5.2.5.3 形式参数的解释 - DP_CTRL ............................................................................................. 286
5.2.5.4 作业类型 - DP_CTRL........................................................................................................ 288
5.2.5.5 命令模式和组选择 - DP_CTRL ......................................................................................... 292
5.2.5.6 DP_CTRL条件代码........................................................................................................... 293
5.3 组态限制/程序块所需的资源 (PROFIBUS)........................................................................ 297
6 用于 PROFIBUS FMS 的程序块....................................................................................................299
6.1 使用概述........................................................................................................................... 299
6.2 FMS块参数....................................................................................................................... 300
6.3 IDENTIFY......................................................................................................................... 305
6.3.1 含义和调用 - IDENTIFY.................................................................................................... 305
6.3.2 IDENTIFY如何工作........................................................................................................... 306
6.4 READ ............................................................................................................................... 307
6.4.1 含义和调用 - READ .......................................................................................................... 307
6.4.2 READ如何工作 ................................................................................................................. 308
6.5 REPORT .......................................................................................................................... 310
6.5.1 含义和调用 - REPORT ..................................................................................................... 310
6.5.2 REPORT如何工作 ............................................................................................................ 311

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 11
目录

6.6 STATUS............................................................................................................................312
6.6.1 含义和调用 - STATUS.......................................................................................................312
6.6.2 STATUS如何工作..............................................................................................................314
6.7 WRITE ..............................................................................................................................315
6.7.1 含义和调用 - WRITE .........................................................................................................315
6.7.2 WRITE如何工作 ................................................................................................................316
6.8 条件代码和出错消息 - FMS块............................................................................................317
6.8.1 在本地检测到错误 .............................................................................................................318
6.8.2 由FMS伙伴检测到错误......................................................................................................322
6.9 FB (PROFIBUS FMS)的数量限制/资源要求 ......................................................................324
A 文档历史....................................................................................................................................... 325
A.1 文档历史............................................................................................................................325
B 参考 .............................................................................................................................................. 329
索引 .............................................................................................................................................. 333

用于 SIMATIC NET S7 CP 的程序块


12 编程手册, 10/2012, C79000-G8952-C229-07
有关处理的概述与常规信息 1
1.1 用于工业以太网/PROFINET 的程序块

如何提供 - 块库

除非另有说明,否则 SIMATIC NET FC 程序块随 STEP 7 组态软件一起提供。

说明
STEP 7/STEP 7 Professional 产品的组件
随 STEP 7 V5.5 和 STEP 7 Professional 提供的库内容可能有所不同。

下表给出了供货时的块编号。

在 SIMATIC_NET_CP 下,还可查看那些包含块的文件夹。 请注意,S7300 和 S7400 必


须使用不同的程序块(单独的库)。

通信服务/功能区 程序块 SIMATIC NET 的库


SIMATIC_NET_CP
CP 300 CP 400

SEND/RECEIVE AG_SEND FC5 x x


(开放式通信服务) AG_LSEND FC50 x 2) x
AG_SSEND FC53 x 3)
AG_RECV FC6 x x
AG_LRECV FC60 x 2) x
AG_SRECV FC63 x 3)
AG_LOCK FC7 x x
AG_UNLOCK FC8 x x
AG_CNTRL FC10 x 3) x 3)
AG_CNTEX FB10 x 3) x 3)
已编程通信连接和 IP 组态 IP_CONFIG FB55 x x
S7 通信 4) BSEND FB12 x

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 13
有关处理的概述与常规信息
1.1 用于工业以太网/PROFINET 的程序块

通信服务/功能区 程序块 SIMATIC NET 的库


SIMATIC_NET_CP
CP 300 CP 400

BRCV FB13 x
PUT FB15 x
GET FB14 x
USEND FB8 x
URCV FB9 x
C_CNTRL FC62 x
FTP (高级 CP) FTP_CMD FB40 x x
FTP_CONNECT FC40 x x
FTP_STORE FC41 x x
FTP_RETRIEVE FC42 x x
FTP_DELETE FC43 x x
FTP_QUIT FC44 x x
PROFINET CBA PN_InOut 1) FB88 1) x 1) x 1)
PN_InOut_Fast 1) FB90 1) x 1)
PROFINET IO PNIO_SEND FC11 x
PNIO_RECV FC12 x
PNIO_RW_REC FB52 x
PNIO_ALARM FB54 x
PE_START_END_CP FB85 x
PE_CMD_CP FB86 x
PE_I_DEV_CP FB87 x
DS3_WRITE_CP FB53 x
(STEP 7 V5.5)
PE_DS3_Write_ET200S_ FB88 x
CP 5)
(STEP 7 Professional)

用于 SIMATIC NET S7 CP 的程序块


14 编程手册, 10/2012, C79000-G8952-C229-07
有关处理的概述与常规信息
1.1 用于工业以太网/PROFINET 的程序块

通信服务/功能区 程序块 SIMATIC NET 的库


SIMATIC_NET_CP
CP 300 CP 400

图例:
1) FB88/FB90 随同设计工具 SIMATIC iMap 提供,在安装 STEP 7 附加软件时,输入到 PROFINET 系统库
中。
2) 不与当前 CP 一起使用,不属于当前 SIMATIC_NET_CP 库。
3) 取决于 CP 类型
4) 在 STEP 7 文档中描述
5) 可在本文档后面的章节中找到 STEP 7 Professional 的程序块 PE_DS3_Write_ET200S_CP 的说明以及具
有相同功能的 STEP 7 V5.5 的程序块 DS3_WRITE_CP 的说明。

应使用何种块版本?

下列描述还包括各种块版本之间的不同特性信息。 请检查并记录所使用的块的版本标识
符。

随 STEP 7 安装的 SIMATIC NET 块库包含与 STEP 7 版本同步的块版本。

说明
建议对所有模块类型都使用最新的块版本。
在客户支持中的以下条目 ID 下可找到有关最新块版本和从 Internet 下载最新块的信息:
8797900 (http://support.automation.siemens.com/WW/view/de/8797900)
本建议的前提是:用户正在使用特定模块类型的最新固件。

更换模块时使用的程序块

模块更换表示用一个更新型的模块更换现有模块。

说明
请谨记,如果进行了模块更换,则在用户程序中只能使用已组态 CP 类型所允许的块。
建议对所有模块类型都使用最新的块版本。
本建议的前提是:用户正在使用特定模块类型的最新固件。

具体手册中包含 S7-CP 与相应指令的兼容性信息。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 15
有关处理的概述与常规信息
1.2 用于 PROFIBUS 的程序块

1.2 用于 PROFIBUS 的程序块

如何提供 - 块库

除非另有说明,否则 SIMATIC NET FC 程序块随 STEP 7 组态软件一起提供。

说明
STEP 7/STEP 7 Professional 产品的组件
随 STEP 7 V5.5 和 STEP 7 Professional 提供的库内容可能有所不同。

下表给出了供货时的块编号。

在 SIMATIC_NET_CP 下,还可查看那些包含块的文件夹。请注意,S7300 和 S7400 必


须使用不同的程序块(单独的库)。

通信服务/功能区 程序块 SIMATIC NET 的库


SIMATIC_NET_CP
CP 300 CP 400

PROFIBUS DP DP_SEND FC1 x


DP_RECV FC2 x
DP_DIAG FC3 x
DP_CTRL FC4 x
SEND/RECEIVE AG_SEND FC5 x x
(开放式通信服务) AG_LSEND FC50 x 2)
AG_RECV FC6 x x
AG_LRECV FC60 x 2)
S7 通信 1) BSEND FB12 x 1)

BRCV FB13 x 1)

PUT FB15 x 1)

GET FB14 x 1)

USEND FB8 x 1)

URCV FB9 x 1)

C_CNTRL FC62 x 1)

用于 SIMATIC NET S7 CP 的程序块


16 编程手册, 10/2012, C79000-G8952-C229-07
有关处理的概述与常规信息
1.2 用于 PROFIBUS 的程序块

通信服务/功能区 程序块 SIMATIC NET 的库


SIMATIC_NET_CP
CP 300 CP 400
PROFIBUS FMS IDENTIFY FB2 x x
READ FB3 x x
REPORT FB4 x x
STATUS FB5 x x
WRITE FB6 x x

1) 在 STEP 7 文档中进行了介绍。 在 STEP 7 库中相应提供了用于 S7-400 的 SFB。


2) 可以使用,但对 PROFIBUS 没有特殊功能。

应使用何种块版本?

下列描述还包括各种块版本之间的不同特性信息。 请检查并记录所使用的块的版本标识
符。

随 STEP 7 安装的 SIMATIC NET 块库包含与 STEP 7 版本同步的块版本。

说明
建议对所有模块类型都使用最新的块版本。
在客户支持中的以下条目 ID 下可找到有关最新块版本和从 Internet 下载最新块的信息:
8797900 (http://support.automation.siemens.com/WW/view/de/8797900)
本建议的前提是:用户正在使用特定模块类型的最新固件。

更换模块时使用的程序块

模块更换表示用一个更新型的模块更换现有模块。

说明
请谨记,如果进行了模块更换,则在用户程序中只能使用已组态 CP 类型所允许的块。
建议对所有模块类型都使用最新的块版本。
本建议的前提是:用户正在使用特定模块类型的最新固件。

手册中包含 S7-CP 与相应指令的兼容性信息。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 17
有关处理的概述与常规信息
1.3 用于调用程序块的参数

1.3 用于调用程序块的参数

有关调用和分配参数的一般注意事项

在详细描述程序块之前,了解一些关于调用和设置程序块参数的常规注释将非常有用。

下面的常规信息适用于所有程序块的以下现有参数组:

● 用于 CP 和连接分配的参数(输入参数)

● 用于指定 CPU 数据区的参数(输入参数)

● 状态信息(输出参数)

注意
调用 S7300 的通信块
不得在多个优先级中调用 S7-300 的通信块(STEP 7 中的 S7300 的 SIMATIC NET 块
库)! 例如,如果在 OB1 和 OB35 中调用一个通信块,那么,具有较高优先级的 OB
将可能中断该块的执行。
如果在一个以上 OB 中调用块,那么程序的编写必须确保当前正在执行的通信块不会
被其它通信块中断(例如,禁止/启用 SFC 中断)。

1.4 用于 CP 和连接分配的参数(输入参数)
在调用程序块时,将通过 CPLADDR 或 LADDR 参数来传送 S7 CP 的模块起始地址。
S7 CP 的模块起始地址位于 CP 组态的“地址/输入”(Address/Input) 参数中。

对于面向连接的作业,还必须引用通过其连接 ID 来使用的连接。可以在“块参数”下的连
接属性对话框中找到该信息(参见 NetPro 中的信息)。

自动采用块参数(此处针对 STEP 7 V5.5 进行介绍)


为确保正确设置块调用的参数,STEP 7 中的 LAD/STL/FBD 编辑器将为您提供这样的选
项,即从硬件配置(HW Config)和连接组态(NetPro)自动接受所有相关参数。

当在用户程序中分配块参数时,请按照下列概要步骤进行操作:

1. 选择块调用和块参数;

2. 右击并选择菜单命令“连接...”。

3. 根据块类型,现在即可从列表中选择准备用于块的连接和/或模块。

4. 确认您的选择;尽可能地,将可用参数值均输入到块调用中。

用于 SIMATIC NET S7 CP 的程序块


18 编程手册, 10/2012, C79000-G8952-C229-07
有关处理的概述与常规信息
1.5 用于指定 CPU 数据区的参数(输入参数)

对不正确地址的响应

如果 S7CPU 不能使用指定的模块起始地址与 PROFIBUS CP 进行通信,或不能将其识别


为 CP,则导致如下所述的错误。

原因 反应/代码

在指定的 CP 地址上,无法 CPU 仍然处于由于系统错误而导致的停止状态;这种情


寻址或标识任何模块。 况下,可计算 CPU 的诊断缓冲区。
CP 地址指向一个不同的模 通信块的 STATUS 参数中的可能错误代码:
块类型。 8184H 系统错误
80B0H 模块没有识别数据记录。
80C0H 数据记录无法读取。
80C3H 资源(内存)被占用。
80D2H 逻辑基址错误。

说明
如果由于疏忽而导致寻址的不是 CP,而是另一种模块类型,则将出现无法由程序块本身
的错误消息进行指示的错误。

1.5 用于指定 CPU 数据区的参数(输入参数)

指定 CPU 上的数据区

当调用程序块时,将传送 CPU 数据区的地址和长度,在该数据区中,有可供使用的用户


数据,或将在其中存储用户数据,此外,该数据区还可能包含更多的参数信息

ANY 指针数据类型用于对该数据区进行寻址。 有关此数据类型的更多详细信息,请参见


STEP 7 在线帮助。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 19
有关处理的概述与常规信息
1.6 状态信息(输出参数)

1.6 状态信息(输出参数)

评估状态代码

为了进行状态评估,必须在用户程序中对下列参数进行计算:

● DONE 或 NDR
这些参数(对于发送作业为 DONE,对于接收作业为 NDR)将给出作业(成功)完成的信
号。

● ERROR
这表示作业无法无故障地执行。

● STATUS
该参数提供该作业执行的相关详细信息。 在作业执行期间可以返回状态代码(DONE =
0 和 ERROR = 0)。

说明
请记住,每次调用块时,都会更新状态代码 DONE、NDR、ERROR 和 STATUS。

CP 启动期间的状态代码

通过完全重启动或重启动以太网 CP (例如,激活模块上的开关后),按如下复位 FC 的输
出参数:

● DONE=0

● NDR=0

● ERROR=0

● STATUS =

– 8180H 用于 AG_RECV / AG_LRECV

– 8181 H 用于 AG_SRECV

– 8181H 用于 AG_SEND /AG_LSEND / AG_SSEND

用于 SIMATIC NET S7 CP 的程序块


20 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块 2
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

2.1.1 程序块及其用途概述

概述

下列程序块均可用于在 在 SEND/RECEIVE 接口上传送数据:

程序块 可用于 1) 含义
S7-300 S7-400

AG_SEND (FC5) x x 用于发送数据


AG_RECV (FC6) x x 用于接收数据
AG_LSEND (FC50) x 用于发送数据
AG_LRECV (FC60) x 用于接收数据
AG_SSEND (FC53) x 用于发送数据
AG_SRECV (FC63) x 用于接收数据

1) 有关 S7300 和 S7400 的程序块的注意事项

● S7300:

– 对于最新版本的以太网 CP,仅使用程序块 AG_SEND 和 AG_RECV;可传送长度


最多为 8192 字节的数据。

– 对于 S7-300 CP(到固化程序版本为 V2.2 的 6GK7 343-1EX10-0XE0 为止),应


在 TCP 连接上使用 FC60,而不是 FC6。 对于 CP 343-1 (EX10),可使用块版本
最高为 V3.0 的 FC5/FC6。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 21
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

● S7-400:

– 使用 AG_SEND/AG_RECV 程序块,每个作业的数据长度限制为不超过 240 个字


节。
使用 FC AG_LSEND 或 AG_LRECV,可传送更长的数据记录(最多 8192 个字
节)。

– 通过在 CPU 和 S7 站中的 CP 之间使用优化块通信,程序块 AG_SSEND 和


AG_SRECV 可用于加速数据传送。 快速通信对局域网通信没有任何影响。

– 在 S7-400 上,FC6 无法在 TCP 连接上使用,而只能使用 FC60 或 FC63。

详细信息

请在具体设备的手册中查看所使用的 S7-CP 支持的数据区。 可以在 SIMATIC NET 块历


史中找到 FC/FB 的版本概述。

应用
下图说明了如何使用此处介绍的程序块在组态的连接上进行双向数据传送。

&38 (WKHUQHW&3 (WKHUQHW&3 &38

67(3 67(3
䞷㓆䲚ㄞ 䞷㓆䲚ㄞ

䞷㓆 䞷㓆
㟿㗽◉ 㟿㗽◉
$*B6(1' ♠抐 㘴㟅 $*B5(&9
扭㘴
$*B5(&9 㘴㟅 ♠抐 $*B6(1'

说明
除非另外声明,否则此处及随后几页的信息均适用于 AG_SEND / AG_LSEND /
AG_SSEND 或 AG_RECV / AG_LRECV / AG_SRECV 块。

用于 SIMATIC NET S7 CP 的程序块


22 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

样例程序

请注意,还在 Internet 上的以下条目 ID 下提供实例程序

● 用于 S7-300 的块 FC5 (AG_SEND)和 FC6 (AG_RECV)的 SEND/RECEIVE 接口的实


例程序:

17853532 (http://support.automation.siemens.com/WW/view/de/17853532)

● 用于 S7-400 的功能 FC50 (AG_LSEND)和 FC60 (AG_LRECV)的 SEND/RECEIVE 接


口的实例程序:

18513371 (http://support.automation.siemens.com/WW/view/de/18513371)

指定 CPU 上的数据区
当调用 FC 时,将传送 CPU 中数据区的地址和长度。 请记住,数据区的最大长度将取决
于正在使用的块类型和块版本。

● AG_SEND 和 AG_RECV
针对 V3.0 及更低版本的这些块,可以发送或接收最多 240 字节。 对于 S7-300,当
前块版本允许最多 8192 个字节的数据区。对于 S7-400,仍然必须为更大的数据区使
用 FC AG_LSEND/AG_LRECV。

● AG_LSEND/AG_LRECV
使用 S7400 的 CP 及较早版本的 S7300 的 CP 时,更大的数据区只能通过 FC
AG_LSEND 或 AG_LRECV 进行传送。 请在 CP 的产品信息中查看数据区的长度。

● AG_SSEND/AG_SRECV
当支持 PROFINET 通信的 S7−400 的 CP 与 V5.1 及更高版本的 CPU 一起工作时,
可使用 FC AG_SSEND 或 AG_SRECV 以较高的传输速度传送数据(不适用于 CP
443−1 Advanced 6GK7 443–1EX41–0XE0)。
可以在 CP 手册中查看 V5.1 及更高版本的 CPU 支持的 CP 类型(“使用要求”部
分)。

下表显示了各种不同连接类型的限制值。

FC ISO 传输 ISO-on-TCP TCP UDP

AG_LSEND (S7-400) 8192 个字节 8192 个字节 8192 个字节 2048 个字节
AG_SEND (S7-300)
AG_SEND (S7-400) 240 个字节 240 个字节 240 个字节 240 个字节
AG_LRECV (S7-400) 8192 个字节 8192 个字节 8192 个字节 2048 个字节
AG_RECV (S7-300)

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 23
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

FC ISO 传输 ISO-on-TCP TCP UDP

AG_RECV (S7-400) 240 个字节 240 个字节 240 个字节 240 个字节
AG_SSEND (S7-400) 1452 个字节 1452 个字节 1452 个字节 1452 个字节
AG_SRECV (S7-400)

说明
有关可通过较旧版本的以太网 CP 进行传送的数据区的长度信息,请参见所使用的以太网
CP 的产品信息/手册。

在无作业报头时使用

在指定的连接上,由连接组态指定地址和作业参数。 在通过 AG_SEND / AG_LSEND /


AG_SSEND 发送数据或通过 AG_RECV / AG_LRECV / AG_SRECV 接收数据时,用户
程序只提供 UDP 数据区中的用户数据。

使用报头
自由的 UDP 连接要求在用户数据区中有一个作业报头。

下面的示意图说明了作业缓冲区的结构以及作业报头中参数的含义和位置(高字节/低字
节)。

䞷㓆㟿㗽◉
3RUW  + +LJK%\WH  (% + /RZ%\WH  %\WH
⇫₩冢⑁⣷ (+ % + %\WH
,3⦿⧏
 +  + %\WH
⇫₩㔴⯃

㟿㗽ⷦ唑 㟿㗽ⷦ唑 %\WH

䞷㓆㟿㗽

㟿㗽ⷦ唑 㟿㗽ⷦ唑 %\WH

图 2-1 在具有已编程地址的空闲 UDP 连接上进行发送和接收

用于 SIMATIC NET S7 CP 的程序块


24 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

● 在图(十六进制条目)中,使用下列 IP 地址作为实例: 142.11.40.35;

● 对于端口地址 1003,应输入下列内容: 对于高字节: 03H;对于低字节: EBH。

● 用户数据区最多可为 2048 个字节。 最多可传送 2042 个字节的用户数据。 为作业报


头保留 6 个字节。
请注意,在块调用中指定的数据长度(LEN 参数)必须包括报头和用户数据!

只有在对作业进行确认之后才能修改调用参数

说明
一旦触发了作业,只能在 FC 通过 DONE=1 或 ERROR=1 确认作业完成后,才能更改程
序块 AG_SEND 或 AG_RECV 的调用接口的调用参数。
如果不遵守该规则,则可能因错误而中止作业。

FC 调用接口上的状态显示;FC 版本的特例(仅用于 S7-300) *)

通过 FC AG_SEND (FC5)和 AG_RECV (FC6),将在下列情况中接收到如下所示的代


码:

● CP 处于 STOP 状态;

● 连接还没有组态

● 连接还没有建立

● 连接已中止;

代码:

● AG_SEND:
DONE=0;ERROR=1;Status=8183H

● AG_RECV:
DONE=0;ERROR=0;Status=8180H

DONE=0;ERROR=1;Status=8183H

*)适用于自 V4.0 版本起的 FC

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 25
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

2.1.2 AG_SEND/AG_LSEND/AG_SSEND

2.1.2.1 含义和调用 - AG_SEND / AG_LSEND / AG_SSEND

块的含义
程序块 AG_SEND/AG_LSEND/AG_SSEND 将数据传递到以太网 CP,用于在已组态的
连接上进行传送。

所选择的数据区可以是一个位存储器区或一个数据块区。

当可以通过以太网发送整个用户数据区时,指示无错执行该函数。

注意事项:
除非另外声明,否则下面的所有信息对 FC AG_SEND、AG_LSEND 和 AG_SSEND 都适
用。

调用接口

FBD 中的调用接口

$*B6(1'$*B/6(1'$*B66(1'

%22/ $&7 '21( %22/

,17 ,' (5525 %22/

:25' /$''5 67$786 :25'

$1< 6(1'

,17 /(1

STL 的示例

STL 解释
call fc 5 ( //块调用
ACT := M 10.0, //由存储位触发的作业
ID := MW 12, //符合组态的连接 ID
LADDR := W#16#0100, //=HW Config 中的 LADDR 256 (十进制)
SEND := P#db99.dbx10.0 byte 240, //具有发送数据的缓冲区
LEN := MW 14, //发送数据的长度
DONE := M 10.1, //执行代码
ERROR := M 10.2, //错误代码
STATUS := MW 16 ); //状态代码

用于 SIMATIC NET S7 CP 的程序块


26 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

说明
如果要使用 FC53 AG_SSEND,则需要在组态连接期间,在连接属性中选择“SPEED
SEND/RECV”模式。

2.1.2.2 AG_SEND / AG_LSEND / AG_SSEND如何工作

工作原理

下面的图表说明了在用户程序中触发的、使用 AG_SEND 数据传送的一般序列。

FC 功能的工作方式将取决于正在使用的 CP 类型。

● 第 1 种情况: S7400 CP 中的 FC5、FC50、FC53 序列


在 S7-400 中,在第 1 个块调用后,由 CP 处理整个数据区的传送,而与数据区的长
度无关。

● 第 2 种情况: S7–300 CP 中的 FC5 序列


在 S7-300 中,传送通过多个数据段实现(每个数据段为 240 字节的用户数据),并需
要调用多个 FC 来传送整个数据。

第 1 种情况: S7–400 CP 中的 FC5、FC50、FC53 序列

一旦传递参数 ACT = 1,立即执行发送作业。


之后,至少须在一个以上调用中传递参数 ACT = 0。

输出参数 DONE、ERROR 和 STATUS 中的状态代码将在每个块调用中进行更新,并可


对其进行计算。 为了不启动新的发送作业就更新状态代码,可通过参数 ACT=0 启动一个
新的块调用。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 27
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

⫼᠋⿟ᑣ (WKHUQHW&3 䗮䆃ӭԈ


&38਼ᳳ

㒭$*B6(1'ᦤկ
᭄᥂
;

$&7 

$*B6(1'
԰Ϯ▔⌏

Ў$*B6(1'ᦤկ
$&7 
䗮䖛ҹ໾㔥Ӵ䗕
;

$*B6(1' ▔⌏

԰Ϯ▔⌏

$*B6(1'
԰ϮᏆᅠ៤ˈϨ᮴䫭

ᯊ䯈 ᯊ䯈 ᯊ䯈

 খ᭄Ӵ䗕'21(ǃ(5525ǃ67$786

第 2 种情况: S7–300 CP 中的 FC5 序列


一旦传递参数 ACT = 1,立即启动发送作业。
与第 1 种情况相反,在此用于传送数据段(为 240 字节的用户数据)的协议要求对每个段重
新调用 FC。
因此,根据用户数据的长度,必须连续调用带 ACT=0 的 FC,直到指示传送了整个数据
记录为止;至少须再进行一次调用。 数据将以 240 个字节为单位的数据段传送给通信伙
伴。

输出参数 DONE、ERROR 和 STATUS 中的状态代码将在每个块调用中进行更新,并可


对其进行计算。

用于 SIMATIC NET S7 CP 的程序块


28 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

⫼᠋⿟ᑣ (WKHUQHW&3 䗮䆃ӭԈ


&38਼ᳳ

㒭$*B6(1'ᦤկ
᭄᥂
;

$&7 

$*B6(1'
԰Ϯ▔⌏ ᥹ফ
থ䗕㓧‫ކ‬ऎЁⱘഫ

ᦤկ$*B6(1'
$&7 

$*B6(1'
԰Ϯ▔⌏ ᥹ফ
থ䗕㓧‫ކ‬ऎЁⱘഫ

$*B6(1'
԰Ϯ▔⌏ ᥹ফ
থ䗕㓧‫ކ‬ऎЁⱘഫQ

䗮䖛ҹ໾㔥Ӵ䗕 ᭄᥂䆄ᔩ;ᏆӴ䗕DŽ
▔⌏
$*B6(1'
԰ϮᏆᅠ៤ˈϨ᮴䫭

ᯊ䯈 ᯊ䯈 ᯊ䯈

 খ᭄Ӵ䗕'21(ǃ(5525ǃ67$786

说明
原理上,在 CPU 周期内有可能多次调用 FC,以加速作业的处理。 然而,切勿忘记这将
增加 CPU 周期中的负载(负载随 CPU 类型不同而不同)!

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 29
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

2.1.2.3 形式参数的解释 - AG_SEND / AG_LSEND / AG_SSEND

形式参数的说明

下表说明了
AG_SEND/AG_LSEND/AG_SSEND 函数的所有形式参数:

参数 声明 数据类型 取值范围 说明

ACT INPUT BOOL 0,1 如果使用 ACT=1 对 FC 进行调用,则从使用


SEND 参数指定的 ISO 传输数据区中发送 LEN
个字节。
当通过 ACT=0 调用 FC 时,更新状态代码
DONE、ERROR 和 STATUS。
ID INPUT INT 1, 2...64 在参数 ID 中指定连接的连接数。
(S7-400)
1, 2...16
(S7-300)
LADDR INPUT WORD 模块起始地址
如果通过 STEP 7 组态 CP,则会显示模块起始
地址。 在此指定该地址。
SEND INPUT ANY 指定地址和长度
数据区的地址指向下列两个位置之一:
 存储器位区
 数据块区

用于 SIMATIC NET S7 CP 的程序块


30 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

参数 声明 数据类型 取值范围 说明

LEN INPUT INT 在 ISO 传输和 ISO- 要通过该作业从数据区发送的字节数目。 可能


onTCP/TCP 上: 值范围为 1 至 SEND 参数中指定的长度。
1、2...8192(或最  请注意块类型:
大为“为 SEND 参数 – 对于 S7-300
指定的长度”)
当前版本的 FC AG_SEND 最多允许传送
8192 字节(对于 UDP 为 2048 字节)。
在 UDP 上:
– 对于 S7-400
1、2...2048(或最
通过 FC AG_SEND,数据区限制为最多
大为“为 SEND 参数
240 字节。
指定的长度”)

请注意 S7-400 的下列事项:


 通过较短的数据记录提高性能:
传送最多为 240 字节的数据记录能带来更好
的性能! 这在任何条件下均适用,与所使用
的块类型无关(AG_SEND/AG_LSEND)。
 对于 AG_SSEND,将数据区限制为最大
1452 个字节。
DONE OUTPUT BOOL 0: 作业处于活动状 该状态参数指示是否无错完成作业。
态 只要 DONE = 0,就不会触发其它作业。 在接受
1: 作业已完成 一项新作业时,CP 将 DONE 设置为 0。
对于与 ERROR 和 STATU 参数一起使用时的含
义,请参见 AG_SEND、AG_LSEND 和
AG_SSEND 的状态代码 (页 32)
ERROR OUTPUT BOOL 0: - 错误代码
1:错误 对于与 DONE 和 STATUS 参数一起使用时的含
义,请参见 AG_SEND、AG_LSEND 和
AG_SSEND 的状态代码 (页 32)
STATUS OUTPUT WORD 状态代码
对于与 DONE 和 ERROR 参数一起使用时的含
义,请参见 AG_SEND、AG_LSEND 和
AG_SSEND 的状态代码 (页 32)

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 31
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

2.1.2.4 AG_SEND、AG_LSEND 和 AG_SSEND 的状态代码

条件代码

下表显示了根据 DONE、ERROR 和 STATUS 形成的条件代码,其中这些参数必须由用


户程序进行评估。

说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。

DONE ERROR STATUS 含义

1 0 0000H 无错完成作业。
0 0 0000H 没有任何作业在执行中。
0 0 8181H 激活作业。
0 1 7000H 此条件代码仅适用于 S7-400: 使用 ACT=0 调用 FC;作业尚未处理。
0 1 8183H 以太网 CP 上没有任何组态或尚未启动 ISO/TCP 服务。
0 1 8184H  为 SEND 参数指定非法数据类型。
 系统错误(源数据区不正确)。
0 1 8185H LEN 参数长度大于 SEND 源区域。
0 1 8186H ID 参数无效。
 ID != 1、2....16 (S7-300)
 ID != 1、2....64 (S7-400)。
0 1 8302H 目标站上没有接收资源;接收站没有足够的速度来处理已接收的数据或还未
准备任何接收资源。
0 1 8304H 不建立连接。 在等待至少 100 毫秒之后,才能再次尝试发送作业。
0 1 8311H 不能到达指定的以太网地址的目标站。
0 1 8312H CP 上的以太网错误。
0 1 8F22H 源区域无效,例如:
该区在 DB 中不存在
LEN 参数小于 0

用于 SIMATIC NET S7 CP 的程序块


32 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

DONE ERROR STATUS 含义

0 1 8F24H 读取参数时发生区域错误。
0 1 8F28H 读取参数时发生队列错误。
0 1 8F32H 该参数包含了一个太高的 DB 号。
0 1 8F33H DB 编号错误。
0 1 8F3AH 没有装载区域 (DB)。
0 1 8F42H 从 I/O 区域读取参数时
确认超时。
0 1 8F44H 防止在块执行期间访问要读取的参数。
0 1 8F7FH 内部错误,例如,非法 ANY 引用
例如,参数 LEN=0
0 1 8090H  带该模块起始地址的模块不存在;
 所使用的 FC 与正在使用的系统系列不匹配(请牢记对 S7300 和 S7400
使用不同的 FC)。
0 1 8091H 模块起始地址不是双字边界。
0 1 8092H 在 ANY 引用中,指定了一个非 BYTE 的类型。
(仅 S7-400)
0 1 80A4H 没有建立 CPU 与 CP 之间的通信总线连接。
(对于较新版本的 CPU)
0 1 80B0H 该模块不能识别数据记录。
0 1 80B1H 指定的长度(LEN 参数中)不正确。
0 1 80B2H 没有建立 CPU 与 CP 之间的通信总线连接。
0 1 80C0H 无法读取数据记录。
0 1 80C1H 当前正在处理所指定的数据记录。
0 1 80C2H 未决的作业太多。
0 1 80C3H CPU 资源(存储器)被占用。
0 1 80C4H 通信错误(临时发生,且在用户程序中重复执行通常可以纠正该故障)
0 1 80D2H 模块起始地址错误。

参见

/4/ (页 331)

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 33
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

2.1.3 AG_RECV/AG_LRECV/AG_SRECV

2.1.3.1 含义和调用 - AG_RECV / AG_LRECV / AG_SRECV

块的含义
程序块 AG_RECV/AG_LRECV/AG_SRECV 将接收以太网 CP 通过已组态连接传送而来
的数据。

为接收数据指定的数据区可以是一个存储位区域或一个数据块区域。

当可以从以太网 CP 上接收数据时,指示无错执行该功能。

注意事项:
除非另外声明,否则下面的所有信息对 FC AG_RECV 和 AG_LRECV / AG_SRECV 都适
用。

调用

FBD 中的调用接口

$*B5(&9$*B/5(&9$*B65(&9

1'5 %22/

,17 ,' (5525 %22/

:25' /$''5 67$786 :25'

$1< 5(&9 /(1 ,17

STL 的示例

STL 说明
call fc 6 ( //块调用
ID := MW 40, //符合组态的连接 ID
LADDR := W#16#0100, //=HW Config 中的 LADDR 256 (十进制)
RECV := P#M 0.0 BYTE 100, //用于已接收数据的缓冲区
NDR := DB 110.DBX 0.6, //接收代码
ERROR := DB 110.DBX 0.7, //错误代码
STATUS := DB 110.DBW 2, //状态代码
LEN := DB 110.DBW 4 ); //已接收的数据长度

用于 SIMATIC NET S7 CP 的程序块


34 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

说明
如果要使用 FC63 AG_SRECV,则需要在组态连接期间,在连接属性中选择“SPEED
SEND/RECV”模式。

2.1.3.2 AG_RECV / AG_LRECV / AG_SRECV如何工作

工作原理

下图说明了在用户程序中使用 AG_RECV 触发数据接收时的一般顺序。

用户程序中的每个 AG_RECV 作业,都将通过具有输出参数 NDR、ERROR 和 STATUS


中的某一项的以太网 CP 来进行确认。

FC 功能的工作方式取决于正在使用的 CP 类型和连接类型。

● 第 1 种情况: S7-300 CP 中的 FC6 序列

对于新的 CP 类型,可使用 SEND/RECEIVE 接口上的已优化的数据传送。 尤其是对


于较长的数据记录,这将允许在 CPU 与 CP 之间的接口上具有非常高的数据流通量。

● 第 2 种情况: S7-400 CP 中的 FC6 和 FC60 序列

对于 FC6/FC60 AG_RECV,S7-400 的响应取决于所使用的协议。

– 情况 2a: ISO 传输、ISO-on-TCP、UDP 连接序列

对于这些连接类型,根据数据区的长度,由 CP 通过一个或多个 FC6/FC60 调用来


处理传送。

– 情况 2b: TCP 连接序列

在 TCP 连接上,RECV 参数的 ANY 指针中指定的长度是决定性因素。 一旦将与指


定长度对应的数据量写入到接收缓冲区,立即使用条件代码 NDR=1 完成
FC6/FC60 作业。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 35
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

● 第 3 种情况: S7-400 CP 中的 FC63 序列

对于 FC63 AG_SRECV,S7-400 的响应取决于所使用的协议。

– 情况 3a: ISO 传输、ISO-on-TCP、UDP 连接序列

对于这些连接类型,无论数据区的长短如何,都在第一个块调用后,由 CP 开始传
送整个数据区。

– 情况 3b: TCP 连接序列

在 TCP 连接上,在每次调用时,按指定的最大作业长度接受 CP 上的数据。

必须重复调用,直到数据记录已经完全、一致地输入到接收缓冲区为止。 在后续的
其中一个 FC 调用中通过参数 NDR=1 指示完整数据记录的接收。

第 1 种情况: S7-300 CP 中的 FC6 序列

当调用 FC6 时,用户程序将准备用于接收数据的缓冲区,并命令 CP 在该处输入所接收


的数据。

在此用于将数据传送到接收缓冲区的协议需要对每个段(240 字节的用户数据)重复调用
FC。
根据用户数据的长度,必须重复调用 FC,直到通过参数 NDR=1 指示完整传送为止。

输出参数 NDR、ERROR 以及 STATUS 中的状态代码将在每个块调用中进行更新,并可


对其进行计算。

用于 SIMATIC NET S7 CP 的程序块


36 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

⫼᠋⿟ᑣ ҹ໾㔥&3 䗮䆃ӭԈ


&38਼ᳳ

$*B5(&9
ᇮϡᄬ೼ӏԩৃկՓ⫼ⱘ᭄᥂

䗮䖛ҹ໾㔥Ӵ䗕
$
 ՟
$*B5(&9 བˈᄫ㡖 ໘Ѣ⌏ࡼ
⢊ᗕ
ᇮϡᄬ೼ӏԩৃկՓ⫼ⱘ᭄᥂

$*B5(&9
԰ϮᏆᅠ៤ˈϨ᮴䫭

᥹ফ䆘Ԅ᠔᥹ᬊⱘ᭄᥂

$

䗮䖛ҹ໾㔥Ӵ䗕
%
 ՟བ
ˈᄫ㡖 ໘Ѣ⌏ࡼ⢊ᗕ

$*B5(&9
ᇮϡᄬ೼ӏԩৃկՓ⫼ⱘ᭄᥂

$*B5(&9
԰ϮᏆᅠ៤ˈϨ᮴䫭

᥹ফ䆘Ԅ᠔᥹ᬊⱘ᭄᥂

%

$*B5(&9
䗮䖛ҹ໾㔥Ӵ䗕
&

໘Ѣ⌏ࡼ⢊ᗕ

ᯊ䯈 ᯊ䯈 ᯊ䯈

 খ᭄Ӵ䗕1'5ǃ(5525ǃ67$786

情况 2a: S7-400 CP 中的 FC6 和 FC60 序列(对于 ISO 传输、ISO-on-TCP、UDP 连接)

当调用 FC 时,用户程序将准备用于接收数据的缓冲区,并命令 CP 在该处输入所有可用


的数据。

只要数据记录已经完整地、一致地输入到接收缓冲器中,就将在后续的某个 FC 调用中使
用参数 NDR=1 对其进行表示。

输出参数 NDR、ERROR 以及 STATUS 中的状态代码将在每个块调用中进行更新,并可


对其进行计算。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 37
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

⫼᠋⿟ᑣ (WKHUQHW&3 䗮䆃ӭԈ


&38਼ᳳ

$*B5(&9 䗮䖛ҹ໾㔥Ӵ䗕
$

ᇮϡᄬ೼ӏԩৃկՓ⫼ⱘ᭄᥂ ▔⌏

$*B5(&9
԰ϮᏆᅠ៤ˈϨ᮴䫭

᥹ফ䆘Ԅ᠔᥹ᬊⱘ
᭄᥂
$

䗮䖛ҹ໾㔥Ӵ䗕
%

▔⌏
$*B5(&9
ᇮϡᄬ೼ӏԩৃկՓ⫼ⱘ᭄᥂

$*B5(&9
԰ϮᏆᅠ៤ˈϨ᮴䫭

᥹ফ䆘Ԅ᠔᥹ᬊⱘ
᭄᥂
%

$*B5(&9
䗮䖛ҹ໾㔥Ӵ䗕
&

▔⌏

ᯊ䯈 ᯊ䯈 ᯊ䯈

 খ᭄Ӵ䗕'21(ǃ(5525ǃ67$786

情况 2b: S7-400 CP 中的 FC6/FC60 序列(仅用于 TCP 连接)

在 TCP 连接上,RECV 参数的 ANY 指针中指定的长度是决定性因素。 一旦将与指定长


度对应的数据量写入到接收缓冲区,立即使用条件代码 NDR=1 完成 FC6/FC60 作业。

序列实例显示了这样一种情况:对于 FC60,将 ANY 指针中的长度设为 400 字节。

用于 SIMATIC NET S7 CP 的程序块


38 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

⫼᠋⿟ᑣ ҹ໾㔥&3 䗮䆃ӭԈ


&38਼ᳳ

$*B5(&9
ᇮϡᄬ೼ӏԩৃկՓ⫼ⱘ᭄᥂

䗮䖛ҹ໾㔥Ӵ䗕
$
 ՟
$*B5(&9 བˈᄫ㡖 ໘Ѣ⌏ࡼ
⢊ᗕ
ᇮϡᄬ೼ӏԩৃկՓ⫼ⱘ᭄᥂

$*B5(&9
԰ϮᏆᅠ៤ˈϨ᮴䫭

᥹ফ䆘Ԅ᠔᥹ᬊⱘ᭄᥂

$

䗮䖛ҹ໾㔥Ӵ䗕
%
 ՟བ
ˈᄫ㡖 ໘Ѣ⌏ࡼ⢊ᗕ

$*B5(&9
ᇮϡᄬ೼ӏԩৃկՓ⫼ⱘ᭄᥂

$*B5(&9
԰ϮᏆᅠ៤ˈϨ᮴䫭

᥹ফ䆘Ԅ᠔᥹ᬊⱘ᭄᥂

%

$*B5(&9
䗮䖛ҹ໾㔥Ӵ䗕
&

໘Ѣ⌏ࡼ⢊ᗕ

ᯊ䯈 ᯊ䯈 ᯊ䯈

 খ᭄Ӵ䗕1'5ǃ(5525ǃ67$786

情况 3a: S7-400 CP 中的 FC63 序列(对于 ISO 传输、ISO-on-TCP、UDP 连接)

当调用 FC 时,用户程序准备用于已接收数据的缓冲区,并命令 CP 在此处输入所有数


据,直到传送结束为止;即,当到达 ANY 指针中指定的长度时。

只要数据记录已经完整地、一致地输入到接收缓冲器中,就将在后续的某个 FC 调用中使
用参数 NDR=1 对其进行表示。

所接收数据的最大长度是 1452 字节。 接收缓冲区的大小必须始终设为该数值。

输出参数 NDR、ERROR 以及 STATUS 中的状态代码将在每个块调用中进行更新,并可


对其进行计算。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 39
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

⫼᠋⿟ᑣ ҹ໾㔥&3 䗮䆃ӭԈ


&38਼ᳳ

$*B5(&9
䗮䖛ҹ໾㔥Ӵ䗕
$
▔⌏

ᇚ೼㓧‫ކ‬ऎЁ䕧ܹᴹ㞾
᭄᥂䆄ᔩ$ⱘ᠔᭄᳝᥂DŽ

԰ϮᏆᅠ៤ˈϨ᮴䫭

᥹ফ䆘Ԅ᠔᥹ᬊⱘ᭄᥂

$

ᯊ䯈 ᯊ䯈 ᯊ䯈

 খ᭄Ӵ䗕1'5ǃ(5525ǃ67$786

情况 3b: S7-400 CP 中的 FC63 序列(仅用于 TCP 连接)

当调用 FC 时,用户程序准备用于接收数据的缓冲区,并命令 CP 在此处输入当前可用的


数据。 直到在接收缓冲区中完全输入数据之后,才发送消息“作业处于活动状
态”(8181H)。

通过每次重新调用 FC,在接收缓冲区中输入当前可用的数据。 当数据记录已经完整地、


一致地输入到接收缓冲区时,将在后续的某个 FC 调用中使用参数 NDR=1 对其进行指
示。

所接收数据的最大长度是 1452 字节。 接收缓冲区的大小必须始终设为该数值。

输出参数 NDR、ERROR 以及 STATUS 中的状态代码将在每个块调用中进行更新,并可


对其进行计算。

用于 SIMATIC NET S7 CP 的程序块


40 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

⫼᠋⿟ᑣ ҹ໾㔥&3 䗮䆃ӭԈ


&38਼ᳳ

$*B5(&9

67$786 
䗮䖛ҹ໾㔥Ӵ䗕
$
▔⌏

$*B5(&9
㓧‫ކ‬ऎЁⱘৃ⫼᭄᥂ ԰ϮᏆᅠ៤ˈϨ᮴䫭

᥹ফ䆘Ԅ᠔᥹ᬊⱘ᭄᥂

$

ᯊ䯈 ᯊ䯈 ᯊ䯈

 খ᭄Ӵ䗕1'5ǃ(5525ǃ67$786

2.1.3.3 形式参数的解释 - AG_RECV / AG_LRECV / AG_SRECV

形式参数的说明
下表解释了
AG_RECV / AG_LRECV / AG_SRECV 功能的所有形式参数:

参数 声明 数据类 可能值 说明

ID INPUT INT 1、2...64 (S7-400) 在 ID 参数中指定 ISO 传输连接的连接数目。


1、2...16 (S7-300)
LADDR INPUT WORD 模块起始地址
如果通过 STEP 7 组态 CP,则会显示模块起始
地址。 在此指定该地址。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 41
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

参数 声明 数据类 可能值 说明

RECV INPUT ANY 指定地址和长度


数据区的地址指向下列两个位置之一:
 存储器位区
 数据块区
关于长度的注意事项:
如果通过 RECV 参数将长度也限制为 212 字
节,则当传送的数据记录不超过 212 字节时,
性能将得到改善。
关于 FC63 AG_SRECV 的注意事项:
对于 FC63 AG_SRECV,始终将 RECV 设为最
大接收缓冲区长度,即 1452 字节。 否则,在某
些情况下会出现下列错误:
NDR=0;ERROR=1;STATUS=8185H
NDR OUTPUT BOOL 0: - 该参数指示是否接受了新数据。
1:新数据 对于与ERROR和STATUS参数一起使用时的含
义,请参见AG_RECV、AG_LRECV 和
AG_SRECV 的条件代码 (页 43)。
ERROR OUTPUT BOOL 0: - 错误代码
1:错误 对于与NDR和STATUS参数一起使用时的含
义,请参见AG_RECV、AG_LRECV 和
AG_SRECV 的条件代码 (页 43)。

用于 SIMATIC NET S7 CP 的程序块


42 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

参数 声明 数据类 可能值 说明

STATUS OUTPUT WORD 状态代码


对于与NDR和STATUS参数一起使用时的含
义,请参见AG_RECV、AG_LRECV 和
AG_SRECV 的条件代码 (页 43)。
LEN OUTPUT INT 在 ISO 传输和 ISO– 指定从以太网 CP 接受的字节数,将其输入到数
on–TCP 上: 据区中。
1, 2...8192 请注意块类型:
 对于 S7-300
在 UDP 上: FC AG_RECV 的当前版本允许最多传送
8192 字节(对于 UDP 为 2048 字节)。
1, 2...2048
 对于 S7-400
通过 FC AG_RECV,将数据区限制为最多
240 字节。
通过 FC AG_SRECV,将数据区限制为最多
1452 字节。

2.1.3.4 AG_RECV、AG_LRECV 和 AG_SRECV 的条件代码

条件代码
下表显示了由 NDR、ERROR 和 STATUS 参数构成的代码,其中的参数必须由用户程序
进行计算。

说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。

表格 2- 1 AG_RECV / AG_LRECV / AG_SRECV 条件代码

NDR ERROR STATUS 含义

1 0 0000H 已接受新数据。
0 0 8180H 尚未提供数据(不带 AG_SRECV)。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 43
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

NDR ERROR STATUS 含义

0 0 8181H 激活作业。
0 1 8183H  组态丢失;
 以太网 CP 上尚未启动 ISO 传输服务;
 不建立连接。
0 1 8184H  为 RECV 参数指定非法类型;
 系统错误。
0 1 8185H 目标缓冲区(RECV)太短。
0 1 8186H ID 参数无效。
ID != 1、2....16 (S7-300)。
ID != 1、2....64 (S7-400)。
0 1 8304H 不建立连接。 在等待至少 100 毫秒之后,才能再次尝试接收作业。
0 1 8F23H 源区域无效,例如:
该区在 DB 中不存在。
0 1 8F25H 写入参数时发生范围错误。
0 1 8F29H 写入参数时发生对准错误
0 1 8F30H 该参数位于具有写保护的第一个当前数据块中。
0 1 8F31H 该参数位于具有写保护的第二个当前数据块中。
0 1 8F32H 该参数包含了一个太高的 DB 号。
0 1 8F33H DB 编号错误。
0 1 8F3AH 没有装载目标区域 (DB)。
0 1 8F43H 将参数写入
I/O 区域超时。
0 1 8F45H 在访问路径中要写入的参数地址被禁用。
0 1 8F7FH 内部错误,例如,非法 ANY 引用。
0 1 8090H  具有该模块起始地址的模块不存在或 CPU 处于 STOP 模式;
 所使用的 FC 与正在使用的系统系列不匹配(请牢记对 S7300 和 S7400
使用不同的 FC)。
0 1 8091H 模块起始地址不是双字边界。
0 1 8092H 在 ANY 引用中,指定了一个非 BYTE 的类型。
(仅 S7-400)

用于 SIMATIC NET S7 CP 的程序块


44 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

NDR ERROR STATUS 含义

0 1 80A0H 从模块中读取否定确认。
0 1 80A4H 没有建立 CPU 与 CP 之间的通信总线连接。
0 1 80B0H 该模块不能识别数据记录。
0 1 80B1H 可能的原因:
 目标区域无效。
 目标区域太短。
 用于接收数据的目标区域不够大。
解决方法: 运行另一个具有最大接收缓冲区的接收调用。 无论采用何种连
接类型(单播/组播/广播)和设备系列 (S7-300/S7-400),均可采用此方
法。
0 1 80B2H 没有建立 CPU 与 CP 之间的通信总线连接。
0 1 80C0H 无法读取数据记录。
0 1 80C1H 当前正在处理所指定的数据记录。
0 1 80C2H 未决的作业太多。
0 1 80C3H CPU 资源(存储器)被占用。
0 1 80C4H 通信错误
临时发生,且在用户程序中重复执行通常可以纠正该故障。
0 1 80D2H 模块起始地址错误。

参见

/4/ (页 331)

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 45
用于工业以太网的程序块
2.2 通过 FETCH/WRITE 进行访问协调的程序块

2.2 通过 FETCH/WRITE 进行访问协调的程序块

2.2.1 程序块及其用途概述

概述

下列程序块均可用于 FETCH/WRITE 功能,以便协调访问:

程序块 可用于: 含义
S7-300 S7-400

AG_LOCK (FC7) x x 通过 FETCH/WRITE 锁定外部


数据访问。
AG_UNLOCK (FC8) x x 通过 FETCH/WRITE 释放外部
数据访问。

组态时须当心

如果使用程序块 AG_LOCK 和 AG_UNLOCK,则需要在组态中为 S7400 站中的 CP 指定


下列信息:

● 在?属性 > 地址?下


必须选择揕 OCK/UNLOCK 的地址设置?选项(若提供该选项)。

工作原理

通过这些程序块,可以协调对系统内存区域的访问,从而避免了创建和传送不一致的数
据。 通过 S7 CPU 中的用户程序进行控制,在必要时,可以调用 AG_LOCK 禁止外部
FETCH/WRITE 访问。 经过一定时间后或在完成本地写/读访问后,可使用 AG_UNLOCK
作业来重新启用外部访问。

它的另一个优点是该访问锁定只针对在调用中指定的 FETCH/WRITE 连接。 例如,如果


组态一个以上 FETCH/WRITE 连接,那么这些连接可用于特定的专用系统区,并可实现
选择性访问协调。

下列图表说明了在用户程序中使用 AG_LOCK 和 AG_UNLOCK 进行控制的、存储器访问


协调的常用时间序列。

用于 SIMATIC NET S7 CP 的程序块


46 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.2 通过 FETCH/WRITE 进行访问协调的程序块

䞷㓆䲚ㄞ ⅴ⮹几&3 抩帾↨⇃


&38⛷㦮

^
$*B/2&.
2%)5XQ /2&.(' 
7LPH兓
)(7&+:5,7(幎桽

^
Ⓙ'%[䉏㿊
$*B/2&.
⛷㦮Q
/2&.(' 

⛷㦮Q

^
 㟿㗽⮓䚕
'%[₼
$*B/2&.
/2&.('  )(7&+:5,7(

)(7&+:5,7(嬺㕡公

^
$*B81/2&.

⛷㦮QP
67$786 [
)(7&+:5,7(幎桽
Ⓙ'%[䉏㿊

㢅梃 㢅梃 㢅梃

锁定作业必须首先在用户程序中使用返回参数 LOCKED 中的代码进行监视。 只要指示


LOCKED=0,则必须认定仍然正在进行 FETCH/WRITE 访问。

如果指示 LOCKED=1,那么,这表明开启了锁定;数据现在即可通过用户程序进行修
改。

状态代码将在每次块调用时进行更新。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 47
用于工业以太网的程序块
2.2 通过 FETCH/WRITE 进行访问协调的程序块

2.2.2 AG_LOCK

2.2.2.1 含义和调用 - AG_LOCK

块的含义
使用 AG_LOCK 块,禁止在通过参数 ID 选定的连接上使用 FETCH 或 WRITE 进行数据
交换。 LOCKED 输出指示锁定是否成功。 如果锁定失败,那么必须在后面的 CPU 周期
中重新触发该作业。

STATUS 输出指示了该连接的 CP 状态。

调用

FBD 表达式调用接口

$*B/2&.

,' /2&.('

/$''5 67$786

STL 表达式中的实例

STL 解释
call fc 7 ( //块调用
ID := DB 100.DBW 2, //符合组态的连接 ID
LADDR := W#16#0100, //=HW Config 中的 LADDR 256 (十进制)
LOCKED := DB 100.DBX 0.6, //访问锁定的状态代码
STATUS := DB 100.DBW 4 ); //状态代码

用于 SIMATIC NET S7 CP 的程序块


48 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.2 通过 FETCH/WRITE 进行访问协调的程序块

2.2.2.2 形式参数的解释 - AG_LOCK

形式参数的说明

下面的表格解释了 AG_LOCK 功能的所有形式参数:

参数 声明 数据类 取值范围 说明

ID INPUT INT 用于 S7300 的 1、 在参数 ID 中指定连接的连接数。


2...16
用于 S7400 的 1、
2...64
LADDR INPUT WORD 模块起始地址
如果通过 STEP 7 组态 CP,则会显示模块起始
地址。 在此指定该地址。
LOCKED OUTPUT BOOL 0: 未(尚未)锁定 显示在指定的 FETCH/WRITE 连接上请求的访
1: 已锁定 问锁定状态。
STATUS OUTPUT WORD 状态代码
对于其含义,请参见
AG_LOCK的条件代码 (页 49)

2.2.2.3 AG_LOCK的条件代码

条件代码

下面的表格显示了必须由用户程序进行计算的 STATUS 代码。

表格 2- 2 AG_LOCK 条件代码

STATUS 含义

7000H CP 没在处理作业
7001H FETCH 已激活
7002H WRITE 已激活
8183H 没有为该连接组态 FETCH/WRITE(仅对 S7-400)
8186H ID 号不在允许范围内(例如,对于 S7-400 工业以太网 CP 的范围是 1...64)

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 49
用于工业以太网的程序块
2.2 通过 FETCH/WRITE 进行访问协调的程序块

STATUS 含义

80A4H 未在 CPU 和 CP 之间建立通信总线连接(对于较新版本的 CPU)


80B0H 该模块不能识别数据记录。
80B1H 指定的长度(LEN 参数中)不正确。
80B2H 没有建立 CPU 与 CP 之间的通信总线连接。
80C0H 无法读取数据记录。
80C1H 当前正在处理所指定的数据记录。
80C2H 未决的作业太多。
80C3H CPU 资源(存储器)被占用。
80C4H 通信错误
临时发生,且在用户程序中重复执行通常可以纠正该故障。
80D2H 模块起始地址错误。

2.2.3 AG_UNLOCK

2.2.3.1 含义和调用 - AG_UNLOCK

块的含义

借助于 AG_UNLOCK 块,可启用对 S7-CPU 的用户存储区的外部访问。 然后可以使用


FETCH 或 WRITE 通过用 ID 参数选择的连接进行访问。

AG_UNLOCK 用于使用 AG_LOCK 的访问锁定之后。

用于 SIMATIC NET S7 CP 的程序块


50 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.2 通过 FETCH/WRITE 进行访问协调的程序块

调用

FBD 中的调用接口

$*B81/2&.

,' 67$786

/$''5

STL 的示例

STL 解释
call fc 8 ( //块调用
ID := DB 100.DBW 2, //符合组态的连接 ID
LADDR := W#16#0100, //=HW Config 中的 LADDR 256 (十进制)
STATUS := DB 100.DBW 4 ); //状态代码

工作原理
要重新释放连接,FC 必须重新清除 LOCK 请求位。 FC 还将通过出错信息显示当前状
态。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 51
用于工业以太网的程序块
2.2 通过 FETCH/WRITE 进行访问协调的程序块

2.2.3.2 形式参数的解释 - AG_UNLOCK

形式参数的说明

下面的表格解释了 AG_UNLOCK 功能的所有形式参数:

参数 声明 数据类 可能值 说明

ID INPUT INT 用于 S7300 的 1、 在 ID 参数中指定 FDL 连接的连接数目(参见组


2...16 态)
用于 S7400 的 1、
2...64
LADDR INPUT WORD 模块起始地址
如果通过 STEP 7 组态 CP,则会显示模块起始
地址。 在此指定该地址。
STATUS OUTPUT WORD 状态代码:
对于其含义,请参见
AG_UNLOCK的条件代码 (页 52)

2.2.3.3 AG_UNLOCK的条件代码

条件代码

下面的表格显示了必须由用户程序进行计算的 STATUS 代码。

表格 2- 3 AG_UNLOCK 条件代码

STATUS 含义

7000H CP 没在处理作业
7001H FETCH 已激活
7002H WRITE 已激活
8183H 没有为该连接组态 FETCH/WRITE(仅对 S7-400)
8186H ID 号不在允许范围内(例如,对于 S7-400 工业以太网 CP 的范围是 1...64)
80A4H 未在 CPU 和 CP 之间建立通信总线连接(对于较新版本的 CPU)
80B0H 该模块不能识别数据记录。

用于 SIMATIC NET S7 CP 的程序块


52 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

STATUS 含义

80B1H 指定的长度(LEN 参数中)不正确。


80B2H 没有建立 CPU 与 CP 之间的通信总线连接。
80C0H 无法读取数据记录。
80C1H 当前正在处理所指定的数据记录。
80C2H 未决的作业太多。
80C3H CPU 资源(存储器)被占用。
80C4H 通信错误
临时发生,且在用户程序中重复执行通常可以纠正该故障
80D2H 模块起始地址错误。

2.3 用于连接和系统诊断的程序块

2.3.1 AG_CNTRL

2.3.1.1 含义和调用 - AG_CNTRL

工作原理

可以使用 AG_CNTRL 程序块对连接进行诊断。 必要时,可以使用 AG_CNTRL 重新初始


化连接建立过程。

说明
AG_CNTRL 和 AG_CNTEX
与程序块 AG_CNTRL 相比,程序块 AG_CNTEX 可提供更多功能。
AG_CNTEX 包含了 AG_CNTRL 的所有功能,可以在用户程序中以相同方式使用这些功
能。

可通过设置命令实现下列动作:

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 53
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

● 读出连接信息

根据状态信息,可以确定复位所有或单个 CP 连接是否有用。

● 复位已组态的连接

可以复位 CP 的个别或所有连接。

● 终止活动连接,并重新建立连接

AG_CNTRL 功能(FC)的命令只能用于基于 ISO/RFC/TCP/UDP 协议的 SEND/RECV 连


接。

调用接口

FBD 中的调用接口

$*B&175/

%22/ $&7 '21( %22/

,17 ,' (5525 %22/

:25' /$''5 67$786 :25'

,17 &0' 5(68/7 ':25'

5(68/7 ':25'

STL 的示例

STL 解释
call fc 10 ( //AG_CNTRL 块调用
ACT := M1.0, //触发作业
ID := MW8, //符合组态的连接 ID
LADDR := W#16#100, //符合 HW Config 的模块地址
CMD := MW6, //命令 ID
DONE := M20.1, //执行代码
ERROR := M20.2, //错误代码
STATUS := MW22, //状态代码
RESULT1 := MD24, //作业结果 1
RESULT2 := MD28 ); //作业结果 2

参见

条目ID为 33414377 的常见问题与解答


(http://support.automation.siemens.com/WW/view/de/33414377)

用于 SIMATIC NET S7 CP 的程序块


54 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

2.3.1.2 AG_CNTRL如何工作

工作原理

下图显示了用户程序中 AG_CNTRL 作业的一个典型序列。

䙑㍠䬴⾸ (WKHUQHW&3
盤#05░㡈盥

(VZLUGHLQ(UHLJQLVHUNDQQW
GDVGHQ$EEUXFKXQG1HXDXI
EDXHLQHU9HUELQGXQJVLQQYROO
PDFKW

㓹⃄!'?#.42,愄奵䏟ㄪ
㤎崋盶
!#4盷#-$
)$盤愇㓎盥

$*B&175/ 6WDWXVDEIUDJH 
愇㓎䞭䏟ㄪ崠㵫⼛䦗峍
愇㓎)$䞭䏟ㄪ

㓹⃄!'?#.42,愄奵⨶
⁶盶
!#4盷#-$
)$盤愇㓎盥

$*B&175/ 5HVHW.RPPDQGR 
䦗峍₅ὃ㓎─盶 ⨶⁶崠㵫䃩㹤盶
2%35,4盶n愇㓎俱㲋⼛╘⏑o ⨶⁶)$盤2%35,4ὖ䞭⁶盥
傗⁶

峳㛖值⋛④ὖ䞭㢊䠗

㲌⡑俱㲋愇㓎
㓹⃄!'?#.42,愄奵䏟ㄪ ▵拶㛙⍆⫴␿盶
㤎崋盶 ⨶⁶)$盤2%35,4ὖ䞭
!#4盷#-$ ⁶盥ῶ℆㐪傗⁶
)$盤愇㓎盥

$*B&175/ 6WDWXVDEIUDJH 
䦗峍䏟ㄪ崠㵫盷
ὴ┷盨⨶⁶
愇㓎)$䞭䏟ㄪ
)$盤2%35,4ὖ䞭⁶盥
䦗峍盶 委⨶⁶
2%35,4盶"(
n⨶⁶⼛㎐奵o

㜟朝 㜟朝


⓫㚙⁉愪$/.%ѥ%22/2ѥ34!453▵2%35,4

下图显示如何在开始时查询连接状态,然后在另一个作业中,如何使用复位命令触发连接
终端。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 55
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

在 CP 上置位复位 ID (RESULT1 中的位 15)。如果稍后有一个状态查询,则清晰识别是


否因复位作业已经复位了连接。 只有在该状态查询后(或在显式 CN_CLEAR_RESET 命
令后)才在 CP 上清除复位 ID

说明
必须使用 ACT = 1 调用块;如果使用 ACT = 0 调用,则没有功能调用,立即退出块。
由于与调用同步获取 FC10 的作业结果,因此,可在同一个周期中重新调用。

2.3.1.3 形式参数的解释 - AG_CNTRL

形式参数的说明

下表说明了 AG_CNTRL 函数的所有形式参数:

参数 声明 数据类 可能值 说明

ACT INPUT BOOL 0, 1 必须以 ACT=1 调用 FC。


如果使用 ACT=0 执行调用,则没有函数调用,
立即再次退出该块。
ID INPUT INT  1、2、..、n, 在参数 ID 中指定连接的数目。可以在组态中找
或 到连接数目。n 是最大的连接数目,它取决于产
品(S7-300 或 S7-400)。
 0
如果该调用寻址所有连接(带 CMD 3 或 4 的
_ALL 函数),则必须将 ID 指定为 0。
LADDR INPUT WORD 模块起始地址
如果通过 STEP 7 组态 CP,则会显示模块起始
地址。 在此指定该地址。
CMD INPUT INT 给 FC AG_CNTRL 的命令。
DONE OUTPUT BOOL 0: 该参数指示是否无错完成该作业。
作业仍正在被处理或 对于与ERROR和STATUS参数一起使用时的含
尚未触发 义,请参见AG_CNTRL代码 (页 57)
1: 注意:
作业已完成
如果 DONE=1,则可评估 RESULT

用于 SIMATIC NET S7 CP 的程序块


56 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

参数 声明 数据类 可能值 说明

ERROR OUTPUT BOOL 0: 无错误 错误代码


1: 有错误 对于与 DONE 和 STATUS 参数一起使用时的含
义,请参见AG_CNTRL代码 (页 57)
STATUS OUTPUT WORD 状态代码
对于与 DONE 和 ERROR 参数一起使用时的含
义,请参见AG_CNTRL代码 (页 57)
RESULT1 OUTPUT DWOR 根据发送至 FC AG_CNTRL 的命令返回的信
D 息。
RESULT2 OUTPUT DWOR 仅对 S7-400 进行计算:
D 根据发送至 FC AG_CNTRL 的命令返回的信息
的第 2 部分。

2.3.1.4 AG_CNTRL代码

条件代码

下表显示了根据 DONE、ERROR 和 STATUS 形成的条件代码,其中这些参数必须由用


户程序进行评估。

必须根据“命令和作业结果 - AG_CNTRL (页 59)”对 RESULT1/2 参数中的命令结果进行评


估。

表格 2- 4 AG_CNTRL 代码

DONE ERROR STATUS 含义

1 0 0000H 成功地向 CP 传送了作业 (CMD)(例如 RESET)或从 CP 成功地读取了状


态。
可以评估 RESULT1/2 参数。
0 0 0000H 没有块调用或使用 ACT=0 调用块。
0 0 8181H 作业处于活动状态
必须以相同的参数重复调用块,直到发出 DONE 或 ERROR 信号。
0 1 8183H 没有组态或还未在以太网 CP 上启动该服务。
0 1 8186H ID 参数无效。 允许的 ID 取决于所选的命令。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 57
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

DONE ERROR STATUS 含义

0 1 8187H CMD 参数无效。


0 1 8188H ACT 控制中的顺序错误(注意: 在 CP/固件产品版本中没有该代码)。
0 1 8189H 所使用的 CP 版本/固件不支持 FC10。
在调用固件版本 V1.3.9 以上的 CP 3431-EX20 时置位本代码;而对于其它
CP 类型,置位的是 80B0H。
注意: 从 CP 343-1 EX21/GX21 起支持 V1.0 版本的 FC10;这些模块中不
出现该代码。
0 1 8090H  不存在带该模块起始地址的模块。

 所使用的 FC 与正在使用的系统系列不匹配(请牢记对 S7300 和 S7400
使用不同的 FC)。

 该模块不支持该功能。
0 1 8091H 模块起始地址不是双字边界。
0 1 80B0H 该模块不能识别数据记录。
0 1 80B2H 没有建立 CPU 与 CP 之间的通信总线连接。 H 系统的相应 CPU 处于
STOP 模式。
0 1 80C0H 无法读取数据记录。
0 1 80C1H 当前正在处理所指定的数据记录。
0 1 80C2H 未决的作业太多。
0 1 80C3H CPU 资源(存储器)被占用。
0 1 80C4H 通信错误
临时发生该错误;通常最好在用户程序中重复执行该作业。
0 1 80D2H 模块起始地址不正确。

用于 SIMATIC NET S7 CP 的程序块


58 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

2.3.1.5 命令和作业结果 - AG_CNTRL

命令和评估作业结果

下表给出了可能的命令和 RESULT1/2 参数中可评估的结果。

说明
使用较早 CP 类型或较旧固件版本的命令评估
当前的 CP 类型或固件版本支持下面所述的命令。有关更多详细信息,另请参见以下条目
ID 下的内容:
33414377 (http://support.automation.siemens.com/ww/view/de/33414377)

表格 2- 5 FC AG_CNTRL 的命令

CMD 含义

0 NOP – 无操作
执行块,但并不向 CP 发送作业。
RESULT (对于 CMD = 0) 含义
参数 十六进制数值/范围
RESULT1 0000 0001H 无错执行
RESULT2 0000 0000H 默认值

CMD 含义

1 CN_STATUS – 连接状态
该命令返回通过该 ID 选择的连接的状态。
在 LADDR 参数中选择 CP。
如果位 15(复位 ID)置位,则自动复位(该动作对应于 CN_CLEAR_RESET 作业 - 参见 CMD
= 5)。
RESULT(对于 CMD = 1) 值/含义
参数 十六进制数值/ 位
范围
RESULT1 0000 000*H 位 0-3:用于发送方向的代码
(不包括值:0x2)

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 59
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

CMD 含义

位0 连接类型
 0: 无发送和接收连接
 1: 为发送和接收作业保留的连接
位1 当前作业的状态
 0: 当前没在执行发送作业
 1: 正在执行发送作业
位 2+3 上次作业:
 00: 没有关于上次发送作业的信息
 01: 上次发送作业成功完成
 10: 上次发送作业未成功完成

CMD 含义

1 CN_STATUS – 连接状态(CMD=1 续)
该命令返回通过该 ID 选择的连接的状态。
在 LADDR 参数中选择 CP。
如果位 15(复位 ID)置位,则自动复位(该动作对应于 CN_CLEAR_RESET 作业 - 参见 CMD
= 5)。
RESULT(对于 CMD = 1) 值/含义
参数 十六进制数值/ 位
范围
RESULT1 0000 00*0H 位 4−7:用于接收方向的代码
(不包括值:0x2)
位4 连接类型
 0: 无发送和接收连接
 1: 为发送和接收作业保留的连接
位5 当前作业的状态
 0: 当前没在执行接收作业
 1: 当前正在执行接收作业

用于 SIMATIC NET S7 CP 的程序块


60 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

CMD 含义

位 6+7 上次作业:
 00: 没有关于上次接收作业的信息
 01: 上次接收作业成功完成
 10: 上次接收作业未成功完成

CMD 含义

1 CN_STATUS – 连接状态(CMD=1 续)
该命令返回通过该 ID 选择的连接的状态。
在 LADDR 参数中选择 CP。
如果位 15(复位 ID)置位,则自动复位(该动作对应于 CN_CLEAR_RESET 作业 - 参见 CMD
= 5)。
RESULT(对于 CMD = 1) 值/含义
参数 十六进制数值/ 位
范围
RESULT1 0000 0*00H 位 8-11:用于 FETCH/WRITE 的代码
(不包括值:0x3、0x7、0x8、0xB 和 0xF)
位8 连接类型:
 0: 无 FETCH 连接
 1: 为 FETCH 作业保留的连接
位9 连接类型:
 0: 无 WRITE 连接
 1: 为 WRITE 作业保留的连接

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 61
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

CMD 含义

位 10 作业状态 (FETCH/WRITE):
 0: 作业状态正常
 1: 作业状态不正常
在下列情况下设置该 ID:
– CPU 否定地确认该作业

– 由于连接处于“已锁定”状态,作业无法转发
给 CPU。

– 由于 FETCH/WRITE 报头结构不正确,作
业被拒绝。
位 11 FETCH/WRITE 作业的状态
 0: 无激活的作业
 1: 来自 LAN 的作业激活

CMD 含义

1 CN_STATUS – 连接状态(CMD=1 续)
该命令返回通过该 ID 选择的连接的状态。
在 LADDR 参数中选择 CP。
如果位 15(复位 ID)置位,则自动复位(该动作对应于 CN_CLEAR_RESET 作业 - 参见 CMD
= 5)。
RESULT(对于 CMD = 1) 值/含义
参数 十六进制数值/ 位
范围
RESULT1 0000 *000H 位 12-15:常规 CP 信息
(不包括值:0x3 和 0xB)

用于 SIMATIC NET S7 CP 的程序块


62 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

CMD 含义

位 12 + 13 关于连接状态的信息:
(仅用于基于 ISO/RFC/TCP 协议的
SEND/RECV 连接,对于 UDP,输出相应的内部
信息)
 00: 连接被终止
 01: 连接建立激活
 10: 连接终止激活
 11: 连接已经建立
位 14 CP 信息:
 0: CP 处于 STOP 状态
 1: CP 处于 RUN 状态
位 15 复位 ID
 0: FC10 尚未复位连接或复位 ID 已清除。
 1: 控制块执行了一个连接复位。
RESULT1 **** 0000H 位 16-31:保留
0 – 保留用于以后的扩展
RESULT2 0000 0000H - 为以后的扩展保留

CMD 含义

2 CN_RESET – 连接复位
该命令复位具有指定 ID 的所选连接。
在 LADDR 参数中选择 CP。
复位连接指的是中止并再次建立连接(是主动还是被动取决于组态)。 中止连接时,将删除已
接收但尚未输入用户程序的数据。
在诊断缓冲区中生成一个条目,可在那里找到作业结果。
RESULT(对于 CMD = 2) 含义
参数 十六进制数值/范围
RESULT1 0000 0001H 成功地将复位作业传送给 CP。
触发连接中止及后续的连接建立。
0000 0002H 无法将复位作业传送给 CP,原因是 CP 上的服务
尚未启动(例如,CP 处于 STOP 状态)。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 63
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

CMD 含义

RESULT2 0000 0000H 默认值

CMD 含义

3 CN_STATUS_ALL – 所有连接状态
该命令在 RESULT1/2 参数中返回所有连接的连接状态(已建立/已终止)(共 8 字节的组信
息)。
ID 参数必须设置为“0”(检查是否为 0)。
在 LADDR 参数中选择 CP。
必要时,以 CMD=1 进一步调用连接状态,获取关于已终止或未组态连接的详细信息。
RESULT(对于 CMD = 3) 含义
参数 十六进制数值/范围
RESULT1 **** ****H 32 位: 连接 1 - 32
 0 – 连接已终止/未组态
 1 – 连接已建立
RESULT2 **** ****H 32 位: 连接 33 - 64
 0 – 连接已终止/未组态
 1 – 连接已建立

CMD 含义

4 CN_RESET_ALL – 复位所有连接:
该命令复位所有连接。
ID 参数必须设置为“0”(检查是否为 0)。
在 LADDR 参数中选择 CP。
复位连接指的是中止并再次建立连接(是主动还是被动取决于组态)。 中止连接时,将删除已
接收但尚未输入用户程序的数据。
在诊断缓冲区中生成一个条目,可在那里找到作业结果。
RESULT(对于 CMD = 4) 含义
参数 十六进制数值/范围

用于 SIMATIC NET S7 CP 的程序块


64 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

CMD 含义

RESULT1 0000 0001H 成功地将复位作业传送给 CP。 触发所有连接的


连接终止和后续连接建立。
RESULT1 0000 0002H 无法将复位作业传送给 CP,原因是 CP 上的服务
尚未启动(例如,CP 处于 STOP 状态)。
RESULT2 0000 0000H 默认值

CMD 含义

5 CN_CLEAR_RESET – 清除复位 ID
该命令复位具有指定 ID 的所选连接的复位 ID(RESULT1 中的位 15)。
在 LADDR 参数中选择 CP。
读取连接状态时自动执行该作业 (CMD=1);因此仅在特殊情况下才需要使用此处所描述的独立
作业。
RESULT(对于 CMD = 5) 含义
参数 十六进制数值/范围
RESULT1 0000 0001H 成功地将清除作业发送给 CP。
RESULT1 0000 0002H 不能将清除作业传送给 CP,原因是 CP 上尚未启
动服务(例如,CP 处于 STOP 状态)。
RESULT2 0000 0000H 默认值

CMD 含义

6 CN_DISCON − 连接断开
此命令重新设置通过 ID 和 LADDR 选择的连接。
通过中止连接实现复位连接。
堆栈中的所有数据都丢失,且不会显示任何消息。 之后不自动重新建立连接。 可以通过
CN_STARTCON 控制作业重新建立连接。 创建了一个诊断缓冲区条目,在该条目中可以找到作
业结果。
RESULT(对于 CMD = 6) 含义
参数 十六进制数值/范围
RESULT1 0000 0001H 成功地将作业发送给 CP。 连接中止已启动。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 65
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

CMD 含义

RESULT1 0000 0002H 不能将作业传送给 CP,原因是 CP 上尚未启动服


务(例如,CP 处于 STOP 状态)。
RESULT2 0000 0000H 默认值

CMD 含义

7 CN_STARTCON − 启动连接
此命令建立通过 ID 和 LADDR 选择的以及先前通过控制作业 CN_DISCON 中止的连接。 创建了
一个诊断缓冲区条目,在该条目中可以找到作业结果。
RESULT(对于 CMD = 7) 含义
参数 十六进制数值/范围
RESULT1 0000 0001H 连接建立作业成功传送到 CP。 连接建立已经启
动。
RESULT1 0000 0002H 连接建立作业无法传送到 CP,原因是 CP 上尚未
启动服务(例如,CP 处于 STOP 状态)。
RESULT2 0000 0000H 默认值

另请参见
您可在 FAQ 中通过以下条目 ID 找到更多信息: 33414377
(http://support.automation.siemens.com/ww/view/de/33414377)

用于 SIMATIC NET S7 CP 的程序块


66 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

2.3.2 AG_CNTEX

2.3.2.1 含义和调用 - AG_CNTEX

意义及工作原理
使用 AG_CNTEX 程序块可以对连接进行诊断,并可使用 Ping 命令通过网络对设备进行
寻址。 必要时,可以使用 AG_CNTEX 重新初始化连接建立过程。

说明
AG_CNTRL 和 AG_CNTEX
与程序块 AG_CNTRL 相比,程序块 AG_CNTEX 可提供更多功能。
AG_CNTEX 包含了 AG_CNTRL 的所有功能,可以在用户程序中以相同方式使用这些功
能。

可通过设置命令实现下列动作:

● 读出连接信息

根据状态信息,可以确定复位所有或单个 CP 连接是否有用。

● 复位已组态的连接

可以复位 CP 的个别或所有连接。

● 终止活动连接,并重新建立连接

● 读出 CP 中组态的连接类型(相对于 AG_CNTRL 的扩展功能)

● 发送 PING 命令(相对于 AG_CNTRL 的扩展功能)

可以检查网络中的特定节点是否可到达。

只能对基于 ISO/RFC/TCP/UDP 协议的 SEND/RECV 连接使用 AG_CNTEX 程序块的命


令。

说明
块库中的可用性
如果 SIMATIC_NET_CP 块库中还没有程序块 AG_CNTEX,请安装当前版本的 SIMATIC
NET 块库。可通过 Internet 在以下条目 ID 下找到此库:
8797900 (http://support.automation.siemens.com/WW/view/de/8797900)

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 67
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

调用接口

FBD 表达式调用接口

$*B&17(;

%22/ $&7 '21( %22/

,17 ,' (5525 %22/

:25' /$''5 67$786 :25'

,17 &0' 5(68/7 ':25'

$1< 3,1* 5(68/7 ':25'

STL 的示例

STL 说明
call fb 10, DB10 ( //AG_CNTEX 块调用
ACT := DB11.DBX0.0, //触发作业
ID := DB11.DBW2, //符合组态的连接 ID
LADDR := DB11.DBW4, //符合硬件配置的模块地址
CMD := DB11.DBW6, //命令 ID
PING := P#DB11.DBX8.0, //包含 Ping 数据的数据区
DONE := DB11.DBX16.0, //执行代码
ERROR := DB11.DBX16.1, //错误代码
STATUS := DB11.DBW18, //状态代码
RESULT1 := DB11.DBD20, //作业结果 1
RESULT2 := DB11.DBD24); //作业结果 2

用于 SIMATIC NET S7 CP 的程序块


68 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

2.3.2.2 AG_CNTEX 的工作原理

工作原理

下图显示了用户程序中 AG_CNTEX 作业的典型执行顺序。 下文给出了 Ping 命令执行顺


序的示例。

䙑㍠䬴⾸ ‎⩓偺#0
盤#05░㡈盥

㧩㹴⍙ᾴ‟盨〣峗ὖ㲋⾟拶㛙〣䯴
愇㓎Ѧ

㓹⃄!'?#.4%8愄奵䏟ㄪ
㤎崋盶
!#4盷#-$
)$盤愇㓎盥

愇㓎䞭䏟ㄪ崠㵫⼛䦗峍
愇㓎)$䞭䏟ㄪ

㓹⃄!'?#.4%8愄奵⨶
⁶盶
!#4盷#-$
)$盤愇㓎盥

!'?#.4%8盤⨶⁶▦‍盥
䦗峍₅ὃ㓎─盶 ⨶⁶崠㵫䃩㹤盶
2%35,4盶n愇㓎俱㲋⼛╘⏑o ⨶⁶)$盤2%35,4ὖ䞭⁶盥
傗⁶

峳㛖值⋛④ὖ䞭㢊䠗

㲌⡑俱㲋愇㓎
㓹⃄!'?#.4%8愄奵䏟ㄪ ▵拶㛙⍆⫴␿盶
㤎崋盶 ⨶⁶)$盤2%35,4ὖ䞭
!#4盷#-$ ⁶盥ῶ℆㐪傗⁶
)$盤愇㓎盥

!'?#.4%8盤䏟ㄪ㤎崋盥
䦗峍䏟ㄪ崠㵫盷
ὴ┷盨⨶⁶
愇㓎)$䞭䏟ㄪ
)$盤2%35,4ὖ䞭⁶盥
䦗峍盶 委⨶⁶
2%35,4盶"(
n⨶⁶⼛㎐奵o

㜟朝 㜟朝


⓫㚙⁉愪$/.%ѥ%22/2ѥ34!453▵2%35,4

下图显示如何在开始时查询连接状态,然后在另一个作业中,如何使用复位命令触发连接
终端。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 69
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

在 CP 上置位复位 ID (RESULT1 中的位 15)。如果稍后有一个状态查询,则清晰识别是


否因复位作业已经复位了连接。 只有在该状态查询后,或在显式执行
CN_CLEAR_RESET 命令后,才会清除 CP 中的复位 ID

说明
调用此块后,必须设置 ACT = 1。 如果使用 ACT=0 执行调用,则没有函数调用,立即再
次退出该块。
由于与调用同步获取 AG_CNTEX 的作业结果,因此,可在同一个周期中重新调用
AG_CNTEX。

2.3.2.3 Ping 功能的工作原理

运行模式/调用顺序

下面介绍如何使用 CMD=8 和 CMD=9 命令来发送 Ping 命令。

使用 CMD=8 Ping 命令可指示 CP 通过网络将 4 个连续 Ping 请求发送到作业中指定的 IP


地址。 CP 预期在 Ping 作业字段中设定的时间段内接收到 Ping 回应。

CP 会记录响应时间,并将其输入到 RESULT 1/2 参数中。

可以通过 Ping 命令 CMD=9 查询 RESULT 1/2 参数。只要 4 个 Ping 请求取得回应,或


设定的监视时间被超出,即会在参数 DONE=1 中确认执行。 然后,最多可在 30 秒的时
间内查询 Ping 结果;此后,RESULT 条目会失效。

说明
只能通过组态的连接发送 Ping
仅当至少组态了一个用于 SEND/RECEIVE 接口的连接(TCP、ISO-on-TCP、ISO-
Transport、UDP)时,才能使用 Ping 命令。

下图给出了 Ping 请求的典型执行顺序以及相应的 Ping 结果请求。

用于 SIMATIC NET S7 CP 的程序块


70 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

䙑㍠䬴⾸ ‎⩓偺#0 )0⡙⁶ὣ89䞭䰂


盤#05░㡈盥

ὣ0).'崠㵫㓹⃄!'?#.4%8盶
!#4盷#-$盷)$
0).')089 4)-%/54MS

&DOO)%
3,1*;<
㜟朝䟺嫯惹奵盶
PV
+5 
䱕Ἡὓ0).'⠇⾽
ὣ0).'俼㣅崠㵫㓹⃄!'?#.4%8盶
!#4盷#-$ 3,1*;<
0).')089
㜟朝䟺嫯惹奵盶
PV
䱕᾵ὓ0).'⠇⾽
&DOO)%
+ 3,1*;<
㜟朝䟺嫯惹奵盶
PV
䱕ἲὓ0).'⠇⾽

3,1*;<
㜟朝䟺嫯惹奵盶
PV
䱕⠄ὓ0).'⠇⾽

&DOO)%
  ( 22俼㣅
㠩⩐S

峭⁙0).'俼㣅盶
2%35,4%CHO%CHO
2%35,4%CHO%CHO

4,3 4,3 4,3



⓫㚙⁉愪$/.%ѥ%22/2ѥ34!453▵2%35,4

同时发送多个 Ping 请求

最多可同时将 4 个 Ping 请求发送给不同的 IP 地址。 为此,必须使用相同的 Ping 请求背


景数据块。 仅当至少完成一个当前 Ping 请求后才能发送其它 Ping 请求。

如果同时发送的 Ping 请求过多,则会输出相应的错误消息(STATUS 参数 = 828AH)。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 71
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

Ping 请求何时完成?

只要满足以下条件之一,Ping 请求即视为已完成:

● Ping 结果已读出:

● Ping 结果未读出,但从 Ping 结果可用开始已经过 30 秒。

SIMATIC NET CP 对 ICMP 帧的响应

为了减少 CP 对 AG_CNTEX 的 Ping 请求的响应,S7-300/S7-400 的 SIMATIC NET CP


在 100 毫秒内最多响应 ICMP 帧十次。

2.3.2.4 形式参数的说明 - AG_CNTEX

形式参数的说明
下表对 AG_CNTEX 函数的所有形式参数进行了说明:

参数 声明 数据类 取值范围 说明

ACT INPUT BOOL 0, 1 必须以 ACT=1 调用 FB。


如果使用 ACT=0 执行调用,则没有函数调用,
立即再次退出该块。
ID INPUT INT  1、2、..、n, 在参数 ID 中指定连接的数目。可以在组态中找
或 到连接数目。n 是最大的连接数目,它取决于产
品(S7-300 或 S7-400)。
 0
对于寻址所有连接的调用,必须将 ID 指定为
0。这会影响:
 函数 CN_STATUS_ALL (CMD3) 和
CN_RESET_ALL (CMD4)
 包含 CMD 8 或 CMD 9 的 Ping 命令
LADDR INPUT WORD 模块起始地址
如果通过 STEP 7 组态 CP,则会显示模块起始
地址。 在此指定该地址。
CMD INPUT INT 发给 FB AG_CNTEX 的命令

用于 SIMATIC NET S7 CP 的程序块


72 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

参数 声明 数据类 取值范围 说明

PING INPUT ANY 引用包含 Ping 命令数据结构的数据块(如


DB)。
数据块包括 IP 地址,还包括有关时间监视以及
要在 Ping 请求中传送的字节数的可选信息。
数据结构,请见下文
DONE OUTPUT BOOL 0: 该参数指示是否无错完成该作业。
仍在处理作业或尚未 对于与 ERROR 和 STATUS 参数一起使用时的
触发作业 含义,请参见 AG_CNTEX 的代码 (页 74)
1: 注意:
作业已完成
如果 DONE=1,则可评估 RESULT
ERROR OUTPUT BOOL 0: 无错误 错误代码
1: 有错误 对于与 DONE 和 STATUS 参数一起使用时的含
义,请参见 AG_CNTEX 的代码 (页 74)
STATUS OUTPUT WORD 状态代码
对于与 DONE 和 ERROR 参数一起使用时的含
义,请参见 AG_CNTEX 的代码 (页 74)
RESULT1 OUTPUT DWOR 根据命令返回给 AG_CNTEX 的信息。
D
RESULT2 OUTPUT DWOR 根据命令返回给 AG_CNTEX 的信息的第 2 部
D 分。

PING 数据块

PING 参数会引用数据块,其数据结构如下:

参数 数据类型 取值范围 说明

IP 地址 ARRAY [1..4] of Byte


TIMEOUT INT 1..60000 ms 可作为选项指定;默认值
= 1000 ms
大小 INT 1..1000 字节 可作为选项指定;默认值
= 32 字节

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 73
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

2.3.2.5 AG_CNTEX 的代码

条件代码

下表显示了根据 DONE、ERROR 和 STATUS 形成的条件代码,其中这些参数必须由用


户程序进行评估。

必须根据“命令和作业结果 - AG_CNTEX (页 75)”对 RESULT1/2 参数中的命令结果进行评


估。

表格 2- 6 AG_CNTEX 的代码

DONE ERROR STATUS 含义

1 0 0000H 成功地向 CP 传送了作业 (CMD)(例如 RESET)或从 CP 成功地读取了状


态。
可以评估 RESULT1/2 参数。
0 0 0000H 没有块调用或使用 ACT=0 调用程序块。
0 0 8181H 作业处于活动状态
必须以相同的参数重复调用块,直到发出 DONE 或 ERROR 信号。
0 1 8183H 没有组态或还未在以太网 CP 上启动该服务。
0 1 8184H 系统错误或参数类型错误。 原因可能是:
 ANY 指针数据类型不适合 PING 参数。
 ANY 指针引用奇数位地址。
0 1 8186H ID 参数无效。 允许的 ID 取决于所选的命令。
0 1 8187H CMD 参数无效。
0 1 8090H 可能的含义:
 不存在带该模块起始地址的模块;
 所使用的程序块与正在使用的系统系列不匹配(请牢记为 S7300 和 S7-
400 使用不同的块);
 该模块不支持该功能。
0 1 8091H 模块起始地址不是双字边界。
0 1 8092H 模块起始地址不正确。
0 1 80B0H 该模块不能识别数据记录。
0 1 80B2H 没有建立 CPU 与 CP 之间的通信总线连接。 H 系统的相应 CPU 处于
STOP 模式。

用于 SIMATIC NET S7 CP 的程序块


74 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

DONE ERROR STATUS 含义

0 1 80C0H 无法读取数据记录。
0 1 80C1H 当前正在处理所指定的数据记录。
0 1 80C2H 未决的作业太多。
0 1 80C3H CPU 资源(存储器)被占用。
0 1 80C4H 通信错误
临时发生该错误;通常最好在用户程序中重复执行该作业。
0 1 8286H PING 数据块中“超时”值超出有效值范围。
0 1 8287H Ping DB 中指定的 IP 地址被保留,因此不允许使用该地址。
0 1 8288H 只会对 PING 结果请求命令显示此状态。
可能的含义:
 Ping 命令未到达此 IP 地址(例如,因为 PC 在发送 Ping 请求命令后切
换为 STOP 模式);
 已读出 Ping 结果;
 在最长 30 秒的时间内未读出 Ping 结果。
0 1 8289H Ping 请求的数据量超出了允许范围(最多 1000 字节;参见 PING 命令数据
结构)
0 1 828AH 已经在处理 4 个 Ping 请求。 只有处理完现有请求后才能接受新请求。
0 1 828BH 已经在处理访问指定 IP 地址的 PING 请求。 使用 PING 结果请求完成当前
处理过程。

2.3.2.6 命令和作业结果 - AG_CNTEX

命令和评估作业结果

下表给出了可能的命令和 RESULT1/2 参数中可评估的结果。

说明
使用较早 CP 类型或较旧固件版本的命令评估
当前的 CP 类型或固件版本支持下面所述的命令。有关更多详细信息,另请参见以下条目
ID 下的内容:
33414377 (http://support.automation.siemens.com/ww/view/en/33414377)

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 75
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

表格 2- 7 FC AG_CNTRL 的命令

CMD 含义

0 NOP – no operation
执行块,但并不向 CP 发送作业。
RESULT (对于 CMD = 0) 含义
参数 十六进制数值/范围
RESULT1 0000 0001H 无错执行
RESULT2 0000 0000H 默认值

CMD 含义

1 CN_STATUS – connection status


该命令返回通过该 ID 选择的连接的状态。
在 LADDR 参数中选择 CP。
如果位 15(复位 ID)置位,则自动复位(该动作对应于 CN_CLEAR_RESET 作业 - 参见 CMD
= 5)。
RESULT(对于 CMD = 1) 值/含义
参数 十六进制数值/ 位
范围
RESULT1 0000 000*H 位 0-3:用于发送方向的代码
(不包括值:0x2)
位0 连接类型
 0: 无发送和接收连接
 1: 为发送和接收作业保留的连接
位1 当前作业的状态
 0: 当前没在执行发送作业
 1: 正在执行发送作业
位 2+3 上次作业:
 00: 没有关于上次发送作业的信息
 01: 上次发送作业成功完成
 10: 上次发送作业未成功完成

用于 SIMATIC NET S7 CP 的程序块


76 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

CMD 含义

1 CN_STATUS – connection status (CMD=1 续)


该命令返回通过该 ID 选择的连接的状态。
在 LADDR 参数中选择 CP。
如果位 15(复位 ID)置位,则自动复位(该动作对应于 CN_CLEAR_RESET 作业 - 参见 CMD
= 5)。
RESULT(对于 CMD = 1) 值/含义
参数 十六进制数值/ 位
范围
RESULT1 0000 00*0H 位 4−7:用于接收方向的代码
(不包括值:0x2)
位4 连接类型
 0: 无发送和接收连接
 1: 为发送和接收作业保留的连接
位5 当前作业的状态
 0: 当前没在执行接收作业
 1: 当前正在执行接收作业
位 6+7 上次作业:
 00: 没有关于上次接收作业的信息
 01: 上次接收作业成功完成
 10: 上次接收作业未成功完成

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 77
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

CMD 含义

1 CN_STATUS – connection status (CMD=1 续)


该命令返回通过该 ID 选择的连接的状态。
在 LADDR 参数中选择 CP。
如果位 15(复位 ID)置位,则自动复位(该动作对应于 CN_CLEAR_RESET 作业 - 参见 CMD
= 5)。
RESULT(对于 CMD = 1) 值/含义
参数 十六进制数值/ 位
范围
RESULT1 0000 0*00H 位 8-11:用于 FETCH/WRITE 的代码
(不包括值:0x3、0x7、0x8、0xB 和 0xF)
位8 连接类型:
 0: 无 FETCH 连接
 1: 为 FETCH 作业保留的连接
位9 连接类型:
 0: 无 WRITE 连接
 1: 为 WRITE 作业保留的连接
位 10 作业状态 (FETCH/WRITE):
 0: 作业状态正常
 1: 作业状态不正常
在下列情况下设置该 ID:
– CPU 否定地确认该作业

– 由于连接处于“已锁定”状态,作业无法转发
给 CPU。

– 由于 FETCH/WRITE 报头结构不正确,作
业被拒绝。
位 11 FETCH/WRITE 作业的状态
 0: 无激活的作业
 1: 来自 LAN 的作业激活

用于 SIMATIC NET S7 CP 的程序块


78 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

CMD 含义

1 CN_STATUS – connection status (CMD=1 续)


该命令返回通过该 ID 选择的连接的状态。
在 LADDR 参数中选择 CP。
如果位 15(复位 ID)置位,则自动复位(该动作对应于 CN_CLEAR_RESET 作业 - 参见 CMD
= 5)。
RESULT(对于 CMD = 1) 值/含义
参数 十六进制数值/ 位
范围
RESULT1 0000 *000H 位 12-15:常规 CP 信息
(不包括值:0x3 和 0xB)
位 12 + 13 关于连接状态的信息:
(仅用于基于 ISO/RFC/TCP 协议的
SEND/RECV 连接,对于 UDP,输出相应的内部
信息)
 00: 连接被终止
 01: 连接建立激活
 10: 连接终止激活
 11: 连接已经建立
位 14 CP 信息:
 0: CP 处于 STOP 状态
 1: CP 处于 RUN 状态
位 15 复位 ID
 0: AG_CNTEX 尚未复位连接或已清除复位
ID。
 1: AG_CNTEX 导致连接复位。
RESULT1 **** 0000H 位 16-31: 保留
0 – 保留用于以后的扩展
RESULT2 0000 0000H - 为以后的扩展保留

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 79
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

CMD 含义

2 CN_RESET – connection reset


该命令复位具有指定 ID 的所选连接。
在 LADDR 参数中选择 CP。
复位连接指的是中止并再次建立连接(是主动还是被动取决于组态)。 中止连接时,将删除已
接收但尚未输入用户程序的数据。
在诊断缓冲区中生成一个条目,可在那里找到作业结果。
RESULT(对于 CMD = 2) 含义
参数 十六进制数值/范围
RESULT1 0000 0001H 成功地将复位作业传送给 CP。
触发连接中止及后续的连接建立。
0000 0002H 无法将复位作业传送给 CP,原因是 CP 上的服务
尚未启动(例如,CP 处于 STOP 状态)。
RESULT2 0000 0000H 默认值

CMD 含义

3 CN_STATUS_ALL – all connections status


该命令在 RESULT1/2 参数中返回所有连接的连接状态(已建立/已终止)(共 8 字节的组信
息)。
ID 参数必须设置为“0”(检查是否为 0)。
在 LADDR 参数中选择 CP。
必要时,以 CMD=1 进一步调用连接状态,获取关于已终止或未组态连接的详细信息。
RESULT(对于 CMD = 3) 含义
参数 十六进制数值/范围
RESULT1 **** ****H 对于相关连接:
32 位,其有效性如下:  0 – 连接已终止/未组态
 对于 S7-400: 位 0-31 用  1 – 连接已建立
于连接 1 - 32
 对于 S7-300: 位 0-15 用
于连接 1 - 16

用于 SIMATIC NET S7 CP 的程序块


80 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

CMD 含义

RESULT2 **** ****H 对于相关连接:


32 位,其有效性如下:  0 – 连接已终止/未组态
 对于 S7-400: 位 0-31 用  1 – 连接已建立
于连接 33 - 64

CMD 含义

4 CN_RESET_ALL – all connections reset


该命令复位所有连接。
ID 参数必须设置为“0”(检查是否为 0)。
在 LADDR 参数中选择 CP。
复位连接指的是中止并再次建立连接(是主动还是被动取决于组态)。 中止连接时,将删除已
接收但尚未输入用户程序的数据。
在诊断缓冲区中生成一个条目,可在那里找到作业结果。
RESULT(对于 CMD = 4) 含义
参数 十六进制数值/范围
RESULT1 0000 0001H 成功地将复位作业传送给 CP。 触发所有连接的
连接终止和后续连接建立。
RESULT1 0000 0002H 无法将复位作业传送给 CP,原因是 CP 上的服务
尚未启动(例如,CP 处于 STOP 状态)。
RESULT2 0000 0000H 默认值

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 81
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

CMD 含义

5 CN_CLEAR_RESET - 清除复位 ID
该命令复位具有指定 ID 的所选连接的复位 ID(RESULT1 中的位 15)。
在 LADDR 参数中选择 CP。
读取连接状态时自动执行该作业 (CMD=1);因此仅在特殊情况下才需要使用此处所描述的独立
作业。
RESULT(对于 CMD = 5) 含义
参数 十六进制数值/范围
RESULT1 0000 0001H 成功地将清除作业发送给 CP。
RESULT1 0000 0002H 不能将清除作业传送给 CP,原因是 CP 上尚未启
动服务(例如,CP 处于 STOP 状态)。
RESULT2 0000 0000H 默认值

CMD 含义

6 CN_DISCON − connection disconnect


此命令重新设置通过 ID 和 LADDR 选择的连接。
通过中止连接实现复位连接。
堆栈中的所有数据都丢失,且不会显示任何消息。 之后不自动重新建立连接。 可以通过
CN_STARTCON 控制作业重新建立连接。 创建了一个诊断缓冲区条目,在该条目中可以找到作
业结果。
RESULT(对于 CMD = 6) 含义
参数 十六进制数值/范围
RESULT1 0000 0001H 成功地将作业发送给 CP。 连接中止已启动。
RESULT1 0000 0002H 不能将作业传送给 CP,原因是 CP 上尚未启动服
务(例如,CP 处于 STOP 状态)。
RESULT2 0000 0000H 默认值

用于 SIMATIC NET S7 CP 的程序块


82 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

CMD 含义

7 CN_STARTCON − start connection


此命令建立通过 ID 和 LADDR 选择的以及先前通过控制作业 CN_DISCON 中止的连接。 创建了
一个诊断缓冲区条目,在该条目中可以找到作业结果。
RESULT(对于 CMD = 7) 含义
参数 十六进制数值/范围
RESULT1 0000 0001H 连接建立作业成功传送到 CP。 连接建立已经启
动。
RESULT1 0000 0002H 连接建立作业无法传送到 CP,原因是 CP 上尚未
启动服务(例如,CP 处于 STOP 状态)。
RESULT2 0000 0000H 默认值

CMD 含义

8 PING_REQUEST - 发送 Ping 请求
此命令向 CP 发送 Ping 命令。之后,CP 会向指定的 IP 地址发起 4 个 Ping 回应请求。
RESULT(对于 CMD = 8) 含义
参数 十六进制数值/范围
RESULT1 0000 0001H Ping 请求已成功发送至 CP。
RESULT2 0000 0002H Ping 请求无法发送至 CP,因为该 CP 上的相应
服务不可用。
可能的原因有: CP 处于 STOP 模式

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 83
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

CMD 含义

9 PING_RESULT - 查询 Ping 结果
此命令将 Ping 结果请求发送到 CP。CP 会在 RESULT 参数中传送 4 个已执行的 Ping 回应请求
的结果。
这 4 个 Ping 回应请求在 CP 端完成后,即说明此次调用成功。
RESULT(对于 CMD = 9) 含义
参数 十六进制数值/范围
RESULT1 **** ****H 1. 字:
第 1 个 Ping 回应请求的响应时间 (ms)。
2. 字:
第 2 个 Ping 回应请求的响应时间 (ms)。
示例:
0005 FFFFH
回应 1 -> 5 ms 后收到
回应 2 -> 在设定的监视时间内无回应
RESULT2 **** ****H 1. 字:
第 3 个 Ping 回应请求的响应时间 (ms)。
2. 字:
第 4 个 Ping 回应请求的响应时间 (ms)。
示例:
0002 3456H
回应 3 -> 2 ms 后收到
回应 4 -> 13398 ms 后收到
RESULT1/RESULT 2 中数据字的值范围:
0000H 未使用
0001H ... EA60H 响应时间 (ms)
0001H = 1 ms
EA60H = 60000 ms
EA61H ... FFFEH 未使用
FFFFH 超时: 指定监视时间内无回应。

用于 SIMATIC NET S7 CP 的程序块


84 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.3 用于连接和系统诊断的程序块

CMD 含义

10 CONN_TYPE - 连接类型
此命令请求 CP 为指定的连接 ID 指定当前连接类型。
RESULT(对于 CMD = 10) 含义
参数 十六进制数值/范围
RESULT1 0000 000*H 对于可能的连接类型,该请求会返回以下值:
0: 未建立任何连接
1: UDP 连接
2: SMTP 连接
3: TCP 连接
4: 空闲 UDP 连接
5: FTP 连接
6: ISO 传输连接
7: ISOonTCP 连接
RESULT2 0000 0000H 默认值

另请参见
您可在 FAQ 中通过以下条目 ID 找到更多信息: 33414377
(http://support.automation.siemens.com/ww/view/en/33414377)

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 85
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

2.4 用于 FTP 服务的程序块

2.4.1 FTP概述

用于 FTP 服务(FTP 客户端)的 FB 和 FC

下表给出了可用于 FTP 客户端服务的程序块。

说明
请注意,由于旧型号的 SIMATIC S7-300 CPU(例如,CPU 312 或 CPU 315-1AF01)不支
持 SFC24,因此不能使用其 FTP 客户端服务。
当使用 FC40 - FC44 时,以下说明适用于 S7-300: CP 需要所提供的 FC5 (AG_SEND)
来启动 FTP FC;切勿在此应用中重命名 FC5。

程序块 可用于: 含义
S7-300 S7-400

FTP_CMD (FB40) ● ● 处理完整的 FTP 作业序列

FTP_CONNECT ● ● 建立从客户端到服务器的 FTP 连接。


(FC40)
FTP_STORE ● ● 将 DB 从客户端传送到服务器。
(FC41)
FTP_RETRIEVE ● ● 将文件从客户端传送到服务器。
(FC42)
FTP_DELETE ● ● 删除服务器上的文件。
(FC43)
FTP_QUIT (FC44) ● ● 终止使用 ID 建立的连接。

使用程序块

对于最新型的 CP 模块,最好使用 FB40。 或者可在必要时或 STEP 7 库中以提供的情况


下使用 FC40...FC44。

用于 SIMATIC NET S7 CP 的程序块


86 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

要求 - 所组态的 FTP 连接

为了管理作为 FTP 客户端的 S7 站和 FTP 服务器之间的 FTP 请求序列,需要组态一个


FTP 连接。 为此,首先要组态一个具有附加“使用 FTP 协议”(Use FTP protocol) 属性的
未指定 TCP 连接。

参见

将 FC 40-44 移植到 FTP_CMD (页 98)

2.4.2 FTP_CMD - 用于 FTP 服务的通用程序块

2.4.2.1 含义和调用 - FTP_CMD

含义
通过 FB40,可以建立 FTP 连接,并从 FTP 服务器传送文件或将文件传送到 FTP 服务
器。

FB40 代替以前使用的 FTP 函数 FC40 - FC44。 将这些函数之间的差别映射到 FB40 的


命令参数中。

FB40 的优点如下:

● 通过使用命令变量而不是不同的函数调用,简化用户程序

● 附加函数"APPEND"

"APPEND"允许将数据添加到现有文件。

● 附加函数"RETR_PART"

"RETR_PART"允许从文件检索选定的数据区。

● 附加函数“CONNECT_TLS_PRIVATE”

“CONNECT_TLS_PRIVATE”可用于建立安全 SSL 连接

● 此处不需要函数 AG_SEND (FC5)。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 87
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

有效性

从下列模块类型起,可以使用 FB40:

● 从 CP 343-1 Advanced (GX30*/GX31) 起

● 从 CP 443-1 Advanced (GX20*/GX30) 起

*) 不能使用“CONNECT_TLS_PRIVATE”函数。

调用接口

FBD 表达式调用接口

)73B&0'

,17 ,' '21( %22/

:25' /$''5 (5525 %22/

%<7( &0' 67$786 :25'

$1< 1$0(B675

,17 ),/(B'%B15

':25' 2))6(7

':25' /(1

SLT 表达式中的调用实例

STL 说明
CALL FB 40, DB 40 ( //块调用
ID := 4, //符合组态的 FTP 连接 ID
LADDR := W#16#3FFD, //符合组态的模块地址
CMD := B#16#3, //要执行的 FTP 命令
NAME_STR := P#DB44.DBX 170.0 BYTE 220, //目标数据区地址和长度
FILE_DB_NR := 42, //数据块编号
OFFSET := DW#16#0, //(在示例中不相关)
LEN := DW#16#0, //(在示例中不相关)
DONE := M 420.1, //状态参数
ERROR := M 420.2, //错误信息
STATUS := MW 422); //状态信息

调用的系统函数

以下系统函数由程序块 FTP_CMD 调用:

用于 SIMATIC NET S7 CP 的程序块


88 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

SFC 1、SFC 20、SFC 24、SFC 58、SFC 59

说明
请注意,不能使用老式 SIMATIC S7-300 CPU 的 FTP 客户端服务,例如 CPU 312 或
CPU 315-1AF01,原因是它们不支持 SFC24。

2.4.2.2 输入参数 - FTP_CMD

输入参数的说明

必须为每个 FTP 块调用提供下列输入参数:

表格 2- 8 FB40 (FTP_CMD)的形式参数 - 输入参数

参数 声明 类型 取值范围 含义/说明

ID INPUT INT 对于 S7-300: 1, 在 FTP 连接上执行 FTP 作业。 该参数


2...16 识别所使用的连接。
对于 S7-400: 1,
2...64
LADDR INPUT WORD 模块起始地址
如果通过 STEP 7 组态 CP,则会显示模
块起始地址。 在此指定该地址。
CMD INPUT BYTE 请参见下表 - 当调用 FB40 时执行 FTP 命令。 可以在
“CMD”参数中的 表后找到更多信息。
FTP 命令 如果 CP 固件不支持命令,则输出一条带
STATUS = 8F6BH 的出错消息。
FTP 命令示例:
 RETRIEVE: B#16#3
 CONNECT_TLS_PRIVATE:
B#16#11

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 89
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

参数 声明 类型 取值范围 含义/说明

NAME_STR INPUT ANY VARTYPE 只能 该地址参考一个数据块区。 在此,指定


为“BYTE”。 输入目标数据的数据区域的地址和长
度。
 当 CMD = 1、17 时:
通过该命令,“NAME_STR”参数指定
通过具有下列属性的 FTP 连接来寻址
的 FTP 服务器:
- FTP 服务器的 IP 地址
- 用户名
- 登录口令
必须将这些数值指定为 ANY 指针的目
标地址范围内的连续字符串。
 当 CMD = 2、3、4、6、7 时:
通过该命令,“NAME_STR”参数指定
FTP 服务器上的文件名,即数据源或
数据目标地址。 将该文件名指定为
ANY 指针的目标地址范围内的字符
串。
 当 CMD = 5 时: 参数不相关
可以在下文找到关于此内容的实例。
FILE_DB_NR INPUT INT 在此指定的数据块包含要读取/写入的文
件 DB。
只有在 CMD = 2、3、6 和 7 时,参数才
相关。

用于 SIMATIC NET S7 CP 的程序块


90 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

参数 声明 类型 取值范围 含义/说明

OFFSET INPUT DWORD 只有在 CMD = 7 时:


从将要读取的那个文件算起的偏移量(以
字节计)。
LEN INPUT DWORD 只有在 CMD = 7 时:
在“OFFSET”中指定的数值处开始读取的
子长(以字节计)。
特性:
 如果指定“DW#16#FFFFFFFF”,将读
取文件的可用剩余部分。
如果没有出现其它错误,则结果“正
确”(DONE = 1,STATUS = 0)。
 当 OFFSET > 原始文件长度时:
在这种情况下,目标文件的长度会显
示在文件 DB 的 ACT_LENGTH 参数
中: CPU 上的 0 字节。
如果没有出现其它错误,则结果“正
确”(DONE = 1,STATUS = 0)。
 当 OFFSET + LEN > 原始文件长度
(且 LEN ≠ 0xFFFFFFFF)时:
在这种情况下,目标文件的长度会显
示在文件 DB 的 ACT_LENGTH 参数
中: 从“OFFSET”开始的可用字节。
如果没有出现其它错误,则结果“正
确”(DONE = 1,STATUS = 0)。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 91
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

“CMD”参数中的 FTP 命令

下面的表格解释了“CMD”参数命令的含义,并说明了需要提供哪些输入参数。 必须始终
设置 ID 和 LADDR 参数,以识别连接。

表格 2- 9 “CMD”参数中的 FTP 命令

CMD 相关的输入参数(除 ID 含义/处理


和 LADDR 外)

0 (NOOP) - 被调用的 FC 不执行任何动作。 当提供这些参数时,按如下


规定设置状态代码:
 DONE=1;ERROR=0;STATUS=0
1 (CONNECT) NAME_STR 通过该命令,FTP 客户端将与 FTP 服务器建立 FTP 连接(端
口 21)。
所有其它 FTP 命令都可以使用具有此处指定的连接 ID 的连
接。 然后可与为该用户指定的 FTP 服务器交换数据。
2 (STORE) NAME_STR 该函数调用将一个数据块(文件 DB)从 FTP 客户端(S7-CPU)
FILE_DB_NR 传送到 FTP 服务器。
注意: 如果该文件(文件 DB)已经存在于 FTP 服务器上,则
该文件将被覆盖。
3 (RETRIEVE) NAME_STR 该函数调用将文件从 FTP 服务器传送到 FTP 客户端(S7-
FILE_DB_NR CPU)。
注意: 如果 FTP 客户端上的数据块(文件 DB)已经包含一个
文件,则该文件被覆盖。
4 (DELETE) NAME_STR 通过该函数调用,删除 FTP 服务器上的文件。
5 (QUIT) - 通过该函数调用,建立使用 ID 选定的 FTP 连接。
6 (APPEND) NAME_STR 与“STORE”类似,“APPEND”命令将文件保存在 FTP 服务器
FILE_DB_NR 上。 但是,对于“APPEND”命令,不会覆盖 FTP 服务器上
的文件。 为现有文件添加新内容。
如果 FTP 服务器上不包含该文件(文件 DB),则创建该文
件。

用于 SIMATIC NET S7 CP 的程序块


92 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

CMD 相关的输入参数(除 ID 含义/处理


和 LADDR 外)

7 (RETR_PART) NAME_STR 使用“RETR_PART”命令(检索部分),可以从 FTP 服务器请


FILE_DB_NR 求文件的一部分。
OFFSET 如果涉及非常大的文件,则该命令允许仅限于读取当前要求
LEN 的部分。
为此,需要获知文件的结构。
在 FB40 中,使用“OFFSET”和“LEN”两个参数输入所要求的
文件部分。
17 NAME_STR 使用“CONNECT_TLS_PRIVATE”命令,FTP 客户端可与
(CONNECT_TLS_ FTP 服务器(端口 21)建立 SSL 安全 FTP 连接 (FTPS)。
PRIVATE) 控制连接以及数据连接的数据将是安全的。
所有其它 FTP 命令都可以使用具有此处指定的连接 ID 的连
接。 然后可与为该用户指定的 FTP 服务器交换数据。
要求:
 必须在 CP 中激活“安全性”(Security) 选项。
 对于通过 SSL 实现安全功能的 FTP,必须在 CP 组态中
提供证书。

关于“NAME_STR”参数内容的实例
参数记录具有下列内容:

表格 2- 10 对于 CMD = 1、17 的参数记录的内容

相对地址 2) 名称 类型 1) 示例 含义

0.0 ip_address STRING ’142.11.25.135’ FTP 服务器的 IP 地址


[100]
102.0 用户名 STRING [32] 'user' 用于登录 FTP 服务器的用户名
136.0 密码 STRING [32] 'password' 用于登录 FTP 服务器的口令
1) 指定尽可能最大的字符串长度
2) 指定值与“类型”中指定的字符串长度有关。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 93
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

表格 2- 11 对于 CMD = 2、3、4、6、7 的参数记录的内容

相对地址 2) 名称 类型 1) 示例 含义

170.0 文件名 STRING 'plant1/tank2/press.dat' 目标文件或源文件的文件名


[220] 注意:
或 如果 CMD = 7
STRING (RETR_PART),则文件名的最
[212] 大长度不得超过 212 个字符。

1) 指定尽可能最大的字符串长度
2) 指定值与“类型”中指定的字符串长度有关。

2.4.2.3 输出参数和状态信息 - FTP_CMD

简介
为了进行状态评估,必须在用户程序中对下列参数进行计算:

表格 2- 12 FB40 (FTP_CMD)的形式参数 - 输出参数

参数 声明 类型 取值范围 含义/说明

DONE OUTPUT BOOL 0: - 该参数指示是否无错完成该


1:作业已执行 作业。
ERROR OUTPUT BOOL 0: - 错误代码
1:错误 该参数表示不能正确执行作
业。
STATUS OUTPUT WORD 见下表 状态代码
该参数提供关于作业执行的
详细信息。

每次块调用时,更新 DONE、ERROR 和 STATUS 参数。

用于 SIMATIC NET S7 CP 的程序块


94 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

示例

在作业执行期间,FB40 返回下列代码:

● DONE=0

● ERROR=0

● STATUS = 8181H

含义: 作业仍在运行。

评估状态代码

说明
对于 STATUS 中以 8FxxH 编码的条目,请参见“STEP 7 标准和系统函数”参考手册中的
信息。 描述通过 RET_VAL 输出参数进行错误评估的章节含详细信息。

表格 2- 13 FB 40: STATUS 参数与 DONE 和 ERROR 一起使用时的含义

DONE ERROR STATUS 含义

0 0 0000H 没有任何作业在执行中。
1 0 0000H 作业无错完成。
0 0 8181H 激活作业。
如果永久指示 8181H:
不会为 FB40 释放 CP(因为调用了固件版本(CMD 6、
CMD 7 或 CMD 17)的一个非法命令。)
0 1 8090H  不存在带该模块起始地址的模块。
 所使用的块与正在使用的系统系列不匹配(请牢记对 S7300
和 S7400 使用不同的块)。
0 1 8091H 模块起始地址不是双字边界
0 1 8092H ANY 指针的类型信息不是字节型
0 1 80A4H 没有在 CPU 和 CP 之间建立通信总线连接(对于较新的 CPU
版本)。
导致这种情况的原因举例如下:
 无连接组态
 超出了可同时运行的 CP 的最大数目

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 95
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

DONE ERROR STATUS 含义

0 1 80B0H 该模块不能识别数据记录。
0 1 80B1H 目标地址区无效;
例如,目标地址区 > 240 字节。
0 1 80B2H 未在 CPU 和 CP 之间建立通信总线连接(对于较旧的 CPU
版本)。
(对于较新的 CPU 版本,请参见 80A4H)
0 1 80C0H 无法读取数据记录。
0 1 80C1H 当前正在处理所指定的数据记录。
0 1 80C2H 未决的作业太多。
0 1 80C3H 资源已占用(内存)。
0 1 80C4H 通信错误(临时发生,通常建议在用户程序中重复执行该作
业)。
0 1 80D2H 模块起始地址错误。
0 1 8183H 组态与作业参数不匹配。
0 1 8184H 为参数 NAME_STR 指定非法数据类型
0 1 8186H ID 参数无效。 ID = 1, 2....64
0 1 8302H 目标站上没有可用接收资源。
0 1 8F22H 源区无效,例如:
该区在 DB 中不存在
0 1 8F23H 写入参数时发生区域长度错误(例如,DB 太短)。
0 1 8F24H 读取参数时发生范围错误
0 1 8F28H 读取参数时发生对准错误
0 1 8F32H 该参数包含了一个太高的 DB 号。
0 1 8F33H DB 编号错误
0 1 8F3AH 没有装载区域(DB)
0 1 8F50H 文件 DB 为 DB0,或不存在 DB
0 1 8F51H 所指定的文件 DB 数据区域比已存在的数据区域长。
0 1 8F52H 文件 DB 位于写保护内存中。
0 1 8F53H 文件 DB 的最大长度小于当前长度
0 1 8F54H 文件 DB 不包含任何有效数据。

用于 SIMATIC NET S7 CP 的程序块


96 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

DONE ERROR STATUS 含义

0 1 8F55H 标题状态位: 已锁定


0 1 8F56H 复位文件 DB 标题中的 NEW 位未复位。
0 1 8F57H FTP 客户端不具有到文件 DB 的写访问权,而具有到 FTP 服
务器的写访问权(标题状态位: WriteAccess)。
0 1 8F60H 无效的用户数据,例如,FTP 服务器的无效 IP 地址
0 1 8F61H 未获得的 FTP 服务器
0 1 8F62H 可能的含义:
 作业不受 FTP 服务器支持,或遭到拒绝
 FTP 服务器不支持 SSL 安全连接。
0 1 8F63H FTP 服务器中止文件传送
0 1 8F64H FTP 控制连接错误;不能发送或接收数据;在发生该类型错
误后,必须重新建立 FTP 控制连接。
0 1 8F65H FTP 数据连接错误;无法发送或接收数据。 必须再次调用作
业。
例如,当在 FTP 服务器上已经打开所寻址的文件时,
RETRIEVE (CMD=3)中会发生该错误。
0 1 8F66H 从 CPU 读取/向 CPU 写入数据错误(例如,不存在 DB 或 DB
太小)
0 1 8F67H CP 上的 FTP 客户端出错;例如,尝试打开的 FTP 连接数超
过最大值。
0 1 8F68H FTP 客户端拒绝了作业。
例如,当在文件 DB 报头中选择的参数 MAX_LENGTH 太小
时,由 RETRIEVE (CMD=3) 造成该错误。
0 1 8F69H FTP 连接处于错误状态,例如:
 在没有终止之前的连接(带相同的连接 ID)时调用连接
 对已经终止的连接发送了连接终止命令;
 在尚未建立的连接上,发送了一个 STORE 命令。
0 1 8F6AH 由于临时资源出现瓶颈,无法建立连接。
解决方法: 重复块调用。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 97
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

DONE ERROR STATUS 含义

0 1 8F6BH 可能的原因:
 CMD 参数值错误
 不支持 FB40 命令。
可能原因:CP 中的固件错误
补救措施: 固化程序更新(对于较早的 CP,使用函数
FC 40...FC 44,而不是 FB 40。)
0 1 8F6CH 在 OFFSET 参数中设置的值大于 7FFF FFFH。
0 1 8F6DH FTP 客户端不支持 SSL 安全连接。
0 1 8F6EH 证书的签名无效。
0 1 8F6FH 可能的原因:
 证书的“notBefore”值无效。
 证书无效: “notBefore”条目包含的时间晚于当前时间。
0 1 8F70H 可能的原因:
 证书的“notAfter”值无效。
 证书已过期: “notAfter”条目包含的时间早于当前时间。
0 1 8F71H 无法找到不受信证书的签发者证书
0 1 8F72H 原始 CA 证书无效。 此证书不是 CA 证书,或者其扩展内容
与预期目的不符。
0 1 8F73H 出于特定目的将原始 CA 证书标记为不可信证书。
0 1 8F74H 验证证书期间出现其它错误。
0 1 8F7FH 内部错误;例如非法 ANY 引用

2.4.2.4 将 FC 40-44 移植到 FTP_CMD

比较功能块 FB40 和较早的功能 FC40...44

带 FTP 功能的所有 CP 均支持功能 FC40...44。也就是说,现有的用户程序不作修改便可


使用。

如果要将 FTP 功能 FC40...44 转换为 FB40,则需要修改用户程序。

下表给出了用于更换功能 FC40...44 的 FB40 命令。

用于 SIMATIC NET S7 CP 的程序块


98 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

● 由“X”指出相关性。

● 当不存在相关性时,由“-”来指示。

FTP_CMD 的“CMD”参数的命令
较早的 FTP 功 CMD = 1 CMD = 2 CMD = 3 CMD = 4 CMD = 5 CMD = 6
能 FC40...44 CMD = 7
CMD = 17

FC40 X 1)
FC41 X 2)
FC42 X 3)
FC43 X4)
FC44 X
-

1)...4) FC40...43 的参数和 CMD 1...4 (FB40)的参数不相同。


(参见下表)

在下表中,列出了在功能 FC40..FC43 或命令 FB40 中指定一个特定功能的相应参数。

FC 的参数 FTP_CMD(带 CMD 1...4)中的参数

FC40: 登录 → CMD = NAME_STR


1:
FC41: FILE_NAME → CMD = NAME_STR
2:
FC42: FILE_NAME → CMD = NAME_STR
3:
FC43: FILE_NAME → CMD = NAME_STR
4:
FC40...43 BUFFER_DB_NR → 忽略(由背景数据块代替)

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 99
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

2.4.3 FTP_CONNECT

2.4.3.1 含义和调用 - FTP_CONNECT

含义
通过调用该函数,FTP 客户端建立一个到 FTP 服务器的 FTP 连接。

必须将 FTP 服务器的 IP 地 s 址、用户标识和用户标识的口令(如果必要)传送到 FTP 服务


器中。

如果使用相同的 FTP 连接 ID,则通过 FTP 客户端的所有其他访问根据该用户标识进行。


然后与为该用户指定的 FTP 服务器交换数据。

调用接口

)73B&211(&7

%22/ $&7 '21( %22/

,17 ,' (5525 %22/

:25' /$''5 67$786 :25'

$1< /2*,1

,17 %8))(5B'%B15

STL 的调用实例

STL 解释
call fc40 ( //调用 FTP_CONNECT
ACT := M 420.0, //由存储位触发的作业
ID := 4, //符合组态的 FTP 连接 ID
LADDR := W#16#3FFD, //符合组态的模块地址
LOGIN := P#DB40.DBX 0.0 BYTE 170, //DB40 中 LOGIN 的信息
BUFFER_DB_NR := 9, //用于 FTP 服务的缓冲区
DONE := M 420.1,
ERROR := M 420.2,
STATUS := MW 422);

用于 SIMATIC NET S7 CP 的程序块


100 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

2.4.3.2 形式参数的解释 - FTP_CONNECT

常规调用参数的解释

在每个 FTP 功能调用中,常规参数都具有相同的意义;因此,将在一个小节内对这些参


数统一进行说明。

特定的调用形式参数解释

表格 2- 14 用于 FTP_CONNECT 的形式参数

参数 声明 数据类型 说明

登录 INPUT ANY 该参数指定要在 FTP 连接上访问的 FTP 服务器。


(仅下列类型 (欲知详情,请参见下表)
允许作为 在此指定用于输入目标数据的数据区的地址和长度。
VARTYPE:
该地址参考一个数据块区。
BYTE)
ANY 指针数据类型用于对该数据区进行寻址。关于该数据类
型的更详细信息,请参见 STEP 7 在线帮助中的附录主题
“ANY 参数类型的格式”。
BUFFER_DB_N INPUT INT 在此,输入 FTP 客户端要求作为一个缓冲区的一个数据块,
R 以用于 FTP 传送。
可以将同一个数据块作为所有 FTP 作业的缓冲区。
注意:
所保留 DB 的长度必须至少为 255 个字节!

LOGIN 参数

对于 FTP_CONNECT,该参数记录内容如下:

相对地址 名称 类型 1) 示例 含义
2)

0.0 ip_addres STRING '142.11.25.135' FTP 服务器的 IP 地址。


s [100]
102.0 用户名 STRING 'user' 用于登录 FTP 服务器的用户名。
[32]

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 101
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

相对地址 名称 类型 1) 示例 含义
2)

136.0 密码 STRING 'password' 用于登录 FTP 服务器的密码。


[32]
170.0 文件名 STRING 'plant1/tank2/press.dat' 目标文件或源文件的文件名 3)
[220]
1) 在每种情况下,指定可能的最大字符串长度
2) 所指定的数值与在“类型”中指定的字符串长度有关。
3) 这些行与此调用无关。

2.4.4 FTP_STORE

2.4.4.1 含义和调用 - FTP_STORE

含义
该函数调用将一个数据块(文件 DB)从 FTP 客户端(S7-CPU)传送到 FTP 服务器。

需要指定包含该文件的数据块。 还必须选择在 FTP 服务器上创建该文件时的路径/文件


名。

如果该文件(文件 DB)已经存在于 FTP 服务器上,则该文件将被覆盖。

调用接口

FTP_STORE

BOOL ACT DONE BOOL

INT ID ERROR BOOL

WORD LADDR STATUS WORD

ANY FILE_NAME

INT BUFFER_DB_NR

INT FILE_DB_NR

STL 的调用实例

用于 SIMATIC NET S7 CP 的程序块


102 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

STL 解释
call fc41 ( //调用 FTP_STORE
ACT := M 420.0, //由存储位触发的作业
ID := 4, //符合组态的 FTP 连接 ID
LADDR := W#16#3FFD, //符合组态的模块地址
FILE_NAME := P#DB40.DBX 170.0 BYTE 220, //DB40 中目标文件的信息
BUFFER_DB_NR := 9, //用于 FTP 服务的缓冲区
FILE_DB_NR := 42, 源文件中的 DB 号
DONE := M 420.1,
ERROR := M 420.2,
STATUS := MW 422);

2.4.4.2 形式参数的解释 - FTP_STORE

常规调用参数的解释

在每个 FTP 功能调用中,常规参数都具有相同的意义;因此,将在一个小节内对这些参


数统一进行说明。

特定的调用形式参数解释

表格 2- 15 用于 FTP_STORE 的形式参数

参数 声明 数据类型 说明

FILE_NAME INPUT ANY 该参数指定数据目标。


(仅下列类型允 (欲知详情,请参见下表)
许作为 在此指定用于输入目标数据的数据区的地址和长度。
VARTYPE:
该地址参考一个数据块区。
BYTE)
ANY 指针数据类型用于对该数据区进行寻址。关于该
数据类型的更详细信息,请参见 STEP 7 在线帮助中
的附录主题“ANY 参数类型的格式”。
BUFFER_DB_NR INPUT INT 在此,输入 FTP 客户端要求作为一个缓冲区的一个数
据块,以用于 FTP 传送。
可以将同一个数据块作为所有 FTP 作业的缓冲区。
注意:
所保留 DB 的长度必须至少为 255 个字节!
FILE_DB_NR INPUT INT 在此指定的数据块包含要读取的文件 DB。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 103
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

FILE_NAME 参数

对于 FTP_STORE,该参数记录包含下列内容:

相对地址 名称 类型 1) 示例 含义
2)

0.0 ip_addre STRING [100] '142.11.25.135' FTP 服务器的 IP 地址。3)


ss
102.0) 用户名 STRING [32] 'user' 用于登录 FTP 服务器的用户名。3)
136.0 密码 STRING [32] 'password' 用于登录 FTP 服务器的密码。3)
170.0 文件名 STRING [220] 'plant1/tank2/press.dat' 目标文件或源文件的文件名
1) 在每种情况下,指定可能的最大字符串长度
2) 所指定的数值与在“类型”中指定的字符串长度有关。
3) 这些行与此调用无关。

2.4.5 FTP_RETRIEVE

2.4.5.1 含义和调用 - FTP_RETRIEVE

含义

该函数调用将文件从 FTP 服务器传送到 FTP 客户端(S7-CPU)。

必须指定将输入该文件的数据块。 还必须选择在 FTP 服务器上创建该文件时的路径/文件


名。

如果 FTP 客户端上的数据块(文件 DB)已经包含一个文件,则该文件被覆盖。

用于 SIMATIC NET S7 CP 的程序块


104 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

调用接口

FTP_RETRIEVE

BOOL ACT DONE BOOL

INT ID ERROR BOOL

WORD LADDR STATUS WORD

ANY FILE_NAME

INT BUFFER_DB_NR

INT FILE_DB_NR

STL 的调用实例

STL 解释
call fc42 ( //调用 FTP_RETRIEVE
ACT := M 420.0, //由存储位触发的作业
ID := 4, //符合组态的 FTP 连接 ID
LADDR := W#16#3FFD, //符合组态的模块地址
FILE_NAME := P#DB40.DBX 170.0 BYTE 220, //DB40 中源文件的信息
BUFFER_DB_NR := 9, //用于 FTP 服务的缓冲区
FILE_DB_NR := 42, 目标文件中的 DB 号
DONE := M 420.1,
ERROR := M 420.2,
STATUS := MW 422);

2.4.5.2 形式参数的解释 - FTP_RETRIEVE

常规调用参数的解释

在每个 FTP 功能调用中,常规参数都具有相同的意义;因此,将在一个小节内对这些参


数统一进行说明。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 105
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

特定的调用形式参数解释

表格 2- 16 用于 FTP_RETRIEVE 的形式参数

参数 声明 数据类型 说明

FILE_NAME INPUT ANY 该参数指定数据源。


(仅下列类 (欲知详情,请参见下表)
型允许作为 在此指定用于输入目标数据的数据区的地址和长度。
VARTYPE
该地址参考一个数据块区。

ANY 指针数据类型用于对该数据区进行寻址。关于该数据
BYTE)
类型的更详细信息,请参见 STEP 7 在线帮助中的附录主
题“ANY 参数类型的格式”。
BUFFER_DB_NR INPUT INT 在此,输入 FTP 客户端要求作为一个缓冲区的一个数据
块,以用于 FTP 传送。
可以将同一个数据块作为所有 FTP 作业的缓冲区。
注意:
所保留 DB 的长度必须至少为 255 个字节!
FILE_DB_NR INPUT INT 在此指定的数据块包含要写入的文件 DB (目标数据区)。

FILE_NAME 参数
对于 FTP_RETRIEVE,该参数记录包含下列内容:

相对地址 名称 类型 1) 示例 含义
2)

0.0 ip_address STRING '142.11.25.135' FTP 服务器的 IP 地址。3)


[100]
102.0 用户名 STRING [32] 'user' 用于登录 FTP 服务器的用户名。3)
136.0 密码 STRING [32] 'password' 用于登录 FTP 服务器的密码。3)
170.0 文件名 STRING 'plant1/tank2/press.dat' 目标文件或源文件的文件名
[220]
1) 在每种情况下,指定可能的最大字符串长度
2) 所指定的数值与在“类型”中指定的字符串长度有关。
3) 这些行与此调用无关。

用于 SIMATIC NET S7 CP 的程序块


106 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

2.4.6 FTP_DELETE

2.4.6.1 含义和调用 - FTP_DELETE

含义
通过该函数调用,删除 FTP 服务器上的文件。

调用接口

FTP_DELETE

BOOL ACT DONE BOOL

INT ID ERROR BOOL

WORD LADDR STATUS WORD

ANY FILE_NAME

INT BUFFER_DB_NR

STL 的调用实例

STL 解释
call fc43 ( //调用 FTP_DELETE
ACT := M 420.0, //由存储位触发的作业
ID := 4, //符合组态的 FTP 连接 ID
LADDR := W#16#3FFD, //符合组态的模块地址
FILE_NAME := P#DB40.DBX 170.0 BYTE 220, //DB40 中目标文件的信息
BUFFER_DB_NR := 9, //用于 FTP 服务的缓冲区
DONE := M 420.1,
ERROR := M 420.2,
STATUS := MW 422);

2.4.6.2 形式参数的解释 - FTP_DELETE

常规调用参数的解释

在每个 FTP 功能调用中,常规参数都具有相同的意义;因此,将在一个小节内对这些参


数统一进行说明。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 107
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

特定的调用形式参数解释

表格 2- 17 用于 FTP_DELETE 的形式参数

参数 声明 数据类型 说明

FILE_NAME INPUT ANY 该参数指定数据目标。


(仅下列类型 (欲知详情,请参见下表)
允许作为 在此指定用于输入目标数据的数据区的地址和长度。
VARTYPE:
该地址参考一个数据块区。
BYTE)
ANY 指针数据类型用于对该数据区进行寻址。关于该数据
类型的更详细信息,请参见 STEP 7 在线帮助中的附录主
题“ANY 参数类型的格式”。
BUFFER_DB_N INPUT INT 在此,输入 FTP 客户端要求作为一个缓冲区的一个数据
R 块,以用于 FTP 传送。
可以将同一个数据块作为所有 FTP 作业的缓冲区。
注意:
所保留 DB 的长度必须至少为 255 个字节!

LOGIN 参数

对于 FTP_DELETE,该参数记录包含下列内容:

相对地址 名称 类型 1) 示例 含义
2)

0.0 ip_address STRING '142.11.25.135' FTP 服务器的 IP 地址。3)


[100]
102.0 用户名 STRING [32] 'user' 用于登录 FTP 服务器的用户名。3)
136.0 密码 STRING [32] 'password' 用于登录 FTP 服务器的密码。3)
170.0 文件名 STRING 'plant1/tank2/press.dat' 目标文件或源文件的文件名
[220]
1) 在每种情况下,指定可能的最大字符串长度
2) 所指定的数值与在“类型”中指定的字符串长度有关。
3) 这些行与此调用无关。

用于 SIMATIC NET S7 CP 的程序块


108 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

2.4.7 FTP_QUIT

2.4.7.1 含义和调用 - FTP_QUIT

含义
通过该函数调用,建立使用 ID 选定的 FTP 连接。

调用接口

FTP_QUIT

BOOL ACT DONE BOOL

INT ID ERROR BOOL

WORD LADDR STATUS WORD

STL 的调用实例

STL 解释
call fc44 ( //调用 FTP_QUIT
ACT := M 420.0, //由存储位触发的作业
ID := 4, //符合组态的 FTP 连接 ID
LADDR := W#16#3FFD, //符合组态的模块地址
DONE := M 420.1,
ERROR := M 420.2,
STATUS := MW 422);

说明
FC44 的输出必须分配一个作为数值的存储字。 如果输入 DBx.DWy,则显示一条出错消
息(仅适用于 S7-300)。

2.4.7.2 形式参数的解释 - FTP_QUIT

常规调用参数的解释

在每个 FTP 功能调用中,常规参数都具有相同的意义;因此,将在一个章节内对其进行


统一描述。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 109
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

2.4.8 用于CP和连接分配的参数(输入参数)

用于 CP 和连接分配的参数(输入参数)

除了设置由每个 FTP 块调用启动的作业的特有输入参数之外,还必须为它们设置下列常


规输入参数:

参数 声明 类型 1) 可能值 含义

ACT INPUT BOOL 0.1 该参数包含用于触发该作业的初始化位。


 如果 ACT = 1,则作业已执行。
在作业执行期间,FC 返回下列代码:
– DONE=0

– ERROR=0

– STATUS = 8181H
 如果 ACT = 0,则调用的 FC 不执行任何动作;然
后这些参数设置的状态代码如下:
– DONE=0

– ERROR = 1

– STATUS=8F70H
注意事项/建议:
应该在应用程序中有条件地执行 FTP 调用,例如通过
判断状态代码。 使用 ACT 位来控制调用并不是一个
好办法。
必须将 ACT 位设置为 1,直到 DONE 位指出已经执
行。
ID INPUT INT 1,2...64 在 FTP 连接上执行 FTP 作业。 该参数识别所使用的
连接。
LADDR INPUT WORD 模块起始地址
调用 FC 时,在 LADDR 参数中传送 ADVANCED-CP
的模块起始地址。
可以在"地址 > 输入"中找到 ADVANCED-CP 属性组态
中的 ADVANCED-CP 的模块起始地址。

用于 SIMATIC NET S7 CP 的程序块


110 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

注意
确保在设置了 ACT = 1 时,每个用户 ID 只调用一个 FTP 客户端程序块。
例如,FTP_STORE 和 FTP_RETRIEVE 不得同时在同一 FTP 连接上运行。 满足此要
求才能实现正常的 FTP 功能。
否则不能指望输出参数是正确性的(DONE 位、ERROR 位和 STATUS 字)。

2.4.9 状态信息(输出参数)

状态信息(输出参数)

为了进行状态评估,必须在用户程序中对下列参数进行计算:

参数 声明 类型 1) 可能值 含义

DONE OUTPUT BOOL 0: - 该参数指示是否无错完成该作业。


1: 作业已完成
ERROR OUTPUT BOOL 0: - 错误代码
1: 有错误 该参数表示不能正确执行作业。
STATUS OUTPUT WORD 见下表 状态代码
该参数提供关于作业执行的详细信息。

说明
对于 FC FTP_QUIT,STATUS 参数只能使用存储字数据类型(只适用于 CP 343-1 IT)。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 111
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

示例

在作业执行期间,FC 返回下列代码:

● DONE=0

● ERROR=0

● STATUS = 8181H

评估状态代码

请记住,每次调用块时,都会更新状态代码 DONE、ERROR 和 STATUS。

说明
对于 STATUS 中以 8FxxH 编码的条目,请参见“STEP 7 标准和系统函数”参考手册中的
信息。 该章描述了 RET_VAL 输出参数错误评估的详细信息。

DONE ERROR STATUS 含义

1 0 0000H 作业完成无错误。
0 0 0000H 没有任何作业在执行中。
0 0 8181H 激活作业。
0 1 8090H  不存在带该模块起始地址的模块。
 所使用的 FC 与正在使用的系统系列不匹配(请牢记对 S7300 和 S7400
使用不同的 FC)。
0 1 8091H 模块起始地址不是双字边界。
0 1 8092H ANY 指针的类型信息不是字节型。
0 1 80A4H 没有建立 CPU 与 CP 之间的通信总线连接。(对于较新的 CPU 版本)。
导致这种情况的原因举例如下:
 无连接组态;
 超出了可同时运行的 CP 的最大数目。
0 1 80B0H 该模块不能识别数据记录。
0 1 80B1H  目标地址区无效。
例如,目标地址区 > 240 字节。

用于 SIMATIC NET S7 CP 的程序块


112 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

DONE ERROR STATUS 含义

0 1 80B2H 未建立 CPU 和 CP 之间的通信总线连接(对于较早版本的 CPU;否则为


80A4H;欲知更多信息,请参见该代码)
0 1 80C0H 无法读取数据记录。
0 1 80C1H 当前正在处理所指定的数据记录。
0 1 80C2H 未决的作业太多。
0 1 80C3H 资源已占用(内存)。
0 1 80C4H 通信错误(临时发生,通常建议在用户程序中重复执行该作业)。
0 1 80D2H 模块起始地址错误。
0 1 8183H 组态与作业参数不匹配。
0 1 8184H 为 FILE_NAME/LOGIN 参数指定的数据类型非法。
0 1 8186H ID 参数无效。 ID != 1,2....64.
0 1 8F22H 源区无效,例如:
该区在 DB 中不存在
0 1 8F24H 读取参数时发生区域错误。
0 1 8F28H 读取参数时发生队列错误。
0 1 8F32H 该参数包含了一个太高的 DB 号。
0 1 8F33H DB 编号错误。
0 1 8F3AH 没有装载区域(DB)。
0 1 8F50H 文件 DB 为 DB0,或不存在 DB
0 1 8F51H 所指定的文件 DB 数据区域比已存在的数据区域长。
0 1 8F52H 文件 DB 位于写保护内存中。
0 1 8F53H 文件 DB 的最大长度小于当前长度
0 1 8F54H 文件 DB 不包含任何有效数据
0 1 8F55H 标题状态位: 已锁定
0 1 8F56H 复位文件 DB 标题中的 NEW 位未复位。
0 1 8F57H FTP 客户端不具有到文件 DB 的写访问权,而具有到 FTP 服务器的写访问
权(标题状态位: WriteAccess)
0 1 8F5AH 缓冲区 DB 为 DB0,或不存在 DB。
0 1 8F5BH 缓冲区 DB 的数据区太小
0 1 8F5CH 缓冲区 DB 位于写保护的内存中

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 113
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

DONE ERROR STATUS 含义

0 1 8F60H 无效的用户数据,例如,FTP 服务器的无效 IP 地址


0 1 8F61H 未获得的 FTP 服务器
0 1 8F62H 作业不受 FTP 服务器支持,或遭到拒绝
0 1 8F63H FTP 服务器中止文件传送
0 1 8F64H FTP 控制连接错误;不能发送或接收数据;在发生该类型错误后,必须重新
建立 FTP 控制连接。
0 1 8F65H FTP 数据连接出错;不能发送或接收数据;必须再次调用作业
(FTP_STORE 或 FTP_RETRIEVE)。
例如,当在 FTP 服务器上已经打开所寻址的文件时,FTP_RETRIEVE 中会
发生该错误。
0 1 8F66H 从 CPU 读取/向 CPU 写入数据错误(例如,不存在 DB 或 DB 太小)
0 1 8F67H CP 上的 FTP 客户端出错;例如,尝试打开 10 个以上的 FTP 连接。
0 1 8F68H 该作业被 FTP 客户端拒绝
例如,当为文件 DB 的文件头中的 MAX_LENGTH 参数选择的数值太小时,
在 FTP_RETRIEVE 中会发生该错误。
0 1 8F69H 对于该调用,FTP 连接处于错误状态,例如,存在双重连接调用或尝试恢复
先前没有建立的连接(使用相同的连接 ID)
0 1 8F6AH 由于临时资源出现瓶颈,无法建立连接。
解决方法:重复块调用。
0 1 8F6CH 无法建立连接;FTP 客户端只支持 SSL 安全连接。
解决方法: 使用程序块 FTP_CMD。
0 1 8F70H ACT=0 时,调用 FTP 客户端块
0 1 8F7FH 内部错误;例如非法 ANY 引用

用于 SIMATIC NET S7 CP 的程序块


114 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

2.4.10 数据块文件DB

2.4.10.1 用于FTP服务的数据块(文件DB) - FTP客户端模式

过程
若要使用 FTP 传送数据,可在 S7 站的 CPU 上创建数据块(文件 DB)。 这些数据块必须
具有特定结构,以允许它们作为可传送文件由 FTP 服务进行处理。 它们由下列部分组
成:

● 部分 1: 文件 DB 报头(具有固定长度,20 字节)

● 部分 2: 用户数据(具有可变的长度和结构)

用于 FTP 客户端模式的文件 DB 报头
请注意: 此处描述的文件 DB 报头大部分与服务器模式的文件 DB 报头相同。 区别在于
下列参数:

● WRITE_ ACCESS

● FTP_REPLY_CODE

参数 Type 数值/含义 电源

EXIST BOOL EXIST 位指示用户数据区域是 dele FTP 命令设置 EXIST=0;


否包含有效数据。 stor FTP 命令设置 EXIST=1;
只有在 EXIST=1 时,才执行
retrieve FTP (检索 FTP)命
令。
 0:
文件 DB 不包含任何有效
的用户数据(
 1:
文件 DB 包含有效的用户
数据(

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 115
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

参数 Type 数值/含义 电源

LOCKED BOOL LOCKED 位用于限制到文件 在执行 stor 和 retr FTP 命令后,


DB 的访问。 设置 LOCKED=1。
 0: 在从用户程序中进行写入操作时,
可以访问文件 DB。 还可以使用下列功能:
 1: 在为了取得数据一致性而进行的写
文件 DB 被锁定。 访问期间,S7 CPU 上的用户程序
可以置位或复位 LOCKED。
建议在用户程序中按下列顺序执
行:
1. 检查 LOCKED 位;
若= 0
2. 设置 WRITEACCESS 位=0
3. 检查 LOCKED 位;
若= 0
4. 设置 LOCKED 位=1
5. 写数据
6. 设置 LOCKED 位=0
NEW BOOL NEW 位指示自从上一次读操 执行以后,stor FTP 命令设置
作以来,是否修改过数据。 NEW=1
 0: 读取数据后,S7-CPU 中的用户程
自从上一次写访问以来, 序必须设置 NEW=0 以允许新的
文件 DB 的内容没有发生 retr 命令。
改变。 S7 CPU 的用户程
序已经记录最后一次修
改。
 1:
S7 CPU 的用户程序还没
有记录最后一次写访问。

用于 SIMATIC NET S7 CP 的程序块


116 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

参数 Type 数值/含义 电源

WRITE_ BOOL 0: 在组态 DB 期间,将此位设置为初


ACCESS 用户程序(FTP 客户端块)具有 始值。
对 S7 CPU 上的文件 DB 的写 建议:
访问权限。
如有可能,应该保持此位不变!
1: 在特殊情况下,可以在操作期间对
用户程序(FTP 客户端块)不具 此进行改写。
有对 S7 CPU 上的文件 DB 的
写访问权限。
ACT_LENGTH DINT 用户数据区的当前长度。 在进行写入操作以后更新当前长
只有在 EXIST = 1 时,该域的 度。
内容才有效。
MAX_LENGTH DINT 用户数据区的最大长度(整个 应在 DB 组态期间指定最大长度。
DB 的长度减去 20 个字节的 还可在操作期间由用户程序修改该
文件头)。 数值。
FTP_REPLY_CO INT 无符号整型(16 位),包含最后 在执行 FTP 命令后,由 FTP 客户
DE 一个来自 FTP 的返回代码, 端自动更新。
代码为二进制数值。
只有当 EXIST=1 时,此区域
的内容才有效。
DATE_TIME DATE_AND_TIME 文件最近一次修改的日期和时 在写访问后更新当前日期。
间。 如果使用用于转发时间的功能,则
只有当 EXIST=1 时,此区域 条目对应于传递的时间。
的内容才有效。 如果不使用用于转发时间的功能,
则输入一个相对时间。 此时间表
示 IT-CP 启动的时间(初始值为
1994 年 1 月 1 日 0 点 0 分(午
夜))。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 117
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

2.4.10.2 用于FTP服务的数据块(文件DB)的结构 - FTP服务器模式

过程

若要使用 FTP 传送数据,可在 S7 站的 CPU 上创建数据块(文件 DB)。这些数据块必须具


有特定结构,以允许它们作为可传送文件由 FTP 服务进行处理。它们由下列部分组成:

● 部分 1: 文件 DB 报头(具有固定长度(20 字节)和结构)

● 部分 2: 用户数据(具有可变的长度和结构)

文件 DB 的文件头(用于 FTP 务器模式作)

请注意: 此处描述的文件 DB 报头大部分与客户端模式的文件 DB 报头相同。 区别在于


下列参数:

● WRITE_ ACCESS

● FTP_REPLY_CODE

参数 Type 数值/含义 电源

EXIST BOOL EXIST 位指示用户数据 dele FTP 命令设置 EXIST=0;


区域是否包含有效数 存储 FTP 命令设置 EXIST=1;
据。
只有在 EXIST=1 时,才
执行 retrieve FTP (检索
FTP)命令。
 0:
文件 DB 不包含任何
有效的用户数据(
 1:
文件 DB 包含有效的
用户数据(

用于 SIMATIC NET S7 CP 的程序块


118 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

参数 Type 数值/含义 电源

LOCKED BOOL LOCKED 位用于限制到 在执行 stor 和 retr FTP 命令后,设置


文件 DB 的访问。 LOCKED=1。
 0: 在从用户程序中进行写入操作时,还
可以访问文件 DB。 可以使用下列功能:
 1: 在为了取得数据一致性而进行的写访
文件 DB 被锁定。 问期间,S7 CPU 上的用户程序可以
置位或复位 LOCKED。
建议在用户程序中按下列顺序执行:
1. 检查 LOCKED 位;
若= 0
2. 设置 WRITEACCESS 位=0
3. 检查 LOCKED 位;
若= 0
4. 设置 LOCKED 位=1
5. 写数据
6. 设置 LOCKED 位=0
NEW BOOL NEW 位指示自从上一 执行以后,stor FTP 命令设置 NEW=1
次读操作以来,是否修 读取数据后,S7-CPU 上的用户程序
改过数据。 必须设置 NEW=0,以允许再次使用恢
 0: 复,或可以使用 dele FTP 命令删除文
自从上一次写访问以 件。
来,文件 DB 的内容
没有发生改变。 S7
CPU 的用户程序已
经记录最后一次修
改。
 1:
S7 CPU 的用户程序
还没有记录最后一次
写访问。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 119
用于工业以太网的程序块
2.4 用于 FTP 服务的程序块

参数 Type 数值/含义 电源

WRITE_ BOOL 0: 在组态 DB 期间,将此位设置为初始


ACCESS PG/PC 上的 FTP 客户 值。
端没有写访问权限,不 建议:
能访问 S7 CPU 上的文
如有可能,应该保持此位不变! 在特
件 DB。
殊情况下,可以在操作期间对此进行
1: 改写。
PG/PC 上的 FTP 客户
端有写访问权限,可以
访问 S7 CPU 上的文件
DB。
ACT_LENGTH DINT 用户数据区的当前长 在进行写入操作以后更新当前长度。
度。
只有在 EXIST = 1 时,
该域的内容才有效。
MAX_LENGTH DINT 用户数据区的最大长度 应在 DB 组态期间指定最大长度。
(整个 DB 的长度减去 还可在操作期间由用户程序修改该数
20 个字节的文件头)。 值。
FTP_REPLY_CO INT 此参数与 FTP 服务器模 由 FTP 服务器设置为"0"。
DE 式无关。
DATE_TIME DATE_AND_TIME 文件最近一次修改的日 在写访问后更新当前日期。
期和时间。 如果使用用于转发时间的功能,则条
只有当 EXIST=1 时,此 目对应于传递的时间。
区域的内容才有效。 如果不使用用于转发时间的功能,则
输入一个相对时间。 此时间表示 IT-
CP 启动的时间(初始值为 1994 年 1 月
1 日 0 点 0 分(午夜))。

用于 SIMATIC NET S7 CP 的程序块


120 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

2.5 用于已编程连接和 IP 组态的程序块


在某些应用领域,在特定应用程序中建立通信连接或创建程序控制的 IP 组态比通过
STEP 7 组态界面进行这些操作更具优势。

例如,大量机器制造商是发现这一优势的典型用户,他们要为客户提供简单的用户界面,
但需要调整通信服务以适应操作员输入。 最终用户不需要 STEP 7 的知识。

对于此类应用,功能块 FB55 可用于在 SEND/RECEIVE 接口上建立连接以及用于 IP 组


态。 使用 FB55 可灵活地将含组态数据的数据块传送到以太网 CP。

说明
请记住,此处描述的功能取决于所使用 CP 类型的特性(支持的连接类型)。 在手册中可找
到相关信息。

更多信息

在/1/ (页 330)中可找到有关以下主题的更多信息:

● 可组态连接类型的属性;

● 有关组态 IP 访问保护的信息;

● 有关数据量和组态限制的信息。

2.5.1 工作原理

编程和组态间的相互作用

通过 STEP 7 组态 SEND/RECEIVE 接口上的连接以及 CP 的 IP 组态,或者在 S7 站运行


期间通过用户程序组态它们。 不能在一个 CP 中混合这些形式!

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 121
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

已编程组态的原理

可以使用在用户程序中调用的函数块将用于通信连接和 IP 组态的组态数据传送到 CPU。

俭ㄪ㚙㒗⢀

&")0?#/.&)'
#0䞭两倈㚙㒗

愇㓎
⁉愪⍙#0䞭
俭ㄪ㚙㒗
愇㓎

愇㓎N



N㠩⩐Ⅵ

组态 DB 可以随时装载到 CP。 先前适用的连接和组态数据(IP 地址、子网掩码、默认路


由器、NTP 时间服务器和其它参数)将被覆盖。

以太网 CP 根据组态数据识别通信连接是否必须由用户程序建立。

说明
仅当为模块访问保护组态“未锁定”(Not locked)时,才能执行这些函数。 请参见 CP 属性
对话框中的“选项”(Options)选项卡(并非适用于每个 CP)。
还必须启用“在用户程序中设置 IP 地址”(Set IP address in user program) (请参见 CP 属性
对话框或 CP 以太网接口的“IP 组态”(IP Configuration)选项卡)。

以太网 CP 根据组态数据识别通信连接是否必须由用户程序建立。

说明
只要用户程序通过 FB55 IP_CONFIG 传送连接数据,CPU 就会立即在短时间内将 CP 切
换到 STOP 模式。 CP 在启动(RUN)期间接收系统数据(包括 IP 地址)和新的连接数据并进
行处理。

数量限制

最多可在程序块 CP_CONFIG 中指定 64 个连接。但最重要的因素是所使用的 CP 类型支


持该最大连接数。

用于 SIMATIC NET S7 CP 的程序块


122 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

特性/限制

● 仅针对 STEP 7 的一致性检查

STEP 7 中的连接组态包括在使用已编程组态时无法执行或仅能在一定限制条件下执行
的一致性检查!

● 需要对伙伴进行连接组态

在 STEP 7 中组态指定的连接时,为伙伴隐式创建连接;对于已编程组态,不能执行
该操作! 在这种情况下,必须为伙伴组态合适的连接。

● 组态 IP 访问保护

使用 IP 访问保护可以限制通过本地 S7 站的 CP 与具有特定 IP 地址的伙伴进行通信。


该参数分配也适用于已编程的通信连接。 在 STEP 7 中禁用 IP 访问保护(默认设置)或
给通信伙伴授权。

● 支持 DHCP/DNS

对于已编程的组态,还可以使用 DHCP (和用于邮件服务的 DNS)进行 IP 寻址。

在这种情况下,在 FB55 中(不是在组态中)定义 DHCP 服务器的使用。

● 上传时无连接信息

在 STEP 7 中上传 S7 站数据时,不包含已编程组态的数据。

● 为具有多个接口的 CP 组态连接

如果使用具有多个接口(例如,千兆位接口)的 CP,请查阅设备手册以了解是否两个接
口均支持该连接组态。

● 不能同时使用 PROFINET IO

如果要将设备用作 PROFINET IO 控制器或 IO 设备,则不能按此处所述使用 FB55 建


立连接。

● 运行具有容错 S7 连接功能的 CP 时,不可使用 IP_CONFIG

如果通过 CP 组态容错 S7 连接,则不能使用 IP_CONFIG 程序块组态 CP 的 IP 地


址。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 123
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

2.5.2 过程

初始状态

此处所述的步骤假定用户满足以下条件:

● 已在 STEP7 项目中创建本地 S7 站和所需的伙伴站。

● 已清楚必须建立连接时所使用的其它站类型。 在 STEP 7 项目中为这些站类型创建替


换对象。

组态 CP 属性

在“IP 组态”(IP Configuration)中设置 CP 属性: 选择“在用户程序中设置 IP 地址”(Set IP


address in user program)选项。

设定连接设置

通过用户程序建立连接的基本步骤如下:

1. 为组态 DB 中的系统和连接数据创建子域。

2. 设置组态 DB 中的连接属性。

3. 对用户程序中的 FB55 接口进行编程。

4. 在用户程序中使用 SEND/RECEIVE 接口的 FC 执行开放式通信服务。

2.5.3 组态数据块 (CONF_DB)

含义

组态数据块(CONF_DB)包含以太网 CP 的所有连接数据和组态数据(IP 地址、子网掩码、


默认路由器、NTP 时间服务器和其它参数)。组态数据块通过函数块 FB55 传送到 CP。

用于 SIMATIC NET S7 CP 的程序块


124 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

块和数据结构

下图说明了以下内容:

● 根据参数域和子域生成的结构

– 连接和特定系统数据通过相同结构的参数域进行描述。

– 各个参数由子域描述特征。

● 偏移范围

CONF_DB 可以按指定的偏移范围从数据块中的任何一点开始。 地址(或偏移)只能是


偶数。

俭ㄪ
㚙㒗⢀

ⅸ䬤听⠝N
#/.&?$" 两倈㚙㒗#0兽偺 ▵愇㓎
$"㤰峯䱏 䞭⓫㚙⤈

#0䞭两倈㚙㒗 䶤⢴
)$两倈㚙㒗ὣ㜟
愇㓎
ⱹ⤈倿┠ ⱹ⤈
愇㓎 ⱹ⤈

ⱹ⤈ ┭ὓ
⓫㚙
愇㓎N

ⱹ⤈N

① 在下面的系统数据的参数域(IP组态) (页 129)中,将对各参数字段进行介绍
② 在下面的连接类型的参数域 (页 130)中将介绍子域类型

参见

子域类型 (页 138)

2.5.4 组态数据块 - 实例
下面是一个具有系统数据参数域和 TCP 连接参数域的组态数据块实例。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 125
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

CONF_DB

STL
DATA_BLOCK DB271
TITLE=IP_CONFIG for 1 active nTCP connection,
AUTHOR : SIMATIC //CP-Daten : IP=200.12.1.144, Router=200.12.1.80
FAMILY : AS300 //连接数据: Destination IP-Addr=200.12.1.99,
NAME : ipconf //本地端口 = 4001,远程端口 = 5001,建立=激活
VERSION : 1.0 //2005 年 6 月 7 日
STRUCT
DB_TYP : INT := 1;
// --------------------------------------------------------- 系统数据 ------
sys_pb : INT:=0; //子域类型: CP 的系统数据
sys_id : INT:= 0; //系统参数 ID,始终为 0
sys_sb_cnt: INT:= 3; //系统参数域中的子域数目
ip_addr: SUB_IP_V4; // CP 的 IP 地址
ip_netmask: SUB_NETMASK; // CP 的子网掩码
ip_router: SUB_DEF_ROUTER; //默认路由器
// --------------------------------------------------------- tcp VB 01 --------
tcp_pb_01 : int := 1; //子域类型: TCP 连接
tcp_id_01 : int := 1; // 1. TCP_VB
tcp_sb_cnt_01 : int := 6; //每个 TCP 连接有 6 个元素
tcp_vb_ip_01 : SUB_IP_V4; //伙伴的 IP 地址
tcp_loc_01 : SUB_LOC_PORT; //
tcp_rem_01 : SUB_REM_PORT; //
tcp_vb_01_name : CON_NAME_L; //
tcp_vb_01_kbus : SUB_KBUS_ADDR; //仅与 S7-400 相关
rq_01 : ACT_CN_REQ; //
//----------------------------------
END_STRUCT ;
BEGIN

tcp_loc_01.port := 4001; //值与预定义不同时的


tcp_rem_01.port := 5001; //端口定义!
END_DATA_BLOCK

以下是实例 DB 中使用的类型定义。

用于 SIMATIC NET S7 CP 的程序块


126 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

“系统数据”子域的类型定义

STL
//数据结构 IP Config
TYPE "SUB_IP_V4"
STRUCT
id : int := 1; // ID for IP, V4-Addr.
len: int := 8; // Sub Block Length
b_3 : BYTE := b#16#C8; // IP_High 200.
b_2 : BYTE := b#16#0C; // IP_ 12.
b_1 : BYTE := b#16#01; // IP_ 1.
b_0 : BYTE := b#16#90; // IP_Low 144
END_STRUCT;
END_TYPE
TYPE "SUB_NETMASK"
STRUCT
id : int := 2; // ID for Sub Net Mask
len: int := 8; // Sub Block Length
b_3 : BYTE := b#16#FF; // SNM_High
b_2 : BYTE := b#16#FF; // SNM_
b_1 : BYTE := b#16#FF; // SNM_
b_0 : BYTE := b#16#00; // SNM_Low
END_STRUCT;
END_TYPE
TYPE "SUB_DEF_ROUTER"
STRUCT
id : int := 8; // ID_4_Router
len: int := 8; // Sub Block Length
r_3 : BYTE := b#16#C8; // R_High
r_2 : BYTE := b#16#0C; // R_
r_1 : BYTE := b#16#01; // R_
r_0 : BYTE := b#16#50; // R_Low
END_STRUCT;
END_TYPE

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 127
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

子域“TCP 连接”的类型定义

STL
TYPE "SUB_LOC_PORT"
STRUCT
id : int := 9; // ID_4_LOC_PORT
len: int := 6; // Sub Block Length
port: int := 2001; // Loc. Port
END_STRUCT;
END_TYPE
TYPE "SUB_REM_PORT"
STRUCT
id : int :=10; // ID_4_REM_PORT
len: int := 6; // Sub Block Length
port: int := 2002; // Rem. Port
END_STRUCT;
END_TYPE
TYPE "CON_NAME_L" // 24 characters
STRUCT
id : int := 18; // ID for CON Name
len: int := 28; // 4+len(n[0..x]
c : ARRAY [1..24] of CHAR := ‘V’,’B’,’_’,’N’,’a’,’m’,’e’,’_’,’2’,’4’,’C’,’h’,’a’,’r’,
‘a’,’c’,’t’,’e’,’r’,’s’,’_’,’0’,’0’,’1’;
END_STRUCT;
END_TYPE
TYPE "SUB_KBUS_ADDR"
STRUCT
id : int := 21; // ID for KBUS-Address
len: int := 5; //
addr: BYTE := B#16#04; // =R0/S4
END_STRUCT
END_TYPE
TYPE "ACT_CN_REQ"
STRUCT
id : int := 22; // ID for CON REQ Mode
len: int := 5; // Sub Block Length
w : BYTE := b#16#1; // = Active
END_STRUCT;

注意:
此处列出的结构还必须输入到符号表中。

SUB_IP_V4 条目的示例:

用于 SIMATIC NET S7 CP 的程序块


128 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

符号 地址 数据类型

SUB_IP_V4 UDT 100 UDT 100

参见

子域类型 (页 138)

2.5.5 系统数据的参数域(IP组态)

含义

下面给出了与 CP 的 IP 组态相关的系统数据参数域和需要在其中指定的子域。

某些应用不需要所有子域类型,有关详细信息,请参见下表。

布局

对于具有多个接口的 CP,下述参数域的结构仅适用于 PROFINET 接口。

 类型 = 0
 ID = 0
 子域数 = n
 子域 1
 子域 2
 子域 n
...

可用的子域

子域 参数
ID 类型 特性/说明 应用***)

1 SUB_IP_V4 本地 IP 地址 ++
2 SUBNET_MASK - ++

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 129
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

子域 参数
ID 类型 特性/说明 应用***)

8 SUB_DEF_ROUTER - +
4 SUB_DNS_SERV_ADDR *) 该子域可以出现 0 到 4 次。 第一个条目是主 DNS +
服务器。
14 SUB_DHCP_ENABLE 0: 无 DHCP +
1: DHCP
15 SUB_CLIENT_ID - +
注意: 仅当 SUB_DHCP_ENABLE = 1 时才有效
30**) SUB_DEVICE_NAME 符合 PROFINET IO 约定的设备名称 +
输入设备名称使该设备在网络中可唯一识别,以便
进行分析和诊断。
*)该子域类型只用于电子邮件连接。
**)仅某些 CP 类型支持 ID。
***)++ = 必需;+ = 可选

参见
子域类型 (页 138)

2.5.6 连接类型的参数域

常规

下面给出了需要在参数域中输入的值和可用于各连接类型的子域。

某些应用不需要所有子域类型,有关详细信息,请再次参见下表。

连接 ID
类型 ID 旁边的各个连接参数域前的 ID 参数尤为重要。

对于已编程连接,可以在允许的取值范围内随意分配该 ID。 然后必须在用于


SEND/RECV 接口的 FC 的调用接口上使用此 ID 以标识连接。

连接 ID 的取值范围:

用于 SIMATIC NET S7 CP 的程序块


130 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

● S7-400: 1,2...64

● S7-300: 1,2...16

2.5.6.1 TCP连接的参数域

布局

按如下所述在 TCP 连接的参数域中输入参数:

 类型 = 1 -> ①
 ID = 连接 ID -> ②
 子域数 = n
 子域 1
 子域 2
 子域 n
...

图例:
①连接类型的标识符
②可自由选择的连接引用;必须在 AG_SEND/AG_RECV 中指定。
连接 ID 的取值范围:
对于 S7-400: 1, 2...64
对于 S7-300: 1,2...16

可用的子域

子域 参数
ID 类型 特性/说明 应用***)

1 SUB_IP_V4 伙伴的 IP 地址 ++ *)
9 SUB_LOC_PORT - ++
10 SUB_REM_PORT - ++ **)
18 SUB_CONNECT_NAM - +
E

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 131
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

子域 参数
ID 类型 特性/说明 应用***)

19 SUB_LOC_MODE - +
21 SUB_KBUS_ADR 对于 S7300 的 CP,该值始终设置 ++ (适用于 S7-
为 2,无需进行指定。 400)
22 SUB_CON_ESTABL - ++
*)对于被动连接为可选。
***)++ = 必需;+ = 可选

参见

子域类型 (页 138)

2.5.6.2 UDP连接的参数域

布局

按如下所述在 UDP 连接的参数域中输入参数:

 类型 = 2 -> ①
 ID = 连接 ID -> ②
 子域数 = n
 子域 1
 子域 2
 子域 n
...

图例:
①连接类型的标识符
②可自由选择的连接引用;必须在 AG_SEND/AG_RECV 中指定。
连接 ID 的取值范围:
对于 S7-400: 1, 2...64
对于 S7-300: 1,2...16

用于 SIMATIC NET S7 CP 的程序块


132 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

可用的子域

子域 参数
ID 类型 特性/说明 应用***)

1 SUB_IP_V4 伙伴的 IP 地址 ++
9 SUB_LOC_PORT - ++
10 SUB_REM_PORT - ++
18 SUB_CONNECT_NAME - +
19 SUB_LOC_MODE - +
21 SUB_KBUS_ADR 对于 S7300 的 CP,该值始终 ++ (适用于 S7-
设置为 2,无需进行指定。 400)
23 SUB_ADDR_IN_DATABLOC 如果为该参数选择了“自由 +
K UDP 连接”(Free UDP
connection),则将忽略参数
SUB_IP_V4 和
SUB_REM_PORT。
***)++ = 必需;+ = 可选

参见

子域类型 (页 138)

2.5.6.3 ISOonTCP连接的参数域

布局

按如下所述在 ISOonTCP 连接的参数域中输入参数:

 类型 = 3 -> ①
 ID = 连接 ID -> ②
 子域数 = n
 子域 1
 子域 2

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 133
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

 子域 n
...

图例:
①连接类型的标识符
②可自由选择的连接引用;必须在 AG_SEND/AG_RECV 中指定。
连接 ID 的取值范围:
对于 S7-400: 1, 2...64
对于 S7-300: 1,2...16

可用的子域

子域 参数
ID 类型 特性/说明 应用***)

1 SUB_IP_V4 伙伴的 IP 地址 ++ *)

11 SUB_LOC_TSAP - ++
12 SUB_REM_TSAP - ++ *)
18 SUB_CONNECT_NAM - +
E
19 SUB_LOC_MODE - +
21 SUB_KBUS_ADR 对于 S7300 的 CP,该值始终设 ++ (适用于 S7-
置为 2,无需进行指定。 400)
22 SUB_CON_ESTABL - ++
*) 对于被动连接为可选(如果已指定 IP 地址,还必须指定 TSAP)
***)++ = 必需;+ = 可选

参见

子域类型 (页 138)

用于 SIMATIC NET S7 CP 的程序块


134 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

2.5.6.4 电子邮件连接的参数域

含义

要发送电子邮件,每个高级 CP 都必须建立一个电子邮件连接。电子邮件连接指定一台邮
件服务器,高级 CP 发送的所有邮件均通过该服务器传送。

布局

按如下所述在电子邮件连接的参数域中输入参数:

 类型 = 4 -> ①
 ID = 连接 ID -> ②
 子域数 = n
 子域 1
 子域 2
 子域 n
...

图例:
①连接类型的标识符
②可自由选择的连接引用;必须在 AG_SEND/AG_RECV 中指定。
连接 ID 的取值范围:
对于 S7-400: 1, 2...64
对于 S7-300: 1,2...16

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 135
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

可用的子域

子域 参数
ID 类型 特性/说明 应用***)

1 SUB_IP_V4 邮件服务器的 IP 地址,通过该服 ++ / + *)


务器发送电子邮件。
可以指定绝对或别名 IP 地址。
使用别名的前提是高级 CP 了解域
名服务器(DNS, Domain Name
Server)的地址。 必须在 STEP 7
中组态高级 CP 时执行该输入。有
关详细信息,请参见在线帮助。
3 SUB_DNS_NAME 电子邮件服务器的 DNS 名称 ++ / + *)
13 SUB_EMAIL_SENDER 发送方的电子邮件地址 ++
18 SUB_CONNECT_NAM - +
E
21 SUB_KBUS_ADR 对于 S7300 的 CP,该值始终设置 ++ (适用于 S7-
为 0,无需进行指定。 400)
22 SUB_CON_ESTABL - ++
**)参数 SUB_IP_V4 和 SUB_DNS_NAME 是互斥的;只能指定其中的一个参数。
***)++ = 必需;+ = 可选

说明
邮件服务器端口是“众所周知的端口”,无需进行指定。

参见

子域类型 (页 138)

用于 SIMATIC NET S7 CP 的程序块


136 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

2.5.6.5 FTP连接的参数域

含义

要在用作 FTP 客户机的 S7 站和 FTP 服务器间运行 FTP 作业序列,高级 CP 必须建立到


S7 CPU 的连接。 该连接称为 FTP 连接。

FTP 连接是 TCP 连接,其中参数 SUB_LOC_MODE 设置为“FTP”模式。

布局

按如下所述在 FTP 连接的参数域中输入参数:

 类型 = 1 -> ①
 ID = 连接 ID -> ②
 子域数 = n
 子域 1
 子域 2
 子域 n
...

图例:
①连接类型的标识符
②可自由选择的连接引用;必须在 AG_SEND/AG_RECV 中指定。
连接 ID 的取值范围:
对于 S7-400: 1, 2...64
对于 S7-300: 1,2...16

可用的子域

子域 参数
ID 类型 特性/说明 应用***)

18 SUB_CONNECT_NA - +
ME
19 SUB_LOC_MODE 此处: 0x01 = FTP 协议 ++

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 137
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

子域 参数
ID 类型 特性/说明 应用***)

21 SUB_KBUS_ADR 对于 S7300 的 CP,该值始终设置 ++ (适用于 S7-


为 0,无需进行指定。 400)
***)++ = 必需;+ = 可选

参见

子域类型 (页 138)

2.5.7 子域类型
不同的参数域需要不同的参数。 每个参数均由子域描述。 前面部分的系统数据和连接类
型说明中介绍了所需的子域。

每个子域均由特定的参数部分和报头(4 字节)组成。

示例

以下摘录自 CONF_DB 的内容基于 SUBNET_MASK 子域类型的示例说明了子域的结构。

地址 名称 类型 初始值 注释

+14.0 Sub_field_2 STRUCT //子域 2 类型


SUBNET_MASK
+0.0 Sub_field_ID INT 2 //子域 ID
+2.0 Sub_field_len INT 8 //子域总长度(字节)
+4.0 参数 STRUCT SUBNET_MASK 的参数范

+0.0 Value_1 BYTE B#16#FF
+1.0 Value_2 BYTE B#16#FF
+2.0 Value_3 BYTE B#16#FF
+3.0 Value_4 BYTE B#16#0

用于 SIMATIC NET S7 CP 的程序块


138 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

地址 名称 类型 初始值 注释

=4.0 END_STRUC
T
=8.0 END_STRUC
T

全部可用子域类型如下:

子域 子域类型 子域长度(字节) 参数含义


ID 1)

1 SUB_IP_V4 4+4 符合 IPv4 的 IP 地址


2 SUBNET_MASK 4+4 子网掩码
3 SUB_DNS_NAME DNS 名称长度 + 4 DNS 名称
4 SUB_DNS_SERV_ADDR 4+4 DNS 服务器地址
8 SUB_DEF_ROUTER 4+4 默认路由器的 IP 地址
9 SUB_LOC_PORT 2+4 本地端口
10 SUB_REM_PORT 2+4 远程端口,同时用于电子邮件连接
11 SUB_LOC_TSAP TSAP 长度 + 4 本地 TSAP *
12 SUB_REM_TSAP TSAP 长度 + 4 远程 TSAP *
13 SUB_EMAIL_SENDER 发送方电子邮件地址 发送方的电子邮件地址
的长度 + 4
14 SUB_DHCP_ENABLE 2+4 从 DHCP 服务器获取 IP 地址
 值范围:
0 = 无 DHCP
1 = DHCP
(可选)
15 SUB_CLIENT_ID 客户机 ID 的长度 + (可选)
4
18 SUB_CONNECT_NAME 名称长度 + 4 连接的名称,允许的字符包括:
a...z、A...Z、0...9、-、_

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 139
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

子域 子域类型 子域长度(字节) 参数含义


ID 1)

19 SUB_LOC_MODE 1+4 连接的本地模式


 值范围:
0x00 = SEND/RECV
0x01 = FTP 协议(仅限 TCP 连接)
0x10 = 用于 FETCH/WRITE 的 S5
寻址模式*)
0x20 = SPEED SEND/RECV (仅
CP 443-1 高级型允许)
0x80 = FETCH *)
0x40 = WRITE *)
如果未设置该参数,则默认设置为
SEND/RECV。
注意:
FETCH/WRITE 需要被动连接建立的设
置(请参见 SUB_CON_ESTABL)。
20 SUB_REM_MODE 1+4 设置通信伙伴上的模式。
(当前不支持)
21 SUB_KBUS_ADR 5  对于 S7-400
CPU 的 KBUS 地址
 对于 S7-300
将作为插槽地址的固定值输入: 2
22 SUB_CON_ESTABL 1+4 连接建立的类型。
该选项用于指定该 S7 站建立的连接是
主动还是被动的。
 值范围:
0 = 被动
1 = 主动

用于 SIMATIC NET S7 CP 的程序块


140 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

子域 子域类型 子域长度(字节) 参数含义


ID 1)

23 SUB_ADDR_IN_DATA- 1+4 选择空闲 UDP 连接。


BLOCK 用户程序调用 AG_SEND 时在作业缓
冲区的作业报头中输入远程节点。 这
样便可访问以太网/LAN/WAN 上的任何
节点。
 值范围:
1 = 空闲 UDP 连接
0 = 其它
该参数仅对 UDP 连接有效。
24 SUB_NTP_SERVER 4+4 该子域定义一个 NTP 服务器,CP 可
以通过 NTP 协议从该服务器获取其时
间。
如果定义了一个或多个 NTP 服务器,
则可以定义最多 4 个 ID 24 的子域。
ID 24 的子域只能安装在系统参数域类
型 0/ID 0 中。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 141
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

子域 子域类型 子域长度(字节) 参数含义


ID 1)

30 SUB_DEVICE_NAME 名称长度 + 4 符合 PROFINET IO 约定的设备名称


换句话说,设备名称必须符合 DNS 约
定;
 字符总数限制为 127 个(字母、数
字、连字符或句点)
 设备名称中的名称部分(即,两个
句点间的字符串)最多不能超过 63
个字符。
 无特殊字符,例如元音变音(ä、ö
等)、括号、下划线、斜线、空格
等。破折号(连字符)是唯一允许
使用的特殊字符。
 设备名称不得以“-”或“.”字符开始或
结束,这些字符也不能是最后一个
字符。
 设备名称不得以数字开头。
 设备名称的格式不得是 n.n.n.n (n =
0...999)。
 设备名称不得以字符串“port-xyz-
”(x、y、z = 0...9)开头。
1)注意: 未列出的 ID 编号当前不使用。

* 对于子字段 11 和 12: 如果子块长度是奇数字节,则在子块后插入一个没有其它用途的填充字节,以使下一个


子块拥有偶数字节地址。 填充字节不显示在子块长度中,但必须计入数据块的总长度中。

参见

组态数据块 - 实例 (页 125)

用于 SIMATIC NET S7 CP 的程序块


142 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

2.5.8 IP_CONFIG - 含义和调用

块的含义

FB55 将数据块(组态 DB)中指定的 IP 组态和连接数据传送到 CP。组态 DB 包含允许为以


太网 CP 的 SEND/RECEIVE 接口建立连接所需的所有连接数据。

可以将这个已编程的通信连接变量作为通过 STEP 7 连接组态的另一种方法。

根据组态 DB 的大小,可在多个段中将该数据传送到 CP。 这表示必须继续调用 FB,直


到 FB 将 DONE 位置位为 1,发信号通知传送完成为止。

调用

FBD 中的调用接口

,3B&21),*

%22/ $&7 '21( %22/

:25' /$''5 (5525 %22/

$1< &21)B'% 67$786 :25'

,17 /(1 (;7B67$786 :25'

STL 的示例

STL 解释
call fb 55 ( //IP_CONFIG 块调用
ACT := M 10.0, //由存储位启动的作业
LADDR := W#16#0100, //硬件配置中的 LADDR 256 (十进制)
CONF_DB:= P#db99.dbx10.0 byte 240, //具有连接数据的数据块
LEN := MW 14, //连接数据的长度信息
DONE := M 10.1, //执行代码
ERROR := M 10.2, //错误代码
STATUS := MW 16, //状态代码
EXT_STATUS := MW 18); //连接数据出错的原因

说明
运行具有容错 S7 连接功能的 CP 时,不使用 FB55
如果通过 CP 组态容错 S7 连接,则不能使用 FB55 组态 CP 的 IP 地址。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 143
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

说明
应尽量避免对地址重复定义
如果使用 FB55,需确保分配的 IP 地址唯一。 如果同一地址检测到两次,则在网络中可
能不会激活 CP。

2.5.9 IP_CONFIG如何工作

在用户程序中处理

使用 FB55 时,必须区分以下使用情况:

● 标准应用

在启动 OB (OB100)中调用 FB55。 OB1 启动时,CP 已具有其 IP 组态,并且可能已


具有连接组态。

● 在容错系统(H 系统)中使用

如果 H 系统中具有冗余故障恢复功能,则可通过下列建议的步骤,使用 FB55 组态冗


余系统中的 CP。

说明
RUN 模式下的 CPU
在 H 系统中,如果分配的 CPU 处于 RUN 模式,则只能使用 FB55 组态 CP。

开始时,H 系统中只启动一个机架。 这意味着,CPU 只能访问自己的外围设备(CP)。


因此,在启动 OB (OB100)时,只能使用 FB55 为该机架上的 CP 设置参数。

如果还要为冗余机架上的 CP 设置参数,建议执行以下步骤:

1. 在 OB100 中,为将从 FB55 接收组态的所有 CP 编写 FB55 调用程序。

2. 在执行各个 FB55 块时,将保存有关是否可组态各个 CP 的信息。

3. H 系统切换到冗余状态时,则会自动调用 OB72(CPU 冗余错误)。 应确保当执行


OB72 以指示仍需调用的组态 FB (FB55) 时,保存状态信息。

4. 根据之前所保存的状态信息,在 OB1 中调用 FB55 块,这些块是冗余系统中的 IP 组


态所必需的。

注意:
原则上,在 OB100 启动期间调用失败的 FB55,仍可在 OB72 中调用。 但是,由于需
要多次调用 FB,这会导致 OB 执行时间的延长。因此建议在 OB1 中执行上述步骤。

用于 SIMATIC NET S7 CP 的程序块


144 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

工作原理

下图举例说明了在用户程序中通过 IP_CONFIG 触发 IP 组态和连接组态的一般顺序。

一旦以数值 1 传送参数 ACT,立即执行该作业。

由于分段传送 CONF_DB,必须通过 ACT = 1 重复执行该作业,直到在参数 DONE、


ERROR 和 STATUS 中指示该作业完成为止。

如果要在以后传送连接组态,那么必须至少在一个进一步调用中首先以数值 0 传送 ACT
参数。

⫼᠋⿟ᑣ (WKHUQHW&3
&38਼ᳳ

Ў&21)B'%ᦤկ᭄᳝᥂

䆒㕂$&7 

&DOO,3B&21),*
ˈˈ԰Ϯ▔⌏

Ў&3ᦤկ᳝㋏㒳᭄᥂ ࣙᣀ,3
ഄഔ ˗

&21)B'%ߚ↉
Ӵ䗕 &DOO,3B&21),* 䖲᥹ഛ೼&3Ϟ䖯㸠㒘ᗕDŽ
ˈˈ԰Ϯ▔⌏

&DOO,3B&21),*
԰ϮᏆᅠ៤ˈϨ᮴䫭

䆒㕂$&7 

&DOO,3B&21),*

ᯊ䯈 ᯊ䯈

 খ᭄Ӵ䗕'21(ǃ(5525ǃ67$786

说明
使用组态 DB 传送的数据将存储在 CP 上的易失存储器中,且在断电之后必须重新将其下
载给 CP!

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 145
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

2.5.10 形式参数的解释 - IP_CONFIG

形式参数的说明

下表解释了用于 IP_CONFIG 功能块的调用接口的形式参数:

参数 声明 数据类 可能值 说明

ACT INPUT BOOL 0.1 以 ACT = 1 调用 FB 时,DBxx 传送到 CP。


如果以 ACT = 0 调用 FB,则只更新状态代码
DONE、ERROR 和 STATUS。
LADDR INPUT WORD 模块起始地址
如果通过 STEP 7 组态 CP,则会在组态表中显
示模块起始地址。 在此指定该地址。
CONF_D INPUT ANY 该参数指向数据块中组态数据区的起始地址(数
B 据类型: 字节)。
LEN INPUT INT 组态数据区的长度信息,单位为字节。
DONE OUTPUT BOOL 0: - 该参数表明组态数据区是否已完整传送。
1:通过数据传送完 请记住,根据组态数据区的大小(多个周期),可
成的作业。 能需要多次调用 FB,直到 DONE 参数置位为
1,指示完成传送为止。
对于与ERROR和STATUS参数一起使用时的含
义,请参见IP_CONFIG 状态代码 (页 148)
ERROR OUTPUT BOOL 0: - 错误代码
1:错误 对于与DONE和STATUS参数一起使用时的含
义,请参见IP_CONFIG 状态代码 (页 148)
STATUS OUTPUT WORD 状态代码
对于与DONE和ERROR参数一起使用时的含
义,请参见IP_CONFIG 状态代码 (页 148)
EXT_ OUTPUT WORD 如果在执行作业时发生错误,那么该参数指出,
STATUS 经检测,哪个参数为组态 DB 出错的原因。
高位字节: 参数域索引
低位字节: 参数域内子域的索引

用于 SIMATIC NET S7 CP 的程序块


146 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

2.5.11 保留的端口号 - IP_CONFIG

预留端口号

保留下列本地端口号;不在连接项目工程中使用这些端口号。

表格 2- 18 预留端口号

协议 端口号 服务

TCP 20, 21 FTP


TCP 25 SMTP
TCP 80 HTTP
TCP 102 RFC1006
TCP 135 RPC-DCOM
HTTPS 443 安全性
对于具有安全功能的 CP
TCP 502 ASA 应用协议
UDP 161 SNMP_REQUEST
UDP 34964 PN IO
UDP 65532 NTP
UDP 65533 NTP
UDP 65534 NTP
UDP 65535 NTP

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 147
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

2.5.12 IP_CONFIG 状态代码

条件代码

下表显示了根据必须由用户程序进行评估的 DONE、ERROR 和 STATUS 所形成的条件


代码。

表格 2- 19 用于 FB55 IP_CONFIG 的条件代码

DONE ERROR STATUS 含义

与作业执行有关的常规代码
1 0 0000H 作业已完成且无错
0 0 8181H 作业处于活动状态
在 CPU 和 CP 之间的接口上检测到的错误。
0 1 80A4H  K 总线上的通讯错误

 数据错误: 没有设置由用户程序进行的组态。
0 1 80B1H 待发送的数据字节数超出了该服务的上限。 (上限 = 16 KB)
0 1 80C4H 通讯错误
可能临时发生该错误;通常最好在用户程序中重复执行该作业。
0 1 80D2H 组态错误
所使用的模块不支持该服务。
在对 CPU 中的 FB 或 CPU 和 CP 之间的接口进行评估时检测到的错误。
0 1 8183H 该 CP 拒绝所请求的数据记录号。
0 1 8184H 系统错误或非法参数类型。 (ANY 指针 CONF_DB 的数据类型不正确)
(目前仅接受字节数据类型)
0 1 8185H LEN 参数的值大于 CONF_DB 与保留的报头(4 个字节)之差,或长度信息不
正确。
0 1 8186H 检测到非法参数
ANY 指针 CONF_DB 不指向数据块。
0 1 8187H FB 的非法状态
可能覆盖 CONF_DB 标题中的数据。
在 CPU 和 CP 之间的接口上检测到更多错误。
0 1 8A01H 数据记录中的状态代码无效(数值 >= 3)。

用于 SIMATIC NET S7 CP 的程序块


148 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

DONE ERROR STATUS 含义

0 1 8A02H 在 CP 上不运行任何作业;然而,FB 希望得到一个已完成作业的确认。


0 1 8A03H CP 上不运行任何作业,并且 CP 没有准备就绪;FB 触发第一个作业,读取
数据记录。
0 1 8A04H CP 上不运行任何作业,并且 CP 没有准备就绪;然而,FB 希望得到一个已
完成作业的确认。
0 1 8A05H 有一个作业正在运行,但是没有确认;然而,FB 触发读取数据记录作业的
第一个作业。
0 1 8A06H 一个作业已完成,但 FB 触发读取数据记录作业的第一个作业。
评估 CP 上的 FB 时,检测到错误。
0 1 8B01H 通讯错误
不能传送 DB。
0 1 8B02H 参数错误
双精度型参数域
0 1 8B03H 参数错误
不允许使用参数域中的子域。
0 1 8B04H 参数错误
在 FB 中指定的长度与参数域/子域中的长度不匹配。
0 1 8B05H 参数错误
参数域长度无效。
0 1 8B06H 参数错误
子域长度无效。
0 1 8B07H 参数错误
参数域 ID 无效
0 1 8B08H 参数错误
子域 ID 无效
0 1 8B09H 系统错误
不存在该连接。
0 1 8B0AH 数据错误
子域内容错误。
0 1 8B0BH 结构错误
一个子域存在两次。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 149
用于工业以太网的程序块
2.5 用于已编程连接和 IP 组态的程序块

DONE ERROR STATUS 含义

0 1 8B0CH 数据错误
参数不包含所有的必需参数。
0 1 8B0DH 数据错误
CONF_DB 不包含系统数据的参数域。
0 1 8B0EH 数据错误/结构错误
CONF_DB 类型无效。
0 1 8B0FH 系统错误
CP 没有足够的资源来完全处理 CONF_DB。
0 1 8B10H 数据错误
没有设置由用户程序进行的组态。
0 1 8B11H 数据错误
指定的参数域类型无效。
0 1 8B12H 数据错误
指定的连接太多(既可能总数太多,也可能对于某种指定类型太多;例如,
只可以有一个电子邮件连接)。
0 1 8B13H CP 内部错误
0 1 8B14H 活动保护级别不允许因动作引起的更改。
在 CPU 内的程序接口中检测到更多错误(SFC 错误)。
0 1 8F22H 读取参数时发生区域长度错误(例如,DB 太短)。
0 1 8F23H 写入参数时发生区域长度错误(例如,DB 太短)。
0 1 8F24H 读取参数时发生区域错误。
0 1 8F25H 写入参数时发生区域错误。
0 1 8F28H 读取参数时发生队列错误。
0 1 8F29H 写入参数时发生队列错误。
0 1 8F30H 该参数位于具有写保护的第一个当前数据块中。
0 1 8F31H 该参数位于具有写保护的第二个当前数据块中。
0 1 8F32H 该参数包含一个太高的 DB 编号。
0 1 8F33H DB 编号错误
0 1 8F3AH 没有装载目标区(DB)。
0 1 8F42H 从 I/O 区域中读取参数超时。

用于 SIMATIC NET S7 CP 的程序块


150 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.6 用于 ERPC-CP 的程序块

DONE ERROR STATUS 含义

0 1 8F43H 将参数写入 I/O 区域超时。


0 1 8F44H 防止在块执行期间访问要读取的参数。
0 1 8F45H 防止在块执行期间访问要写入的参数。
0 1 8F7FH 内部错误
例如,检测到一个非法 ANY 引用。

2.6 用于 ERPC-CP 的程序块

2.6.1 用于逻辑触发器的 LOGICAL_TRIGGER

该函数块的含义
如果要将逻辑触发器用于 ERPC 通信,则可使用 FB56 函数块 LOGICAL_TRIGGER。

要启动逻辑触发器,请在 CPU 用户程序的 OB1 中调用程序块 LOGICAL_TRIGGER。

LOGICAL_TRIGGER 调用需要其它块:

● 自动生成的背景数据块

● 数据块“CONF_DB”

该组态 DB 包含逻辑触发器的组态数据。 用户在 STEP 7 项目中创建和组态可用的组


态 DB。

如果要调用多个逻辑触发器,则还需要使多个组态 DB 可用。

可以更改 FB56 和背景数据块的编号。

有效性

程序块 LOGICAL_TRIGGER 可用于以下模块类型:

● CP 343-1 ERPC

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 151
用于工业以太网的程序块
2.6 用于 ERPC-CP 的程序块

调用

FBD 中的调用接口

/2*,&$/B75,**(5

%22/ $&7 '21( %22/

,17 ,' (5525 %22/

:25' /$''5 67$786 :25'

,17 &21)B'%

,17 &QI/HYHO

表格 2- 20 STL 的示例

call fb 56, DatabaseInstanceDB ( //带有数据区的 FB56 调用


ACT := TRUE, //值 = 1 时触发作业
ID := 1 //触发器 ID(可能值: 1...16)
LADDR := W#16#100, //模块起始地址
CONF_DB:= 1, //组态数据块(此处: DB 1)
CnfLevel:= 1, //确认模式(此处:1)
DONE := M 1.1, //执行代码
ERROR := M 1.2, //错误代码
STATUS := MW 2); //状态代码

用于 SIMATIC NET S7 CP 的程序块


152 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.6 用于 ERPC-CP 的程序块

2.6.2 LOGICAL_TRIGGER的工作原理

工作原理

下表说明了由 CPU 用户程序执行的触发器调用中所涉及的步骤。

步骤 含义

1 在 CPU 用户程序中的预期位置,调用 FB56 LOGICAL_TRIGGER 以及相应


的背景数据块和选定的组态数据块 CONF_DB。
 如果由 ACT = 1 调用 FB56 LOGICAL_TRIGGER,则读取当前触发器数
据并将其发送到 CP 固件中。
 如果以 ACT = 0 调用 FB56 LOGICAL_TRIGGER,则更新状态代码
DONE、ERROR 和 STATUS。
2 FB56 LOGICAL_TRIGGER 读取当前触发器的数据。
3 FB56 LOGICAL_TRIGGER 将使用当前数据创建 PDU,该 PDU 将会发送至
CP 固件。
4 CP 固件创建数据帧并将其传送到 ERPC 应用程序。
5 ERPC 应用程序将该数据帧发送到 ERP 用户(ERP 系统或 MES)。

2.6.3 LOGICAL_TRIGGER形式参数的说明

形式参数的说明

下表说明了 FB56 LOGICAL_TRIGGER 函数块中所有的形式参数:

参数 声明 数据类 可能值 说明

ACT INPUT BOOL 0 如果以 ACT = 0 调用该 FB,则更新状态代码


DONE、ERROR 和 STATUS。
1 如果以 ACT = 1 调用该 FB,则读入当前触发器
数据并将其发送到 CP。
ID INPUT INT 触发器 ID
该值标识 ILS Workbench 中组态的逻辑触发
器。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 153
用于工业以太网的程序块
2.6 用于 ERPC-CP 的程序块

参数 声明 数据类 可能值 说明

LADDR INPUT WORD 模块起始地址


如果通过 STEP 7 组态 CP,则会显示模块起始
地址。在此指定该地址。
CONF_D INPUT INT 该数据块包含已组态逻辑触发器的组态数据。
B
CnfLevel INPUT INT 0: 传输确认 确认模式
1: 端对端确认 可以根据 FB56 代码中的 STATUS 值查找判断
确认。
 0 = 传输确认(STATUS = 0000H)
只要数据传送到 ERPC 应用程序,作业即被
报告为成功。
这并不一定意味着数据帧已发送到 ERP 用户
(ERP 系统或 MES),且不排除 ERPC 应用
程序以后会检测到错误。
 1 = 端对端确认(STATUS = 0001H)
只有 ERPC 应用程序检查完数据后,才确认
作业。
组态 DB (DB_CONF)的“TriggerResponse”变
量用于报告是否可以访问 ERP 用户以及
ERPC 应用程序是否处于存储转发模式。
与传输确认相比,端对端确认意味着更长的
作业执行时间。
DONE OUTPUT BOOL 0: 作业激活 该参数指示用于传送组态数据区的作业是否已无
1: 作业完成 错误处理。
接受作业后,CP 将 DONE 设置为 0。只要
DONE = 0,就无法再触发其它作业。
有关 ERROR 和 STATUS 参数上下文中的含
义,请参见表格“FB56 LOGICAL_TRIGGER 代
码”。

用于 SIMATIC NET S7 CP 的程序块


154 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.6 用于 ERPC-CP 的程序块

参数 声明 数据类 可能值 说明

ERROR OUTPUT BOOL 0: - 错误代码


1: 有错误 有关 DONE 和 STATUS 参数上下文中的含义,
请参见表格“FB56 LOGICAL_TRIGGER 代码”。
STATUS OUTPUT WORD 请参见表格“FB56 状态代码
LOGICAL_TRIGGE 有关 DONE 和 ERROR 参数上下文中的含义,
R 代码”。 请参见表格“FB56 LOGICAL_TRIGGER 代码”。

2.6.4 LOGICAL_TRIGGER 的代码

条件代码
下表显示了根据 DONE、ERROR 和 STATUS 形成的条件代码,其中这些参数必须由用
户程序进行计算。

表格 2- 21 FB56 LOGICAL_TRIGGER 代码

DONE ERROR STATUS 含义

与作业执行相关的代码
1 0 0000H 作业完成无错误。 逻辑触发器已成功完成。
1 0 0001H 作业完成无错误。 无法访问数据库(存储转发模式)。
0 0 8181H 激活作业。
0 1 7000H 以 ACT = 0 调用了 FB56。但不会执行作业。
至少以 ACT = 1 调用块一次
与逻辑触发器的组态和序列相关的代码
0 1 80D2H 使用的 CP 不支持 ERPC 通信(CP 类型错误)。
0 1 8183H 使用的 CP 不支持 ERPC 通信(CP 类型错误)。
0 1 8187H FB56 状态无效(LOGICAL_TRIGGER_STATE 未知)。
重新调用块。
0 1 8A01H 组态的逻辑触发器数量等于 0。
0 1 8A02H 用于该逻辑触发器的组态 DB 中没有进行组态。
检查 ILS Workbench 组态。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 155
用于工业以太网的程序块
2.6 用于 ERPC-CP 的程序块

DONE ERROR STATUS 含义

0 1 8A03H 组态 DB 的结构不正确。 “报头标识符”的值不正确。


更正组态 DB 中的“ident”变量值(请参见 ERPC-CP 手册)。
0 1 8A04H 组态 DB 的结构不正确。
重新将 ILS Workbench 组态下载到 CP,重新创建并对组态 DB 进行组态
(请参见“ERPC-CP”手册)。
0 1 8A05H CPU 中不存在已组态的组态 DB。
0 1 8A06H 下一次调用调用了仍在以另一个 ID 运行的触发器。
检查被调用的 FB56 函数块中的“ID”。
0 1 8A08H 组态 DB 中的组态数据不存在或不完整。
如果仅在 S7 站启动期间发生错误,则原因可能是逻辑触发器的组态数据没
有完整传送到组态 DB。
如果错误继续出现,则检查 ERPC 符号的组态。
0 1 8A09H 组态 DB 中报告未知错误。
0 1 8A0AH 逻辑触发器无法启动,原因是当前正在装载新的触发器组态。
0 1 8A0BH 标识当前数据记录(CPU 数据)的时间戳时出错
0 1 8A0CH 创建了具有“未链接”属性的组态 DB。
更正块的对象属性。
0 1 8A0DH FB56 的输入参数 CONF_DB 出错。 参数值为“0”或高于 CPU 的最大 DB 编
号。
0 1 8A0EH 传送的触发器 ID 不在允许的范围(1...16)内。
更正用户程序中的 FB56 调用中的值。
0 1 8A0FH 设置的确认模式(CnfLevel)无效。
更正用户程序中的 FB56 调用中的值。
0 1 8BxxH 将当前变量值复制到逻辑触发器的 PDU 时出错。 最后两位(xx)是变量编
号。
检查 CPU 的符号表和 CP 属性对话框的 ERPC 符号列表中所涉及符号的组
态。
0 1 8C01H FB56 的内部状态代码无效。
重新将 ILS Workbench 组态下载到 CP,重新创建并对组态 DB 进行组态
(请参见“ERPC-CP”手册)。

用于 SIMATIC NET S7 CP 的程序块


156 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.6 用于 ERPC-CP 的程序块

DONE ERROR STATUS 含义

0 1 8C02H 端对端确认的返回值无效。
重新将 ILS Workbench 组态下载到 CP,重新创建并对组态 DB 进行组态
(请参见“ERPC-CP”手册)。
0 1 8C03 H 逻辑触发器包含的变量超过 255 个。
0 1 8C06 H 读取数据记录时出错。
0 1 8D03 H 固件在数据库操作期间发出超时信号。
0 1 8D04H 数据库应用程序在确认当前操作时发出常规错误信号。
0 1 8E01H CPU 中已组态的组态 DB 不够大。
更改组态 DB 的大小。
0 1 8EXXH XXH 值在范围 02H 到 FFH 之间的这些状态代码生成自内部触发器响应。
如果出现这些值,则与服务目的相关。

2.6.5 组态数据块

准备组态数据块“CONF_DB”
如果使用“逻辑触发器”ERPC 函数,则需要在 STEP 7 中为逻辑触发器的组态数据创建数
据块(DB)并在 FB56 的调用参数中指定该数据块。 FB56 访问 DB CONF_DB。
CONF_DB 对于用户程序没有更多意义。

对组态数据块进行编程

要标识新创建的 DB,需要打开该 DB 并在头两个空行中指定“报头标识符”和 DB 大小。

在 STEP 7 中打开 DB 并按如下所述使用变量“ident”和“data”组态头两个空行:

地址 名称 类型 初始值 注释(可选)

*) STRUCT *)
*) ident DWORD DW#16#4552504 报头标识符
3
*) data array[1..2048 DB 大小(请参见下面的警
] 告)
*) Byte

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 157
用于工业以太网的程序块
2.7 组态限制/程序块所需的资源(以太网)

地址 名称 类型 初始值 注释(可选)

*) END_STRUCT *)
*)值由程序输入

说明
DB 大小
推荐的 DB 大小为 2048 个字节。 如果调试期间该值明显不足,则增大该值。 如果该值
过低,则由 FB56 LOGICAL_TRIGGER 和 STATUS“8A05H”进行报告错误。

2.7 组态限制/程序块所需的资源(以太网)

所需资源

说明
请注意各个块的版本信息。目前的块版本可能与此处显示的版本不同。其它版本块对资源
的要求可能不同。
有关当前块版本的信息,请参见以下条目 ID:
9836605 (http://support.automation.siemens.com/WW/view/de/9836605)

表格 2- 22 用于 S7400 的 FC/FB 的信息

NAME 版本 FC/FB 编 装载存储器要 工作存储器要求 MC7 [字节] 本地数据 [字


号 求 [字节] [字节] 节]

AG_SEND 1.2 FC5 732 576 540 20


AG_RECV 1.2 FC6 656 522 486 20
AG_LOCK 1.0 FC7 272 200 164 6
AG_UNLOCK 1.0 FC8 256 186 150 6
AG_CNTRL 1.0 FC10 2048 1610 1574 178
AG_CNTEX 1.0 FB10 7002 6036 6000 78

用于 SIMATIC NET S7 CP 的程序块


158 编程手册, 10/2012, C79000-G8952-C229-07
用于工业以太网的程序块
2.7 组态限制/程序块所需的资源(以太网)

NAME 版本 FC/FB 编 装载存储器要 工作存储器要求 MC7 [字节] 本地数据 [字


号 求 [字节] [字节] 节]

AG_LSEND 3.1 FC50 1044 846 810 52


AG_LRECV 3.1 FC60 1190 992 956 58
AG_SSEND 1.2 FC53 1928 1618 1582 154
AG_SRECV 1.2 FC63 1882 1584 1548 158
IP_CONFIG 1.3 FB55 1864 1576 1540 76
FTP_CMD 2.0 FB40 2400 2084 2048 154
FTP_CONNECT 1.0 FC40 1482 1236 1200 86
FTP_STORE 1.0 FC41 1794 1514 1478 102
FTP_RETRIEVE 1.0 FC42 1934 1642 1606 106
FTP_DELETE 1.0 FC43 1478 1232 1196 86
FTP_QUIT 1.0 FC44 968 796 760 46

表格 2- 23 用于 S7-300 的 FC/FB 的信息

NAME 版本 FC/FB 编号 装载存储器要 工作存储器要求 MC7 [字节] 本地数据


求 [字节] [字节] [字节]

AG_SEND 4.2 FC5 1976 1664 1628 50


AG_RECV 4.7 FC6 1440 1206 1170 40
AG_LOCK 4.0 FC7 748 636 600 34
AG_UNLOCK 4.0 FC8 712 604 568 32
AG_CNTRL 1.4 FC10 1418 1152 1116 82
AG_CNTEX 1.0 FB10 4594 4006 3970 78
IP_CONFIG 1.3 FB55 2406 1984 1948 62
FTP_CMD 1.0 FB40 2590 2240 2204 70
FTP_CONNECT 1.1 FC40 928 774 738 68
FTP_STORE 1.1 FC41 1232 1046 1010 74
FTP_RETRIEVE 1.1 FC42 1306 1114 1078 84
FTP_DELETE 1.1 FC43 922 770 734 68

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 159
用于工业以太网的程序块
2.7 组态限制/程序块所需的资源(以太网)

NAME 版本 FC/FB 编号 装载存储器要 工作存储器要求 MC7 [字节] 本地数据


求 [字节] [字节] [字节]

FTP_QUIT 1.1 FC44 452 370 334 28


LOGICAL_TRIGGE 1.0 FB56 4294 3648 3612 98
R

用于 SIMATIC NET S7 CP 的程序块


160 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块 3
3.1 程序块及其用途概述

用于传送用户数据的程序块

下面列出的程序块可用于在 PROFINET IO 接口上周期性传送数据。 各程序块的含义不


同,取决于如何在 S7 站中使用 CP(作为 PROFINET IO 控制器或 PROFINET IO 设
备)。

程序块 可用于: 含义
S7-300 S7-400

PNIO_SENd (FC11) x - 根据 CP 模式:


 对于 PROFINET IO 控制器
将输出数据发送至 PROFINET
IO 设备。
 在 PROFINET IO 设备上
将过程输入数据转发到
PROFINET IO 控制器。
PNIO_RECV (FC12) x - 根据 CP 模式:
 在 PROFINET IO 控制器上
从 PROFINET IO 设备接收过程
输入数据。
 在 PROFINET IO 设备上
从 PROFINET IO 控制器接收过
程输出数据。

对于同时作为 PROFINET IO 控制器和 IO 设备操作的 CP,提供 V2.0 版本的 FC。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 161
用于 PROFINET IO (S7-300) 的程序块
3.1 程序块及其用途概述

用于传送数据记录和中断信息的程序块

下面列出的 FB 可用于在 PROFINET IO 接口上非周期性传送数据(数据记录、报警信


息)。 这两个块只能在 PROFINET IO 控制器模式中使用。

程序块 可用于: 含义
S7-300 S7-400

PNIO_RW_REC (FB52) x -  读数据记录


(来自 PROFINET IO 设备)
 写数据记录
(到 PROFINET IO 设备)
PNIO_ALARM (FB54) x - 从 PROFINET IO 设备接收报警
信息

用于 PROFIenergy 的程序块

以下 FB 可用于 PROFIenergy 功能。

程序块 可用于: 含义
S7-300 S7-400

PE_START_END_CP (FB85) x - 开始/结束节能暂停


(在 PROFINET IO 控制器上)
PE_CMD_CP (FB86) x - 开始/结束节能暂停并从设备读出
能源数据
(在 PROFINET IO 控制器上)
PE_I_DEV_CP (FB87) x - 从控制器执行 PROFIenergy 命

(在 PROFINET IO 设备上)
需要辅助功能 FC 0...FC 8(标
准库)。
DS3_WRITE_CP (FB53) x - 将 PROFIenergy 数据传到 ET
200S
(在 PROFINET IO 控制器中)
没有 PROFIenergy 块

用于 SIMATIC NET S7 CP 的程序块


162 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

3.2 PROFINET IO - 数据传送和中断评估

3.2.1 PNIO_SEND

3.2.1.1 含义和调用 - PNIO_SEND

工作原理
程序块 PNIO_SEND 用于在 CP 的 PROFINET IO 控制器模式或 PROFINET IO 设备模式
下传送数据。

● 作为 PROFINET IO 控制器运行

块将指定输出区的过程数据(输出)传送到 CP 以便转发到 PROFINET IO 设备。 块以状


态代码形式返回 PROFINET IO 设备输出的 IO 使用者状态(IOCS)。

● 作为 PROFINET IO 设备运行

块读取 PROFINET IO 设备上 CPU 的预处理过程输入,并将它们传送给 PROFINET


IO 控制器(已组态的 I 地址);块还将返回作为状态码的 PROFINET IO 控制器的 IO 使
用者状态(IOCS)。

经预处理的过程数据在 DB 或位存储区内可用。

扩展

● 从块版本 V2.0 起

PNIO_SEND 支持在一个 CP 上并行操作 PROFINET IO 控制器和 IO 设备。通过附加


MODE 参数,可以设置将调用 FC 的模式。

● 从块版本 V3.0 起

通过 MODE 参数,有以下选项可用于传送 IO 使用者状态:

– 限制为实现更快传送而优化的 CHECK_IOCS 参数中的组状态信息;

– IO 使用者状态参数中的附加详细状态信息

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 163
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

调用接口(从块版本 2.0 起)

FBD 中的调用接口

31,2B6(1'

:25' &3/$''5 ,2&6 $1<

%<7( 02'( '21( %22/

,17 /(1 (5525 %22/

$1< 6(1' 67$786 :25'

&+(&.B,2&6 %22/

STL 的示例

STL 解释
call fc 11 ( //调用 PNIO_SEND
CPLADDR:=W#16#0100, //来自硬件配置的模块地址
MODE :=B#16#80, //控制器模式或设备模式;
//不传送 IOCS 状态位。
LEN :=20, //数据区长度
IOCS :=P#DB10.DBX20.0 BYTE 3, //DB10 中的每个发送数据字节对应一个位状态
DONE :=M 70.0, //用于返回参数 DONE 的地址
ERROR :=M 70.1, //用于返回参数 ERROR 的地址
STATUS :=MW 72, //用于返回参数 STATUS 的地址
CHECK_IOCS :=M 70.2, //用于返回参数 CHECK_IOCS 的地址
SEND :=P#DB10.DBX0.0 BYTE 20 ); //DB10 中要传送的数据区
//(20 个字节)

用于 SIMATIC NET S7 CP 的程序块


164 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

3.2.1.2 形式参数的解释 - PNIO_SEND

形式参数的说明

下面的表格解释了 FC11 的所有形式参数:

参数 声明 数据类型 可能值 说明

CPLADDR INPUT WORD - 模块起始地址


MODE INPUT BYTE 可以为 XYH 指定以下值: 通过以下方式指定 CP 操作模式:
(参数版本  X0H: Y = 选择 IO 控制器 IO 设备模式;
2.0 或更高 – IO 控制器模式 X = 选择在 CHECK_IOCS 中仅传送组
版本) 消息还是同时在 IOCS 中传送状态位。
– IO 设备模式(无并行
操作)
关于兼容性的注意事项;
– 与版本 1.0 中的 FC
 只要 CP 不同时作为 IO 控制器和
不兼容
IO 设备操作,就仍可继续使用版本
 X1H:
1.0 的 FC。
IO 设备模式(同时使用两
 当 MODE=0 时,V2.0 版本的 FC
个模式)
特性与 FC V1.0 版本相同。
 0YH
 当 MODE=0 和 MODE = 1 时,FC
在 IOCS 中传送状态位。 V3.0 及以上版本的特性与 FC V2.0
 8YH 版本相同。
限制 CHECK_IOCS 中的
组消息;IOCS 中无状态
位。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 165
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

参数 声明 数据类型 可能值 说明

SEND IN_OUT ANY 数据区的地址指向下列两个 指定地址和长度


(作为 位置之一: IO 控制器模式:
VARTYP  存储器位区 长度应与所组态的分布式 IO 的总长度
E,仅允
 数据块区 相匹配,据此也可传送地址间距。
许 BYTE)
长度也可以比分布式 I/O 的总长度短,
例如,当块在 OB 中多次被调用时。然
而,总长度必须至少能满足一次调用
需要。
IO 设备模式:
数据结构根据在 PROFINET IO 控制器
链上为此 PROFINET IO 设备组态的输
入模块的插槽的顺序获得的,并且它
们的长度没有地址间距。
注意:
 无论如何组态地址(不管所组态的最
低地址如何),块将开始传送地址 0
上的数据。
 不允许指定 I/O 区,因为在 I/O 可
接受数据之前,必须检查 IOCS 是
否是 GOOD。

用于 SIMATIC NET S7 CP 的程序块


166 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

参数 声明 数据类型 可能值 说明

LEN INPUT INT 数值 > 0 以字节为单位的将要传送的数据区的


可以在本手册中与设备相关 长度。
的 B 部分的"性能数据"一章 无论如何组态,将始终从地址 0 开始
中找到要传送的数据区的最 传送数据。 请注意,包括长度为 1 的
大总长度。 这对控制器或设 IO 地址"0"。
备模式有所不同。 IO 控制器模式:
 必须在此指定设备的最高组态地
址。 不将单个区归组在一起。
如果块调用一次以上,LEN 还应比
最高地址短。 应至少在一个调用中
指定最高地址(比较"SEND"参数)。
 数据将按照逻辑地址的次序进行传
送(仅用于 PROFIBUS DP)。

IO 设备模式:
 根据在 PROFINET IO 控制器链上
为此 PROFINET IO 设备组态的输
入模块的插槽的顺序传送数据。

注意事项:
确保此处编程的长度与 PROFINET
IO 控制器的组态一致。 为设备传送
包括所有间距的整个数据区长度。
DONE OUTPUT BOOL 0: - 该参数指示是否无错完成该作业。
1:接受的新数据
ERROR OUTPUT BOOL 0: -1: 错误 错误代码
STATUS OUTPUT WORD - 状态代码

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 167
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

参数 声明 数据类型 可能值 说明

CHECK_ OUTPUT BOOL 0: 所有 IOCS 均设置为 指示是否需要对 IOCS 状态区进行评估


IOCS GOOD 的组消息。
1: 至少一个 IOCS 设置为 无论 MODE 参数如何,始终返回
BAD CHECK_IOCS。
IOCS OUTPUT ANY (作 数据区的地址指向下列两个 IO 使用者状态
为 位置之一: 每一用户数据字节传送一个状态位。
VARTYP  存储器位区 要求: 在 MODE 参数中请求传送
E,仅允
 数据块区 (MODE=0 或 MODE=1)。 该参数仅在
许 BYTE)
长度: 该模式下相关。

对于最大值,请参见本手册 长度信息取决于 LEN 参数中的长度(每


与设备相关的 B 部分的"性 字节一位)
能数据"部分。 这对控制器 =(长度 LEN + 7/ 8)
或设备模式有所不同。 控制器模式:
根据 SEND 参数传送地址间距。
将以状态 GOOD 传送地址间距!
设备模式:
不传送地址间距。

该块将启动地址 0 的状态传送。
注意事项:
ANY 指针的最大长度是(长度 LEN +
7/8)

说明
等待确认执行
只有当块发出 DONE = 1 或 ERROR = 1 的信号后,才执行以下操作:
 评估输出参数;
 更改 MODE 参数。

说明
必须假定所返回的 IOCS 状态与数据(SEND 参数)没有同步到达,而是延迟了一个用户程
序周期。 这意味着: 用户数据和 IOCS 不一致

用于 SIMATIC NET S7 CP 的程序块


168 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

3.2.1.3 PNIO_SEND的条件代码

条件代码

下表显示了根据 DONE、ERROR 和 STATUS 形成的条件代码,其中这些参数必须由用


户程序进行评估。

说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。

表格 3- 1 条件代码 PNIO_SEND

DONE ERROR STATUS 含义

0 0 8180H  数据传输处于活动状态;

 CP 处于 STOP 模式。
0 0 8181H 模块不支持块版本 2.0。
解决方法: 使用块版本 1.0。
1 0 0000H 无错误传送新数据。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 169
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

DONE ERROR STATUS 含义

0 1 8183H  缺少 PROFINET IO 组态;



 CPLADDR 参数错误;

 CP 处于 STOP 模式;

 MODE 互连与模块组态不匹配或 MODE 参数的互连不正确。
在设备模式中,也可能是:
 ROFINET IO 控制器和 PROFINET IO 设备之间的连接被中断。

 PROFINET IO 控制器不可到达

 总长度(组态和 LEN 参数)不一致。
0 1 8184H 系统错误或非法参数类型。
0 1 8185H 参数 LEN 大于源区 SEND 或目标缓冲区(IOCS)太小。
0 1 8F22H 读取参数时发生区域长度错误(例如,DB 太短)。
0 1 8F23H 写入参数时发生区域长度错误(例如,DB 太短)。
0 1 8F24H 读取参数时发生范围错误。
0 1 8F25H 写入参数时发生范围错误。
0 1 8F28H 读取参数时发生对齐错误。
0 1 8F29H 写入参数时发生对齐错误。
0 1 8F30H 该参数位于具有写保护的第一个当前数据块中。
0 1 8F31H 该参数位于具有写保护的第二个当前数据块中。
0 1 8F32H 该参数包含了一个太高的 DB 号。
0 1 8F3AH 目标区未装载(DB)。
0 1 8F42H 从 I/O 区域中读取参数超时。
0 1 8F43H 将参数写入 I/O 区域超时。
0 1 8F44H 防止在块执行期间访问要读取的参数。
0 1 8F45H 防止在块执行期间访问要写入的参数。
0 1 8F7FH 内部错误,例如,非法 ANY 引用。

用于 SIMATIC NET S7 CP 的程序块


170 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

DONE ERROR STATUS 含义

0 1 8090H 具有该地址的模块不存在。
0 1 80A0H 将否定确认写入模块中。
0 1 80A1H 将否定确认写入模块中。
0 1 80B0H 该模块不能识别数据记录。
0 1 80B1H  所指定的数据记录长度错误。

 CP 切换到 STOP。
0 1 80C0H 无法读取数据记录。
0 1 80C1H 当前正在处理所指定的数据记录。
0 1 80C2H 未决的作业太多。
0 1 80C3H 资源已占用(内存)。
0 1 80C4H 通信错误(临时发生,通常建议在用户程序中重复执行该作业)。

3.2.2 PNIO_RECV

3.2.2.1 含义和调用 - PNIO_RECV

工作原理

程序块 PNIO_RECV 用于在 CP 的 PROFINET IO 控制器模式或 PROFINET IO 设备模式


下接收数据。

● 作为 PROFINET IO 控制器运行

该块接收了来自 PROFINET IO 设备的过程数据(控制器输入)以及来自指定输入区域内


的 PROFINET IO 设备的 IO 提供者状态(IOPS)。

● 作为 PROFINET IO 设备运行

该块接收通过 PROFINET IO 控制器传送的数据(已组态的 IO 地址)和 PROFINET IO


控制器的 IO 提供者状态(IOPS),并将其写入到 PROFINET IO 设备的 CPU 上为过程
输出保留的数据区内。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 171
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

扩展

● 从块版本 V2.0 起

PNIO_RECV 支持在一个 CP 上并行操作 PROFINET IO 控制器和 IO 设备。通过附加


MODE 参数,可以设置将调用 FC 的模式。

● 从块版本 V3.0 起

通过 MODE 参数,有以下选项可用于传送 IO 提供者状态:

– 限制为实现更快传送而优化的 CHECK_IOPS 参数中的组状态信息;

– IO 提供者状态参数中的附加详细状态信息

调用接口(从块版本 2.0 起)

FBD 中的调用接口

31,2B5(&9

:25' &3/$''5 ,236 $1<

%<7( 02'( 1'5 %22/

,17 /(1 (5525 %22/

67$786 :25'

&+(&.B,236 %22/

$''B,1)2 :25'

$1< 5(&9

STL 的示例

STL 解释
call fc 12 ( //调用 PNIO_RECV
CPLADDR :=W#16#0100, //来自硬件配置的模块地址
MODE :=B#16#80, //控制器模式或设备模式;
//不传送 IOCS 状态位。
LEN :=7, //数据区长度
IOPS :=P#DB11.DBX7.0 BYTE 1, //DB11 中的每个接收数据字节对应一个位状态
NDR :=M 74.0, //用于返回参数 NDR 的地址
ERROR :=M 74.1, //用于返回参数 ERROR 的地址
STATUS :=MW76, //用于返回参数 STATUS 的地址
CHECK_IOPS :=M74.2, //用于返回参数 CHECK_IOPS 的地址
ADD_INFO :=MW 26, //诊断消息
RECV :=P#DB11.DBX0.0 BYTE 7 ); //DB11 中的接收数据 (7 个字节)

用于 SIMATIC NET S7 CP 的程序块


172 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

参见

数据一致性 (页 181)

替换值 (页 182)

3.2.2.2 形式参数的解释 - PNIO_RECV

形式参数的说明

下面的表格解释了 FC12 的所有形式参数:

参数 声明 数据类型 可能值 说明

CPLADDR INPUT WORD - 模块起始地址


MODE INPUT BYTE 可以在 MODE = XYH 参数 通过以下方式指定 CP 操作模式:
(参数版本 中指定具有以下含义的值: Y = 选择 IO 控制器 IO 设备模式;
2.0 或更高  X0H: X = 选择在 CHECK_IOPS 中仅传送组
版本) – IO 控制器模式 消息还是同时在 IOPS 中传送状态位。

– IO 设备模式(无并行 有关兼容性的注意事项:

操作)  只要 CP 不同时作为 IO 控制器和 IO


设备操作,就仍可继续使用版本 1.0
– 与版本 1.0 中的 FC
的 FC。
不兼容
 当 MODE=0 时,FC V2.0 及以上版
 X1H:
本的特性与 FC V1.0 版本相同。
IO 设备模式(同时使用两
 当 MODE=0 和 MODE = 1 时,FC
个模式)
V3.0 及以上版本的特性与 FC V2.0
 0YH 版本相同。
在 IOPS 中传送状态
位。

 8YH
限制 CHECK_IOPS 中
的组消息;IOPS 中无状
态位。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 173
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

参数 声明 数据类型 可能值 说明

RECV IN_OUT ANY (作 数据区的地址指向下列两个 指定地址和长度


为 位置之一: IO 控制器模式:
VARTYP  存储器位区 长度应与所组态的分布式 IO 的总长度
E,仅允
 数据块区 相匹配,据此也可传送地址间距。
许 BYTE)
长度也可以比分布式 I/O 的总长度短,
例如,当块在 OB 中多次被调用时。然
而,总长度必须至少能满足一次调用需
要。
IO 设备模式:
数据结构根据在 PROFINET IO 控制器
链上为此 PROFINET IO 设备组态的输
出模块的插槽的顺序获得的,并且它们
的长度没有地址间距。
注意:
 无论如何组态地址(不管所组态的最
低地址如何),块将开始传送地址 0
上的数据。
 不允许指定 I/O 区,因为在 I/O 可接
受数据之前,必须首先将 IOPS 变为
GOOD。

用于 SIMATIC NET S7 CP 的程序块


174 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

参数 声明 数据类型 可能值 说明

LEN INPUT INT 数值 > 0 以字节为单位的将要传送的数据区的长


用户可在 CP 文档中的性能 度。
数据中查找要传送的输出数 无论如何组态,将始终从地址 0 开始传
据的最大总长度。 送数据。请注意,包括长度为 1 的 IO
控制器和设备模式的最大总 地址“0”。
长度可以不同。 IO 控制器模式:
 必须在此指定设备的最高组态地
址。各个区域不会归组在一起。
如果多次调用块,LEN 也可能比最
高地址短。 应至少在一个调用中指
定最高地址(比较"RECV"参数)。
 数据将按照逻辑地址的次序进行传
送(仅用于 PROFIBUS DP)。

IO 设备模式:
 按在 PROFINET IO 控制器链上为此
PROFINET IO 设备组态的输入模块
的插槽的顺序传送数据。
 注意事项:
必须确保此处编程的长度和
PROFINET IO 控制器的组态一致。
为设备传送包括所有间距的整个数
据区长度。
NDR OUTPUT BOOL 0: - 该参数指示是否无错完成该作业。
1:接受数据
ERROR OUTPUT BOOL 0: - 故障代码
1:错误
STATUS OUTPUT WORD - 状态代码
CHECK_ OUTPUT BOOL 0: 所有 IOPS 均设置为 指示是否需要对 IOPS 状态区进行评估
IOPS GOOD 的组消息。
1: 至少一个 IOPS 设置为 无论 MODE 参数如何,始终返回
BAD CHECK_IOPS。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 175
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

参数 声明 数据类型 可能值 说明

IOPS OUTPUT ANY (作 数据区的地址指向下列两个 IO 提供者状态


为 位置之一: 每一用户数据字节传送一个状态位。
VARTYP  存储器位区 要求: 在 MODE 参数中请求传送
E,仅允
 数据块区 (MODE=0 或 MODE=1)。 该参数仅在
许 BYTE)
长度: 该模式下相关。

对于最大值,请参见本手册 长度信息取决于 RECV 参数中的长度


与设备相关的 B 部分的"性 (每字节一位)
能数据"部分。这对控制器 =(长度 LEN + 7/ 8)
或设备模式有所不同。 控制器模式:
地址间距也根据 RECV 参数进行传送。
将以状态 GOOD 传送地址间距!
设备模式:
地址间距不传送。
该块将启动地址 0 的状态传送。
注意:
 ANY 指针的最小长度为
(长度 LEN + 7/8)

用于 SIMATIC NET S7 CP 的程序块


176 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

参数 声明 数据类型 可能值 说明

ADD_INF OUTPUT WORD 附加诊断信息 参数扩展


O 在控制器模式中: 注意事项:
 0: 无报警 当没有在 PROFINET IO 控制器上组态
INPUT 地址时,也更新 ADD_INFO 参
 >0: 未决报警的数目
数。 这种情况下,通过长度 LEN > 0
在设备模式中,参数始终
(例如,LEN = 1 字节)调用
= 0。
PNIO_RECV 块。 然后传送 1 字节的地
址间距。
参数扩展可用于从下列固化程序版本起
的 CP:
 从固化程序 V2.0 起的 CP 343−1
(EX30)
 从固化程序 V2.0 起的 CP 343−1
LeaN (CX10)
 从固化程序 V1.0 起的 CP 343−1
Advanced (GX30)
在较早的固化程序版本中,保留该参
数。

说明
等待确认执行
只有当块发出 DONE = 1 或 ERROR = 1 的信号后,才执行以下操作:
 评估输出参数;
 更改 MODE 参数。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 177
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

3.2.2.3 PNIO_RECV的条件代码

条件代码

下表显示了由 NDR、ERROR 和 STATUS 参数构成的代码,其中的参数必须由用户程序


进行计算。

说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。

表格 3- 2 条件代码 PNIO_RECV

NDR ERROR STATUS 含义

0 0 8180H  激活数据接受;

 CP 处于 STOP 模式。
0 0 8181H 模块不支持块版本 2.0。
解决方法: 使用块版本 1.0。
1 0 0000H 无错接受新数据。

用于 SIMATIC NET S7 CP 的程序块


178 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

NDR ERROR STATUS 含义

0 1 8183H  缺少 PROFINET IO 组态;



 CPLADDR 参数错误;

 CP 处于 STOP 模式。

 MODE 互连与模块组态不匹配或 MODE 参数的互连不正确。
在设备模式中,也可能是:
 ROFINET IO 控制器和 PROFINET IO 设备之间的连接被中断。

 PROFINET IO 控制器不可到达

 总长度(组态和 LEN 参数)不一致
0 1 8184H 系统错误或非法参数类型。
0 1 8185H 目标地址缓冲区(IOCS 的 RECV)太小。
0 1 8F22H 读取参数时发生区域长度错误(例如,DB 太短)。
0 1 8F23H 写入参数时发生区域长度错误(例如,DB 太短)。
0 1 8F24H 读取参数时发生范围错误。
0 1 8F25H 写入参数时发生范围错误。
0 1 8F28H 读取参数时发生对齐错误。
0 1 8F29H 写入参数时发生对齐错误。
0 1 8F30H 该参数位于具有写保护的第一个当前数据块中。
0 1 8F31H 该参数位于具有写保护的第二个当前数据块中。
0 1 8F32H 该参数包含了一个太高的 DB 号。
0 1 8F3AH 目标区未装载(DB)。
0 1 8F42H 从 I/O 区域中读取参数超时。
0 1 8F43H 将参数写入 I/O 区域超时。
0 1 8F44H 防止在块执行期间访问要读取的参数。
0 1 8F45H 防止在块执行期间访问要写入的参数。
0 1 8F7FH 内部错误,例如,非法 ANY 引用。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 179
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

NDR ERROR STATUS 含义

0 1 8090H 具有该地址的模块不存在。
0 1 80A0H 将否定确认写入模块中。
0 1 80A1H 将否定确认写入模块中。
0 1 80B0H 该模块不能识别数据记录。
0 1 80B1H  所指定的数据记录长度错误。

 CP 切换到 STOP。
0 1 80C0H 无法读取数据记录。
0 1 80C1H 当前正在处理所指定的数据记录。
0 1 80C2H 未决的作业太多。
0 1 80C3H 资源已占用(内存)。
0 1 80C4H 通信错误(临时发生,通常建议在用户程序中重复执行该作业)。

3.2.3 用于PROFINET IO的FC的常规特征

IO 消耗者状态(IOCS)和 IO 提供者状态(IOPS)

对于两个通讯伙伴 - 一个是 CPU/CP,另一个是 IO 设备 - 存在关于数据状态好(GOOD)或


差(BAD)的信息。 该状态信息将同时传送给数据。 对数据进行发送的伙伴的状态称作
IOPS (IO 提供者状态),正在进行接收的伙伴的状态称作 IOCS (IO 消耗者状态)。

IOPS 和 IOCS 状态无需完全相同。 例如,有可能 S7-300 CPU 处于 STOP 模式(输出无


效或没有激活任何 PROFINET IO 块)。 此时,作为 PROFINET IO 控制器,CP 将把
BAD 状态传送给 IO 设备。

用户会收到一条组消息,通知用户是否需要评估状态信息。 通过 MODE 参数,还可以决


定是否要在调用接口上返回详细状态信息。 如果将信息限制为组消息,作业处理速度将
加快。

用于 SIMATIC NET S7 CP 的程序块


180 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

块调用和 IO 数据之间的关系

● 作为 PROFINET IO 控制器操作
当作为 PROFINET IO 控制器时,CP 不监视 PNIO_SEND/RECV 块的周期性调用。
如果没有调用块,则最后传送的 IO 数据和 IOCS/IOPS 数据将被认为是有效。

● 作为 PROFINET IO 设备操作
FC11 和 FC12 均有各自的监视狗。 根据 CPU 周期,如果在初始化阶段后不再调用
两个块之一,则终止到 PROFINET IO 控制器的连接。

优化数据传送(仅当作为 PROFINET IO 控制器操作时)

有可能所调用块的长度(LEN 参数)短于 PNIO 链上所组态的 IO 数据总长度。

您可使用该数据,这样,在每个 CPU 周期内都将传送对时间有严格要求的数据,反之,


那些对时间要求不严格的数据不是每个周期都传送。

实例:
例如,在每个周期内,可以只传送第一个数据区(对时间有严格要求的数据),而在每个第
二周期内传送所组态 IO 数据的总长度。 为此,在组态期间,必须将对时间有严格要求的
数据放在较低的区(从 IO 地址 0 开始)中。

3.2.4 数据一致性
应始终以整体方式传送 PROFINET IO 控制器的整个输入或输出数据区,以确保数据一致
性。

● 作为 PROFINET IO 控制器操作
不管怎样,通过使用块调用中的长度信息,也可一致地读取或输出小于所组态数据区
的一个输入或输出区。

注意: 然而,应牢记,对于 PROFINET IO 系统内的“IO 用户数据”来说,数据一致性只有


在单个 IO 插槽中才能得到保证。 对于此处所描述的块,无论是否可以保证在 CPU 和 IO
控制器之间传送的数据一致性,这都适用。

块调用

然而,为了保证数据一致性,当块无错完成时(输出参数 NDR=TRUE),必须只访问 IO 数
据。 也必须检查数据的 IOCS 或 IOPS 状态是否为 GOOD。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 181
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

实例

在正常情形下(取决于 IO 数据的总长),块将运行几个用户程序周期,直到发出条件代码
DONE/NDR=1 信号。

崬䙑0.)/?2%#6⢀盨䠝⍙.$2

⪫㣅栩媪ⴢ時崘愄奵⨭䔯盨
⍂㧩㤎ῷ)/峧⨰㍩㓎㙟㚙㒗䞭)/03䏟ㄪѦ

⋯⨰▵⨭䔯㚙㒗盨⋯⨰㛙䞭悼⌣
㚙㒗Ѧ

崬䙑0.)/?3%.$⢀盨䠝⍙$/.%

⪫㣅栩媪ⴢ時崘愄奵⨭䔯盨
⍂㧩㤎慃惰)/峧⨰㍩㓎㙟㚙㒗䞭)/#3䏟ㄪⅥѦ

注意: 用户程序周期和 IO 数据交换(在 PROFINET IO 控制器与 PROFINET IO 设备间)


周期,相互独立,互不影响。

3.2.5 替换值

操作情况

在下列两种操作情形下,均支持替代值的设置:

● 启动期间的替代值(CPU 上的模式将从 STOP 切换到 RUN)

● 如果检测到问题时的替代值(删除/插入或工作站故障/返回)

启动期间的替代值

可以在启动 OB 中设置一个存储位(“启动”存储位),使用替换值初始化输出。在周期性模
式(OB1)中,判断该“启动”存储位,在必要时使用初始值调用 PNIO_SEND。

用于 SIMATIC NET S7 CP 的程序块


182 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

如果出错,替换值(仅当作为 PROFINET IO 控制器操作时)

如果存在故障(设备/子模块出现故障),那么,通过查询状态信息 IOCS/IOPS 状态,将可


查找到哪些子模块已经无法工作。 随后可以选择设置替代值。

3.2.6 PNIO_RW_REC

3.2.6.1 含义和调用 - PNIO_RW_REC

意义及工作原理

FB52 在 PROFINET IO 控制器模式下用于"数据记录读取"和"数据记录写入"两项功能。


在同一时间,FB52 只能执行其中一项功能。 "数据记录读取"或"数据记录写入"功能由
WRITE_REC 参数控制。

CP 仅支持 I&M0 和 I&M1。

示例: 可使用“写数据记录”功能向 CP 通知位置 ID 和设备名称(若尚未在 STEP 7 中的


CP 属性对话框中设置该参数)。 这可通过带索引 AFF1H 的维护数据记录“IM1”来实现。

仅能读出带索引 AFF0H(订货号、序列号、版本)的数据记录 I&M0(写保护)。

您可以在下列 Internet 地址上找到所支持的数据记录及其结构的详细信息:

http://support.automation.siemens.com/WW/view/en/19289930

调用接口

FBD 中的调用接口:

PNIO_RW_REC

WORD CPLADDR

BOOL WRITE_REC

WORD ID DONE BOOL

WORD INDEX ERROR BOOL

STATUS WORD

INT LEN

ANY RECORD

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 183
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

STL 的实例:

STL 说明
CALL FB 52, DB 52 ( //调用 PNIO_RW_REC
CPLADDR := W#16#0110, //来自硬件配置的模块地址
WRITE_REC := M 1.1, //作业类型
ID := W#16#86A, //要寻址的模块的逻辑地址
INDEX := W#16#8000, //数据记录号
DONE := M 1.3, //用于返回参数 DONE 的地址
ERROR := M 1.1, //用于返回参数 ERROR 的地址
STATUS := MW 12, //用于返回参数 STATUS 的地址
LEN := MW 16, //数据记录长度,以字节为单位
RECORD := P#DB3.DBX0.0 BYTE 80 ); //数据记录的目标或源
//(此处最多为 80 个字节)

3.2.6.2 形式参数的解释 - PNIO_RW_REC

形式参数的说明
下表介绍了 FB52 中的所有形式参数:

参数 声明 数据类型 可能值 说明

CPLADD INPUT WORD - 模块起始地址


R
WRITE_R INPUT BOOL 0: 读数据记录 作业类型;
EC 1: 写入数据记录 在块执行期间不能更改此参数。
ID INPUT WORD PROFINET IO 组件(模块或子模块)
的逻辑地址。 对于输出模块,设置
了位 15
(输出地址 5 示例:
ID:=DW#16#8005)。
对于混合式模块,必须指定两个地
址中较低的那个。
INDEX INPUT WORD 参见供应商信息以了解模块 用户希望读取或写入的数据记录数
支持的数据记录数目。 目。
DONE OUTPUT BOOL 0: - 该参数指示是否无错完成该作业。
1:成功传送数据记录

用于 SIMATIC NET S7 CP 的程序块


184 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

参数 声明 数据类型 可能值 说明

ERROR OUTPUT BOOL 0: - 错误代码


1:错误
STATUS OUTPUT WORD - 状态代码
LEN IN_OUT INT 最大长度是 480 个字节。  读取数据记录:
仅 OUTPUT 参数;成功读取
后,指示读数据记录的长度;否
则为 0。
 写入数据记录:
仅 INPUT 参数;用户在此输入
即将写入的数据记录的长度。 该
长度必须与数据记录中的定义相
匹配。
RECORD IN_OUT ANY 数据区的地址指向下列两个  读取数据记录:
(VARTYPE 位置之一: 仅 OUTPUT 参数;成功读取
、BYTE、  存储器位区 后,数据记录中的数据都存储在
WORD 和 此。 如果 ANY 指针过短,则传
 数据块区
DWORD 均 送的数据就越多。
ANY 指针的长度必须大于等
允许)  写入数据记录:
于数据记录中定义的长度。
仅 INPUT 参数;用户在此存储
从数据记录写入的数据。 ANY
指针的长度至少必须等于 LEN
参数指定的长度。

3.2.6.3 PNIO_RW_REC的条件代码

条件代码

下表显示了根据 DONE、ERROR 和 STATUS 形成的条件代码,其中这些参数必须由用


户程序进行评估。

说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 185
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

表格 3- 3 PNIO_RW_REC 条件代码

DONE ERROR STATUS 含义

0 0 8180H 数据传输处于活动状态
1 0 0000H 数据记录已成功发送
0 1 8183H  无 PROFINET IO 控制器的组态,
 错误的 CPLADDR

 CP 处于 STOP 模式
0 1 8184H 系统错误或非法的参数类型
0 1 8185H 目标缓冲区(RECORD)太短
0 1 8F22H 读取参数时发生区域长度错误(例如,DB 太短)
0 1 8F23H 写入参数时发生区域长度错误(例如,DB 太短)
0 1 8F24H 读取参数时发生区域错误
0 1 8F25H 写入参数时发生区域错误
0 1 8F28H 读取参数时发生定位错误
0 1 8F29H 写入参数时发生对准错误
0 1 8F30H 参数位于具有写保护的第一个激活数据块中。
0 1 8F31H 参数位于具有写保护的第二个激活数据块中。
0 1 8F32H 该参数包含了一个太高的 DB 号。
0 1 8F3AH 没有装载目标区域(DB)。
0 1 8F42H 从 I/O 区域中读取参数超时
0 1 8F43H 将参数写入到 I/O 区域超时
0 1 8F44H 防止在块执行期间访问要读取的参数。
0 1 8F45H 在执行块期间禁止访问要写入的参数。
0 1 8F7FH 内部错误,例如,非法 ANY 引用
0 1 8090H 具有该地址的模块不存在。
0 1 80A0H 从模块中读取否定确认
0 1 80A1H 将否定确认写入到模块中
0 1 80A3H 常见的 PROFINET IO 环境管理错误
0 1 80A9H PROFINET IO 设备或模块报告一个非法类型

用于 SIMATIC NET S7 CP 的程序块


186 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

DONE ERROR STATUS 含义

0 1 80B0H 该模块不能识别数据记录。
0 1 80B1H  所指定的数据记录长度错误;

 CP 切换到 STOP。
0 1 80B2H 逻辑地址或组态的插槽未使用。
0 1 80B4H PROFINET IO 设备或模块报告访问了一个非法区域
0 1 80B6H PROFINET IO 设备或模块拒绝访问。
0 1 80B8H 模块报告一个非法参数
0 1 80B9H 块类型和/或版本不合适
0 1 80C0H 无法读取数据记录。
0 1 80C1H 当前不允许对数据记录进行写访问。 数据记录或者当前正在被处理,或者
其内容设置在组态中。
0 1 80C2H 未决的作业太多。
0 1 80C3H 已占用的资源(内存)
0 1 80C4H 通信错误(临时发生,通常建议在用户程序中重复执行该作业)。

3.2.7 PNIO_ALARM

3.2.7.1 含义和调用 - PNIO_ALARM

工作原理

FB54 由作为 PROFINET IO 控制器运行的 CP 343‐1 用于进行报警评估,应该在 FC12


中的 ADD_INFO 参数不等于 0 时通过用户程序调用。在 FB54 的所有 OUTPUT 参数发送
完毕且未发生错误后,所收到的报警自动被确认。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 187
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

报警按照其信号发出的时间顺序转发给用户程序。 其信号尚未发送到用户程序以及因后
续报警过多而导致无效的报警都不会被新到的报警删除。

说明
只要尚未调用该块,报警会在 CP 中自动确认。
如果 FB54 已在用户程序中调用过(至少)一次,则必须继续调用该块才能确认未决的报
警。 当 FC12 因 ADD_INFO 参数值不等于"0"而发出信号时会发生这种情况。
如果 FB54 在用户程序中被调用过一次或多次之后而不再被调用,则报警不会被确认,且
不能保证 IO 图像将进行正确的更新。 例如,当发生"站返回"报警后会发生这种情况。 只
能通过重新启动 CP 才能重设 FB54 的调用需求。

调用接口

FBD 中的调用接口

PNIO_ALARM

WORD CPLADDR DONE BOOL

ERROR BOOL

NEW BOOL

DWORD MODE STATUS WORD

ANY TINFO ID WORD

ANY AINFO LEN INT

STL 的实例:

STL 解释
CALL FB 54, DB 54 ( //调用 PNIO_ALARM
CPLADDR:= W#16#0110, //来自硬件配置的模块地址
DONE := M 1.1, //用于返回参数 DONE 的地址
ERROR := M 1.2, //用于返回参数 ERROR 的地址
NEW := M 1.3, //TRUE: 收到一个新报警
STATUS := MW 12, //错误代码
ID := MW14, //报告组件的逻辑起始地址
LEN := MW 16, //收到的报警信息的长度 (AINFO)
MODE := MD 18, //RESERVED (值始终 = 0)
TINFO := P#DB4.DBX0.0 BYTE 32, //task information
AINFO := P#DB4.DBX32.0 BYTE 532 ); //alarm information

用于 SIMATIC NET S7 CP 的程序块


188 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

3.2.7.2 形式参数的解释 - PNIO_ALARM

形式参数的说明

下表介绍了 FB54 中的所有形式参数:

参数 声明 数据类型 可能值 说明

CPLADDR INPUT WORD - 引起错误的模块的起始地址


DONE OUTPUT BOOL 0: - 该参数指示是否无错完成该作
1:成功传送报警信息 业。
如果 DONE = 1,则 NEW 参数也
必须进行检查。
ERROR OUTPUT BOOL 0: - 故障代码
1:错误
NEW OUTPUT BOOL 0: 数据传送激活或无新报警 如果 DONE = 1,且 NEW = 1,
1: 新报警已接收并已确认 则发送一个新已接收报警。

STATUS OUTPUT WORD - 状态代码


ID OUTPUT WORD 触发报警的 PNIO 组件(模块或子
模块)的逻辑起始地址。
对于输出模块,设置了位 15 (输
出地址 5 示例:
ID:=DW#16#8005)。
对于混合式模块,指定两个地址
中较低的那个。
LEN OUTPUT INT 所接收到的报警信息(AINFO)的长

MODE IN_OUT DWORD 0 已保留

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 189
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

参数 声明 数据类型 可能值 说明

TINFO IN_OUT ANY 数据区的地址指向下列两个 (task information)


(VARTYPE 位置之一: 报警管理信息的目标区域。
、BYTE、  存储器位区 错误 OB 起始信息(OB 标题
WORD 和
 数据块区 =0...19 字节的 TINFO)会由 CP 固
DWORD 均
ANY 指针的长度必须大于等 化程序尽可能多地复制。
允许)
于 32 字节。 另请参见 1)
AINFO IN_OUT ANY 数据区的地址指向下列两个 (alarm information)
(VARTYPE 位置之一: 报头信息和附加报警信息的目标
、BYTE、  存储器位区 地址区。 如果 ANY 指针 AINFO
WORD 和 太短,则信息将被截尾。
 数据块区
DWORD 均 1)
ANY 指针的长度必须大于等 另请参见
允许)
于所能预料到的最大附加报
警信息,最多可包含 1432
字节(参见 LEN 参数)

1) 参考手册《STEP 7 - S7-300 和S7-400 的系统和标准函数》,通过SFB54“RALRM”接


收报警/4/ (页 331)

3.2.7.3 PNIO_ALARM的条件代码

条件代码
下表介绍了由 DONE、NEW、ERROR 和 STATUS 参数形成的条件代码,这些参数必须
由用户程序进行评估。

说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。

用于 SIMATIC NET S7 CP 的程序块


190 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.2 PROFINET IO - 数据传送和中断评估

DONE NEW ERROR STATU 含义


S

0 0 0 8180H 数据传输处于活动状态
1 1 0 0000H 报警数据发送成功,报警已确认
1 0 0 0000H 不存在报警数据
0 0 1 8183H  无 PROFINET IO 控制器的组态,
 错误的 CPLADDR

 CP 处于 STOP 模式
0 0 1 8184H 系统错误或非法的参数类型
0 0 1 8185H 目标缓冲区(TINFO 或 AINFO)过短
0 0 1 8F22H 读取参数时发生区域长度错误(例如,DB 太短)
0 0 1 8F23H 写入参数时发生区域长度错误(例如,DB 太短)
0 0 1 8F24H 读取参数时发生区域错误
0 0 1 8F25H 写入参数时发生区域错误
0 0 1 8F28H 读取参数时发生定位错误
0 0 1 8F29H 写入参数时发生对准错误
0 0 1 8F30H 参数位于受写保护的第一个有效数据块中
0 0 1 8F31H 参数位于受写保护的第二个有效数据块中
0 0 1 8F32H 参数中的 DB 号过高
0 0 1 8F3AH 目标区域未加载(DB)
0 0 1 8F42H 从 I/O 区域中读取参数超时
0 0 1 8F43H 将参数写入到 I/O 区域超时
0 0 1 8F44H 防止在块执行期间访问要读取的参数。
0 0 1 8F45H 将要写入的参数地址在所访问的机架上被禁用
0 0 1 8F7FH 内部错误,例如,非法 ANY 引用
0 0 1 8090H 具有该地址的模块不存在
0 0 1 80A0H 从模块中读取否定确认
0 0 1 80A1H 将否定确认写入到模块中
0 0 1 80B0H 模块不识别数据记录

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 191
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

DONE NEW ERROR STATU 含义


S

0 0 1 80B1H  所指定的数据记录长度错误

 CP 切换到 STOP
0 0 1 80C0H 不能读取数据记录
0 0 1 80C1H 当前正在处理所指定的数据记录
0 0 1 80C2H 未决的作业太多
0 0 1 80C3H 已占用的资源(内存)
0 0 1 80C4H 通信错误(临时发生,通常建议在用户程序中重复执行该作业)。

3.3 PROFIenergy

PROFIenergy

PROFINET 中的 PROFIenergy 功能用于工厂的能源管理。 其中包括经过计划或自发地


关闭各个现场设备、单元或工厂各部门。 停机发生在不生产或生产间歇期间。 可从能源
理念所涵盖的设备以及支持数据读取功能的设备读取能源和诊断数据。

PROFIenergy 控制器

停机命令由高级控制器(在 PROFINET IO 中为 IO 控制器)输出。

使用 SIMATIC S7-300,带有 PROFIenergy 功能的 S7-300 CPU 可充当 PROFIenergy


控制器。

PROFIenergy 设备
PROFIenergy 控制器的命令由带有 PROFIenergy 功能的 IO 设备处理,以将现场连接设
备关闭。

就 PROFIenergy 程序块来说,带有 PROFIenergy 功能的 IO 设备称为 PROFIenergy 设


备。 使用 SIMATIC S7-300,带有 PROFIenergy 功能的 S7-300 CPU 可充当
PROFIenergy 设备。

用于 SIMATIC NET S7 CP 的程序块


192 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

智能设备

在 SIMATIC S7 中,智能设备 (I-device) 本身可有从属 PROFIenergy 设备。 在这种情况


下,智能设备还有 PROFIenergy 控制器功能。

节能模式和 PE_MODE_ID

许多设备仅支持“准备运行”(通电)和“暂停”(断电)工作状态。 可为支持的设备或
PROFIenergy 设备控制器中的多组单元指定带有不同节能模式的标定节能状态。 使用
PROFIenergy 可将这些不同的能耗状态分配给要在现场关闭的设备。

各种不同的能耗状态即称为“节能模式”。 每一种节能模式都指定一个经过定义的
“PE_MODE_ID”。

节能模式的功能编程

在 PROFIenergy 设备 CPU 的用户程序中对节能模式的详细信息(现场设备地址和暂停


持续时间等)进行编程。

3.3.1 用于 CP 300 的 PROFIenergy 程序块

在 S7-300 中实现 PROFIenergy 功能

对于 SIMATIC S7-300,PROFIenergy 功能由 IO 控制器和 IO 设备的程序块提供。

请注意,S7-300 CPU 和 CP 300 使用不同的 PROFIenergy 程序块。

PROFIenergy 规范

CP 300 的 PROFIenergy 程序块的功能基于 PROFIBUS 用户组织 (PNO) 的以下规范:

Common Application Profile PROFIenergy, Technical Specification for PROFINET,


Version 1.0, January 2010, Order No. 3.802

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 193
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

用于 CP 300 的 PROFIenergy 程序块

PROFIenergy 程序块由 CPU 的用户程序调用。 以下 PROFIenergy 程序块可用于 CP


300 的 PROFIenergy 功能:

● CP 300 作为 IO 控制器:

– PE_START_END_CP

用于发起和结束暂停供电和为 PROFIenergy 设备设置定义的节能模式的程序块。

– PE_CMD_CP

用于发起和结束暂停供电、设置定义的节能模式和向 PROFIenergy 设备查询能源


测量值的程序块。

这两个程序块可互相代替使用。 和 PE_START_END_CP 相比,PE_CMD_CP 的功能


范围有所扩展,集成了能源测量值。

每台 PROFIenergy 设备都必须单独调用程序块。

– DS3_WRITE_CP

不属于 PROFIenergy 功能块,但扩展了 PROFIenergy 功能以实现 ET 200S 功


能。

使用 DS3_WRITE_CP 时,已指定最多 8 个插槽(这种情况下为电源模块)的 ET


200S 开关行为设置。

● CP 300 作为 IO 设备:

– PE_I_DEV_CP

接收所有 PROFIenergy 命令并允许用户程序执行 PROFIenergy 功能。

使 IO 设备的响应帧可用于 IO 控制器。

PE_I_DEV_CP 由 IO 设备的用户程序周期性调用。

– 用于 PE_I_DEV_CP 的补充程序块 (FC 0...FC 8):

这些 FC 使响应数据可用于 PE_I_DEV_CP。 这些 FC 必须在用户程序中调用并与


PE_I_DEV_CP 相连接。

如果 PROFIenergy 设备是智能设备并且本身拥有从属 PROFIenergy 设备,则在从属


PROFIenergy 设备的智能设备 CPU 中调用 PE_START_END_CP 或 PE_CMD_CP。

用于传送数据记录的系统和程序块

通过读写数据记录在 IO 控制器与 IO 设备之间交换 PROFIenergy 命令和状态信息。 使


用程序块 RDREC 和 RWREC 实现此功能。

用于 SIMATIC NET S7 CP 的程序块


194 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

PROFIenergy 数据记录和各个程序块的响应数据如下所述。

说明
块调用
PE_START_END_CP、PE_CMD_CP、PE_I_DEV_CP 和 DS3_WRITE_CP 不得同时调
用。 只有在这些程序块中的一个发出“无错误”(VALID = 1) 或“错误”(ERROR = 1) 信号后
才能调用下一个程序块。
程序块 PNIO_RW_REC 同样不得与 PE_START_END_CP、PE_CMD_CP、
PE_I_DEV_CP 或 DS3_WRITE_CP 同时调用。

3.3.2 PE_START_END_CP

3.3.2.1 含义和调用 - PE_START_END_CP

意义及工作原理

PE_START_END_CP 可代替 PE_CMD_CP 使用。

PE_START_END_CP 用在 IO 控制器上。 它在指定的 PROFIenergy 设备上触发节能暂


停或结束暂停。

该程序块最适用于 IO 设备只与现场设备连接、不需要也无法从 IO 设备读出能源数据的


IO 控制器。

在 IO 设备的用户程序中组态节能模式。 在执行 PE_START_END_CP 后,实际采用的节


能模式由 IO 设备进行反馈并通过 PE_MODE_ID 参数输出。

Pause_Time 参数指定 IO 设备的节能暂停时长。 在 IO 设备上,PE_I_DEV_CP 程序块


检查指定的暂停持续时间是否够长以及是否可实现。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 195
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

顺序

3(B67$57B(1'B&3
3(B&0'B&3 3(B,B'(9B&3
˄352),HQHUJ\᥻ࠊ఼˅ ˄352),HQHUJ\䆒໛˅

‫ݭ‬԰Ϯ

1(: 
‫ݭ‬ડᑨ˄ℷ˅

䇏԰Ϯ

䇏ડᑨ˄䋳ˈ
䌘⑤㹿ऴ⫼ᖭ˅ V

PV

䇏԰Ϯ

䇏ડᑨ˄ℷ˅
V

ᯊ䯈 ᯊ䯈

图 3-1 PE_START_END_CP 和 PE_CMD_CP 的写/读作业流程图

使用 WRREC,PE_START_END_CP 将 PROFIenergy 命令作为写作业发送到 IO 设


备。此后,PE_START_END_CP 等待 IO 设备的确认。 为实现这一点,使用程序块
RDREC 每 100 毫秒读取一次确认数据记录。

只要未从 IO 设备收到确认,读作业就重复执行 10 秒(以 100 ms 为间隔)。

使用 RDREC 读取 IO 设备的响应数据。

用于 SIMATIC NET S7 CP 的程序块


196 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

FBD 表达式调用接口

3(B67$57B(1'B&3

:25' &3/$''5 3(B02'(B,' %<7(

%22/ 67$57 9$/,' %22/

%22/ (1' %86< %22/

:25' ,' (5525 %22/

7,0( 3$86(B7,0( 67$786 :25'

STL 表达式的调用接口

STL 解释
call fb 85 ( //调用程序块 PE_START_END_CP;
CPLADDR :=W#16#0100, //硬件组态中的模块地址;
START :=M100.0, //“暂停开始”信号的地址;
END :=M100.1, //“暂停结束”信号的地址;
ID :=W#16#110, //目标设备的地址;
PAUSE_TIME :=T#10S //将暂停时间指定为 IEC 时间;
VALID :=M100.2 //VALID 返回参数的地址;
BUSY :=M110.0, //BUSY 返回参数的地址;
ERROR :=M110.1, //ERROR 返回参数的地址;
STATUS :=MW128, //STATUS 返回参数的地址;
PE_MODE_ID :=MB111 ); //节能模式 ID 的地址

3.3.2.2 PE_START_END_CP 形式参数的说明

PE_START_END_CP 形式参数的说明

参数 声明 数据类型 取值范围 说明

CPLADDR INPUT WORD I、Q、M、D 和 L 常量 CP 的模块起始地址


START INPUT BOOL  1 = 命令处于活动状态 上升沿使能“Start_Pause”命令
 0 = 命令处于非活动状态
END INPUT BOOL  1 = 命令处于活动状态 上升沿使能“End_Pause”命令
 0 = 命令处于非活动状态
ID INPUT WORD 目标 PROFIenergy 设备的逻辑地址

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 197
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

参数 声明 数据类型 取值范围 说明

PAUSE_ INPUT TIME T#- IEC 时间以 1 ms 为步长,有符号整


TIME 24D_20H_31M_23S_648MS 数

T#24D_20H_31M_23S_647
MS
PE_MODE OUTPUT BYTE  00h: 断电(暂停) 执行命令后 IO 设备采用的节能模式
_  01h...FEh: 可组态 ID。
ID
 FFh: 准备好运行
VALID OUTPUT BOOL 0: - 该参数指示是否无错完成该作业。
1: 成功完成执行
BUSY OUTPUT BOOL 0: 执行已完成、中止或尚未 程序块处理状态的条件代码
启动
1: 执行处于活动状态
ERROR OUTPUT BOOL 0: - 错误代码
1: 错误 对于与 STATUS 参数一起使用时的
含义,请参见PE_START_END_CP
的条件代码 (页 198)。
STATUS OUTPUT WORD 状态代码
对于与 ERROR 参数一起使用时的含
义,请参见PE_START_END_CP 的
条件代码 (页 198)。

3.3.2.3 PE_START_END_CP 的条件代码

PE_START_END_CP 的条件代码

PE_START_END_CP 基于程序块 PNIO_RW_REC,返回 PNIO_RW_REC 的所有条件


代码,请参见块 PNIO_RW_REC 的条件代码。

输出以下其它 PROFIenergy 特定条件代码。 STATUS 的错误代码仅在与 ERROR = 1 一


起使用时有效。

用于 SIMATIC NET S7 CP 的程序块


198 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

表格 3- 4 PE_START_END_CP 的特定条件代码

STATUS 含义

块特定错误
8080h 同时出现 START 和 END 上升沿
8081h CMD_PARAM 与 CMD_PARAM_LEN 长度冲突
PROFIenergy 特定错误
FE01h Service_Request_ID 无效
FE02h Request_Reference 无效
FE03h CMD_MODIFIER 无效
FE04h 用于写入 PROFIenergy 数据记录的帧中命令数据结构 (Data_Structure_Identifier_RQ) 信息无

FE05h 用于读取 PROFIenergy 数据记录的帧中命令数据结构 (Data_Structure_Identifier_RS) 信息无

FE06h 节能模式 (PE_Mode_ID) 不受支持
FE07h 响应超出最大传送时长
FE08h 命令数无效
FE09h 块类型无效(请参见帧头)
FE0Ah 块长度无效(请参见帧头)
FE0Bh 块版本无效(请参见帧头)
FE50h 节能模式 (PE_Mode_ID) 不适用
FE51h PAUSE_TIME 值不受支持
FE52h PE_Mode_ID 不受支持

有关 PROFIenergy 特定错误参数的详细信息,请参见响应数据 (页 207)部分。

参见

PNIO_RW_REC的条件代码 (页 185)

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 199
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

3.3.3 PE_CMD_CP

3.3.3.1 含义和调用 - PE_CMD_CP

意义及工作原理
PE_CMD_CP 可代替 PE_START_END_CP 使用。

PE_CMD_CP 用于 IO 控制器,在指定的 PROFIenergy 设备上发起或结束节能暂停。


PE_CMD_CP 还可从 IO 设备读出详细信息和能源测量值。

该程序块最适用于 IO 设备只与现场设备连接、不需要从 IO 设备读出能源数据的 IO 控制


器。

有关 PE_CMD_CP 的写/读作业流程图,请参见含义和调用 - PE_START_END_CP


(页 195)部分。

可通过程序块传送至 IO 设备的各条命令分配有定义的“Service_Request_ID”。 在 CMD


参数中分配 Service_Request_ID 01...05 和 16。

CMD_MODIFIER 参数更详细地指定 04 (Query_Modes) 和 16 (Query_Measurement) 两


个命令。

CMD_PARA 参数使用 Any 指针将特定参数的值分配给特定命令。 CMD_PARA_LEN 参


数指定此参数的长度。

RESPONSE_DATA 参数指向 IO 设备的响应数据的数据区。

FBD 表达式调用接口

3(B&0'B&3

:25' &3/$''5 9$/,' %22/

%22/ 5(4 %86< %22/

:25' ,' (5525 %22/

%<7( &0' 67$786 :25'

%<7( &0'B02',),(5

$1< &0'B3$5$

,17 &0'B3$5$B/(1

$1< 5(63216(B'$7$ $1<

用于 SIMATIC NET S7 CP 的程序块


200 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

STL 表达式的调用接口

STL 解释
call fb 86 ( //调用程序块 PE_CMD_CP;
CPLADDR :=W#16#0100, //硬件组态中的模块地址;
REQ :=M220.0, //块执行沿信号地址;
ID :=W#16#110, //目标设备的地址;
CMD :=MB222, //PROFIenergy 命令的 Service_Request_ID;
CMD_MODIFIER :=MB224, //PROFIenergy 命令的修饰符;
CMD_PARA :=MD240, //修饰符参数的指针;
CMD_PARA_LEN :=MW226, //CMD_PARA 参数的长度;
VALID :=M220.2 //VALID 返回参数的地址;
BUSY :=M220.1, //BUSY 返回参数的地址;
ERROR :=M220.3, //ERROR 返回参数的地址;
STATUS :=MW228, //STATUS 返回参数的地址;
RESPONSE_DATA //IO 设备响应数据的地址
:=P#DB400.DBX0.0 BYTE 244 );

参见

PE_CMD_CP 形式参数的说明 (页 201)

3.3.3.2 PE_CMD_CP 形式参数的说明

PE_CMD_CP 形式参数的说明

参数 声明 数据类型 取值范围 说明

CPLADDR INPUT WORD I、Q、M、D 和 L 常量 CP 的模块起始地址


REQ INPUT BOOL 在上升沿开始传送 PROFIenergy 命
令。
ID INPUT WORD 目标 PROFIenergy 设备的逻辑地址
CMD INPUT BYTE  01: Start_Pause PROFIenergy 命令的
 02: End_Pause Service_Request_ID。

 03: Query_Modes 可在此表下方找到命令含义。

 04: PEM_Status
 05: PE_Identity
 16:
Query_Measurement

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 201
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

参数 声明 数据类型 取值范围 说明

CMD_ INPUT BYTE 对于“Start_Pause”: 00 PROFIenergy 命令的修饰符,含义:


MODIFIER 对于“End_Pause”: 00  “Query_Modes”命令
对于“Query_Modes”: – 修饰符 01: 读取所有支持的节
 01: List_Energy_Saving 能模式 (PE_Mode_ID)。
_Modes – 修饰符 02 读取所选
 02: Get_Mode PE_Mode_ID 的参数。
对于“PEM_Status”: 00
 “Query_Measurement”命令
对于“PE_Identity”: 00
– 修饰符 01: 读取组态的
对于“Query_Measurement”:
Measurement_ID。
 01:
– 修饰符 02: 读取所选
Get_Measurement_List
Measurement_ID 的测量值。
 02:
Get_Measurement_Valu 有关参数信息,请参见特定命令部分
es 中的响应数据 (页 207)。
修饰符 00 表示“无选项”。

用于 SIMATIC NET S7 CP 的程序块


202 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

参数 声明 数据类型 取值范围 说明

CMD_PAR INPUT ANY 命令参数的 Any 指针


A  对于命令 01 Start_Pause:
“Pause_Time”
 对于命令 02 End_Pause: 不相关
 对于命令 03 Query_Modes:
– 对于修饰符 01: 不相关

– 对于修饰符 02 Get_Mode:
“PE_Mode_ID”
 对于命令 04 PEM_Status: 不相关
 对于命令 05 PE_Identity: 不相关
 对于命令 16
Query_Measurement:
– 对于修饰符 01: 不相关

– 对于修饰符 02
Get_Measurement_Values:
带有参数“Count”和
“Measurement_ID”的数据结构的
ANY 指针
有关参数信息,请参见特定命令部分
中的响应数据 (页 207)。
输入待写数据记录的整个数据区
(Service_Data_Request)。最大长度:
234 个字节
CMD_PAR INPUT INT CMD_PARA 中参数的实际长度。 最
A_LEN 大长度:234 个字节
RESPONS INOUT ANY IO 设备响应数据的地址指针(包含块
E 标头的完整帧)
_DATA 注意:
如果所选区域不够大,则只保存组态
的字节数。
VALID OUTPUT BOOL 0: - 程序块的状态参数指示是否无错完成
1: 成功完成执行 该作业。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 203
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

参数 声明 数据类型 取值范围 说明

BUSY OUTPUT BOOL 0: 执行尚未启动、已完成或 程序块处理状态的条件代码


中止
1: 执行处于活动状态
ERROR OUTPUT BOOL 0: - 错误代码
1: 错误 对于与 STATUS 参数一起使用时的含
义,请参见PE_CMD_CP 的条件代码
(页 206)。
STATUS OUTPUT WORD 状态代码
对于与 ERROR 参数一起使用时的含
义,请参见PE_CMD_CP 的条件代码
(页 206)。

Service_Request_ID 和 PROFIenergy 命令的含义

Service_Request_ID 为 01...05 和 16 的 PROFIenergy 命令具有如下含义:

● 01 = Start_Pause

用于开始节能暂停的命令。

IO 设备选择组态的节能模式。 节能模式反馈给响应数据中的控制器。

● 02 = End_Pause

用于结束节能暂停的命令

● 03 = Query_Modes

通过 IO 设备上所有相应的时间和能源信息查询组态的节能模式。

使用 CMD_MODIFIER 参数详细查看查询的信息:

– List_Energy_Saving_Modes

读取 IO 设备所有受支持的 PROFIenergy 模式。

– Get_Mode

读取所选 PROFIenergy 模式的数据。

● 04 = PEM_Status

查询现场设备或单元组实际采用的节能模式。

用于 SIMATIC NET S7 CP 的程序块


204 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

● 05 = PE_Identity

查询 IO 设备支持的 PROFIenergy 服务。

● 16 = Query_Measurement

查询 IO 设备的能源数据。

使用 CMD_MODIFIER 参数详细查看查询的信息:

– Get_Measurement_List

读取设备上所有组态的 Measurement_ID。

– Get_Measurement_Values

读取所选 Measurement_ID 的能源测量值。

用于不同设备类别的命令

PROFIenergy 理念包含设备可分为三种类别,分别由 IO 控制器使用不同的命令进行处


理:

● IO 模块、执行器、电机启动器

支持的命令:

– Start_Pause、End_Pause

– Query_Modes、PEM_Status、PE_Identify

● 电气变量测量设备

支持的命令:

– Query_Measurement

● 变频器

支持的命令:

– Start_Pause、End_Pause

– Query_Modes、PEM_Status、PE_Identify

– Query_Measurement

还可查询变频器采集的电气变量数据。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 205
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

3.3.3.3 PE_CMD_CP 的条件代码

PE_CMD_CP 的条件代码

PE_CMD_CP 基于程序块 PNIO_RW_REC,返回 PNIO_RW_REC 的所有条件代码,请


参见块 PNIO_RW_REC 的条件代码。

输出以下其它 PROFIenergy 特定条件代码。 STATUS 的错误代码仅在与 ERROR = 1 一


起使用时有效。

表格 3- 5 PE_CMD_CP 的特定条件代码

STATUS 含义

块特定错误
8081h CMD_PARAM 与 CMD_PARAM_LEN 长度冲突
PROFIenergy 特定错误
FE01h Service_Request_ID 无效
FE02h Request_Reference 无效
FE03h CMD_MODIFIER 无效
FE04h 要写入的 PROFIenergy 数据记录的帧中命令数据结构 (Data_Structure_Identifier_RQ) 信息无

FE05h 要读取的 PROFIenergy 数据记录的帧中命令数据结构 (Data_Structure_Identifier_RS) 信息无

FE06h 节能模式 (PE_Mode_ID) 不受支持
FE07h 响应超出最大传送时长
FE08h 命令数无效
FE09h 块类型无效(请参见帧头)
FE0Ah 块长度无效(请参见帧头)
FE0Bh 块版本无效(请参见帧头)
FE50h 节能模式 (PE_Mode_ID) 不适用
FE51h PAUSE_TIME 值不受支持
FE52h PE_Mode_ID 不受支持

有关 PROFIenergy 特定错误参数的详细信息,请参见响应数据 (页 207)部分。

用于 SIMATIC NET S7 CP 的程序块


206 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

参见

PNIO_RW_REC的条件代码 (页 185)

3.3.4 响应数据

响应数据的结构

下表显示 PE_START_END_CP 和 PE_CMD_CP 的响应数据数据记录的结构 (80A0h)。

下表显示根据 PROFIenergy 规范返回的响应数据数据记录的结构概览。 各条


PROFIenergy 命令的“服务数据响应”区的组成如下所述。

表格 3- 6 响应数据的结构

块定义 属性 值 数据类型 说明

块标头 BlockType 0801h Unsigned16


BlockLength Unsigned16 帧长度(无“BlockType”和
“BlockLength”字段)
BlockVersionHigh 01h Unsigned8
BlockVersionLow 00h Unsigned8
响应标头 Service_Request_ID 01h...FFh Unsigned8 01h: Start_Pause
02h: End_Pause
03h: Query_Modes
04h: PEM_Status
05h: PE_Identify
06h...09h: - 预留 -
10h:
Query_Measurement
11h...CF: - 预留 -
D0h...FFh: 供应商特定
Request_Reference 01h...FFh Unsigned8 查询标识号(在 IO 设备的
响应中存在镜像)

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 207
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

块定义 属性 值 数据类型 说明
服务标头响应 状态 01h...FFh Unsigned8 00h: - 预留 -
01h: 已完成
02h: 已完成,但有错误
03h: 数据不完整
04h...CFh: - 预留 -
D0h...FFh: 取决于
Service_Request_ID
Data_Structure_Identifier_ 01h...FFh Unsigned8 00h: - 预留 -
RS 01h...FFh: 数据结构取决
于 Service_Request_ID
FFh: 有错
服务数据响应 IO 设备的响应数据
取决于特定的
PROFIenergy 命令(如下
所述)

“服务数据请求”和“服务数据响应”的含义
以下各部分针对每条 PROFIenergy 命令介绍 IO 控制器对 IO 设备的查询(服务数据请
求)的参数值以及 IO 设备的响应数据结构(服务数据响应)。

● 服务数据请求

IO 控制器查询的参数值

● 服务数据响应

IO 设备的响应数据结构

用于 SIMATIC NET S7 CP 的程序块


208 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

PROFIenergy 命令“Start_Pause”

● 服务数据请求

– CMD = 01

– CMD_MODIFIER = 00

– CMD_PARA_LEN = 04

– CMD_PARA =“Pause_Time”值的 Any 指针(数据类型“TIME”)

IEC 时间以 1 ms 为步长,有符号整数

值: T#-24D_20H_31M_23S_648MS 到 T#24D_20H_31M_23S_647MS

● 服务数据响应

参数 值 数据类型

PE_Mode_ID * 01h...FFh Unsigned8


- 预留 - 00h Unsigned8

* 节能模式的标识号

PROFIenergy 命令“End_Pause”

● 服务数据请求

– CMD = 02

– CMD_MODIFIER = 00

– CMD_PARA_LEN = 00

– CMD_PARA = 不相关

● 服务数据响应

参数 值 数据类型

Time_to_operate * Unsigned32

* PROFIenergy 设备切换到“准备运行”状态的预计时间

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 209
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

PROFIenergy 命令“Query_Modes”– List_Energy_Saving_Modes

● 服务数据请求

– CMD = 03

– CMD_MODIFIER = 01

– CMD_PARA_LEN = 00

– CMD_PARA = 不相关

● 服务数据响应

参数 值 数据类型

Number_of_PE_Mode_IDs * 01h Unsigned8


PE_Mode_IDs Number_of_PE_Mode_ID 的
Unsigned8 数组(唯一模式 ID)

* 节能模式数目

PROFIenergy 命令“Query_Modes”– Get_Mode

● 服务数据请求

– CMD = 03

– CMD_MODIFIER = 02

– CMD_PARA_LEN = 01

– CMD_PARA = PE_MODE_ID 值的 Any 指针 (unsigned8)

● 服务数据响应

参数 值 数据类型

PE_Mode_ID 01h...FFh Unsigned8


PE_Mode_Attributes * 00h...01h Unsigned8
Time_min_Pause Unsigned32
Time_to_Pause Unsigned32
Time_to_operate Unsigned32
Time_min_length_of_stay Unsigned32
Time_max_length_of_stay Unsigned32

用于 SIMATIC NET S7 CP 的程序块


210 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

参数 值 数据类型

Mode_Power_Consumption Float32
Energy_Consumption_to_paus Float32
e
Energy_Consumption_to_opera Float32
te

* 位 0 编码:
0 = 仅静态时间和能源测量值可用。
1 = 动态时间和能源测量值可用。
位 1...7: 预留

PROFIenergy 命令“PEM_Status”

● 服务数据请求

– CMD = 04

– CMD_MODIFIER = 00

– CMD_PARA_LEN = 00

– CMD_PARA = 不相关

● 服务数据响应

参数 值 数据类型

PE_Mode_ID_Source * 00h Unsigned8


01h...FEh
FFh
PE_Mode_ID_Destination * 00h Unsigned8
01h...FEh
FFh
Time_to_operate Unsigned32
Remaining_time_to_destination Unsigned32
Mode_Power_Consumption Float32

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 211
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

参数 值 数据类型

Energy_Consumption_to_Destina Float32
tion
Energy_Consumption_to_operate Float32

*“PE_Mode_ID_Source”和“PE_Mode_ID_Destination”的可能值:
00h: PE_Power_off
01h...FEh: 自由组态
FFh: PE_Ready_to_operate

PROFIenergy 命令“PE_Identify”

● 服务数据请求

– CMD = 05

– CMD_MODIFIER = 00

– CMD_PARA_LEN = 00

– CMD_PARA = 不相关

● 服务数据响应

参数 值 数据类型

Count * 6 Unsigned8
Start_Pause ** 01h Unsigned8
End_Pause 02h Unsigned8
Query_Modes 03h Unsigned8
PEM_Status 04h Unsigned8
PE_Identify 05h Unsigned8
Query_Measurement *** 10h Unsigned8

* 支持的 PROFIenergy 命令数目


** 支持的第一条 PROFIenergy 命令的 Service_Request_ID
*** 支持的最后一条 PROFIenergy 命令的 Service_Request_ID

用于 SIMATIC NET S7 CP 的程序块


212 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

PROFIenergy 命令“Query_Measurement”– Get_Measurement_List

● 服务数据请求

– CMD = 16

– CMD_MODIFIER = 01

– CMD_PARA_LEN = 00

– CMD_PARA = 不相关

● 服务数据响应

参数 值 数据类型

Count * Unsigned8
- 预留 - Unsigned8
Measurement_ID ** Unsigned16
Accuracy_Domain 1 Unsigned8
Accuracy_Class 2 Unsigned8
Range 3 Float32

Measurement_ID *** Unsigned16
Accuracy_Domain 1 Unsigned8
Accuracy_Class 2 Unsigned8
Range 3 Float32

* Measurement_ID 数
** 支持的第一个 Measurement_ID
*** 支持的最后一个 Measurement_ID
1 精度域(范围 1...4):
0 = 预留
1 = 测量范围的百分比
2 = 当前测量值的百分比
3 = 符合 IEC 61557-12 的精度
4 = 符合 EN 50470-3 第 8 部分的精度

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 213
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

2 精度级别(范围 1...15):
0 = 预留
1 (0.01%) ... 15 (>20%)
3 如果 Accuracy_Domain = 1 则为测量范围;否则为未定义

PROFIenergy 命令“Query_Measurement”– Get_Measurement_Values

● 服务数据请求

– CMD = 16

– CMD_MODIFIER = 02

– CMD_PARA_LEN = 数据结构长度(字节)

– CMD_PARA = 具有以下结构的数据结构 Any 指针:

参数 值 数据类型

Count * Unsigned8
- 预留 - Unsigned8
Measurement_ID ** Unsigned16

Measurement_ID *** Unsigned16

* Measurement_ID 数
** 查询的第一个测量值
*** 查询的最后一个测量值

● 服务数据响应

参数 值 数据类型

Count * Unsigned8
- 预留 - Unsigned8
Length_of_Structure 0002h...FFFFh Unsigned16
Measurement_Data_Structure 1 = 简单值 Unsigned8
_ID
Measurement_ID ** 00h...FFh Unsigned16

用于 SIMATIC NET S7 CP 的程序块


214 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

参数 值 数据类型

Status_of_Measurement_Valu 1 = 有效 Unsigned8
e 2 = 不可用
3 = 有时不可用
Transmission_Data_Type Float32
End_of_demand Unsigned32 或 Unsigned16
Length_of_Structure Unsigned16
Measurement_Data_Structure Unsigned8
_ID
Measurement_ID *** Unsigned16
Status_of_Measurement_Valu Unsigned8
e
Transmission_Data_Type Float32
End_of_demand Unsigned32 或 Unsigned16

* Measurement_ID 数
** 查询的第一个测量值
*** 查询的最后一个测量值

3.3.5 PE_I_DEV_CP

3.3.5.1 含义和调用 - PE_I_DEV_CP

意义及工作原理

程序块 PE_I_DEV_CP 用在 PROFIenergy 设备上,在其中处理 IO 控制器的


PROFIenergy 命令。 IO 控制器发送的 PROFIenergy 数据记录 (80A0h) 由 CP 固件转发
至 PE_I_DEV_CP。 PE_I_DEV_CP 使用 PROFIenergy 数据记录 (80A0h) 使 IO 设备的
PROFIenergy 数据以响应形式可用于 IO 控制器。

PE_I_DEV_CP 的响应数据由补充功能 FC 0 到 FC 8 生成,请参见PE_I_DEV_CP 的补充


程序块 (页 219)部分。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 215
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

FBD 表达式调用接口

3(B,B'(9B&3

:25' &3/$''5 &0' ,17

%22/ 5(6(7 &0'B02',),(5 ,17

%22/ 9$/,' &0'B3$5$ $1<

,1'(; ,17

1(: %22/

(5525 %22/

67$786 :25'

$1< 5(63216(B'$7$ $1<

STL 表达式的调用接口

STL 解释
call fb 87 ( //调用程序块 PE_I_DEV_CP;
CPLADDR :=W#16#0100, //硬件组态中的模块地址;
RESET :=M1.0, //用于复位块的信号;
VALID :=M1.3, //用于将数据传送到控制器的信号;
CMD :=MW222, //PROFIenergy 命令的 Service_Request_ID;
CMD_MODIFIER :=MW224, //PROFIenergy 命令的修饰符;
CMD_PARA :=MD230, //修饰符参数的指针;
INDEX :=MW228, //PROFIenergy 数据记录数;
NEW :=M1.1, //块的处理状态;
ERROR :=M1.2, //ERROR 返回参数的地址;
STATUS :=MW2, //STATUS 返回参数的地址;
RESPONSE_DATA //IO 设备响应数据的地址
:=P#DB400.DBX0.0 BYTE 244 );

3.3.5.2 PE_I_DEV_CP 形式参数的说明

PE_I_DEV_CP 形式参数的说明

参数 声明 数据类型 取值范围 说明

CPLADDR INPUT WORD I、Q、M、D 和 L 常量 CP 的模块起始地址


RESET INPUT BOOL 复位程序块的处理。
NEW 设置为 0。

用于 SIMATIC NET S7 CP 的程序块


216 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

参数 声明 数据类型 取值范围 说明

VALID INPUT BOOL 如果将响应数据写入 IO 设备的相关存


储区,则 VALID = 1 必须由用户程序
设置。 此后,程序块使数据可用于 IO
控制器。
NEW 设置为 0。
CMD OUTPUT INT  01: Start_Pause PROFIenergy 命令的服务 ID
 02: End_Pause
 03: Query_Modes
 04: PEM_Status
 05: PE_Identity
 16:
Query_Measurement
CMD_ OUTPUT INT  Start_Pause 的修饰符: PROFIenergy 命令的修饰符
MODIFIER 00 命令修饰符的含义:
 End_Pause 的修饰符:  “Query_Modes”命令,
00 修饰符:
 Query_Modes, – 01
修饰符:
(List_Energy_Saving_Modes):
– 01 (List_Energy_ 读取所有支持的 PROFIenergy
Saving_Modes) 模式
– 02 (Get_Mode) – 02 (Get_Mode):
 PEM_Status 的修饰符: 读取所选 PROFIenergy 模式的
00 数据
 PE_Identity 的修饰符:  “Query_Measurement”命令,
00 修饰符:
 Query_Measurement, – 01 (Get_Measurement_List):
修饰符:
读取所有组态的
– 01 Measurement_ID。
(Get_Measurement
– 02 (Get_Measurement_Values):
_List)
读取所选 Measurement_ID 的测
– 02 量值。
(Get_Measurement
_Values)

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 217
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

参数 声明 数据类型 取值范围 说明

CMD_PAR OUTPUT ANY 以下命令修饰符参数的 Any 指针(与


A CMD_MODIFIER 参数进行比较):
 对于“Get_Mode”:
PE_Mode_ID (节能模式的 ID)长
度=1
 对于“Get_Measurement_Values”:
Measurement_IDs
长度测量值 = 最多 236 个字节
(完整的控制器命令帧,无标头)
INDEX OUTPUT INT PROFIenergy 数据记录数 (80A0h)
NEW OUTPUT BOOL 0: 执行尚未启动、已完成或 程序块处理状态的条件代码
中止
1: 执行处于活动状态
ERROR OUTPUT BOOL 0: - 错误代码
1: 错误 对于与 STATUS 参数一起使用时的含
义,请参见PE_I_DEV_CP 的条件代码
(页 219)。
STATUS OUTPUT WORD 状态代码
对于与 ERROR 参数一起使用时的含
义,请参见PE_I_DEV_CP 的条件代码
(页 219)。
RESPONS INOUT ANY 请参见程序块的“响应数据” IO 设备响应的数据区指针(完整响应
E 帧,包括标头)。
_DATA 此数据区必须与补充程序块 FC 0 -
FC 8 的数据区相匹配(参数
“DATA_ERRORRSP”)。
建议大小: 最少 244 个字节。 如果数
据区过小,则只能传送组态的字节数
据。

用于 SIMATIC NET S7 CP 的程序块


218 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

3.3.5.3 PE_I_DEV_CP 的条件代码

PE_I_DEV_CP 的条件代码

PE_I_DEV_CP 基于程序块 PNIO_RW_REC,返回 PNIO_RW_REC 的所有条件代码,请


参见块 PNIO_RW_REC 的条件代码。

参见

PNIO_RW_REC的条件代码 (页 185)

3.3.6 PE_I_DEV_CP 的补充程序块

3.3.6.1 FC 概述

功能
补充程序块 FC 0 到 FC 8 支持由 PE_I_DEV_CP 提供给控制器的响应数据的准备过程:

● 每条 PROFIenergy 命令的响应数据都有一个单独的程序块 (FC 1 到 FC 8)。

● FC 0 生成所有 PROFIenergy 命令的公共否定响应。

在用户程序中调用这些 FC。 在 STEP 7 V5.5 中,它们位于“PROFIenergy”文件夹下的标


准库。

这些 FC 拥有一些公共参数及单独参数。 FC 的一些公共参数与 PE_I_DEV_CP 参数互


连。 通过 FC 的一些单独输入参数,响应数据以普通用户语言形式输入或存储于 IO 设备
的存储区。

FC 概述

下列补充程序块可用:

表格 3- 7 补充 FC 概述

编号 名称

FC 0 PE_ERROR_RSP
FC 1 PE_START_RSP

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 219
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

编号 名称

FC 2 PE_END_RSP
FC 3 PE_LIST_MODES_RSP
FC 4 PE_GET_MODE_RSP
FC 5 PE_PEM_STATUS_RSP
FC 6 PE_IDENTIFY_RSP
FC 7 PE_MEASUREMENT_LIST_RSP
FC 8 PE_MEASUREMENT_VALUE_RSP

参见

FC 的单独参数 (页 222)

3.3.6.2 FC 与 PE_I_DEV_CP 的互连

FC 与程序块 PE_I_DEV_CP 的互连

䬴⾸⢀
3(B,B'(9B&3 )&)&
&3/$''5 ,1
5(6(7 ,1 ). #-$䎢ⳃ䞭⓫㚙
䙑㍠

䙑㍠
&0'B3$5$ 287

,1'(; 287 287 (5525

(5525 287 287 67$786

67$786 287 ,1 $&7,9$7( 䙑㍠

,1 9$/,' 9$/,' 287

,1287 5(63216(B'$7$ '$7$B(5525563 ,1287

287 &0' &0' ,1

䙑㍠
287 &0'B02',),(5 &0'B02',),(5 ,1

䙑㍠
287 1(: 1(: ,1


䙑㍠䞭峭⁙▵◶⾽

䙑㍠悼⊎

图 3-2 FC 与 PE_I_DEV_CP 的互连

用于 SIMATIC NET S7 CP 的程序块


220 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

说明
程序块互连绝对有必要
PE_I_DEV_CP 必须与 FC 0...FC 8 互连,互连位置必须在蓝色背景所示参数(分配给红
色箭头所示 FC 的相应参数)。

3.3.6.3 FC 的公共参数

补充程序块 FC 0 - FC 8 的公共参数

参数 声明 数据类型 取值范围 说明

输入参数
ACTIVATE INPUT BOOL 指示要将输入参数复制到
“DATA_ERRORRSP”数据区的块正处
于上升沿。 然后由块复位。
必须在 PE_I_DEV_NEW 检测到正沿
后的 10 秒钟内由用户设置。
PE_I_DEV_NEW INPUT BOOL 必须与 PE_I_DEV_CP 的 NEW 输出
参数互连。
只有在置 1 时才处理该块。
CMD INPUT INT 必须与 PE_I_DEV_CP 的 CMD 输出
参数互连。
CMD_MODIFIER INPUT INT 必须与 PE_I_DEV_CP 的
CMD_MODIFIER 输出参数互连。
输出参数
DATA_ERRORRSP OUTPUT ANY 用于存储响应数据的数据区的指针
(完整响应帧,包括标头)。
必须与 PE_I_DEV_CP 的
RESPONSE_DATA 输出参数互连。
建议大小: 最少 244 个字节。
VALID OUTPUT BOOL 0: - 由块设置。
1: 无错误 必须与 PE_I_DEV_CP 的 VALID 输入
参数互连。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 221
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

参数 声明 数据类型 取值范围 说明

ERROR OUTPUT BOOL 0: 无错误 错误代码


1: 错误
STATUS OUTPUT WORD 0: 无错误 状态代码
80B1h: ANY 信息错误(例如区域错
误)

3.3.6.4 FC 的单独参数

FC 0 到 FC 8 的单独参数
下文介绍 FC 的单独参数。

PE_ERROR_RSP

如果在通常情况下或临时情况下不支持所需 PROFIenergy 命令,则生成一个否定响应。


否定响应与请求命令无关。

表格 3- 8 FC 0 PE_ERROR_RSP 的单独参数

参数 声明 数据类型 取值范围 说明

ERROR_CODE INPUT BYTE 错误编号

PE_START_RSP

发起节能暂停。 生成对 "Start_Pause" 命令的响应。 返回设备采用的节能模式。

表格 3- 9 FC 1 PE_START_RSP 的单独参数

参数 声明 数据类型 取值范围 说明

PE_Mode_ID INPUT BYTE 设备或单元组采用的节能模式的 ID。

返回消息,其中带有现场设备或单元组已采用的 PE_Mode_ID。

用于 SIMATIC NET S7 CP 的程序块


222 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

PE_END_RSP

生成对 "End_Pause". 命令的响应

表格 3- 10 FC 2 PE_END_RSP 的单独参数

参数 声明 数据类型 取值范围 说明

Time_to_Operate INPUT DWORD 从“准备运行”后的当前节能模式开始更改


所需的时间。

PE_LIST_MODES_RSP

生成对“Query_Modes”> 修饰符“List_Modes”命令的响应(支持的节能模式列表)。

必须在用户程序中指定节能模式的 ID。

表格 3- 11 FC 3 PE_LIST_MODES_RSP 的单独参数

参数 声明 数据类型 取值范围 说明

Number_of_PE_Mode_I INPUT BYTE 支持的节能模式数目


Ds
PE_Mode_ID INPUT ANY  00h 节能模式存储区的指针
 01h...FE 用户需要在此存储节能模式的 ID。 节能
h 模式 ID 以 Unsigned8 格式组态。允许
 FFh 的范围: 1 到 254 个字节。

如果设备或组需要对不同的暂停长度做出不同的反应,则可设置不同的节能模式
(PE_Mode) 来实现此目的。 将不同的 PE_Mode_ID 分配给不同的节能模式。

“PE_Mode_ID”的可能值:

● 00h: PE_Power_off

● 01h...FEh: 自由组态或供应商特定

● FFh: PE_Ready_to_operate

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 223
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

PE_GET_MODE_RSP

生成对 "Query_Modes" > Modifier "Get_Mode". 命令的响应

表格 3- 12 FC 4 PE_GET_MODE_RSP 的单独参数

参数 声明 数据类型 取值范围 说明

PE_Mode_ID INPUT BYTE 当前使用的节能模式 ID


Time_Min_Pause * INPUT Unsigned3 此 PE 节能模式的最短暂停持续时间。
2 它是三个参数的和:
 Time_to_Pause
 Time_to_operate
 Time_min_length_of_stay
Time_to_Pause * INPUT Unsigned3 从 START 沿到实现请求的节能模式所经
2 历的时间
Time_to_operate * INPUT Unsigned3 打开后、PE_ready_to_operate 前所经历
2 的最长时间
Time_to_operate 可直接用于相关计算。
值可以是静态 MAX 值,也可由 PE 设备
动态计算。
Time_min_length_of_st INPUT Unsigned3 PE 设备必须保持在此 PE_Mode 下的最
ay * 2 短时间。
Time_max_length_of_st INPUT Unsigned3 PE 设备可保持在此 PE_Mode 下的最长
ay * 2 时间。
Mode_Power INPUT Float32 当前 PE_Mode 的能耗 [kW]
_Consumption **
Energy_Consumption INPUT Float32 从 PE_ready_to_operate 到当前
_to_pause ** PE_Mode 的能耗 [kWh]
Energy_Consumption INPUT Float32 从当前 PE_Mode 到
_to_operate ** PE_ready_to_operate 的能耗 [kWh]

* PROFIenergy 配置文件不指定无效的时间格式。
如果时间不受限制,则可指定最大值 FFFFFFFFh。
如果时间为零,则可使用 00h。
** 如果未定义能耗值,则可指定 0.0 (Float32)。

用于 SIMATIC NET S7 CP 的程序块


224 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

PE_PEM_STATUS_RSP

生成对 "PEM_STATUS". 命令的响应

表格 3- 13 FC 5 PE_PEM_STATUS_RSP 的单独参数

参数 声明 数据类型 取值范围 说明

PE_Mode_ID_Source INPUT BYTE  00h 实际采用的节能模式 ID


 01h...FE
h

 FFh
PE_Mode_ID_Destinati INPUT BYTE  00h 由控制器设置的节能模式 ID
on  01h...FE
h

 FFh
Time_to_operate * INPUT Unsigned3 打开后、PE_ready_to_operate 前所经历
2 的最长时间
Time_to_operate 可直接用于相关计算。
值可以是静态 MAX 值,也可由 PE 设备
动态计算。
Remaining_time_to INPUT Unsigned3 可选: 进入请求的 PE_Mode 之前的剩
_destination * 2 余时间。 动态值或静态 MAX 值
Mode_Power INPUT Float32 当前 PE_Mode 的能耗 [kW]
_Consumption **
Energy_Consumption INPUT Float32 进入请求的 PE_Mode 之前的能耗 [kWh]
_to_Destination **
Energy_Consumption INPUT Float32 从当前 PE_Mode 到
_to_operate ** PE_ready_to_operate 的能耗 [kWh]

* PROFIenergy 配置文件不指定无效的时间格式。
如果时间不受限制,则可指定最大值 FFFFFFFFh。
如果时间为零,则可使用 00h。
** 如果未定义能耗值,则可指定 0.0 (Float32)。

“PE_Mode_ID_Source”和“PE_Mode_ID_Destination”的可能值:

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 225
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

● 00h: PE_Power_off

● 01h...FEh: 自由组态或供应商特定

● FFh: PE_Ready_to_operate

PE_IDENTIFY_RSP

生成对 "PE_Identify". 命令的响应

用户需要指定哪些 PROFIenergy 命令受支持。

表格 3- 14 FC 6 PE_IDENTIFY_RSP 的单独参数

参数 声明 数据类型 取值范围 说明

Count INPUT BYTE 0...6 支持的 PROFIenergy 命令的含义


Start_Pause INPUT BOOL 0...1  1: 支持命令
 0: 不支持命令
End_Pause INPUT BOOL 0...1  1: 支持命令
 0: 不支持命令
Query_Modes INPUT BOOL 0...1  1: 支持命令
 0: 不支持命令
PEM_Status INPUT BOOL 0...1  1: 支持命令
 0: 不支持命令
PEM_Identify INPUT BOOL 0...1  1: 支持命令
 0: 不支持命令
Query_Measurement INPUT BOOL 0...1  1: 支持命令
 0: 不支持命令

用于 SIMATIC NET S7 CP 的程序块


226 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

PE_MEASUREMENT_LIST_RSP

生成对 "Query_Measurement" > Modifier "Get_Measurement_List". 命令的响应

表格 3- 15 FC 7 PE_MEASUREMENT_LIST_RSP 的单独参数

参数 声明 数据类型 取值范围 说明

Count INPUT BYTE 支持的测量值 ID 数 (Measurement_ID)


Measurement_List INPUT ANY 测量值 ID 受支持的数据区指针。
用户将测量值 ID 存储在此数据区。
每帧最多可传送 29 个测量值 ID。
有关数组结构的信息,请参见响应数据
(页 207) > "Query_Measurement" –
Get_Measurement_List部分。

PE_MEASUREMENT_VALUE_RSP

生成对 "Query_Measurement" > Modifier "Get_Measurement_Values". 命令的响应

表格 3- 16 FC 8 PE_MEASUREMENT_VALUE_RSP 的单独参数

参数 声明 数据类型 取值范围 说明

Count INPUT BYTE 支持的 Measurement_Values 数


Measurement_Values INPUT ANY 测量值的数据区指针
(Measurement_Values)。
用户将测量值存储在此数据区。
每帧最多可传送 116 个测量值。
有关数组结构的信息,请参见响应数据
(页 207) > "Query_Measurement" –
Get_Measurement_List部分。

3.3.7 DS3_WRITE_CP/PE_DS3_Write_ET200S_CP
程序块 DS3_WRITE_CP 的以下说明也适用于具有相同功能的 STEP 7 Professional 的
PE_DS3_Write_ET200S_CP。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 227
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

3.3.7.1 含义和调用 - DS3_WRITE_CP

意义及工作原理

DS3_WRITE_CP 在 CP 300 的 CPU 中用作 PROFIenergy 控制器,用于传送 ET 200S


电源模块的开关行为设置。 最多可传送 8 个插槽(这种情况下为电源模块)的开关行
为。

DS3_WRITE_CP 不是 PROFIenergy 程序块。

FBD 表达式调用接口

'6B:5,7(B&3

:25' &3/$''5 %86< %22/

%22/ (1$%/( '21( %22/

:25' ,' (5525 %22/

,17 6/27B12B 67$786 :25'

,17 )81&B



,17 6/27B12B

,17 )81&B

STL 表达式的调用接口

STL 解释
CALL FB 53, DB 53 ( //调用程序块 DS3_WRITE_CP;
CPLADDR := W#16#0110, //硬件组态中的模块地址;
ENABLE := M 1.1, //块执行的沿信号地址;
ID := W#16#86A, //IO 设备的标头插槽地址;
SLOT_NO_1 := W#16#1000, //电源模块 1 的逻辑地址;
FUNC_1 := M 2.1, //电源模块 1 的开关行为值的地址;
... //...
... //...
BUSY := M 1.2, //BUSY 返回参数的地址;
DONE := M 1.3, //DONE 返回参数的地址;
ERROR := M 1.4, //ERROR 返回参数的地址;
STATUS := MW 12 ); //STATUS 返回参数的地址

用于 SIMATIC NET S7 CP 的程序块


228 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

3.3.7.2 DS3_WRITE_CP 形式参数的说明

DS3_WRITE_CP 形式参数的说明

参数 声明 数据类型 取值范围 说明

CPLADDR INPUT WORD I、Q、M、D 和 L 常量 CP 的模块起始地址


ENABLE INPUT BOOL 在上升沿开始处理程序块。
ID INPUT WORD IO 设备标头插槽的逻辑地址
SLOT_NO INPUT INT 第一个电源模块的插槽号
_1
FUNC_1 INPUT INT 指定电源模块在开始或结束节能暂停
方面的开关行为
 0 (FALSE)
– PAUSE_START:
无影响(电源模块保持接通)
– PAUSE_STOP:
再次接通电源模块。
 1 (TRUE)
– PAUSE_START:
关闭电源模块。
– PAUSE_STOP:
再次接通电源模块。
... INPUT INT
... INPUT INT
SLOT_NO INPUT INT 第八个电源模块的插槽号
_8
FUNC_8 INPUT INT 请参见“FUNC_1”
BUSY OUTPUT BOOL 0: 执行尚未启动、已完成或 程序块处理状态的条件代码
中止
1: 执行处于活动状态
DONE OUTPUT BOOL 0: - 该参数指示是否无错完成该作业。
1: 数据记录已成功发送

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 229
用于 PROFINET IO (S7-300) 的程序块
3.3 PROFIenergy

参数 声明 数据类型 取值范围 说明

ERROR OUTPUT BOOL 0: - 错误代码


1: 错误
STATUS OUTPUT WORD 状态代码

有关 DONE、ERROR 和 STATUS 的含义,请参见DS3_WRITE_CP 的条件代码


(页 230)。

3.3.7.3 DS3_WRITE_CP 的条件代码

DS3_WRITE_CP 的条件代码

DS3_WRITE_CP 基于程序块 PNIO_RW_REC,返回 PNIO_RW_REC 的所有条件代码,


请参见块 PNIO_RW_REC 的条件代码。

参见
PNIO_RW_REC的条件代码 (页 185)

用于 SIMATIC NET S7 CP 的程序块


230 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET IO (S7-300) 的程序块
3.4 组态限制/程序块所需的资源 (PROFINET)

3.4 组态限制/程序块所需的资源 (PROFINET)

所需资源

说明
请注意各个块的版本信息。目前的块版本可能与此处显示的版本不同。其它版本块对资源
的要求可能不同。
有关当前块版本的信息,请参见以下条目 ID:
9836605 (http://support.automation.siemens.com/WW/view/de/9836605)

表格 3- 17 用于 S7400 的 FC/FB 的信息

名称 版本 FC/FB 编 装载存储器要 工作存储器要求 MC7 [字节] 本地数据 [字


号 求 [字节] [字节] 节]

PN_InOut 1.3 FB88 2678 2234 2198 48


PN_InOut_Fast 1.0 FB90 2906 2266 2230 48

表格 3- 18 用于 S7-300 的 FC/FB 的信息

名称 版本 FC/FB 编 装载存储器要 工作存储器要求 MC7 [字节] 本地数据 [字


号 求 [字节] [字节] 节]

PN_InOut 1.5 FB88 2470 2066 2030 54


PNIO_SEND 3.0 FC11 1420 1182 1146 46
PNIO_RECV 3.0 FC12 1270 1052 1016 46
PNIO_RW_REC 1.1 FB52 1636 1378 1342 62
PNIO_ALARM 1.1 FB54 1168 960 924 62
PE_START_END 1.0 FB85 3286 2808 2772 92
_CP
PE_CMD_CP 1.0 FB86 3750 3264 3228 358
PE_I_DEV_CP 1.0 FB87 3192 2902 2866 114
DS3_WRITE_CP 1.0 FB53 1716 1408 1372 84

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 231
用于 PROFINET IO (S7-300) 的程序块
3.4 组态限制/程序块所需的资源 (PROFINET)

用于 SIMATIC NET S7 CP 的程序块


232 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET CBA 的程序块 4
4.1 PN_InOut/PN_InOut_Fast - 含义和调用

意义及工作原理

功能块 FB88/FB90 的任务就是将数据从接口 DB 传送到 CP,以及将数据从 CP 传送到接


口 DB 中。 接口数据块本身就是到用户程序的接口。

周期性地调用 FB88/FB90。 在一个周期中,FB88/FB90 可以调用一次以上。

在其接口上,只需要给 FB88/FB90 提供 CP 的模块地址。

为了确保数据的一致性,只有在作业完成时(DONE=1 或 ERROR=1),才能修改要传送的
数据或开始读取已接收的数据。

一旦设置 DONE=1 或 ERROR=1,则传送完成或随着错误消息而终止。 现在可以重新估


计或设置数据。 数据只能在后续的调用中进行传送。

在用户程序中,确保在完成数据传送时,只有在所有输入数据已经读取且所有输出数据已
经写入到接口 DB 之后,才能再次调用 FB88/FB90。

在原则上允许调用时间驱动的 FB88 / FB90 块。 请参见本章后面关于该模式的注意事


项。

FB88 和 FB90 之间的差异

接口上功能块 FB90 和 FB88 的作用对于用户程序大部分相同。 用户可通过 S7-400 使用


具有特定 CP/CPU 类型的 FB90;请参考 CP 手册中的信息。

如果 FB90 适合所使用的 CP 类型,则建议用户使用。 因此,可实现比 FB88 更短的响应


时间。 然而,必须牢记与使用相关的限制。

有以下几点:

● 接口参数需完全相同;

● 对于 FB90,在 STATUS 参数中存在一些附加代码;

● 在出错时,FB88 和 FB90 的 STATUS 参数中出现不同代码;

● 接口数据块的组态限制存在差异(参见相关手册)。

说明
对于与接口数据块的处理有关的更详细信息,请参见 SIMATIC iMap 文档。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 233
用于 PROFINET CBA 的程序块
4.2 形式参数的解释 - PN_InOut / PN_InOut_Fast

说明
当重新装载用户程序块时,只有在将 CPU 初次切换到 STOP 状态时,才确保数据的
一致性。

如何提供 - 块库

FB88 和 FB90 随 SIMATIC iMap 提供。 S7-300 和 S7-400 的块类型不同。

安装 SIMATIC iMap 后,程序块位于 STEP 7 库“PROFINET System


Library/CP300/Blocks”或“PROFINET System Library/CP400/Blocks”。

调用接口

FBD 表达式调用接口

PN_InOut / PN_InOut_Fast

WORD LADDR DONE BOOL

ERROR BOOL

STATUS WORD

SLT 表达式中的调用实例

STL 解释
Call FB 88 , DB88 ( //调用背景数据块 88
LADDR := W#16#0120,
DONE := M 99.1,
ERROR := M 99.0,
STATUS := MW 104);

4.2 形式参数的解释 - PN_InOut / PN_InOut_Fast

形式参数的说明

下面的表格解释了 FB88 / FB90 的所有形式参数:

用于 SIMATIC NET S7 CP 的程序块


234 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET CBA 的程序块
4.3 PN_InOut 和 PN_InOut_Fast 块的条件代码

参数 声明 数据类型 说明

LADDR INPUT WORD 模块起始地址


当组态 CP 时,在组态表中显示模块的起始地址。 在此指定
该地址。
由于机架中只有一个 CP 支持 PROFINET CBA 操作,所以
不得更改此参数。
DONE OUTPUT BOOL 报告(确定)完成作业。
ERROR OUTPUT BOOL 该参数指示不能无错执行作业。
STATUS OUTPUT WORD 该参数提供关于作业执行的详细信息。 在作业执行期间可以
返回状态代码(DONE = 0 和 ERROR = 0)。

4.3 PN_InOut 和 PN_InOut_Fast 块的条件代码

评估状态代码

请记住,每次调用块时,都会更新状态代码 DONE、ERROR 和 STATUS。

下表显示了根据 DONE、ERROR 和 STATUS 形成的条件代码,其中这些参数必须由用


户程序进行计算。

表格 4- 1 用于 PN_InOut (FB88)和 PN_InOut_Fast (FB90)的代码

DONE ERROR STATUS 含义

1 0 0000H 作业已完成,且无错误。
0 0 0000H 当前没有处理作业;可以调用块。
0 0 8181H  激活作业。

 (仅限于 FB90): 到已寻址的模块的连接建立处于活动状态(参见 8090H
下的信息)。
0 1 8183H (仅适用于 S7-300)
服务尚未启动;尚不可能接受数据。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 235
用于 PROFINET CBA 的程序块
4.3 PN_InOut 和 PN_InOut_Fast 块的条件代码

DONE ERROR STATUS 含义

0 1 8184H  已损坏的背景数据块,通常是由于用户程序非法写入背景数据块而触发
的。

 (仅限于 FB90)
发送或接收作业损坏。
0 1 8085H (于 FB90)
接口数据块损坏。
0 1 8090H (仅对 S7-400)
参数分配错误
指定的模块地址不正确;该地址指向一个空插槽。
注意事项(仅对 FB90):
在下列情况下,在 STATUS 中显示数值 8181H (作业激活);实际上,没有
通讯:
 该地址指向一个包含其他模块类型的插槽。
 已寻址的模块组态用于 PROFINET CBA 操作。
0 1 80A1H (于 FB90)
可能的通信错误:
 站内部到已寻址模块的连接已终止;
 已超出 CPU 连接的组态限制;
 正在重新初始化接口。
0 1 80B0H (仅适用于 S7-300)
块错误: 数据记录号错误。
在下列动作后还会出现该状态:
 断电/上电后冷启动或暖启动
 CPU 的冷启动或暖启动
0 1 80B1H (仅适用于 S7-300)
块错误: 数据记录长度或偏移量错误。
0 1 80B3H (仅适用于 S7-300)
参数错误: 错误的 CP 地址。
0 1 80C1H (仅适用于 S7-300)
临时错误: 当前正在处理所指定的数据记录。

用于 SIMATIC NET S7 CP 的程序块


236 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET CBA 的程序块
4.3 PN_InOut 和 PN_InOut_Fast 块的条件代码

DONE ERROR STATUS 含义

0 1 80C2H (仅适用于 S7-300)


临时错误: 存在一个作业瓶颈;数据记录仍然无法读取。
0 1 80C3H (仅适用于 S7-300)
临时错误: 资源已占用(内存)。
0 1 80C4H (仅适用于 S7-300)
通讯错误: 临时发生,且在用户程序中重复执行通常可以纠正该故障。
0 1 80D0H (仅适用于 S7-300)
组态错误:
超出了输入和输出数据的最大块数目;接口 DB 太大。
0 1 80D1H (仅适用于 S7-300)
组态错误
可能的原因:
 已组态的组件接口与在程序(输出)中使用的接口不匹配。
 插入错误的模块;不支持 PROFIET 服务。
0 1 80D2H (仅适用于 S7-300)
组态错误
可能的原因:
 已组态的组件接口与在程序(输入)中所使用的接口不匹配。
 插入错误的模块;不支持 PROFIET 服务。
 参数错误: 错误的 CP 地址
0 1 8322H (于 FB90)
接口数据块损坏。
0 1 8332H (于 FB90)
接口数据块的编号过大。
0 1 833AH (于 FB90)
无法访问接口数据块(可能由于接口数据块已被删除)。
0 1 8623H (于 FB90)
接口数据块损坏。
0 1 863AH (于 FB90)
无法访问接口数据块(可能由于接口数据块已被删除)。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 237
用于 PROFINET CBA 的程序块
4.4 时间触发的 PN_InOut / PN_InOut_Fast 调用 - 关于应用的建议

为了查明使用了哪些 SFC 以及哪些 SFC 与错误评估有关,可在"调用"标签中显示此处所


描述的 FB 的属性对话框。

说明
对于包含 8FxxH (对于 S7-300)和 8xxxH (对于 S7-400)编码的条目,请注意参考手册
“STEP 7 标准和系统功能“中 STATUS 下的信息。 该章描述了 RET_VAL 输出参数错误评
估的详细信息。

CP 启动期间的状态代码

在完全重启动或重新启动 PROFINET CP 时(激活模块上的开关之后),将如下重新设置块


的输出参数:

● DONE=0

● ERROR=0

● STATUS = 8181H

4.4 时间触发的 PN_InOut / PN_InOut_Fast 调用 - 关于应用的建议

时间触发调用 - 关于应用的建议

如果应用要求以时间触发方式传送 CBA 数据,而不是执行周期性或事件触发处理,则建


议使用下列过程来调用 FB88/FB90 块。

如果使用时间触发的调用,则牢记在启动后,必须重复调用块,直到 DONE 标志置位为


止。 为允许在 CPU 和 CP 之间复制 CBA 数据,而不会出现太长的中断,后续调用必须
尽可能快,且与定时无关。

对于编程,请注意下列建议:

用于 SIMATIC NET S7 CP 的程序块


238 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFINET CBA 的程序块
4.4 时间触发的 PN_InOut / PN_InOut_Fast 调用 - 关于应用的建议

● 由一个定时器 OB 提供定时;定时器 OB 只能引起初次调用 PROFINET CBA 块 FB88


或 FB90,它不是通过直接调用块的方式调用,而是通过置位一个启动标志来调用。

调用时间 OB 的周期不应超过 30 s。

● 然后应始终在 OB1 中完成 PROFINET CBA 块 FB88 和 FB90 的调用;一旦定时期


OB 置位启动标志,OB1 立即启动调用。

● 在初次块调用后,在 OB1 中重复调用,直到置位 DONE 位为止(或直到出错为止);


然后必须复位启动标志。

结果:
由于将定时器 OB 与 OB1 中的实际块调用分离,可以在 CPU 和 CP 之间复制 CBA 用户
数据,而不会出现明显的中断。 根据应用要求,可以选择前几次调用之间的时间间隔。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 239
用于 PROFINET CBA 的程序块
4.4 时间触发的 PN_InOut / PN_InOut_Fast 调用 - 关于应用的建议

用于 SIMATIC NET S7 CP 的程序块


240 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块 5
5.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

5.1.1 使用概述

概述

下列程序块可用于 SEND/RECEIVE 接口,用于在组态的 FDL 连接上传送数据:

程序块 可用于 1) 含义
S7-300 S7-400

AG_SENd (FC5) x x 用于发送数据


AG_RECV (FC6) x x 用于接收数据
AG_LSENd (FC50) x 用于发送数据
AG_LRECV (FC60) x 用于接收数据

1)有关用于 S7-300 和 S7-400 的 FC 的注意事项


为了确保 PROFIBUS 和工业以太网在用户程序接口上的兼容性,对于 PROFIBUS 可以用
FC AG_LSEND 和 AG_LRECV 代替 AG_SEND 和 AG_RECV 进行使用。 在接口或它们
的功能方面没有区别。 尽管在工业以太网上,这些 FC 可以传送更长的数据记录,然而,
在 PROFIBUS 上,最多只能传送 240 个字节的数据。
只有当使用的 CP 类型支持块类型和块版本时才可以进行此操作。
对于 S7-300 的 S7-CP,只能使用 FC AG_SEND 和 AG_RECV;尽管在工业以太网上甚
至可以传送更长的数据记录
手册中包含了有关 S7-CP 与相应块(FC/FB)的兼容性的信息。 在文档和块历史中,可查找
到关于 FC/FB 的版本总览。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 241
用于 PROFIBUS 的程序块
5.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

应用

下图阐述了如何使用 FC AG_SEND/AG_LSEND 和 AG_RECV/AG_LRECV 在一个已组


态的 FDL 连接上进行双向数据传送。
对于特定的连接类型,应该在用户数据区中包括一个作业报头。

CPU PROFIBUS-CP PROFIBUS-CP CPU

67(3 67(3
䞷㓆䲚ㄞ 䞷㓆䲚ㄞ
抩扖352),%86
䤓)'/扭㘴
'3 '3
㟿㗽◉ 㟿㗽◉
AG_SEND ♠抐 㘴㟅 AG_RECV

AG_RECV 㘴㟅 ♠抐 AG_SEND

图 5-1 使用两个通信伙伴上的 AG_SEND 和 AG_RECV

无作业报头的应用

对于一个指定的 FDL 连接,由连接组态指定地址和作业参数。 用户程序只有在通过


AG_SEND/AG_LSEND 发送数据或通过 AG_RECV/AG_LRECV 接收数据时才提供 FDL
数据区中的用户数据。

最多可传送 240 字节的用户数据。 这适用于 AG_SEND 和 AG_LSEND 功能的


PROFIBUS。

使用作业报头进行工作

下列连接类型要求在 FDL (用户)数据区中有一个作业报头:

● 带自由第 2 层访问的未指定 FDL 连接

● 带有广播的 FDL 连接

● 带有多点传送的 FDL 连接

下图阐述了作业缓冲区的结构以及作业报头中参数的含义和位置。

用于 SIMATIC NET S7 CP 的程序块


242 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

䞷㓆㟿㗽◉
PB−Adresse LSAP Byte 0, 1
⇫₩冢⑁⣷ Service unbenutzt Byte 2, 3
Datenbyte 0 Datenbyte 1 Byte 4, 5
⇫₩㔴⯃

䞷㓆㟿㗽

㟿㗽ⷦ唑 㟿㗽ⷦ唑 Byte 238, 239

图 5-2 通过带已编程广播寻址的 FDL 连接发送和接收

用户数据区最多可为 240 个字节。 最多可传送 236 字节的用户数据。 为作业报头保留 4


个字节。

请注意,在块调用中指定的数据长度(LEN 参数)必须包括报头和用户数据!

5.1.2 AG_SEND/AG_LSEND

5.1.2.1 含义和调用 - AG_SEND / AG_LSEND

块的含义

程序块 AG_SEND/AG_LSEND 将数据传送到 PROFIBUS CP,用于在组态的 FDL 连接


上进行传输。

选定的数据区可以是一个过程映像区、存储位区或数据块区。

当可以在 PROFIBUS 上发送整个 FDL 数据区时,指示无错执行该函数。

注意事项:
除非另外声明,否则下面的所有信息对于 FC AG_SEND 和 AG_LSEND 二者都适用。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 243
用于 PROFIBUS 的程序块
5.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

调用

FBD 中的调用接口

$*B6(1'$*B/6(1'

%22/ $&7 '21( %22/

,17 ,' (5525 %22/

:25' /$''5 67$786 :25'

$1< 6(1'

,17 /(1

STL 的示例

STL 解释
call fc 5 ( //函数调用
ACT := M 20.0, //由存储位触发的作业
ID := MW 22, //符合组态的连接 ID
LADDR := W#16#0100, //=HW Config 中的 LADDR256 (十进制)
SEND := P#db99.dbx10.0 byte 240, //具有发送数据的缓冲区
LEN := MW 24, //发送数据的长度
DONE := M 20.1, //执行代码
ERROR := M 20.2, //错误代码
STATUS := MW 26 ); //状态代码

带作业报头的调用

下表给出了必须在作业报头中提供其参数的连接类型和作业类型。

作业报头位于 FDL (用户)数据区中。 它占用前 4 个字节,必须加到 LEN 参数中指定的长


度中。 因此,带作业报头的作业的最大用户数据长度减少到 236 个字节。

表格 5- 1 在用户数据区中提供作业报头

参数 FDL 连接类型

未指定: 空闲层 2 2) 广播 组播

PB 地址 目标站地址 对于 AG_SEND,无 对于 AG_SEND,无


值范围: 相关性;但必须保留 相关性;但必须保留
0..126,取决于节点/ 区域。 区域。
用于广播/多点传送时为 127

用于 SIMATIC NET S7 CP 的程序块


244 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

FDL 连接类型

LSAP 目标站的 LSAP 无意义但必须保留该 无意义但必须保留该


值范围: 区域。 区域。
0..62,取决于节点/
广播时为 63
服务 1) SDA (带确认的发送数据): 无意义但必须保留该 无意义但必须保留该
数值: 00H 区域。 区域。
SDN (不带确认的发送数
据):
数值: 01H

1) 对于广播和多点传送,只能使用 SDN 服务。


2) 该列中广播和多点传送信息,只有在为广播或多点传送使用未指定的 FDL 连接时才相
关。 在将广播或多点传送作为连接伙伴的已组态 FDL 连接(建议应用)上,根据组态自动
分配地址参数。

5.1.2.2 AG_SEND / AG_LSEND如何工作

工作原理

下图阐述了在用户程序中,使用 AG_SEND 触发的数据传输的正常顺序。

一旦传递参数 ACT = 1,立即执行发送作业。

在这之后,必须在至少一个调用中传递参数 ACT=0。

输出参数 DONE、ERROR 和 STATUS 中的状态代码将在每个块调用中进行更新,并可


对其进行计算。 为了不启动新的发送作业就更新状态代码,可通过参数 ACT=0 启动一个
新的块调用。

请参见本部分末尾的实例程序。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 245
用于 PROFIBUS 的程序块
5.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

䙑㍠䬴⾸ 02/&)"53#0 慃ℊ⁂⁝


盤#05░㡈盥

ὣ!'?3%.$㓹⃄㚙㒗l8m

!#4

$*B6(1'


㓹⃄!'?3%.$
!#4
慃惰
02/&)"53
⁉愪
$*B6(1' l8m䃩㹤


$*B6(1'


㜟朝 㜟朝 㜟朝

⠧㸑盶

⓫㚙⁉愪$/.%ѥ%22/2ѥ34!453

用于 SIMATIC NET S7 CP 的程序块


246 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

5.1.2.3 形式参数的解释 - AG_SEND / AG_LSEND

形式参数的说明

下面的表格解释了 AG_SEND/AG_LSEND 功能
的所有形式参数:

参数 声明 数据类型 可能的数值 说明

ACT INPUT BOOL 0,1 如果使用 ACT=1 对 FC 进行调用,则从使用


SEND 参数指定的 ISO 传输数据区中发送 LEN
个字节。
当通过 ACT=0 调用 FC 时,更新状态代码
DONE、ERROR 和 STATUS。
ID INPUT INT 1,2...64 在参数 ID 中指定 FDL 连接的连接数。
(S7-400)
1,2...16
(S7-300)
LADDR INPUT WORD 模块起始地址
当组态 CP 时,在组态表中显示模块的起始地
址。 在此指定该地址。
SEND INPUT ANY 指定地址和长度
(仅下列类 数据区的地址指向下列两个位置之一:
型允许作为  PI 区
VARTYPE
 存储位区

 数据块区
允许使用
通过一个带作业报头的调用,FDL 数据区包含作
WORD 和
业报头和用户数据。
DWORD)
LEN INPUT INT 1、2...240 (或最 要通过该作业从 FDL 数据区发送的字节数。 可
大为"为 SEND 参 能的数值范围为 1 至 SEND 参数中指定的长
数指定的长度") 度。
通过带作业报头的调用,长度信息由作业报头(4
个字节) + 用户数据(1 - 236 个字节)构成。 因
此,LEN >= 4!

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 247
用于 PROFIBUS 的程序块
5.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

参数 声明 数据类型 可能的数值 说明

DONE OUTPUT BOOL 0: - 该状态参数指示是否无错完成作业。


1:新数据 对于与ERROR和STATUS参数一起使用时的含
义,请参见AG_SEND 和 AG_LSEND 的条件代
码 (页 248)。
ERROR OUTPUT BOOL 0: - 故障代码
1:错误 对于与DONE和STATUS参数一起使用时的含
义,请参见AG_SEND 和 AG_LSEND 的条件代
码 (页 248)
STATUS OUTPUT WORD 状态代码
对于与DONE和ERROR参数一起使用时的含
义,请参见AG_SEND 和 AG_LSEND 的条件代
码 (页 248)

5.1.2.4 AG_SEND 和 AG_LSEND 的条件代码

条件代码

下表显示了根据 DONE、ERROR 和 STATUS 形成的条件代码,其中这些参数必须由用


户程序进行评估。

说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。

表格 5- 2 AG_SEND 条件代码

DONE ERROR STATUS 含义

1 0 0000H 作业完成无错误。
0 0 0000H 没有任何作业在执行中。
0 0 8181H 激活作业。
0 1 7000H 此条件代码仅适用于 S7-400: 使用 ACT=0 调用 FC;作业尚未处理。
0 1 8183H 没有组态或尚未在 PROFIBUS CP 上启动 FDL 服务。

用于 SIMATIC NET S7 CP 的程序块


248 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

DONE ERROR STATUS 含义

0 1 8184H 可能的原因:
 为 SEND 参数指定非法数据类型。
 无作业缓冲区的 FDL 连接: 系统错误。
 带作业缓冲区的 FDL 连接:参数 LEN<4 或作业报头中出现非法参数
(带空闲的第 2 层访问)。
0 1 8185H LEN 参数长度大于 SEND 源区域。
0 1 8186H ID 参数无效。 ID != 1、2...16。
0 1 8301H 没有在目标站上激活 SAP。
0 1 8302H 目标站上没有接收资源;接收站没有足够的速度来处理已接收的数据或还未
准备任何接收资源。
0 1 8303H 在目标站的该 SAP 上不支持 PROFIBUS 服务(SDA,带确认的发送数据)。
当在“RUN”模式中下载连接或网关时,可能临时出现该条件代码。
0 1 8304H 没有建立 FDL 连接。
0 1 8311H 无法通过指定的 PROFIBUS 地址到达目标站,或所使用的服务不能用于指
定的 PROFIBUS 地址。
0 1 8312H CP 上的 PROFIBUS 错误: 例如,总线短路、站不位于环中。
0 1 8315H 可能的原因:
 在一个带作业报头的 FDL 连接上发生内部参数错误:参数 LEN<4 或作
业报头中出现非法参数(带空闲的第 2 层访问)。
 总线中断
其它可能含义:
 出现总线问题(例如,由于电缆连接不良或各节点上设置的传输速度不
同而产生物理干扰)时也可能显示此错误代码。
0 1 8F22H 源区域无效,例如:
该区在 DB 中不存在
LEN 参数小于 0
0 1 8F24H 读取参数时发生区域错误。
0 1 8F28H 读取参数时发生队列错误。
0 1 8F32H 该参数包含了一个太高的 DB 号。
0 1 8F33H DB 编号错误。
0 1 8F3AH 没有装载区域(DB)。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 249
用于 PROFIBUS 的程序块
5.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

DONE ERROR STATUS 含义

0 1 8F42H 从 I/O 区域中读取参数超时。


0 1 8F44H 在访问路径中要读取的参数地址被禁用。
0 1 8F7FH 内部错误,例如,非法 ANY 引用
例如,参数 LEN=0
0 1 8090H  不存在带该模块起始地址的模块。
 所使用的 FC 与正在使用的系统系列不匹配(请牢记对 S7300 和 S7400
使用不同的 FC)。
0 1 8091H 模块起始地址不是双字边界。
0 1 8092H 在 ANY 引用中,指定了一个非 BYTE 的类型。
(仅 S7-400)
0 1 80A4H 没有建立 CPU 与 CP 之间的通信总线连接。 (对于较新的 CPU 版本)。
导致这种情况的原因举例如下:
 无连接组态;
 超出一次可操作 CP 的最大数目(欲知更多信息,请参见 CP 手册)。
0 1 80B0H 该模块不能识别数据记录。
0 1 80B1H 目标地址区无效。
要发送的数据量超出该服务允许的上限(例如,目标地址区 > 240 字节)。
0 1 80B2H 未建立 CPU 和 CP 之间的通信总线连接(对于较早版本的 CPU;否则为
80A4H;欲知更多信息,请参见该代码)
0 1 80C0H 无法读取数据记录。
0 1 80C1H 当前正在处理所指定的数据记录。
0 1 80C2H 未决的作业太多。
0 1 80C3H 资源已占用(内存)。
0 1 80C4H 通信错误(临时发生,通常建议在用户程序中重复执行该作业)。
0 1 80D2H 模块起始地址错误。

用于 SIMATIC NET S7 CP 的程序块


250 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

5.1.3 AG_RECV/AG_LRECV

5.1.3.1 含义和调用 - AG_RECV / AG_LRECV

块的含义
程序块 AG_RECV/AG_LRECV 接收 PRFIBUS CP 通过已组态的 FDL 连接上传送而来的
数据。

为接收数据指定的数据区可以是过程映像区、位地址区或数据块区。

当可以从 PROFBISU CP 上接收数据时,指示无错执行。

注意:

除非另外说明,否则以下所有信息同时适用于 FC AG_SEND 和 AG_LSEND。

调用接口

FBD 中的调用接口

$*B5(&9$*B/5(&9

1'5 %22/

,17 ,' (5525 %22/

:25' /$''5 67$786 :25'

$1< 5(&9 /(1 ,17

STL 的示例

STL 解释
call fc 6 ( //函数调用
ID := MW 30, //符合组态的连接 ID
LADDR := W#16#0100, //=HW Config 中的 LADDR 256 (十进制)
RECV := P#M 10.0 BYTE 100, //用于接收数据的缓冲区
NDR := DB 100.DBX 0.6, //接收代码
ERROR := DB 100.DBX 0.7, //执行代码
STATUS := DB 100.DBW 2, //错误代码
LEN := DB 100.DBW 4 ); //状态代码

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 251
用于 PROFIBUS 的程序块
5.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

带作业报头的调用

表格 5- 3 返回 FDL (用户)数据区的作业报头中的参数

参数 FDL 连接类型

未指定: 空闲层 2) 广播 组播

PB 地址 发送方的地址
值范围: 0 - 126,取决于节点
LSAP 发送方的 LSAP
值范围: 0 - 63,取决于节点
服务 SDN 指示 SDN 指示 SDN 指示
(不带确认的发送数据 - 指 (不带确认的发送数 (不带确认的发送数
示): 据 - 指示): 据 - 指示):
数值: 01H 数值: 7FH 数值: 7FH

SDA 指示(带确认的发送数据
- 指示):
数值: 00H

5.1.3.2 AG_RECV / AG_LRECV如何工作

工作原理

下面的图表说明了使用 AG_RECV 在用户程序中触发数据接收时的一般序列。

用户程序中的每个 AG_RECV 作业,都将通过具有输出参数 NDR、ERROR 和 STATUS


中的某一项的以太网 CP 来进行确认。

用于 SIMATIC NET S7 CP 的程序块


252 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

⫼᠋⿟ᑣ 352),%86&3 䗮䆃ӭԈ


&38਼ᳳ

䗮䖛
352),%86Ӵ䗕
$

ℷ೼
$*B5(&9
ᠻ㸠
  
$*B5(&9
 

᥹ফ䆘Ԅ᠔᥹ᬊⱘ
᭄᥂
$

䗮䖛
352),%86Ӵ䗕
%

ℷ೼
$*B5(&9 ᠻ㸠

 

$*B5(&9
 

᥹ফ䆘Ԅ᠔᥹ᬊⱘ
᭄᥂
%

$*B5(&9 䗮䖛
352),%86Ӵ䗕
&

ℷ೼
ᠻ㸠

ᯊ䯈 ᯊ䯈 ᯊ䯈

⊼˖
 খ᭄Ӵ䗕'21(ǃ(5525ǃ67$786

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 253
用于 PROFIBUS 的程序块
5.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

5.1.3.3 形式参数的解释 - AG_RECV / AG_LRECV

形式参数的说明

下面的表格解释了用于
AG_RECV/AG_LRECV 功能的所有形式参数:

参数 声明 数据类型 可能值 说明

ID INPUT INT 1,2...16 (S7- 在参数 ID 中指定 FDL 连接的连接数。


300)
1,2...32 (S7-
400)
LADDR INPUT WORD 模块起始地址
当组态 CP 时,在组态表中会显示模块的起始
地址。 在此指定该地址。
RECV INPUT ANY 指定地址和长度
(仅下列类 FDL 数据区的地址指向下列两个位置之一:
型允许作为  PI 区
VARTYPE:
 存储器位区
允许使用
 数据块区
WORD 和
通过一个带作业报头的调用,FDL 数据区包含
DWORD)
作业报头和用户数据。
LEN OUTPUT INT 1,2,...240 指定要在 FDL 数据区中接收来自 PROFIBUS
CP 的字节数目。
通过带作业报头的调用,长度信息由作业报头(4
个字节) + 用户数据(1 - 236 个字节)构成。 因
此,LEN >= 4!
NDR OUTPUT BOOL 0: - 该参数指示是否接收到新数据。
1:新数据 对于与ERROR和STATUS参数一起使用时的含
义,请参见AG_RECV 和 AG_LRECV 的条件代
码 (页 255)。

用于 SIMATIC NET S7 CP 的程序块


254 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

参数 声明 数据类型 可能值 说明

ERROR OUTPUT BOOL 0: - 错误代码


1:错误 对于与NDR和STATUS参数一起使用时的含
义,请参见AG_RECV 和 AG_LRECV 的条件代
码 (页 255)。
STATUS OUTPUT WORD 状态代码
对于与NDR和ERROR参数一起使用时的含义,
请参见AG_RECV 和 AG_LRECV 的条件代码
(页 255)。

5.1.3.4 AG_RECV 和 AG_LRECV 的条件代码

条件代码
下表显示了由 NDR、ERROR 和 STATUS 参数构成的代码,其中的参数必须由用户程序
进行计算。

说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。

表格 5- 4 AG_RECV / AG_LRECV 条件代码

NDR ERROR STATUS 含义

1 0 0000H 已接受新数据。
0 0 8180H  目前没有可用数据。
组态丢失,或未在 PROFIBUS DP 上启动 FDL 服务(在此处替代代码
0,1,8183H 出现)。
0 0 8181H 激活作业。
0 1 8183H 没有组态或尚未在 PROFIBUS CP 上启动 FDL 服务。
0 1 8184H  为 RECV 参数指定非法数据类型。
 系统错误。
0 1 8185H 目标缓冲区(RECV)太短。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 255
用于 PROFIBUS 的程序块
5.1 用于开放式通信服务的程序块(SEND/RECEIVE 接口)

NDR ERROR STATUS 含义

0 1 8186H ID 参数无效。 ID != 1、2...16。


0 1 8303H 该 SAP 不支持 PROFIBUS 服务(SDA,带确认的发送数据)。
当在“RUN”模式中下载连接或网关时,可能临时出现该条件代码。
0 1 8304H 没有建立 FDL 连接。
0 1 8F23H 源区域无效,例如:
该区在 DB 中不存在。
0 1 8F25H 写入参数时发生区域错误。
0 1 8F29H 写入参数时发生对准错误
0 1 8F30H 该参数位于具有写保护的第一个当前数据块中。
0 1 8F31H 该参数位于具有写保护的第二个当前数据块中。
0 1 8F32H 该参数包含了一个太高的 DB 号。
0 1 8F33H DB 编号错误。
0 1 8F3AH 没有装载目标区域 (DB)。
0 1 8F43H 将参数写入
I/O 区域超时。
0 1 8F45H 在访问路径中要写入的参数地址被禁用。
0 1 8F7FH 内部错误,例如,非法 ANY 引用。
0 1 8090H  不存在带该模块起始地址的模块。
 所使用的 FC 与正在使用的系统系列不匹配(请牢记对 S7300 和 S7400
使用不同的 FC)。
0 1 8091H 模块起始地址不是双字边界。
0 1 8092H 在 ANY 引用中,指定了一个非 BYTE 的类型。
(仅 S7-400)
0 1 80A0H 从模块中读取否定确认。
0 1 80A4H 没有建立 CPU 与 CP 之间的通信总线连接。 (对于较新的 CPU 版本)。
导致这种情况的原因举例如下:
 无连接组态;
 超出一次可操作 CP 的最大数目(欲知更多信息,请参见 CP 手册)。
0 1 80B0H 该模块不能识别数据记录。

用于 SIMATIC NET S7 CP 的程序块


256 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

NDR ERROR STATUS 含义

0 1 80B1H 可能的原因:
 目标区域无效。
 目标区域太短。
用于接收数据的目标区域不够大。
解决方法: 运行另一个具有最大接收缓冲区的接收调用。 无论采用何种
连接类型(单播/组播/广播)和设备系列 (S7-300/S7-400),均可采用此
方法。
0 1 80B2H 没有建立 CPU 与 CP 之间的通信总线连接。
0 1 80C0H 无法读取数据记录。
0 1 80C1H 当前正在处理所指定的数据记录。
0 1 80C2H 未决的作业太多。
0 1 80C3H 资源已占用(内存)。
0 1 80C4H 通信错误(临时发生,通常建议在用户程序中重复执行该作业)。
0 1 80D2H 模块起始地址错误。

5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

5.2.1 使用概述

概述

下列程序块可用于 S7300 的 DP 主站和 DP 从站模式:

程序块 可用于: 含义
DP 主站 DP 从站

DP_SENd (FC1) X X 用于发送数据


DP_RECV (FC2) X X 用于接收数据
DP_DIAG (FC3) X - 用于由 DP 主站启动的诊断功能
DP_CTRL (FC4) X - 用于控制功能

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 257
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

应用

下图说明了程序块 DP_SEND 和 DP_RECV 用于 DP 主站和 DP 从站的办法。

'3෥0DVWHU '3෥6ODYH

&38 352),%86&3 352),%86&3 &38

67(3 67(3
䞷㓆䲚ㄞ 䞷㓆䲚ㄞ

'3 '3
㟿㗽◉ 㟿㗽◉
'3B6(1' ♠抐 㘴㟅 '3B5(&9
352),%86
'3B5(&9 㘴㟅 ♠抐 '3B6(1'

5.2.2 DP_SEND

5.2.2.1 含义和调用 - DP_SEND

含义

程序块 DP_SEND 将数据传送到 PROFIBUS CP。根据 PROFIBUS CP 的模式,


DP_SEND 具有下列含义:

● 当在 DP 主站中使用时

该块将一个指定 DP 输出区的数据传送到 PROFIBUS CP,以便将它输出到分布式 I/O


系统。

● 当在 DP 从站中使用时

块将 DP 从站的输入数据传送到 PROFIBUS CP,用于传送到 DP 主站

选定的数据区可以是一个过程映像区、存储位区或数据块区。

当 PROFIBUS CP 可以接受整个 DP 数据区时,指示 DP_RECV FC 正确执行。

为启动 DP 主站,必须在调用序列之前只有一个 DP-SEND 或 DP-RECV 调用。以下规则


适用于此第一个调用:

用于 SIMATIC NET S7 CP 的程序块


258 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

如果 DP-SEND 用于初始化,则不接受传送数据区域并向从站发送“0”。必须通过第二次
块调用才会接受要传送的用户数据。

调用接口

DP_SEND

WORD CPLADDR DONE BOOL

ANY SEND ERROR BOOL

STATUS WORD

STL 的调用实例

STL 解释
call fc 1 ( //调用 DP_SEND 功能
CPLADDR:= W#16#0120,
SEND := P#db17.dbx0.0 byte 103,
DONE := M 99.1,
ERROR := M 99.0,
STATUS := MW 104 );

5.2.2.2 DP_SEND如何工作

工作原理
下面的流程图阐述了通过用户程序中的 DP_SEND 触发的数据传送的正常顺序。

下图中,假定已通过上一次 DP_SEND 或 DP-RECV 调用对 DP 主站进行了初始化。

用户程序中的每个 DP_SEND 作业都通过 DONE、ERROR 和 STATUS 输出参数中的


PROFIBUS CP 设定值进行确认。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 259
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

用户程序 PROFIBUS CP 通信伙伴


(CPU 周期 - DP 主站) (DP 轮询周期) (DP 从站)

初始化 DP_SEND 的用户数据


(所有输出‘A’)

'3B6(1'

用户数据‘A’  
未更改!

'3B6(1'
通过 PROFIBUS

传送
‘替换数据 (0)’激活
'3B6(1'


初始化 DP_SEND 的用户数据


(所有输出‘B’)

'3B6(1' 通过
 PROFIBUS
用户数据‘B’ 传送‘A’激活
未更改! 
'3B6(1'


'3B6(1'


初始化 DP_SEND 的用户数据


(所有输出‘B’)
通过
'3B6(1' PROFIBUS
传送‘B’激活

用户数据‘C’
未更改!
时间 时间 时间

图注:
1)
参数传送 DONE、ERROR、STATUS
2)
对于较旧 CP 类型,可以使用条件代码 8183H

确保数据传送

该图还显示了通过确认 DONE=1、ERROR=0 和 STATUS=0000,将数据正确传送到通


信伙伴。

最后传送到 PROFIBUS CP 的已发送数据始终被传递到通信伙伴。 为此,在肯定确认


后,必须在发送缓冲区中输入新的用户数据(DONE=1、ERROR=0、STATUS=0000)。

用于 SIMATIC NET S7 CP 的程序块


260 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

5.2.2.3 形式参数的解释 - DP_SEND

形式参数的说明

下表解释了 DP_SEND 功能的所有形式参数:

参数 声明 数据类型 取值范围 说明

CPLADDR INPUT WORD 模块起始地址


当组态 CP 时,在组态表中会显示模块的起始
地址。 在此指定该地址。
SEND INPUT ANY 指定地址和长度
(仅下列类 DP 数据区的地址指向下列两个位置之一:
型允许作为  PI 区
VARTYPE:
 存储器位区
使用最低版
 数据块区
本为 V3 的
FC1: BYTE
必须为下列各项设置长度
使用版本高
 DP 主站: 1...2160
达 V2.x 的
FC1:  DP 从站: 1...240
BYTE、
WORD 和
DWORD)
DONE OUTPUT BOOL 0: - 该状态参数指示是否无错完成作业
1:新数据 。
对于与ERROR和STATUS参数一起使用时的含
义,请参见DP_SEND条件代码 (页 262)。
ERROR OUTPUT BOOL 0: - 错误代码
1:错误 对于与 DONE 和 STATUS 参数一起使用时的
含义,请参见 DP_SEND条件代码 (页 262)
STATUS OUTPUT WORD 状态代码
对于与 DONE 和 ERROR 参数一起使用时的含
义,请参见 DP_SEND条件代码 (页 262)

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 261
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

5.2.2.4 DP_SEND条件代码

条件代码

下表显示了根据 DONE、ERROR 和 STATUS 形成的条件代码,其中这些参数必须由用


户程序进行评估。

说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。

表格 5- 5 DP_SEND 条件代码

DONE ERROR STATUS 含义

0 0 8180H  启动:
DP 服务已启动,尚不能接收数据。
 正常运行
激活数据传送。
 由于下列原因,DP 未启动:
– CP STOP 或

– “无参数分配”(在此处出现,而不属于代码 0、1、8183H)

1 0 0000H 无错误传送新数据。
0 1 8183H 没有组态或尚未在 PROFIBUS CP 上启动 DP 服务。
0 1 8184H 系统错误或非法参数类型。
0 1 8F22H 读取参数时发生区域长度错误(例如,DB 太短)。
0 1 8F23H 写入参数时发生区域长度错误(例如,DB 太短)。
0 1 8F24H 读取参数时发生区域错误。
0 1 8F25H 写入参数时发生区域错误。
0 1 8F28H 读取参数时发生队列错误。
0 1 8F29H 写入参数时发生队列错误。
0 1 8F30H 该参数位于具有写保护的第一个当前数据块中。

用于 SIMATIC NET S7 CP 的程序块


262 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

DONE ERROR STATUS 含义

0 1 8F31H 该参数位于具有写保护的第二个当前数据块中。
0 1 8F32H 该参数包含了一个太高的 DB 号。
0 1 8F33H DB 编号错误。
0 1 8F3AH 没有装载目标区域 (DB)。
0 1 8F42H 从 I/O 区域中读取参数超时。
0 1 8F43H 将参数写入 I/O 区域超时。
0 1 8F44H 在访问路径中要读取的参数地址被禁用。
0 1 8F45H 在访问路径中要写入的参数地址被禁用。
0 1 8F7FH 内部错误,例如,非法 ANY 引用。
0 1 8090H 不存在拥有该地址的模块。
0 1 8091H 逻辑基址不是一个双字边界。
0 1 80A1H 将否定确认写入模块中。
0 1 80B0H 该模块不能识别数据记录。
0 1 80B1H 要发送的数据字节的数目超出该服务的上限(适用于 DP 主站和 DP 从站模
式)。
0 1 80C0H 无法读取数据记录。
0 1 80C1H 当前正在处理所指定的数据记录。
0 1 80C2H 未决的作业太多。
0 1 80C3H 资源已占用(内存)。
0 1 80C4H 通信错误(临时发生,通常建议在用户程序中重复执行该作业)。
0 1 80D2H 逻辑基址错误。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 263
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

5.2.3 DP_RECV

5.2.3.1 含义和调用 - DP_RECV

含义
程序块 DP_RECV 通过 PROFIBUS 接收数据。 根据 PROFIBUS CP 的不同模式,
DP_RECV 可能为下列含义:

● 当在 DP 主站中使用时
,DP_RECV 从分布式 I/O 接收过程数据及状态信息,并将这些数据和信息输入到一
个指定的 DP 输入区。

● 在 DP 从站上使用时
DP_RECV 接受由 DP 主站传送的在块中指定的 DP 数据区的输出数据。

为接收数据指定的数据区可以是过程映像区、位地址区或数据块区。

当 PROFIBUS CP 可以传送整个 DP 数据输入区时,执行无错执行该功能。

请注意,当为该 DP 从站组态了输出数据时,必须在用户程序中连续为 DP 从站调用 FC


DP_RECV 一次以上。 请阅读手册中的相关信息。

为启动 DP 主站,必须在调用序列之前只有一个 DP-SEND 或 DP-RECV 调用。以下规则


适用于此第一个调用:

● 如果 DP-RECV 用于初始化,则不会采用接收的数据。必须通过第二次块调用才会接
受要接收的用户数据。

附加任务: 输入状态字节

DP_RECV 功能具有下列附加任务:

● 更新 DP 状态字节 DPSTATUS。也就是说,DP_RECV 处理用于 DP 诊断的任务


如果没有组态接收数据,则必须使用长度 1 调用 DP_RECV,以更新 DPSTATUS 状
态字节(仅适用于 DP 主站)。
请阅读手册中的相关信息。

● 启用站列表(参见DP (页 272))。

用于 SIMATIC NET S7 CP 的程序块


264 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

调用接口

DP_RECV

WORD CPLADDR NDR BOOL

ANY RECV ERROR BOOL

STATUS WORD

DPSTATUS BYTE

STL 的示例

STL 解释
call fc 2 ( //调用 DP_RECV 功能
CPLADDR:= W#16#0120,
RECV := P#db17.dbx240.0 byte 103,
NDR := M 99.1,
ERROR := M 99.0,
STATUS := MW 104,
DPSTATUS:= MB 0 );

5.2.3.2 DP_RECV如何工作

工作原理
下面的流程图阐述了,通过用户程序中的 DP_RECV 触发的数据传送的正常顺序。

用户程序中的每个 DP_RECV 作业都通过 NDR、ERROR 和 STATUS 输出参数中的


PROFIBUS CP 设定值进行确认。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 265
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

用户程序 PROFIBUS CP 通信伙伴

'3B5(&9 RGHU'3B6(1'
 
启动阶段:

'3B5(&9 在启动阶段,
DP 主站
 (PROFIBUS CP) 会将每个

'3B5(&9


接受收到的数据‘0’,或‘0’和‘A’,并
评估 DPSTATUS/站列表 通过

PROFIBUS
传送‘A’激活
'3B5(&9



'3B5(&9


接受收到的数据‘A’,或‘A’和‘B’,并
评估 DPSTATUS/站列表 通过
PROFIBUS
传送
‘B’激活
'3B6(1'



'3B5(&9


接受收到的数据‘B’,
并评估 DPSTATUS/站列表

时间 时间 时间

图注:
1)
参数传送 DONE、ERROR、STATUS
2)
对于较旧 CP 类型,可以使用条件代码 8183H

确保接受数据

该图还显示了确认 NDR=1、ERROR=0 和 STATUS=0000 指示可靠的数据接收。要求:


DP 主站和 DP 从站位于数据传送阶段。

注意以下内容:

用于 SIMATIC NET S7 CP 的程序块


266 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

● 在 DP 主站模式中:
如果 DB 从站不位于数据传送阶段,则将相应的已接收数据设为 0。
如果 DP 主站既不处于 RUN 状态,也不处于 CLEAR 状态(DPSTATUS 中的位 4 和
5),则将所有已接收数据设为 0。
如果自上次 DP_RECV 功能调用后,已经从 DP 从站多次接收数据,则使用下一个
DP_RECV 仅获取最后接收的数据。

● 在 DP 从站模式中:
如果 DP 从站不处于数据传送阶段(DPSTATUS 中的位 1)或 DP 主站处于 CLEAR 状
态(DPSTATUS 中的位 2),则将已接收数据设为 0。
如果自上次 DP_RECV 功能调用后,已经从 DP 主站多次接收了数据,则使用下一个
DP_RECV 仅获取最后接收的数据。

5.2.3.3 形式参数的解释 - DP_RECV

形式参数的说明

下表解释了功能 DP_RECV 的所有形式参数:

参数 声明 数据类型 可能的数值 说明

CPLADDR INPUT WORD 模块起始地址


当组态 CP 时,在组态表中显示模块的起始地址。
在此指定该地址。
RECV INPUT ANY 指定地址和长度
(仅下列类型 DP 数据区的地址指向下列两个位置之一:
允许作为  PI 区
VARTYPE:
 存储器位区
使用最低版
 数据块区
本为 V3 的
FC1: BYTE
必须为下列各项设置长度:
使用版本高
 DP 主站: 1...2160
达 V2.x 的
FC1:  DP 从站: 1...240
BYTE、  DP 主站;只读取状态字节: 1
WORD 和 (参见 CP 手册)
DWORD)

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 267
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

参数 声明 数据类型 可能的数值 说明

NDR OUTPUT BOOL 0: - 该状态参数指示是否接受新数据


1:接受的新 。
数据 对于与ERROR和STATUS参数一起使用时的含
义,请参见DP_RECV 的条件代码 (页 268)。
ERROR OUTPUT BOOL 0: - 错误代码
1:错误 对于与NDR和STATUS参数一起使用时的含义,请
参见DP_RECV 的条件代码 (页 268)。
STATUS OUTPUT WORD 状态代码
对于与NDR和ERROR参数一起使用时的含义,请
参见DP_RECV 的条件代码 (页 268)。
DPSTATU OUTPUT 字节 关于编码, DP 状态代码
S 请参见
DPSTATUS
下的信息

5.2.3.4 DP_RECV 的条件代码

条件代码
下表显示了由 NDR、ERROR 和 STATUS 参数构成的代码,其中的参数必须由用户程序
进行计算。

说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。

用于 SIMATIC NET S7 CP 的程序块


268 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

NDR ERROR STATUS 含义

0 0 8180H  启动:
DP 服务已启动,尚不能接收数据。
 正常运行
激活数据传送。
 由于下列原因,DP 未启动:
– CP STOP 或

– “没有分配参数”(在此处出现,而不属于代码 0,1,8183H)。

1 0 0000H 无错接受新数据。
0 1 8183H 没有组态或尚未在 PROFIBUS CP 上启动 DP 服务。
0 1 8184H 系统错误或非法参数类型。
0 1 8F22H 读取参数时发生区域长度错误(例如,DB 太短)。
0 1 8F23H 写入参数时发生区域长度错误(例如,DB 太短)。
0 1 8F24H 读取参数时发生区域错误。
0 1 8F25H 写入参数时发生区域错误。
0 1 8F28H 读取参数时发生队列错误。
0 1 8F29H 写入参数时发生队列错误。
0 1 8F30H 该参数位于具有写保护的第一个当前数据块中。
0 1 8F31H 该参数位于具有写保护的第二个当前数据块中。
0 1 8F32H 该参数包含了一个太高的 DB 号。
0 1 8F33H DB 编号错误。
0 1 8F3AH 没有装载目标区域(DB)。
0 1 8F42H 从 I/O 区域中读取参数超时。
0 1 8F43H 将参数写入 I/O 区域超时。
0 1 8F44H 在访问路径中要读取的参数地址被禁用。
0 1 8F45H 在访问路径中要读取的参数地址被禁用。
0 1 8F7FH 内部错误,例如,非法 ANY 引用。
0 1 8090H 不存在拥有该地址的模块。
0 1 8091H 逻辑基址不是一个双字边界。
0 1 80A0H 将否定确认写入模块中。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 269
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

NDR ERROR STATUS 含义

0 1 80B0H 该模块不能识别数据记录。
0 1 80B1H 要发送的数据字节的数目超出该服务的上限(适用于 DP 主站和 DP 从站模
式)。
0 1 80C0H 无法读取数据记录。
0 1 80C1H 当前正在处理所指定的数据记录。
0 1 80C2H 未决的作业太多。
0 1 80C3H 资源已占用(内存)。
0 1 80C4H 通信错误(临时发生,通常建议在用户程序中重复执行该作业)。
0 1 80D2H 逻辑基址错误。

5.2.3.5 DPSTATUS - DP_RECV

DPSTATUS

DP 主站模式和 DP 从站模式的 DPSTATUS 输出参数的编码不同。

DP 主站模式

7 6 5 4 3 2 1 0
0

表格 5- 6 DP 主站模式中的 DPSTATUS 的位含义

位 含义

7 没有使用
6 该位未设置。
请阅读手册中的信息。
5,4 DP 主站的 DPSTATUS 的数值:
00 RUN
01 CLEAR
10 STOP (现在是 OFFLINE 模式)
11 OFFLINE
请阅读手册中的信息。

用于 SIMATIC NET S7 CP 的程序块


270 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

位 含义

3 值 1: 周期性同步处于活动状态
2 值 0: 不存在新的诊断数据
数值 1: 评估可用的诊断列表;至少一个站有新的诊断数据。
1 值 0: 所有 DP 从站都处于数据传送阶段
数值 1: 评估站列表有效
0 DP 模式
值 0: DP 主站模式
当没有设置该位时,其他位只具有指定的含义。

DP 从站模式

7 6 5 4 3 2 1 0
1

表格 5- 7 DP 从站模式中的 DPSTATUS 的位含义

位 含义

7-5 没有使用
4 该位未设置。
请阅读手册中的信息。
3 该位未设置。
请阅读手册中的信息。
2 值 1: DP 主站 1 处于 CLEAR 模式。 DP 从站在用于输出的 DP 数据中接收数值 0。 这对已发送的
发送数据没有影响。
1 值 1: 还未完成组态/参数分配。
0 值 1: DP 从站模式:
当设置该位时,其他位只具有指定的含义。

说明
请注意,在设置返回参数 NDR=1 之前,禁止计算 DPSTATUS。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 271
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

5.2.4 DP_DIAG

5.2.4.1 含义和调用 - DP_DIAG

块的含义
程序块 DP_DIAG 用于请求诊断信息。 可以使用下列作业类型:

● 请求 DP 站列表

● 请求 DP 诊断列表;

● 请求 DP 单个状态;

● 非周期性地读取 DP 从站的输入/输出数据

● 读取较早的 DP 单个诊断信息

● 读取 DP 状态。

● 读取用于 PLC/CP 停止的 DP 模式

● 读取 DP 从站的当前状态。

通过指定一个站地址,还可以为一个指定的从站请求诊断数据。

为了将诊断数据传送到 CPU,应该在 CPU 中保留一个内存区域,然后在调用中指定该区


域。 该内存区域可以是一个数据块区或一个位存储区。 还可以在作业中指定可用内存区
域的最大长度。

说明
FC DP_DIAG 只有在 DP 主站模式中才有实际用途。

例外

只要运行着该块,就不能给该块提供新的作业数据。

例外情况: 请求 DP 站列表或 DP 诊断列表时。

用于 SIMATIC NET S7 CP 的程序块


272 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

调用接口

DP_DIAG

WORD CPLADDR NDR BOOL

BYTE DTYPE ERROR BOOL

BYTE STATION STATUS WORD

ANY DIAG DIAGLNG BYTE

STL 的示例

STL 解释
call fc 3 ( //调用 DP_DIAG 功能
CPLADDR:= W#16#0120,
DTYPE := B#16#00,
STATION:= B#16#03,
DIAG := P#db18.dbx0.0 byte 16,
NDR := M 70.0,
ERROR := M 70.1,
STATUS := MW 72,
DIAGLNG:= MB 20 );

5.2.4.2 DP_DIAG如何工作

调用接口上的顺序/处理

在循环执行用户程序期间,如下处理 DP_DIAG 功能调用:

通过第一次调用触发作业。 只有在其中一个后继调用的确认中才返回诊断数据。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 273
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

⫼᠋⿟ᑣ 352),%86&3
&38਼ᳳ'3Џキ '33ROO]\NOXV

'3B',$*


'3B',$*


'3B',$*


䅵ㅫᮻ䖨ಲؐ

ᯊ䯈 ᯊ䯈

 খ᭄Ӵ䗕1'5ǃ(5525ǃ67$786

说明
请注意作业类型 read_DP_station_list 和 read_DP_diagnostic_list 的下列特性:
 诊断作业提供在最后一次 DPRECV 调用时可用的诊断数据。 读取列表防止重新读取
数据(返回值 0x8182)。
 在新诊断事件后,通过 DR-RECV 调用重新释放列表。

调用 DP_DIAG 后,可以获取指示下列其中一种情况的信息:

● NDR=0、ERROR=0、STATUS=8181
只要设置了代码组合 NDR=0、ERROR=0 和 STATUS=8181,就禁止修改作业参
数。

● NDR=1
参数值 NDR=1 指示提供有效的诊断数据。 STATUS 参数可能还提供附加信息。

● NDR=0、ERROR=1
发生了一个错误。 诊断数据无效。 出错消息位于 STATUS 中。

用于 SIMATIC NET S7 CP 的程序块


274 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

5.2.4.3 形式参数的解释 - DP_DIAG

形式参数的说明

下表解释了功能 DP_DIAG 的所有形式参数:

参数 声明 数据类型 可能值 说明

CPLADDR INPUT WORD 模块起始地址


当组态 CP 时,在组态表中会显示模块的起始
地址。 在此指定该地址。
DTYPE INPUT BYTE 0: 站列表 诊断类型
1: 站列表
2: 当前诊断信息
3:原诊断信息
4:读取
状态
5:读取
CPU STOP 的状态
6:读取
CP STOP 的状态
7:读取输入数据
(非周期地)
8:读取输出数据
(非周期地)
10:读取 DP 从站

当前状态
站 INPUT BYTE DP 从站的站地址
DIAG INPUT ANY 长度必须设置在 1 指定地址和长度
(仅下列 至 240 之间 数据区地址。 引用下列选项:
类型允许  PI 区
作为
 存储器位区
VARTYPE
 数据块区

BYTE、
WORD 和
DWORD)

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 275
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

参数 声明 数据类型 可能值 说明

NDR OUTPUT BOOL 0: - 该参数指示是否已接受新数据。


1:新数据 对于与ERROR和STATUS参数一起使用时的
含义,请参见DP_DIAG代码 (页 279)
ERROR OUTPUT BOOL 0: - 错误代码
1:错误 对于与NDR和STATUS参数一起使用时的含
义,请参见DP_DIAG代码 (页 279)。
STATUS OUTPUT WORD 状态代码
对于与NDR和ERROR参数一起使用时的含
义,请参见DP_DIAG代码 (页 279)。
DIAGLNG OUTPUT BYTE 这包含通过 PROFIBUS CP 可以使用的数据
的实际长度(单位为字节),与在 DIAG 参数中
指定的缓冲区大小无关。
以下说明适用于具有 DTYPE 4、5 和 6 的作
业类型
此时,DIAGLNG 的值总是“1”。DIAG 参数中
返回的值因而与评估无关。在此情况下,相关
值包含在 STATUS 参数中。

5.2.4.4 作业类型 - DP_DIAG

作业类型
下列关于 DTYPE、SATION 和 DIAGLNG 规范的概述显示了允许使用或有效的条目。

表格 5- 8 DP_DIAG 的作业类型

DTYPE 对应的 参数 DIAGLNG 确认代码


作业 站 (包含在 STATUS 参数中,如表“DP_DIAG 代码”所
示)

0 读取 DP 站列 --- - 忽略 - 模块起始地址
表 当组态 CP 时,在组态表中会显示模块的起始地
址。 在此指定该地址。
1 读取 DP 诊断 --- - 忽略 - DP 诊断列表提示 CPU 关于 DP 从站的新诊断数据
列表 信息。

用于 SIMATIC NET S7 CP 的程序块


276 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

DTYPE 对应的 参数 DIAGLNG 确认代码


作业 站 (包含在 STATUS 参数中,如表“DP_DIAG 代码”所
示)

2 读取当前 DP 1...126 >=6 当前 DP 单个诊断数据会将 DP 从站的当前诊断数


单个诊断数据 据告知给 CPU 程序。
3 读取较早的 1...126 >=6 较早的 DP 单个诊断数据会将 DP 从站较早的诊断
DP 单个诊断 数据告知给 CPU 程序。 该数据存储在 PROFIBUS
信息 CP 上,并根据环形缓冲区的“后进先出”原理读取。
环形缓冲区的结构在下文中解释。
如果 DP 从站诊断数据频繁地改变,那么可在 DP 主
站的 CPU 程序中使用该函数获取和评估 DP 从站的
诊断数据。
4 读取由 DP- =1 通过该作业,可读取之前由 DPCTRL 作业
CTRL 作业 (CTYPE=4)设置的 DP 运行状态。
(CTYPE=4)请 注意: 读出的运行状态与当前的运行状态不一定匹
求的运行状态 配。
可能的状态如下: :
 RUN
 CLEAR
 STOP(映射为 OFFLINE 状态) *)
 OFFLINE
5 读取用于 =1 通过该作业,可以查找当 CPU 变为 STOP 模式
CPU STOP 时,PROFIBUS CP 改变到的 DP 状态:
的 DP 状态  RUN
 CLEAR
 STOP(映射为 OFFLINE 状态) *)
 OFFLINE

缺省情况下,当 CPU 变为 STOP 模式时,


PROFIBUS CP 改变到 DP 状态 CLEAR。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 277
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

DTYPE 对应的 参数 DIAGLNG 确认代码


作业 站 (包含在 STATUS 参数中,如表“DP_DIAG 代码”所
示)

6 读取 CP =1 通过该作业,可以查找当 CP 变为 STOP 模式时,


STOP 的 DP PROFIBUS CP 改变到的 DP 状态:
状态  STOP(映射为 OFFLINE 状态) *)
 OFFLINE

缺省情况下,当 CP 变为 STOP 模式时,


PROFIBUS CP 改变到 DP 状态 OFFLINE。
7 读输入数据 1...126 >=1 通过该作业,DP 主站(等级 2)读取 DP 从站的输入
数据。 该功能也称为共享输入。
8 读取输出数据 1...126 >=1 通过该作业,DP 主站(等级 2)读取 DP 从站的输出
数据。 该功能也称为共享输出。
10 读取 DP 从站 1...126 >=0 通过该作业,可以读取 DP 从站的当前状态。 可能
的当前状态 的状态如下:
 DP 主站与 DP 从站周期性地交换数据。
 DP 主站周期性地读取 DP 从站的输入数据。
 DP 主站周期性地读取 DP 从站的输出数据。
 DP 主站当前没有周期性地处理该 DP 从站。
*) 从模块类型 DA02 起,最新型的模块不再支持 STOP 状态。

用于 SIMATIC NET S7 CP 的程序块


278 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

5.2.4.5 诊断数据的环形缓冲区 - DP_DIAG

用于诊断数据的环形缓冲区

下图阐述了如何使用"读取较早的 DP 单个诊断数据"功能来读取诊断数据。 第一次访问读


取较早诊断数据中的最新数据。

㇢ⓜ⺈幬㫕≰㋾ 䶻㶰床幎桽᧷
䶻₹戒㡸䤓⺈幬㫕≰㋾ 䶻₏㶰床幎桽᧷䶻㶰床幎桽

䶻₹戒㡸䤓⺈幬㫕≰㋾ 䶻㶰床幎桽᧷

图 5-3 用于诊断数据的环形缓冲区

读取当前诊断数据后,读指针复位到下一个最新的诊断数据。

5.2.4.6 DP_DIAG代码

条件代码

下表显示了由 NDR、ERROR 和 STATUS 参数构成的代码,其中的参数必须由用户程序


进行计算。

说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 279
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

表格 5- 9 DP_DIAG 代码

NDR ERRO STATUS DTYPE 含义


R 的可能值

0 0 8181H 2-10 激活作业。


由于下列原因,DP 主站不启动:
 CP STOP 或
 “无参数分配”
(此处不是代码 0、1、8183H!)
0 0 8182H 0 触发作业无意义。
由于下列原因,DP 主站不启动:
 CP STOP 或
 “无参数分配”
(此处不是代码 0、1、8183H!)
0 0 8182H 1 不存在新的诊断数据。
由于下列原因,DP 主站不启动:
 CP STOP 或
 “无参数分配”
(此处不是代码 0、1、8183H!)
1 0 0000H 0, 1 作业无错完成。
和 4-9 注意:
对于 DTYPE 2、3 和 10,通过不为“0”的状态代码指示无错执行情
况。 以下提供了无错执行时,相应范围的具体状态代码:
82XXH
如果执行出错,您将收到以下范围的状态代码:
80XXH、83XXH、8FXXH
1 0 8222H 7, 8 无错完成作业。
所读取的 DP 从站数据的长度与 DP 主站根据 CP 数据库中 DP 从站
的模块列表预计的数据长度不同。
1 0 8227H 7, 8 无错完成作业。
消息: 不存在数据。
1 0 8231H 4, 5, 6 无错完成作业。
消息: DP 状态已经是"RUN"模式

用于 SIMATIC NET S7 CP 的程序块


280 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

NDR ERRO STATUS DTYPE 含义


R 的可能值

1 0 8232H 4, 5, 6 无错完成作业。
消息: DP 状态已经是"CLEAR"模式
1 0 8233H 4, 5, 6 无错完成作业。
消息: DP 状态已经是"STOP"模式
STOP 状态现在是 OFFLINE 状态(此处代码为 8234H)。
请阅读手册中的相关信息。
1 0 8234H 4, 5, 6 无错完成作业。
消息: DP 状态已经是
"OFFLINE"模式
1 0 823AH 2, 3, 7, 8 无错完成作业。
消息: 读取 241 或 242 字节的数据。 可使用 240 字节的数据。
1 0 8241H 2, 3, 10 无错完成作业。
消息: 没有组态指定的 DP 从站。
1 0 8243H 2, 3, 10 无错完成作业。
消息: CP 数据库中 DP 从站的模块列表只包含空模块。
1 0 8245H 2, 3, 10 无错完成作业。
消息: DP 从站处于"周期性地读取输入数据"模式。
1 0 8246H 2, 3, 10 无错完成作业。
消息: DP 从站处于
"周期性地读取输出数据"模式。
1 0 8248H 2, 3, 10 无错完成作业。
注意: 如果没有需要发信号指示的特殊情况,这是已命名的诊断类
型的默认代码。
1 0 8249H 2, 3, 10 无错完成作业。
消息: 由于 DP 模式发生变化(例如,CP 模式选择器设置为
STOP),取消激活 DP 从站。
1 0 824AH 2, 3, 10 无错完成作业。
消息: 由于 CPU 程序中的 DP_CTRL 作业,取消激活 DP 从站。
0 1 8090H 0-10 模块的逻辑基址无效
0 1 80B0H 0-10 该模块不能识别数据记录或正由 RUN 模式变为 STOP 模式。
0 1 80B1H 0-10 所指定的数据记录长度错误
0 1 80C0H 0-10 不能读取数据记录

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 281
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

NDR ERRO STATUS DTYPE 含义


R 的可能值

0 1 80C1H 0-10 当前正在处理所指定的数据记录


0 1 80C2H 0-10 未决的作业太多
0 1 80C3H 0-8 已占用的资源(内存)
0 1 80C4H 0-10 通信错误
0 1 80D2H 0-10 错误的逻辑基址
0 1 8183H 0-10 没有组态 DP 主站。
0 1 8184H 0-8 系统错误或非法参数类型。
0 1 8311H >=2 DTYPE 参数超出数值范围。
0 1 8313H 2, 3, 7, STATION 参数超出数值范围。
8, 10
0 1 8321H >=2 DP 从站没有提供任何有效数据。
0 1 8326H 7, 8 DP 从站拥有 242 字节以上的数据。 PROFIBUS CP 最多支持 242
个字节。
0 1 8335H 7, 8 PROFIBUS CP 所处的 PROFIBUS 状态: "站没有位于环中"。
0 1 8341H 2, 3, 7, 没有组态指定的从站。
8, 10
0 1 8342H 7, 8 不能到达在 STATION 参数中指定 PROFIBUS 地址的 DP 从站。
0 1 8349H 7, 8 DP 主站处于 OFFLINE 模式。
0 1 8F22H 0-10 读取参数时发生区域长度错误(例如,DB 太短)
0 1 8F23H 0-10 写入参数时发生区域长度错误(例如,DB 太短)
0 1 8F24H 0-10 读取参数时发生范围错误
0 1 8F25H 0-10 写入参数时发生区域错误
0 1 8F28H 0-10 读取参数时发生定位错误
0 1 8F29H 0-10 写入参数时发生对准错误
0 1 8F30H 0-10 该参数位于具有写保护的第一个当前数据块中。
0 1 8F31H 0-10 该参数位于具有写保护的第二个当前数据块中。
0 1 8F32H 0-10 参数中的 DB 号过高
0 1 8F33H 0-10 DB 编号错误
0 1 8F3AH 0-10 没有装载区域(DB)

用于 SIMATIC NET S7 CP 的程序块


282 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

NDR ERRO STATUS DTYPE 含义


R 的可能值

0 1 8F42H 0-10 从 I/O 区域中读取参数超时


0 1 8F43H 0-10 将参数写入到 I/O 区域超时
0 1 8F44H 0-10 在访问路径中锁定要读取的参数地址
0 1 8F45H 0-10 在访问路径中要写入的参数地址被禁用
0 1 8F7FH 0-10 内部错误,例如,非法 ANY 引用

5.2.5 DP_CTRL

5.2.5.1 含义和调用 - DP_CTRL

块的含义
DP_CTRL 程序块将控制作业传送到 PROFIBUS CP。可以指定一个作业字段
(CONTROL 参数),用来更详细地指定控制作业。

可以使用下列作业类型:

● 周期/非周期全局控制;

● 删除较早的诊断数据;

● 设置当前 DP 模式;

● 设置 PLC/CP STOP 的 DP 模式;

● 周期性地读取输入/输出数据;

● 设置 DP 从站的操作模式。

对于在此列出的作业类型,有一些限制(请参见模块手册中的信息),

说明
FC DP_CTRL 只有在 DP 主站模式中才有实际用途。

连接器

只要运行着该块,就不能给该块提供新的作业数据。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 283
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

调用接口

DP_CTRL

WORD CPLADDR DONE BOOL

ANY CONTROL ERROR BOOL

STATUS WORD

STL 的示例

STL 解释
call fc 4 ( //DP_CTRL 块调用
CPLADDR:= W#16#0120,
CONTROL:= P#db14.dbx0.0 byte 30, //用于控制作业的缓冲区
//占用 DB 14 中的前 30 个字节。
DONE := M 70.0,
ERROR := M 70.1,
STATUS := MW 72 );

5.2.5.2 DP_CTRL如何工作

调用接口上的顺序/处理

在循环执行用户程序期间,如下处理 DP_CTRL 功能调用:

通过第一次调用触发作业。 只有在其中一个后继调用的确认中才返回诊断数据。

用于 SIMATIC NET S7 CP 的程序块


284 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

⫼᠋⿟ᑣ 352),%86&3 䗮䆃ӭԈ


&38਼ᳳ '3䕂䆶਼ᳳ ˄'3Ңキ˅
'3B&75/


'3B&75/



'3B&75/


䅶䌁Ꮖᅠ៤Ϩ᮴䫭

ᯊ䯈 ᯊ䯈 ᯊ䯈

೒՟˖
 খ᭄Ӵ䗕'21(ǃ(5525ǃ67$786

调用 DP_CTRL 后,作为反应,可以获取下列条件代码模式之一:

● DONE=0、ERROR=0、STATUS=8181
只要设置了代码组合 DONE=0、ERROR=0 和 STATUS=8181,就禁止修改作业参
数。

● DONE=1
参数值 DONE=1 指示作业已执行。 STATUS 参数可能还提供附加信息。

● DONE=0、ERROR=1
发生了一个错误。 出错消息位于 STATUS 中。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 285
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

5.2.5.3 形式参数的解释 - DP_CTRL

形式参数的说明

下表解释了 DP_CTRL 功能的所有形式参数:

参数 声明 数据类型 取值范围 说明

CPLADDR INPUT WORD 模块起始地址


当组态 CP 时,
在组态表中显示模块的起始地址。 在此指定该
地址。
CONTROL INPUT ANY 长度必须设置在 指定 CONTROL 作业域的地址和长度
(仅下列类 1 至 240 之间 数据区地址。 引用下列选项:
型允许作为  PI 区
VARTYPE:
 存储器位区
BYTE、
 数据块区
WORD 和
长度必须不少于参数数目。
DWORD)
DONE OUTPUT BOOL 0: - 指示是否无错发送和完成作业。
1:无错执行作 对于与 ERROR 和 STATUS 参数一起使用时的
业。 含义,请参见 DP_CTRL条件代码 (页 293)
ERROR OUTPUT BOOL 0: - 错误代码
1:错误 对于与 DONE 和 STATUS 参数一起使用时的含
义,请参见 DP_CTRL条件代码 (页 293)
STATUS OUTPUT WORD 状态代码
对于与 DONE 和 ERROR 参数一起使用时的含
义,请参见 DP_CTRL条件代码 (页 293)

用于 SIMATIC NET S7 CP 的程序块


286 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

CONTROL 作业域的结构

控制作业具有下列结构:

&21752/
⦿⧏ &7<3(
♑屐
♑㟿

♑㟿䶻₹ⷦ唑
冥⚆✛⚜䱿
♑㟿䶻₹ⷦ唑

♑㟿᧨䶻Q₹ⷦ唑

作业域实例
对于如下所示的一个作业域,在没有自动清除选项时,为组 4 和组 5 发送一个周期控制作
业同步和解冻。

DB 14
Byte 0 01H CTYPE
Byte 1 24H Command Mode
Byte 2 18H Group Select
Byte 3 00H Autoclear

ANY 指针中的长度必须至少为 4 (在实例中,已经选择 30)。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 287
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

5.2.5.4 作业类型 - DP_CTRL

作业类型

根据 CTYPE 规范以及作业域中的信息,在下列概述中显示作业允许或可行的规范。

CTYP 对应的作业 作业域中的参数 说明


E
名称 编号

0 触发全局控制 第 1 个字节: 2 将一个单个全局控制作业发送到通过组选择选


命令模式 定的 DP 从站。 命令模式参数指定下列全局控
第 2 个字节: 制作业:
组选择  SYNC
(参见本表后的  UNSYNC
内容。)
 FREEZE
 UNFREEZE
 CLEAR - 不支持(请阅读手册中的相关信息)
可以在命令模式参数中指定多个作业。

用于 SIMATIC NET S7 CP 的程序块


288 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

CTYP 对应的作业 作业域中的参数 说明


E
名称 编号

1 *) 触发周期全局控制 第 1 个字节: 3 在 PROFIBUS CP 上触发将周期性全局控制作


命令模式 业发送到通过组选择选定的 DP 从站。
第 2 个字节: 只能通过 SYNC 全局控制作业评估自动清除参
组选择 数。 如果选定组中至少有一个 DP 从站未处于
第 3 个字节: 数据传输阶段,且自动清除参数被设置为 1,
自动清除 则会激活 CLEAR 模式。 即,DP 从站的输出
(参见本表后 数据被设置为“0”。
的内容。) 可以在命令模式参数中激活下列全局作业:
 SYNC
 FREEZE
 CLEAR(CLEAR 位 = 1)- 不支持(请阅读
手册中的相关信息)

或取消激活:
 UNSYNC
 UNFREEZE
 UNCLEAR(CLEAR 位 = 0)
可以在命令模式参数中指定多个作业。
只能由另一个全局控制作业(周期性或非周期
性)终止一个激活的周期性全局控制作业。
要终止在命令模式中设置的作业,必须取消该
作业。 例如,由一个 UNSYNC 作业
取消 SYNC 作业。
3 删除较早的 DP 单 第 1 个字节: 1 为一个或所有 DP 从站删除存储在 PROFIBUS
个诊断数据 从站地址 CP 上的较早诊断数据。
1 - 126
127 = 所有
从站

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 289
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

CTYP 对应的作业 作业域中的参数 说明


E
名称 编号

4 设置当前 DP 的模 第 1 个字节: 1 通过该作业,可将 DP 模式设置为以下模式:


式 RUN = 00H  RUN
CLEAR = 01H  CLEAR
OFFLINE = 03H
 OFFLINE

AUTOCLEAR 参数表示,在满足以下条件时,
AUTOCLEAR
1 类 DP 主站将自动切换到 CLEAR 状态: 至
的 RUN = 04H
少有一个需要与 1 类 DP 主站进行数据交换的
不带
DP 从站,未处于数据传送阶段。
AUTOCLEAR
的 RUN = 04H 不带 AUTOCLEAR 参数的 RUN 将复位
AUTOCLEAR。
注意:
从模块类型 DA02 起,较新型的模块不再支持
STOP = 02H 模式。 STOP = 02H 将映射为
OFFLINE 模式。
5 设置 CPU STOP 的 第 1 个字节: 1 该作业指定当 CPU 变为 STOP 模式时,
DP 模式 RUN = 00H PRFOIBUS CP 变为哪个 DP 模式。
CLEAR = 01H  RUN
OFFLINE = 03H  CLEAR
 OFFLINE
缺省情况下,当 CPU 变为 STOP 模式时,
PROFIBUS CP 改变到 DP 状态 CLEAR。
当 CP 模式在 RUN --> STOP --> RUN 变化期
间,保持设置的模式。
注意:
从模块类型 DA02 起,较新型的模块不再支持
STOP = 02H 模式。 STOP = 02H 将映射为
OFFLINE 模式。

用于 SIMATIC NET S7 CP 的程序块


290 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

CTYP 对应的作业 作业域中的参数 说明


E
名称 编号

6 设置 CP STOP 停 第 1 个字节: 1 该作业指定了当 CP 切换至 STOP 模式时,


止的 DP 模式 OFFLINE=03H PROFIBUS CP 会切换至哪个 DP 模式:
 OFFLINE
缺省情况下,当 CP 变为 STOP 模式时,
PROFIBUS CP 改变到 DP 状态 OFFLINE。
当 CP 模式在 RUN --> STOP --> RUN 变化期
间,保持设置的模式。
注意:
从模块类型 DA02 起,较新型的模块不再支持
STOP = 02H 模式。 STOP = 02H 将映射为
OFFLINE 模式。
7 *) 周期性地读取输入 第 1 个字节: 1 不支持该作业。
数据(DP 主站等级 从站地址 请阅读手册中的相关信息。
2) 1 到 125
8 *) 周期性地读取输出 第 1 个字节: 1 不支持该作业。
数据(DP 主站等级 从站地址 请阅读手册中的相关信息。
2) 1 到 125
9 由 DP 主站(等级 第 1 个字节: 1 该作业终止周期性地读取,一个已寻址 DP 从
1、等级 2)终止循环 从站地址 站的输入数据或输出数据或数据传送(DP 主站
处理 DP 从站。 1 到 125 等级 1)。
因此,DP 从站不再由作为 DP 主站(2 类)的
PROFIBUS CP 进行处理
这将取消激活 DP 从站。
10 启动周期性地处理 第 1 个字节: 1 作为 DP 主站(等级 1)的 PROFIBUS CP 将参
作为 DP 主站(等级 从站地址 数分配给已寻址的 DP 从站,并启动将周期数
1) 1 到 125 据传送(写入到输出/读取输入)。
这将激活 DP 从站。
*) 从模块类型 DA02 起,最新型的模块不再支持此 CTYPE。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 291
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

5.2.5.5 命令模式和组选择 - DP_CTRL

命令模式的结构

在命令模式参数中,为周期和非周期全局控制作业指定输入和输出数据的模式。

含义如下:

1 = 已激活
0 = 未激活

⇜⚆᧶ 7 6 5 4 3 2 1 0

㼰㦘∎䞷
&/($5
81)5((=(
)5((=(
816<1&
6<1&
㼰㦘∎䞷

组选择的结构

在组选择参数中,指定由在命令模式参数中指定的控制作业来寻址的组。 组选择参数占
用控制作业中的第二个字节。 每个位定义一个可能的 DP 从站组。

含义如下:

1 = 已分配
0 = 未分配

⇜⚆᧶ 7 6 5 4 3 2 1 0
兓᧷ 8 7 6 5 4 3 2 1

用于 SIMATIC NET S7 CP 的程序块


292 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

5.2.5.6 DP_CTRL条件代码

条件代码

下表给出了必须由用户程序评估的 DONE、ERROR 和 STATUS 参数组成的返回代码。

说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。

表格 5- 10 DP_CTRL 条件代码

DONE ERRO STATU CTYPE 可 含义


R S 能值

0 0 8181H 0..10 激活作业。


由于下列原因,DP 主站不启动:
 CP STOP 或
 “无参数分配”
注意:
将显示在此处描述的代码,而不是稍后介绍的以下某个代码:
0,1,8183H
0,1,8333 H
0,1,8334H
1 0 0000H 0..10 作业无错完成。
1 0 8214H 0, 1 无错完成作业。
消息: 将周期全局控制作业作为非周期全局控制作业发送
1 0 8215H 0, 1 无错完成作业。
全部取消激活在选定组中寻址的从站。
1 0 8219H 0, 1 无错完成作业。
尝试重新发送一个已经激活的周期全局控制。 全局控制继续保
持不变。
1 0 8228H 0, 1 无错完成作业。
消息: 在选定组中寻址的 DP 从站没有任何输入模块。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 293
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

DONE ERRO STATU CTYPE 可 含义


R S 能值

1 0 8229H 0, 1 无错完成作业。
消息: 在选定组中寻址的 DP 从站没有任何输出模块。
1 0 8231H 4, 5, 6 无错完成作业。
消息: DP 状态已经是"RUN"模式
1 0 8232H 4, 5, 6 无错完成作业。
消息: DP 状态已经是"CLEAR"模式
1 0 8233H 4, 5, 6 无错完成作业。
消息: DP 状态已经是"STOP"模式
1 0 8234H 4, 5, 6 无错完成作业。
消息: DP 状态已经是"OFFLINE"模式
1 0 8235H 4 无错完成作业。
消息: DP 状态已经是带激活 AUTOCLEAR 的"RUN"模式
1 0 8236H 4 无错完成作业。
消息: DP 状态已经是取消激活 AUTOCLEAR 的"RUN"模式
1 0 8241H 7-10 无错完成作业。
消息: 没有组态指定的 DP 从站。
1 0 8243H 7-10 无错完成作业。
消息: 由于 CP 数据库中 DP 从站的模块列表只包含空模块,因
此已经取消激活该 DP 从站。
1 0 8245H 7-10 无错完成作业。
消息: DP 从站已经处于"周期性地读取输入数据"模式。
1 0 8246H 7-10 无错完成作业。
消息: DP 从站已经位于"周期性地读取输出数据"模式。
1 0 8248H 7-10 无错完成作业。
消息: CP 数据库中 DP 从站的模块列表包含输入、输出或输入/
输出模块。
1 0 8249H 7-10 无错完成作业。
消息: 由于改变了 DP 模式,将取消激活该从站。
1 0 824AH 7-10 无错完成作业。
消息: 由于 CPU 程序中的 DP_CTRL 作业,已经取消激活 DP
从站。
0 1 8090H 0..10 不存在拥有该地址的模块。

用于 SIMATIC NET S7 CP 的程序块


294 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

DONE ERRO STATU CTYPE 可 含义


R S 能值

0 1 8091H 0..10 逻辑地址不是一个双字边界。


0 1 80B0H 0..10 该模块不能识别数据记录。
0 1 80B1H 0..10 所指定的数据记录长度错误。
0 1 80C0H 0..10 无法读取数据记录。
0 1 80C1H 0..10 当前正在处理所指定的数据记录。
0 1 80C2H 0..10 未决的作业太多。
0 1 80C3H 资源已占用(内存)。
0 1 8183H 0..10 未组态 DP 主站...
注意:
如果 DP 主站处于“STOP”状态,那么也会输出状态 8181 H。
0 1 8184H 系统错误或非法的参数类型...
0 1 8311H 0..10 CTYPE 参数超出数值范围
0 1 8312H 0..10 CONTROL 参数中的区域长度太短。
0 1 8313H 3, 7, 8, 9, 从站地址参数超出数值范围。
10
0 1 8315H 0, 1 取消激活在全局控制中指定组的所有 DP 从站(总是发生在有空
组时)。
0 1 8317H 8 所组态输出数据的长度大于 DP 从站所组态的接收区。
不能激活从站"读取输出数据"模式。
0 1 8318H 0, 1, 4, 5, 6 作业数据域中第一个字节中的参数超出数值范围。 通过
GLOBAL CONTROL, CLEAR 与 SYNC 一起使用,或将设置
了 CLEAR 的 GLOBAL CONTROL 发送至组 0。
0 1 831AH 0, 1 至少一个 DP 从站不能处理 FREEZE。
0 1 831BH 0, 1 至少一个 DP 从站不能处理 SYNC。
0 1 8333H 0, 1 在 DP "STOP"模式下禁止使用该作业。
注:
如果未组态 DP 主站,那么也会输出状态 8181 H。
0 1 8334H 0, 1 在 DP "OFFLINE"模式下禁止使用该作业。
注:
如果未组态 DP 主站,那么也会输出状态 8181 H。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 295
用于 PROFIBUS 的程序块
5.2 用于 S7-300 的 DP(分布式 I/O)的程序块

DONE ERRO STATU CTYPE 可 含义


R S 能值

0 1 8335H 0, 1 PROFIBUS CP 所处的 PROFIBUS 状态: "站没有位于环中"。


0 1 8339H 0, 1 选定组中至少一个 DP 从站没有处于数据传送阶段。
0 1 833CH 1 禁止在“PLC <-> CP 自由运行”模式下
使用周期性全局控制。 在 CP 3425 上不发生该错误,因为该
CP 不能使用该模式(数据传送始终使用 PBUS 数据记录)。
0 1 8341H 7-10 没有组态指定的 DP 从站。
0 1 8183H 0..10 没有组态 DP 主站。
0 1 8184H - 系统错误或非法参数类型。
0 1 8F22H 0..10 读取参数时发生区域长度错误(例如,DB 太短)。
0 1 8F23H 0..10 写入参数时发生区域长度错误。
0 1 8F24H 0..10 读取参数时发生区域错误。
0 1 8F25H 0..10 写入参数时发生区域错误。
0 1 8F28H 0..10 读取参数时发生队列错误。
0 1 8F29H 0..10 写入参数时发生队列错误。
0 1 8F30H 0..10 该参数位于具有写保护的第一个当前数据块中。
0 1 8F31H 0..10 该参数位于具有写保护的第二个当前数据块中。
0 1 8F32H 0..10 该参数包含了一个太高的 DB 号。
0 1 8F33H 0..10 DB 编号错误。
0 1 8F3AH 0..10 没有装载区域 (DB)。
0 1 8F42H 0..10 从 I/O 区域中读取参数超时。
0 1 8F43H 0..10 将参数写入到 I/O 区域超时。
0 1 8F44H 0..10 防止在块执行期间访问要读取的参数。
0 1 8F45H 0..10 防止在块执行期间访问要写入的参数。
0 1 8F7FH 0..10 内部错误,例如,非法 ANY 引用。
0 1 80C4H 0..10 通信错误(临时发生,通常建议在用户程序中重复执行该作业)。
0 1 80D2H 0..10 逻辑基址错误。

用于 SIMATIC NET S7 CP 的程序块


296 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS 的程序块
5.3 组态限制/程序块所需的资源 (PROFIBUS)

5.3 组态限制/程序块所需的资源 (PROFIBUS)

所需资源

说明
请注意各个块的版本信息。目前的块版本可能与此处显示的版本不同。其它版本块对资源
的要求可能不同。
有关当前块版本的信息,请参见以下条目 ID:
9836605 (http://support.automation.siemens.com/WW/view/de/9836605)

表格 5- 11 用于 S7400 的 FC/FB 的信息

NAME 版本 FC/FB 编 装载存储器要 工作存储器要求 MC7 [字节] 本地数据 [字


号 求 [字节] [字节] 节]

AG_SEND 1.2 FC5 732 576 540 20


AG_RECV 1.2 FC6 656 522 486 20
AG_LSEND 3.1 FC50 1044 846 810 52
AG_LRECV 3.1 FC60 1190 992 956 58

表格 5- 12 用于 S7-300 的 FC/FB 的信息

NAME 版本 FC/FB 编 装载存储器要 工作存储器要求 MC7 [字节] 本地数据 [字


号 求 [字节] [字节] 节]

DP_SEND 3.0 FC1 1066 886 850 42


DP_RECV 3.0 FC2 1144 950 914 46
DP_DIAG 3.0 FC3 1956 1638 1602 58
DP_CTRL 3.0 FC4 1532 1292 1256 52
AG_SEND 4.2 FC5 1976 1664 1628 50
AG_RECV 4.7 FC6 1440 1206 1170 40

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 297
用于 PROFIBUS 的程序块
5.3 组态限制/程序块所需的资源 (PROFIBUS)

用于 SIMATIC NET S7 CP 的程序块


298 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS FMS 的程序块 6
6.1 使用概述

概述

下列功能块可供在 FMS 通信中涉及的 S7 站使用。

列表给出了供货时的块编号。 可以更改这些块编号。

功能块 可在 PROFIBUS CP 的功 含义/


能中使用,作为: 功能
类型 块编号 FMS 客户端 FMS 服务器

IDENTIFY FB2 X X 用于查询设备属性


READ FB3 X - 用于读取数据
REPORT FB4 - X 用于传送未确认的数据
STATUS FB5 X X 用于状态查询
WRITE FB6 X - 用于写入数据

S7300 和 S7400 之间的区别

为 S7300 和 S7400 提供不同的 FB。 根据是为 S7300 还是为 S7400 创建用户程序,确


保访问合适的块库(SIMATIC_NET_CP)。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 299
用于 PROFIBUS FMS 的程序块
6.2 FMS 块参数

6.2 FMS 块参数

FB 调用接口

下面部分描述了如下所示的每个 FB 的调用接口:

)%[

%22/ 5(4 '21( %22/

':25' ,' (5525 %22/

67$786 :25'

%<7( 3+<6 %<7(

%<7( /2* %<7(

$1< /2&$/ $1<

根据 FB 类型,FB 具有 INPUT、OUTPUT 或 INOUT 类型的不同参数。

下表解释了所有块参数的含义、数据类型、数值范围以及内存区域。

输入参数

输入参数 含义 数据类 数值范围/存储区 在 FB 中


型 使用

REQ 用于执行块的边缘信号 BOOL 0=FALSE; 1=TRUE 2 3 4 56


0->1; "启动"/
I、Q、M、D、L
ID 该标识符识别 FMS 连 DWOR 0001 0001 .. FFFF 2 3 4 56
接。 D FFFF /
S7300: (对于 FB I、Q、M、D、L
ID 指定 LAN 连接和 P 1:
总线地址。 WORD)

S7–400;
该 ID 指定 LAN 连接和
K 总线连接。
确保使用来自连接组态
的 ID 或使其与该 ID 相
匹配。

用于 SIMATIC NET S7 CP 的程序块


300 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS FMS 的程序块
6.2 FMS 块参数

输入参数 含义 数据类 数值范围/存储区 在 FB 中


型 使用

VAR_1 该参数寻址要读取或写 ANY 字符串: 2 3 4 - 6


入的远程通信变量。 最大长度 = 254 字节
根据 FMS 服务器的组 例如
态,可以指定一个名称 ‘<102>’(索引访
或索引。 问)
“SLAVE2”(已指定
访问)
DB
SD_1 将从其中传送变量的本 ANY 该类型相当于到一个 - - 4 - 6
地数据区地址。 DB、I/O 过程映像或
位存储区的一个引
用。
示例:
SD_1 :=
P#DB17.DBX0.0
BYTE 16
在该实例中,传送
DB17 的前 16 个字
节。
I、Q、M、D、L、
C、T、DBx

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 301
用于 PROFIBUS FMS 的程序块
6.2 FMS 块参数

输入参数 含义 数据类 数值范围/存储区 在 FB 中


型 使用

RD_1 将要向其传送变量的本 ANY 该类型相当于到一个 - 3 - - -


地数据区地址。 DB、I/O 过程映像或
位存储区的一个引
用。
示例:
SD_1 :=
P#DB17.DBX0.0
BYTE 16
在该实例中,传送
DB17 的前 16 个字
节。
I、Q、M、D、L、
DBx
S7-300 的字节数组
的注意事项:
如果要读取奇数个字
节,那么必须将接收
区的长度组态为下一
个较高的偶数字节。
示例:
对于字节数组
[1...13],必须保留一
个 14 字节的接收缓
冲区大小。

用于 SIMATIC NET S7 CP 的程序块


302 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS FMS 的程序块
6.2 FMS 块参数

输出参数

输出参数 含义 数据类型 数值范围/ 在 FB 中使用


内存区域

DONE 指示已完成该作业。 BOOL 0=FALSE - - 4 - 6


1=TRUE: 已完成作业;
I、Q、M、D、L

NDR 指示接收数据。 BOOL 0=FALSE 2 3 - 5 -


1=TRUE: 已接受新数据;
I、Q、M、D、L

ERROR 指示是否出错。 BOOL 0=FALSE 2 3 4 5 6


1=TRUE: 发生错误;
I、Q、M、D、L

STATUS 提供关于作业完成后的 WORD 可以在下面的章节中找到详 2 3 4 5 6


警告或错误的详细信 细的解码信息。
息。 I、Q、M、D、L

INPUT/OUTPUT 参数

INOUT 参数 含义 数据类型 数值范围/ 在 FB 中使用


内存区域

PHYS 指示伙伴(VFD)设备的 BYTE 0...3 - - - 5 -


物理状态。 I、Q、M、D、L
LOG 指示伙伴(VFD)设备的 BYTE 0...3 - - - 5 -
逻辑状态。 I、Q、M、D、L
LOCAL 伙伴的"本地详细信息" ANY 该详细信息最长为 16 个字 - - - 5 -
参数 节。
I、Q、M、D、L
VENDOR 设备制造商的名称。 STRING 长度 < 255 2 - - - -
D

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 303
用于 PROFIBUS FMS 的程序块
6.2 FMS 块参数

INOUT 参数 含义 数据类型 数值范围/ 在 FB 中使用


内存区域

MODEL 设备型号名称。 STRING 长度 < 255 2 - - - -


D

修订 设备版本(修订)。 STRING 长度 < 255 2 - - - -


D

存储区

表格中内存区域的缩写形式与下面一致:

简短形式 类型

I 输入
Q 输出
M 位存储器
L 临时局部数据
D 数据块区
C Counter
T 定时器
DBX 数据块

CP 启动期间的 FB 输出参数(S7400)

在启动 PROFIBUS CP 期间调用 FB (REQ:0->1,EN_R=1)(例如,由于重新通电和断电


或激活一个交换机),可以使用下列输出参数:

● DONE=0

● NDR=0

● ERROR = 1

● STATUS = 0001(尚未建立连接)或
STATUS = 0607(Get-OV 仍在运行)

用于 SIMATIC NET S7 CP 的程序块


304 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS FMS 的程序块
6.3 IDENTIFY

6.3 IDENTIFY

6.3.1 含义和调用 - IDENTIFY

块的含义

通过 IDENTIFY 功能块,可以获取关于伙伴设备的下列信息(对于 S7 站,可获取关于


CPU 的信息):

● 设备制造商的名称。

● 设备型号名称。

● 设备版本(修订)。

例如,根据所接收的信息,可以:

● 设置本地程序功能与伙伴性能和响应相匹配

● 设置通讯参数

调用接口

,'(17,)<

%22/ 5(4 1'5 %22/

':25' ,' (5525 %22/

67$786 :25'

9(1'25 675,1*

02'(/ 675,1*

5(9,6,21 675,1*

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 305
用于 PROFIBUS FMS 的程序块
6.3 IDENTIFY

STL 表达式中的实例

STL 解释
call FB 2, DB 22 ( //带背景数据块的 IDENTIFY 块调用
REQ := M 1.0, //用于执行 FB 的边缘信号
ID := DW#16#10001, //与 FMS 连接
//组态匹配
NDR := M 1.1, //指示何时"接受新数据"
ERROR := M 1.2, //指示执行错误
STATUS := MW 20, //详细的错误解
VENDOR := "SLAVE2".VENDOR_ABBILD, //用于制造商名称的数据区
MODEL := "SLAVE2".MODEL_ABBILD, //用于型号的数据区
REVISION := "SLAVE2".REV_ABBILD ); //用于修订的数据区

其他信息

"SLAVE2"
是一个数据块的符号名称。 在相应的符号表中定义该名称。
VENDOR_IMAGE、MODEL_IMAGE 和 REVISION_IMAGE
是数据类型 STRING 的变量。 在"SLAVE2"数据块中定义它们。

6.3.2 IDENTIFY如何工作

工作原理

下面的流程图给出了 IDENTIFY 作业的正常顺序。

作业由参数 REQ 的(正)边沿跳变激活。

用户程序的每个 IDENTIFY 作业都通过输出参数 NDR、ERROR 和 STATUS 中的数值由


PROFIBUS CP 确认。

用于 SIMATIC NET S7 CP 的程序块


306 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS FMS 的程序块
6.4 READ

)06&OLHQW )066HUYHU
⫼᠋⿟ᑣ 352),%86&3 352),%86&3
&38਼ᳳ

ᬃᣕ,1387খ᭄
&$//)% 5(4 

ᬃᣕ,1387খ᭄
&$//)% 5(4 

^
,'(17,)<3'8
ᦤ⼎ ;;
⌏ࡼⱘ ;;
ᷛ䆚᭄᥂
䇏প
,'(17,)<

^  &RQILUPHG3'8

⢊ᗕҷⷕ
ৃবᬙ䱰
ᯊ䯈 ᯊ䯈 ᯊ䯈

 খ᭄Ӵ䗕1'5ǃ(5525ǃ67$786

6.4 READ

6.4.1 含义和调用 - READ

含义

READ 功能根据作业的参数分配,从由名称或索引指定的通讯伙伴的数据区读取数据。
在一个数据块中局部保存读取的数据,该区域是输入/输出的过程映像中的区域或位存储
区的一个区域。

要求: 组态通讯变量
通讯伙伴(FMS 服务器)上的变量结构是固定的。 建立 FMS 连接时,从通讯伙伴上读取结
构描述。 然后可以在 PROFIBUS CP 上用于将数据转换成 FMS 表达式。

如果在组态 FMS 连接期间选择了通讯变量,那么只有在建立连接时才读取该结构。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 307
用于 PROFIBUS FMS 的程序块
6.4 READ

访问权限

请牢记可以为数据传送设置访问权限。 因此,只有在给 FMS 客户端分配了合适的权限


时,才能进行数据传输。

FB 调用接口

5($'

%22/ 5(4 1'5 %22/

':25' ,' (5525 %22/

$1< 9$5B 67$786 :25'

$1< 5'B

STL 表达式中的实例

STL 解释
call FB 3, DB 29 ( //带背景数据块的 READ 块调用
REQ := M 1.0, //信号边缘变为执行 FB
ID := DW#16#10001, //与 FMS 连接
//组态比较
VAR_1 := "SLAVE2".INDEX, //将要读取的地址 K 变量
RD_1 := "PROZESS".Motor1, //作为目标地址的地址数据区
NDR := M 1.1, //执行确认
ERROR := M 1.2, //指示错误的执行
STATUS := MW 20 ); //详细的错误解码

6.4.2 READ如何工作

工作原理

下面的顺序流程图给出了在用户程序中使用 READ 触发的数据接收的正常顺序。

作业通过参数 REQ 的(正)边沿跳变激活。

用户程序的每个 READ 作业都通过输出参数 NDR、ERROR 和 STATUS 中的数值由


PROFIBUS CP 确认。

用于 SIMATIC NET S7 CP 的程序块


308 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS FMS 的程序块
6.4 READ

)06&OLHQW )066HUYHU
⫼᠋⿟ᑣ 352),%86&3 352),%86&3
&38਼ᳳ

ᬃᣕ,1387খ᭄
&$//)% 5(4 

ᬃᣕ,1387খ᭄
&$//)% 5(4 

^
5($'5HTXHVW3'8
䇏প ;;
⌏ࡼⱘ ;;
Ң⫼᠋᭄᥂ऎ䇏প᭄᥂ˈ✊
ৢᇚ݊䕀ᤶЎ)06Ḑᓣ

5($'

^  &RQILUPHG3'8

䇏পᏆᅠ៤

ᯊ䯈 ᯊ䯈 ᯊ䯈

 খ᭄Ӵ䗕1'5ǃ(5525ǃ67$786

确保数据传送

该图显示了使用代码 NDR=1、ERROR=0 和 STATUS=0000 来确认读出数据。

读作业的肯定确认并不表示由伙伴应用程序注册了读作业。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 309
用于 PROFIBUS FMS 的程序块
6.5 REPORT

6.5 REPORT

6.5.1 含义和调用 - REPORT

块的含义

REPORT 功能块允许由 FMS 服务器进行变量的未确认传输。 该作业类型尤其用于在广


播/多点传送 FMS 连接上进行传输。

必须在 FMS 服务器上本地组态要报告的变量结构。

作为通讯伙伴的 S7 站
为了使通讯伙伴接受已报告的变量,必须在组态通讯伙伴(FMS 客户端)期间输入这些变
量。

调用接口

5(3257

%22/ 5(4 '21( %22/

':25' ,' (5525 %22/

$1< 6'B 67$786 :25'

$1< 9$5B

STL 表达式中的实例

STL 解释
call FB 4, DB 28 ( //带背景数据块的 REPORT 块调用
REQ := M 1.0, //信号边缘变为执行 FB
ID := DW#16#10001, //与组态 FMS 连接进行比较
VAR_1 := "SLAVE2".INDEX, //命名要报告的 C 变量
SD_1 := "PROZESS".Motor1, //寻址源数据区
DONE := M 1.1, //确认执行
ERROR := M 1.2, //指示错误的执行
STATUS := MW 20 ); //详细的错误解码信息

用于 SIMATIC NET S7 CP 的程序块


310 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS FMS 的程序块
6.5 REPORT

说明
参数 SD_1 用于寻址数据区,从该数据区读取和报告变量值。 根据 FMS 约定,还必须指
定 FC 接口上的变量索引。 但是,在执行调用时,不检查该信息的一致性。

6.5.2 REPORT如何工作

工作原理

下面的流程图给出了在用户程序中由 REPORT 传送的数据传送的正常顺序。

作业由参数 REQ 的(正)边沿跳变激活。

用户程序的每个 REPORT 作业都通过输出参数 NONE、ERROR 和 STATUS 的数值由


PROFIBUS CP 确认。

)066HUYHU )06&OLHQW
⫼᠋⿟ᑣ 352),%86&3 352),%86&3
&38਼ᳳ

ᬃᣕ,1387খ᭄
&$//)% 5(4 

ᬃᣕ,1387খ᭄
&$//)% 5(4 

5(32573'8


^
Ң)06Ḑᓣ䕀ᤶ᭄᥂
᡹㸼 ᑊ೼⫼᠋᭄᥂ऎЁ䕧ܹ
Ꮖᅠ៤

ᯊ䯈 ᯊ䯈 ᯊ䯈

 খ᭄Ӵ䗕'21(ǃ(5525ǃ67$786

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 311
用于 PROFIBUS FMS 的程序块
6.6 STATUS

6.6 STATUS

6.6.1 含义和调用 - STATUS

块的含义

STATUS 功能块允许从指定 FMS 连接的通讯伙伴上请求状态信息。

有以下可用的信息:

● VFD 的逻辑状态;
例如,是否可进行通讯的信息

● VFD 的物理状态
关于设备状态的信息

● 与设备有关的信息
通常提供与制造商有关的信息

下表提供了设备可针对状态请求提供的代码信息:

设备 消息版本 Log Phys 本地详细信息

带 PROFIBUS- 1 00H: 10H: 无输入


CP 的 通讯准备就绪 通讯准备就绪,
S7 CP 处于 RUN CPU 处于 RUN
模式,CPU 处 模式
于 RUN 模式
2 02H: 13H: 无输入
受限服务,CP 要求维护,CPU
处于 RUN 模 处于 STOP 模
式,CPU 处于 式
STOP 模式

用于 SIMATIC NET S7 CP 的程序块


312 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS FMS 的程序块
6.6 STATUS

设备 消息版本 Log Phys 本地详细信息

第三方设备 可以使用下列组 00H: 10H: -与制造商有关-


态操作: 通讯准备 可操作
就绪
02H: 11H
限制服务数目 部分可操作
12H
不能操作
13H
要求维护

调用接口

)%

%22/ 5(4 1'5 %22/

':25' ,' (5525 %22/

67$786 :25'

%<7( 3+<6 %<7(

%<7( /2* %<7(

$1< /2&$/ $1<

STL 表达式中的实例

STL 解释
call FB 5, DB 21 ( //带背景数据块的 STATUS 块调用
REQ := M 1.0, //信号边缘变为执行 FB
ID := DW#16#10001, //与 FMS 连接组态进行比较
NDR := M 1.1, //指示何时接受新数据
ERROR := M 1.2, //指示错误执行
STATUS := MW 20, //详细的错误解码信息
PHYS := MB 22, //用于物理状态的数据区
LOG := MB 23, //用于逻辑状态的数据区
LOCAL := P#DB18.DBX0.0 WORD8 ); //用于"本地详细信息"的数据区

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 313
用于 PROFIBUS FMS 的程序块
6.6 STATUS

6.6.2 STATUS如何工作

工作原理

下面的流程图给出了 STATUS 作业的正常顺序。

作业由参数 REQ 的(正)边沿跳变激活。

用户程序的每个 STATUS 作业都通过输出参数 NDR、ERROR 和 STATUS 中的数值由


PROFIBUS CP 确认。

)06&OLHQW )066HUYHU
⫼᠋⿟ᑣ 352),%86&3 352),%86&3
&38਼ᳳ

ᬃᣕ,1387খ᭄
&$//)% 5(4 

ᬃᣕ,1387খ᭄
&$//)% 5(4 

^
67$7863'8
⢊ᗕᶹ䆶 ;;
⌏ࡼⱘ ;;
‫ޚ‬໛⢊ᗕֵᙃ

67$786

^
&RQILUPHG3'8

⢊ᗕҷⷕ
ৃবᬙ䱰
ᯊ䯈 ᯊ䯈 ᯊ䯈

 খ᭄Ӵ䗕1'5ǃ(5525ǃ67$786

用于 SIMATIC NET S7 CP 的程序块


314 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS FMS 的程序块
6.7 WRITE

6.7 WRITE

6.7.1 含义和调用 - WRITE

含义

WRITE FB将来自指定的本地数据区的数据传送到通讯伙伴的数据区。 本地数据区可以是


一个数据块、过程输入或输出映像中的一个区域或一个位存储区。 (请参见参数SD_1,
FMS块参数 (页 300))

使用一个变量名或一个变量索引指定通讯伙伴的数据区。

要求: 组态通讯变量

通讯伙伴(FMS 服务器)上的变量结构是固定的。 建立 FMS 连接时,从通讯伙伴上读取结


构描述。 然后可以在 PROFIBUS CP 上用于将数据转换成 FMS 表达式。

如果在组态 FMS 连接期间选择了通讯变量,那么只有在建立连接时才读取该结构。

访问权限

请牢记可以为数据传送设置访问权限。 因此,只有在给 FMS 客户端分配了合适的权限


时,才能进行数据传输。

调用接口

:5,7(

%22/ 5(4 '21( %22/

':25' ,' (5525 %22/

$1< 9$5B 67$786 :25'

$1< 6'B

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 315
用于 PROFIBUS FMS 的程序块
6.7 WRITE

STL 表达式中的实例

STL 解释
call FB 6, DB 28 ( //带背景数据块的 WRITE 块调用
REQ := M 1.0, //信号边沿变为执行 FB
ID := DW#16#10001, //与 FMS 连接组态进行比较
VAR_1 := "SLAVE2".INDEX, //命名要编写的 C 变量
SD_1 := "PROZESS".Motor1, //寻址源数据区
DONE := M 1.1, //确认执行
ERROR := M 1.2, //指示错误执行
STATUS := MW 20 ); //详细的错误解码

6.7.2 WRITE如何工作

工作原理

下面的流程图给出了在用户程序中由 WRITE 触发的数据传送的正常顺序。

作业由参数 REQ 的(正)边沿跳变激活。

用户程序的每个 WRITE 作业都通过输出参数 NONE、ERROR 和 STATUS 的数值由


PROFIBUS CP 确认。
)06&OLHQW )066HUYHU
⫼᠋⿟ᑣ 352),%86&3 352),%86&3
&38਼ᳳ

ᬃᣕ,1387খ᭄
&$//)% 5(4 

ᬃᣕ,1387খ᭄
&$//)% 5(4 

:5,7(5HTXHVW3'8

^
PLW'DWHQ

‫ܹݭ‬ ;;
⌏ࡼⱘ ;;
Ң)06Ḑᓣ䕀ᤶ᭄᥂
ᑊ೼⫼᠋᭄᥂ऎЁ䕧ܹ

:5,7(

^  &RQILUPHG3'8

‫ܹݭ‬Ꮖᅠ៤

ᯊ䯈 ᯊ䯈 ᯊ䯈

 খ᭄Ӵ䗕'21(ǃ(5525ǃ67$786

用于 SIMATIC NET S7 CP 的程序块


316 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS FMS 的程序块
6.8 条件代码和出错消息 - FMS 块

确保数据传送

该图还显示了通过确认 DONE=1、ERROR=0 和 STATUS=0000,将数据正确传送到通


讯伙伴,且远程数据区中的条目正常工作。

作业的肯定确认并不表示已经由伙伴应用程序接收并处理了数据。

6.8 条件代码和出错消息 - FMS 块

表结构

下表对必须在用户程序中处理的条件代码和错误代码作了解释。 在FMS块参数 (页 300)


中解释了DONE/NDR、ERROR和STATUS的含义

为了能有更好的全面了解,下面列出了错误代码:

䟀)06↨⇃㭏㿚Ⓙ枨
⦷㦻⦿㭏㿚Ⓙ枨幾

㫈㗽ₚ⒦⚓欈㇡兓᧶
枨幾伊Ⓔ 㦘␂屲摙᧨庆♑屐ₚ嫷
枨幾ⅲ䪐⚺⃘ ♑屐ₚ嫷

无错执行作业

如果无错执行了作业,那么 FB 接口上的参数具有下列数值:

DONE/NDR ERROR STATUS 含义

1 0 0x0000 作业已完成且无错
0 0 0x000B 作业处于活动状态

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 317
用于 PROFIBUS FMS 的程序块
6.8 条件代码和出错消息 - FMS 块

错误类别

将可能的错误代码分成下列错误类别:

表格 6- 1 "块"错误类别

错误等级 含义

块 指示涉及下列各项的错误或故障:
 FB 参数分配
 在 CPU 和 CP 中的块执行
应用 指示在用户程序和 FB 之间的接口上的错误或故障。
定义 指示通常涉及用户程序和 FMS 组态之间的不一致性错误。
组件 指示 PROFIBUS CP 上的资源故障。
维修 指示使用所请求的 FMS 服务时的错误或故障。
访问 指示由于下列原因,拒绝访问对象:
 缺少访问权限
 硬件故障
 其他不一致性
Od (对象词典) 指示访问 VFD 对象词典时的故障。
VFD 状态 VFD 上的未指定错误
否则 其他错误

6.8.1 在本地检测到错误

表格 6- 2 "应用程序"错误类别

DONE/NDR ERROR STATUS 含义

0 1 0x0001 通讯故障:
例如,未建立通讯总线连接。
0 1 0x0002 无法执行该函数: CP 的否定确认或序列错
误,例如,通讯总线错误。

用于 SIMATIC NET S7 CP 的程序块


318 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS FMS 的程序块
6.8 条件代码和出错消息 - FMS 块

DONE/NDR ERROR STATUS 含义

0 1 0x0003 未组态连接(指定无效的标识号)。 如果组态了


连接,那么该出错消息指示已经超出允许的并
行作业处理限制。 实例: 组态 SAC=0,并发
送一个 REPORT 作业。
0 1 0x0004 接收数据区太短或数据类型不匹配。
0 1 0x0005 已经从 CP (BRCV)上接收了一个复位请求。
0 1 0x0006 CP 上的相应作业执行处于 DISABLED 状
态,或已经从 CP 上接收了一个复位请求;因
此不能完成传送。
0 1 0x0007 CP 上的相应作业执行处于错误状态。
对于 REPORT: 在诊断缓冲区中有改错误的
更详细说明。
0 1 0x0008 在 CP 上的作业执行发送一个访问用户内存错
误。
0 1 0x000A 无法访问本地用户存储器(例如,删除了
DB)。
0 1 0x000C 当调用带下划线的 BSEND 或 BRCV SFB
时,指定一个不属于 SFB12/SFB13 的背景数
据块或没有使用背景数据块,而使用了一个全
局 DB。
0 1 0x0014 工作或装载内存不足。

DONE/NDR ERROR STATUS 含义

0 1 0x0200 未指定的应用程序引用错误。
0 1 0x0201 当前不能建立所组态的连接;例如,不能建立
LAN 连接。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 319
用于 PROFIBUS FMS 的程序块
6.8 条件代码和出错消息 - FMS 块

表格 6- 3 "定义"错误类别

DONE/NDR ERROR STATUS 含义

0 1 0x0300 未指定的定义错误。
0 1 0x0301 没有定义带所请求索引/名称的对象。
0 1 0x0302 对象属性不一致。
0 1 0x0303 名称已经存在。

表格 6- 4 "资源"错误类别

DONE/NDR ERROR STATUS 含义

0 1 0x0400 未指定的资源错误。
0 1 0x0401 没有可用内存。

表格 6- 5 "服务"错误类别

DONE/NDR ERROR STATUS 含义

0 1 0x0500 未指定服务错误。
0 1 0x0501 由于对象状态发生冲突。
0 1 0x0502 超出已组态的 PDU 大小。
0 1 0x0503 由于对象限制而发生冲突。
0 1 0x0504 参数不一致。
0 1 0x0505 非法参数。

表格 6- 6 "访问"错误类别

DONE/NDR ERROR STATUS 含义

0 1 0x0600 未指定访问错误。
0 1 0x0601 无效对象或没有装载 OD。
0 1 0x0602 硬件故障
0 1 0x0603 对象拒绝访问。
0 1 0x0604 无效地址。

用于 SIMATIC NET S7 CP 的程序块


320 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS FMS 的程序块
6.8 条件代码和出错消息 - FMS 块

DONE/NDR ERROR STATUS 含义

0 1 0x0605 对象属性不一致。
0 1 0x0606 不支持对象访问。
0 1 0x0607 对象不位于 OD 中或 GetOD 仍然有效。
0 1 0x0608 类型冲突或变量内容超出允许的数值范围
0 1 0x0609 不支持使用名称进行访问。

表格 6- 7 ?对象词典?OD)错误类别/ VFD 状态/拒绝错误类别出

DONE/NDR ERROR STATUS 含义

0 1 0x0700 未指定 OD 错误。


0 1 0x0701 超出允许的名称长度。
0 1 0x0702 对象词典溢出。
0 1 0x0703 对象词典具有写保护。
0 1 0x0704 扩展长度溢出。
0 1 0x0705 对象描述长度溢出。
0 1 0x0706 处理故障。

DONE/NDR ERROR STATUS 含义

0 1 0x0100 未指定 VFD 状态错误。


0 1 0x0108 RCC/SAC/RAC 错误
0 1 0x0106 不支持服务。
0 1 0x0105 PDU 长度错误
0 1 0x0102 坏的 FMS-PDU

表格 6- 8 "其他"错误类别

DONE/NDR ERROR STATUS 含义

0 1 0x0800 未指定错误。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 321
用于 PROFIBUS FMS 的程序块
6.8 条件代码和出错消息 - FMS 块

6.8.2 由FMS伙伴检测到错误

表格 6- 9 应用程序错误类别

DONE/NDR ERROR STATUS 含义

0 1 0x8200 未指定的应用程序引用错误。
0 1 0x8201 无法到达应用程序(例如,用户程序)。

表格 6- 10 定义错误类别

DONE/NDR ERROR STATUS 含义

0 1 0x8300 未指定的定义错误。
0 1 0x8301 没有定义带所请求索引/名称的对象。
0 1 0x8302 对象属性不一致。
0 1 0x8303 名称已经存在。

表格 6- 11 资源错误类别

DONE/NDR ERROR STATUS 含义

0 1 0x8400 未指定的资源错误。
0 1 0x8401 没有可用内存。

表格 6- 12 服务错误类别

DONE/NDR ERROR STATUS 含义

0 1 0x8500 未指定服务错误。
0 1 0x8501 由于对象状态发生冲突。
0 1 0x8502 超出已组态的 PDU 大小。
0 1 0x8503 由于对象限制而发生冲突。
0 1 0x8504 参数不一致。
0 1 0x8505 非法参数。

用于 SIMATIC NET S7 CP 的程序块


322 编程手册, 10/2012, C79000-G8952-C229-07
用于 PROFIBUS FMS 的程序块
6.8 条件代码和出错消息 - FMS 块

表格 6- 13 访问错误类别

DONE/NDR ERROR STATUS 含义

0 1 0x8600 未指定访问错误。
0 1 0x8601 无效对象。
0 1 0x8602 固化程序错误
0 1 0x8603 对象拒绝访问。
0 1 0x8604 无效地址。
0 1 0x8605 对象属性不一致。
0 1 0x8606 不支持对象访问。
0 1 0x8607 对象不存在。
0 1 0x8608 类型冲突或变量内容超出允许的数值范围
0 1 0x8609 不支持使用名称进行访问。

表格 6- 14 Od (对象词典)错误类别

DONE/NDR ERROR STATUS 含义

0 1 0x8700 未指定 OD 错误。


0 1 0x8701 超出允许的名称长度。
0 1 0x8702 对象词典溢出。
0 1 0x8703 对象词典具有写保护。
0 1 0x8704 扩展长度溢出。
0 1 0x8705 对象描述长度溢出。
0 1 0x8706 处理故障。

表格 6- 15 VFD 状态错误类别/

DONE/NDR ERROR STATUS 含义

0 1 0x8100 未指定 VFD 状态错误。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 323
用于 PROFIBUS FMS 的程序块
6.9 FB (PROFIBUS FMS)的数量限制/资源要求

DONE/NDR ERROR STATUS 含义

0 1 0x8000 由伙伴检测到的未指定错误。

6.9 FB (PROFIBUS FMS)的数量限制/资源要求

说明
请注意各个块的版本信息。目前的块版本可能与此处显示的版本不同。其它版本块对资源
的要求可能不同。
有关当前块版本的信息,请参见以下条目 ID:
9836605 (http://support.automation.siemens.com/WW/view/de/9836605)

表格 6- 16 S7-400 中 FB 的信息

名称 版本 FB 编号 装载存储 工作存储 MC7 [字 本地数据 背景数据 背景数据


器要求 [字 器要求 [字 节] [字节] 块 [字节] 块 MC7
节] 节] [字节]

IDENT 1.4 2 1658 1364 1328 136 464 196


READ 1.5 3 2474 2086 2050 130 606 338
REPORT 1.5 4 2184 1818 1782 156 588 332
STATUS 1.3 5 1656 1390 1354 112 438 190
WRITE 1.5 6 2486 2094 2058 142 632 358

表格 6- 17 S7-300 中 FB 的信息

名称 版本 FB 编号 块 [字节] 工作存储 MC7 [字 本地数据 背景数据 背景数据


器要求 [字 节] [字节] 块 [字节] 块 MC7
节] [字节]

IDENT 1.6 2 1462 1254 1218 86 306 158


READ 1.5 3 1998 1700 1664 64 218 70
REPORT 1.6 4 2036 1732 1696 76 230 72
STATUS 1.6 5 1430 1244 1208 60 182 46
WRITE 1.6 6 2028 1724 1688 76 230 72

用于 SIMATIC NET S7 CP 的程序块


324 编程手册, 10/2012, C79000-G8952-C229-07
文档历史 A
A.1 文档历史
本章概要介绍了本手册先前的版本以及程序块的功能扩展。

版本 06 中新增的内容

本版本的手册包含更正信息。

更正信息:

● PROFIenergy 程序块

版本 05 中新增的内容
本版本手册中包含的更正信息和新信息。

更改/补充:

● PROFIenergy

PROFIenergy 功能的新程序块

版本 04 中新增的内容

本版本手册中包含的更正信息和新信息。

更改/补充:

● 新增程序块 AG_CNTEX

● 根据新的 STEP 7 Professional 组态软件进行了调整

在新组态软件中,程序块始终通过其符号名来指定。 本手册会遵循此惯例,大部分情
况下使用程序块名称。 但还是会保留 STEP 7 V5.5 中使用的名称和块编号分配。

● 扩展的程序块 FTP_CMD

可以设置 SSL 安全 FTP 连接。

版本 03 中新增的内容

本版本手册中包含的更正信息和新信息。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 325
文档历史
A.1 文档历史

更改/补充:

● 有关块处理的常见问题与解答条目的参考。

● 将 FB 用于容错系统(H 系统)中已编程连接和 IP 组态时的特殊功能

● 对 DP_SEND/DP_RECV 状态代码 8180H 的说明进行了补充。

● DP_CTRL: 增补了作业类型 CTYPE = 4 中缺少的说明。

增加了有关 CTYPE 1、7 和 8 的信息,因为从模块类型 DA02 起不再支持这些类型。

● DP_CTRL: 对以下状态代码的说明进行了补充: 8181H、8183H、8333H 和 8334H

版本 02 中新增的内容

本版本手册中包含的更正信息和新信息。

相对上一版本,添加了以下内容:

更改/补充:

● 关于工业以太网部分

一个新函数块 FB56,可用于 ERPC 与 ERPC-CP 的通信。

● 关于用于 FTP 服务的 FB/FC 部分

数据块文件 DB 的说明现在同时在在线帮助和本手册中提供。

● 关于用于已编程连接和 IP 组态的 FB 部分

该部分现在包括所需组态数据块的完整说明。

此处还添加了为某些 CP 类型组态设备名称的选项。

● 关于用于 PROFINET IO 的 FB/FC 部分

此处添加了使用 FC PNIO_SEND 和 PNIO_RECV 传送详细状态信息的选项。 这样使


用户可以在接口上获得更快的响应。

版本 01 中新增的内容

本手册集合了之前在 S7 CP 手册中根据网络类型编排的块描述。 这些手册将不再包括块


描述。

与 S7 CP 以前的有效手册版本相比,版本 1 在块描述中包括了下列创新:

用于 SIMATIC NET S7 CP 的程序块


326 编程手册, 10/2012, C79000-G8952-C229-07
文档历史
A.1 文档历史

● 关于工业以太网部分

一个新函数块 FB 40 可用于高级 CP 的 FTP 客户机模式。 通过该 FB,可以在用户程


序中高效地创建完整的 FTP 作业序列。

● 关于 PROFINET IO 部分

PROFINET IO 块中的参数修改

– FC11 PNIO_SEND (块版本 2.0)

– FC12 PNIO_RECV (块版本 2.0)

这两个函数必须同时用于使用 PROFINET IO 控制器和设备模式的 CP。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 327
文档历史
A.1 文档历史

用于 SIMATIC NET S7 CP 的程序块


328 编程手册, 10/2012, C79000-G8952-C229-07
参考 B
查找 SIMATIC NET 文档

● 目录

可以在以下目录中找到 Siemens 相关产品的订货号:

– SIMATIC NET 工业通信/工业标识,目录 IK PI

– 用于全集成自动化和小型自动化的 SIMATIC 产品,目录 ST 70

可以从 Siemens 代表处获得这些目录和其它信息。

可从以下 Internet 网址访问 Industry Mall:

目录 (https://eb.automation.siemens.com/goos/catalog)

● Internet 上的文档

在 Siemens 自动化客户支持 Internet 页面上可找到 SIMATIC NET 手册:

到客户支持的链接: (http://support.automation.siemens.com/WW/view/zh)

输入相关手册的条目 ID 作为搜索项。 ID 列在一些参考条目下面的括号中。

也可在产品支持页面上找到 SIMATIC NET 文档:

10805878 (http://support.automation.siemens.com/WW/view/zh/10805878)

转到所需产品组并进行以下设置:

“条目列表”选项卡,条目类型“手册/操作说明”

● STEP 7 安装文档

可以通过开始菜单“开始 > SIMATIC > 文档”(Start > SIMATIC > Documentation) 找到


PG/PC 上 STEP 7 安装的在线文档中包含的手册。

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 329
参考
B.1 关于组态、调试和使用 CP

B.1 关于组态、调试和使用 CP

/1/
SIMATIC NET
用于工业以太网的 S7 CP
组态和调试
手册部分 - 常规应用
组态手册
Siemens AG
(SIMATIC NET Manual Collection)
Internet 上的以下条目 ID:
到A部分的链接: (http://support.automation.siemens.com/WW/view/zh/30374198)

B.2 有关编程

/2/
SIMATIC NET 函数块和 SIMATIC S7 函数的版本历史
参考文档
Siemens AG
(SIMATIC NET 手册集)
请参见 Internet 上的以下条目 ID:
9836605 (http://support.automation.siemens.com/WW/view/de/9836605)

/3/
SIMATIC
使用 STEP 7 编程
Siemens AG
(STEP 7 基本知识文档包的一部分)
(STEP 7 中在线文档的一部分)
请参见 Internet 上的以下条目 ID:
18652056 (http://support.automation.siemens.com/WW/view/de/18652056)

用于 SIMATIC NET S7 CP 的程序块


330 编程手册, 10/2012, C79000-G8952-C229-07
参考
B.2 有关编程

/4/
SIMATIC
S7-300/400 的系统函数和标准函数 - 卷 1/2
参考手册
Siemens AG
(STEP 7 基本知识文档包的一部分)
(STEP 7 中在线文档的一部分)
请参见 Internet 上的以下条目 ID:
1214574 (http://support.automation.siemens.com/WW/view/de/1214574)

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 331
参考
B.2 有关编程

用于 SIMATIC NET S7 CP 的程序块


332 编程手册, 10/2012, C79000-G8952-C229-07
索引


A ISO-on-TCP 连接

AG_CNTEX, 67 参数域, 133

AG_CNTRL, 53

C PE_DS3_Write_ET200S_CP, 15

CONF_DB, 145 PE_Mode_ID, 193, 223

CONF_DB参见组态数据块, 124 Ping 命令, 67, 70

CP 地址, 13, 16 PNIO_ALARM (FB54)块


形式参数, 189
PNIO_RECV (FC12)

形式参数, 173
FB, 13, 16 PNIO_RW_REC (FB52)
IDENTIFY, 305 形式参数, 184
READ, 307 PNIO_SENd (FC11)
REPORT, 310 形式参数, 165
STATUS, 312 PROFIenergy 设备, 192
WRITE, 315 PROFIenergy 控制器, 192
由FMS伙伴报告条件代码和出错消息, 322
条件代码和出错消息: 本地检测到的错误, 318

FC 块
块编号, 16 Service_Request_ID, 204

常规信息, 16 SIMATIC NET 词汇表, 6

FMS
条件代码和出错消息, 317 T
模块参数, 300
TCP 连接
FTP 连接
参数域, 131
参数域, 137


UDP 连接

用于 SIMATIC NET S7 CP 的程序块


编程手册, 10/2012, C79000-G8952-C229-07 333
索引

参数域, 132 对于S5S5 连接, 241


用于所组态的连接, 21
块编号, 13
三划
常规信息, 13
子域类型, 138
组态数据块, 124

五划
电子邮件连接
参数域, 135

六划
访问协调, 46

七划
作业报头, 24, 241, 243
作业缓冲器, 241
块库, 234
更换模块, 15, 17
系统数据
参数域, 129
词汇表, 6
连接ID, 130
可能值, 130
连接类型
参数域, 130

八划
使用FETCH/WRITE协调访问的FC, 46
函数 (FC)
AG_LOCK / AG_UNLOCK, 46
AG-RECV / AG_LRECV, 251
AG-RECV / AG_LRECV / AG_SRECV, 34
AG-SEND / AG_LSEND, 243
AG-SEND / AG_LSEND / AG_SSEND, 26

用于 SIMATIC NET S7 CP 的程序块


334 编程手册, 10/2012, C79000-G8952-C229-07

You might also like