发表于:2013/12/18 20:25:17
#0楼
SIMOTION中的各个TO都有一个系统变量error,通过这个_to.xxxx.error的状态,可以对TO是否存在故障作出判断。但在有些情况下,光用这个error来作为错误状态反而不妥。比如在轴的命令发生正常替换时,先以速度A运行,再以速度B运行,此时轴会报30002信息提示,告知用户原来的速度A被取消,现在速度B生效了。但轴的error状态却变成Yes了,如果用户在此基础上编写了故障处理程序,那么就可能造成更多的连锁反应。
换句话说,SIMOTION系统中有一些报警信息,如30002等,只是消息提示,不会对系统运行造成影响,但在30002出现时,轴的状态_to.error会变成yes。光用error这个变量不足以确定TO的故障状态。
正确的判定TO存在错误的方法是:
_to.Axis_1.error=yes AND _to.Axis_1.errorReation<>NONE
除了轴TO以外,其他TO也与此相同。如果有错,可以进一步编写用户程序,比如:
IF _to.Axis_1.error=yes AND _to.Axis_1.errorReation<>NONE THEN
gboAxis1Error:=TRUE;
myRetDWORD:=_resetTaskId(_task.motionTask_1);
END_IF;
换句话说,SIMOTION系统中有一些报警信息,如30002等,只是消息提示,不会对系统运行造成影响,但在30002出现时,轴的状态_to.error会变成yes。光用error这个变量不足以确定TO的故障状态。
正确的判定TO存在错误的方法是:
_to.Axis_1.error=yes AND _to.Axis_1.errorReation<>NONE
除了轴TO以外,其他TO也与此相同。如果有错,可以进一步编写用户程序,比如:
IF _to.Axis_1.error=yes AND _to.Axis_1.errorReation<>NONE THEN
gboAxis1Error:=TRUE;
myRetDWORD:=_resetTaskId(_task.motionTask_1);
END_IF;