作者:LeeWheel
看到大家都在分享工作中的故事,那么我也来分享一下今天发生的一个Simotion+S120调试故事,以便给同行遇到类似问题时有个借鉴。
今天我正在认真画着图,突然手机响起,我顺手拿起电话:“喂!您好...哦,是黄工啊,什么?伺服开不起来了?那你帮我看下触摸屏上系统状态里面伺服和整流有没有报警?”我放下电话,怎么会呢,昨天还是开的很顺利的啊,难道他们忘了给伺服送主电了?幸亏我在触摸屏做了所有伺服以及整流的Fault Code和Alarm Code判断问题应该很简单的....正在想着,电话再次响起。“黄工,怎么样,有没有显示什么报警码或警告码?没有?这样啊,你稍等下,我等下重新给你做个触摸屏程序,你只要那个网线就可以直接下载了,发好邮件我给你电话....嗯,再见!”挂掉电话,我迅速浏览了一下程序,可以确定是整流没有使能导致伺服不能运行,但是从程序上看,应该是没有任何漏洞会导致整流不使能的,首先我在Startup程序中将整流的控制字赋值为16#040a,然后CPU启动后根据整流没有故障且未使能的情况下,将整流的控制字赋值为16#040b直接使能,只有整流使能了,启动伺服的程序才有条件执行,那么我先在触摸屏上把整流的状态字以二进制显示一下,先判断下其状态再说,顺便再把控制字以16进制也显示下,修改完画面,打包成Pack&go,发给客户,电话指导客户下载完画面,结果让我非常意外!控制字是16#040b那是一定的,但是状态字中最后4位全是0,第6bit,也就是Switching on inhibited居然是1.....怎么可能??我连忙将程序重新修改,将自动执行使能的程序先屏蔽,在触摸屏上做了一个按钮来执行使能,将程序装载至文件系统,打包后发给客户,再次指导客户使用CF卡读卡器将程序下载至Simotion 的CF卡....“黄工,您好,怎么样?还是一样?你先说说你怎么操作的,哦,那这样,你先把CPU关掉再启动,嗯,然后先不要做任何操作,对,你再看看现在的状态字,什么?控制字那边全是0?”我这下郁闷了,控制字居然是16#0000,这样再给16#040b一定是不能启动整流的..."那这样,黄工,我再修改下程序,你稍等下,我搞好马上联系你。“ 放下电话,我仔细查看了程序,没有问题啊,Startup我做了一个赋值,Background里根据整流未使能以及无错误和故障给16#040b,完全没问题的啊....难道我当时没执行Copy Ram To Rom?那也不对啊,我后面可是直接把程序发给他拷贝到卡里的啊....胡思乱想间我眼光扫过Address List,发现其中整流控制字设置为Substitution value,且这个值是16#0000....难道是这个在作怪?于是我将此值修改成16#040a,将程序发给客户。5分钟后,电话响起。“您好,黄工,情况如何?好了!啊,那太好了,非常感谢,麻烦您了!再有什么问题随时联系!” 看来还是不能太相信Startup的执行能力啊,这个事情也证明凡是要考虑仔细,不能马虎大意,一丝一毫不够严谨都会带来不必要的麻烦。