A motion control program that is executed by a computer for performing motion control of a plurality of control target devices, the computer having a non-real-time OS and a real-time OS installed thereon, wherein the motion control program causes the computer to function as: a plurality of reception units operating on the non-real-time OS, the plurality of reception units being associated with a plurality of user-created programs that control the plurality of control target devices; a channel management unit (321, 310) operating on the real-time OS; and a fixed-cycle processing unit operating on the real-time OS; wherein the channel management unit creates an operation channel common to the plurality of reception units on a shared memory referable from the non-real-time OS and the real-time OS, wherein the shared memory is shared between a plurality of reception units operating on the non-real-time OS and the channel management unit operating on the real-time OS; the reception units each provide via the operation channel, when receiving a preparation instruction to perform preparation for starting motion control of a given control target device from a respective user-created program associated with the reception unit, an instruction to generate a control command channel to the channel management unit, wherein the control command channel is dedicated to the reception unit and the respective user-created program associated with the reception unit; the channel management unit creates on the shared memory, when receiving the instruction from the reception unit, the control command channel associated with the respective user-created program that has provided the preparation instruction; the reception units each receive from the respective user-created program a control command indicating an operation that should be performed by the given control target device over a plurality of motion control cycles and store control command information indicating a content of the received control command, in the control command channel; and the fixed-cycle processing unit calculates an interpolation command indicating an operation that should be executed for each of the motion control cycles, based on the control command information obtained from the control command channel and predetermined logic according to the control command information, and transmits the calculated interpolation command for each of the motion control cycles to the given control target device, thereby performing motion control of the plurality of control target devices. a plurality of reception units operating on the non-real-time OS, the plurality of reception units being associated with a plurality of user-created programs that control the plurality of control target devices; a channel management unit (321, 310) operating on the real-time OS; and a fixed-cycle processing unit operating on the real-time OS; wherein the channel management unit creates an operation channel common to the plurality of reception units on a shared memory referable from the non-real-time OS and the real-time OS, wherein the shared memory is shared between a plurality of reception units operating on the non-real-time OS and the channel management unit operating on the real-time OS; the reception units each provide via the operation channel, when receiving a preparation instruction to perform preparation for starting motion control of a given control target device from a respective user-created program associated with the reception unit, an instruction to generate a control command channel to the channel management unit, wherein the control command channel is dedicated to the reception unit and the respective user-created program associated with the reception unit; the channel management unit creates on the shared memory, when receiving the instruction from the reception unit, the control command channel associated with the respective user-created program that has provided the preparation instruction; the reception units each receive from the respective user-created program a control command indicating an operation that should be performed by the given control target device over a plurality of motion control cycles and store control command information indicating a content of the received control command, in the control command channel; and the fixed-cycle processing unit calculates an interpolation command indicating an operation that should be executed for each of the motion control cycles, based on the control command information obtained from the control command channel and predetermined logic according to the control command information, and transmits the calculated interpolation command for each of the motion control cycles to the given control target device, thereby performing motion control of the plurality of control target devices.