上星期五一客户给我打电话,让我一定要帮忙解决一下软冗余的问题。这个客户以前也调过软冗余,照手册做应该没有什么问题啊!仔细问了一下客户具体情况,只是说好象不能同步数据。没办法只好星期六过去,现场一看,CPU上SF红灯亮,看诊断缓冲区,报访问DB地址错,但没有提示是访问哪一个DB块报错。再看软冗余状态字,数据为0,冗余程序根本没有执行。先解决SF红灯亮的问题,看他的程序只实现了冗软余的功能,其余程序还没有写。也只有软冗余功能块FB101用到了数据块,客户基本上就仿照了例子程序改的程序,程序是用STL语言写的,粗看一下,没有问题,为什么CPU会报DB访问错呢?仔细看程序凭感觉发现FB101用到的背景数据块DB5容量比较小,只有108个字节,但在程序编辑器里并没有显示红字。把DB5删除,然后在程序中自动生成,重新生成的数据块有358个字节。重新下载程序,一切正常。询问客户,客户说当时把旧的程序复制过来的时候,没有重新生成背景数据块。问题虽然解决了,但引出了两个问题
1.为什么背景数据块不一致,在程序编辑器里程序没有显示红色。
2.诊断缓冲区为什么不提示访问出错的DB块号,这个很不方便。