前几天接一个电话,是多年的一个工程中使用了一个FM350-1模块出现了问题。问题描述如下:
首先是基本硬件组态介绍及编程思路介绍:
1、硬件组态的“basic parameters"对话框中, "select interrupt"选项中,选择的是“hardware".
2、硬件组态的”operating modes"对话框中,"gate"选项选择的是“SW gate",也即软件门。
3、硬件组态的”hardware interrupt enable"对话框中,"interrupt triggered by"选项选择的是”reaching comparison value 1 up "
4、编程方面,OB40的编程语句很简单,就是:set M20.0。
然后在OB1中执行的一个FC中计时100ms后再复位M20.0。确认M20.0没有在其它任何地方被写。也没有MB20MW20MW19MD20MD19MD18MD17被写操作。
然后是问题的描述:
甲方电话中描述说M20.0无法复位,即便是在"monitor/modify varaibles"中也无法复位。
处理思路:1、首先是怀疑M20.0被其它程序块写入,或者通过通讯在别的CPU中被写入了。但是让甲方新建一个DB块,用新建DB块中的地址替代M20.0也没用,照旧无法复位。
2、然后就怀疑是OB40在一直被执行。可是经电话沟通知道FM350-1的SW gate一直为0,根本就没有启动HSC,OB40没有理由执行啊。
3、于是怀疑FM350-1有问题(虽然无论是CPU还是FM350-1都没有红灯闪烁),换一个新的FM350-1,但是问题依然。
4、换一个新的CPU,并重新下载以前备份的程序(这个我不确认,我不知对方下载的是否是以前备份的正常的程序,但甲方说是以前备份的程序),问题依然没有得到处理。
至此,我没招了。
后来,业主技术人员说他们发现FM350-1所参数化的DB块中的DBX57.3位一直为1.我查了一下,这个位代表"RAM FLT",也即“RAM error"。他们试着把这个位复位后,所有的一切就全部正常了。
我的问题是:1、这个”RAM error"问题是如何产生的?2、为什么重新下载程序,这个位没有被复位掉?3、为什么这个位为”1“的时候,OB40会一直被执行?
请各位大侠指教!