This is where your logic finally moves something. Omron's NJ/NX controllers drive servos with the PLCopen motion function blocks, such as MC_Power, MC_MoveAbsolute and the rest of the MC_ family. Power an axis up and send it somewhere.
You can't move a dead axis. Call MC_Power first to enable it (watch Status go true), then MC_MoveAbsolute to send it to a target position. Try moving before powering and the command is rejected.
pwr(Axis := Axis1, Enable := TRUE); IF pwr.Status THEN mv(Axis := Axis1, Execute := go, Position := 75.0, Velocity := 200.0); END_IF; // mv.Done flags arrival
🔁 Rising-edge Execute. Every motion FB that has an Execute input fires on a rising edge of Execute, so set it false, then true, to launch a new move. The block raises Busy, then Done (or Error).
📐 Absolute vs relative. MC_MoveAbsolute goes to a coordinate; MC_MoveRelative moves a set distance from wherever the axis is now. The axis is the same; only the way you give the target changes.
You call MC_MoveAbsolute but the axis hasn't been powered. What happens?