quote:以下是引用剑忠在2009-05-19 12:58:27的发言:
OB8X是SIEMENS公司STEP7中一系列故障诊断组织块,包括OB80(Cycle Time Fault)、OB81(Power Supply Fault)、OB82(Cycle Time Fault)、OB83(I/O Point Fault 1)、OB84(CPU Fault)、OB85(OB Not Loaded Fault)、OB85(OB Not Loaded Fault)、OB86(Loss of Rack Fault)、OB87(Communication Fault)、OB88(Abortion of Processing)。
由此可见,OB8X囊括了系统所有软硬件的故障诊断。SIEMENS公司提供了如此多的OB8X系列故障诊断OB块,难道一个项目中需要用到所有的OB8X系列故障诊断OB块吗?手动编写出较为完善的OB8X系列故障诊断OB块程序很是繁琐和费时,系统有没有提供一些模板(Templet)或快速组态工具?如果编写使用了众多的OB8X OB8X系列故障诊断OB块,会挤占用你多大的存储空间?带着这些问题,我就以自己的使用经验与大家探讨交流。
对于使用S7-400系列,属于大中型系统,特别是CPU416-2DP以上或CPU417H。这些CPU模块由于存储容量大(Work memory>2.8MB)、运算速度快、指令执行时间短(0.03ms/1000 instructions)、通讯能力强(Max.N=64connections)。由于这类系统配置通常采用PCS7,或使用了CFC工具组态一个中等规模的DCS项目(如一座钢坯加热炉、一条热轧钢铁线、一个化工车间等)。则可以利用PCS7库中CH_AI(Analog Input)、CH_AO(Analog Output)、CH_DI(Digital Input)、CH_DO(Digital Output)这几个Driver功能块驱动用户程序使用的I/O地址,编译(Compile)时再勾选上“Generate module drivers”。
之后,你会发现编译系统自动产生了OB8X系列故障诊断OB块。在产生的OB8X系列故障诊断OB块中,系统自动调用了OB_BEGIN(CPU Function Block)、OB_END(Terminate OB Function Block)、PS(Power Supply Function Block)、MOD_2(Non-diagnostic Module Check (32 Channel))、MOD_D1(Diagnostic Module Check(<=16 Channel))、SUBNET(SUBNET Function Block)、RACK(RACK Function Block)、CPU_RT(CPU Performance Block)、PO_UPDAT(Update Process Output)、CONEC(Connection Function Block)等系统诊断功能块。如果编译(Compile)了WinCC的OS项目后,系统还会自动组态好WinCC中的“Alarm Logging”、“Tag Logging”,这样CPU将过程诊断信息自动发送至WinCC的“Alarm List”列表中清晰的显示出来。
所以使用S7-400系列PCS7和CFC工具,获取系统的过程诊断信息无需手工在OB8X系列故障诊断OB块中编写程序,编译系统会自动生成所有而完善的软硬件过程诊断信息,并在WinCC中清晰的显示出来。由于编译系统自动生成的过程诊断信息项目数太多,会占用CPU很大的存储空间(约6%~8%)和CPU对诊断处理程序的执行开销,因此不适于S7-300系列配置的中小型系统。
对于S7-300系列的配置,过程诊断信息应手动在OB8X系列故障诊断OB块中编写过程诊断信息程序,且仅编写较为重要的故障诊断处理程序,对重要的Prifibus_DP I/O站点、重要的I/O模板,或I/O端口地址和影响生产全局性设备进行故障诊断处理。
总之,针对自身系统项目的软硬件资源配置和使用状况,合理而有效地编写使用过程诊断信息程序,既为我们快速分析和查找故障原因提供便利,又不过多挤占系统有限的软硬件资源。这是每个项目开发人员都必需考虑和重视的环节。