请教:OB85在使用中的一些问题
刘玉蓉
发布于2014-10-17 16:52
4
0
标签:
在STEP7中,我采用“报告系统错误”功能,自动生成用于诊断和发送消息的OB,FB,SFC等,故障信息和故障文本用于WinCC项目显示(见附图1)。自动生成的OB85中,带有如下代码
程序段1: SFM: 报告对系统错误的判断
根据错误进行出错处理
L B#16#A1 // 未载入的 OB 出错
L #OB85_FLT_ID
==I
JC K_OB
L B#16#A2 // 未载入的 OB 出错
==I
JC K_OB
L B#16#A3 // 访问一个未下载的块出错
L #OB85_FLT_ID
==I
JC K_B
JU F_PA
程序段2:SFM: 未载入的 OB 的错误处理
可以在此处调用用户程序,而不必切换到 STOP 模式。
K_OB: JU STOP
JU ENDE
程序段3:SFM: 未载入的 FB 或 DB 的错误处理
可以在此处调用用户程序,而不必切换到 STOP 模式。
K_B: JU STOP
JU ENDE
程序段4:SFM: 在过程映像更新时的错误处理
F_PA: NOP 0
JU ENDE
程序段5:SFM: 将 CPU 切换到 STOP 模式
STOP: CALL "STP" (SFC46)
程序段6:SFM: 退出块
ENDE: NOP 0
因为是自动生成的代码,有几个问题请高手指点一下:
1·在程序段1中, #OB85_FLT_ID的“B#16#A1 ”、“B#16#A2 ”、“B#16#A3 ” 故障代码具体是什么意思呢?程序标注只是写了未载入的OB出错,在STEP7中,F1(帮助)OB85,帮助文档讲解的没明白。
2·程序段2,程序段3中都存在指令 JU STOP,标签STOP对应的指令是CALL “STP”(SFC46),意思是“change the cpu to stop”,而我不想让CPU停机,我考虑将原程序中的 CALL “STP”(SFC46) 删除,不知是否可行。
3·查看《组织块使用说明》,在介绍OB85部分存在这样一条说明,“如果OB85未编程,当检测到这些事件之一时CPU变为STOP方式”(事件1·未下载的OB的启动。事件2·当操作系统访问模块时故障。事件3·系统刷新过程映像期间I/O访问故障)。请问,在项目中我插入空的OB85,在有如上三个事件触发时,CPU也会停机?没明白这条注意事项是什么意思,请指点
图片说明: 1,附图1
佳答案
1、在程序段1中, #OB85_FLT_ID的“B#16#A1 ”、“B#16#A2 ”、“B#16#A3 ” 故障代码具体是什么意思呢?
例如,B#16#A1表示:
由于使用STEP 7创建了组态,用户的程序或操作系统将为未加载到CPU上的OB创建一个启动事件。
、OB85_Z1:由OB85_Z23确定的被调用OB的各个局部变量。
、 OB85_Z23:
- 高位字:导致OB调用的事件的等级和编号
- 低位字,高字节:程序级别以及出错时处于活动状态的OB
低位字,低字节:激活的OB。
全部说明请见,下述文档中1-39页,下载:
<S7-300400的系统软件和标准功能>下载:
https://www2.ad.siemens.com.cn/download/Upload/AS/manual/1023.pdf
2、将原程序中的 CALL “STP”(SFC46) 删除,不知是否可行?
如果停机的后果是可预料的,即无人身、设备伤害是可以的。
3、在有如上三个事件触发时,CPU也会停机?没明白这条注意事项是什么意思?
如果OB85未编程(即空的OB85),当发生下述故障时CPU会停机:
、系统处理某个事件需要相应的OB块,但这个OB块不存在(没有下载);
、系统要访问模块时,例如要读数字量输入,但这个模板有故障,不能被正常访问;
、系统在每个扫描周期的开始与结尾,分别要刷新I/O映像区,但此时发生了故障。
4、相关参考文档:
参见《使用OB8x诊断SIMATIC PLC》:
https://www2.ad.siemens.com.cn/download/Upload/AS/application/A0059.zip
STEP 7诊断硬件和网络故障的方法,参考:
https://blog.gkong.com/more.asp?name=liaochangchu&id=117288