SIMATIC S7-300 400 为什么循环中断被跳过
说明:
中断程序的长度
如果在处理某个循环中断时,又来了一个相同的循环中断,此时操作系统会调用OB80,存储这个没有执行的循环中断并且在下一个合适的时候执行此循环中断(如果没有下载时间错误处理组织块(OB80),则CPU会切换到停机STOP状态)。如果中断程序持续的时间与调用间隔一样长-由于中断程序不断变化-偶尔情况下循环中断OB执行的时间会大于调用间隔时间。当中断程序(由随后应该执行的循环中断触发)由于处理时间过长而覆盖了随后的两个循环中断时,就存在丢失一个循环中断的危险。由于操作系统只存储一个循环中断,在这种情况下就会丢失一个中断。
优先级和相位偏移参数设置不当
由于当前正在处理的循环中断,而这时又调用一个循环中断,该循环中断就会被跳过。使用优先级以及相位偏移可以调整程序处理时间。
避免在一个优先级内分配多个循环中断处理;
不要将优先级0分配给要使用的循环中断OB。如果存在其它OB,则不会执行这个循环中断;
解答:
系统诊断用于识别、评估和显示发生在自动化系统中的错误。为此,在每个有系统诊断能力的CPU 和模块中,都有一个包含所有诊断结果详细信息的诊断缓冲区。
作为整个系统内的编号(起因)
包括错误发生的位置和时间
错误被模块的操作系统识别并用纯文本显示。历史错误也被记录,因为该错误消息将被自动存储在诊断缓冲区中。
系统诊断的基本功能包括操作系统的所有错误事件以及用户程序的程序顺序中的一些特性,它们存储在诊断缓冲区中,并带有时间,错误编号及附加的相关信息。
用户可以在诊断缓冲区中输入用户自定义的诊断事件(如关于用户程序的信息),或发送用户定义的诊断结果到已连接的站中(监测设备如PG,OP,TD)。
诊断缓冲区
诊断缓冲区能够
更快地识别故障源,提高系统的实用性。
评估STOP之前的近事件,并找到引起STOP的原因。
诊断缓冲区是一个带有单个诊断条目的循环缓冲区,这些诊断条目显示在事件发生序列中;个条目显示的是近发生的事件。如果缓冲区已满,早发生的事件就会被新的条目所覆盖。
数进行设置。
诊断缓冲区中的条目包括:
故障事件
操作模式转变以及其它对用户重要的操作事件
用户定义的诊断事件(用SFC52 WR_USMSG)
在STOP模式下,在诊断缓冲区中尽量少的存储事件,以便用户能够很容易在缓冲器中找到引起STOP的原因。只有当事件要求用户产生一个响应(如需要系统内存复位,电池需要充电)或必须注册重要信息(如固件更新,站故障)时,才将条目存储在诊断缓冲器中。
在STOP模式下,用户程序不被执行。不存在因用户程序引发的诊断缓冲条目。
诊断缓冲区中的条目不包括:
临时性错误
统计信息或跟踪记录
关于数据或服务质量的信息
循环OB启动调用
循环发生的故障事件通常仅在次输入,在此之后,只有当引起错误的原因被识别后才输入。这确保溢出不会覆盖重要的条目。通过在线帮助,用户可以分析诊断缓冲条目,并找到可能的原因以及事件的补救措施。
CPU完全复位后保留下来的设置
问题:
CPU全面复位后哪些设置会保留下来?
当完全复位时,CPU内存没有被完全删除。而是整个系统内存被完全删除了,但装载内存如MC卡或微存储卡(MMC)中数据仍然会全部保留下来。除了装载内存以外,CPU的运行时钟和诊断缓冲器中的数据也被保留。
具有MPI接口或一个MPI/DP接口的CPU在全部复位之后,其所设置的MPI地址及波特率仍然保留。但如果MPI/DP接口设置为一个PROFIBUS接口,其地址及波特率的设置被完全删除,不能再访问。
在全部复位之后,其前设置的保护等级也将保留。