使cpu进入stop的情况很多,比如地址调用错误,没有下载需要db块,编程错误等等,如果你想避免错误时不使cpu进入停止状态,你可以在程序中加入特殊的ob块,则出现相应问题,调用相应的ob块,虽然里面没程序,plc将对错误错误不作任何处理,继续运行。否则plc将进入停机状态可,比如:
ob73通讯冗余出错ob
当容错s7连接中发生首次冗余丢失时,h cpu的操作系统将调用ob73(只有在s7通
讯中才会有容错s7连接。更多信息,请参见“s7-400 h可编程控制器,容错系统。”)。如果其它容错s7连接发生了冗余丢失,则不会再有ob73启动。直到为具有容错功能的所有s7连接恢复冗余后,才会出现另一个ob73启动。如果发生了启动事件且ob73没有编程,cpu不会转为stop模式。
ob80时间出错组织块
无论何时执行ob时出错,s7-300 cpu的操作系统将调用ob80。此类错误包括:
超出周期时间、执行ob时出现确认错误、提前了时间而使ob的启动时间被跳过、
在cir后恢复run模式。例如,如果在上一次调用之后发生了某一周期性中断ob的启动事件,而同一ob此时仍在执行中,则操作系统将调用ob80。如果ob80尚未编程,则cpu将转为stop模式。可以使用sfc 39至42禁用或延迟和重新启用时间出错ob。
ob81电源出错组织块
只要发生由错误或故障所触发的事件,而此错误或故障又与电源(仅在s7-400上)或备用电池(当事件进入和离开时)有关,则s7-300 cpu的操作系统调用ob81。在s7-400中,如果已使用batt.indic开关激活了电池测试功能,则只有在出现电池故障时才会调用ob81。如果ob81没有编程,则cpu不会转为stop模式。可以使用sfc 39至42禁用或延迟,并重新启用电源出错ob。
ob82诊断中断组织块
如果具有诊断功能的模块(已为其启用了诊断中断)检测到错误,则它会输出一个诊断中断的请求给cpu(当事件进入和离开时)。则操作系统调用ob82。ob82的局部变量包含逻辑基址和四字节的故障模块的诊断数据(请参见下表)。如果ob82尚未编程,则cpu转为stop模式。可以使用sfc 39至42禁用或延迟,并重新启用诊断中断ob。
ob83插入/删除模块中断组织块
在下列情况下,cpu操作系统会调用ob 83:
? 插入/删除已组态模块后
? 在step 7下修改模块参数以及在运行期间将更改下载至cpu后
可借助sfc 39至42禁用/延迟/启用插入/删除中断ob。
ob84cpu硬件故障组织块
在下列情况下,cpu中的os将调用ob84:
? 已检测到并更正了内存出错之后
? 对于s7-400h:如果两个cpu之间的冗余链接的性能下降
可以使用sfc 39至42禁用或延迟cpu硬件出错ob,然后再次启用它。
ob85优先级出错组织块
只要发生下列事件之一,cpu的操作系统即调用ob85:
? 尚未装载的ob(ob81除外)的启动事件。
? 操作系统访问模块时出错。
? 在系统更新过程映像期间出现i/o访问错误(如果由于组态原因,未禁止ob85的调用)。
ob86机架故障组织块
只要在分布式i/o (profibus dp或profinet io)中检测到中央扩展机架(不带s7-300)、dp主站系统或站故障(进入事件与离开事件时),cpu的操作系统调用ob86。如果ob86尚未编程,当检测到此种类型的出错时,cpu将转为stop模式。可使用sfc 39至42禁用或延迟,并重新启用ob86。
ob87通讯出错组织块
只要发生由通讯出错导致的事件,cpu的操作系统就会调用ob87。
如果ob87尚未编程,cpu不会转为stop模式。可以使用sfc 39至42禁用或延迟,并重新启用通讯出错ob。
ob 88处理中断ob
程序块执行被中止后,cpu操作系统将调用ob 88。导致此中断的原因可能是:
? 同步出错的嵌套深度过大
? 块调用(u堆栈)的嵌套深度过大
? 分配本地数据时出错
如果未对ob 88编程且程序块执行被中止,则cpu进入stop模式
(事件id w#16#4570)。如果在优先级28下中止了程序块执行,则cpu进入stop模式。可借助于sfc 39至42禁用、延迟和启用处理中断ob。
ob121编程出错组织块
只要发生同程序处理相关的错误所导致的事件,cpu的操作系统即调用ob121。例如,如果用户程序调用了尚未装载到cpu中的块,将会调用ob121。
ob122i/o访问出错组织块
只要在访问模块上的数据时出错,cpu的操作系统即调用ob122。例如,如果在访问i/o模块上的数据时,cpu检测到读取错误,操作系统将调用ob122.