
∙悬赏分:20
∙- 解决时间:2010-11-18 21:23
为什么在OB1中无条件调用FB1在线监视使CPU自动进入STOP状态,我只有OB1,FB1,FB2,DB1,DB2两个DB分别为背景数据块。查看模块诊断信息提示有两个分别为:
事件 2 / 14: 事件 ID 16# 4562
由编程错误引起的 STOP 模式(OB 没有装载或不能装载,或没有 FRB)
用户程序中的断点:循环程序(OB1)
优先级: 1
FB 编号: 1
模块地址: 48
先前的工作模式:RUN
要求的工作模式:STOP (内部)
内部错误, 进入的事件
22:44:03.757 2010-11-17
事件 3 / 14: 事件 ID 16# 2523
写入时发生区域长度错误
全局 DB,双字访问, 访问地址: 12
FB 编号: 1
模块地址: 48
所需的 OB:编程错误 OB (OB121)
优先级: 1
内部错误, 进入的事件
22:44:03.757 2010-11-17
事件 1 / 100: 事件 ID 16# 2522
读取时发生区域长度错误
全局 DB,双字访问, 访问地址: 12
FB 编号: 1
模块地址: 72
所需的 OB:编程错误 OB (OB121)
优先级: 1
内部错误, 进入的事件
22:14:15.561 2010-11-17
事件 2 / 100: 事件 ID 16# 2522
读取时发生区域长度错误
全局 DB,双字访问, 访问地址: 12
FB 编号: 1
模块地址: 56
所需的 OB:编程错误 OB (OB121)
优先级: 1
内部错误, 进入的事件
22:14:15.561 2010-11-17
事件 3 / 100: 事件 ID 16# 2523
写入时发生区域长度错误
全局 DB,双字访问, 访问地址: 12
FB 编号: 1
模块地址: 48
所需的 OB:编程错误 OB (OB121)
优先级: 1
内部错误, 进入的事件
22:14:15.561 2010-11-17
问题补充:感谢各位的回复在此表示由衷的感谢,只是小弟初来咋道,还有太多不懂之处,还望各位大侠赐教啊!小弟有几处不解的地方,比如我在FB1中我读写DB1这个北景数据块,地址该怎么填呢?我是这样填的:DB1.DBD12,到现在我还不知道错在哪,这个DB1.DBD12是什么意思?不是DB1这个数据块里双字12这个地址吗?背景数据块与共享数据块分别应该怎么填呢!谢谢!
| 问题ID: 61093 | 提问者:工控学习人 - 学长 第2级 |
最佳答案
呵呵!!!
回答者: 一介书生 - 高级技术员 第7级 2010-11-18 21:14
提问者对于答案的评价:
很感谢,给我点通了穴道啊!
很感谢各位的回复,只是小弟愚钝未能理解,书生师傅加了我好友,给了我详细解释与讲解,所以很感谢!
在此我也很感谢 zhangli0
您觉得最佳答案好不好?
窗体顶端
| 50% (0) | 50% (0) |
专家置评
这样私聊不利于网友分享,不建议
置评专家:西门子自动化技术支持 2010-11-19 16:52
其他回答
仔细检查一下你的程序
回答者: wqhhjjy - 初级工程师 第9级 2010-11-17 23:04
你爹程序使用的数据块的地址有错误,你访问了不错在的地址,比如你的db1地址是到128,而你访问了db1.dbd130,这样就会出现你的错误。
专家奖励分:5分 回答者: zhangli0 - 顶级工程师 第12级 2010-11-18 08:40
地址错误,即访问了不存在的地址,下载OB121来避免CPU停机。具体参考如何使用OB组织块:
http://www.ad.siemens.com.cn/download/Html/download.aspx?DownloadID=1271&TreeID=8&URL=%2fDownload%2fUpload%2fAS%2fapplication%2fA0059.zip
回答者: 满 - 顶级工程师 第12级 2010-11-18 09:21
背景数据块中建立了DBD12吗
回答者: 路是走出来的 - 助理工程师 第8级 2010-11-18 20:09
很明显是在调用功能块FB1时自动读取当前背景数据块DB1中的参数无法找到对应数据块DB1中的双字参数(地址为DB1.DBD12),可能原因是:在建立背景数据块时错误,FB1中的行参与DB1中的实参不一致(FB1中未定义而调用、行参与实参数据类型不一致),DB1未与程序一起下载到PLC中;
你在建立FB1的背景数据块DB1是必须注意方法,正确的步骤是:在SIMATIC管理器中,如果你已经建立了FB1块,依次展开到“快”,选定菜单“Insert/S7 Block/Data Block”(插入/S7块/数据块),在打开的“Properties--Data Block”(属性-数据块),“Name and type“(名字和类型)中,采用自动生成的名称DB1,选择数据块的类型为Instance(背景数据块),这样自动形成一个新的数据块,你在保存时,将自动生成与FB1对应的背景数据块DB1中的数据,其变量与对应的功能块FB1中的变量声明表中的变量相同,不能在DB1中增减变量,只能在数据显示方式(在打开DB1数据编辑器的菜单View(查看)中,选择Data View(数据显示)下修改实际值,或者通过对应的DB1的变量声明表来修改;
你可能在修改FB1时,没有执行相应的操作,使FB1中定义的变量与DB1已经不一致,而且你修改后必须把数据块与程序块一起下载到PLC 中,才能被FB1访问;你可以在建立FB1后,删除DB1,按照上述方法重新插入DB1块,编译并下载到PLC中;
你可以同时打开FB1块与DB1块,比较DB1中的数据与FB1变量声明表的变量之间的对应关系,变量是否相同;在你的FB1程序中是否调用了没有在变量声明表定义的变量地址,无法在DB1中找到对应的数据;
在FB1的变量声明表中,IN参数可以是常数、绝对地址或符号地址定义;OUT和IN_OUT参数必须作为绝对地址或符号地址定义;必须保证所有地址和常数与要传送的数据类型相符;
你在调用FB1时,由于实际参数是数据块DB1,必须指定完整的绝对地址,如DB1.DBW12
很可能你在FB1编写程序调用的变量未定义或DB1中无对应的参数值(DB1.DBW12)不存在,是CPU程序执行时读写错误,你可以下载对应的OB121块;这样就不会产生“编程错误引起的 STOP 模式(OB 没有装载或不能装载,或没有 FRB”信息
