PGH FC-FB-S7CP 52
PGH FC-FB-S7CP 52
PGH FC-FB-S7CP 52
前言
___________________
有关处理的概述与常规信息 1
___________________
用于工业以太网的程序块 2
SIMATIC NET
___________
用于 PROFINET IO (S7-300)
的程序块
3
编程手册
___________________
用于 PROFIBUS 的程序块 5
___________
用于 PROFIBUS FMS 的程
序块
6
_______________
文档历史 ____
A
_______________
参考 ____
B
10/2012
C79000-G8952-C229-07
法律资讯
警告提示系统
为了您的人身安全以及避免财产损失,必须注意本手册中的提示。人身安全的提示用一个警告三角表示,仅与财产
损失有关的提示不带警告三角。警告提示根据危险等级由高到低如下表示。
危险
表示如果不采取相应的小心措施,将会导致死亡或者严重的人身伤害。
警告
表示如果不采取相应的小心措施,可能导致死亡或者严重的人身伤害。
小心
表示如果不采取相应的小心措施,可能导致轻微的人身伤害。
注意
表示如果不采取相应的小心措施,可能导致财产损失。
当出现多个危险等级的情况下,每次总是使用最高等级的警告提示。如果在某个警告提示中带有警告可能导致人身
伤害的警告三角,则可能在该警告提示中另外还附带有可能导致财产损失的警告。
合格的专业人员
本文件所属的产品/系统只允许由符合各项工作要求的合格人员进行操作。其操作必须遵照各自附带的文件说明,特
别是其中的安全及警告提示。 由于具备相关培训及经验,合格人员可以察觉本产品/系统的风险,并避免可能的危
险。
按规定使用 Siemens 产品
请注意下列说明:
警告
Siemens 产品只允许用于目录和相关技术文件中规定的使用情况。如果要使用其他公司的产品和组件,必须得到
Siemens 推荐和允许。正确的运输、储存、组装、装配、安装、调试、操作和维护是产品安全、正常运行的前
提。必须保证允许的环境条件。必须注意相关文件中的提示。
商标
所有带有标记符号 ® 的都是西门子股份有限公司的注册商标。本印刷品中的其他符号可能是一些其他商标。若第三
方出于自身目的使用这些商标,将侵害其所有者的权利。
责任免除
我们已对印刷品中所述内容与硬件和软件的一致性作过检查。然而不排除存在偏差的可能性,因此我们不保证印刷
品中所述内容与硬件和软件完全一致。印刷品中的数据都按规定经过检测,必要的修正值包含在下一版本中。
有关本手册的信息
目标组和动机
本手册的结构
本手册根据网络类型和通信服务来编排结构。
将按照以下部分对每个程序块进行介绍:
● 含义
● 调用接口
● 工作原理
● 形式参数的说明
● 条件代码
这些章节可能包含更多特殊信息。
本手册的适用范围
● STEP 7 V5.5
说明
STEP 7 - 同义名称
在本手册后面的章节中使用术语 STEP 7 代替 STEP 7 V5.5 或 STEP 7 Professional
说明
CP 类型和通信服务
请注意,每个程序块都支持某种通信服务。 因此,程序块的使用与支持特定通信服务
的 CP 类型的使用相关。
“程序块”的含义
本手册中使用的术语“程序块”是以下术语的通称:
● FC(函数)/FB(函数块)
● 指令
说明
STEP 7/STEP 7 Professional 产品的组件
随 STEP 7 V5.5 和 STEP 7 Professional 提供的库内容可能有所不同。
本手册中的程序块总览介绍了针对 S7-300 和 S7-400 各种设备系列的可用性。但总览
不提供与 STEP 7 V5.5 或 STEP 7 Professional 各种库的可用性相关的信息。
本版本新增内容
本版本的手册包含编辑的更正信息。 下面部分中介绍了必要的变更:
部分 更改/补充
替换文档
手册大全光盘(订货号 A5E00069051)中的 CP 文档
8797900 (http://support.automation.siemens.com/WW/view/de/8797900)
9836605 (http://support.automation.siemens.com/WW/view/de/9836605)
可单独订购快速入门光盘,该光盘是程序示例和组态示例宝库。
21827955 (http://support.automation.siemens.com/WW/view/de/21827955)
● Hotspot-Text (http://www.automation.siemens.com/net/index_00.htm)
(关于 SIMATIC NET 的常规信息)
● Hotspot-Text (http://support.automation.siemens.com/WW/view/de)
(产品信息和下载)
50305045 (http://support.automation.siemens.com/WW/view/zh/50305045)
前言 ..................................................................................................................................................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
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
如何提供 - 块库
说明
STEP 7/STEP 7 Professional 产品的组件
随 STEP 7 V5.5 和 STEP 7 Professional 提供的库内容可能有所不同。
下表给出了供货时的块编号。
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)
图例:
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 的说明。
应使用何种块版本?
下列描述还包括各种块版本之间的不同特性信息。 请检查并记录所使用的块的版本标识
符。
说明
建议对所有模块类型都使用最新的块版本。
在客户支持中的以下条目 ID 下可找到有关最新块版本和从 Internet 下载最新块的信息:
8797900 (http://support.automation.siemens.com/WW/view/de/8797900)
本建议的前提是:用户正在使用特定模块类型的最新固件。
更换模块时使用的程序块
模块更换表示用一个更新型的模块更换现有模块。
说明
请谨记,如果进行了模块更换,则在用户程序中只能使用已组态 CP 类型所允许的块。
建议对所有模块类型都使用最新的块版本。
本建议的前提是:用户正在使用特定模块类型的最新固件。
如何提供 - 块库
说明
STEP 7/STEP 7 Professional 产品的组件
随 STEP 7 V5.5 和 STEP 7 Professional 提供的库内容可能有所不同。
下表给出了供货时的块编号。
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)
应使用何种块版本?
下列描述还包括各种块版本之间的不同特性信息。 请检查并记录所使用的块的版本标识
符。
说明
建议对所有模块类型都使用最新的块版本。
在客户支持中的以下条目 ID 下可找到有关最新块版本和从 Internet 下载最新块的信息:
8797900 (http://support.automation.siemens.com/WW/view/de/8797900)
本建议的前提是:用户正在使用特定模块类型的最新固件。
更换模块时使用的程序块
模块更换表示用一个更新型的模块更换现有模块。
说明
请谨记,如果进行了模块更换,则在用户程序中只能使用已组态 CP 类型所允许的块。
建议对所有模块类型都使用最新的块版本。
本建议的前提是:用户正在使用特定模块类型的最新固件。
1.3 用于调用程序块的参数
有关调用和分配参数的一般注意事项
在详细描述程序块之前,了解一些关于调用和设置程序块参数的常规注释将非常有用。
下面的常规信息适用于所有程序块的以下现有参数组:
● 用于 CP 和连接分配的参数(输入参数)
● 状态信息(输出参数)
注意
调用 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 中的信息)。
当在用户程序中分配块参数时,请按照下列概要步骤进行操作:
1. 选择块调用和块参数;
2. 右击并选择菜单命令“连接...”。
3. 根据块类型,现在即可从列表中选择准备用于块的连接和/或模块。
4. 确认您的选择;尽可能地,将可用参数值均输入到块调用中。
对不正确地址的响应
原因 反应/代码
说明
如果由于疏忽而导致寻址的不是 CP,而是另一种模块类型,则将出现无法由程序块本身
的错误消息进行指示的错误。
指定 CPU 上的数据区
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 =
– 8181 H 用于 AG_SRECV
2.1.1 程序块及其用途概述
概述
程序块 可用于 1) 含义
S7-300 S7-400
● S7300:
● S7-400:
详细信息
应用
下图说明了如何使用此处介绍的程序块在组态的连接上进行双向数据传送。
67(3 67(3
䞷㓆䲚ㄞ 䞷㓆䲚ㄞ
䞷㓆 䞷㓆
㟿㗽◉ 㟿㗽◉
$*B6(1' ♠抐 㘴㟅 $*B5(&9
扭㘴
$*B5(&9 㘴㟅 ♠抐 $*B6(1'
说明
除非另外声明,否则此处及随后几页的信息均适用于 AG_SEND / AG_LSEND /
AG_SSEND 或 AG_RECV / AG_LRECV / AG_SRECV 块。
样例程序
17853532 (http://support.automation.siemens.com/WW/view/de/17853532)
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 类型(“使用要求”部
分)。
下表显示了各种不同连接类型的限制值。
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)
AG_RECV (S7-400) 240 个字节 240 个字节 240 个字节 240 个字节
AG_SSEND (S7-400) 1452 个字节 1452 个字节 1452 个字节 1452 个字节
AG_SRECV (S7-400)
说明
有关可通过较旧版本的以太网 CP 进行传送的数据区的长度信息,请参见所使用的以太网
CP 的产品信息/手册。
在无作业报头时使用
使用报头
自由的 UDP 连接要求在用户数据区中有一个作业报头。
下面的示意图说明了作业缓冲区的结构以及作业报头中参数的含义和位置(高字节/低字
节)。
䞷㓆㟿㗽◉
3RUW ++LJK%\WH (% +/RZ%\WH %\WH
⇫₩冢⑁⣷ (+ % + %\WH
,3⦿⧏
+ + %\WH
⇫₩㔴⯃
䞷㓆㟿㗽
只有在对作业进行确认之后才能修改调用参数
说明
一旦触发了作业,只能在 FC 通过 DONE=1 或 ERROR=1 确认作业完成后,才能更改程
序块 AG_SEND 或 AG_RECV 的调用接口的调用参数。
如果不遵守该规则,则可能因错误而中止作业。
● CP 处于 STOP 状态;
● 连接还没有组态
● 连接还没有建立
● 连接已中止;
代码:
● AG_SEND:
DONE=0;ERROR=1;Status=8183H
● AG_RECV:
DONE=0;ERROR=0;Status=8180H
或
DONE=0;ERROR=1;Status=8183H
2.1.2 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'
$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 ); //状态代码
说明
如果要使用 FC53 AG_SSEND,则需要在组态连接期间,在连接属性中选择“SPEED
SEND/RECV”模式。
工作原理
FC 功能的工作方式将取决于正在使用的 CP 类型。
㒭$*B6(1'ᦤկ
᭄
;
$&7
$*B6(1'
Ϯ▔⌏
Ў$*B6(1'ᦤկ
$&7
䗮䖛ҹ㔥Ӵ䗕
;
$*B6(1' ▔⌏
Ϯ▔⌏
$*B6(1'
ϮᏆᅠ៤ˈϨ᮴䫭
ᯊ䯈 ᯊ䯈 ᯊ䯈
খ᭄Ӵ䗕'21(ǃ(5525ǃ67$786
㒭$*B6(1'ᦤկ
᭄
;
$&7
$*B6(1'
Ϯ▔⌏ ফ
থ䗕㓧ކऎЁⱘഫ
ᦤկ$*B6(1'
$&7
$*B6(1'
Ϯ▔⌏ ফ
থ䗕㓧ކऎЁⱘഫ
$*B6(1'
Ϯ▔⌏ ফ
থ䗕㓧ކऎЁⱘഫQ
䗮䖛ҹ㔥Ӵ䗕 ᭄䆄ᔩ;ᏆӴ䗕DŽ
▔⌏
$*B6(1'
ϮᏆᅠ៤ˈϨ᮴䫭
ᯊ䯈 ᯊ䯈 ᯊ䯈
খ᭄Ӵ䗕'21(ǃ(5525ǃ67$786
说明
原理上,在 CPU 周期内有可能多次调用 FC,以加速作业的处理。 然而,切勿忘记这将
增加 CPU 周期中的负载(负载随 CPU 类型不同而不同)!
形式参数的说明
下表说明了
AG_SEND/AG_LSEND/AG_SSEND 函数的所有形式参数:
参数 声明 数据类型 取值范围 说明
参数 声明 数据类型 取值范围 说明
条件代码
说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。
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
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)
2.1.3 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/
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 ); //已接收的数据长度
说明
如果要使用 FC63 AG_SRECV,则需要在组态连接期间,在连接属性中选择“SPEED
SEND/RECV”模式。
工作原理
FC 功能的工作方式取决于正在使用的 CP 类型和连接类型。
对于这些连接类型,无论数据区的长短如何,都在第一个块调用后,由 CP 开始传
送整个数据区。
必须重复调用,直到数据记录已经完全、一致地输入到接收缓冲区为止。 在后续的
其中一个 FC 调用中通过参数 NDR=1 指示完整数据记录的接收。
在此用于将数据传送到接收缓冲区的协议需要对每个段(240 字节的用户数据)重复调用
FC。
根据用户数据的长度,必须重复调用 FC,直到通过参数 NDR=1 指示完整传送为止。
$*B5(&9
ᇮϡᄬӏԩৃկՓ⫼ⱘ᭄
䗮䖛ҹ㔥Ӵ䗕
$
՟
$*B5(&9 བˈᄫ㡖໘Ѣ⌏ࡼ
⢊ᗕ
ᇮϡᄬӏԩৃկՓ⫼ⱘ᭄
$*B5(&9
ϮᏆᅠ៤ˈϨ᮴䫭
ফ䆘Ԅ᠔ᬊⱘ᭄
$
䗮䖛ҹ㔥Ӵ䗕
%
՟བ
ˈᄫ㡖໘Ѣ⌏ࡼ⢊ᗕ
$*B5(&9
ᇮϡᄬӏԩৃկՓ⫼ⱘ᭄
$*B5(&9
ϮᏆᅠ៤ˈϨ᮴䫭
ফ䆘Ԅ᠔ᬊⱘ᭄
%
$*B5(&9
䗮䖛ҹ㔥Ӵ䗕
&
໘Ѣ⌏ࡼ⢊ᗕ
ᯊ䯈 ᯊ䯈 ᯊ䯈
খ᭄Ӵ䗕1'5ǃ(5525ǃ67$786
只要数据记录已经完整地、一致地输入到接收缓冲器中,就将在后续的某个 FC 调用中使
用参数 NDR=1 对其进行表示。
$*B5(&9 䗮䖛ҹ㔥Ӵ䗕
$
ᇮϡᄬӏԩৃկՓ⫼ⱘ᭄ ▔⌏
$*B5(&9
ϮᏆᅠ៤ˈϨ᮴䫭
ফ䆘Ԅ᠔ᬊⱘ
᭄
$
䗮䖛ҹ㔥Ӵ䗕
%
▔⌏
$*B5(&9
ᇮϡᄬӏԩৃկՓ⫼ⱘ᭄
$*B5(&9
ϮᏆᅠ៤ˈϨ᮴䫭
ফ䆘Ԅ᠔ᬊⱘ
᭄
%
$*B5(&9
䗮䖛ҹ㔥Ӵ䗕
&
▔⌏
ᯊ䯈 ᯊ䯈 ᯊ䯈
খ᭄Ӵ䗕'21(ǃ(5525ǃ67$786
$*B5(&9
ᇮϡᄬӏԩৃկՓ⫼ⱘ᭄
䗮䖛ҹ㔥Ӵ䗕
$
՟
$*B5(&9 བˈᄫ㡖໘Ѣ⌏ࡼ
⢊ᗕ
ᇮϡᄬӏԩৃկՓ⫼ⱘ᭄
$*B5(&9
ϮᏆᅠ៤ˈϨ᮴䫭
ফ䆘Ԅ᠔ᬊⱘ᭄
$
䗮䖛ҹ㔥Ӵ䗕
%
՟བ
ˈᄫ㡖໘Ѣ⌏ࡼ⢊ᗕ
$*B5(&9
ᇮϡᄬӏԩৃկՓ⫼ⱘ᭄
$*B5(&9
ϮᏆᅠ៤ˈϨ᮴䫭
ফ䆘Ԅ᠔ᬊⱘ᭄
%
$*B5(&9
䗮䖛ҹ㔥Ӵ䗕
&
໘Ѣ⌏ࡼ⢊ᗕ
ᯊ䯈 ᯊ䯈 ᯊ䯈
খ᭄Ӵ䗕1'5ǃ(5525ǃ67$786
只要数据记录已经完整地、一致地输入到接收缓冲器中,就将在后续的某个 FC 调用中使
用参数 NDR=1 对其进行表示。
$*B5(&9
䗮䖛ҹ㔥Ӵ䗕
$
▔⌏
ᇚ㓧ކऎЁ䕧ܹᴹ㞾
᭄䆄ᔩ$ⱘ᠔᭄᳝DŽ
ϮᏆᅠ៤ˈϨ᮴䫭
ফ䆘Ԅ᠔ᬊⱘ᭄
$
ᯊ䯈 ᯊ䯈 ᯊ䯈
খ᭄Ӵ䗕1'5ǃ(5525ǃ67$786
$*B5(&9
67$786
䗮䖛ҹ㔥Ӵ䗕
$
▔⌏
$*B5(&9
㓧ކऎЁⱘৃ⫼᭄ ϮᏆᅠ៤ˈϨ᮴䫭
ফ䆘Ԅ᠔ᬊⱘ᭄
$
ᯊ䯈 ᯊ䯈 ᯊ䯈
খ᭄Ӵ䗕1'5ǃ(5525ǃ67$786
形式参数的说明
下表解释了
AG_RECV / AG_LRECV / AG_SRECV 功能的所有形式参数:
参数 声明 数据类 可能值 说明
型
参数 声明 数据类 可能值 说明
型
参数 声明 数据类 可能值 说明
型
条件代码
下表显示了由 NDR、ERROR 和 STATUS 参数构成的代码,其中的参数必须由用户程序
进行计算。
说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。
1 0 0000H 已接受新数据。
0 0 8180H 尚未提供数据(不带 AG_SRECV)。
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)
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)
2.2.1 程序块及其用途概述
概述
程序块 可用于: 含义
S7-300 S7-400
组态时须当心
工作原理
通过这些程序块,可以协调对系统内存区域的访问,从而避免了创建和传送不一致的数
据。 通过 S7 CPU 中的用户程序进行控制,在必要时,可以调用 AG_LOCK 禁止外部
FETCH/WRITE 访问。 经过一定时间后或在完成本地写/读访问后,可使用 AG_UNLOCK
作业来重新启用外部访问。
^
$*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=1,那么,这表明开启了锁定;数据现在即可通过用户程序进行修
改。
状态代码将在每次块调用时进行更新。
2.2.2 AG_LOCK
块的含义
使用 AG_LOCK 块,禁止在通过参数 ID 选定的连接上使用 FETCH 或 WRITE 进行数据
交换。 LOCKED 输出指示锁定是否成功。 如果锁定失败,那么必须在后面的 CPU 周期
中重新触发该作业。
调用
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 ); //状态代码
形式参数的说明
参数 声明 数据类 取值范围 说明
型
2.2.2.3 AG_LOCK的条件代码
条件代码
表格 2- 2 AG_LOCK 条件代码
STATUS 含义
7000H CP 没在处理作业
7001H FETCH 已激活
7002H WRITE 已激活
8183H 没有为该连接组态 FETCH/WRITE(仅对 S7-400)
8186H ID 号不在允许范围内(例如,对于 S7-400 工业以太网 CP 的范围是 1...64)
STATUS 含义
2.2.3 AG_UNLOCK
块的含义
调用
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 还将通过出错信息显示当前状
态。
形式参数的说明
参数 声明 数据类 可能值 说明
型
2.2.3.3 AG_UNLOCK的条件代码
条件代码
表格 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 该模块不能识别数据记录。
STATUS 含义
2.3 用于连接和系统诊断的程序块
2.3.1 AG_CNTRL
工作原理
说明
AG_CNTRL 和 AG_CNTEX
与程序块 AG_CNTRL 相比,程序块 AG_CNTEX 可提供更多功能。
AG_CNTEX 包含了 AG_CNTRL 的所有功能,可以在用户程序中以相同方式使用这些功
能。
可通过设置命令实现下列动作:
● 读出连接信息
根据状态信息,可以确定复位所有或单个 CP 连接是否有用。
● 复位已组态的连接
可以复位 CP 的个别或所有连接。
● 终止活动连接,并重新建立连接
调用接口
FBD 中的调用接口
$*B&175/
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
参见
2.3.1.2 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
下图显示如何在开始时查询连接状态,然后在另一个作业中,如何使用复位命令触发连接
终端。
说明
必须使用 ACT = 1 调用块;如果使用 ACT = 0 调用,则没有功能调用,立即退出块。
由于与调用同步获取 FC10 的作业结果,因此,可在同一个周期中重新调用。
形式参数的说明
参数 声明 数据类 可能值 说明
型
参数 声明 数据类 可能值 说明
型
2.3.1.4 AG_CNTRL代码
条件代码
表格 2- 4 AG_CNTRL 代码
命令和评估作业结果
说明
使用较早 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)
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: 当前正在执行接收作业
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 作业保留的连接
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)
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 状态)。
CMD 含义
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) 含义
参数 十六进制数值/范围
CMD 含义
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。 连接中止已启动。
CMD 含义
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)
2.3.2 AG_CNTEX
意义及工作原理
使用 AG_CNTEX 程序块可以对连接进行诊断,并可使用 Ping 命令通过网络对设备进行
寻址。 必要时,可以使用 AG_CNTEX 重新初始化连接建立过程。
说明
AG_CNTRL 和 AG_CNTEX
与程序块 AG_CNTRL 相比,程序块 AG_CNTEX 可提供更多功能。
AG_CNTEX 包含了 AG_CNTRL 的所有功能,可以在用户程序中以相同方式使用这些功
能。
可通过设置命令实现下列动作:
● 读出连接信息
根据状态信息,可以确定复位所有或单个 CP 连接是否有用。
● 复位已组态的连接
可以复位 CP 的个别或所有连接。
● 终止活动连接,并重新建立连接
可以检查网络中的特定节点是否可到达。
说明
块库中的可用性
如果 SIMATIC_NET_CP 块库中还没有程序块 AG_CNTEX,请安装当前版本的 SIMATIC
NET 块库。可通过 Internet 在以下条目 ID 下找到此库:
8797900 (http://support.automation.siemens.com/WW/view/de/8797900)
调用接口
FBD 表达式调用接口
$*B&17(;
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
工作原理
䙑㍠䬴⾸ ⩓偺#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
下图显示如何在开始时查询连接状态,然后在另一个作业中,如何使用复位命令触发连接
终端。
说明
调用此块后,必须设置 ACT = 1。 如果使用 ACT=0 执行调用,则没有函数调用,立即再
次退出该块。
由于与调用同步获取 AG_CNTEX 的作业结果,因此,可在同一个周期中重新调用
AG_CNTEX。
运行模式/调用顺序
说明
只能通过组态的连接发送 Ping
仅当至少组态了一个用于 SEND/RECEIVE 接口的连接(TCP、ISO-on-TCP、ISO-
Transport、UDP)时,才能使用 Ping 命令。
ὣ0).'崠㵫㓹!'?#.4%8盶
!#4盷#-$盷)$
0).')0894)-%/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
⓫㚙⁉愪$/.%ѥ%22/2ѥ34!453▵2%35,4
同时发送多个 Ping 请求
Ping 请求何时完成?
只要满足以下条件之一,Ping 请求即视为已完成:
● Ping 结果已读出:
形式参数的说明
下表对 AG_CNTEX 函数的所有形式参数进行了说明:
参数 声明 数据类 取值范围 说明
型
参数 声明 数据类 取值范围 说明
型
PING 数据块
PING 参数会引用数据块,其数据结构如下:
参数 数据类型 取值范围 说明
条件代码
表格 2- 6 AG_CNTEX 的代码
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 结果请求完成当前
处理过程。
命令和评估作业结果
说明
使用较早 CP 类型或较旧固件版本的命令评估
当前的 CP 类型或固件版本支持下面所述的命令。有关更多详细信息,另请参见以下条目
ID 下的内容:
33414377 (http://support.automation.siemens.com/ww/view/en/33414377)
表格 2- 7 FC AG_CNTRL 的命令
CMD 含义
0 NOP – no operation
执行块,但并不向 CP 发送作业。
RESULT (对于 CMD = 0) 含义
参数 十六进制数值/范围
RESULT1 0000 0001H 无错执行
RESULT2 0000 0000H 默认值
CMD 含义
CMD 含义
CMD 含义
– 由于连接处于“已锁定”状态,作业无法转发
给 CPU。
– 由于 FETCH/WRITE 报头结构不正确,作
业被拒绝。
位 11 FETCH/WRITE 作业的状态
0: 无激活的作业
1: 来自 LAN 的作业激活
CMD 含义
CMD 含义
CMD 含义
CMD 含义
CMD 含义
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 含义
CMD 含义
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 模式
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 超时: 指定监视时间内无回应。
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)
2.4.1 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 连接
参见
含义
通过 FB40,可以建立 FTP 连接,并从 FTP 服务器传送文件或将文件传送到 FTP 服务
器。
FB40 的优点如下:
● 通过使用命令变量而不是不同的函数调用,简化用户程序
● 附加函数"APPEND"
"APPEND"允许将数据添加到现有文件。
● 附加函数"RETR_PART"
"RETR_PART"允许从文件检索选定的数据区。
● 附加函数“CONNECT_TLS_PRIVATE”
“CONNECT_TLS_PRIVATE”可用于建立安全 SSL 连接
有效性
从下列模块类型起,可以使用 FB40:
*) 不能使用“CONNECT_TLS_PRIVATE”函数。
调用接口
FBD 表达式调用接口
)73B&0'
$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); //状态信息
调用的系统函数
说明
请注意,不能使用老式 SIMATIC S7-300 CPU 的 FTP 客户端服务,例如 CPU 312 或
CPU 315-1AF01,原因是它们不支持 SFC24。
输入参数的说明
参数 声明 类型 取值范围 含义/说明
参数 声明 类型 取值范围 含义/说明
参数 声明 类型 取值范围 含义/说明
“CMD”参数中的 FTP 命令
下面的表格解释了“CMD”参数命令的含义,并说明了需要提供哪些输入参数。 必须始终
设置 ID 和 LADDR 参数,以识别连接。
表格 2- 9 “CMD”参数中的 FTP 命令
关于“NAME_STR”参数内容的实例
参数记录具有下列内容:
相对地址 2) 名称 类型 1) 示例 含义
相对地址 2) 名称 类型 1) 示例 含义
1) 指定尽可能最大的字符串长度
2) 指定值与“类型”中指定的字符串长度有关。
简介
为了进行状态评估,必须在用户程序中对下列参数进行计算:
参数 声明 类型 取值范围 含义/说明
示例
在作业执行期间,FB40 返回下列代码:
● DONE=0
● ERROR=0
● STATUS = 8181H
含义: 作业仍在运行。
评估状态代码
说明
对于 STATUS 中以 8FxxH 编码的条目,请参见“STEP 7 标准和系统函数”参考手册中的
信息。 描述通过 RET_VAL 输出参数进行错误评估的章节含详细信息。
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 的最大数目
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 不包含任何有效数据。
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 引用
● 由“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
-
2.4.3 FTP_CONNECT
含义
通过调用该函数,FTP 客户端建立一个到 FTP 服务器的 FTP 连接。
调用接口
)73B&211(&7
$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);
常规调用参数的解释
特定的调用形式参数解释
表格 2- 14 用于 FTP_CONNECT 的形式参数
参数 声明 数据类型 说明
LOGIN 参数
对于 FTP_CONNECT,该参数记录内容如下:
相对地址 名称 类型 1) 示例 含义
2)
相对地址 名称 类型 1) 示例 含义
2)
2.4.4 FTP_STORE
含义
该函数调用将一个数据块(文件 DB)从 FTP 客户端(S7-CPU)传送到 FTP 服务器。
调用接口
FTP_STORE
ANY FILE_NAME
INT BUFFER_DB_NR
INT FILE_DB_NR
STL 的调用实例
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- 15 用于 FTP_STORE 的形式参数
参数 声明 数据类型 说明
FILE_NAME 参数
对于 FTP_STORE,该参数记录包含下列内容:
相对地址 名称 类型 1) 示例 含义
2)
2.4.5 FTP_RETRIEVE
含义
调用接口
FTP_RETRIEVE
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- 16 用于 FTP_RETRIEVE 的形式参数
参数 声明 数据类型 说明
FILE_NAME 参数
对于 FTP_RETRIEVE,该参数记录包含下列内容:
相对地址 名称 类型 1) 示例 含义
2)
2.4.6 FTP_DELETE
含义
通过该函数调用,删除 FTP 服务器上的文件。
调用接口
FTP_DELETE
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- 17 用于 FTP_DELETE 的形式参数
参数 声明 数据类型 说明
LOGIN 参数
对于 FTP_DELETE,该参数记录包含下列内容:
相对地址 名称 类型 1) 示例 含义
2)
2.4.7 FTP_QUIT
含义
通过该函数调用,建立使用 ID 选定的 FTP 连接。
调用接口
FTP_QUIT
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.8 用于CP和连接分配的参数(输入参数)
用于 CP 和连接分配的参数(输入参数)
参数 声明 类型 1) 可能值 含义
– 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 的模块起始地址。
注意
确保在设置了 ACT = 1 时,每个用户 ID 只调用一个 FTP 客户端程序块。
例如,FTP_STORE 和 FTP_RETRIEVE 不得同时在同一 FTP 连接上运行。 满足此要
求才能实现正常的 FTP 功能。
否则不能指望输出参数是正确性的(DONE 位、ERROR 位和 STATUS 字)。
2.4.9 状态信息(输出参数)
状态信息(输出参数)
为了进行状态评估,必须在用户程序中对下列参数进行计算:
参数 声明 类型 1) 可能值 含义
说明
对于 FC FTP_QUIT,STATUS 参数只能使用存储字数据类型(只适用于 CP 343-1 IT)。
示例
在作业执行期间,FC 返回下列代码:
● DONE=0
● ERROR=0
● STATUS = 8181H
评估状态代码
说明
对于 STATUS 中以 8FxxH 编码的条目,请参见“STEP 7 标准和系统函数”参考手册中的
信息。 该章描述了 RET_VAL 输出参数错误评估的详细信息。
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 字节。
2.4.10 数据块文件DB
过程
若要使用 FTP 传送数据,可在 S7 站的 CPU 上创建数据块(文件 DB)。 这些数据块必须
具有特定结构,以允许它们作为可传送文件由 FTP 服务进行处理。 它们由下列部分组
成:
● 部分 1: 文件 DB 报头(具有固定长度,20 字节)
● 部分 2: 用户数据(具有可变的长度和结构)
用于 FTP 客户端模式的文件 DB 报头
请注意: 此处描述的文件 DB 报头大部分与服务器模式的文件 DB 报头相同。 区别在于
下列参数:
● WRITE_ ACCESS
● FTP_REPLY_CODE
参数 Type 数值/含义 电源
参数 Type 数值/含义 电源
参数 Type 数值/含义 电源
过程
● 部分 1: 文件 DB 报头(具有固定长度(20 字节)和结构)
● 部分 2: 用户数据(具有可变的长度和结构)
● WRITE_ ACCESS
● FTP_REPLY_CODE
参数 Type 数值/含义 电源
参数 Type 数值/含义 电源
参数 Type 数值/含义 电源
例如,大量机器制造商是发现这一优势的典型用户,他们要为客户提供简单的用户界面,
但需要调整通信服务以适应操作员输入。 最终用户不需要 STEP 7 的知识。
说明
请记住,此处描述的功能取决于所使用 CP 类型的特性(支持的连接类型)。 在手册中可找
到相关信息。
更多信息
在/1/ (页 330)中可找到有关以下主题的更多信息:
● 可组态连接类型的属性;
● 有关组态 IP 访问保护的信息;
● 有关数据量和组态限制的信息。
2.5.1 工作原理
编程和组态间的相互作用
已编程组态的原理
俭ㄪ㚙㒗⢀
&")0?#/.&)'
#0䞭两倈㚙㒗
愇㓎
⁉愪⍙#0䞭
俭ㄪ㚙㒗
愇㓎
愇㓎N
N㠩⩐Ⅵ
以太网 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 地址)和新的连接数据并进
行处理。
数量限制
特性/限制
STEP 7 中的连接组态包括在使用已编程组态时无法执行或仅能在一定限制条件下执行
的一致性检查!
● 需要对伙伴进行连接组态
在 STEP 7 中组态指定的连接时,为伙伴隐式创建连接;对于已编程组态,不能执行
该操作! 在这种情况下,必须为伙伴组态合适的连接。
● 组态 IP 访问保护
● 支持 DHCP/DNS
● 上传时无连接信息
● 为具有多个接口的 CP 组态连接
如果使用具有多个接口(例如,千兆位接口)的 CP,请查阅设备手册以了解是否两个接
口均支持该连接组态。
● 不能同时使用 PROFINET IO
2.5.2 过程
初始状态
此处所述的步骤假定用户满足以下条件:
组态 CP 属性
设定连接设置
通过用户程序建立连接的基本步骤如下:
1. 为组态 DB 中的系统和连接数据创建子域。
2. 设置组态 DB 中的连接属性。
含义
块和数据结构
下图说明了以下内容:
● 根据参数域和子域生成的结构
– 连接和特定系统数据通过相同结构的参数域进行描述。
– 各个参数由子域描述特征。
● 偏移范围
俭ㄪ
㚙㒗⢀
ⅸ䬤听⠝N
#/.&?$" 两倈㚙㒗#0兽偺 ▵愇㓎
$"㤰峯䱏 䞭⓫㚙⤈
#0䞭两倈㚙㒗 䶤⢴
)$两倈㚙㒗ὣ㜟
愇㓎
ⱹ⤈倿┠ ⱹ⤈
愇㓎 ⱹ⤈
ⱹ⤈ ┭ὓ
⓫㚙
愇㓎N
ⱹ⤈N
① 在下面的系统数据的参数域(IP组态) (页 129)中,将对各参数字段进行介绍
② 在下面的连接类型的参数域 (页 130)中将介绍子域类型
参见
子域类型 (页 138)
2.5.4 组态数据块 - 实例
下面是一个具有系统数据参数域和 TCP 连接参数域的组态数据块实例。
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
以下是实例 DB 中使用的类型定义。
“系统数据”子域的类型定义
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
子域“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 条目的示例:
符号 地址 数据类型
参见
子域类型 (页 138)
2.5.5 系统数据的参数域(IP组态)
含义
下面给出了与 CP 的 IP 组态相关的系统数据参数域和需要在其中指定的子域。
某些应用不需要所有子域类型,有关详细信息,请参见下表。
布局
类型 = 0
ID = 0
子域数 = n
子域 1
子域 2
子域 n
...
可用的子域
子域 参数
ID 类型 特性/说明 应用***)
1 SUB_IP_V4 本地 IP 地址 ++
2 SUBNET_MASK - ++
子域 参数
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 的取值范围:
● S7-400: 1,2...64
● S7-300: 1,2...16
2.5.6.1 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
子域 参数
ID 类型 特性/说明 应用***)
19 SUB_LOC_MODE - +
21 SUB_KBUS_ADR 对于 S7300 的 CP,该值始终设置 ++ (适用于 S7-
为 2,无需进行指定。 400)
22 SUB_CON_ESTABL - ++
*)对于被动连接为可选。
***)++ = 必需;+ = 可选
参见
子域类型 (页 138)
2.5.6.2 UDP连接的参数域
布局
类型 = 2 -> ①
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_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连接的参数域
布局
类型 = 3 -> ①
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 地址 ++ *)
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)
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
可用的子域
子域 参数
ID 类型 特性/说明 应用***)
说明
邮件服务器端口是“众所周知的端口”,无需进行指定。
参见
子域类型 (页 138)
2.5.6.5 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 协议 ++
子域 参数
ID 类型 特性/说明 应用***)
参见
子域类型 (页 138)
2.5.7 子域类型
不同的参数域需要不同的参数。 每个参数均由子域描述。 前面部分的系统数据和连接类
型说明中介绍了所需的子域。
每个子域均由特定的参数部分和报头(4 字节)组成。
示例
地址 名称 类型 初始值 注释
地址 名称 类型 初始值 注释
=4.0 END_STRUC
T
=8.0 END_STRUC
T
全部可用子域类型如下:
参见
组态数据块 - 实例 (页 125)
块的含义
调用
FBD 中的调用接口
,3B&21),*
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 地址。
说明
应尽量避免对地址重复定义
如果使用 FB55,需确保分配的 IP 地址唯一。 如果同一地址检测到两次,则在网络中可
能不会激活 CP。
2.5.9 IP_CONFIG如何工作
在用户程序中处理
使用 FB55 时,必须区分以下使用情况:
● 标准应用
● 在容错系统(H 系统)中使用
说明
RUN 模式下的 CPU
在 H 系统中,如果分配的 CPU 处于 RUN 模式,则只能使用 FB55 组态 CP。
如果还要为冗余机架上的 CP 设置参数,建议执行以下步骤:
注意:
原则上,在 OB100 启动期间调用失败的 FB55,仍可在 OB72 中调用。 但是,由于需
要多次调用 FB,这会导致 OB 执行时间的延长。因此建议在 OB1 中执行上述步骤。
工作原理
如果要在以后传送连接组态,那么必须至少在一个进一步调用中首先以数值 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!
形式参数的说明
参数 声明 数据类 可能值 说明
型
预留端口号
保留下列本地端口号;不在连接项目工程中使用这些端口号。
表格 2- 18 预留端口号
协议 端口号 服务
条件代码
与作业执行有关的常规代码
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)。
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 区域中读取参数超时。
该函数块的含义
如果要将逻辑触发器用于 ERPC 通信,则可使用 FB56 函数块 LOGICAL_TRIGGER。
LOGICAL_TRIGGER 调用需要其它块:
● 自动生成的背景数据块
● 数据块“CONF_DB”
如果要调用多个逻辑触发器,则还需要使多个组态 DB 可用。
有效性
● CP 343-1 ERPC
调用
FBD 中的调用接口
/2*,&$/B75,**(5
,17 &21)B'%
,17 &QI/HYHO
表格 2- 20 STL 的示例
2.6.2 LOGICAL_TRIGGER的工作原理
工作原理
步骤 含义
2.6.3 LOGICAL_TRIGGER形式参数的说明
形式参数的说明
参数 声明 数据类 可能值 说明
型
参数 声明 数据类 可能值 说明
型
参数 声明 数据类 可能值 说明
型
条件代码
下表显示了根据 DONE、ERROR 和 STATUS 形成的条件代码,其中这些参数必须由用
户程序进行计算。
表格 2- 21 FB56 LOGICAL_TRIGGER 代码
与作业执行相关的代码
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 组态。
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 对于用户程序没有更多意义。
对组态数据块进行编程
地址 名称 类型 初始值 注释(可选)
*) STRUCT *)
*) ident DWORD DW#16#4552504 报头标识符
3
*) data array[1..2048 DB 大小(请参见下面的警
] 告)
*) Byte
地址 名称 类型 初始值 注释(可选)
*) END_STRUCT *)
*)值由程序输入
说明
DB 大小
推荐的 DB 大小为 2048 个字节。 如果调试期间该值明显不足,则增大该值。 如果该值
过低,则由 FB56 LOGICAL_TRIGGER 和 STATUS“8A05H”进行报告错误。
2.7 组态限制/程序块所需的资源(以太网)
所需资源
说明
请注意各个块的版本信息。目前的块版本可能与此处显示的版本不同。其它版本块对资源
的要求可能不同。
有关当前块版本的信息,请参见以下条目 ID:
9836605 (http://support.automation.siemens.com/WW/view/de/9836605)
用于传送用户数据的程序块
程序块 可用于: 含义
S7-300 S7-400
用于传送数据记录和中断信息的程序块
程序块 可用于: 含义
S7-300 S7-400
用于 PROFIenergy 的程序块
程序块 可用于: 含义
S7-300 S7-400
3.2.1 PNIO_SEND
工作原理
程序块 PNIO_SEND 用于在 CP 的 PROFINET IO 控制器模式或 PROFINET IO 设备模式
下传送数据。
● 作为 PROFINET IO 控制器运行
● 作为 PROFINET IO 设备运行
经预处理的过程数据在 DB 或位存储区内可用。
扩展
● 从块版本 V2.0 起
● 从块版本 V3.0 起
– IO 使用者状态参数中的附加详细状态信息
调用接口(从块版本 2.0 起)
FBD 中的调用接口
31,2B6(1'
&+(&.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 个字节)
形式参数的说明
参数 声明 数据类型 可能值 说明
参数 声明 数据类型 可能值 说明
参数 声明 数据类型 可能值 说明
IO 设备模式:
根据在 PROFINET IO 控制器链上
为此 PROFINET IO 设备组态的输
入模块的插槽的顺序传送数据。
注意事项:
确保此处编程的长度与 PROFINET
IO 控制器的组态一致。 为设备传送
包括所有间距的整个数据区长度。
DONE OUTPUT BOOL 0: - 该参数指示是否无错完成该作业。
1:接受的新数据
ERROR OUTPUT BOOL 0: -1: 错误 错误代码
STATUS OUTPUT WORD - 状态代码
参数 声明 数据类型 可能值 说明
该块将启动地址 0 的状态传送。
注意事项:
ANY 指针的最大长度是(长度 LEN +
7/8)
说明
等待确认执行
只有当块发出 DONE = 1 或 ERROR = 1 的信号后,才执行以下操作:
评估输出参数;
更改 MODE 参数。
说明
必须假定所返回的 IOCS 状态与数据(SEND 参数)没有同步到达,而是延迟了一个用户程
序周期。 这意味着: 用户数据和 IOCS 不一致
3.2.1.3 PNIO_SEND的条件代码
条件代码
说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。
表格 3- 1 条件代码 PNIO_SEND
0 0 8180H 数据传输处于活动状态;
或
CP 处于 STOP 模式。
0 0 8181H 模块不支持块版本 2.0。
解决方法: 使用块版本 1.0。
1 0 0000H 无错误传送新数据。
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
工作原理
● 作为 PROFINET IO 控制器运行
● 作为 PROFINET IO 设备运行
扩展
● 从块版本 V2.0 起
● 从块版本 V3.0 起
– IO 提供者状态参数中的附加详细状态信息
调用接口(从块版本 2.0 起)
FBD 中的调用接口
31,2B5(&9
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 个字节)
参见
数据一致性 (页 181)
替换值 (页 182)
形式参数的说明
参数 声明 数据类型 可能值 说明
– IO 设备模式(无并行 有关兼容性的注意事项:
8YH
限制 CHECK_IOPS 中
的组消息;IOPS 中无状
态位。
参数 声明 数据类型 可能值 说明
参数 声明 数据类型 可能值 说明
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。
参数 声明 数据类型 可能值 说明
参数 声明 数据类型 可能值 说明
说明
等待确认执行
只有当块发出 DONE = 1 或 ERROR = 1 的信号后,才执行以下操作:
评估输出参数;
更改 MODE 参数。
3.2.2.3 PNIO_RECV的条件代码
条件代码
说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。
表格 3- 2 条件代码 PNIO_RECV
0 0 8180H 激活数据接受;
或
CP 处于 STOP 模式。
0 0 8181H 模块不支持块版本 2.0。
解决方法: 使用块版本 1.0。
1 0 0000H 无错接受新数据。
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 通信错误(临时发生,通常建议在用户程序中重复执行该作业)。
IO 消耗者状态(IOCS)和 IO 提供者状态(IOPS)
块调用和 IO 数据之间的关系
● 作为 PROFINET IO 控制器操作
当作为 PROFINET IO 控制器时,CP 不监视 PNIO_SEND/RECV 块的周期性调用。
如果没有调用块,则最后传送的 IO 数据和 IOCS/IOPS 数据将被认为是有效。
● 作为 PROFINET IO 设备操作
FC11 和 FC12 均有各自的监视狗。 根据 CPU 周期,如果在初始化阶段后不再调用
两个块之一,则终止到 PROFINET IO 控制器的连接。
实例:
例如,在每个周期内,可以只传送第一个数据区(对时间有严格要求的数据),而在每个第
二周期内传送所组态 IO 数据的总长度。 为此,在组态期间,必须将对时间有严格要求的
数据放在较低的区(从 IO 地址 0 开始)中。
3.2.4 数据一致性
应始终以整体方式传送 PROFINET IO 控制器的整个输入或输出数据区,以确保数据一致
性。
● 作为 PROFINET IO 控制器操作
不管怎样,通过使用块调用中的长度信息,也可一致地读取或输出小于所组态数据区
的一个输入或输出区。
块调用
然而,为了保证数据一致性,当块无错完成时(输出参数 NDR=TRUE),必须只访问 IO 数
据。 也必须检查数据的 IOCS 或 IOPS 状态是否为 GOOD。
实例
在正常情形下(取决于 IO 数据的总长),块将运行几个用户程序周期,直到发出条件代码
DONE/NDR=1 信号。
崬䙑0.)/?2%#6⢀盨䠝⍙.$2
⪫㣅栩媪ⴢ時崘愄奵⨭䔯盨
⍂㧩㤎ῷ)/峧⨰㍩㓎㙟㚙㒗䞭)/03䏟ㄪѦ
⋯⨰▵⨭䔯㚙㒗盨⋯⨰㛙䞭悼⌣
㚙㒗Ѧ
崬䙑0.)/?3%.$⢀盨䠝⍙$/.%
⪫㣅栩媪ⴢ時崘愄奵⨭䔯盨
⍂㧩㤎慃惰)/峧⨰㍩㓎㙟㚙㒗䞭)/#3䏟ㄪⅥѦ
3.2.5 替换值
操作情况
在下列两种操作情形下,均支持替代值的设置:
● 如果检测到问题时的替代值(删除/插入或工作站故障/返回)
启动期间的替代值
可以在启动 OB 中设置一个存储位(“启动”存储位),使用替换值初始化输出。在周期性模
式(OB1)中,判断该“启动”存储位,在必要时使用初始值调用 PNIO_SEND。
3.2.6 PNIO_RW_REC
意义及工作原理
http://support.automation.siemens.com/WW/view/en/19289930
调用接口
FBD 中的调用接口:
PNIO_RW_REC
WORD CPLADDR
BOOL WRITE_REC
STATUS WORD
INT LEN
ANY RECORD
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 个字节)
形式参数的说明
下表介绍了 FB52 中的所有形式参数:
参数 声明 数据类型 可能值 说明
参数 声明 数据类型 可能值 说明
3.2.6.3 PNIO_RW_REC的条件代码
条件代码
说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。
表格 3- 3 PNIO_RW_REC 条件代码
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 设备或模块报告一个非法类型
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
工作原理
报警按照其信号发出的时间顺序转发给用户程序。 其信号尚未发送到用户程序以及因后
续报警过多而导致无效的报警都不会被新到的报警删除。
说明
只要尚未调用该块,报警会在 CP 中自动确认。
如果 FB54 已在用户程序中调用过(至少)一次,则必须继续调用该块才能确认未决的报
警。 当 FC12 因 ADD_INFO 参数值不等于"0"而发出信号时会发生这种情况。
如果 FB54 在用户程序中被调用过一次或多次之后而不再被调用,则报警不会被确认,且
不能保证 IO 图像将进行正确的更新。 例如,当发生"站返回"报警后会发生这种情况。 只
能通过重新启动 CP 才能重设 FB54 的调用需求。
调用接口
FBD 中的调用接口
PNIO_ALARM
ERROR BOOL
NEW BOOL
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
形式参数的说明
参数 声明 数据类型 可能值 说明
参数 声明 数据类型 可能值 说明
3.2.7.3 PNIO_ALARM的条件代码
条件代码
下表介绍了由 DONE、NEW、ERROR 和 STATUS 参数形成的条件代码,这些参数必须
由用户程序进行评估。
说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。
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 模块不识别数据记录
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
PROFIenergy 控制器
PROFIenergy 设备
PROFIenergy 控制器的命令由带有 PROFIenergy 功能的 IO 设备处理,以将现场连接设
备关闭。
智能设备
节能模式和 PE_MODE_ID
许多设备仅支持“准备运行”(通电)和“暂停”(断电)工作状态。 可为支持的设备或
PROFIenergy 设备控制器中的多组单元指定带有不同节能模式的标定节能状态。 使用
PROFIenergy 可将这些不同的能耗状态分配给要在现场关闭的设备。
各种不同的能耗状态即称为“节能模式”。 每一种节能模式都指定一个经过定义的
“PE_MODE_ID”。
节能模式的功能编程
PROFIenergy 规范
● CP 300 作为 IO 控制器:
– PE_START_END_CP
– PE_CMD_CP
每台 PROFIenergy 设备都必须单独调用程序块。
– DS3_WRITE_CP
● CP 300 作为 IO 设备:
– PE_I_DEV_CP
使 IO 设备的响应帧可用于 IO 控制器。
PE_I_DEV_CP 由 IO 设备的用户程序周期性调用。
用于传送数据记录的系统和程序块
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(B67$57B(1'B&3
3(B&0'B&3 3(B,B'(9B&3
˄352),HQHUJ\ࠊ఼˅ ˄352),HQHUJ\䆒˅
ݭϮ
1(:
ݭડᑨ˄ℷ˅
䇏Ϯ
䇏ડᑨ˄䋳ˈ
䌘⑤㹿ऴ⫼ᖭ˅ V
PV
䇏Ϯ
䇏ડᑨ˄ℷ˅
V
ᯊ䯈 ᯊ䯈
使用 RDREC 读取 IO 设备的响应数据。
FBD 表达式调用接口
3(B67$57B(1'B&3
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 的地址
PE_START_END_CP 形式参数的说明
参数 声明 数据类型 取值范围 说明
参数 声明 数据类型 取值范围 说明
PE_START_END_CP 的条件代码
表格 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 不受支持
参见
PNIO_RW_REC的条件代码 (页 185)
3.3.3 PE_CMD_CP
意义及工作原理
PE_CMD_CP 可代替 PE_START_END_CP 使用。
FBD 表达式调用接口
3(B&0'B&3
%<7( &0'B02',),(5
$1< &0'B3$5$
,17 &0'B3$5$B/(1
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 形式参数的说明
参数 声明 数据类型 取值范围 说明
04: PEM_Status
05: PE_Identity
16:
Query_Measurement
参数 声明 数据类型 取值范围 说明
参数 声明 数据类型 取值范围 说明
– 对于修饰符 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: 成功完成执行 该作业。
参数 声明 数据类型 取值范围 说明
● 01 = Start_Pause
用于开始节能暂停的命令。
IO 设备选择组态的节能模式。 节能模式反馈给响应数据中的控制器。
● 02 = End_Pause
用于结束节能暂停的命令
● 03 = Query_Modes
通过 IO 设备上所有相应的时间和能源信息查询组态的节能模式。
使用 CMD_MODIFIER 参数详细查看查询的信息:
– List_Energy_Saving_Modes
– Get_Mode
● 04 = PEM_Status
查询现场设备或单元组实际采用的节能模式。
● 05 = PE_Identity
● 16 = Query_Measurement
查询 IO 设备的能源数据。
使用 CMD_MODIFIER 参数详细查看查询的信息:
– Get_Measurement_List
读取设备上所有组态的 Measurement_ID。
– Get_Measurement_Values
用于不同设备类别的命令
● 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
还可查询变频器采集的电气变量数据。
PE_CMD_CP 的条件代码
表格 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 不受支持
参见
PNIO_RW_REC的条件代码 (页 185)
3.3.4 响应数据
响应数据的结构
表格 3- 6 响应数据的结构
块定义 属性 值 数据类型 说明
块定义 属性 值 数据类型 说明
服务标头响应 状态 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 设备的响应数据结构
PROFIenergy 命令“Start_Pause”
● 服务数据请求
– CMD = 01
– CMD_MODIFIER = 00
– CMD_PARA_LEN = 04
值: T#-24D_20H_31M_23S_648MS 到 T#24D_20H_31M_23S_647MS
● 服务数据响应
参数 值 数据类型
* 节能模式的标识号
PROFIenergy 命令“End_Pause”
● 服务数据请求
– CMD = 02
– CMD_MODIFIER = 00
– CMD_PARA_LEN = 00
– CMD_PARA = 不相关
● 服务数据响应
参数 值 数据类型
Time_to_operate * Unsigned32
* PROFIenergy 设备切换到“准备运行”状态的预计时间
● 服务数据请求
– CMD = 03
– CMD_MODIFIER = 01
– CMD_PARA_LEN = 00
– CMD_PARA = 不相关
● 服务数据响应
参数 值 数据类型
* 节能模式数目
● 服务数据请求
– CMD = 03
– CMD_MODIFIER = 02
– CMD_PARA_LEN = 01
● 服务数据响应
参数 值 数据类型
参数 值 数据类型
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 = 不相关
● 服务数据响应
参数 值 数据类型
参数 值 数据类型
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
● 服务数据请求
– 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 部分的精度
2 精度级别(范围 1...15):
0 = 预留
1 (0.01%) ... 15 (>20%)
3 如果 Accuracy_Domain = 1 则为测量范围;否则为未定义
● 服务数据请求
– CMD = 16
– CMD_MODIFIER = 02
– CMD_PARA_LEN = 数据结构长度(字节)
参数 值 数据类型
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
参数 值 数据类型
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
意义及工作原理
FBD 表达式调用接口
3(B,B'(9B&3
,1'(; ,17
1(: %22/
(5525 %22/
67$786 :25'
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 );
PE_I_DEV_CP 形式参数的说明
参数 声明 数据类型 取值范围 说明
参数 声明 数据类型 取值范围 说明
参数 声明 数据类型 取值范围 说明
PE_I_DEV_CP 的条件代码
参见
PNIO_RW_REC的条件代码 (页 185)
3.3.6.1 FC 概述
功能
补充程序块 FC 0 到 FC 8 支持由 PE_I_DEV_CP 提供给控制器的响应数据的准备过程:
FC 概述
下列补充程序块可用:
表格 3- 7 补充 FC 概述
编号 名称
FC 0 PE_ERROR_RSP
FC 1 PE_START_RSP
编号 名称
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(B,B'(9B&3 )&)&
&3/$''5,1
5(6(7,1 ). #-$䎢ⳃ䞭⓫㚙
䙑㍠
䙑㍠
&0'B3$5$287
䙑㍠
287&0'B02',),(5 &0'B02',),(5,1
䙑㍠
2871(: 1(:,1
䙑㍠䞭峭⁙▵◶⾽
䙑㍠悼⊎
说明
程序块互连绝对有必要
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 输入
参数互连。
参数 声明 数据类型 取值范围 说明
3.3.6.4 FC 的单独参数
FC 0 到 FC 8 的单独参数
下文介绍 FC 的单独参数。
PE_ERROR_RSP
表格 3- 8 FC 0 PE_ERROR_RSP 的单独参数
参数 声明 数据类型 取值范围 说明
PE_START_RSP
表格 3- 9 FC 1 PE_START_RSP 的单独参数
参数 声明 数据类型 取值范围 说明
返回消息,其中带有现场设备或单元组已采用的 PE_Mode_ID。
PE_END_RSP
表格 3- 10 FC 2 PE_END_RSP 的单独参数
参数 声明 数据类型 取值范围 说明
PE_LIST_MODES_RSP
生成对“Query_Modes”> 修饰符“List_Modes”命令的响应(支持的节能模式列表)。
必须在用户程序中指定节能模式的 ID。
表格 3- 11 FC 3 PE_LIST_MODES_RSP 的单独参数
参数 声明 数据类型 取值范围 说明
如果设备或组需要对不同的暂停长度做出不同的反应,则可设置不同的节能模式
(PE_Mode) 来实现此目的。 将不同的 PE_Mode_ID 分配给不同的节能模式。
“PE_Mode_ID”的可能值:
● 00h: PE_Power_off
● 01h...FEh: 自由组态或供应商特定
● FFh: PE_Ready_to_operate
PE_GET_MODE_RSP
表格 3- 12 FC 4 PE_GET_MODE_RSP 的单独参数
参数 声明 数据类型 取值范围 说明
* PROFIenergy 配置文件不指定无效的时间格式。
如果时间不受限制,则可指定最大值 FFFFFFFFh。
如果时间为零,则可使用 00h。
** 如果未定义能耗值,则可指定 0.0 (Float32)。
PE_PEM_STATUS_RSP
表格 3- 13 FC 5 PE_PEM_STATUS_RSP 的单独参数
参数 声明 数据类型 取值范围 说明
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”的可能值:
● 00h: PE_Power_off
● 01h...FEh: 自由组态或供应商特定
● FFh: PE_Ready_to_operate
PE_IDENTIFY_RSP
表格 3- 14 FC 6 PE_IDENTIFY_RSP 的单独参数
参数 声明 数据类型 取值范围 说明
PE_MEASUREMENT_LIST_RSP
表格 3- 15 FC 7 PE_MEASUREMENT_LIST_RSP 的单独参数
参数 声明 数据类型 取值范围 说明
PE_MEASUREMENT_VALUE_RSP
表格 3- 16 FC 8 PE_MEASUREMENT_VALUE_RSP 的单独参数
参数 声明 数据类型 取值范围 说明
3.3.7 DS3_WRITE_CP/PE_DS3_Write_ET200S_CP
程序块 DS3_WRITE_CP 的以下说明也适用于具有相同功能的 STEP 7 Professional 的
PE_DS3_Write_ET200S_CP。
意义及工作原理
FBD 表达式调用接口
'6B:5,7(B&3
,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 返回参数的地址
DS3_WRITE_CP 形式参数的说明
参数 声明 数据类型 取值范围 说明
参数 声明 数据类型 取值范围 说明
DS3_WRITE_CP 的条件代码
参见
PNIO_RW_REC的条件代码 (页 185)
所需资源
说明
请注意各个块的版本信息。目前的块版本可能与此处显示的版本不同。其它版本块对资源
的要求可能不同。
有关当前块版本的信息,请参见以下条目 ID:
9836605 (http://support.automation.siemens.com/WW/view/de/9836605)
意义及工作原理
为了确保数据的一致性,只有在作业完成时(DONE=1 或 ERROR=1),才能修改要传送的
数据或开始读取已接收的数据。
在用户程序中,确保在完成数据传送时,只有在所有输入数据已经读取且所有输出数据已
经写入到接口 DB 之后,才能再次调用 FB88/FB90。
有以下几点:
● 接口参数需完全相同;
● 接口数据块的组态限制存在差异(参见相关手册)。
说明
对于与接口数据块的处理有关的更详细信息,请参见 SIMATIC iMap 文档。
说明
当重新装载用户程序块时,只有在将 CPU 初次切换到 STOP 状态时,才确保数据的
一致性。
如何提供 - 块库
调用接口
FBD 表达式调用接口
PN_InOut / PN_InOut_Fast
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);
形式参数的说明
参数 声明 数据类型 说明
评估状态代码
1 0 0000H 作业已完成,且无错误。
0 0 0000H 当前没有处理作业;可以调用块。
0 0 8181H 激活作业。
或
(仅限于 FB90): 到已寻址的模块的连接建立处于活动状态(参见 8090H
下的信息)。
0 1 8183H (仅适用于 S7-300)
服务尚未启动;尚不可能接受数据。
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)
临时错误: 当前正在处理所指定的数据记录。
说明
对于包含 8FxxH (对于 S7-300)和 8xxxH (对于 S7-400)编码的条目,请注意参考手册
“STEP 7 标准和系统功能“中 STATUS 下的信息。 该章描述了 RET_VAL 输出参数错误评
估的详细信息。
CP 启动期间的状态代码
● DONE=0
● ERROR=0
● STATUS = 8181H
时间触发调用 - 关于应用的建议
对于编程,请注意下列建议:
调用时间 OB 的周期不应超过 30 s。
结果:
由于将定时器 OB 与 OB1 中的实际块调用分离,可以在 CPU 和 CP 之间复制 CBA 用户
数据,而不会出现明显的中断。 根据应用要求,可以选择前几次调用之间的时间间隔。
5.1.1 使用概述
概述
程序块 可用于 1) 含义
S7-300 S7-400
应用
67(3 67(3
䞷㓆䲚ㄞ 䞷㓆䲚ㄞ
抩扖352),%86
䤓)'/扭㘴
'3 '3
㟿㗽◉ 㟿㗽◉
AG_SEND ♠抐 㘴㟅 AG_RECV
AG_RECV 㘴㟅 ♠抐 AG_SEND
无作业报头的应用
使用作业报头进行工作
● 带有广播的 FDL 连接
● 带有多点传送的 FDL 连接
下图阐述了作业缓冲区的结构以及作业报头中参数的含义和位置。
䞷㓆㟿㗽◉
PB−Adresse LSAP Byte 0, 1
⇫₩冢⑁⣷ Service unbenutzt Byte 2, 3
Datenbyte 0 Datenbyte 1 Byte 4, 5
⇫₩㔴⯃
䞷㓆㟿㗽
请注意,在块调用中指定的数据长度(LEN 参数)必须包括报头和用户数据!
5.1.2 AG_SEND/AG_LSEND
块的含义
选定的数据区可以是一个过程映像区、存储位区或数据块区。
注意事项:
除非另外声明,否则下面的所有信息对于 FC AG_SEND 和 AG_LSEND 二者都适用。
调用
FBD 中的调用接口
$*B6(1'$*B/6(1'
$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 ); //状态代码
带作业报头的调用
下表给出了必须在作业报头中提供其参数的连接类型和作业类型。
表格 5- 1 在用户数据区中提供作业报头
参数 FDL 连接类型
未指定: 空闲层 2 2) 广播 组播
FDL 连接类型
工作原理
在这之后,必须在至少一个调用中传递参数 ACT=0。
请参见本部分末尾的实例程序。
ὣ!'?3%.$㓹㚙㒗l8m
!#4
$*B6(1'
㓹!'?3%.$
!#4
慃惰
02/&)"53
⁉愪
$*B6(1' l8m䃩㹤
$*B6(1'
㜟朝 㜟朝 㜟朝
⠧㸑盶
⓫㚙⁉愪$/.%ѥ%22/2ѥ34!453
形式参数的说明
下面的表格解释了 AG_SEND/AG_LSEND 功能
的所有形式参数:
参数 声明 数据类型 可能的数值 说明
参数 声明 数据类型 可能的数值 说明
条件代码
说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。
表格 5- 2 AG_SEND 条件代码
1 0 0000H 作业完成无错误。
0 0 0000H 没有任何作业在执行中。
0 0 8181H 激活作业。
0 1 7000H 此条件代码仅适用于 S7-400: 使用 ACT=0 调用 FC;作业尚未处理。
0 1 8183H 没有组态或尚未在 PROFIBUS CP 上启动 FDL 服务。
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)。
5.1.3 AG_RECV/AG_LRECV
块的含义
程序块 AG_RECV/AG_LRECV 接收 PRFIBUS CP 通过已组态的 FDL 连接上传送而来的
数据。
为接收数据指定的数据区可以是过程映像区、位地址区或数据块区。
注意:
调用接口
FBD 中的调用接口
$*B5(&9$*B/5(&9
1'5 %22/
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 ); //状态代码
带作业报头的调用
表格 5- 3 返回 FDL (用户)数据区的作业报头中的参数
参数 FDL 连接类型
未指定: 空闲层 2) 广播 组播
PB 地址 发送方的地址
值范围: 0 - 126,取决于节点
LSAP 发送方的 LSAP
值范围: 0 - 63,取决于节点
服务 SDN 指示 SDN 指示 SDN 指示
(不带确认的发送数据 - 指 (不带确认的发送数 (不带确认的发送数
示): 据 - 指示): 据 - 指示):
数值: 01H 数值: 7FH 数值: 7FH
或
SDA 指示(带确认的发送数据
- 指示):
数值: 00H
工作原理
䗮䖛
352),%86Ӵ䗕
$
ℷ
$*B5(&9
ᠻ㸠
$*B5(&9
ফ䆘Ԅ᠔ᬊⱘ
᭄
$
䗮䖛
352),%86Ӵ䗕
%
ℷ
$*B5(&9 ᠻ㸠
$*B5(&9
ফ䆘Ԅ᠔ᬊⱘ
᭄
%
$*B5(&9 䗮䖛
352),%86Ӵ䗕
&
ℷ
ᠻ㸠
ᯊ䯈 ᯊ䯈 ᯊ䯈
⊼˖
খ᭄Ӵ䗕'21(ǃ(5525ǃ67$786
形式参数的说明
下面的表格解释了用于
AG_RECV/AG_LRECV 功能的所有形式参数:
参数 声明 数据类型 可能值 说明
参数 声明 数据类型 可能值 说明
条件代码
下表显示了由 NDR、ERROR 和 STATUS 参数构成的代码,其中的参数必须由用户程序
进行计算。
说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。
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)太短。
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.1 使用概述
概述
程序块 可用于: 含义
DP 主站 DP 从站
应用
'30DVWHU '36ODYH
67(3 67(3
䞷㓆䲚ㄞ 䞷㓆䲚ㄞ
'3 '3
㟿㗽◉ 㟿㗽◉
'3B6(1' ♠抐 㘴㟅 '3B5(&9
352),%86
'3B5(&9 㘴㟅 ♠抐 '3B6(1'
5.2.2 DP_SEND
含义
● 当在 DP 主站中使用时
● 当在 DP 从站中使用时
选定的数据区可以是一个过程映像区、存储位区或数据块区。
如果 DP-SEND 用于初始化,则不接受传送数据区域并向从站发送“0”。必须通过第二次
块调用才会接受要传送的用户数据。
调用接口
DP_SEND
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 触发的数据传送的正常顺序。
'3B6(1'
用户数据‘A’
未更改!
'3B6(1'
通过 PROFIBUS
传送
‘替换数据 (0)’激活
'3B6(1'
'3B6(1' 通过
PROFIBUS
用户数据‘B’ 传送‘A’激活
未更改!
'3B6(1'
'3B6(1'
图注:
1)
参数传送 DONE、ERROR、STATUS
2)
对于较旧 CP 类型,可以使用条件代码 8183H
确保数据传送
形式参数的说明
参数 声明 数据类型 取值范围 说明
5.2.2.4 DP_SEND条件代码
条件代码
说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。
表格 5- 5 DP_SEND 条件代码
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 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 逻辑基址错误。
5.2.3 DP_RECV
含义
程序块 DP_RECV 通过 PROFIBUS 接收数据。 根据 PROFIBUS CP 的不同模式,
DP_RECV 可能为下列含义:
● 当在 DP 主站中使用时
,DP_RECV 从分布式 I/O 接收过程数据及状态信息,并将这些数据和信息输入到一
个指定的 DP 输入区。
● 在 DP 从站上使用时
DP_RECV 接受由 DP 主站传送的在块中指定的 DP 数据区的输出数据。
为接收数据指定的数据区可以是过程映像区、位地址区或数据块区。
● 如果 DP-RECV 用于初始化,则不会采用接收的数据。必须通过第二次块调用才会接
受要接收的用户数据。
附加任务: 输入状态字节
DP_RECV 功能具有下列附加任务:
● 启用站列表(参见DP (页 272))。
调用接口
DP_RECV
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 触发的数据传送的正常顺序。
'3B5(&9RGHU'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
确保接受数据
注意以下内容:
● 在 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 仅获取最后接收的数据。
形式参数的说明
参数 声明 数据类型 可能的数值 说明
参数 声明 数据类型 可能的数值 说明
条件代码
下表显示了由 NDR、ERROR 和 STATUS 参数构成的代码,其中的参数必须由用户程序
进行计算。
说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。
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 将否定确认写入模块中。
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 逻辑基址错误。
DPSTATUS
DP 主站模式
7 6 5 4 3 2 1 0
0
位 含义
7 没有使用
6 该位未设置。
请阅读手册中的信息。
5,4 DP 主站的 DPSTATUS 的数值:
00 RUN
01 CLEAR
10 STOP (现在是 OFFLINE 模式)
11 OFFLINE
请阅读手册中的信息。
位 含义
3 值 1: 周期性同步处于活动状态
2 值 0: 不存在新的诊断数据
数值 1: 评估可用的诊断列表;至少一个站有新的诊断数据。
1 值 0: 所有 DP 从站都处于数据传送阶段
数值 1: 评估站列表有效
0 DP 模式
值 0: DP 主站模式
当没有设置该位时,其他位只具有指定的含义。
DP 从站模式
7 6 5 4 3 2 1 0
1
位 含义
7-5 没有使用
4 该位未设置。
请阅读手册中的信息。
3 该位未设置。
请阅读手册中的信息。
2 值 1: DP 主站 1 处于 CLEAR 模式。 DP 从站在用于输出的 DP 数据中接收数值 0。 这对已发送的
发送数据没有影响。
1 值 1: 还未完成组态/参数分配。
0 值 1: DP 从站模式:
当设置该位时,其他位只具有指定的含义。
说明
请注意,在设置返回参数 NDR=1 之前,禁止计算 DPSTATUS。
5.2.4 DP_DIAG
块的含义
程序块 DP_DIAG 用于请求诊断信息。 可以使用下列作业类型:
● 请求 DP 站列表
● 请求 DP 诊断列表;
● 请求 DP 单个状态;
● 非周期性地读取 DP 从站的输入/输出数据
● 读取较早的 DP 单个诊断信息
● 读取 DP 状态。
● 读取 DP 从站的当前状态。
通过指定一个站地址,还可以为一个指定的从站请求诊断数据。
说明
FC DP_DIAG 只有在 DP 主站模式中才有实际用途。
例外
只要运行着该块,就不能给该块提供新的作业数据。
调用接口
DP_DIAG
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如何工作
调用接口上的顺序/处理
通过第一次调用触发作业。 只有在其中一个后继调用的确认中才返回诊断数据。
⫼᠋ᑣ 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 中。
形式参数的说明
参数 声明 数据类型 可能值 说明
参数 声明 数据类型 可能值 说明
作业类型
下列关于 DTYPE、SATION 和 DIAGLNG 规范的概述显示了允许使用或有效的条目。
表格 5- 8 DP_DIAG 的作业类型
0 读取 DP 站列 --- - 忽略 - 模块起始地址
表 当组态 CP 时,在组态表中会显示模块的起始地
址。 在此指定该地址。
1 读取 DP 诊断 --- - 忽略 - DP 诊断列表提示 CPU 关于 DP 从站的新诊断数据
列表 信息。
用于诊断数据的环形缓冲区
㇢ⓜ⺈幬㫕≰㋾ 䶻㶰床幎桽᧷
䶻₹戒㡸䤓⺈幬㫕≰㋾ 䶻㶰床幎桽᧷䶻㶰床幎桽
䶻₹戒㡸䤓⺈幬㫕≰㋾ 䶻㶰床幎桽᧷
图 5-3 用于诊断数据的环形缓冲区
读取当前诊断数据后,读指针复位到下一个最新的诊断数据。
5.2.4.6 DP_DIAG代码
条件代码
说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。
表格 5- 9 DP_DIAG 代码
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 不能读取数据记录
5.2.5 DP_CTRL
块的含义
DP_CTRL 程序块将控制作业传送到 PROFIBUS CP。可以指定一个作业字段
(CONTROL 参数),用来更详细地指定控制作业。
可以使用下列作业类型:
● 周期/非周期全局控制;
● 删除较早的诊断数据;
● 设置当前 DP 模式;
● 周期性地读取输入/输出数据;
● 设置 DP 从站的操作模式。
对于在此列出的作业类型,有一些限制(请参见模块手册中的信息),
说明
FC DP_CTRL 只有在 DP 主站模式中才有实际用途。
连接器
只要运行着该块,就不能给该块提供新的作业数据。
调用接口
DP_CTRL
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如何工作
调用接口上的顺序/处理
通过第一次调用触发作业。 只有在其中一个后继调用的确认中才返回诊断数据。
'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 中。
形式参数的说明
参数 声明 数据类型 取值范围 说明
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
作业类型
根据 CTYPE 规范以及作业域中的信息,在下列概述中显示作业允许或可行的规范。
或取消激活:
UNSYNC
UNFREEZE
UNCLEAR(CLEAR 位 = 0)
可以在命令模式参数中指定多个作业。
只能由另一个全局控制作业(周期性或非周期
性)终止一个激活的周期性全局控制作业。
要终止在命令模式中设置的作业,必须取消该
作业。 例如,由一个 UNSYNC 作业
取消 SYNC 作业。
3 删除较早的 DP 单 第 1 个字节: 1 为一个或所有 DP 从站删除存储在 PROFIBUS
个诊断数据 从站地址 CP 上的较早诊断数据。
1 - 126
127 = 所有
从站
命令模式的结构
在命令模式参数中,为周期和非周期全局控制作业指定输入和输出数据的模式。
含义如下:
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
5.2.5.6 DP_CTRL条件代码
条件代码
说明
对于 STATUS 中以 8FxxH 编码的条目,请参见引用的系统程序块说明中的输出参数
RET_VAL 的相关信息。
可在 STEP 7 中查询使用了哪些系统程序块以及哪些系统程序块与错误评估相关。
表格 5- 10 DP_CTRL 条件代码
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 不存在拥有该地址的模块。
所需资源
说明
请注意各个块的版本信息。目前的块版本可能与此处显示的版本不同。其它版本块对资源
的要求可能不同。
有关当前块版本的信息,请参见以下条目 ID:
9836605 (http://support.automation.siemens.com/WW/view/de/9836605)
概述
列表给出了供货时的块编号。 可以更改这些块编号。
FB 调用接口
下面部分描述了如下所示的每个 FB 的调用接口:
)%[
67$786 :25'
下表解释了所有块参数的含义、数据类型、数值范围以及内存区域。
输入参数
S7–400;
该 ID 指定 LAN 连接和
K 总线连接。
确保使用来自连接组态
的 ID 或使其与该 ID 相
匹配。
输出参数
INPUT/OUTPUT 参数
存储区
表格中内存区域的缩写形式与下面一致:
简短形式 类型
I 输入
Q 输出
M 位存储器
L 临时局部数据
D 数据块区
C Counter
T 定时器
DBX 数据块
CP 启动期间的 FB 输出参数(S7400)
● DONE=0
● NDR=0
● ERROR = 1
● STATUS = 0001(尚未建立连接)或
STATUS = 0607(Get-OV 仍在运行)
6.3 IDENTIFY
块的含义
● 设备制造商的名称。
● 设备型号名称。
● 设备版本(修订)。
例如,根据所接收的信息,可以:
● 设置本地程序功能与伙伴性能和响应相匹配
● 设置通讯参数
调用接口
,'(17,)<
67$786 :25'
9(1'25 675,1*
02'(/ 675,1*
5(9,6,21 675,1*
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如何工作
工作原理
)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
含义
READ 功能根据作业的参数分配,从由名称或索引指定的通讯伙伴的数据区读取数据。
在一个数据块中局部保存读取的数据,该区域是输入/输出的过程映像中的区域或位存储
区的一个区域。
要求: 组态通讯变量
通讯伙伴(FMS 服务器)上的变量结构是固定的。 建立 FMS 连接时,从通讯伙伴上读取结
构描述。 然后可以在 PROFIBUS CP 上用于将数据转换成 FMS 表达式。
访问权限
FB 调用接口
5($'
$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如何工作
工作原理
)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
确保数据传送
读作业的肯定确认并不表示由伙伴应用程序注册了读作业。
6.5 REPORT
块的含义
作为通讯伙伴的 S7 站
为了使通讯伙伴接受已报告的变量,必须在组态通讯伙伴(FMS 客户端)期间输入这些变
量。
调用接口
5(3257
$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 ); //详细的错误解码信息
说明
参数 SD_1 用于寻址数据区,从该数据区读取和报告变量值。 根据 FMS 约定,还必须指
定 FC 接口上的变量索引。 但是,在执行调用时,不检查该信息的一致性。
6.5.2 REPORT如何工作
工作原理
)066HUYHU )06&OLHQW
⫼᠋ᑣ 352),%86&3 352),%86&3
&38਼ᳳ
ᬃᣕ,1387খ᭄
&$//)%5(4
ᬃᣕ,1387খ᭄
&$//)%5(4
5(32573'8
^
Ң)06Ḑᓣ䕀ᤶ᭄
㸼 ᑊ⫼᠋᭄ऎЁ䕧ܹ
Ꮖᅠ៤
ᯊ䯈 ᯊ䯈 ᯊ䯈
খ᭄Ӵ䗕'21(ǃ(5525ǃ67$786
6.6 STATUS
块的含义
有以下可用的信息:
● VFD 的逻辑状态;
例如,是否可进行通讯的信息
● VFD 的物理状态
关于设备状态的信息
● 与设备有关的信息
通常提供与制造商有关的信息
下表提供了设备可针对状态请求提供的代码信息:
调用接口
)%
67$786 :25'
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 ); //用于"本地详细信息"的数据区
6.6.2 STATUS如何工作
工作原理
)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
6.7 WRITE
含义
使用一个变量名或一个变量索引指定通讯伙伴的数据区。
要求: 组态通讯变量
访问权限
调用接口
:5,7(
$1< 6'B
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如何工作
工作原理
ᬃᣕ,1387খ᭄
&$//)%5(4
ᬃᣕ,1387খ᭄
&$//)%5(4
:5,7(5HTXHVW3'8
^
PLW'DWHQ
ܹݭ ;;
⌏ࡼⱘ ;;
Ң)06Ḑᓣ䕀ᤶ᭄
ᑊ⫼᠋᭄ऎЁ䕧ܹ
:5,7(
^ &RQILUPHG3'8
ܹݭᏆᅠ៤
ᯊ䯈 ᯊ䯈 ᯊ䯈
খ᭄Ӵ䗕'21(ǃ(5525ǃ67$786
确保数据传送
作业的肯定确认并不表示已经由伙伴应用程序接收并处理了数据。
表结构
为了能有更好的全面了解,下面列出了错误代码:
䟀)06↨⇃㭏㿚Ⓙ枨
⦷㦻⦿㭏㿚Ⓙ枨幾
幾
㫈㗽ₚ⒦⚓欈㇡兓᧶
枨幾伊Ⓔ㦘␂屲摙᧨庆♑屐ₚ嫷
枨幾ⅲ䪐⚺⃘♑屐ₚ嫷
无错执行作业
如果无错执行了作业,那么 FB 接口上的参数具有下列数值:
1 0 0x0000 作业已完成且无错
0 0 0x000B 作业处于活动状态
错误类别
将可能的错误代码分成下列错误类别:
表格 6- 1 "块"错误类别
错误等级 含义
块 指示涉及下列各项的错误或故障:
FB 参数分配
在 CPU 和 CP 中的块执行
应用 指示在用户程序和 FB 之间的接口上的错误或故障。
定义 指示通常涉及用户程序和 FMS 组态之间的不一致性错误。
组件 指示 PROFIBUS CP 上的资源故障。
维修 指示使用所请求的 FMS 服务时的错误或故障。
访问 指示由于下列原因,拒绝访问对象:
缺少访问权限
硬件故障
其他不一致性
Od (对象词典) 指示访问 VFD 对象词典时的故障。
VFD 状态 VFD 上的未指定错误
否则 其他错误
6.8.1 在本地检测到错误
表格 6- 2 "应用程序"错误类别
0 1 0x0001 通讯故障:
例如,未建立通讯总线连接。
0 1 0x0002 无法执行该函数: CP 的否定确认或序列错
误,例如,通讯总线错误。
0 1 0x0200 未指定的应用程序引用错误。
0 1 0x0201 当前不能建立所组态的连接;例如,不能建立
LAN 连接。
表格 6- 3 "定义"错误类别
0 1 0x0300 未指定的定义错误。
0 1 0x0301 没有定义带所请求索引/名称的对象。
0 1 0x0302 对象属性不一致。
0 1 0x0303 名称已经存在。
表格 6- 4 "资源"错误类别
0 1 0x0400 未指定的资源错误。
0 1 0x0401 没有可用内存。
表格 6- 5 "服务"错误类别
0 1 0x0500 未指定服务错误。
0 1 0x0501 由于对象状态发生冲突。
0 1 0x0502 超出已组态的 PDU 大小。
0 1 0x0503 由于对象限制而发生冲突。
0 1 0x0504 参数不一致。
0 1 0x0505 非法参数。
表格 6- 6 "访问"错误类别
0 1 0x0600 未指定访问错误。
0 1 0x0601 无效对象或没有装载 OD。
0 1 0x0602 硬件故障
0 1 0x0603 对象拒绝访问。
0 1 0x0604 无效地址。
0 1 0x0605 对象属性不一致。
0 1 0x0606 不支持对象访问。
0 1 0x0607 对象不位于 OD 中或 GetOD 仍然有效。
0 1 0x0608 类型冲突或变量内容超出允许的数值范围
0 1 0x0609 不支持使用名称进行访问。
表格 6- 8 "其他"错误类别
0 1 0x0800 未指定错误。
6.8.2 由FMS伙伴检测到错误
表格 6- 9 应用程序错误类别
0 1 0x8200 未指定的应用程序引用错误。
0 1 0x8201 无法到达应用程序(例如,用户程序)。
表格 6- 10 定义错误类别
0 1 0x8300 未指定的定义错误。
0 1 0x8301 没有定义带所请求索引/名称的对象。
0 1 0x8302 对象属性不一致。
0 1 0x8303 名称已经存在。
表格 6- 11 资源错误类别
0 1 0x8400 未指定的资源错误。
0 1 0x8401 没有可用内存。
表格 6- 12 服务错误类别
0 1 0x8500 未指定服务错误。
0 1 0x8501 由于对象状态发生冲突。
0 1 0x8502 超出已组态的 PDU 大小。
0 1 0x8503 由于对象限制而发生冲突。
0 1 0x8504 参数不一致。
0 1 0x8505 非法参数。
表格 6- 13 访问错误类别
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 (对象词典)错误类别
表格 6- 15 VFD 状态错误类别/
0 1 0x8000 由伙伴检测到的未指定错误。
说明
请注意各个块的版本信息。目前的块版本可能与此处显示的版本不同。其它版本块对资源
的要求可能不同。
有关当前块版本的信息,请参见以下条目 ID:
9836605 (http://support.automation.siemens.com/WW/view/de/9836605)
表格 6- 16 S7-400 中 FB 的信息
表格 6- 17 S7-300 中 FB 的信息
版本 06 中新增的内容
本版本的手册包含更正信息。
更正信息:
● PROFIenergy 程序块
版本 05 中新增的内容
本版本手册中包含的更正信息和新信息。
更改/补充:
● PROFIenergy
PROFIenergy 功能的新程序块
版本 04 中新增的内容
本版本手册中包含的更正信息和新信息。
更改/补充:
● 新增程序块 AG_CNTEX
在新组态软件中,程序块始终通过其符号名来指定。 本手册会遵循此惯例,大部分情
况下使用程序块名称。 但还是会保留 STEP 7 V5.5 中使用的名称和块编号分配。
● 扩展的程序块 FTP_CMD
版本 03 中新增的内容
本版本手册中包含的更正信息和新信息。
更改/补充:
● 有关块处理的常见问题与解答条目的参考。
版本 02 中新增的内容
本版本手册中包含的更正信息和新信息。
相对上一版本,添加了以下内容:
更改/补充:
● 关于工业以太网部分
数据块文件 DB 的说明现在同时在在线帮助和本手册中提供。
● 关于用于已编程连接和 IP 组态的 FB 部分
该部分现在包括所需组态数据块的完整说明。
此处还添加了为某些 CP 类型组态设备名称的选项。
版本 01 中新增的内容
与 S7 CP 以前的有效手册版本相比,版本 1 在块描述中包括了下列创新:
● 关于工业以太网部分
● 关于 PROFINET IO 部分
PROFINET IO 块中的参数修改
● 目录
目录 (https://eb.automation.siemens.com/goos/catalog)
● Internet 上的文档
到客户支持的链接: (http://support.automation.siemens.com/WW/view/zh)
10805878 (http://support.automation.siemens.com/WW/view/zh/10805878)
转到所需产品组并进行以下设置:
“条目列表”选项卡,条目类型“手册/操作说明”
● STEP 7 安装文档
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)
/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)
I
A ISO-on-TCP 连接
AG_CNTRL, 53
P
C PE_DS3_Write_ET200S_CP, 15
FMS
条件代码和出错消息, 317 T
模块参数, 300
TCP 连接
FTP 连接
参数域, 131
参数域, 137
U
UDP 连接
五划
电子邮件连接
参数域, 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