编写轴运动的控制逻辑

<< 点击显示目录 >>

主页  mappServices帮助手册 > mapp Sequence: 机器流程动态化  > 开始工作 >

编写轴运动的控制逻辑

mapp Services V5.16

在MpSequence和MpAxisBasic工作后,在任务 "AxisCtrl "中增加了一个 "开关案例"。首先,需要一个不执行任何动作的步骤(轴静止)。在这个步骤中,序列器被告知轴没有执行任何动作。

CASE State OF
    0:
        CommandStructure.MovementState := mpSEQUENCE_MOVEMENT_IDLE;
        IF CommandStructure.Start THEN
            Parameters.Position := ParameterStructure.TargetPosition;
            MpAxisBasic_0.Update := TRUE;
            MpAxisBasic_0.MoveAbsolute := TRUE;
            State := 1;
        END_IF;
END_CASE

然后添加一个步骤,在这个步骤中轴应该被移动。在这个步骤中,MpSequence通过 mpSEQUENCE_MOVEMENT_ACTIVE被告知  一个运动目前正在进行。当运动完成后,用 mpSEQUENCE_MOVEMENT_DONE 通知序列 。然后,这个步骤被MpSequence认为已经完成,并进行下一个步骤。

CASE State OF
    0:
        CommandStructure.MovementState := mpSEQUENCE_MOVEMENT_IDLE;
        IF CommandStructure.Start THEN
            Parameters.Position := ParameterStructure.TargetPosition;
            MpAxisBasic_0.Update := TRUE;
            MpAxisBasic_0.MoveAbsolute := TRUE;
            State := 1;
        END_IF;
    1:
        CommandStructure.MovementState := mpSEQUENCE_MOVEMENT_ACTIVE;
        MpAxisBasic_0.Update := FALSE;
        IF MpAxisBasic_0.InPosition THEN
            MpAxisBasic_0.MoveAbsolute := FALSE;
            CommandStructure.MovementState := mpSEQUENCE_MOVEMENT_DONE;
            State := 0;
        END_IF;
END_CASE;