发布于 2010-03-25 18:53:24
1楼
当程序不是很大的时候,尽量使用BACK GROUND TASK吧。
1、使能轴可以在BACK GROUND TASK中使用。
关于使能:请使用_enableaxis命令来完成,举例:
myRetDINT :=
_enableaxis(
axis := 此处填轴的名称
,enablemode := ALL
// ,servocontrolmode := ACTIVE
// ,servocommandtoactualmode := INACTIVE
,nextcommand := IMMEDIATELY
// ,commandid := (0,0)
// ,forcecontrolmode := INACTIVE
// ,stwbitset := 0
// ,movingmode := DO_NOT_CHANGE
);
在这个命令之前加入一些判断,比如如果已经使能就不用再使能,如果错误就先复位后再使能等等。
2、可以任意启停轴的,停止的方法有几个,一个是_stop命令,但是这个命令停下来很慢,建议使用_stopemergency,这个命令可以规定时间停轴,缺点是再次启动前需要Reset一次轴。
举例:速度轴的停止
IF NOT gb_run_state AND Axis_main.movecommand.state <> inactive THEN
myRetDINT :=
_stopemergency(
axis := Axis_main
,stopdrivemode := STOP_IN_DEFINED_TIME
,stoptimetype := DIRECT
,stoptime := stop_time
,mergemode := IMMEDIATELY
,nextcommand := IMMEDIATELY
// ,commandid := (0,0)
,movingmode := SPEED_CONTROLLED
);
END_IF;
总之灵活运用吧。