Control Expert · Track 12 · Lexium motion

Make the Modicon Move

Modicon PACs spend their lives on pumps and valves — but when a machine needs a servo, Schneider answers with the Lexium drive family and the Motion Function Blocks (MFB) library: MC_Power, MC_Home, MC_MoveAbsolute, straight out of the PLCopen playbook. Enable it, reference it, send it somewhere.

⏻ MC_Power⌂ MC_Home🎯 MC_MoveAbsolute
01 · Drive a Lexium axis

Power → Home → Move

A Lexium 32 servo on a 400 mm pusher rail, commanded over CANopen. Motion has an etiquette and the blocks enforce it: MC_Power wakes the axis (Disabled → Standstill), MC_Home gives it a reference — and only then will MC_MoveAbsolute accept a target. Try skipping a step: the block answers with an error, not a move.

target
🟩
0
200
400 mm

the recipe — same on every brand

pwr (Axis := Lexium_1, Enable := TRUE);   (* Disabled → Standstill *)
home(Axis := Lexium_1, Execute := doHome); (* establish reference  *)

IF pwr.Status AND home.Done THEN
  mv(Axis     := Lexium_1,
     Execute  := go,        (* rising edge! *)
     Position := 280.0,
     Velocity := 200.0);
END_IF;

Lexium_1 — AXIS_REF

AxisStateDisabled
ActualPosition mm
Referenced (homed)FALSE
pwr.StatusFALSE
mv.DoneFALSE
› axis is Disabled — nothing will move until MC_Power.
🎯 mm

Why homing matters: a servo wakes up knowing where its encoder is, not where the machine is. Until MC_Home establishes the reference, "position 280" has no physical meaning — so absolute moves are refused while relative jogs are allowed. Drives with absolute encoders remember the reference through power cycles and skip this dance.

02 · The Schneider map

Two lines, one playbook

🏭 Process PACs (M340/M580 + Control Expert). Motion via the MFB library commanding Lexium drives over CANopen — fine for door axes, pushers, the occasional positioner on a process skid.

🤖 Machine line (M262 + Machine Expert). Real machine motion — camming, gearing, coordinated axes over Sercos III — lives in EcoStruxure Machine Expert with the full PLCopen MC_ set. Pick the right controller before you pick blocks.

🔁 Rising-edge Execute. Like every PLCopen block: a move fires on the rising edge of Execute, raises Busy, then Done or Error + ErrorId. Re-trigger by dropping and raising Execute.

🧭 The state machine is the law. Disabled → Standstill → Discrete Motion → back to Standstill; ErrorStop on a fault until MC_Reset. Blocks legal in one state are refused in another — the same PLCopen diagram you met in the cross-brand Motion track (D7).

03 · Check yourself

It won't move

The axis is powered — pwr.Status is TRUE, AxisState is Standstill, the Lexium reports no fault. Yet MC_MoveAbsolute immediately raises Error. What's the most likely cause?