登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:程序加了打开数据块的指令后CPU就会停机

点击:822 回复:7

楼主
如图程序,就是想实现度两个DB块的数据COPY,用的是间接寻址,主要是想学习实践一下ANY参数的解析和重构,但我的程序不对,图1的程序加了OPN DB[#O_DBNR]的两个打开数据块的指令后,CPU就会停机,不明白是那里有问题,我用的是仿真,请大神看看,谢谢。
附件 QQ截图20181122165626.jpg
附件 QQ截图20181122165650.jpg
最后修改:2018/11/22 17:48:05
18-11-22 17:02
贴子发了两天了,自己顶起来,有版主大神能指点下么?
18-11-24 11:37

引用 jiouai84 在 2018/11/24 11:37:08 发言【内容省略】

你需要首先贴出你的CPU的模块诊断信息,来看看停机原因。
Good Luck~
18-11-24 11:54
OPN DI ?  不能同时打开二个DB,打开DB1,读到ar1,打开db2,存入。
最后修改:2018/11/24 14:53:27
18-11-24 14:44
我在Step7 V5.6 SP1,仿真版本PLCSIM V5.4 SP8中测试了楼主的代码,并没有发生停机。
附件 snap3.jpg
或许楼主将源数据和目标数据都建立在IN引脚下而引发问题。
Good Luck~
18-11-26 13:31
我想楼主要实现SFC20的一些功能,因此我添加了代码,并增加了DB1和DB2。
附件 snap3.jpg
在DB1中,我设定了初始值:
附件 snap4.jpg
通过在OB1中调用FC1:
附件 snap5.jpg
在模拟器中并没有出现问题:
附件 snap6.jpg
模块诊断信息也证实了这一点:
附件 snap7.jpg
在DB2的监控中,我得到了与DB1一样的结果:
附件 snap8.jpg
因此,我认为楼主在建立ANY数据类型时,错误的将源数据和目标数据均建立在IN下面,而不是IN,OUT下面,因此导致程序的地址访问越界从而引发停机,即使添加OB121,虽然可以避免停机,但是DB2得不到正确的结果。
Good Luck~
18-11-26 13:40
感谢C版的详细指点,对于停机的原因,我在仿真的时候把DB2和DB3也下在到PLC中,就没有停机了,在FC调用是的实参赋值是P#DB3.DBX0.0  现在程序可以运行了,对与DB3的赋值我是用外部置位的方法,对DB3的d4改成了DINT,复制的数据也实现了SFC20的功能,ORIG和DEST的接口还是IN接口,这个对程序没有影响到,我看过其它的程序,也是都用的IN接口,不能确定接口的影响,还有是我设定的数据类型的报警好有错误输出,正在学习,再次感谢。
附件 QQ截图20181126162838.jpg
附件 QQ截图20181126164901.jpg
附件 QQ截图20181126164920.jpg
附件 QQ截图20181126164935.jpg
附件 QQ截图20181126164952.jpg
18-11-26 16:56
7楼
该帖内容不符合相关规定!
18-11-26 18:12

工控新闻

更多新闻资讯