2024年9月2日发(作者:宓访冬)
S7-400 CPU 41x -- 操作和维护 -- 诊断错误
当分布式I/O出现故
障时,CPU应调用哪
些组织块来保证
CPU不进入“停止”
状态?
?00系列CPU中的
OB122中的出错评
估已经改变
处理错误时需要哪
些组织块?
如何查看一个 DP
主站系统或者
PROFINET IO 系
统的站点状态?
从自动化系统中获
得模块信息和诊断
数据
当 PG/PC 通过
PROFIBUS 进入在
线状态时, CPU 切
换为“停止”
为什么在电源关闭/
打开或在DP标准从
站返回后CPU
300/400 上的
EXTF LED灯保持
亮而不熄灭?
在CPU启动时如何
识别上次停机的事
件并在程序中处理
它(即使在完全复位
之后)?
当诊断缓冲区出现
事件号 530D 时,
为何 CPU S7-400
的 IM 和/或 CP
没有进入 RUN 模
式?
CPU 伴随出错代码
16#4578“STOP
because of
unknown opcode”
停止
为什么在整个系统
完全断电再恢复电
源后CPU保持
STOP状态?
使用块SFC
17“ALARM_SQ”,
SFC
18“ALARM_S”,
SFC
107“ALARM_DQ”
和SFC
108“ALARM_D”时
应注意些什么?
当使用SFC20
“BLKMOV”,
SFC81“UBLKMOV”
或SFC21“FILL”块
时应注意些什么?
当分布式I/O出现故障时,CPU应调用哪些组织块来保证CPU不进入“停止”状态?
显示订货号
组态说明:
当CPU在其运行周期内识别到同步或异步错误(例如:DP从站或者PROFINET I/O设备的
诊断报警,站故障等),将会调用相 应的组织块(OB),用户因此可以对该事件作出响应。
下表列出了出现同步或异步错误时,必须下载到CPU中的OB块,从而CPU能调用它们,确保
CPU不进入“停止”状态。
OB 块
号.
说明 调用条件 错误事件进入事件离开
时调用 分类 进调用
82
诊断报
警
具有诊断功能的模块,使能了诊断报警,当检测
到错误或错误消失时
(如:输入模板的短路故障).
中央机架或扩展设备上的模块移走和插回时
(如:移走一个输入模板)
异步
错误
是 是
83 插/拔
报警
1)
程序循
环错误
异步
错误
是 是
85 - 出现尚未加载到CPU中的报警OB块的调用
事件
- 访问系统功能块 SFB 的背景数据块时出现
错误
- 更新过程印象区时出现错误(模板不存在或
失效)
异步
错误
组态指定 组态指定
86
模块机
架错误
DP 主站系统中的 DP 从站或 PROFINET
异步
错误
是 是
IO 系统中的 IO 设备出现故障
程序错
误
IO 访问
错误
同步
错误
同步
错误
是 否
是 否
121 发生程序错误时 (如:调用的块没有下载)
访问不存在的信号模板
122
1)
对于 S7-300 CPU (除了: CPU 318-2), 插入移除 PROFIBUS DP 从站上的模块并不会产
生插/拔 报警 。取决于所用的 DP 从站,整个DP从站失效将导致调用 OB86 "Subrack failure
子机架错误" , 执行标准诊断,从而调用 OB82 "Diagnostics alarm诊断报警" 。
在 S7-300 CPU中,插/拔报警仅当插/拔发生在PROFINET IO(如移走 IO 设备)上时发生。
如果这些组织块没有装载到CPU,则CPU将因无法调用这些块而进入“停止”状态。
警告:
当使用故障OB时,应当编程进行故障处理或者至少应当在出错时产生一条提示信息,以便安
全和正确地操作设备。需要注意的是,此时CPU可能不再进入到“ STOP”状态,因此这些
危险状态可能会被忽视。关于编程处理出错的OB的详细消息,可参阅STEP 7在线帮助,或
者参考手册“System Software for S7-300/400 System and Standard Functions”——ID号
1214574。
注意事项:
CPU的诊断缓冲区保留着CPU曾经调用过的组织块的信息。
更多详情请按照下列关键字参阅STEP 7的在线帮助:
"Diagnostics > Measures in the program for error handling"
"Calling reference data (LAD/FBD/STL, blocks ...) > Language description, block
help, system attributes > Help on OBs"
"Error OBs"
"Settings for reporting system errors"
以下ID介绍了在CPU的S7程序中 需要调用哪个组织块来进行错误处理: 11499205。
?00系列CPU中的OB122中的出错评估已经改变
显示订货号
问题:
从OB122的错误代码中能否识别出I/O的访问错误是否已经出了好几次错?
解答:
有关I/O访问错误的评估在400系列的CPU中已经改变。现在对于内存区(I/O区域/过程映像)
没有差别。也就是说现在再也不会有发生多次的I/O访问错误(错误代码 B#16#44 和
B#16#45)的消息。
所有I/O访问错误都映射在错误代码B#16#42和B#16#43。因此,再也不能根据OB 122的
错误代码来计数I/O访问错误发生的次数。
以下版本及更高的版本中有这样的改变:
CPU 412 - 1XF03
- 2XG00
CPU 414 - 2XG03
- 3XJ00
CPU 416 - 2XK02
- 3XL00
CPU 417 - 4XL00
- 4HL00
处理错误时需要哪些组织块?
显示订货号
描述:
S7-CPU 可以识别下列类型的错误:
1. 同步错误:
这些错误在处理过程中由特定操作触发,并且可以指定给用户程序的特定部分。
2. 异步错误:
这些错误不能直接指定给运行中的程序。这些错误包括优先级类别错误,自动化系统
错误(模块故障)或冗余错误。
下面的表格是关于组织块 (OBs) 当出现异步或同步错误时被调用情况的概览。如果相关的错
误 OB 没有被下载,CPU 会进入 STOP 状态 (不包括:OBs 70,72,73 和 81)。
Übersicht_ ( 8 KB )
您可以在 CPU 属性中的 “Interrupts” 标签中看到哪些 OBs 可以在您的 CPU 中使能以及
插入到 STEP 7 项目中。
图. 01
通过硬件组态中的菜单“Options > Report ”,也可轻松添加错误处理 OB。
使用错误 OBs 的注意事项:
当错误产生时,若要实现可靠、无故障运转,需要编写故障处理程序,至少要编程在错误发生
时会产生报警信息,因为要考虑 CPU 不会进入停机模式,因此可能造成生产危险不易被察觉。
注意
只有 H-CPU 支持 OB 70 和 OB 72。
OB 73 仅适用于CPU 417-4H V2.0.X。
关于错误 OB 更多信息,可以在 STEP 7 在线帮助中找到:
o "Change in the error evaluation in the OB 122 with series 400 CPUs" - 条目
号: 5708202.
o 关键词 "Generated error OBs".
o 关键词 "Settings for reporting system errors".
后面的条目是关于哪些 OB 需要下载到 CPU 来保证当远程 I/O 出现错误时 CPU
不会进入到停机状态:19350076
电源供电故障的例子
电源供应故障 (只针对 S7-400) 或者缓冲故障触发相应的事件发生,CPU 操作系统调用
OB81 。清除错误后 OB81 再次被调用。如果 S7-400 有电池故障,OB81 只有在
开关激活电池检查后才被调用。如果不对 OB 81 编程,CPU 不会进入停止模式。
如果 OB81 不可用,CPU会在电源供应故障时持续运行。
在例子程序中来自 OB81 的临时变量 "OB81_FLT_ID" 被评估来决定电池故障。在本例中变
量有错误代码 "22hex”。 如果在比较查询(电池故障)中条件满足,标志位M81.1被寻址。
两个事件等级能够通过变量 "OB81_EV_CLASS" 来识别:
B#16#39:到来事件,电池故障。
B#16#38:离开事件,电池故障清除。
评估这些变量的设定,复位标志位 M81.0。
图. 02
如果标志位 M81.1 和 M81.2 的状态是 "TRUE" (在电源故障和到来事件的情况),标志
位 M81.0 被置位。当事件 ID 是离开事件时标志位 M81.0 被复位。上面描述的例子是对于
CPU 运行而电池故障发生的情况。如果电池故障在停止模式下发生,则到来事件 (调用
OB81) 只在 CPU 再次进入运行模式才被触发。如果电源供应关断,则到来事件 (电池故
障) 不会被触发。
更多信息:
关于错误 OBs 的详细信息,可参见 STEP 7 在线帮助或参考手册“System Software for
S7-300/400 System and Standard Functions” ,条目号为:1214574。
关键字:
OB80,OB81,OB82,OB83,OB84,OB85,OB86,OB87,OB121,OB122
如何查看一个 DP 主站系统或者 PROFINET IO 系统的站点状态?
显示订货号
描述:
可以使用 SFC51 "RDSYSST" 读出 SSL 部件列表或选用 SSL 部件列表。 下面的配置在文
中所附的例程中创建:
图. 01
在用户程序(OB1)中,使用 SFC51 "RDSYSST" 读出 CPU 的系统状态列表。
调用 SFC51 "RDSYSST" 时,通过参数 SZL_ID 指定准备读出的系统列表。使用此方法可读
出下列数据,例如:
模板标识。
模板 LED 指示灯状态。
DP 主站系统或 PROFINET I/O 系统中,已经连接上 CPU 集成的 DP 或 PN 口的
站点状态。
所有有关 SZL_ID 的可用信息在手册 "System Software for S7-300/400 System and
Standard Functions" 中,见条目 Entry ID 1214574 。
SFC51 "RDSYSST" 的参数分配根据使用不同的 CPU 而不同:
1. CPU 有集成的 DP 和以太网接口
2. CPU 有集成的 DP 接口但是没有集成的以太网接口
在 PN/DP CPU 中调用 SFC51 "RDSYSST" 的例子参数
图. 02
输入 SZL_ID=694(HEX) 以确定 DP 主站系统或者 PROFINET IO 系统的站点状态。指定所
读出的系统状态列表数据(诊断数据) 的存储区域,诊断数据长度 258 字节
表 01 为 258 字节长的诊断数据结构:
内容
index
长度
1 word
解释
0: 中央机架
1-31: 在 PROFIBUS DP 主站系统中的远程模块
100-115: 在 PROFINET IO 系统中的远程模块
组信息
1: 下面状态位最少有一个值为 1
0: 下面所有状态位值为 0
status_0 BOOL
status_1 BOOL 站 1 状态
1: 站 1 故障(仅对 694 有效)
status_2 BOOL 站 2 状态
1: 站 2 故障(仅对 694 有效)
...
status_2047 BOOL 站 2047 状态
1: 站 2047 故障(仅对 694 有效)
表 01
最大可以确定 2047 个站的状态。在诊断数据存储区域中每个站需要 1 bit。此外,需要另外 1
bit 作为组信息,即,诊断数据存储区域中,256 字节分配给每个站点的状态,2 字节为索引(关
于 DP 主站系统或者 PROFINET IO 系统的信息)。
下面的例程中包含一个完整的 S7 站硬件组态,用户程序中有 SFC51 "RDSYSST" 的调用。
SZL_Status_ ( 813 KB )
在没有集成以太网口的 CPU 中调用 SFC51 "RDSYSST" 的例子参数
图. 03
输入 SZL_ID=692(HEX) 以确定连接到只有集成 DP 接口的 CPU 所带的 DP 主站系统中
的站点状态。指定所读出的系统状态列表数据(诊断数据) 的存储区域,诊断数据长度 16 字节。
表 02 为 16 字节长的诊断数据结构:
内容
status_0
长度
1 byte
解释
Bit 0: 基本单元 (INDEX=0) 或站 1
Bit 1: 扩展设备或站 2
...
Bit 7: 扩展设备或站 8 ...
status_1 1 byte Bit 0: 扩展设备或站 9
Bit 1: 扩展设备或站 10
...
Bit 7: 扩展设备或站 16 ...
status_2 1 byte Bit 0: 扩展设备或站 17
Bit 1: 扩展设备或站 18
...
Bit 7: 扩展设备或站 24
status_3 1 byte Bit 0: 扩展设备或站 25
Bit 1: 扩展设备或站 26
...
Bit 6: S5 区域中的扩展设备或站 31
Bit 7: S5 区域中的扩展设备或站 32
...
status_15 1 byte Bit 0: S5 区域中的扩展设备或站 121
Bit 1: S5 区域中的扩展设备或站 122
...
Bit 7: S5 区域中的扩展设备或站 128
表 02
最大可以确定 128 个站的状态。 在诊断数据存储区域中每个站需要 1 bit。此外,诊断数据
存储区域中, 每个站点需要 16 字节来表示状态信息。
下面的例程中包含一个完整的 S7 站硬件组态,用户程序中有 SFC51 "RDSYSST" 的调用。
SZL_Status_ ( 256 KB )
例子项目是使用 STEP 7 V5.4 SP4 创建的。复制 SZL_Status_ 或
SZL_Status_ 文件到单独的文件夹内然后使用 STEP 7 解压缩,这时 STEP 7 项目会
被解包为所有子目录,您可以使用 SIMATIC Manager 来处理这些已经解包的 STEP 7 项
目。
从自动化系统中获得模块信息和诊断数据
显示订货号
内容:
当 PLC 运行时, 常常需要一些在运行期间相关的事件和导致事件发生的原因的信息。
以下文档显示了如何从SIMATIC S7-300 和 S7-400 控制器中读出完整的诊断数据。
( 1795 KB )
关键字:
设备状态,诊断缓冲区,诊断消息,诊断数据,事件条目,事件,模块数据,发布
当 PG/PC 通过 PROFIBUS 进入在线状态时, CPU 切换为“停止”
显示订货号
--> --> -->
问题:
为什么当我用 PG 或 PC 经过 PROFIBUS 来运行在线功能时,CPU 会进入“停止”状态?
解答:
可能由于下列原因,使得CPU进入“停止”状态:
你试图通过 PG 或 PC 进入在线状态。然而你还没有在你的项目中组态你的 PG 或
PC。因此只要 PG 或 PC 一被激活(例如,被包含在令牌环网中),总线循环就会
增加,这将导致“停止”。
另一个可能的原因是通过“在线”调用大量的诊断信息,使 CPU 的循环时间增加到超
过参数设置的限制值。这种情形下的一种补救措施就是将 CPU 的参数从“测试模式”
改变为“处理模式”。然而,在此情况下并不是所有的诊断选项都可用的。
你也应该确保你的 PC/PG 的总线参数与 PROFIBUS 网络的总线参数是相同的。为
了能够比较这些内容,你必须首先决定哪些总线参数是为 PROFIBUS 网络而设置的。
请按照以下步骤进行:
1. 打开此项目及其硬件组态;
2. 双击 PROFIBUS 主机系统;
3. 然后点击“属性……”;
4. 在打开的窗口中选择“网络设置”标签;
5. 点击“总线参数……”;
现在你可以看到 PROFIBUS 网络的总线参数设置
总线参数也可以在你的 PG 中设置。请按照下列步骤继续进行来查看和改变你的 PG
参数:
1. 通过“开始>设置”打开控制面板;
2. 双击“设置 PG/PC 接口”;
3. 在打开的窗口中点击“属性……;
4. 在“网络参考”下将轮廓设置为“用户定义”;
5. 点击“总线参数……”;
6. 把总线参数设置为与 PROFIBUS 网络的相同。
关键字:
“停止”状态
为什么在电源关闭/打开或在DP标准从站返回后CPU 300/400 上的EXTF LED灯保持亮而
不熄灭?
显示订货号
描述:
当标准从站的站返回时CPU会收到来自标准从站的诊断信息。CPU为诊断信息生成一个诊断
缓冲条目并再次将EXTF LED灯关闭。
如果信息只包含6个字节(与标准一致),CPU不能接受返回从站的诊断信息。这种情况下CPU
只生成诊断缓冲条目,但不能再次关闭EXTF LED灯。但与从站的通信如常进行。
所述问题发生在以下模块:
S7-300,CPU 318-2DP,操作系统V3.0.0
S7-400,所有带操作系统V3.0.0的CPU(因此 包括除了CPU 413外的所有CPU)
S7-400H,CPU 417-4HL00 V2.1.3版本和CPU 417-4HL01 V3.0.0版本
补救措施:
从固件V3.0.1.(对CPU 417-4HL00为V2.1.4 )起这一问题已清除。请进行固件更新。在以下
条目号中可找到相应的固件及关于如何更新的描述。
S7-400,CPU 412,条目号2792880
S7-400,CPU 414,条目号2850229
S7-400,CPU 416,条目号2858911
S7-400,CPU 417,Entry ID 2855123
S7-400H,CPU 414-4HJ00,条目号6741018
S7-400H,CPU 417-4HL00,条目号6741018
S7-400H,CPU 417-4HL01,条目号6741018
S7-300,CPU 318-2,条目号7286150
关键字:
FESTO,阀门群,诊断
在CPU启动时如何识别上次停机的事件并在程序中处理它(即使在完全复位之后)?
显示订货号
描述
在启动OB块 OB100, OB101 和 OB102的启动数据(本地数据)中有一个变量
OB10x_STOP (x = 0,1,2). 它包含从诊断缓冲区中读出的导致上次停机的事件ID。
对于 SIMATIC S7-400 CPU,即使在完全复位后,也可以读取该变量.
对于 SIMATIC S7-300 CPU,OB100_STOP 变量在完全复位后将不再存在。
说明
可能的事件ID列表参见手册 "System Software for S7-300/400 System and Standard
Functions", 章节 34.5 "Event Class 4 - Stop Events and Other Mode Changes" 条目号
1214574.
当诊断缓冲区出现事件号 530D 时,为何 CPU S7-400 的 IM 和/或 CP 没有进入 RUN
模式?
显示订货号
说明:
如果 SDB 的长度恰好为 10,000 字节,诊断缓冲区中就会出现事件号为 530D 的出错消息。
补救措施:
如果 SDB 的长度恰好为 10,000 字节,请按照下列步骤处理:
在 Tools > Settings 中切换到 HW Config 并激活 Save object names in the PLC。这样将使
得 SDB 的长度增加 500 个字节。
图 01
检查连接 SDB 的长度,您将发现上述的情况,即长度恰好为 10,000 个字节。如果 SDB 少
于或者大于 10,000,则上述情况就不会发生。在 STEP7 中编译硬件配置后选择 SDB 容器
并检查是否有 SDB 的长度是 10,000 个字节。
对下列 CPU 有效:
CPU
订货号 固件版本
CPU 412
CPU 412-1 6ES7
CPU 412-1 6ES7
CPU 412-2 6ES7
CPU 414
CPU 414-2 6ES7
CPU 414-2 6ES7
CPU 414-3 6ES7
CPU 414-3 6ES7
CPU414-4H 6ES7
CPU414-4H 6ES7 414-4HJ04-0AB0 V4.0.6 及以下版本
CPU 416
CPU 416-2 6ES7
CPU 416-2 6ES7
CPU 416-2F 6ES7
CPU 416-2F 6ES7
CPU 416-3 6ES7
CPU 416-3 6ES7
CPU 417
CPU 417-4 6ES7
CPU 417-4 6ES7
CPU 417-4H 6ES7
CPU 417-4H 6ES7 417-4HL04-0AB0 V4.0.6 及以下版本
CPU 伴随出错代码 16#4578“STOP because of unknown opcode”停止
显示订货号
问题:
S7-400 CPU 为何伴随出错代码 16#4578“STOP because of unknown opcode”进入 STOP
操作模式?
解答:
CPU 中发生了意外的操作模式变化,切换到“STOP”模式——伴随出错代码 16#4578“STOP
because of unknown opcode”。项目的在线/离线比较将不会产生任何时间戳差异。
导致此操作模式变化的原因是程序处理过程中识别到了一个未知的指令。详细的信息提供未知
指令的位置。
原因可能是用户存储器中的一个存储器错误或者由于 EMC 干扰导致了一个巧合的状态变化。
补救措施:
以一个新的、无错位的代码块代替出现问题的代码块(重新装载块)。我们建议检查 EMC 负载
以便尽可能提高屏蔽性。如果这些措施都不成功,应当更换 CPU。
为什么在整个系统完全断电再恢复电源后CPU保持STOP状态?
显示订货号
描述:
包含DP主站S7-400和从站的整个系统可通过一个主站开关关闭电压。通过CPU的内部电压
缓冲区CPU通常会持续运行50ms到100ms,并且在这个阶段识别所连接的从站故障。 根
据使用供电设备,电压缓冲区可能会非常长(达到500ms)。如果未编程OB86或OB122,那
么由于从站丢失,CPU进入STOP 状态。
补救措施:
必须编程OB86和OB122(如果需要,则编程OB82)。此时必须启动一个定时器。定时器值必
须大于CPU电压缓冲区的持续时间(也就是指导值>100ms)。必须通过适当的测试来决定该值。
然后在循环程序中检查定时器。如果定时器终止,那么从站在常规操作中发生故障,并且CPU
以对其进行的编程来作出响应。例如,由于STOP命令CPU停止运行。
主站开关关闭时也会启动定时器。如果选择合适的时间值,定时器就不会终止,因为在从站没
有操作电压后不久CPU也会无操作电压。因而CPU(中央控制器)在运行模式下掉电然后在电
压恢复后在那个运行模式下仍能启动。
注意事项:
如果选择了“Restart at Power On”作为启动类型(与“Restart”相反),应该在相应的起始
OB下重新设置定时器以便在CPU重新启动后定时器的终止不会触发一个不希望的程
序反应。
请注意在长电压缓冲区的情况下,可能会发生其它错误如站故障、I/O故障、时间错误、
超出周期时间、缓冲区溢出等等,如果这些错误不能被程序阻止的话会导致CPU进入
STOP状态。尽可能地阻止这些错误OB,如果需要的话可延长最大周期时间。
使用块SFC 17“ALARM_SQ”,SFC 18“ALARM_S”,SFC 107“ALARM_DQ”和SFC
108“ALARM_D”时应注意些什么?
显示订货号
描述:
如果使用下列系统功能
SFC 17“ALARM_SQ”
SFC 18“ALARM_S”
SFC 107“ALARM_DQ”
SFC 108“ALARM_D”
在参数SD使用布尔量或总数为奇数字节或字符赋值时,可能会发生故障,错误号4535 1224
000 000进入到CPU的诊断缓冲区中。
发生故障时可以按以下步骤从诊断缓冲读写故障信息:
1. 将CPU操作模式切换为STOP。
2. 将电源模块上的备用开关切换到OFF(0V)然后再切换到ON(额定电压)。CPU就会自
动进行全面复位由此诊断缓存中的内容可以被保留。
补救措施:
增加字节或字符的数量使其为偶数。例如,使用字而不是布尔变量或选择下列数据格式的变量。
当需要在报警信息中添加一个报警时刻相关的测量值时,例如用来指示报警时刻的温度、压力
或相类似值,对以下数据格式的相关值没有限制:
WORD
INT
DWORD
DINT
REAL
DATE
TOD
TIME
S5TIME
DATE_AND_TIME
有效的CPU:
CPU
CPU 412-1
CPU 412-2
CPU 414-2
CPU 414-3
CPU 414-4H
CPU 416-2
CPU 416-2F
CPU 416-3
CPU 417-4
CPU 417-4H
订货号 固化程序版本
6ES7 412-1XF04-0AB0
6ES7 412-2XG04-0AB0
6ES7 414-2XG04-0AB0
6ES7 414-3XJ04-0AB0
6ES7 414-4HJ04-0AB0
6ES7 416-2XK04-0AB0
6ES7 416-2FK04-0AB0
6ES7 416-3XL04-0AB0
6ES7 417-4XL04-0AB0
6ES7 417-4HL04-0AB0
到V4.0.4
到V4.0.4
当使用SFC20 “BLKMOV”,SFC81“UBLKMOV”或SFC21“FILL”块时应注意些什么?
显示订货号
描述:
源和目标区域必须大小相同并且不能重叠。
如果定义的目标区域大于源区域,拷贝到目标区域的数据量受限于源区域可用量的大
小。
如果定义的目标区域小于源区域,拷贝到目标区域的数据量受限于目标区域的容量。
如果目标或源区域的实际容量小于为源或目标区域所配置的内存区域(SFC21中的参
数SRCBLK,DSTBLK或BVAL和BLK),则没有数据被传送。
这种情况下,RET_VAL中会显示错误代码为W#16#8122或W#16#8323的错误。用
户程序中要经常评估该RET_VAL。
2024年9月2日发(作者:宓访冬)
S7-400 CPU 41x -- 操作和维护 -- 诊断错误
当分布式I/O出现故
障时,CPU应调用哪
些组织块来保证
CPU不进入“停止”
状态?
?00系列CPU中的
OB122中的出错评
估已经改变
处理错误时需要哪
些组织块?
如何查看一个 DP
主站系统或者
PROFINET IO 系
统的站点状态?
从自动化系统中获
得模块信息和诊断
数据
当 PG/PC 通过
PROFIBUS 进入在
线状态时, CPU 切
换为“停止”
为什么在电源关闭/
打开或在DP标准从
站返回后CPU
300/400 上的
EXTF LED灯保持
亮而不熄灭?
在CPU启动时如何
识别上次停机的事
件并在程序中处理
它(即使在完全复位
之后)?
当诊断缓冲区出现
事件号 530D 时,
为何 CPU S7-400
的 IM 和/或 CP
没有进入 RUN 模
式?
CPU 伴随出错代码
16#4578“STOP
because of
unknown opcode”
停止
为什么在整个系统
完全断电再恢复电
源后CPU保持
STOP状态?
使用块SFC
17“ALARM_SQ”,
SFC
18“ALARM_S”,
SFC
107“ALARM_DQ”
和SFC
108“ALARM_D”时
应注意些什么?
当使用SFC20
“BLKMOV”,
SFC81“UBLKMOV”
或SFC21“FILL”块
时应注意些什么?
当分布式I/O出现故障时,CPU应调用哪些组织块来保证CPU不进入“停止”状态?
显示订货号
组态说明:
当CPU在其运行周期内识别到同步或异步错误(例如:DP从站或者PROFINET I/O设备的
诊断报警,站故障等),将会调用相 应的组织块(OB),用户因此可以对该事件作出响应。
下表列出了出现同步或异步错误时,必须下载到CPU中的OB块,从而CPU能调用它们,确保
CPU不进入“停止”状态。
OB 块
号.
说明 调用条件 错误事件进入事件离开
时调用 分类 进调用
82
诊断报
警
具有诊断功能的模块,使能了诊断报警,当检测
到错误或错误消失时
(如:输入模板的短路故障).
中央机架或扩展设备上的模块移走和插回时
(如:移走一个输入模板)
异步
错误
是 是
83 插/拔
报警
1)
程序循
环错误
异步
错误
是 是
85 - 出现尚未加载到CPU中的报警OB块的调用
事件
- 访问系统功能块 SFB 的背景数据块时出现
错误
- 更新过程印象区时出现错误(模板不存在或
失效)
异步
错误
组态指定 组态指定
86
模块机
架错误
DP 主站系统中的 DP 从站或 PROFINET
异步
错误
是 是
IO 系统中的 IO 设备出现故障
程序错
误
IO 访问
错误
同步
错误
同步
错误
是 否
是 否
121 发生程序错误时 (如:调用的块没有下载)
访问不存在的信号模板
122
1)
对于 S7-300 CPU (除了: CPU 318-2), 插入移除 PROFIBUS DP 从站上的模块并不会产
生插/拔 报警 。取决于所用的 DP 从站,整个DP从站失效将导致调用 OB86 "Subrack failure
子机架错误" , 执行标准诊断,从而调用 OB82 "Diagnostics alarm诊断报警" 。
在 S7-300 CPU中,插/拔报警仅当插/拔发生在PROFINET IO(如移走 IO 设备)上时发生。
如果这些组织块没有装载到CPU,则CPU将因无法调用这些块而进入“停止”状态。
警告:
当使用故障OB时,应当编程进行故障处理或者至少应当在出错时产生一条提示信息,以便安
全和正确地操作设备。需要注意的是,此时CPU可能不再进入到“ STOP”状态,因此这些
危险状态可能会被忽视。关于编程处理出错的OB的详细消息,可参阅STEP 7在线帮助,或
者参考手册“System Software for S7-300/400 System and Standard Functions”——ID号
1214574。
注意事项:
CPU的诊断缓冲区保留着CPU曾经调用过的组织块的信息。
更多详情请按照下列关键字参阅STEP 7的在线帮助:
"Diagnostics > Measures in the program for error handling"
"Calling reference data (LAD/FBD/STL, blocks ...) > Language description, block
help, system attributes > Help on OBs"
"Error OBs"
"Settings for reporting system errors"
以下ID介绍了在CPU的S7程序中 需要调用哪个组织块来进行错误处理: 11499205。
?00系列CPU中的OB122中的出错评估已经改变
显示订货号
问题:
从OB122的错误代码中能否识别出I/O的访问错误是否已经出了好几次错?
解答:
有关I/O访问错误的评估在400系列的CPU中已经改变。现在对于内存区(I/O区域/过程映像)
没有差别。也就是说现在再也不会有发生多次的I/O访问错误(错误代码 B#16#44 和
B#16#45)的消息。
所有I/O访问错误都映射在错误代码B#16#42和B#16#43。因此,再也不能根据OB 122的
错误代码来计数I/O访问错误发生的次数。
以下版本及更高的版本中有这样的改变:
CPU 412 - 1XF03
- 2XG00
CPU 414 - 2XG03
- 3XJ00
CPU 416 - 2XK02
- 3XL00
CPU 417 - 4XL00
- 4HL00
处理错误时需要哪些组织块?
显示订货号
描述:
S7-CPU 可以识别下列类型的错误:
1. 同步错误:
这些错误在处理过程中由特定操作触发,并且可以指定给用户程序的特定部分。
2. 异步错误:
这些错误不能直接指定给运行中的程序。这些错误包括优先级类别错误,自动化系统
错误(模块故障)或冗余错误。
下面的表格是关于组织块 (OBs) 当出现异步或同步错误时被调用情况的概览。如果相关的错
误 OB 没有被下载,CPU 会进入 STOP 状态 (不包括:OBs 70,72,73 和 81)。
Übersicht_ ( 8 KB )
您可以在 CPU 属性中的 “Interrupts” 标签中看到哪些 OBs 可以在您的 CPU 中使能以及
插入到 STEP 7 项目中。
图. 01
通过硬件组态中的菜单“Options > Report ”,也可轻松添加错误处理 OB。
使用错误 OBs 的注意事项:
当错误产生时,若要实现可靠、无故障运转,需要编写故障处理程序,至少要编程在错误发生
时会产生报警信息,因为要考虑 CPU 不会进入停机模式,因此可能造成生产危险不易被察觉。
注意
只有 H-CPU 支持 OB 70 和 OB 72。
OB 73 仅适用于CPU 417-4H V2.0.X。
关于错误 OB 更多信息,可以在 STEP 7 在线帮助中找到:
o "Change in the error evaluation in the OB 122 with series 400 CPUs" - 条目
号: 5708202.
o 关键词 "Generated error OBs".
o 关键词 "Settings for reporting system errors".
后面的条目是关于哪些 OB 需要下载到 CPU 来保证当远程 I/O 出现错误时 CPU
不会进入到停机状态:19350076
电源供电故障的例子
电源供应故障 (只针对 S7-400) 或者缓冲故障触发相应的事件发生,CPU 操作系统调用
OB81 。清除错误后 OB81 再次被调用。如果 S7-400 有电池故障,OB81 只有在
开关激活电池检查后才被调用。如果不对 OB 81 编程,CPU 不会进入停止模式。
如果 OB81 不可用,CPU会在电源供应故障时持续运行。
在例子程序中来自 OB81 的临时变量 "OB81_FLT_ID" 被评估来决定电池故障。在本例中变
量有错误代码 "22hex”。 如果在比较查询(电池故障)中条件满足,标志位M81.1被寻址。
两个事件等级能够通过变量 "OB81_EV_CLASS" 来识别:
B#16#39:到来事件,电池故障。
B#16#38:离开事件,电池故障清除。
评估这些变量的设定,复位标志位 M81.0。
图. 02
如果标志位 M81.1 和 M81.2 的状态是 "TRUE" (在电源故障和到来事件的情况),标志
位 M81.0 被置位。当事件 ID 是离开事件时标志位 M81.0 被复位。上面描述的例子是对于
CPU 运行而电池故障发生的情况。如果电池故障在停止模式下发生,则到来事件 (调用
OB81) 只在 CPU 再次进入运行模式才被触发。如果电源供应关断,则到来事件 (电池故
障) 不会被触发。
更多信息:
关于错误 OBs 的详细信息,可参见 STEP 7 在线帮助或参考手册“System Software for
S7-300/400 System and Standard Functions” ,条目号为:1214574。
关键字:
OB80,OB81,OB82,OB83,OB84,OB85,OB86,OB87,OB121,OB122
如何查看一个 DP 主站系统或者 PROFINET IO 系统的站点状态?
显示订货号
描述:
可以使用 SFC51 "RDSYSST" 读出 SSL 部件列表或选用 SSL 部件列表。 下面的配置在文
中所附的例程中创建:
图. 01
在用户程序(OB1)中,使用 SFC51 "RDSYSST" 读出 CPU 的系统状态列表。
调用 SFC51 "RDSYSST" 时,通过参数 SZL_ID 指定准备读出的系统列表。使用此方法可读
出下列数据,例如:
模板标识。
模板 LED 指示灯状态。
DP 主站系统或 PROFINET I/O 系统中,已经连接上 CPU 集成的 DP 或 PN 口的
站点状态。
所有有关 SZL_ID 的可用信息在手册 "System Software for S7-300/400 System and
Standard Functions" 中,见条目 Entry ID 1214574 。
SFC51 "RDSYSST" 的参数分配根据使用不同的 CPU 而不同:
1. CPU 有集成的 DP 和以太网接口
2. CPU 有集成的 DP 接口但是没有集成的以太网接口
在 PN/DP CPU 中调用 SFC51 "RDSYSST" 的例子参数
图. 02
输入 SZL_ID=694(HEX) 以确定 DP 主站系统或者 PROFINET IO 系统的站点状态。指定所
读出的系统状态列表数据(诊断数据) 的存储区域,诊断数据长度 258 字节
表 01 为 258 字节长的诊断数据结构:
内容
index
长度
1 word
解释
0: 中央机架
1-31: 在 PROFIBUS DP 主站系统中的远程模块
100-115: 在 PROFINET IO 系统中的远程模块
组信息
1: 下面状态位最少有一个值为 1
0: 下面所有状态位值为 0
status_0 BOOL
status_1 BOOL 站 1 状态
1: 站 1 故障(仅对 694 有效)
status_2 BOOL 站 2 状态
1: 站 2 故障(仅对 694 有效)
...
status_2047 BOOL 站 2047 状态
1: 站 2047 故障(仅对 694 有效)
表 01
最大可以确定 2047 个站的状态。在诊断数据存储区域中每个站需要 1 bit。此外,需要另外 1
bit 作为组信息,即,诊断数据存储区域中,256 字节分配给每个站点的状态,2 字节为索引(关
于 DP 主站系统或者 PROFINET IO 系统的信息)。
下面的例程中包含一个完整的 S7 站硬件组态,用户程序中有 SFC51 "RDSYSST" 的调用。
SZL_Status_ ( 813 KB )
在没有集成以太网口的 CPU 中调用 SFC51 "RDSYSST" 的例子参数
图. 03
输入 SZL_ID=692(HEX) 以确定连接到只有集成 DP 接口的 CPU 所带的 DP 主站系统中
的站点状态。指定所读出的系统状态列表数据(诊断数据) 的存储区域,诊断数据长度 16 字节。
表 02 为 16 字节长的诊断数据结构:
内容
status_0
长度
1 byte
解释
Bit 0: 基本单元 (INDEX=0) 或站 1
Bit 1: 扩展设备或站 2
...
Bit 7: 扩展设备或站 8 ...
status_1 1 byte Bit 0: 扩展设备或站 9
Bit 1: 扩展设备或站 10
...
Bit 7: 扩展设备或站 16 ...
status_2 1 byte Bit 0: 扩展设备或站 17
Bit 1: 扩展设备或站 18
...
Bit 7: 扩展设备或站 24
status_3 1 byte Bit 0: 扩展设备或站 25
Bit 1: 扩展设备或站 26
...
Bit 6: S5 区域中的扩展设备或站 31
Bit 7: S5 区域中的扩展设备或站 32
...
status_15 1 byte Bit 0: S5 区域中的扩展设备或站 121
Bit 1: S5 区域中的扩展设备或站 122
...
Bit 7: S5 区域中的扩展设备或站 128
表 02
最大可以确定 128 个站的状态。 在诊断数据存储区域中每个站需要 1 bit。此外,诊断数据
存储区域中, 每个站点需要 16 字节来表示状态信息。
下面的例程中包含一个完整的 S7 站硬件组态,用户程序中有 SFC51 "RDSYSST" 的调用。
SZL_Status_ ( 256 KB )
例子项目是使用 STEP 7 V5.4 SP4 创建的。复制 SZL_Status_ 或
SZL_Status_ 文件到单独的文件夹内然后使用 STEP 7 解压缩,这时 STEP 7 项目会
被解包为所有子目录,您可以使用 SIMATIC Manager 来处理这些已经解包的 STEP 7 项
目。
从自动化系统中获得模块信息和诊断数据
显示订货号
内容:
当 PLC 运行时, 常常需要一些在运行期间相关的事件和导致事件发生的原因的信息。
以下文档显示了如何从SIMATIC S7-300 和 S7-400 控制器中读出完整的诊断数据。
( 1795 KB )
关键字:
设备状态,诊断缓冲区,诊断消息,诊断数据,事件条目,事件,模块数据,发布
当 PG/PC 通过 PROFIBUS 进入在线状态时, CPU 切换为“停止”
显示订货号
--> --> -->
问题:
为什么当我用 PG 或 PC 经过 PROFIBUS 来运行在线功能时,CPU 会进入“停止”状态?
解答:
可能由于下列原因,使得CPU进入“停止”状态:
你试图通过 PG 或 PC 进入在线状态。然而你还没有在你的项目中组态你的 PG 或
PC。因此只要 PG 或 PC 一被激活(例如,被包含在令牌环网中),总线循环就会
增加,这将导致“停止”。
另一个可能的原因是通过“在线”调用大量的诊断信息,使 CPU 的循环时间增加到超
过参数设置的限制值。这种情形下的一种补救措施就是将 CPU 的参数从“测试模式”
改变为“处理模式”。然而,在此情况下并不是所有的诊断选项都可用的。
你也应该确保你的 PC/PG 的总线参数与 PROFIBUS 网络的总线参数是相同的。为
了能够比较这些内容,你必须首先决定哪些总线参数是为 PROFIBUS 网络而设置的。
请按照以下步骤进行:
1. 打开此项目及其硬件组态;
2. 双击 PROFIBUS 主机系统;
3. 然后点击“属性……”;
4. 在打开的窗口中选择“网络设置”标签;
5. 点击“总线参数……”;
现在你可以看到 PROFIBUS 网络的总线参数设置
总线参数也可以在你的 PG 中设置。请按照下列步骤继续进行来查看和改变你的 PG
参数:
1. 通过“开始>设置”打开控制面板;
2. 双击“设置 PG/PC 接口”;
3. 在打开的窗口中点击“属性……;
4. 在“网络参考”下将轮廓设置为“用户定义”;
5. 点击“总线参数……”;
6. 把总线参数设置为与 PROFIBUS 网络的相同。
关键字:
“停止”状态
为什么在电源关闭/打开或在DP标准从站返回后CPU 300/400 上的EXTF LED灯保持亮而
不熄灭?
显示订货号
描述:
当标准从站的站返回时CPU会收到来自标准从站的诊断信息。CPU为诊断信息生成一个诊断
缓冲条目并再次将EXTF LED灯关闭。
如果信息只包含6个字节(与标准一致),CPU不能接受返回从站的诊断信息。这种情况下CPU
只生成诊断缓冲条目,但不能再次关闭EXTF LED灯。但与从站的通信如常进行。
所述问题发生在以下模块:
S7-300,CPU 318-2DP,操作系统V3.0.0
S7-400,所有带操作系统V3.0.0的CPU(因此 包括除了CPU 413外的所有CPU)
S7-400H,CPU 417-4HL00 V2.1.3版本和CPU 417-4HL01 V3.0.0版本
补救措施:
从固件V3.0.1.(对CPU 417-4HL00为V2.1.4 )起这一问题已清除。请进行固件更新。在以下
条目号中可找到相应的固件及关于如何更新的描述。
S7-400,CPU 412,条目号2792880
S7-400,CPU 414,条目号2850229
S7-400,CPU 416,条目号2858911
S7-400,CPU 417,Entry ID 2855123
S7-400H,CPU 414-4HJ00,条目号6741018
S7-400H,CPU 417-4HL00,条目号6741018
S7-400H,CPU 417-4HL01,条目号6741018
S7-300,CPU 318-2,条目号7286150
关键字:
FESTO,阀门群,诊断
在CPU启动时如何识别上次停机的事件并在程序中处理它(即使在完全复位之后)?
显示订货号
描述
在启动OB块 OB100, OB101 和 OB102的启动数据(本地数据)中有一个变量
OB10x_STOP (x = 0,1,2). 它包含从诊断缓冲区中读出的导致上次停机的事件ID。
对于 SIMATIC S7-400 CPU,即使在完全复位后,也可以读取该变量.
对于 SIMATIC S7-300 CPU,OB100_STOP 变量在完全复位后将不再存在。
说明
可能的事件ID列表参见手册 "System Software for S7-300/400 System and Standard
Functions", 章节 34.5 "Event Class 4 - Stop Events and Other Mode Changes" 条目号
1214574.
当诊断缓冲区出现事件号 530D 时,为何 CPU S7-400 的 IM 和/或 CP 没有进入 RUN
模式?
显示订货号
说明:
如果 SDB 的长度恰好为 10,000 字节,诊断缓冲区中就会出现事件号为 530D 的出错消息。
补救措施:
如果 SDB 的长度恰好为 10,000 字节,请按照下列步骤处理:
在 Tools > Settings 中切换到 HW Config 并激活 Save object names in the PLC。这样将使
得 SDB 的长度增加 500 个字节。
图 01
检查连接 SDB 的长度,您将发现上述的情况,即长度恰好为 10,000 个字节。如果 SDB 少
于或者大于 10,000,则上述情况就不会发生。在 STEP7 中编译硬件配置后选择 SDB 容器
并检查是否有 SDB 的长度是 10,000 个字节。
对下列 CPU 有效:
CPU
订货号 固件版本
CPU 412
CPU 412-1 6ES7
CPU 412-1 6ES7
CPU 412-2 6ES7
CPU 414
CPU 414-2 6ES7
CPU 414-2 6ES7
CPU 414-3 6ES7
CPU 414-3 6ES7
CPU414-4H 6ES7
CPU414-4H 6ES7 414-4HJ04-0AB0 V4.0.6 及以下版本
CPU 416
CPU 416-2 6ES7
CPU 416-2 6ES7
CPU 416-2F 6ES7
CPU 416-2F 6ES7
CPU 416-3 6ES7
CPU 416-3 6ES7
CPU 417
CPU 417-4 6ES7
CPU 417-4 6ES7
CPU 417-4H 6ES7
CPU 417-4H 6ES7 417-4HL04-0AB0 V4.0.6 及以下版本
CPU 伴随出错代码 16#4578“STOP because of unknown opcode”停止
显示订货号
问题:
S7-400 CPU 为何伴随出错代码 16#4578“STOP because of unknown opcode”进入 STOP
操作模式?
解答:
CPU 中发生了意外的操作模式变化,切换到“STOP”模式——伴随出错代码 16#4578“STOP
because of unknown opcode”。项目的在线/离线比较将不会产生任何时间戳差异。
导致此操作模式变化的原因是程序处理过程中识别到了一个未知的指令。详细的信息提供未知
指令的位置。
原因可能是用户存储器中的一个存储器错误或者由于 EMC 干扰导致了一个巧合的状态变化。
补救措施:
以一个新的、无错位的代码块代替出现问题的代码块(重新装载块)。我们建议检查 EMC 负载
以便尽可能提高屏蔽性。如果这些措施都不成功,应当更换 CPU。
为什么在整个系统完全断电再恢复电源后CPU保持STOP状态?
显示订货号
描述:
包含DP主站S7-400和从站的整个系统可通过一个主站开关关闭电压。通过CPU的内部电压
缓冲区CPU通常会持续运行50ms到100ms,并且在这个阶段识别所连接的从站故障。 根
据使用供电设备,电压缓冲区可能会非常长(达到500ms)。如果未编程OB86或OB122,那
么由于从站丢失,CPU进入STOP 状态。
补救措施:
必须编程OB86和OB122(如果需要,则编程OB82)。此时必须启动一个定时器。定时器值必
须大于CPU电压缓冲区的持续时间(也就是指导值>100ms)。必须通过适当的测试来决定该值。
然后在循环程序中检查定时器。如果定时器终止,那么从站在常规操作中发生故障,并且CPU
以对其进行的编程来作出响应。例如,由于STOP命令CPU停止运行。
主站开关关闭时也会启动定时器。如果选择合适的时间值,定时器就不会终止,因为在从站没
有操作电压后不久CPU也会无操作电压。因而CPU(中央控制器)在运行模式下掉电然后在电
压恢复后在那个运行模式下仍能启动。
注意事项:
如果选择了“Restart at Power On”作为启动类型(与“Restart”相反),应该在相应的起始
OB下重新设置定时器以便在CPU重新启动后定时器的终止不会触发一个不希望的程
序反应。
请注意在长电压缓冲区的情况下,可能会发生其它错误如站故障、I/O故障、时间错误、
超出周期时间、缓冲区溢出等等,如果这些错误不能被程序阻止的话会导致CPU进入
STOP状态。尽可能地阻止这些错误OB,如果需要的话可延长最大周期时间。
使用块SFC 17“ALARM_SQ”,SFC 18“ALARM_S”,SFC 107“ALARM_DQ”和SFC
108“ALARM_D”时应注意些什么?
显示订货号
描述:
如果使用下列系统功能
SFC 17“ALARM_SQ”
SFC 18“ALARM_S”
SFC 107“ALARM_DQ”
SFC 108“ALARM_D”
在参数SD使用布尔量或总数为奇数字节或字符赋值时,可能会发生故障,错误号4535 1224
000 000进入到CPU的诊断缓冲区中。
发生故障时可以按以下步骤从诊断缓冲读写故障信息:
1. 将CPU操作模式切换为STOP。
2. 将电源模块上的备用开关切换到OFF(0V)然后再切换到ON(额定电压)。CPU就会自
动进行全面复位由此诊断缓存中的内容可以被保留。
补救措施:
增加字节或字符的数量使其为偶数。例如,使用字而不是布尔变量或选择下列数据格式的变量。
当需要在报警信息中添加一个报警时刻相关的测量值时,例如用来指示报警时刻的温度、压力
或相类似值,对以下数据格式的相关值没有限制:
WORD
INT
DWORD
DINT
REAL
DATE
TOD
TIME
S5TIME
DATE_AND_TIME
有效的CPU:
CPU
CPU 412-1
CPU 412-2
CPU 414-2
CPU 414-3
CPU 414-4H
CPU 416-2
CPU 416-2F
CPU 416-3
CPU 417-4
CPU 417-4H
订货号 固化程序版本
6ES7 412-1XF04-0AB0
6ES7 412-2XG04-0AB0
6ES7 414-2XG04-0AB0
6ES7 414-3XJ04-0AB0
6ES7 414-4HJ04-0AB0
6ES7 416-2XK04-0AB0
6ES7 416-2FK04-0AB0
6ES7 416-3XL04-0AB0
6ES7 417-4XL04-0AB0
6ES7 417-4HL04-0AB0
到V4.0.4
到V4.0.4
当使用SFC20 “BLKMOV”,SFC81“UBLKMOV”或SFC21“FILL”块时应注意些什么?
显示订货号
描述:
源和目标区域必须大小相同并且不能重叠。
如果定义的目标区域大于源区域,拷贝到目标区域的数据量受限于源区域可用量的大
小。
如果定义的目标区域小于源区域,拷贝到目标区域的数据量受限于目标区域的容量。
如果目标或源区域的实际容量小于为源或目标区域所配置的内存区域(SFC21中的参
数SRCBLK,DSTBLK或BVAL和BLK),则没有数据被传送。
这种情况下,RET_VAL中会显示错误代码为W#16#8122或W#16#8323的错误。用
户程序中要经常评估该RET_VAL。