WO2021229842A1 - マシン制御システム、プログラム、マシン、システム及びデバイス - Google Patents

マシン制御システム、プログラム、マシン、システム及びデバイス Download PDF

Info

Publication number
WO2021229842A1
WO2021229842A1 PCT/JP2020/042331 JP2020042331W WO2021229842A1 WO 2021229842 A1 WO2021229842 A1 WO 2021229842A1 JP 2020042331 W JP2020042331 W JP 2020042331W WO 2021229842 A1 WO2021229842 A1 WO 2021229842A1
Authority
WO
WIPO (PCT)
Prior art keywords
machine
cycle
information
controller
unit
Prior art date
Application number
PCT/JP2020/042331
Other languages
English (en)
French (fr)
Inventor
賀須男 藤野
忠輔 弓場
諒 下留
良太 森若
和敏 小林
裕喜 南田
Original Assignee
株式会社安川電機
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社安川電機 filed Critical 株式会社安川電機
Priority to JP2021506773A priority Critical patent/JP6915759B1/ja
Priority to KR1020227042649A priority patent/KR20230006582A/ko
Priority to CN202080100688.4A priority patent/CN115516870A/zh
Priority to EP20935131.1A priority patent/EP4138402A4/en
Publication of WO2021229842A1 publication Critical patent/WO2021229842A1/ja
Priority to US18/053,763 priority patent/US20230067306A1/en

Links

Images

Classifications

    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C17/00Arrangements for transmitting signals characterised by the use of a wireless electrical link
    • G08C17/02Arrangements for transmitting signals characterised by the use of a wireless electrical link using a radio link
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • B25J13/006Controls for manipulators by means of a wireless system for controlling one or several manipulators
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1661Programme controls characterised by programming, planning systems for manipulators characterised by task planning, object-oriented languages
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/418Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q9/00Arrangements in telecontrol or telemetry systems for selectively calling a substation from a main station, in which substation desired apparatus is selected for applying a control signal thereto or for obtaining measured values therefrom
    • H04Q9/04Arrangements for synchronous operation
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/33Director till display
    • G05B2219/33097Variable ticks, align clocks, to synchronise cycles with other machine, robot
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/33Director till display
    • G05B2219/33192Radio link, wireless

Definitions

  • This disclosure relates to machine control systems, programs, machines, systems and devices.
  • Patent Document 1 includes a robot, a processing device, a robot controller that controls the robot, a processing device controller that controls the processing device, and a programmable logic controller that generates commands to the robot controller and the processing device controller. It has been disclosed.
  • This disclosure provides an effective system for improving the reliability of synchronous communication between devices.
  • the machine control system is a virtual space having one or more machines that are configured in a real space and realize motion according to a machine command, and one or more servers that communicate with one or more machines.
  • each equipped with one or more controllers that control one or more machines each of one or more controllers runs a motion program in a control cycle and generates machine commands for the corresponding machines. It has an additional part that adds the first cycle information to the machine command and a synchronous communication part that sends the machine command to the corresponding machine, and each of one or more machines issues a machine command from one or more servers.
  • a terminal communication unit to receive, a machine-side timing adjustment unit that stores the machine command received by the terminal communication unit, and calls the machine command in the machine-side control cycle corresponding to the first cycle information added to the machine command. Has.
  • a program according to another aspect of the present disclosure executes a motion program in a control cycle to generate a machine command for a corresponding machine, and in the corresponding machine, which machine-side control cycle calls the machine command.
  • a virtual server that communicates the controller that executes the addition of the specified first cycle information to the machine command and the transmission of the machine command to which the first cycle information is added to the corresponding machine. Implement it in space.
  • a machine is a terminal communication unit that communicates with a main body that realizes motion and a server that constitutes a virtual space in which a controller is mounted, and receives a machine command from the server to which the controller adds cycle information.
  • the machine side timing adjustment unit that stores the machine command received by the terminal communication unit and calls the machine command in the control cycle corresponding to the cycle information added to the machine command, and the machine called by the machine side timing adjustment unit. Based on the command, the main body is equipped with a machine control unit that realizes motion.
  • the system includes a first device that repeats the first process, a second device that communicates with the first device and repeats the second process, and the first device is subjected to the first process. It has a first processing module that generates the first information, a first addition unit that adds the first cycle information to the first information, and a first communication unit that transmits the first information to the second device.
  • the two devices store the second communication unit that receives the first information from the first device and the first information received by the second communication unit, and the cycle corresponding to the first cycle information added to the first information. It has a timing adjusting unit that calls the first information in the second processing of the above, and a second processing module that executes the second processing based on the first information called by the timing adjusting unit.
  • the device is the first processing module that repeats the generation of the first information by the first processing, and the second device that repeats the second processing.
  • a first addition unit that adds the first cycle information that specifies whether to call the information to the first information, and a communication unit that transmits the first information to which the first cycle information is added by the first addition unit to the second device. And prepare.
  • the device includes a communication unit and a communication unit, which are generated by the first device that repeats the first process and receive the first information to which cycle information is added from the first device.
  • the timing adjustment unit that stores the first information received by the user and calls the first information in the second processing of the cycle corresponding to the cycle information added to the first information, and the first information called by the timing adjustment unit.
  • a processing module that executes a second process based on the above is provided.
  • the system according to the present embodiment includes a plurality of devices in which each performs repetitive processing while communicating with each other. Communication between devices may require synchronism with respect to the processing cycle of each device.
  • communication synchronized with the processing cycle of each device is referred to as "synchronous communication".
  • the system includes a first device that repeats the first process, and a second device that communicates with the first device and repeats the second process.
  • the 1 device includes a first processing module that generates the first information by the first processing, a first addition unit that adds the first cycle information to the first information, and a first communication that transmits the first information to the second device.
  • the second device stores the second communication unit that receives the first information from the first device and the first information received by the second communication unit, and is added to the first information.
  • a timing adjustment unit that calls the first information in the second processing of the cycle corresponding to the first cycle information, and a second processing module that executes the second processing based on the first information called by the timing adjustment unit. Have.
  • the first information transmitted from the first device is buffered by the second device and is called in the second process of the cycle corresponding to the first cycle information.
  • the transmission of the first information from the first device side is advanced, and the usage timing of the first information is started from the reception timing of the first information in the second device. It is possible to have a margin in the period until. With this margin, it is possible to absorb the fluctuation of the reception timing that has expanded due to the communication status or the like, and to call the buffered first information at an appropriate use timing. Therefore, the reliability of synchronous communication can be improved.
  • the second processing module further generates the second information by the second processing, the second device further has a second addition part that adds the second cycle information to the second information, and the second communication part is the second.
  • Information is transmitted to the first device, the first communication unit receives the second information from the second device, and the first device stores the second information received by the first communication unit and stores the second information in the second information.
  • the first processing module further has a first timing adjusting unit that calls the second information in the first processing of the cycle corresponding to the added second cycle information, and the first processing module has the second information called by the first timing adjusting unit.
  • the first process may be executed based on. In this case, the reliability of bidirectional synchronous communication between the first device and the second device can be improved.
  • the first device and the second device may be devices mounted on the real space or may be devices mounted on the virtual space.
  • the real space is the space in which a real object exists.
  • the virtual space is a space represented by data so as to simulate the real space.
  • Implementing a device in a virtual space means adding a program that simulates the function of the device in the virtual space to the devices constituting the virtual space.
  • first device and the second device include a controller, a machine, a sensor, a motor, a servo driver, etc. mounted in a real space.
  • the first device and the second device may be a controller, a machine, a sensor, a motor, a servo driver, or the like mounted on a virtual space.
  • Communication between the first device and the second device may include wireless communication at least in part.
  • the communication between the first device and the second device includes wireless communication, the effect of absorbing the above-mentioned fluctuation of the reception timing is more effective.
  • the first device is a controller mounted on a virtual space
  • the second device is a machine mounted on a real space
  • communication between the controller and the machine is performed.
  • a machine control system including a part of wireless communication is specifically exemplified.
  • the machine control system 1 shown in FIG. 1 is a system that controls a plurality of machines 4 based on calculation results transmitted from at least one controller server 2 via a wireless communication network.
  • the machine control system 1 there is a production system that produces a work by a coordinated motion of a plurality of machines 4.
  • the machine control system 1 includes at least one controller server 2, a communication server 3, and a plurality of machines 4.
  • the controller server 2 executes a predetermined operation in the control cycle.
  • the controller server 2 has a plurality of controllers 100 (see FIG. 3).
  • the plurality of controllers 100 are mounted on the virtual space in the controller server 2 and control each of the plurality of machines 4.
  • One controller 100 corresponds to at least one machine 4.
  • One controller 100 may correspond to a plurality of machines 4, and a plurality of controllers 100 may correspond to one machine 4.
  • Implementing on a virtual space means adding a function as a controller 100 to an arithmetic unit such as a controller server 2 by software.
  • the function as the controller 100 includes acquisition of information from the machine 4, generation of a machine command based on the acquired information, and output of the generated machine command to the machine 4.
  • the plurality of controllers 100 may be distributed to the plurality of controller servers 2. As a result, the calculation load of one controller server 2 is reduced.
  • the communication server 3 communicates with the controller server 2 via the wired communication network 8, communicates with the plurality of machines 4 via the wireless communication network 7, and relays information between the controller server 2 and the plurality of machines 4. .
  • Specific examples of the wired communication network 8 include a local area network such as Ethernet (registered trademark).
  • Specific examples of the wireless communication network 7 include a high-speed wireless communication network such as a 5th generation mobile communication system (5G).
  • the communication server 3 may be provided at a location away from the controller server 2, may be provided at a location close to the controller server 2, or may be provided in the same housing as the controller server 2.
  • the communication server 3 has a communication controller 200 and a wireless communication base station 201.
  • the communication controller 200 communicates with the controller server 2 via the wired communication network 8 and communicates with the plurality of machines 4 via the wireless communication base station 201.
  • the wireless communication base station 201 communicates with the wireless communication terminals 301 (described later) of the plurality of machines 4 via the wireless communication network 7.
  • the plurality of machines 4 are configured in the real space, and each realizes a motion according to the calculation result of the controller server 2. For example, each of the plurality of machines 4 realizes a motion in response to the above machine command.
  • Realizing motion means displacing at least one object in real space. Displacement includes movement and posture change. Further, the displacement includes a displacement in a space that cannot be visually recognized from the outside, such as inside a housing.
  • Each of the plurality of machines 4 has a machine main body 10, a local controller 300, and a wireless communication terminal 301.
  • the machine body 10 is a device that realizes motion.
  • the machine body 10 may be any device as long as it is a device that realizes motion based on the calculation result of the controller server 2.
  • a mobile robot 20 is a robot that can travel independently, and has an automatic guided vehicle 21 and a robot 22.
  • the automatic guided vehicle 21 autonomously travels in response to a movement command included in the machine command.
  • Specific examples of the automatic guided vehicle 21 include an electric so-called AGV (Automated Guided Vehicle).
  • the robot 22 executes work on the work according to the work command included in the machine command.
  • the robot 22 is a 6-axis vertical articulated robot, and as shown in FIG. 2, the base 31, the swivel portion 32, the first arm 33, the second arm 34, the third arm 35, and the tip end thereof. It has a unit 36 and actuators 41, 42, 43, 44, 45, 46.
  • the base 31 is fixed on the automatic guided vehicle 21.
  • the swivel portion 32 is provided on the base portion 31 so as to swivel around the vertical axis 51.
  • the first arm 33 is connected to the swivel portion 32 so as to swing around the axis 52 intersecting (for example, orthogonal to) the axis 51.
  • the intersection also includes a case where there is a twisting relationship such as a so-called grade separation.
  • the second arm 34 is connected to the tip of the first arm 33 so as to swing around an axis 53 substantially parallel to the axis 52.
  • the third arm 35 is connected to the tip of the second arm 34 so as to swivel around the axis 54 along the second arm 34 and swing around the axis 55 intersecting (for example, orthogonal to) the axis 54.
  • the tip portion 36 is connected to the tip portion of the third arm 35 so as to swivel around the axis 56 that intersects (for example, is orthogonal to) the axis 55.
  • the tip 36 is provided with various tools such as a suction nozzle, a robot hand, or a processing tool, depending on the application.
  • Actuators 41, 42, 43, 44, 45, 46 include, for example, an electric motor and a speed reducer, and drive the robot 22.
  • the actuator 41 swings the swivel portion 32 around the axis 51
  • the actuator 42 swings the first arm 33 around the axis 52
  • the actuator 43 swings the second arm 34 around the axis 53
  • the actuator 44 swings.
  • the third arm 35 is swiveled around the axis 54
  • the actuator 45 swings the third arm 35 around the axis 55
  • the actuator 46 swivels the tip 36 around the axis 56.
  • the robot 22 may be a 7-axis redundant robot in which a 1-axis joint is further added to the 6-axis vertical articulated robot, or may be a so-called scalar type articulated robot. Further, the robot 22 may be a so-called parallel link type robot.
  • the stationary robot 30 is stationary on the floor surface of the work area or the like.
  • the stationary robot 30 include a vertical articulated robot, a scalar type articulated robot, a parallel link type robot, and the like, as in the robot 22.
  • the NC machine tool 60 performs machining such as cutting on a work according to a machining command included in the machine command.
  • the environment sensor 70 acquires system environmental information in response to a sensing command included in the machine command.
  • Specific examples of the environment sensor 70 include a camera that acquires an environmental image of the system, a temperature sensor that acquires the environmental temperature of the system, and the like.
  • the conveyor 80 conveys the work in accordance with the transfer command included in the machine command. Specific examples of the conveyor 80 include a belt conveyor, a roller conveyor, and the like.
  • the local controller 300 communicates with the communication server 3 via the wireless communication terminal 301, and causes the machine body 10 to realize motion in response to a machine command acquired from the communication server 3 via the wireless communication terminal 301. Further, the local controller 300 feeds back the response information acquired from the machine body 10 to the communication server 3 via the wireless communication terminal 301.
  • the wireless communication terminal 301 communicates with the wireless communication base station 201 via the wireless communication network 7 in accordance with a command from the local controller 300.
  • the machine control system 1 sends a machine command transmitted from the controller side (controller 100 side of the wireless communication network 7) via the wireless communication network 7 to the machine side (machine of the wireless communication network 7) until its use timing. It may be configured to buffer on the 4 side). In this case, the transmission of the machine command from the controller side can be advanced, and a margin can be provided in the period from the reception timing of the machine command on the machine side to the use timing of the machine command. With this margin, it is possible to absorb the fluctuation of the reception timing expanded due to the wireless communication and use the buffered machine command at the timing synchronized with the control cycle.
  • the machine control system 1 may be configured so that the response information transmitted from the machine side via the wireless communication network 7 is buffered on the controller side until its use timing. In this case, it is possible to advance the transmission of the response information from the machine side and allow a margin from the reception timing of the response information on the controller side to the use timing of the response information. With this margin, it is possible to absorb the fluctuation of the reception timing expanded due to the wireless communication and use the buffered response information at the timing synchronized with the control cycle.
  • the response information can be acquired and the motion program based on the response information can be obtained. It is possible to repeat the generation of the machine command by execution and the control of the machine 4 in response to the machine command in the control cycle.
  • controller 100 the configuration of the controller 100, the communication controller 200, and the local controller 300 will be illustrated in more detail.
  • the controller 100 receives the response information transmitted by the corresponding machine 4 (hereinafter referred to as “jurisdiction machine 4”) from the communication server 3 via the wired communication network 8, and motions based on the received response information. It is configured to execute a program, generate a machine command for the jurisdiction machine 4, and send the machine command to the communication server 3 via the wired communication network 8.
  • jurisdiction machine 4 the response information transmitted by the corresponding machine 4
  • It is configured to execute a program, generate a machine command for the jurisdiction machine 4, and send the machine command to the communication server 3 via the wired communication network 8.
  • the controller 100 has a program storage unit 111, a reception information storage unit 112, a motion module 113, and a synchronous communication unit 114 as a functional configuration (hereinafter referred to as “functional block”). And an asynchronous communication unit 115.
  • the program storage unit 111 stores the motion program.
  • the motion program contains multiple motion commands in chronological order.
  • the motion command is, for example, a displacement command to a target position / posture.
  • the operation command may include the designation of the arrival time at the target position / posture, or may include the designation of the displacement speed to the target position / posture.
  • the motion command may be a displacement command at the target speed. In this case, the motion command may include specifying the displacement period at the target velocity.
  • the reception information storage unit 112 stores the reception information from the communication controller 200 of the communication server 3.
  • the received information includes the above response information.
  • the motion module 113 executes a motion program in the control cycle and generates a machine command for the jurisdiction machine 4. For example, the motion module 113 executes a motion program and repeatedly executes a machine command for the jurisdiction machine 4 in a control cycle. Executing the motion program includes calculating the machine command so that the motion of the jurisdiction machine 4 follows the motion command.
  • the motion module 113 may execute a motion program based on the response information stored in the received information storage unit 112. For example, the motion module 113 calculates the motion record of the jurisdiction machine 4 based on the response information stored in the received information storage unit 112, and calculates the machine command so that the motion record follows the motion command.
  • Specific examples of the machine command include a speed command or a driving force command (including a torque command).
  • the synchronous communication unit 114 transmits a machine command to the communication controller 200 via the wired communication network 8.
  • "Synchronous communication” means constant cycle communication synchronized with the control cycle. Synchronous communication includes communication executed every control cycle and communication executed every predetermined number of control cycles. As will be described later, the machine command transmitted by the synchronous communication unit 114 is buffered in the local controller 300 of the jurisdiction machine 4 (hereinafter, referred to as “jurisdiction local controller 300”), and is called at the timing synchronized with the control cycle. Therefore, the transmission of the machine command by the synchronous communication unit 114 itself does not have to be synchronized with the control cycle.
  • the asynchronous communication unit 115 transmits asynchronous communication data for another node to another node via the wired communication network 8 without going through the communication controller 200.
  • Asynchronous communication means communication that does not require synchronization with the control cycle, but may be synchronized with the control cycle.
  • the other node may be another controller 100, or may be a node different from the plurality of controllers 100.
  • a specific example of another node is an application server 6 (see FIG. 1).
  • the application server 6 is a computer connected to the controller server 2 via the wired communication network 8.
  • the application server 6 may be incorporated in the controller server 2 or may be incorporated in the communication server 3.
  • the application server 6 has a data collection application that collects and stores control information such as machine commands and response information from a plurality of controllers 100.
  • the application server 6 may further have a simulator application that simulates the motion of a plurality of machines 4 on a virtual space based on the control information accumulated by the data collection application.
  • the application server 6 may further have a learning application that generates a trained model by machine learning based on the control information accumulated by the data collection application. Specific examples of the trained model include a diagnostic model that outputs the normality of the machine 4 in response to input of control information.
  • the application server 6 may further have an analysis application that generates output information such as the normality based on the control information and the trained model and transmits the output information to the controller 100.
  • the asynchronous communication unit 115 may acquire the execution results of the simulator application, the learning application, the analysis application, and the like from the application server 6 via the wired communication network 8 without going through the communication controller 200.
  • the controller 100 may be configured to buffer the response information up to the timing of its use.
  • the controller 100 further includes a controller-side timing adjusting unit 116.
  • the controller-side timing adjustment unit 116 stores the response information received from the jurisdiction machine 4, and calls the response information in the control cycle corresponding to the second cycle information added to the response information.
  • the second cycle information is information indicating the use timing of the response information (for example, the number of control cycles when the response information is used, hereinafter referred to as "the number of cycles during use").
  • the second cycle information may be the number of cycles at the time of use itself, or may be the number of control cycles of the jurisdiction local controller 300 at the timing when the response information is acquired (hereinafter, referred to as “the number of cycles at the time of acquisition”). good.
  • the controller-side timing adjustment unit 116 calls the response information in the control cycle in which the number of control cycles is the number of cycles in use. Calling the response information in the control cycle in which the number of control cycles is the number of cycles in use means calling the response information at a timing that can be used in the control cycle. Therefore, calling the response information prior to the control cycle, as used in the control cycle, is also included in calling the response information in the control cycle.
  • the controller side timing adjustment unit 116 calculates the use cycle number based on the second cycle information (for example, by adding a predetermined number), and the control cycle number is set. The response information is called in the control cycle that is the number of cycles in use.
  • the controller-side timing adjustment unit 116 outputs the called response information to the synchronous communication unit 114, and the synchronous communication unit 114 stores the response information in the reception information storage unit 112.
  • the motion module 113 of the controller 100 executes the motion program based on the response information called by the timing adjustment unit 116 on the controller side.
  • the controller 100 may be configured to further execute the generation of the control cycle and the transmission of the cycle timing of the control cycle to the controlling machine 4.
  • the cycle timing is used to generate a control cycle synchronized with the control cycle in the controlling machine 4.
  • the controller 100 may further include a controller-side time generation unit 121, a controller-side cycle generation unit 122, a timing transmission unit 123, and a cycle counter 124.
  • the controller-side time generation unit 121 generates the controller-side time in synchronization with the time generated by the time server 5 (hereinafter referred to as "global time").
  • the time server 5 is a computer connected to the controller server 2 via the wired communication network 8 and outputs the global time.
  • the time server 5 may be incorporated in the controller server 2 or may be incorporated in the communication server 3.
  • the time generation unit 121 on the controller side acquires the global time received from the time server 5 by the synchronization communication unit 114 by communication that guarantees time synchronization such as TSN (Time Sensitive Networking) communication via the wired communication network 8.
  • TSN Time Sensitive Networking
  • the controller-side time generation unit 121 sets the time counted by the timer 195 (described later) to the global time.
  • the controller side cycle generation unit 122 generates a control cycle based on the controller side time. For example, the controller-side cycle generation unit 122 sets the start timing of the control cycle based on the controller time, and repeatedly generates cycle pulses in the control cycle from the time when the controller-side time reaches the start timing.
  • the timing transmission unit 123 transmits the cycle timing of the control cycle to the jurisdiction local controller 300 via the communication controller 200.
  • the cycle timing is information indicating the phase of the control cycle at the control side time.
  • the cycle timing is the cycle pulse generation timing by the controller-side cycle generation unit 122.
  • the timing transmission unit 123 may transmit the start timing to the jurisdiction local controller 300 as the cycle timing prior to the controller-side cycle generation unit 122 starting the generation of the control cycle, or the controller-side cycle generation unit 122. After starting the generation of the control cycle, the generation timing of the second and subsequent cycle pulses may be transmitted to the jurisdiction local controller 300 as the cycle timing.
  • the timing transmission unit 123 may transmit the cycle timing to another controller 100 as the master timing.
  • the controller-side cycle generation unit 122 of the other controller 100 may acquire the master timing via the wired communication network 8 and generate a control cycle based on the acquired master timing and the controller-side time. ..
  • the controller-side cycle generation unit 122 may set the start timing based on the acquired master timing.
  • the timing transmission unit 123 When the machine-side timing adjustment unit 315 (described later) of the jurisdiction local controller 300 fails to generate the control cycle, the timing transmission unit 123 retransmits the cycle timing after the previously transmitted cycle timing to the jurisdiction local controller 300. You may. For example, the timing transmission unit 123 waits for the reception of the set completion notification from the jurisdiction local controller 300, and when the controller side time reaches the cycle timing without receiving the set completion notification, the machine side timing adjustment unit 315 controls the cycle. Is determined to have failed to generate.
  • the set completion notification is a notification that the start timing set in the jurisdiction local controller 300 has been completed.
  • the cycle counter 124 counts the number of control cycles (for example, the number of cycle pulses) generated by the controller-side cycle generation unit 122.
  • the motion module 113 executes a motion program based on the number of control cycles counted by the cycle counter 124. For example, the motion module 113 changes the execution target from the currently executing motion command to the next motion command each time the number of control cycles is counted up.
  • the controller 100 may be configured to generate a communication cycle synchronized with the control cycle.
  • the controller 100 may further include a communication cycle generation unit 131 and a cycle counter 132.
  • the communication cycle generation unit 131 generates a communication cycle synchronized with the control cycle. For example, the communication cycle generation unit 131 generates a communication cycle based on the controller side time and the cycle timing of the control cycle. For example, the communication cycle generation unit 131 sets a start timing synchronized with the start timing of the control cycle based on the cycle timing, and repeatedly generates a cycle pulse in the communication cycle from the time when the controller side time reaches the start timing. ..
  • the start timing synchronized with the start timing of the control cycle includes a start timing deviated from the start timing of the control cycle by a predetermined period (for example, half the cycle length of the control cycle).
  • the cycle length of the communication cycle is an integral multiple (including 1 times) of the cycle length of the control cycle.
  • the cycle length of the communication cycle may be an integral fraction of the cycle length of the control cycle.
  • the cycle counter 132 counts the number of communication cycles (for example, the number of cycle pulses) generated by the communication cycle generation unit 131. Since the communication cycle is generated in synchronization with the control cycle, it is possible to detect the number of control cycles based on the number of communication cycles. Therefore, the controller-side timing adjustment unit 116 may call the response information in the control cycle in which the number of control cycles is the number of cycles in use, based on the number of communication cycles.
  • the controller 100 may be configured to add information indicating the timing of use to the machine command.
  • the controller 100 may further include an additional portion 125.
  • the addition unit 125 adds the first cycle information to the machine command.
  • the first cycle information is information that specifies in which machine-side control cycle the machine command is called in the jurisdiction machine 4.
  • the jurisdiction local controller 300 that has received the machine command to which the first cycle information is added has the above-mentioned usage timing (for example, the number of control cycles when the machine command is used.
  • usage cycle based on the first cycle information. Detects the number) and buffers the machine command until the usage timing.
  • the addition unit 125 calculates the number of cycles in use based on the current number of control cycles, and adds the number of cycles in use itself to the machine command as the first cycle information.
  • the addition unit 125 calculates the number of cycles in use by adding a predetermined number to the current number of cycles.
  • the addition unit 125 may add the current number of control cycles to the machine command as the first cycle information.
  • the jurisdiction machine 4 calculates the number of cycles in use (for example, by adding a predetermined number) based on the first cycle information.
  • the controller 100 may be configured to detect the transmission delay of the machine command based on the first cycle information included in the machine command. Further, the controller 100 may be configured to detect the reception delay of the response information based on the second cycle information included in the response information. For example, the controller 100 may further include a cycle check unit 133.
  • the cycle check unit 133 detects the transmission delay of the machine command based on the first cycle information included in the machine command.
  • the delay in transmitting the machine command means a delay in time for the local controller 300 to call the machine command.
  • the cycle check unit 133 detects a machine command transmission delay when the synchronous communication unit 114 transmits a machine command and the current number of control cycles is equal to or greater than the number of cycles in use of the machine command. do.
  • the cycle check unit 133 may detect the reception delay of the response information based on the second cycle information included in the response information.
  • the reception delay of the response information means a delay of a level that is not in time for the call of the response information by the timing adjustment unit 116 on the controller side. For example, after receiving the response information from the jurisdiction machine 4, the cycle check unit 133 detects the delay in receiving the response information when the current number of control cycles is equal to or greater than the number of cycles in use of the response information.
  • the communication cycle is generated in synchronization with the control cycle, it is possible to detect the number of control cycles based on the number of communication cycles. Therefore, even if the cycle check unit 133 detects the transmission delay of the machine command based on the first cycle information and the number of communication cycles, and detects the reception delay of the response information based on the second cycle information and the number of communication cycles. good.
  • the cycle check unit 133 may cancel the transmission of the machine command when the transmission delay of the machine command is detected. For example, when the controller side timing adjustment unit 116 detects the transmission delay of the machine command, the machine command is discarded prior to the transmission of the machine command to the communication controller 200. When the cycle check unit 133 detects a delay in receiving the response information, the cycle check unit 133 may discard the response information.
  • the synchronous communication unit 114 may transmit synchronous communication data to the controller-side timing adjustment unit 116 of the other controllers 100 in the plurality of controllers 100 via the wired communication network 8.
  • the jurisdiction machine 4 used to coordinate the motion of the jurisdiction machine 4 with the motion of the machine 4 (hereinafter referred to as “another machine 4”) supported by the other controller 100.
  • Status information (for example, machine command to the jurisdiction machine 4 or response information from the jurisdiction machine 4) can be mentioned.
  • the additional unit 125 may add the first cycle information to the synchronous communication data.
  • the controller-side timing adjustment unit 116 of the other controller 100 that has received the synchronous communication data to which the first cycle information is added uses the timing of using the synchronous communication data (for example, the synchronous communication data) based on the first cycle information.
  • the number of control cycles at the time of use is detected, and the synchronous communication data is buffered until the use timing.
  • the addition unit 125 calculates the number of cycles in use based on the current number of control cycles, and adds the number of cycles in use itself to the synchronous communication data as the first cycle information.
  • the addition unit 125 calculates the number of cycles in use by adding a predetermined number to the current number of cycles.
  • the addition unit 125 may add the current number of control cycles (hereinafter, referred to as “the number of cycles at the time of addition”) to the synchronous communication data as the first cycle information.
  • the controller-side timing adjustment unit 116 of the other controller 100 stores the synchronous communication data and calls the synchronous communication data in the control cycle corresponding to the first cycle information added to the synchronous communication data.
  • the controller-side timing adjustment unit 213 calls the synchronous communication data in the control cycle in which the number of control cycles is the number of cycles in use.
  • the timing adjustment unit 213 on the controller side calculates the number of cycles at the time of use based on the information of the first cycle (for example, by adding a predetermined number), and the number of control cycles is the number of control cycles.
  • the synchronous communication data is called in the control cycle which is the number of cycles in use.
  • the controller side timing adjustment unit 116 outputs the called synchronous communication data to the synchronous communication unit 114, and the synchronous communication unit 114 stores the synchronous communication data in the reception information storage unit 112.
  • the motion module 113 of the other controller 100 executes the motion program based on the response information called by the controller-side timing adjustment unit 116.
  • the synchronous communication data is buffered in the controller side timing adjustment unit 116 of the other controller 100, and is called at the timing synchronized with the control cycle. Therefore, the transmission of the synchronous communication data by the synchronous communication unit 114 itself does not have to be synchronized with the control cycle.
  • the cycle check unit 133 delays the transmission of the synchronous communication data based on the first cycle information included in the synchronous communication data. May be detected.
  • the transmission delay of the synchronous communication data means a delay of a level that is not in time for the call of the synchronous communication data by the controller side timing adjustment unit 116 of the other controller 100.
  • the cycle check unit 133 when the synchronous communication unit 114 transmits synchronous communication data, the number of control cycles corresponding to the current number of communication cycles is equal to or greater than the number of cycles in use of the synchronous communication data. Detects the transmission delay of synchronous communication data.
  • the cycle check unit 133 may cancel the transmission of the synchronous communication data.
  • the cycle check unit 133 of the other controller 100 may detect the reception delay of the synchronous communication data based on the first cycle information included in the synchronous communication data.
  • the reception delay of the synchronous communication data means a delay of a level that is not in time for the call of the synchronous communication data by the timing adjustment unit 116 on the controller side. For example, when the cycle check unit 133 receives the synchronous communication data addressed to the controller side timing adjustment unit 116, the synchronous communication is performed when the current number of control cycles is equal to or greater than the number of cycles in use of the synchronous communication data. Detects data reception delay. When the cycle check unit 133 detects the reception delay of the synchronous communication data, the synchronous communication data may be discarded.
  • the controller 100 may be configured to switch the transmission destination of the data based on whether the data transmitted by the synchronous communication unit 114 is addressed to the jurisdiction machine 4 or another controller 100.
  • the controller 100 has a switch 134.
  • the switch 134 transmits the data to the jurisdiction local controller 300 via the communication server 3 if the data transmitted by the synchronous communication unit 114 is destined for the jurisdiction machine 4, and if the data is destined for another controller 100, the switch 134 transmits the data to the jurisdiction local controller 300.
  • the data is transmitted to the controller-side timing adjustment unit 116 of another controller 100 via the wired communication network 8.
  • the local controller 300 is configured to receive a machine command via the communication server 3 and to make the machine body 10 realize a motion based on the machine command.
  • the local controller 300 has a terminal communication unit 314, a machine side timing adjustment unit 315, a command storage unit 311, a machine control unit 313, and a response information storage unit 312 as functional blocks. Have.
  • the terminal communication unit 314 receives a machine command from the communication server 3 via the wireless communication network 7.
  • the command storage unit 311 stores the machine command received by the terminal communication unit 314.
  • the machine control unit 313 realizes a motion in the machine main body 10 based on the machine command stored in the command storage unit 311, acquires the response information based on the motion realized by the machine main body 10, and stores it in the response information storage unit 312. do.
  • the machine control unit 313 causes the operation of the machine body 10 to follow the machine command.
  • the machine control unit 313 drives the machine body 10 so as to reduce the deviation between the machine command stored in the command storage unit 311 and the past response information stored in the response information storage unit 312, and the machine corresponding to this.
  • the response information of the main body 10 is acquired and stored in the response information storage unit 312 repeatedly in the machine-side control cycle.
  • the machine-side control cycle is a cycle having the same cycle length as the control cycle.
  • the machine control unit 313 drives the machine body 10 so that the operation speed indicated by the response information stored in the response information storage unit 312 follows the speed command.
  • the machine command is a driving force command
  • the machine control unit 313 drives the machine body 10 so that the driving force indicated by the response information stored in the response information storage unit 312 follows the driving force command.
  • the machine control unit 313 may control the machine body 10 with a machine cycle having a cycle length shorter than that of the machine side control cycle.
  • the machine control unit 313 drives the machine body 10 so as to reduce the deviation between the machine command and the past response information stored in the response information storage unit 312, and the machine body 10 corresponding to this is driven.
  • the response information is acquired and stored in the response information storage unit 312.
  • the cycle length of the machine cycle is, for example, an integral fraction of the cycle length of the control cycle on the machine side.
  • the machine control unit 313 has an intermediate controller 331 and a servo 332.
  • the intermediate controller 331 has a drive data (for example, a position command, a speed command, or a drive force) for each actuator of the machine body 10 so as to reduce the deviation between the machine command and the past response information stored in the response information storage unit 312. Command) is generated in the machine cycle.
  • the servo 332 outputs drive power to each actuator of the machine body 10 based on the drive data.
  • the servo 332 may output the drive power based on the drive data in a servo cycle having a cycle length shorter than that of the machine cycle.
  • the machine control unit 313 may have at least one of the intermediate controller 331 and the servo 332.
  • the machine control unit 313 When the machine control unit 313 does not have the servo 332, the machine control unit 313 outputs the drive data to the machine body 10, and the machine body 10 generates drive power for each actuator based on the drive data.
  • the controller 100 When the machine control unit 313 does not have the intermediate controller 331, the controller 100 generates the drive data as a machine command and transmits it to the jurisdiction machine 4.
  • the intermediate controller 331 acquires a machine command including a target position, a target posture, a target speed, etc. of the tip portion 36, and performs an actuator by inverse kinematics calculation.
  • Drive data including 41, 42, 43, 44, 45, 46 position commands and speed commands may be generated.
  • the intermediate controller 331 acquires a machine command including the target position and target speed of the actuators 41, 42, 43, 44, 45, 46, and the intermediate controller obtains a driving force command of the actuators 41, 42, 43, 44, 45, 46.
  • Drive data including may be generated. Further, the intermediate controller 331 may generate drive data based on a plurality of machine commands arranged in a time series.
  • the terminal communication unit 314 transmits the response information stored in the response information storage unit 312 to the communication server 3 via the wireless communication network 7 for each machine-side control cycle.
  • the local controller 300 may be configured to buffer machine commands up to the timing of their use.
  • the local controller 300 further includes a machine-side timing adjusting unit 315.
  • the machine-side timing adjustment unit 315 stores the machine command received by the terminal communication unit 314, and calls the machine command in the machine-side control cycle corresponding to the first cycle information added to the machine command.
  • the machine-side timing adjustment unit 315 calls the machine command in the machine-side control cycle in which the number of control cycles is the number of cycles in use.
  • Calling the machine command in the machine-side control cycle in which the number of control cycles is the number of cycles in use means calling the machine command at a timing that can be used in the machine-side control cycle. Therefore, calling the machine command prior to the machine-side control cycle as used in the machine-side control cycle is also included in calling the machine command in the machine-side control cycle.
  • the machine-side timing adjustment unit 315 calculates the number of cycles in use (for example, by adding a predetermined number) based on the first cycle information, and the number of control cycles is The machine command is called in the control cycle on the machine side, which is the number of cycles in use.
  • the machine side timing adjustment unit 315 stores the called machine command in the command storage unit 311. As a result, the control of the machine main body 10 by the machine control unit 313 is performed based on the machine command called by the machine side timing adjustment unit 315.
  • the local controller 300 may be configured to generate a machine-side control cycle synchronized with the control cycle in the corresponding controller 100.
  • the local controller 300 may further include a machine-side time generation unit 321, a machine-side cycle generation unit 322, and a cycle counter 323.
  • the machine side time generation unit 321 generates the machine side time in synchronization with the above global time. For example, the machine-side time generation unit 321 acquires the global time received from the communication server 3 by the terminal communication unit 314 by communication that guarantees time synchronization such as TSN communication via the wireless communication network 7, and sets the acquired global time. Synchronize to generate machine-side time.
  • the machine-side time generation unit 321 may acquire the global time from the time server 5 or the corresponding controller 100 via the wired communication network 8. For example, the machine-side time generation unit 321 sets the time counted by the timer 395 (described later) to the global time.
  • the machine-side cycle generation unit 322 acquired the cycle timing received from the communication server 3 by the terminal communication unit 314 via the wireless communication network 7, and synchronized with the control cycle in the corresponding controller 100 based on the acquired cycle timing. Generate a machine-side control cycle. For example, the machine-side cycle generation unit 322 generates a machine-side control cycle based on the machine-side time and the cycle timing. For example, the machine-side cycle generation unit 322 sets a start timing synchronized with the start timing of the control cycle in the corresponding controller 100 based on the cycle timing, and from the time when the machine-side time reaches the start timing, the machine-side control Cycle pulses are repeatedly generated in a cycle.
  • the machine-side cycle generation unit 322 may send a set completion notification to the controller 100 when the start timing set is completed.
  • the cycle length of the machine-side control cycle generated by the machine-side cycle generation unit 322 is the same as the cycle length of the control cycle in the controller 100.
  • the cycle counter 323 counts the number of control cycles (for example, the number of cycle pulses) generated by the machine-side cycle generation unit 322.
  • the local controller 300 may be configured to add information indicating the timing of use to the response information transmitted by the terminal communication unit 314 to the communication server 3.
  • the local controller 300 may further have an additional unit 324.
  • the addition unit 324 adds the second cycle information to the response information.
  • the response information transmitted by the terminal communication unit 314 is buffered by the controller side timing adjustment unit 116 of the corresponding controller 100, and is called at the timing synchronized with the control cycle. Therefore, the transmission itself of the response information by the terminal communication unit 314 does not have to be synchronized with the control cycle.
  • the local controller 300 may be configured to generate a machine cycle synchronized with the machine side control cycle.
  • the local controller 300 further includes a local cycle generation unit 325 and a cycle counter 326.
  • the local cycle generation unit 325 generates a machine cycle based on the machine side time and the cycle timing. For example, the local cycle generation unit 325 sets a start timing synchronized with the start timing of the control cycle in the corresponding controller 100 based on the cycle timing, and cycles in the machine cycle from the time when the machine side time reaches the start timing. Generate pulses repeatedly.
  • the cycle counter 326 counts the number of machine cycles (for example, the number of cycle pulses) generated by the local cycle generation unit 325.
  • the controller side timing adjustment unit 116, the communication cycle generation unit 131, the cycle counter 132, the cycle check unit 133, and the switch 134 are provided at least between the controller 100 and the communication controller 200 (including in the controller 100 and the communication controller 200). It does not have to be provided in the controller 100 as long as it is provided.
  • a configuration in which a controller-side timing adjustment unit, a communication cycle generation unit, a cycle counter, a cycle check unit, and a switch are provided in the communication controller 200 will be illustrated. In this case, as shown in FIG.
  • the controller 100 does not have to have the controller side timing adjustment unit 116, the communication cycle generation unit 131, the cycle counter 132, the cycle check unit 133, and the switch 134.
  • the communication controller 200 has a controller-side communication unit 211, a machine-side communication unit 212, and a controller-side timing adjustment unit 213 as functional blocks.
  • the controller-side communication unit 211 receives machine commands or synchronous communication data from each of the plurality of controllers 100 via the wired communication network 8, and responds to each of the controllers 100 via the wired communication network 8 or synchronizes. Send communication data.
  • the machine-side communication unit 212 transmits a machine command to each of the plurality of local controllers 300 via the wireless communication network 7, and receives response information from each of the plurality of local controllers 300 via the wireless communication network 7. get.
  • the controller side timing adjustment unit 213 stores the response information acquired by the machine side communication unit 212, and calls the response information in the control cycle corresponding to the second cycle information added to the response information.
  • the controller-side timing adjustment unit 213 calls the response information in the control cycle in which the number of control cycles is the number of cycles in use. Calling the response information in the control cycle in which the number of control cycles is the number of cycles in use means calling the response information at a timing that can be used in the control cycle. Therefore, calling the response information prior to the control cycle, as used in the control cycle, is also included in calling the response information in the control cycle.
  • the controller side timing adjustment unit 213 calculates the use cycle number based on the second cycle information (for example, by adding a predetermined number), and the control cycle number is The response information is called in the control cycle that is the number of cycles in use.
  • the controller-side communication unit 211 transmits the response information called by the controller-side timing adjustment unit 213 to the corresponding controller 100 via the wired communication network 8.
  • the synchronous communication unit 114 of the corresponding controller 100 stores the received response information in the reception information storage unit 112.
  • the motion module 113 of the corresponding controller 100 executes the motion program based on the response information called by the controller side timing adjustment unit 213.
  • the communication controller 200 may be configured to generate a communication cycle synchronized with at least one of the control cycles of the plurality of controllers 100.
  • the communication controller 200 may further include a time generation unit 221, a communication cycle generation unit 222, and a cycle counter 223.
  • the time generation unit 221 generates the communication server time in synchronization with the above global time. For example, the time generation unit 221 acquires the global time received from the time server 5 by the communication unit 211 on the controller side by communication that guarantees time synchronization such as TSN communication via the wired communication network 8, and synchronizes with the acquired global time. And generate the communication server time. For example, the controller-side time generation unit 121 sets the time counted by the timer 296 (described later) to the global time. When the time server 5 is incorporated in the communication server 3, the time generation unit 221 sets the global time itself as the communication server time.
  • the communication cycle generation unit 222 generates a communication cycle synchronized with at least one of the control cycles of the plurality of controllers 100. For example, the communication cycle generation unit 222 generates a communication cycle based on the communication server time and the cycle timing transmitted by at least one of the plurality of controllers 100 to the jurisdiction local controller 300. For example, the communication cycle generation unit 222 sets a start timing synchronized with the start timing of the control cycle based on the cycle timing, and repeatedly generates a cycle pulse in the communication cycle from the time when the communication server time reaches the start timing. ..
  • the start timing synchronized with the start timing of the control cycle includes a start timing deviated from the start timing of the control cycle by a predetermined period (for example, half the cycle length of the control cycle).
  • the communication cycle generation unit 222 may send a set completion notification to the controller 100 when the start timing set is completed.
  • the cycle length of the communication cycle is an integral multiple (including 1 times) of the cycle length of the control cycle.
  • the cycle length of the communication cycle may be an integral fraction of the cycle length of the control cycle.
  • the cycle counter 223 counts the number of communication cycles generated by the communication cycle generation unit 222 (for example, the number of cycle pulses). Since the communication cycle is generated in synchronization with the control cycle, it is possible to detect the number of control cycles based on the number of communication cycles. Therefore, the controller-side timing adjustment unit 213 may call the response information in the control cycle in which the number of control cycles is the number of cycles in use, based on the number of communication cycles.
  • the communication controller 200 may be configured to generate the master timing.
  • the communication controller 200 may have a timing master 224.
  • the timing master 224 generates master timing based on the communication server time.
  • the timing master 224 transmits the generated master timing to at least one of the plurality of controllers 100 via the wired communication network 8.
  • the communication cycle generation unit 222 communicates based on the communication server time and the master timing. Generate a cycle. For example, the communication cycle generation unit 222 may set the start timing based on the master timing. The generation of the control cycle in at least one of the plurality of controllers 100 and the generation of the communication cycle in the communication controller 200 are performed based on the same master timing, so that the communication cycle is synchronized with the control cycle.
  • the communication controller 200 may be configured to detect the transmission delay of the machine command based on the first cycle information included in the machine command. Further, the communication controller 200 may be configured to detect the reception delay of the response information based on the second cycle information included in the response information. For example, the communication controller 200 may further have a cycle check unit 225.
  • the cycle check unit 225 detects the transmission delay of the machine command based on the first cycle information included in the machine command.
  • the delay in transmitting the machine command means a delay in time for the local controller 300 to call the machine command. For example, in the cycle check unit 225, the number of control cycles corresponding to the current number of communication cycles becomes equal to or greater than the number of cycles during use of the machine command before the machine-side communication unit 212 transmits the machine command to the local controller 300. If so, the delay in sending the machine command is detected.
  • the cycle check unit 225 may detect the reception delay of the response information based on the second cycle information included in the response information.
  • the reception delay of the response information means a delay of a level that is not in time for the call of the response information by the timing adjustment unit 213 on the controller side. For example, in the cycle check unit 225, after the machine-side communication unit 212 receives the response information from the machine 4, the number of control cycles corresponding to the current number of communication cycles is equal to or greater than the number of cycles in use of the response information. In some cases, the reception delay of the response information is detected.
  • the communication cycle is generated in synchronization with the control cycle, it is possible to detect the number of control cycles based on the number of communication cycles. Therefore, even if the cycle check unit 225 detects the transmission delay of the machine command based on the first cycle information and the number of communication cycles, and detects the reception delay of the response information based on the second cycle information and the number of communication cycles. good.
  • the machine command transmission unit 212 may cancel the transmission of the machine command. For example, when the cycle check unit 225 detects the transmission delay of the machine command, the cycle check unit 225 discards the machine command prior to the transmission of the machine command by the machine side communication unit 212. When the cycle check unit 225 detects a delay in receiving the response information, the cycle check unit 225 may discard the response information.
  • the communication controller 200 may be configured to switch the transmission destination of the data based on whether the data received from the controller 100 is addressed to the jurisdiction machine 4 or another controller 100.
  • the controller 100 may be configured to add the destination to the data transmitted to the communication controller 200.
  • the communication controller 200 has a switch 226.
  • the switch 226 causes the machine-side communication unit 212 to transmit the data to the jurisdiction local controller 300 via the wireless communication network 7. If the data is addressed to another controller 100, the controller-side communication unit 211 causes the other controller 100 to transmit the data via the wired communication network 8.
  • the controller-side timing adjustment unit 213 stores the synchronous communication data and the first cycle information added to the synchronous communication data.
  • the synchronous communication data is called in the control cycle corresponding to.
  • the controller-side timing adjustment unit 213 calls the synchronous communication data in the control cycle in which the number of control cycles is the number of cycles in use.
  • the timing adjustment unit 213 on the controller side calculates the number of cycles at the time of use based on the information of the first cycle (for example, by adding a predetermined number), and the number of control cycles is the number of control cycles.
  • the synchronous communication data is called in the control cycle which is the number of cycles in use.
  • the controller-side communication unit 211 transmits the synchronous communication data called by the controller-side timing adjustment unit 213 to the other controller 100, which is the destination thereof, via the wired communication network 8.
  • the synchronous communication unit 114 of the other controller 100 stores the received synchronous communication data in the reception information storage unit 112.
  • the motion module 113 of the other controller 100 executes the motion program based on the synchronous communication data called by the controller side timing adjustment unit 213.
  • the cycle check unit 225 uses the synchronous communication based on the first cycle information included in the synchronous communication data. Data reception delay may be detected.
  • the reception delay of the synchronous communication data means a delay of a level that is not in time for the call of the synchronous communication data by the timing adjustment unit 213 on the controller side.
  • the cycle check unit 225 after the controller side communication unit 211 receives the synchronous communication data from the controller 100, the number of control cycles corresponding to the current number of communication cycles becomes equal to or greater than the number of cycles in use of the synchronous communication data. If so, the reception delay of the synchronous communication data is detected.
  • the cycle check unit 225 may discard the synchronous communication data.
  • FIG. 8 is a block diagram illustrating the hardware configurations of the controller server 2, the communication controller 200, and the local controller 300.
  • the controller server 2 has a circuit 190.
  • the circuit 190 includes a processor 191, a memory 192, a storage 193, a wired communication port 194, and a timer 195.
  • the number of each component of the circuit 190 is not limited to one.
  • the storage 193 receives the response information transmitted by the jurisdiction machine 4 from the communication server 3 via the wired communication network 8, executes a motion program based on the received response information, and issues a machine command to the jurisdiction machine 4. It stores a program that causes the controller server 2 to execute the generation and the transmission of the machine command to the communication server 3 via the wired communication network 8.
  • the control method that the program causes the controller server 2 to execute may further include storing the received response information and calling the response information in the control cycle corresponding to the second cycle information added to the response information.
  • executing the motion program based on the received response information includes executing the motion program based on the response information called in the control cycle corresponding to the second cycle information.
  • the storage 193 stores a program for configuring each functional block of the controller 100 described above in the controller server 2.
  • Memory 192 temporarily stores programs and the like loaded from storage 193.
  • the processor 191 executes the program loaded in the memory 192 while temporarily storing the calculation result in the memory 192.
  • the wired communication port 194 communicates with the communication controller 200 via the wired communication network 8 in response to a command from the processor 191.
  • the timer 195 measures the elapsed time by counting the clock pulses.
  • the communication controller 200 has a circuit 290.
  • the circuit 290 includes a processor 291, a memory 292, a storage 293, a wired communication port 294, a wireless communication port 295, and a timer 296.
  • the storage 293 receives a machine command from each of the plurality of controllers 100 via the wired communication network 8 and transmits a machine command to each of the plurality of machines 4 via the wireless communication network 7. Includes receiving response information from each of the plurality of machines 4 via the wireless communication network 7 and transmitting response information to each of the plurality of controllers 100 via the wired communication network 8. It stores a program that causes the communication controller 200 to execute the communication method.
  • the communication method that the program causes the communication controller 200 to execute may further include storing the received response information and calling the response information in the control cycle corresponding to the second cycle information added to the response information.
  • transmitting the response information via the wired communication network 8 includes transmitting the response information called in the control cycle corresponding to the second cycle information.
  • the storage 293 stores a program for configuring each of the above-mentioned functional blocks in the communication controller 200.
  • Memory 292 temporarily stores programs and the like loaded from storage 293.
  • the processor 291 executes the program loaded in the memory 292 while temporarily storing the calculation result in the memory 292.
  • the wired communication port 294 communicates with the controller server 2 via the wired communication network 8 in response to a command from the processor 291.
  • the wireless communication port 295 communicates with the local controller 300 via the wireless communication base station 201 and the wireless communication terminal 301 in response to a command from the processor 291.
  • the timer 296 measures the elapsed time by counting the clock pulses.
  • the local controller 300 has a circuit 390.
  • the circuit 390 includes a processor 391, a memory 392, a storage 393, a wireless communication port 394, a timer 395, and a driver circuit 396.
  • the storage 393 stores a program that causes the local controller 300 to execute a control method including receiving a machine command via the communication server 3 and causing the machine body 10 to realize a motion based on the machine command. ing.
  • the control method that the program causes the local controller 300 to execute further includes storing the received machine command and calling the machine command in the machine-side control cycle corresponding to the first cycle information added to the machine command. You may.
  • to realize the motion in the machine main body 10 based on the machine command means to make the machine main body 10 realize the motion based on the machine command called in the machine side control cycle corresponding to the first cycle information.
  • the local controller 300 stores a program for configuring each of the above-mentioned functional blocks in the local controller 300.
  • the memory 392 temporarily stores programs and the like loaded from the storage 393.
  • the processor 391 executes the program loaded in the memory 392 while temporarily storing the calculation result in the memory 392.
  • the wireless communication port 394 communicates with the communication controller 200 via the wireless communication terminal 301 and the wireless communication base station 201 in response to a command from the processor 391.
  • the timer 395 measures the elapsed time by counting the clock pulse.
  • the driver circuit 396 supplies drive power to the machine body 10 in response to a command from the processor 391.
  • Machine control procedure a machine control procedure executed by the machine control system 1 will be illustrated.
  • This procedure includes a cycle generation procedure such as a control cycle and a communication cycle, and a machine control procedure in the generated cycle.
  • the cycle generation procedure includes the controller 100 generating a control cycle and the local controller 300 generating a machine-side control cycle synchronized with the control cycle.
  • FIG. 9 is a timing chart illustrating the outline of the cycle generation procedure, and the horizontal axis of each chart represents the elapsed time.
  • (I) indicates the information processing timing in the time server 5
  • (ii) indicates the information processing timing of the control cycle generation in the controller 100
  • (iii) indicates the information processing timing of the communication cycle generation in the controller 100
  • (Iv) indicate the information processing timing in the wireless communication terminal 301
  • (v) indicates the information timing in the local controller 300.
  • the time server 5 transmits the global time to the controller 100.
  • the controller 100 receives the global time at the time pt2 and generates the controller-side time synchronized with the received global time.
  • the wireless communication terminal 301 receives the global time at the time pt5, and the local controller 300 generates the machine-side time synchronized with the global time received by the wireless communication terminal 301 at the time pt6.
  • the controller 100 sets the start timing of the control cycle at the time pt11 based on the time on the controller side, and sets the start timing of the communication cycle at the time pt12.
  • the wireless communication terminal 301 receives the cycle timing from the communication controller 200 via the wireless communication base station 201 at the time pt 13, and the local controller 300 starts the above at the time pt 14 based on the cycle timing received by the wireless communication terminal 301. Set the start timing that matches the timing.
  • the controller 100 starts the generation of the control cycle c1 at the time pt21 corresponding to the start timing, the generation of the communication cycle c2 is started at the time pt22 corresponding to the start timing, and the local controller 300 starts the generation of the communication cycle c2.
  • the generation of the control cycle c3 is started. This completes the cycle generation procedure.
  • control cycle and communication cycle generation procedure executed by the controller 100 and the control cycle generation procedure executed by the local controller 300 in the cycle generation procedure will be illustrated in detail.
  • FIG. 10 is a flowchart illustrating a cycle generation procedure in the controller 100.
  • the controller 100 first executes steps S01, S02, S03, S04, and S05.
  • step S01 the controller-side time generation unit 121 waits for the synchronization communication unit 114 to receive the global time.
  • the controller-side time generation unit 121 generates the controller-side time in synchronization with the global time received by the synchronous communication unit 114.
  • the controller-side cycle generation unit 122 sets the start timing of the control cycle based on the controller-side time.
  • the communication cycle generation unit 131 sets the start timing of the communication cycle based on the time on the controller side.
  • step S04 the controller-side cycle generation unit 122 sets the start flag of the control cycle to "cannot start”.
  • step S05 the timing transmission unit 123 transmits the cycle timing of the control cycle (for example, the above-mentioned start timing) to the jurisdiction local controller 300 via the communication server 3.
  • the timing transmission unit 123 may transmit the cycle timing to another controller 100 as the master timing.
  • step S06 it is confirmed whether or not the timing transmission unit 123 has received the set completion notification from the jurisdiction local controller 300. If it is determined in step S06 that the set completion notification has been received from the local controller 300, the controller 100 executes step S07. In step S07, the controller-side cycle generation unit 122 sets the start flag of the control cycle to "start possible".
  • step S08 the controller 100 executes step S08. If it is determined in step S06 that the set completion notification has not been received from the jurisdiction local controller 300, the controller 100 executes step S08 without executing step S07. In step S08, the controller-side cycle generation unit 122 confirms whether the control-side time has reached the start timing.
  • step S08 If it is determined in step S08 that the control side time has not reached the start timing, the controller 100 returns the process to step S06. After that, the reception confirmation of the set completion notification is repeated until the control side time reaches the start timing.
  • step S08 If it is determined in step S08 that the control side time has reached the start timing, the controller 100 executes step S09. In step S09, the controller-side cycle generation unit 122 confirms whether or not the start flag is “startable”.
  • step S09 If it is determined in step S09 that the start flag is not "startable”, the controller 100 returns the process to step S03. As a result, the processing after the start timing is set is executed again. If it is determined in step S09 that the start flag is "startable”, the controller 100 executes step S11. In step S11, the controller-side cycle generation unit 122 starts generating control cycles, and the timing transmission unit 123 starts counting the number of control cycles. Further, the communication cycle generation unit 131 starts the communication cycle generation, and the cycle counter 132 starts the communication cycle counting. This completes the control cycle generation procedure in the controller 100. In step S11, the communication cycle generation unit 131 may start the generation of the communication cycle at a timing different from the start of the generation of the control cycle by the controller-side cycle generation unit 122.
  • FIG. 11 is a flowchart illustrating a cycle generation procedure in the local controller 300.
  • the local controller 300 first executes steps S31, S32, and S33.
  • step S31 the machine-side time generation unit 321 waits for the terminal communication unit 314 to receive the global time.
  • step S32 the machine-side time generation unit 321 generates the machine-side time in synchronization with the global time received by the terminal communication unit 314.
  • step S33 the machine-side cycle generation unit 322 waits for the terminal communication unit 314 to receive the cycle timing (for example, the start timing) transmitted by the corresponding controller 100.
  • the cycle timing for example, the start timing
  • step S34 the machine-side cycle generation unit 322 sets the start timing synchronized with the start timing of the control cycle in the corresponding controller 100 based on the cycle timing received by the terminal communication unit 314.
  • step S35 the machine-side cycle generation unit 322 transmits a set completion notification to the controller 100.
  • step S36 the machine-side cycle generation unit 322 waits for the machine-side time to reach the start timing.
  • step S37 the machine-side cycle generation unit 322 starts generating the machine-side control cycle, and the cycle counter 323 starts counting the number of control cycles.
  • step S38 the local cycle generation unit 325 starts generating machine cycles, and the cycle counter 326 starts counting the number of machine cycles. This completes the procedure for generating the control cycle in the local controller 300.
  • the controller 100 may acquire the master timing via the wired communication network 8 and generate a control cycle based on the acquired master timing and the controller side time.
  • FIG. 12 is a flowchart showing a cycle generation procedure based on master timing.
  • the controller 100 first executes steps S51, S52, and S53.
  • step S51 the controller-side time generation unit 121 waits for the synchronization communication unit 114 to receive the global time.
  • the controller-side time generation unit 121 generates the controller-side time in synchronization with the global time received by the synchronous communication unit 114.
  • the controller-side cycle generation unit 122 waits for the synchronous communication unit 114 to receive the master timing.
  • step S55 the controller-side cycle generation unit 122 sets the start timing synchronized with the master timing.
  • step S56 the controller-side cycle generation unit 122 transmits a set completion notification to the communication controller 200.
  • step S57 the controller-side cycle generation unit 122 waits for the controller-side time to reach the start timing.
  • step S58 the controller-side cycle generation unit 122 starts generating the controller cycle, and the timing transmission unit 123 starts counting the number of control cycles. This completes the control cycle generation procedure in the controller 100.
  • the machine control procedure is that the controller 100 executes a motion program in the control cycle to generate a machine command for the jurisdiction machine 4, adds the first cycle information to the machine command, and transfers the machine command to the communication controller 200.
  • Transmission communication controller 200 receives machine command, transmission of machine command to jurisdiction local controller 300, jurisdiction local controller 300 receives machine command from communication controller 200, and reception.
  • the machine command is stored, the machine command is called in the machine-side control cycle corresponding to the first cycle information added to the machine command, and the machine body 10 realizes a motion based on the called machine command. Including that.
  • the local controller 300 acquires the response information based on the motion realized by the machine body 10, adds the second cycle information to the response information, and transmits the response information to the communication controller 200.
  • the communication controller 200 or the controller 100 stores the received response information, calls the response information in the control cycle corresponding to the second cycle information added to the response information, and calls the response information.
  • the controller 100 may further include executing a motion program based on the above.
  • FIG. 13 is a timing chart illustrating the outline of the machine control procedure, and the horizontal axis of each chart represents the elapsed time.
  • (I) indicates the information processing timing in the motion module 113
  • (ii) indicates the information processing timing in the synchronous communication unit 114
  • (iii) indicates the information processing timing in the controller side timing adjustment unit 116.
  • iv) indicates the information processing timing in the terminal communication unit 314
  • (v) indicates the information processing timing in the machine side timing adjustment unit 315
  • (vi) indicates the information processing timing in the machine control unit 313. ..
  • the cycles c11, c12, and c13 are control cycles sequentially generated by the controller-side cycle generation unit 122, and the cycles c21, c22, and c23 are synchronized with the cycles c11, c12, and c13, and the communication cycle generation unit 131.
  • the cycles c31, c32, and c33 are machine-side control cycles sequentially generated by the machine-side cycle generation unit 322 in synchronization with the cycles c11, c12, and c13.
  • the motion module 113 executes a motion program at time t10 in cycle c11 and generates a machine command.
  • This machine command is transmitted by the synchronous communication unit 114 at time t11 and received by the terminal communication unit 314 at time t12.
  • the machine command received by the terminal communication unit 314 is stored by the machine side timing adjustment unit 315 at time t13, and is called in the machine side control cycle (for example, cycle c33) corresponding to the first cycle information added to the machine command.
  • the machine control unit 313 causes the machine body 10 to realize the motion at the time t14 of the cycle c33. Fluctuations occur at time t12 due to wireless communication, but the fluctuations at time t12 are absorbed by the margin from time t12 to time t14, and the machine command is used at time t14 synchronized with the control cycle.
  • the machine control unit 313 acquires response information based on the motion realized by the machine body 10 at the time t110 of the cycle c31.
  • This response information is transmitted by the terminal communication unit 314 at time t111, stored by the controller side timing adjustment unit 116 at time t112, and in the control cycle (for example, cycle c13) corresponding to the second cycle information added to the response information. Called.
  • the called response information is stored in the reception information storage unit 112 by the synchronous communication unit 114 at the time t113 immediately before the cycle c13, and is stored in the reception information storage unit 112 at the time t114 of the cycle c13 based on the response information stored in the reception information storage unit 112.
  • the motion module 113 executes the motion program. Fluctuations occur at time t112 due to wireless communication, but the fluctuations at time t112 are absorbed by the margin from time t112 to time t114, and the response information is used at time t114 synchronized with the control cycle.
  • the machine control procedure will be illustrated in detail by dividing it into a control procedure in the controller 100 and a control procedure in the local controller 300.
  • the control procedure in the controller 100 includes a data reception procedure and a data generation / transmission procedure.
  • the data reception procedure and the data generation / transmission procedure are repeatedly executed in parallel.
  • the data reception procedure does not necessarily have to be executed in synchronization with the control cycle, but the data generation / transmission procedure is executed in synchronization with the control cycle.
  • FIG. 14 is a flowchart illustrating a data receiving procedure.
  • the controller 100 first executes steps S91 and S92.
  • step S91 the synchronous communication unit 114 waits for the reception of data from the communication controller 200.
  • step S92 the cycle check unit 133 confirms whether or not there is a data reception delay. For example, the cycle check unit 133 confirms whether or not there is a delay in transmitting the response information based on the second cycle information added to the response information.
  • step S92 If it is determined in step S92 that there is a data reception delay, the controller 100 executes step S93. In step S93, the cycle check unit 133 discards the data.
  • step S94 the cycle check unit 133 stores the data in the controller-side timing adjustment unit 116. After executing steps S93 and S94, the controller 100 returns the process to step S91.
  • the communication controller 200 repeats the above procedure.
  • FIG. 15 is a flowchart illustrating a data generation / transmission procedure.
  • the controller 100 executes steps S71, S72, S73, S74, and S75.
  • step S71 the motion module 113 waits for the cycle counter 124 to count up the number of control cycles.
  • step S72 the controller-side timing adjustment unit 116 calls received data (for example, response information and synchronous communication data) whose number of cycles in use corresponds to the current number of control cycles.
  • the motion module 113 executes the motion program and generates a machine command to the jurisdiction machine 4.
  • the motion module 113 calculates the motion record of the jurisdiction machine 4 based on the response information stored in the received information storage unit 112, and calculates the machine command so that the motion record follows the motion command.
  • the addition unit 125 adds the first cycle information to the machine command.
  • the synchronous communication unit 114 transmits a machine command to the communication server 3 via the wired communication network 8. The specific processing content of step S75 will be described later.
  • step S76 the synchronous communication unit 114 generates synchronous communication data.
  • step S77 the addition unit 125 adds the first cycle information to the synchronous communication data.
  • step S78 the synchronous communication unit 114 transmits the synchronous communication data to the communication server 3 via the wired communication network 8. The specific processing content of step S78 will be described later.
  • the controller 100 returns the process to step S71. The controller 100 repeats the above procedure.
  • FIG. 16 is a flowchart illustrating the data transmission procedure in steps S75 and S78.
  • the controller 100 first executes step S82.
  • the cycle check unit 133 confirms whether or not there is a data transmission delay.
  • the cycle check unit 133 confirms whether or not there is a transmission delay of the machine command based on the first cycle information added to the machine command, and based on the first cycle information added to the synchronous communication data, the cycle check unit 133 is used. Check if there is a delay in transmitting synchronous communication data.
  • step S82 If it is determined in step S82 that there is a data transmission delay, the controller 100 executes step S83.
  • step S83 the cycle check unit 133 discards the data.
  • step S84 the switch 134 confirms whether the data is destined for the controlling machine 4 or the other controller 100.
  • step S84 If it is determined in step S84 that the data is destined for the jurisdiction machine 4, the communication controller 200 executes step S85.
  • step S85 the switch 134 transmits the data to the controlling machine 4 via the communication server 3.
  • step S84 If it is determined in step S84 that the data is destined for another controller 100, the communication controller 200 executes step S86.
  • step S86 the switch 134 transmits the data to the controller-side timing adjustment unit 116 of the other controller 100 via the wired communication network 8.
  • step S82 After executing steps S83, S85, and S86, the controller 100 returns the process to step S82. The controller 100 repeats the above procedure.
  • the control procedure in the local controller 300 includes a machine command receiving procedure, a timing adjustment procedure, and a machine control procedure. These are executed repeatedly in parallel.
  • the machine command control procedure does not necessarily have to be executed in synchronization with the control cycle, but the timing adjustment procedure is executed in synchronization with the control cycle.
  • Machine control procedures are performed synchronously with the machine cycle.
  • FIG. 17 is a flowchart illustrating the procedure for receiving the machine command.
  • the local controller 300 executes steps S111 and S112.
  • step S111 the terminal communication unit 314 waits for the reception of the machine command.
  • step S112 the machine-side timing adjustment unit 315 stores the machine command. After that, the local controller 300 returns the process to step S111.
  • the local controller 300 repeats the above procedure.
  • FIG. 18 is a flowchart illustrating the timing adjustment procedure.
  • the local controller 300 executes steps S121, S122, S123, and S124.
  • step S121 the machine-side timing adjustment unit 315 waits for the cycle counter 323 to count up the number of control cycles.
  • the machine-side timing adjustment unit 315 calls a machine command whose number of cycles in use corresponds to the current number of control cycles, and stores the machine command in the command storage unit 311. As a result, the machine command stored in the command storage unit 311 is updated.
  • the addition unit 324 adds the first cycle information to the response information stored in the response information storage unit 312.
  • step S124 the terminal communication unit 314 transmits the response information to the communication controller 200 via the wired communication network 8. After that, the local controller 300 returns the process to step S121.
  • the local controller 300 repeats the above procedure.
  • FIG. 19 is a flowchart illustrating a machine control procedure.
  • the local controller 300 first executes steps S131 and S132.
  • step S131 the machine control unit 313 waits for the count-up of the number of machine cycles by the cycle counter 326.
  • the cycle counter 326 confirms whether or not the machine command stored in the command storage unit 311 has been updated.
  • step S132 If it is determined in step S132 that the machine command stored in the command storage unit 311 has been updated, the local controller 300 executes step S133.
  • step S133 the cycle counter 326 resets the number of machine cycles to the initial value (for example, zero).
  • step S134 the local controller 300 executes step S134. If it is determined in step S132 that the machine command stored in the command storage unit 311 has not been updated, the local controller 300 executes step S134 without executing step S133. In step S134, the machine control unit 313 generates drive data so as to reduce the deviation between the machine command and the response information stored in the response information storage unit 312.
  • step S135 the machine control unit 313 drives the machine body 10 based on the drive data.
  • step S136 the machine control unit 313 acquires the response information based on the motion realized by the machine body 10, and stores it in the response information storage unit 312. After that, the local controller 300 returns the process to step S131.
  • the local controller 300 repeats the above procedure.
  • the machine control system 1 is configured in a real space and has one or more machines 4 that realize motion according to a machine command, and one or more machines 4 that are mounted in a virtual space. It comprises one or more controllers 100 to be controlled, and a communication server 3 that communicates with one or more controllers 100 via a wired communication network 8 and communicates with one or more machines 4 via a wireless communication network 7.
  • Each of the above controllers 100 executes a motion program in a control cycle, generates a machine command for the corresponding machine 4, a motion module 113, an additional unit 125 that adds first cycle information to the machine command, and a machine command.
  • each of the one or more machines 4 receives a terminal communication unit 314 that receives a machine command from the communication server 3 and a machine command received by the terminal communication unit 314. It has a machine-side timing adjustment unit 315 that stores and calls the machine-side control cycle in the machine-side control cycle corresponding to the first cycle information added to the machine-side command.
  • the function of buffering the machine command up to its use timing accelerates the transmission of the machine command from the controller 100 side, and allows a margin in the period from the reception timing of the machine command in the machine 4 to the use timing of the machine command. You can have it. With this margin, it is possible to absorb the fluctuation of the reception timing expanded due to the wireless communication and call the buffered machine command in the machine side control cycle. Therefore, in a system in which a machine command is transmitted via wireless communication, it is possible to repeat the generation of the machine command by executing the motion program and the control of the machine according to the machine command in the control cycle. Therefore, it is effective in realizing machine control via wireless communication.
  • Each of the one or more machines 4 realizes the motion in the machine main body 10 based on the machine main body 10 that realizes the motion and the machine command called by the machine side timing adjustment unit 315, and the motion is realized by the machine main body 10. It further has a machine control unit 313 for acquiring the response information based on the response information and an additional unit 324 for adding the second cycle information to the response information, and the terminal communication unit 314 transmits the response information to the communication server 3 to control the machine.
  • the system 1 stores the response information received from the one or more machines 4 between the one or more controllers 100 and the communication server 3, and in the control cycle corresponding to the second cycle information added to the response information.
  • controller-side timing adjustment units 116 and 213 for calling the response information may be further provided, and the motion module 113 may execute the motion program based on the response information called by the controller-side timing adjustment units 116 and 213.
  • the response information transmitted from the machine 4 via the wireless communication network is buffered on the controller 100 side and called in the control cycle corresponding to the first cycle information.
  • the function of buffering the response information up to the usage timing accelerates the transmission of the response information from the machine 4 side, and there is a margin in the period from the reception timing of the response information on the controller 100 side to the usage timing of the response information. Can be given.
  • Each of the one or more controllers 100 further has a timing transmitter 123 that transmits the cycle timing of the control cycle to the corresponding machine 4, and each of the one or more machines 4 has the corresponding controller 100 based on the cycle timing. It may further have a machine-side cycle generator 322 that generates a machine-side control cycle synchronized with the control cycle in. In this case, after the synchronization process based on the cycle timing, a machine-side control cycle synchronized with the control cycle in the controller 100 is generated in the machine 4. Therefore, the machine-side control cycle in the machine 4 can be easily synchronized with the control cycle in the controller while suppressing the burden of wireless communication.
  • Each of the one or more controllers 100 has a controller-side time generator 121 that generates a controller-side time in synchronization with the time generated by the time server 5, and a controller-side cycle that generates a control cycle based on the controller-side time.
  • Each of the one or more machines 4 further has a generation unit 122, and each of the one or more machines 4 further has a machine-side time generation unit 321 that generates a machine-side time in synchronization with the time generated by the time server, and has a machine-side cycle.
  • the generation unit 322 may generate a machine-side control cycle based on the time generated by the machine-side time generation unit 321 and the cycle timing. In this case, by adjusting the time in the controller 100 and the machine 4 in advance, even if the reception timing of the cycle timing in the machine 4 fluctuates, the machine side in the machine 4 is based on the machine side time. Control cycles can be generated at the right time.
  • the timing transmission unit 123 retransmits the cycle timing after the previously transmitted cycle timing to the machine 4. May be good.
  • the machine-side control cycle in the machine 4 can be synchronized with the control cycle in the controller 100 with higher reliability.
  • the machine control unit 313 may control the machine body 10 with a machine cycle having a cycle length shorter than the control cycle, based on the machine command called by the machine side timing adjustment unit 315. In this case, it is possible to achieve both the constant periodicity of calling machine commands by the control cycle and the appropriate control of the machine by the more subdivided machine cycle.
  • the machine control system 1 may include a plurality of controllers 100 as one or more controllers, and each of the plurality of controllers 100 may have a controller-side timing adjusting unit 116.
  • each of the plurality of controllers 100 enables synchronous communication between the control machine 4 and the controller 100 using the same network, the control cycle is synchronized between the plurality of pairs of the controller 100 and the machine 4. The need is reduced and the system can be easily configured.
  • the data transmitted by the synchronous communication unit 114 of one controller 100 in the plurality of controllers 100 is addressed to the corresponding machine, the data is transmitted to the corresponding machine 4 via the communication server 3, and the data is the other controller. If it is addressed to 100, a switch 134 that transmits the data to the controller-side timing adjusting unit 116 of another controller 100 may be further provided via the wired communication network 8.
  • the synchronous communication unit 114 can be appropriately used for the synchronous communication between the controller 100 and the machine 4 and the synchronous communication between the controllers 100.
  • One controller 100 may further have an asynchronous communication unit 115 that transmits asynchronous communication data to another node including the other controller 100 to the other node via the wired communication network 8. In this case, communication resources for synchronous communication can be saved.
  • At least one of the plurality of controllers 100 may further have a controller-side cycle generation unit 122 that generates a control cycle based on the master timing received via the wired communication network 8.
  • the control cycles can be easily synchronized between the controllers 100.
  • the communication server 3 has a timing master 224 that generates master timing, and the controller-side cycle generation unit 122 may receive master timing from the timing master 224.
  • the same setting for generating the control cycle based on the timing master generated by the timing master 224 of the communication server 3 can be adopted. Therefore, it is easy to add / remove the controller 100 to the system.
  • a cycle check unit 133, 225 for detecting a transmission delay of the machine command may be further provided between one or more controllers 100 and the communication server 3 based on the first cycle information included in the machine command. In this case, the reliability of the transmission of the machine command synchronized with the control cycle can be improved.
  • the cycle check unit 133 may cancel the transmission of the machine command when the transmission delay of the machine command is detected.
  • the wireless communication resource in the communication server 3 can be saved by canceling the transmission of the machine command in time for the call in the control cycle.
  • a cycle check unit 133, 225 that detects a reception delay of the response information based on the second cycle information included in the response information may be further provided between one or more controllers 100 and the communication server 3. In this case, it is possible to detect the response information that is not in time for the call in the control cycle, and take measures such as substituting the response information that was called immediately before to prevent the response information from being lost.
  • a communication cycle generation unit 131, 222 is further provided between one or more controllers 100 and the communication server 3 to generate a communication cycle synchronized with at least one control cycle of one or more controllers 100, and a cycle check unit 133.
  • the 225 may detect the transmission delay of the machine command based on the first cycle information added to the machine command and the cycle information of the communication cycle. In this case, the transmission delay can be easily detected by the cycle check units 133 and 225.
  • the machine control system 1 is mounted on a virtual space having at least one or more machines 4 and one or more servers communicating with one or more machines 4, and one or more controllers 100 that control one or more machines 4 respectively. And, as long as it is provided, the machine control system 1 can be changed as appropriate.
  • the wireless communication network 7 may be replaced with the wired communication network 7A.
  • the wireless communication base station 201 and the wireless communication terminal 301 intervening between the communication controller 200 and the local controller 300 are not required. Further, in FIG. 9, the processing of the wireless communication terminal 301 executed at the times pt5 and pt13 becomes unnecessary. As shown in FIG.
  • the communication server 3 may be replaced with a communication hub 3A such as a switching hub.
  • the timing master 224 possessed by the communication server 3 may be provided on any one or more servers other than the communication server 3 (for example, the controller server 2, the time server 5, or the application server 6). ..
  • the storage 193 executes a motion program at least in the control cycle and issues a machine command to the corresponding machine.
  • the first cycle information that specifies which machine side control cycle to call the machine command is added to the machine command, and the machine command to which the first cycle information is added is added.
  • the storage 193 receives the response information to which the second cycle information is added by the corresponding machine 4 from the corresponding machine 4, stores the received response information, and uses the second cycle information added to the response information.
  • a program that calls the response information in the corresponding control cycle further executes it, executes a motion program based on the called response information, and implements a controller that generates a machine command on the virtual space of the controller server 2. You may remember it.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Manufacturing & Machinery (AREA)
  • Quality & Reliability (AREA)
  • Automation & Control Theory (AREA)
  • Manipulator (AREA)
  • Selective Calling Equipment (AREA)
  • Programmable Controllers (AREA)
  • Numerical Control (AREA)

Abstract

マシン制御システム1は、現実空間上に構成され、それぞれマシン指令に応じてモーションを実現する1以上のマシン4と、1以上のマシン4と通信する1以上のサーバが有する仮想空間上に実装され、1以上のマシン4に対するマシン指令をそれぞれ生成する1以上のコントローラ100と、を備え、1以上のコントローラ100のそれぞれは、コントロールサイクルでモーションプログラムを実行し、対応するマシン4に対するマシン指令を生成するモーションモジュール113と、マシン指令に第1サイクル情報を付加する付加部125と、マシン指令を対応するマシン4に送信する同期通信部114と、を有し、1以上のマシン4のそれぞれは、1以上のサーバからマシン指令を受信する端末通信部314と、マシン指令に付加された第1サイクル情報に対応するマシン側コントロールサイクルで当該マシン指令を呼び出すマシン側タイミング調整部315と、を有する。

Description

マシン制御システム、プログラム、マシン、システム及びデバイス
 本開示は、マシン制御システム、プログラム、マシン、システム及びデバイスに関する。
 特許文献1には、ロボットと、加工装置と、ロボットを制御するロボットコントローラと、加工装置を制御する加工装置コントローラと、ロボットコントローラ及び加工装置コントローラに対する指令を生成するプログラマブルロジックコントローラとを備えるシステムが開示されている。
特開2019-209454号公報
 本開示は、デバイス間の同期通信の信頼性向上に有効なシステムを提供する。
 本開示の一側面に係るマシン制御システムは、現実空間上に構成され、それぞれマシン指令に応じてモーションを実現する1以上のマシンと、1以上のマシンと通信する1以上のサーバが有する仮想空間上に実装され、1以上のマシンをそれぞれ制御する1以上のコントローラと、を備え、1以上のコントローラのそれぞれは、コントロールサイクルでモーションプログラムを実行し、対応するマシンに対するマシン指令を生成するモーションモジュールと、マシン指令に第1サイクル情報を付加する付加部と、マシン指令を対応するマシンに送信する同期通信部と、を有し、1以上のマシンのそれぞれは、1以上のサーバからマシン指令を受信する端末通信部と、端末通信部が受信したマシン指令を記憶し、当該マシン指令に付加された第1サイクル情報に対応するマシン側コントロールサイクルで当該マシン指令を呼び出すマシン側タイミング調整部と、を有する。
 本開示の他の側面に係るプログラムは、コントロールサイクルでモーションプログラムを実行し、対応するマシンに対するマシン指令を生成することと、対応するマシンにおいて、いずれのマシン側コントロールサイクルでマシン指令を呼び出すかを指定する第1サイクル情報をマシン指令に付加することと、第1サイクル情報が付加されたマシン指令を対応するマシンに送信することと、を実行するコントローラを、対応するマシンと通信するサーバの仮想空間上に実装させる。
 本開示の他の側面に係るマシンは、モーションを実現する本体と、コントローラが実装された仮想空間を構成するサーバと通信し、コントローラがサイクル情報を付加したマシン指令をサーバから受信する端末通信部と、端末通信部が受信したマシン指令を記憶し、当該マシン指令に付加されたサイクル情報に対応するコントロールサイクルにおいて当該マシン指令を呼び出すマシン側タイミング調整部と、マシン側タイミング調整部が呼び出したマシン指令に基づいて、本体にモーションを実現させるマシン制御部と、を備える。
 本開示の他の側面に係るシステムは、第1処理を繰り返す第1デバイスと、第1デバイスと通信し、第2処理を繰り返す第2デバイスと、を備え、第1デバイスは、第1処理により第1情報を生成する第1処理モジュールと、第1情報に第1サイクル情報を付加する第1付加部と、第1情報を第2デバイスに送信する第1通信部と、を有し、第2デバイスは、第1デバイスから第1情報を受信する第2通信部と、第2通信部が受信した第1情報を記憶し、当該第1情報に付加された第1サイクル情報に対応するサイクルの第2処理において当該第1情報を呼び出すタイミング調整部と、タイミング調整部により呼び出された第1情報に基づいて第2処理を実行する第2処理モジュールと、を有する。
 本開示の他の側面に係るデバイスは、第1処理により第1情報を生成することを繰り返す第1処理モジュールと、第2処理を繰り返す第2デバイスにおいて、いずれのサイクルの第2処理において第1情報を呼び出すかを指定する第1サイクル情報を当該第1情報に付加する第1付加部と、第1付加部により第1サイクル情報が付加された第1情報を第2デバイスに送信する通信部と、を備える。
 本開示の他の側面に係るデバイスは、第1処理を繰り返す第1デバイスが、第1処理により生成し、サイクル情報を付加した第1情報を、第1デバイスから受信する通信部と、通信部が受信した第1情報を記憶し、当該第1情報に付加されたサイクル情報に対応するサイクルの第2処理において当該第1情報を呼び出すタイミング調整部と、タイミング調整部により呼び出された第1情報に基づいて、第2処理を実行する処理モジュールと、を備える。
 本開示によれば、デバイス間の同期通信の信頼性向上に有効なシステムを提供することができる。
マシン制御システムの概略構成を例示する模式図である。 ロボットの構成を例示する模式図である。 コントローラサーバの機能上の構成を例示するブロック図である。 コントローラの機能上の構成を例示するブロック図である。 ローカルコントローラの機能上の構成を例示するブロック図である。 コントローラの変形例を示すブロック図である。 通信コントローラの機能上の構成を例示するブロック図である。 コントローラサーバ、通信コントローラ、及びローカルコントローラのハードウェア構成を例示するブロック図である。 サイクル生成手順を例示するタイミングチャートである。 コントローラにおけるサイクル生成手順を例示するフローチャートである。 ローカルコントローラにおけるサイクル生成手順を例示するフローチャートである。 ローカルコントローラにおけるサイクル生成手順の変形例を示すフローチャートである。 マシン制御手順を例示するタイミングチャートである。 コントローラにおける制御手順を例示するフローチャートである。 コントローラにおける制御手順を例示するフローチャートである。 コントローラにおける制御手順を例示するフローチャートである。 ローカルコントローラにおける制御手順を例示するフローチャートである。 ローカルコントローラにおける制御手順を例示するフローチャートである。 ローカルコントローラにおける制御手順を例示するフローチャートである。 マシン制御システムの変形例を示す模式図である。 マシン制御システムの他の変形例を示す模式図である。
 以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
 本実施形態に係るシステムは、互いに通信しながら、それぞれが繰り返し処理を行う複数のデバイスを備える。デバイス間の通信には、各デバイスの処理サイクルに対する同期性が求められる場合がある。以下、各デバイスの処理サイクルに同期した通信を「同期通信」という。
 同期通信の信頼性を向上させるために、本実施形態に係るシステムは、第1処理を繰り返す第1デバイスと、第1デバイスと通信し、第2処理を繰り返す第2デバイスと、を備え、第1デバイスは、第1処理により第1情報を生成する第1処理モジュールと、第1情報に第1サイクル情報を付加する第1付加部と、第1情報を第2デバイスに送信する第1通信部と、を有し、第2デバイスは、第1デバイスから第1情報を受信する第2通信部と、第2通信部が受信した第1情報を記憶し、当該第1情報に付加された第1サイクル情報に対応するサイクルの第2処理において当該第1情報を呼び出すタイミング調整部と、タイミング調整部により呼び出された第1情報に基づいて第2処理を実行する第2処理モジュールと、を有する。
 第2デバイスにおける第1受信タイミングのゆらぎが大きくなると、同期通信の維持が困難になる可能性がある。これに対し、上記システムによれば、第1デバイスから送信された第1情報が第2デバイスでバッファリングされ、第1サイクル情報に対応するサイクルの第2処理において呼び出される。このように、第1情報をその使用タイミングまでバッファリングする機能によって、第1デバイス側からの第1情報の送信を前倒し、第2デバイスにおける第1情報の受信タイミングから当該第1情報の使用タイミングまでの期間に余裕を持たせることができる。この余裕により、通信状況等に起因して拡大した受信タイミングのゆらぎを吸収し、バッファした第1情報を適切な使用タイミングで呼び出すことができる。このため、同期通信の信頼性を向上させることができる。
 第2処理モジュールは、第2処理により第2情報を生成し、第2デバイスは、第2情報に第2サイクル情報を付加する第2付加部を更に有し、第2通信部は、第2情報を第1デバイスに送信し、第1通信部は、第2情報を第2デバイスから受信し、第1デバイスは、第1通信部が受信した第2情報を記憶し、当該第2情報に付加された第2サイクル情報に対応するサイクルの第1処理において当該第2情報を呼び出す第1タイミング調整部を更に有し、第1処理モジュールは、第1タイミング調整部により呼び出された第2情報に基づいて第1処理を実行してもよい。この場合、第1デバイスと第2デバイスとの間における双方向の同期通信の信頼性を向上させることができる。
 第1デバイス及び第2デバイスは、現実空間上に実装されたデバイスであってもよく、仮想空間上に実装されたデバイスであってもよい。現実空間とは、現実の物体が存在する空間である。仮想空間は、現実空間を模擬するようにデータによって表された空間である。デバイスを仮想空間上に実装するとは、仮想空間を構成する装置に対し、デバイスの機能を仮想空間において模擬するプログラムを付加することを意味する。
 第1デバイス及び第2デバイスの具体例としては、現実空間上に実装されたコントローラ、マシン、センサ、モータ、及びサーボドライバ等が挙げられる。第1デバイス及び第2デバイスは、仮想空間上に実装されたコントローラ、マシン、センサ、モータ、及びサーボドライバ等であってもよい。
 第1デバイスと第2デバイスとの間の通信は、少なくとも一部に無線通信を含んでいてもよい。第1デバイスと第2デバイスとの間の通信が無線通信を含む場合、上述した受信タイミングの揺らぎを吸収する効果がより有効である。
 以下、本実施形態の一例として、第1デバイスが、仮想空間上に実装されたコントローラであり、第2デバイスが現実空間上に実装されたマシンであり、コントローラとマシンとの間の通信が、一部に無線通信を含むマシン制御システムを具体的に例示する。
〔マシン制御システム〕
 図1に示すマシン制御システム1は、少なくとも1台のコントローラサーバ2から無線通信ネットワークを介して送信される演算結果に基づいて、複数のマシン4を制御するシステムである。マシン制御システム1の一例としては、複数のマシン4の協調モーションにより、ワークを生産する生産システムが挙げられる。図1に示すように、マシン制御システム1は、少なくとも1台のコントローラサーバ2と、通信サーバ3と、複数のマシン4とを備える。
 コントローラサーバ2は、コントロールサイクルで所定の演算を実行する。コントローラサーバ2は、複数のコントローラ100を有する(図3参照)。複数のコントローラ100は、コントローラサーバ2において仮想空間上に実装され、複数のマシン4をそれぞれ制御する。一つのコントローラ100は、少なくとも一台のマシン4に対応する。一つのコントローラ100が複数のマシン4に対応していてもよく、複数のコントローラ100が一台のマシン4に対応していてもよい。仮想空間上に実装するとは、ソフトウェアにより、コントローラ100としての機能をコントローラサーバ2等の演算装置に付加することを意味する。コントローラ100としての機能は、マシン4からの情報の取得と、取得した情報に基づくマシン指令の生成と、生成したマシン指令のマシン4への出力とを含む。複数のコントローラ100は、複数のコントローラサーバ2に分配されていてもよい。これにより、一台のコントローラサーバ2の演算負担が軽減される。
 通信サーバ3は、コントローラサーバ2と有線通信ネットワーク8を介して通信し、複数のマシン4と無線通信ネットワーク7を介して通信し、コントローラサーバ2と複数のマシン4との間で情報を中継する。有線通信ネットワーク8の具体例としては、イーサネット(登録商標)等のローカルエリアネットワークが挙げられる。無線通信ネットワーク7の具体例としては、第5世代移動通信システム(5G)等の高速無線通信ネットワークが挙げられる。通信サーバ3は、コントローラサーバ2から離れた場所に設けられていてもよく、コントローラサーバ2に近接した場所に設けられていてもよく、コントローラサーバ2と同じ筐体内に設けられていてもよい。
 通信サーバ3は、通信コントローラ200と、無線通信基地局201とを有する。通信コントローラ200は、コントローラサーバ2と有線通信ネットワーク8を介して通信し、複数のマシン4と無線通信基地局201を介して通信する。無線通信基地局201は、複数のマシン4の無線通信端末301(後述)と無線通信ネットワーク7を介して通信する。
 複数のマシン4は、現実空間上に構成され、それぞれコントローラサーバ2の演算結果に応じてモーションを実現する。例えば複数のマシン4は、それぞれ上記マシン指令に応じてモーションを実現する。モーションを実現するとは、現実空間において少なくとも一つの物体を変位させることを意味する。変位とは、移動と、姿勢変更とを含む。また、変位は、筐体内等、外部から視認できない空間内における変位を含む。
 複数のマシン4のそれぞれは、マシン本体10と、ローカルコントローラ300と、無線通信端末301とを有する。マシン本体10は、モーションを実現する機器である。コントローラサーバ2の演算結果に基づいてモーションを実現する機器である限り、マシン本体10はいかなる機器であってもよい。図1においては、マシン本体10の具体例として、移動ロボット20と、定置ロボット30と、NC工作機械60と、環境センサ70と、コンベヤ80とを示している。移動ロボット20は、自立走行可能なロボットであり、無人搬送車21と、ロボット22とを有する。無人搬送車21は、マシン指令が含む移動指令に応じて自律走行する。無人搬送車21の具体例としては、電動式の所謂AGV(Automated Guided Vehicle)が挙げられる。ロボット22は、マシン指令が含む作業指令に応じてワークに対する作業を実行する。
 例えばロボット22は、6軸の垂直多関節ロボットであり、図2に示すように、基部31と、旋回部32と、第1アーム33と、第2アーム34と、第3アーム35と、先端部36と、アクチュエータ41,42,43,44,45,46とを有する。基部31は、無人搬送車21の上に固定されている。旋回部32は、鉛直な軸線51まわりに旋回するように基部31上に設けられている。第1アーム33は、軸線51に交差(例えば直交)する軸線52まわりに揺動するように旋回部32に接続されている。交差は、所謂立体交差のようにねじれの関係にある場合も含む。第2アーム34は、軸線52に実質的に平行な軸線53まわりに揺動するように第1アーム33の先端部に接続されている。第3アーム35は、第2アーム34に沿った軸線54まわりに旋回し、軸線54に交差(例えば直交)する軸線55まわりに揺動するように、第2アーム34の先端部に接続されている。先端部36は、軸線55に交差(例えば直交)する軸線56まわりに旋回するように第3アーム35の先端部に接続されている。先端部36には、吸着ノズル、ロボットハンド、又は加工ツール等、用途に応じて様々なツールが設けられる。
 アクチュエータ41,42,43,44,45,46は、例えば電動モータ及び減速機を含み、ロボット22を駆動する。例えばアクチュエータ41は軸線51まわりに旋回部32を旋回させ、アクチュエータ42は軸線52まわりに第1アーム33を揺動させ、アクチュエータ43は軸線53まわりに第2アーム34を揺動させ、アクチュエータ44は軸線54まわりに第3アーム35を旋回させ、アクチュエータ45は軸線55まわりに第3アーム35を揺動させ、アクチュエータ46は軸線56まわりに先端部36を旋回させる。
 なお、ロボット22の具体的な構成は適宜変更可能である。例えばロボット22は、上記6軸の垂直多関節ロボットに更に1軸の関節を追加した7軸の冗長型ロボットであってもよく、所謂スカラー型の多関節ロボットであってもよい。また、ロボット22は所謂パラレルリンク型のロボットであってもよい。
 図1に戻り、定置ロボット30は、作業エリアの床面などに定置される。定置ロボット30の具体例としては、ロボット22と同様に、垂直多関節ロボット、スカラー型の多関節ロボット、パラレルリンク型のロボット等が挙げられる。NC工作機械60は、マシン指令が含む加工指令に応じて、切削加工等の機械加工をワークに施す。環境センサ70は、マシン指令が含むセンシング指令に応じて、システムの環境情報を取得する。環境センサ70の具体例としては、システムの環境画像を取得するカメラ、システムの環境温度を取得する温度センサ等が挙げられる。コンベヤ80は、マシン指令が含む搬送指令に応じて、ワークを搬送する。コンベヤ80の具体例としては、ベルトコンベヤ、ローラコンベヤ等が挙げられる。
 ローカルコントローラ300は、通信サーバ3と無線通信端末301を介して通信し、無線通信端末301を介して通信サーバ3から取得したマシン指令に応じてマシン本体10にモーションを実現させる。また、ローカルコントローラ300は、マシン本体10から取得した応答情報を、無線通信端末301を介して通信サーバ3にフィードバックする。無線通信端末301は、ローカルコントローラ300からの指令に従って、無線通信基地局201と無線通信ネットワーク7を介して通信する。
 第5世代移動通信システム(5G)の実用化等により、高速無線通信が可能となったため、無線通信を介したマシン制御の実現可能性も高まっている。マシン制御においては、モーションプログラムの実行によるマシン指令の生成と、マシン指令に応じたマシン4の制御とを所定のコントロールサイクルで繰り返す必要がある。上述のようにマシン指令が無線通信ネットワーク7を介して送受信される場合、無線通信に起因して、マシン4側におけるマシン指令の受信タイミングのゆらぎが拡大し、マシン4側においてマシン指令をコントロールサイクルで受信するのが困難になる可能性がある。また、応答情報が無線通信ネットワーク7を介して送受信される場合、無線通信に起因して、コントローラ100側における応答情報の受信タイミングのゆらぎが拡大し、コントローラ100側において応答情報をコントロールサイクルで受信するのが困難になる可能性がある。
 これに対し、マシン制御システム1は、コントローラ側(無線通信ネットワーク7のコントローラ100側)から無線通信ネットワーク7を介して送信されたマシン指令を、その使用タイミングまでマシン側(無線通信ネットワーク7のマシン4側)でバッファリングするように構成されていてもよい。この場合、コントローラ側からのマシン指令の送信を前倒し、マシン側におけるマシン指令の受信タイミングから当該マシン指令の使用タイミングまでの期間に余裕を持たせることができる。この余裕により、無線通信に起因して拡大した受信タイミングのゆらぎを吸収し、バッファしたマシン指令をコントロールサイクルに同期したタイミングで使用することができる。
 また、マシン制御システム1は、マシン側から無線通信ネットワーク7を介して送信された応答情報を、その使用タイミングまでコントローラ側でバッファリングするように構成されていてもよい。この場合、マシン側からの応答情報の送信を前倒し、コントローラ側における応答情報の受信タイミングから当該応答情報の使用タイミングまでの期間に余裕を持たせることができる。この余裕により、無線通信に起因して拡大した受信タイミングのゆらぎを吸収し、バッファした応答情報をコントロールサイクルに同期したタイミングで使用することができる。
 以上のように、マシン指令をその使用タイミングまでマシン側でバッファリングし、応答情報をその使用タイミングまでコントローラ側でバッファリングする構成によれば、応答情報の取得と、応答情報に基づくモーションプログラムの実行によるマシン指令の生成と、マシン指令に応じたマシン4の制御とをコントロールサイクルで繰り返すことが可能となる。
 以下、コントローラ100と、通信コントローラ200と、ローカルコントローラ300との構成をより詳細に例示する。
(コントローラ)
 コントローラ100は、対応するマシン4(以下、「管轄マシン4」という。)が送信した応答情報を、有線通信ネットワーク8を介して通信サーバ3から受信することと、受信した応答情報に基づいてモーションプログラムを実行し、管轄マシン4に対するマシン指令を生成することと、マシン指令を、有線通信ネットワーク8を介して通信サーバ3に送信することと、を実行するように構成されている。
 例えば図4に示すように、コントローラ100は、機能上の構成(以下、「機能ブロック」という。)として、プログラム記憶部111と、受信情報記憶部112と、モーションモジュール113と、同期通信部114と、非同期通信部115とを有する。
 プログラム記憶部111は、モーションプログラムを記憶する。モーションプログラムは、時系列の複数のモーション指令を含む。モーション指令は、例えば目標位置・姿勢への変位命令である。動作命令は、目標位置・姿勢への到達時刻の指定を含んでいてもよいし、目標位置・姿勢への変位速度の指定を含んでいてもよい。モーション指令は、目標速度での変位命令であってもよい。この場合、モーション指令は、目標速度での変位期間の指定を含んでもよい。
 受信情報記憶部112は、通信サーバ3の通信コントローラ200からの受信情報を記憶する。受信情報は、上記応答情報を含む。
 モーションモジュール113は、コントロールサイクルでモーションプログラムを実行し、管轄マシン4に対するマシン指令を生成する。例えばモーションモジュール113は、モーションプログラムを実行し、管轄マシン4に対するマシン指令を生成することをコントロールサイクルで繰り返し実行する。モーションプログラムを実行することは、管轄マシン4のモーションをモーション指令に追従させるようにマシン指令を算出することを含む。モーションモジュール113は、受信情報記憶部112が記憶する応答情報に基づいてモーションプログラムを実行してもよい。例えばモーションモジュール113は、受信情報記憶部112が記憶する応答情報に基づく管轄マシン4のモーション実績を算出し、モーション実績をモーション指令に追従させるようにマシン指令を算出する。マシン指令の具体例としては、速度指令又は駆動力指令(トルク指令を含む。)等が挙げられる。
 同期通信部114は、有線通信ネットワーク8を介して、マシン指令を通信コントローラ200に送信する。「同期通信」は、コントロールサイクルに同期した定周期通信を意味する。同期通信は、コントロールサイクルごとに実行する通信、及び所定数のコントロールサイクルごとに実行する通信を含む。後述するように、同期通信部114が送信したマシン指令は管轄マシン4のローカルコントローラ300(以下、「管轄ローカルコントローラ300」という。)においてバッファリングされ、コントロールサイクルに同期したタイミングで呼び出される。このため、同期通信部114によるマシン指令の送信自体は、コントロールサイクルに同期していなくてもよい。
 非同期通信部115は、他のノードに対する非同期通信データを、通信コントローラ200を経由せずに有線通信ネットワーク8を介して他のノードに送信する。「非同期通信」は、コントロールサイクルとの同期が必須ではない通信を意味するが、コントロールサイクルに同期していてもよい。他のノードは、他のコントローラ100であってもよいし、複数のコントローラ100とは別のノードであってもよい。別のノードの具体例としては、アプリサーバ6が挙げられる(図1参照)。アプリサーバ6は、有線通信ネットワーク8を介してコントローラサーバ2に接続されたコンピュータである。アプリサーバ6は、コントローラサーバ2に組み込まれていてもよいし、通信サーバ3に組み込まれていてもよい。
 アプリサーバ6は、マシン指令、応答情報等の制御情報を複数のコントローラ100から収集し、蓄積するデータ収集アプリケーションを有する。アプリサーバ6は、データ収集アプリケーションが蓄積した制御情報に基づいて、複数のマシン4のモーションを仮想空間上でシミュレーションするシミュレータアプリケーションを更に有してもよい。アプリサーバ6は、データ収集アプリケーションが蓄積した制御情報に基づく機械学習により、学習済みモデルを生成する学習アプリケーションを更に有してもよい。学習済みモデルの具体例としては、制御情報の入力に応じてマシン4の正常度を出力する診断モデル等が挙げられる。アプリサーバ6は、制御情報と学習済みモデルとに基づいて、上記正常度等の出力情報を生成し、出力情報をコントローラ100に送信する分析アプリケーションを更に有してもよい。非同期通信部115は、シミュレータアプリケーション、学習アプリケーション、分析アプリケーション等の実行結果を、通信コントローラ200を経由せずに有線通信ネットワーク8を介してアプリサーバ6から取得してもよい。
 コントローラ100は、応答情報を、その使用タイミングまでバッファリングするように構成されていてもよい。例えばコントローラ100は、コントローラ側タイミング調整部116を更に有する。コントローラ側タイミング調整部116は、管轄マシン4から受信した応答情報を記憶し、当該応答情報に付加された第2サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出す。第2サイクル情報は、応答情報の使用タイミング(例えば、当該応答情報を使用する際のコントロールサイクル数。以下、「使用時サイクル数」という。)を示す情報である。第2サイクル情報は、使用時サイクル数自体であってもよいし、応答情報が取得されたタイミングにおける管轄ローカルコントローラ300のコントロールサイクル数(以下、「取得時サイクル数」という。)であってもよい。
 第2サイクル情報が上記使用時サイクル数である場合、コントローラ側タイミング調整部116は、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該応答情報を呼び出す。コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該応答情報を呼び出すことは、当該コントロールサイクルにおいて使用可能なタイミングで当該応答情報を呼び出すことを意味する。このため、当該コントロールサイクルにおいて使用されるように、当該コントロールサイクルに先立って当該応答情報を呼び出すことも、当該コントロールサイクルにおいて当該応答情報を呼び出すことに含まれる。第2サイクル情報が上記取得時サイクル数である場合、コントローラ側タイミング調整部116は、第2サイクル情報に基づいて(例えば所定数を加算して)使用時サイクル数を算出し、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該応答情報を呼び出す。
 コントローラ側タイミング調整部116は、呼び出した応答情報を同期通信部114に出力し、同期通信部114は当該応答情報を受信情報記憶部112に格納する。これにより、コントローラ100のモーションモジュール113は、コントローラ側タイミング調整部116が呼び出した応答情報に基づいて、モーションプログラムを実行することとなる。
 コントローラ100は、上記コントロールサイクルを生成することと、当該コントロールサイクルのサイクルタイミングを管轄マシン4に送信することとを更に実行するように構成されていてもよい。後述するように、サイクルタイミングは、コントロールサイクルに同期したコントロールサイクルを管轄マシン4において生成するのに用いられる。例えばコントローラ100は、コントローラ側時刻生成部121と、コントローラ側サイクル生成部122と、タイミング送信部123と、サイクルカウンタ124とを更に有してもよい。
 コントローラ側時刻生成部121は、時刻サーバ5が生成した時刻(以下、「グローバル時刻」という。)に同期して、コントローラ側時刻を生成する。時刻サーバ5は、有線通信ネットワーク8を介してコントローラサーバ2に接続されたコンピュータであり、グローバル時刻を出力する。時刻サーバ5は、コントローラサーバ2に組み込まれていてもよいし、通信サーバ3に組み込まれていてもよい。例えばコントローラ側時刻生成部121は、有線通信ネットワーク8を介したTSN(Time Sensitive Networking)通信等、時刻同期性を保証する通信によって同期通信部114が時刻サーバ5から受信したグローバル時刻を取得し、取得したグローバル時刻に同期してコントローラ側時刻を生成する。例えばコントローラ側時刻生成部121は、タイマ195(後述)がカウントする時刻を、グローバル時刻に合わせる。
 コントローラ側サイクル生成部122は、コントローラ側時刻に基づいて、コントロールサイクルを生成する。例えばコントローラ側サイクル生成部122は、コントローラ時刻に基づいて、コントロールサイクルの開始タイミングをセットし、コントローラ側時刻が当該開始タイミングに達した時点から、コントロールサイクルでサイクルパルスを繰り返し生成する。
 タイミング送信部123は、コントロールサイクルのサイクルタイミングを、通信コントローラ200を介して管轄ローカルコントローラ300に送信する。サイクルタイミングは、コントロール側時刻におけるコントロールサイクルの位相を示す情報である。例えばサイクルタイミングは、コントローラ側サイクル生成部122によるサイクルパルスの生成タイミングである。タイミング送信部123は、コントローラ側サイクル生成部122がコントロールサイクルの生成を開始するのに先立って、上記開始タイミングをサイクルタイミングとして管轄ローカルコントローラ300に送信してもよいし、コントローラ側サイクル生成部122がコントロールサイクルの生成を開始した後に、2番目以降のサイクルパルスの生成タイミングをサイクルタイミングとして管轄ローカルコントローラ300に送信してもよい。タイミング送信部123は、サイクルタイミングをマスタタイミングとして他のコントローラ100に送信してもよい。この場合、他のコントローラ100のコントローラ側サイクル生成部122は、有線通信ネットワーク8を介してマスタタイミングを取得し、取得したマスタタイミングと、コントローラ側時刻とに基づいてコントロールサイクルを生成してもよい。例えばコントローラ側サイクル生成部122は、取得したマスタタイミングに基づき上記開始タイミングをセットしてもよい。
 タイミング送信部123は、管轄ローカルコントローラ300のマシン側タイミング調整部315(後述)がコントロールサイクルの生成に失敗した場合、先に送信したサイクルタイミングよりも後のサイクルタイミングを管轄ローカルコントローラ300に再度送信してもよい。例えばタイミング送信部123は、管轄ローカルコントローラ300からのセット完了通知の受信を待機し、セット完了通知を受信しないままコントローラ側時刻がサイクルタイミングに達した場合に、マシン側タイミング調整部315がコントロールサイクルの生成に失敗したと判定する。セット完了通知は、管轄ローカルコントローラ300における開始タイミングのセットが完了したことの通知である。
 サイクルカウンタ124は、コントローラ側サイクル生成部122が生成したコントロールサイクル数(例えば上記サイクルパルスの数)をカウントする。モーションモジュール113は、サイクルカウンタ124によりカウントされたコントロールサイクル数に基づいてモーションプログラムを実行する。例えばモーションモジュール113は、コントロールサイクル数がカウントアップされる度に、実行対象を現在実行中のモーション指令から次のモーション指令に変更する。
 コントローラ100は、コントロールサイクルに同期した通信サイクルを生成するように構成されていてもよい。例えばコントローラ100は、通信サイクル生成部131と、サイクルカウンタ132とを更に有してもよい。
 通信サイクル生成部131は、コントロールサイクルに同期した通信サイクルを生成する。例えば通信サイクル生成部131は、コントローラ側時刻と、コントロールサイクルのサイクルタイミングとに基づいて通信サイクルを生成する。例えば通信サイクル生成部131は、サイクルタイミングに基づいて、コントロールサイクルの開始タイミングに同期した開始タイミングをセットし、コントローラ側時刻が当該開始タイミングに達した時点から、通信サイクルでサイクルパルスを繰り返し生成する。なお、コントロールサイクルの開始タイミングに同期した開始タイミングは、コントロールサイクルの開始タイミングに対して所定期間(例えばコントロールサイクルのサイクル長の半分)ずれた開始タイミングを含む。通信サイクルのサイクル長は、コントロールサイクルのサイクル長の整数倍(1倍を含む)である。通信サイクルのサイクル長は、コントロールサイクルのサイクル長の整数分の1であってもよい。
 サイクルカウンタ132は、通信サイクル生成部131が生成した通信サイクル数(例えば上記サイクルパルスの数)をカウントする。通信サイクルは、コントロールサイクルに同期して生成されるので、通信サイクル数に基づいてコントロールサイクル数を検知することが可能である。そこでコントローラ側タイミング調整部116は、コントロールサイクル数が使用時サイクル数となるコントロールサイクルにおいて応答情報を呼び出すことを、通信サイクル数に基づいて行ってもよい。
 コントローラ100は、マシン指令に対し、その使用タイミングを示す情報を付加するように構成されていてもよい。例えばコントローラ100は、付加部125を更に有してもよい。付加部125は、マシン指令に第1サイクル情報を付加する。第1サイクル情報は、管轄マシン4において、いずれのマシン側コントロールサイクルでマシン指令を呼び出すかを指定する情報である。第1サイクル情報が付加されたマシン指令を受信した管轄ローカルコントローラ300は、第1サイクル情報に基づいて上記使用タイミング(例えば、当該マシン指令を使用する際のコントロールサイクル数。以下、「使用時サイクル数」という。)を検知し、当該使用タイミングまで当該マシン指令をバッファリングする。例えば付加部125は、現在のコントロールサイクル数に基づいて使用時サイクル数を算出し、使用時サイクル数自体を第1サイクル情報としてマシン指令に付加する。一例として、付加部125は現在のサイクル数に所定数を加算して使用時サイクル数を算出する。付加部125は、現在のコントロールサイクル数を第1サイクル情報としてマシン指令に付加してもよい。この場合、管轄マシン4が第1サイクル情報に基づいて(例えば所定数を加算して)使用時サイクル数を算出する。
 コントローラ100は、マシン指令に含まれる第1サイクル情報に基づいて当該マシン指令の送信遅れを検出するように構成されていてもよい。また、コントローラ100は、応答情報に含まれる第2サイクル情報に基づいて当該応答情報の受信遅れを検出するように構成されていてもよい。例えばコントローラ100は、サイクルチェック部133を更に有してもよい。
 サイクルチェック部133は、マシン指令に含まれる第1サイクル情報に基づいて、当該マシン指令の送信遅れを検出する。マシン指令の送信遅れは、ローカルコントローラ300によるマシン指令の呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部133は、同期通信部114がマシン指令を送信する際に、現在のコントロールサイクル数が、当該マシン指令の上記使用時サイクル数以上となっている場合にマシン指令の送信遅れを検出する。
 サイクルチェック部133は、応答情報に含まれる第2サイクル情報に基づいて、当該応答情報の受信遅れを検出してもよい。応答情報の受信遅れは、コントローラ側タイミング調整部116による応答情報の呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部133は、管轄マシン4から応答情報を受信した後に、現在のコントロールサイクル数が、当該応答情報の上記使用時サイクル数以上となっている場合に応答情報の受信遅れを検出する。
 上述したように、通信サイクルは、コントロールサイクルに同期して生成されるので、通信サイクル数に基づいてコントロールサイクル数を検知することが可能である。そこでサイクルチェック部133は、マシン指令の送信遅れを第1サイクル情報と通信サイクル数とに基づいて検出し、応答情報の受信遅れを第2サイクル情報と通信サイクル数とに基づいて検出してもよい。
 サイクルチェック部133は、マシン指令の送信遅れを検出した場合に、当該マシン指令の送信をキャンセルしてもよい。例えばコントローラ側タイミング調整部116は、マシン指令の送信遅れを検出した場合に、通信コントローラ200への当該マシン指令の送信に先立って、当該マシン指令を破棄する。サイクルチェック部133は、応答情報の受信遅れを検出した場合に、当該応答情報を破棄してもよい。
 同期通信部114は、有線通信ネットワーク8を介して、複数のコントローラ100における他のコントローラ100のコントローラ側タイミング調整部116に同期通信データを送信してもよい。同期通信データの具体例としては、管轄マシン4のモーションと、他のコントローラ100が対応するマシン4(以下、「他のマシン4」という。)のモーションとを協調させるために用いられる管轄マシン4のステータス情報(例えば管轄マシン4へのマシン指令又は管轄マシン4からの応答情報)が挙げられる。
 同期通信部114が、他のコントローラ100のコントローラ側タイミング調整部116に同期通信データを送信する場合、付加部125は、同期通信データに第1サイクル情報を付加してもよい。
 第1サイクル情報が付加された同期通信データを受信した他のコントローラ100のコントローラ側タイミング調整部116は、第1サイクル情報に基づいて当該同期通信データの使用タイミング(例えば、当該同期通信データを使用する際のコントロールサイクル数。以下、「使用時サイクル数」という。)を検知し、当該使用タイミングまで当該同期通信データをバッファリングする。例えば付加部125は、現在のコントロールサイクル数に基づいて使用時サイクル数を算出し、使用時サイクル数自体を第1サイクル情報として同期通信データに付加する。一例として、付加部125は現在のサイクル数に所定数を加算して使用時サイクル数を算出する。付加部125は、現在のコントロールサイクル数(以下、「付加時サイクル数」という。)を第1サイクル情報として同期通信データに付加してもよい。
 他のコントローラ100のコントローラ側タイミング調整部116は、同期通信データを記憶し、当該同期通信データに付加された第1サイクル情報に対応するコントロールサイクルにおいて当該同期通信データを呼び出す。第1サイクル情報が上記使用時サイクル数である場合、コントローラ側タイミング調整部213は、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該同期通信データを呼び出す。第1サイクル情報が上記付加時サイクル数である場合、コントローラ側タイミング調整部213は、第1サイクル情報に基づいて(例えば所定数を加算して)使用時サイクル数を算出し、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該同期通信データを呼び出す。
 コントローラ側タイミング調整部116は、呼び出した同期通信データを同期通信部114に出力し、同期通信部114は当該同期通信データを受信情報記憶部112に格納する。これにより、他のコントローラ100のモーションモジュール113は、コントローラ側タイミング調整部116が呼び出した応答情報に基づいて、モーションプログラムを実行することとなる。
 このように、同期通信データは、他のコントローラ100のコントローラ側タイミング調整部116においてバッファリングされ、コントロールサイクルに同期したタイミングで呼び出される。このため、同期通信部114による同期通信データの送信自体は、コントロールサイクルに同期していなくてもよい。
 同期通信部114が送信するデータが、他のコントローラ100宛ての同期通信データを含む場合、サイクルチェック部133は、同期通信データに含まれる第1サイクル情報に基づいて、当該同期通信データの送信遅れを検出してもよい。同期通信データの送信遅れは、他のコントローラ100のコントローラ側タイミング調整部116による同期通信データの呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部133は、同期通信部114が同期通信データを送信する際に、現在の通信サイクル数に対応するコントロールサイクル数が、当該同期通信データの上記使用時サイクル数以上となっている場合に同期通信データの送信遅れを検出する。サイクルチェック部133は、同期通信データの送信遅れを検出した場合に、当該同期通信データの送信をキャンセルしてもよい。
 他のコントローラ100のサイクルチェック部133が、同期通信データに含まれる第1サイクル情報に基づいて、当該同期通信データの受信遅れを検出してもよい。同期通信データの受信遅れは、コントローラ側タイミング調整部116による同期通信データの呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部133は、コントローラ側タイミング調整部116宛ての同期通信データを受信した際に、現在のコントロールサイクル数が、当該同期通信データの上記使用時サイクル数以上となっている場合に同期通信データの受信遅れを検出する。サイクルチェック部133は、同期通信データの受信遅れを検出した場合に、当該同期通信データを破棄してもよい。
 コントローラ100は、同期通信部114が送信するデータが管轄マシン4宛てであるか他のコントローラ100宛てであるかに基づいて、当該データの送信先を切り替えるように構成されていてもよい。例えばコントローラ100は、スイッチ134を有する。
 スイッチ134は、同期通信部114が送信するデータが管轄マシン4宛てであれば、通信サーバ3を介して管轄ローカルコントローラ300へ当該データを送信し、当該データが他のコントローラ100宛てであれば、有線通信ネットワーク8を介して、他のコントローラ100のコントローラ側タイミング調整部116へ当該データを送信する。
(ローカルコントローラ)
 ローカルコントローラ300は、通信サーバ3を介してマシン指令を受信することと、マシン指令に基づいて、マシン本体10にモーションを実現させることと、を実行するように構成されている。例えば図5に示すように、ローカルコントローラ300は、機能ブロックとして、端末通信部314と、マシン側タイミング調整部315と、指令記憶部311と、マシン制御部313と、応答情報記憶部312とを有する。
 端末通信部314は、無線通信ネットワーク7を介して、通信サーバ3からマシン指令を受信する。指令記憶部311は、端末通信部314が受信したマシン指令を記憶する。マシン制御部313は、指令記憶部311が記憶するマシン指令に基づいて、マシン本体10にモーションを実現させ、マシン本体10が実現したモーションに基づく応答情報を取得して応答情報記憶部312に格納する。
 例えばマシン制御部313は、マシン本体10の動作をマシン指令に追従させる。例えばマシン制御部313は、指令記憶部311が記憶するマシン指令と、応答情報記憶部312が記憶する過去の応答情報との偏差を縮小するようにマシン本体10を駆動し、これに応じたマシン本体10の応答情報を取得して応答情報記憶部312に格納することをマシン側コントロールサイクルで繰り返し実行する。例えば、マシン側コントロールサイクルは、上記コントロールサイクルとサイクル長が等しいサイクルである。一例として、マシン指令が速度指令である場合、マシン制御部313は、応答情報記憶部312が記憶する応答情報が示す動作速度を速度指令に追従させるようにマシン本体10を駆動する。マシン指令が駆動力指令である場合、マシン制御部313は、応答情報記憶部312が記憶する応答情報が示す駆動力を駆動力指令に追従させるようにマシン本体10を駆動する。
 マシン制御部313は、マシン側コントロールサイクルよりも短いサイクル長のマシンサイクルでマシン本体10を制御してもよい。各マシンサイクルにおいて、マシン制御部313は、マシン指令と、応答情報記憶部312が記憶する過去の応答情報との偏差を縮小するようにマシン本体10を駆動し、これに応じたマシン本体10の応答情報を取得して応答情報記憶部312に格納する。マシンサイクルのサイクル長は、例えばマシン側コントロールサイクルのサイクル長の整数分の1である。
 例えばマシン制御部313は、中間コントローラ331と、サーボ332とを有する。中間コントローラ331は、マシン指令と、応答情報記憶部312が記憶する過去の応答情報との偏差を縮小するように、マシン本体10の各アクチュエータに対する駆動データ(例えば位置指令、速度指令、又は駆動力指令)をマシンサイクルで生成する。サーボ332は、駆動データに基づいて、マシン本体10の各アクチュエータに駆動電力を出力する。サーボ332は、マシンサイクルよりも短いサイクル長のサーボサイクルで駆動データに基づく駆動電力を出力してもよい。なお、マシン制御部313は、中間コントローラ331とサーボ332との少なくとも一方を有していればよい。マシン制御部313がサーボ332を有しない場合、マシン制御部313は、上記駆動データをマシン本体10に出力し、マシン本体10が、駆動データに基づいて各アクチュエータの駆動電力を生成する。また、マシン制御部313が中間コントローラ331を有しない場合、コントローラ100が上記駆動データをマシン指令として生成し、管轄マシン4に送信する。
 例えばマシン本体10が上記移動ロボット20又は定置ロボット30である場合、中間コントローラ331は、先端部36の目標位置・目標姿勢及び目標速度等を含むマシン指令を取得し、逆運動学演算により、アクチュエータ41,42,43,44,45,46の位置指令及び速度指令を含む駆動データを生成してもよい。中間コントローラ331は、アクチュエータ41,42,43,44,45,46の目標位置及び目標速度を含むマシン指令を取得し、中間コントローラはアクチュエータ41,42,43,44,45,46の駆動力指令を含む駆動データを生成してもよい。また、中間コントローラ331は、時系列に並ぶ複数のマシン指令に基づいて駆動データを生成してもよい。
 端末通信部314は、マシン側コントロールサイクルごとに、応答情報記憶部312が記憶する応答情報を、無線通信ネットワーク7を介して通信サーバ3に送信する。
 ローカルコントローラ300は、マシン指令を、その使用タイミングまでバッファリングするように構成されていてもよい。例えばローカルコントローラ300は、マシン側タイミング調整部315を更に有する。
 マシン側タイミング調整部315は、端末通信部314が受信したマシン指令を記憶し、当該マシン指令に付加された第1サイクル情報に対応するマシン側コントロールサイクルにおいて当該マシン指令を呼び出す。第1サイクル情報が、上記使用時サイクル数である場合、マシン側タイミング調整部315は、コントロールサイクル数が使用時サイクル数となるマシン側コントロールサイクルにおいて当該マシン指令を呼び出す。コントロールサイクル数が当該使用時サイクル数となるマシン側コントロールサイクルにおいて当該マシン指令を呼び出すことは、当該マシン側コントロールサイクルにおいて使用可能なタイミングで当該マシン指令を呼び出すことを意味する。このため、当該マシン側コントロールサイクルにおいて使用されるように、当該マシン側コントロールサイクルに先立って当該マシン指令を呼び出すことも、当該マシン側コントロールサイクルにおいて当該マシン指令を呼び出すことに含まれる。第1サイクル情報が上記付加時サイクル数である場合、マシン側タイミング調整部315は、第1サイクル情報に基づいて(例えば所定数を加算して)使用時サイクル数を算出し、コントロールサイクル数が当該使用時サイクル数となるマシン側コントロールサイクルにおいて当該マシン指令を呼び出す。
 マシン側タイミング調整部315は、呼び出したマシン指令を指令記憶部311に格納する。これにより、マシン制御部313によるマシン本体10の制御は、マシン側タイミング調整部315が呼び出したマシン指令に基づいて行われることとなる。
 ローカルコントローラ300は、対応するコントローラ100におけるコントロールサイクルに同期したマシン側コントロールサイクルを生成するように構成されていてもよい。例えばローカルコントローラ300は、マシン側時刻生成部321と、マシン側サイクル生成部322と、サイクルカウンタ323とを更に有してもよい。
 マシン側時刻生成部321は、上記グローバル時刻に同期してマシン側時刻を生成する。例えばマシン側時刻生成部321は、無線通信ネットワーク7を介したTSN通信等、時刻同期性を保証する通信によって端末通信部314が通信サーバ3から受信したグローバル時刻を取得し、取得したグローバル時刻に同期してマシン側時刻を生成する。マシン側時刻生成部321は、有線通信ネットワーク8を介して時刻サーバ5又は対応するコントローラ100からグローバル時刻を取得してもよい。例えばマシン側時刻生成部321は、タイマ395(後述)がカウントする時刻を、グローバル時刻に合わせる。
 マシン側サイクル生成部322は、無線通信ネットワーク7を介して端末通信部314が通信サーバ3から受信したサイクルタイミングを取得し、取得したサイクルタイミングに基づいて、対応するコントローラ100におけるコントロールサイクルに同期したマシン側コントロールサイクルを生成する。例えばマシン側サイクル生成部322は、マシン側時刻と、サイクルタイミングとに基づいてマシン側コントロールサイクルを生成する。例えばマシン側サイクル生成部322は、サイクルタイミングに基づいて、対応するコントローラ100におけるコントロールサイクルの開始タイミングに同期した開始タイミングをセットし、マシン側時刻が当該開始タイミングに達した時点から、マシン側コントロールサイクルでサイクルパルスを繰り返し生成する。マシン側サイクル生成部322は、開始タイミングのセットが完了した時点で、セット完了通知をコントローラ100に送信してもよい。マシン側サイクル生成部322が生成するマシン側コントロールサイクルのサイクル長は、コントローラ100におけるコントロールサイクルのサイクル長と同じである。
 サイクルカウンタ323は、マシン側サイクル生成部322が生成したコントロールサイクル数(例えば上記サイクルパルスの数)をカウントする。
 ローカルコントローラ300は、端末通信部314が通信サーバ3に送信する応答情報に対し、その使用タイミングを示す情報を付加するように構成されていてもよい。例えばローカルコントローラ300は、付加部324を更に有してもよい。付加部324は、応答情報に上記第2サイクル情報を付加する。上述したように、端末通信部314が送信した応答情報は対応するコントローラ100のコントローラ側タイミング調整部116においてバッファリングされ、コントロールサイクルに同期したタイミングで呼び出される。このため、端末通信部314による応答情報の送信自体は、コントロールサイクルに同期していなくてもよい。
 ローカルコントローラ300は、マシン側コントロールサイクルに同期したマシンサイクルを生成するように構成されていてもよい。例えばローカルコントローラ300は、ローカルサイクル生成部325と、サイクルカウンタ326と、を更に有する。
 ローカルサイクル生成部325は、マシン側時刻と、サイクルタイミングとに基づいてマシンサイクルを生成する。例えばローカルサイクル生成部325は、サイクルタイミングに基づいて、対応するコントローラ100におけるコントロールサイクルの開始タイミングに同期した開始タイミングをセットし、マシン側時刻が当該開始タイミングに達した時点から、マシンサイクルでサイクルパルスを繰り返し生成する。
 サイクルカウンタ326は、ローカルサイクル生成部325が生成したマシンサイクル数(例えば上記サイクルパルスの数)をカウントする。
(通信コントローラ)
 コントローラ側タイミング調整部116、通信サイクル生成部131、サイクルカウンタ132、サイクルチェック部133及びスイッチ134は、少なくともコントローラ100と通信コントローラ200との間(コントローラ100内及び通信コントローラ200内を含む)に設けられていればよく、必ずしもコントローラ100に設けられていなくてもよい。以下、コントローラ側タイミング調整部、通信サイクル生成部、サイクルカウンタ、サイクルチェック部及びスイッチが通信コントローラ200に設けられる場合の構成を例示する。この場合、コントローラ100は、図6に示すように、コントローラ側タイミング調整部116、通信サイクル生成部131、サイクルカウンタ132、サイクルチェック部133及びスイッチ134を有しなくてもよい。図7に示すように、通信コントローラ200は、機能ブロックとして、コントローラ側通信部211と、マシン側通信部212と、コントローラ側タイミング調整部213とを有する。
 コントローラ側通信部211は、複数のコントローラ100のそれぞれから、有線通信ネットワーク8を介してマシン指令又は同期通信データを受信し、コントローラ100のそれぞれに対し、有線通信ネットワーク8を介して応答情報又は同期通信データを送信する。
 マシン側通信部212は、複数のローカルコントローラ300のそれぞれに対して、無線通信ネットワーク7を介してマシン指令を送信し、複数のローカルコントローラ300のそれぞれから、無線通信ネットワーク7を介して応答情報を取得する。
 コントローラ側タイミング調整部213は、マシン側通信部212が取得した応答情報を記憶し、当該応答情報に付加された第2サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出す。第2サイクル情報が上記使用時サイクル数である場合、コントローラ側タイミング調整部213は、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該応答情報を呼び出す。コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該応答情報を呼び出すことは、当該コントロールサイクルにおいて使用可能なタイミングで当該応答情報を呼び出すことを意味する。このため、当該コントロールサイクルにおいて使用されるように、当該コントロールサイクルに先立って当該応答情報を呼び出すことも、当該コントロールサイクルにおいて当該応答情報を呼び出すことに含まれる。第2サイクル情報が上記取得時サイクル数である場合、コントローラ側タイミング調整部213は、第2サイクル情報に基づいて(例えば所定数を加算して)使用時サイクル数を算出し、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該応答情報を呼び出す。
 コントローラ側通信部211は、コントローラ側タイミング調整部213が呼び出した応答情報を、対応するコントローラ100に対し、有線通信ネットワーク8を介して送信する。対応するコントローラ100の同期通信部114は、受信した応答情報を受信情報記憶部112に格納する。これにより、対応するコントローラ100のモーションモジュール113は、コントローラ側タイミング調整部213が呼び出した応答情報に基づいて、モーションプログラムを実行することとなる。
 通信コントローラ200は、複数のコントローラ100の少なくともいずれかのコントロールサイクルに同期した通信サイクルを生成するように構成されていてもよい。例えば通信コントローラ200は、時刻生成部221と、通信サイクル生成部222と、サイクルカウンタ223とを更に有してもよい。
 時刻生成部221は、上記グローバル時刻に同期して通信サーバ時刻を生成する。例えば時刻生成部221は、有線通信ネットワーク8を介したTSN通信等、時刻同期性を保証する通信によってコントローラ側通信部211が時刻サーバ5から受信したグローバル時刻を取得し、取得したグローバル時刻に同期して通信サーバ時刻を生成する。例えばコントローラ側時刻生成部121は、タイマ296(後述)がカウントする時刻を、グローバル時刻に合わせる。時刻サーバ5が通信サーバ3に組み込まれる場合、時刻生成部221は、グローバル時刻自体を通信サーバ時刻とする。
 通信サイクル生成部222は、複数のコントローラ100の少なくともいずれかのコントロールサイクルに同期した通信サイクルを生成する。例えば通信サイクル生成部222は、通信サーバ時刻と、複数のコントローラ100の少なくともいずれかが管轄ローカルコントローラ300に送信したサイクルタイミングとに基づいて通信サイクルを生成する。例えば通信サイクル生成部222は、サイクルタイミングに基づいて、コントロールサイクルの開始タイミングに同期した開始タイミングをセットし、通信サーバ時刻が当該開始タイミングに達した時点から、通信サイクルでサイクルパルスを繰り返し生成する。なお、コントロールサイクルの開始タイミングに同期した開始タイミングは、コントロールサイクルの開始タイミングに対して所定期間(例えばコントロールサイクルのサイクル長の半分)ずれた開始タイミングを含む。
 通信サイクル生成部222は、開始タイミングのセットが完了した時点で、セット完了通知をコントローラ100に送信してもよい。通信サイクルのサイクル長は、コントロールサイクルのサイクル長の整数倍(1倍を含む)である。通信サイクルのサイクル長は、コントロールサイクルのサイクル長の整数分の1であってもよい。
 サイクルカウンタ223は、通信サイクル生成部222が生成した通信サイクル数(例えば上記サイクルパルスの数)をカウントする。通信サイクルは、コントロールサイクルに同期して生成されるので、通信サイクル数に基づいてコントロールサイクル数を検知することが可能である。そこでコントローラ側タイミング調整部213は、コントロールサイクル数が使用時サイクル数となるコントロールサイクルにおいて応答情報を呼び出すことを、通信サイクル数に基づいて行ってもよい。
 通信コントローラ200は、上記マスタタイミングを生成するように構成されていてもよい。例えば通信コントローラ200はタイミングマスタ224を有してもよい。タイミングマスタ224は、通信サーバ時刻に基づいてマスタタイミングを生成する。タイミングマスタ224は、生成したマスタタイミングを、有線通信ネットワーク8を介して複数のコントローラ100の少なくとも一つに送信する。
 通信コントローラ200がタイミングマスタ224を有し、複数のコントローラ100の少なくとも一つがマスタタイミングに基づいてコントロールサイクルを生成する場合、通信サイクル生成部222は、通信サーバ時刻と、マスタタイミングとに基づいて通信サイクルを生成する。例えば通信サイクル生成部222は、マスタタイミングに基づいて上記開始タイミングをセットしてもよい。複数のコントローラ100の少なくとも一つにおけるコントロールサイクルの生成と、通信コントローラ200における通信サイクルの生成とが、同一のマスタタイミングに基づいて行われることによって、通信サイクルが当該コントロールサイクルに同期する。
 通信コントローラ200は、マシン指令に含まれる第1サイクル情報に基づいて当該マシン指令の送信遅れを検出するように構成されていてもよい。また、通信コントローラ200は、応答情報に含まれる第2サイクル情報に基づいて当該応答情報の受信遅れを検出するように構成されていてもよい。例えば通信コントローラ200は、サイクルチェック部225を更に有してもよい。
 サイクルチェック部225は、マシン指令に含まれる第1サイクル情報に基づいて、当該マシン指令の送信遅れを検出する。マシン指令の送信遅れは、ローカルコントローラ300によるマシン指令の呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部225は、マシン側通信部212がローカルコントローラ300にマシン指令を送信する前に、現在の通信サイクル数に対応するコントロールサイクル数が、当該マシン指令の上記使用時サイクル数以上となっている場合にマシン指令の送信遅れを検出する。
 サイクルチェック部225は、応答情報に含まれる第2サイクル情報に基づいて、当該応答情報の受信遅れを検出してもよい。応答情報の受信遅れは、コントローラ側タイミング調整部213による応答情報の呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部225は、マシン側通信部212がマシン4から応答情報を受信した後に、現在の通信サイクル数に対応するコントロールサイクル数が、当該応答情報の上記使用時サイクル数以上となっている場合に応答情報の受信遅れを検出する。
 上述したように、通信サイクルは、コントロールサイクルに同期して生成されるので、通信サイクル数に基づいてコントロールサイクル数を検知することが可能である。そこでサイクルチェック部225は、マシン指令の送信遅れを第1サイクル情報と通信サイクル数とに基づいて検出し、応答情報の受信遅れを第2サイクル情報と通信サイクル数とに基づいて検出してもよい。
 サイクルチェック部225は、マシン指令の送信遅れを検出した場合に、マシン側通信部212による当該マシン指令の送信をキャンセルしてもよい。例えばサイクルチェック部225は、マシン指令の送信遅れを検出した場合に、マシン側通信部212による当該マシン指令の送信に先立って、当該マシン指令を破棄する。サイクルチェック部225は、応答情報の受信遅れを検出した場合に、当該応答情報を破棄してもよい。
 通信コントローラ200は、コントローラ100から受信したデータが管轄マシン4宛てであるか他のコントローラ100宛てであるかに基づいて、当該データの送信先を切り替えるように構成されていてもよい。この場合、コントローラ100は、通信コントローラ200に送信するデータにその宛先を付加するように構成されていてもよい。例えば通信コントローラ200は、スイッチ226を有する。
 スイッチ226は、コントローラ側通信部211が一のコントローラ100から受信したデータが管轄マシン4宛てであれば、マシン側通信部212により無線通信ネットワーク7を介して管轄ローカルコントローラ300へ当該データを送信させ、当該データが他のコントローラ100宛てであれば、コントローラ側通信部211により有線通信ネットワーク8を介して、当該他のコントローラ100へ当該データを送信させる。
 スイッチ226が、コントローラ側通信部211により他のコントローラ100に同期通信データを送信させる場合、コントローラ側タイミング調整部213は、同期通信データを記憶し、当該同期通信データに付加された第1サイクル情報に対応するコントロールサイクルにおいて当該同期通信データを呼び出す。第1サイクル情報が上記使用時サイクル数である場合、コントローラ側タイミング調整部213は、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該同期通信データを呼び出す。第1サイクル情報が上記付加時サイクル数である場合、コントローラ側タイミング調整部213は、第1サイクル情報に基づいて(例えば所定数を加算して)使用時サイクル数を算出し、コントロールサイクル数が当該使用時サイクル数となるコントロールサイクルにおいて当該同期通信データを呼び出す。
 コントローラ側通信部211は、コントローラ側タイミング調整部213が呼び出した同期通信データを、その宛先である他のコントローラ100に対し、有線通信ネットワーク8を介して送信する。他のコントローラ100の同期通信部114は、受信した同期通信データを受信情報記憶部112に格納する。これにより、他のコントローラ100のモーションモジュール113は、コントローラ側タイミング調整部213が呼び出した同期通信データに基づいて、モーションプログラムを実行することとなる。
 コントローラ側通信部211がコントローラ100から受信するデータが、他のコントローラ100宛ての同期通信データを含む場合、サイクルチェック部225は、同期通信データに含まれる第1サイクル情報に基づいて、当該同期通信データの受信遅れを検出してもよい。同期通信データの受信遅れは、コントローラ側タイミング調整部213による同期通信データの呼び出しに間に合わないレベルの遅れを意味する。例えばサイクルチェック部225は、コントローラ側通信部211がコントローラ100から同期通信データを受信した後に、現在の通信サイクル数に対応するコントロールサイクル数が、当該同期通信データの上記使用時サイクル数以上となっている場合に同期通信データの受信遅れを検出する。サイクルチェック部225は、同期通信データの受信遅れを検出した場合に、当該同期通信データを破棄してもよい。
 図8は、コントローラサーバ2、通信コントローラ200、及びローカルコントローラ300のハードウェア構成を例示するブロック図である。図8に示すように、コントローラサーバ2は、回路190を有する。回路190は、プロセッサ191と、メモリ192と、ストレージ193と、有線通信ポート194と、タイマ195とを有する。回路190が有する各構成要素の数は一つに限られない。
 ストレージ193は、管轄マシン4が送信した応答情報を、有線通信ネットワーク8を介して通信サーバ3から受信することと、受信した応答情報に基づいてモーションプログラムを実行し、管轄マシン4に対するマシン指令を生成することと、マシン指令を、有線通信ネットワーク8を介して通信サーバ3に送信することと、をコントローラサーバ2に実行させるプログラムを記憶している。当該プログラムがコントローラサーバ2に実行させる制御方法は、受信した応答情報を記憶し、当該応答情報に付加された第2サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出すことを更に含んでもよい。この場合、受信した応答情報に基づいてモーションプログラムを実行することは、第2サイクル情報に対応するコントロールサイクルにおいて呼び出した応答情報に基づいてモーションプログラムを実行することを含む。例えばストレージ193は、上述したコントローラ100の各機能ブロックをコントローラサーバ2に構成させるためのプログラムを記憶している。
 メモリ192は、ストレージ193からロードしたプログラム等を一時的に記憶する。プロセッサ191は、演算結果をメモリ192に一時的に記憶しながら、メモリ192にロードされたプログラムを実行する。有線通信ポート194は、プロセッサ191からの指令に応じ、有線通信ネットワーク8を介して通信コントローラ200と通信する。タイマ195は、クロックパルスのカウントにより経過時間を計測する。
 通信コントローラ200は、回路290を有する。回路290は、プロセッサ291と、メモリ292と、ストレージ293と、有線通信ポート294と、無線通信ポート295と、タイマ296とを有する。
 ストレージ293は、複数のコントローラ100のそれぞれから、有線通信ネットワーク8を介してマシン指令を受信することと、複数のマシン4のそれぞれに対し、無線通信ネットワーク7を介してマシン指令を送信することと、複数のマシン4のそれぞれから、無線通信ネットワーク7を介して応答情報を受信することと、複数のコントローラ100のそれぞれに対し、有線通信ネットワーク8を介して応答情報を送信することと、を含む通信方法を通信コントローラ200に実行させるプログラムを記憶している。当該プログラムが通信コントローラ200に実行させる通信方法は、受信した応答情報を記憶し、当該応答情報に付加された第2サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出すことを更に含んでもよい。この場合、有線通信ネットワーク8を介して応答情報を送信することは、第2サイクル情報に対応するコントロールサイクルにおいて呼び出した応答情報を送信することを含む。例えばストレージ293は、上述した各機能ブロックを通信コントローラ200に構成させるためのプログラムを記憶している。
 メモリ292は、ストレージ293からロードしたプログラム等を一時的に記憶する。プロセッサ291は、演算結果をメモリ292に一時的に記憶しながら、メモリ292にロードされたプログラムを実行する。有線通信ポート294は、プロセッサ291からの指令に応じて、有線通信ネットワーク8を介してコントローラサーバ2と通信する。無線通信ポート295は、プロセッサ291からの指令に応じて、無線通信基地局201及び無線通信端末301を介してローカルコントローラ300と通信する。タイマ296は、クロックパルスのカウントにより経過時間を計測する。
 ローカルコントローラ300は、回路390を有する。回路390は、プロセッサ391と、メモリ392と、ストレージ393と、無線通信ポート394と、タイマ395と、ドライバ回路396とを有する。
 ストレージ393は、通信サーバ3を介してマシン指令を受信することと、マシン指令に基づいて、マシン本体10にモーションを実現させることと、を含む制御方法をローカルコントローラ300に実行させるプログラムを記憶している。当該プログラムがローカルコントローラ300に実行させる制御方法は、受信したマシン指令を記憶し、当該マシン指令に付加された第1サイクル情報に対応するマシン側コントロールサイクルにおいて当該マシン指令を呼び出すことを更に含んでいてもよい。この場合、マシン指令に基づいて、マシン本体10にモーションを実現させることは、第1サイクル情報に対応するマシン側コントロールサイクルにおいて呼び出したマシン指令に基づいて、マシン本体10にモーションを実現させることを含む。例えばローカルコントローラ300は、上述した各機能ブロックをローカルコントローラ300に構成させるためのプログラムを記憶している。
 メモリ392は、ストレージ393からロードしたプログラム等を一時的に記憶する。プロセッサ391は、演算結果をメモリ392に一時的に記憶しながら、メモリ392にロードされたプログラムを実行する。無線通信ポート394は、プロセッサ391からの指令に応じて、無線通信端末301及び無線通信基地局201を介して通信コントローラ200と通信する。タイマ395は、クロックパルスのカウントにより経過時間を計測する。ドライバ回路396は、プロセッサ391からの指令に応じてマシン本体10に駆動電力を供給する。
〔マシン制御手順〕
 続いて、マシン制御方法の一例として、マシン制御システム1が実行するマシン制御手順を例示する。この手順は、コントロールサイクル、通信サイクル等のサイクル生成手順と、生成したサイクルでのマシン制御手順とを含む。
(サイクル生成手順の概要)
 サイクル生成手順は、コントローラ100が、コントロールサイクルを生成することと、ローカルコントローラ300が、上記コントロールサイクルに同期したマシン側コントロールサイクルを生成することとを含む。
 図9は、サイクル生成手順の概要を例示するタイミングチャートであり、各チャートの横軸は経過時間を表す。(i)は、時刻サーバ5における情報処理タイミングを示し、(ii)は、コントローラ100におけるコントロールサイクル生成の情報処理タイミングを示し、(iii)は、コントローラ100における通信サイクル生成の情報処理タイミングを示し、(iv)は、無線通信端末301における情報処理タイミングを示し、(v)は、ローカルコントローラ300における情報タイミングを示している。
 まず、時刻pt1において、時刻サーバ5がグローバル時刻をコントローラ100に送信する。コントローラ100は、時刻pt2においてグローバル時刻を受信し、受信したグローバル時刻に同期したコントローラ側時刻を生成する。無線通信端末301は、時刻pt5においてグローバル時刻を受信し、ローカルコントローラ300は、無線通信端末301が受信したグローバル時刻に同期したマシン側時刻を時刻pt6において生成する。
 コントローラ100は、コントローラ側時刻に基づいてコントロールサイクルの開始タイミングを時刻pt11でセットし、通信サイクルの開始タイミングを時刻pt12でセットする。無線通信端末301は、時刻pt13において無線通信基地局201を介して通信コントローラ200からサイクルタイミングを受信し、ローカルコントローラ300は、無線通信端末301が受信したサイクルタイミングに基づいて、時刻pt14において上記開始タイミングに一致する開始タイミングをセットする。
 その後、コントローラ100は、上記開始タイミングに該当する時刻pt21においてコントロールサイクルc1の生成を開始し、上記開始タイミングに該当する時刻pt22において通信サイクルc2の生成を開始し、ローカルコントローラ300は、上記開始タイミングに該当する時刻pt23においてコントロールサイクルc3の生成を開始する。以上でサイクル生成手順が完了する。
 以下、サイクル生成手順においてコントローラ100が実行するコントロールサイクル及び通信サイクル生成手順と、ローカルコントローラ300が実行するコントロールサイクル生成手順とをそれぞれ詳細に例示する。
(コントローラにおけるサイクル生成手順)
 図10は、コントローラ100におけるサイクル生成手順を例示するフローチャートである。図10に示すように、コントローラ100は、まずステップS01,S02,S03,S04,S05を実行する。ステップS01では、コントローラ側時刻生成部121が、同期通信部114によるグローバル時刻の受信を待機する。ステップS02では、コントローラ側時刻生成部121が、同期通信部114が受信したグローバル時刻に同期してコントローラ側時刻を生成する。ステップS03では、コントローラ側サイクル生成部122が、コントローラ側時刻に基づいて、コントロールサイクルの開始タイミングをセットする。また、通信サイクル生成部131が、コントローラ側時刻に基づいて、通信サイクルの開始タイミングをセットする。ステップS04では、コントローラ側サイクル生成部122が、コントロールサイクルの開始フラグを「開始不可」とする。ステップS05では、タイミング送信部123が、コントロールサイクルのサイクルタイミング(例えば上記開始タイミング)を、通信サーバ3を介して管轄ローカルコントローラ300に送信する。タイミング送信部123は、サイクルタイミングをマスタタイミングとして他のコントローラ100に送信してもよい。
 次に、コントローラ100はステップS06を実行する。ステップS06では、タイミング送信部123が、管轄ローカルコントローラ300からのセット完了通知を受信しているか否かを確認する。ステップS06において、ローカルコントローラ300からセット完了通知を受信していると判定した場合、コントローラ100はステップS07を実行する。ステップS07では、コントローラ側サイクル生成部122が、コントロールサイクルの開始フラグを「開始可」とする。
 次に、コントローラ100はステップS08を実行する。ステップS06において、管轄ローカルコントローラ300からセット完了通知を受信していないと判定した場合、コントローラ100は、ステップS07を実行することなくステップS08を実行する。ステップS08では、コントローラ側サイクル生成部122が、コントロール側時刻が開始タイミングに達したかを確認する。
 ステップS08において、コントロール側時刻が開始タイミングに達していないと判定した場合、コントローラ100は処理をステップS06に戻す。以後、コントロール側時刻が開始タイミングに達するまで、セット完了通知の受信確認が繰り返される。
 ステップS08において、コントロール側時刻が開始タイミングに達していると判定した場合、コントローラ100は、ステップS09を実行する。ステップS09では、コントローラ側サイクル生成部122が、開始フラグが「開始可」であるか否かを確認する。
 ステップS09において、開始フラグが「開始可」ではないと判定した場合、コントローラ100は処理をステップS03に戻す。これにより、開始タイミングのセット以降の処理が再度実行される。ステップS09において、開始フラグが「開始可」であると判定した場合、コントローラ100はステップS11を実行する。ステップS11では、コントローラ側サイクル生成部122がコントロールサイクルの生成を開始し、タイミング送信部123がコントロールサイクル数のカウントを開始する。また、通信サイクル生成部131が通信サイクルの生成を開始し、サイクルカウンタ132が通信サイクルのカウントを開始する。以上でコントローラ100におけるコントロールサイクルの生成手順が完了する。なお、ステップS11において、通信サイクル生成部131は、コントローラ側サイクル生成部122によるコントロールサイクルの生成開始とずれたタイミングで通信サイクルの生成を開始してもよい。
(ローカルコントローラにおけるコントロールサイクル生成手順)
 図11は、ローカルコントローラ300におけるサイクル生成手順を例示するフローチャートである。図11に示すように、ローカルコントローラ300は、まずステップS31,S32,S33を実行する。ステップS31では、マシン側時刻生成部321が、端末通信部314によるグローバル時刻の受信を待機する。ステップS32では、マシン側時刻生成部321が、端末通信部314が受信したグローバル時刻に同期してマシン側時刻を生成する。ステップS33では、マシン側サイクル生成部322が、対応するコントローラ100が送信したサイクルタイミング(例えば上記開始タイミング)を端末通信部314が受信するのを待機する。
 次に、ローカルコントローラ300はステップS34,S35,S36,S37,S38を実行する。ステップS34では、マシン側サイクル生成部322が、端末通信部314が受信したサイクルタイミングに基づいて、対応するコントローラ100におけるコントロールサイクルの開始タイミングに同期した開始タイミングをセットする。ステップS35では、マシン側サイクル生成部322が、セット完了通知をコントローラ100に送信する。ステップS36では、マシン側サイクル生成部322が、マシン側時刻が開始タイミングに達するのを待機する。ステップS37では、マシン側サイクル生成部322がマシン側コントロールサイクルの生成を開始し、サイクルカウンタ323がコントロールサイクル数のカウントを開始する。ステップS38では、ローカルサイクル生成部325がマシンサイクルの生成を開始し、サイクルカウンタ326がマシンサイクル数のカウントを開始する。以上でローカルコントローラ300におけるコントロールサイクルの生成手順が完了する。
(サイクル生成手順の変形例)
 上述したように、コントローラ100は、有線通信ネットワーク8を介してマスタタイミングを取得し、取得したマスタタイミングと、コントローラ側時刻とに基づいてコントロールサイクルを生成してもよい。図12は、マスタタイミングに基づくサイクル生成手順を示すフローチャートである。図12に示すように、コントローラ100は、まずステップS51,S52,S53を実行する。ステップS51では、コントローラ側時刻生成部121が、同期通信部114によるグローバル時刻の受信を待機する。ステップS52では、コントローラ側時刻生成部121が、同期通信部114が受信したグローバル時刻に同期してコントローラ側時刻を生成する。ステップS53では、コントローラ側サイクル生成部122が、マスタタイミングを同期通信部114が受信するのを待機する。
 次に、コントローラ100はステップS55,S56,S57,S58を実行する。ステップS55では、コントローラ側サイクル生成部122が、マスタタイミングに同期した開始タイミングをセットする。ステップS56では、コントローラ側サイクル生成部122が、セット完了通知を通信コントローラ200に送信する。ステップS57では、コントローラ側サイクル生成部122が、コントローラ側時刻が開始タイミングに達するのを待機する。ステップS58では、コントローラ側サイクル生成部122がコントローラサイクルの生成を開始し、タイミング送信部123がコントロールサイクル数のカウントを開始する。以上でコントローラ100におけるコントロールサイクルの生成手順が完了する。
(マシン制御手順の概要)
 マシン制御手順は、コントローラ100が、コントロールサイクルでモーションプログラムを実行し、管轄マシン4に対するマシン指令を生成することと、マシン指令に第1サイクル情報を付加することと、マシン指令を通信コントローラ200に送信することと、通信コントローラ200が、マシン指令を受信することと、管轄ローカルコントローラ300にマシン指令を送信することと、管轄ローカルコントローラ300が、通信コントローラ200からマシン指令を受信することと、受信したマシン指令を記憶し、当該マシン指令に付加された第1サイクル情報に対応するマシン側コントロールサイクルにおいて当該マシン指令を呼び出すことと、呼び出したマシン指令に基づいて、マシン本体10にモーションを実現させることと、を含む。
 また、マシン制御手順は、ローカルコントローラ300が、マシン本体10が実現したモーションに基づく応答情報を取得することと、応答情報に第2サイクル情報を付加することと、通信コントローラ200に応答情報を送信することと、通信コントローラ200又はコントローラ100が、受信した応答情報を記憶し、当該応答情報に付加された第2サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出すことと、呼び出した当該応答情報に基づいてコントローラ100がモーションプログラムを実行することと、を更に含んでもよい。
 図13は、マシン制御手順の概要を例示するタイミングチャートであり、各チャートの横軸は経過時間を表す。(i)は、モーションモジュール113における情報処理タイミングを示し、(ii)は、同期通信部114における情報処理タイミングを示し、(iii)は、コントローラ側タイミング調整部116における情報処理タイミングを示し、(iv)は、端末通信部314における情報処理タイミングを示し、(v)は、マシン側タイミング調整部315における情報処理タイミングを示し、(vi)は、マシン制御部313における情報処理タイミングを示している。
 図13において、サイクルc11,c12,c13は、コントローラ側サイクル生成部122が順次生成するコントロールサイクルであり、サイクルc21,c22,c23は、サイクルc11,c12,c13に同期して通信サイクル生成部131が順次生成する通信サイクルであり、サイクルc31,c32,c33は、サイクルc11,c12,c13に同期してマシン側サイクル生成部322が順次生成するマシン側コントロールサイクルである。
 例えばモーションモジュール113は、サイクルc11の時刻t10においてモーションプログラムを実行し、マシン指令を生成する。このマシン指令は、時刻t11において同期通信部114により送信され、時刻t12において端末通信部314により受信される。端末通信部314が受信したマシン指令は、時刻t13においてマシン側タイミング調整部315により記憶され、マシン指令に付加された第1サイクル情報に対応するマシン側コントロールサイクル(例えばサイクルc33)において呼び出される。そして、呼び出されたマシン指令に基づいて、サイクルc33の時刻t14において、マシン制御部313がマシン本体10にモーションを実現させる。無線通信に起因して、時刻t12にはゆらぎが生じるが、時刻t12から時刻t14までの余裕により、時刻t12のゆらぎが吸収され、コントロールサイクルに同期した時刻t14でマシン指令が使用される。
 マシン制御部313は、サイクルc31の時刻t110においてマシン本体10が実現したモーションに基づく応答情報を取得する。この応答情報は、時刻t111において端末通信部314により送信され、時刻t112においてコントローラ側タイミング調整部116により記憶され、応答情報に付加された第2サイクル情報に対応するコントロールサイクル(例えばサイクルc13)において呼び出される。呼び出された応答情報は、サイクルc13の直前の時刻t113において同期通信部114により受信情報記憶部112に格納され、受信情報記憶部112に格納された応答情報に基づいて、サイクルc13の時刻t114においてモーションモジュール113がモーションプログラムを実行する。無線通信に起因して、時刻t112にはゆらぎが生じるが、時刻t112から時刻t114までの余裕により、時刻t112のゆらぎが吸収され、コントロールサイクルに同期した時刻t114で応答情報が使用される。
 以下、マシン制御手順を、コントローラ100における制御手順と、ローカルコントローラ300における制御手順とに分けて詳細に例示する。
(コントローラにおける制御手順)
 コントローラ100における制御手順は、データ受信手順と、データ生成・送信手順とを含む。データ受信手順とデータ生成・送信手順とは並行して繰り返し実行される。データ受信手順は、必ずしもコントロールサイクルに同期して実行されなくてもよいが、データ生成・送信手順はコントロールサイクルに同期して実行される。
 図14は、データ受信手順を例示するフローチャートである。図14に示すように、コントローラ100は、まずステップS91,S92を実行する。ステップS91では、同期通信部114が通信コントローラ200からのデータの受信を待機する。ステップS92では、サイクルチェック部133が、データの受信遅れがないか否かを確認する。例えばサイクルチェック部133は、応答情報に付加された第2サイクル情報に基づいて、応答情報の送信遅れがないか否かを確認する。
 ステップS92において、データの受信遅れがあると判定した場合、コントローラ100はステップS93を実行する。ステップS93では、サイクルチェック部133が当該データを破棄する。
 ステップS92において、データの受信遅れはないと判定した場合、コントローラ100はステップS94を実行する。ステップS94では、サイクルチェック部133が、コントローラ側タイミング調整部116に当該データを記憶させる。ステップS93,S94を実行した後、コントローラ100は処理をステップS91に戻す。通信コントローラ200は以上の手順を繰り返す。
 図15は、データ生成・送信手順を例示するフローチャートである。コントローラ100は、まずステップS71,S72,S73,S74,S75を実行する。ステップS71では、モーションモジュール113が、サイクルカウンタ124によるコントロールサイクル数のカウントアップを待機する。ステップS72では、コントローラ側タイミング調整部116が、使用時サイクル数が現在のコントロールサイクル数に対応する受信データ(例えば応答情報及び同期通信データ)を呼び出す。ステップS73では、モーションモジュール113が、モーションプログラムを実行し、管轄マシン4に対するマシン指令を生成する。例えばモーションモジュール113は、受信情報記憶部112が記憶する応答情報に基づく管轄マシン4のモーション実績を算出し、モーション実績をモーション指令に追従させるようにマシン指令を算出する。ステップS74では、付加部125が、マシン指令に第1サイクル情報を付加する。ステップS75では、同期通信部114が、有線通信ネットワーク8を介して、マシン指令を通信サーバ3に送信する。ステップS75の具体的処理内容については後述する。
 次に、コントローラ100はステップS76,S77,S78を実行する。ステップS76では、同期通信部114が、同期通信データを生成する。ステップS77では、付加部125が、同期通信データに第1サイクル情報を付加する。ステップS78では、同期通信部114が、有線通信ネットワーク8を介して、同期通信データを通信サーバ3に送信する。ステップS78の具体的処理内容については後述する。その後、コントローラ100は処理をステップS71に戻す。コントローラ100は、以上の手順を繰り返す。
 図16は、ステップS75,S78におけるデータの送信手順を例示するフローチャートである。図16に示すように、コントローラ100は、まずステップS82を実行する。ステップS82では、サイクルチェック部133が、データの送信遅れがないか否かを確認する。例えばサイクルチェック部133は、マシン指令に付加された第1サイクル情報に基づいて、マシン指令の送信遅れがないか否かを確認し、同期通信データに付加された第1サイクル情報に基づいて、同期通信データの送信遅れがないか否かを確認する。
 ステップS82において、データの送信遅れがあると判定した場合、コントローラ100はステップS83を実行する。ステップS83では、サイクルチェック部133が当該データを破棄する。
 ステップS82において、データの送信遅れがないと判定した場合、コントローラ100はステップS84を実行する。ステップS84では、スイッチ134が、データが管轄マシン4宛てであるか、他のコントローラ100宛てであるかを確認する。
 ステップS84において、データが管轄マシン4宛てであると判定した場合、通信コントローラ200はステップS85を実行する。ステップS85では、スイッチ134が、通信サーバ3を介して管轄マシン4へ当該データを送信する。
 ステップS84において、データが他のコントローラ100宛てであると判定した場合、通信コントローラ200はステップS86を実行する。ステップS86では、スイッチ134が、有線通信ネットワーク8を介して、他のコントローラ100のコントローラ側タイミング調整部116に当該データを送信する。ステップS83,S85,S86を実行した後、コントローラ100は処理をステップS82に戻す。コントローラ100は以上の手順を繰り返す。
(ローカルコントローラにおける制御手順)
 ローカルコントローラ300における制御手順は、マシン指令の受信手順と、タイミング調整手順と、マシン制御手順とを含む。これらは並行して繰り返し実行される。マシン指令の制御手順は、必ずしもコントロールサイクルに同期して実行されなくてもいが、タイミング調整手順はコントロールサイクルに同期して実行される。マシン制御手順は、マシンサイクルに同期して実行される。
 図17は、マシン指令の受信手順を例示するフローチャートである。図17に示すように、ローカルコントローラ300はステップS111,S112を実行する。ステップS111では、端末通信部314が、マシン指令の受信を待機する。ステップS112では、マシン側タイミング調整部315が、マシン指令を記憶する。その後、ローカルコントローラ300は処理をステップS111に戻す。ローカルコントローラ300は以上の手順を繰り返す。
 図18は、タイミング調整手順を例示するフローチャートである。図18に示すように、ローカルコントローラ300は、ステップS121,S122,S123,S124を実行する。ステップS121では、マシン側タイミング調整部315が、サイクルカウンタ323によるコントロールサイクル数のカウントアップを待機する。ステップS122では、マシン側タイミング調整部315が、使用時サイクル数が現在のコントロールサイクル数に対応するマシン指令を呼び出し、指令記憶部311に格納する。これにより、指令記憶部311が記憶するマシン指令が更新される。ステップS123では、付加部324が、応答情報記憶部312が記憶する応答情報に第1サイクル情報を付加する。ステップS124では、端末通信部314が、応答情報を、有線通信ネットワーク8を介して通信コントローラ200に送信する。その後、ローカルコントローラ300は処理をステップS121に戻す。ローカルコントローラ300は以上の手順を繰り返す。
 図19は、マシン制御手順を例示するフローチャートである。図19に示すように、ローカルコントローラ300は、まずステップS131,S132を実行する。ステップS131では、マシン制御部313が、サイクルカウンタ326によるマシンサイクル数のカウントアップを待機する。ステップS132では、サイクルカウンタ326が、指令記憶部311が記憶するマシン指令が更新されたか否かを確認する。
 ステップS132において、指令記憶部311が記憶するマシン指令が更新されたと判定した場合、ローカルコントローラ300はステップS133を実行する。ステップS133では、サイクルカウンタ326が、マシンサイクル数を初期値(例えばゼロ)にリセットする。
 次に、ローカルコントローラ300はステップS134を実行する。ステップS132において、指令記憶部311が記憶するマシン指令が更新されていないと判定した場合、ローカルコントローラ300は、ステップS133を実行することなくステップS134を実行する。ステップS134では、マシン制御部313が、マシン指令と、応答情報記憶部312が記憶する応答情報との偏差を縮小するように駆動データを生成する。
 次に、ローカルコントローラ300はステップS135,S136を実行する。ステップS135では、マシン制御部313が、駆動データに基づいてマシン本体10を駆動する。ステップS136では、マシン制御部313が、マシン本体10が実現したモーションに基づく応答情報を取得し、応答情報記憶部312に格納する。その後、ローカルコントローラ300は処理をステップS131に戻す。ローカルコントローラ300は、以上の手順を繰り返す。
〔本実施形態の効果〕
 以上に説明したように、マシン制御システム1は、現実空間上に構成され、それぞれマシン指令に応じてモーションを実現する1以上のマシン4と、仮想空間上に実装され、1以上のマシン4をそれぞれ制御する1以上のコントローラ100と、1以上のコントローラ100と有線通信ネットワーク8を介して通信し、1以上のマシン4と無線通信ネットワーク7を介して通信する通信サーバ3と、を備え、1以上のコントローラ100のそれぞれは、コントロールサイクルでモーションプログラムを実行し、対応するマシン4に対するマシン指令を生成するモーションモジュール113と、マシン指令に第1サイクル情報を付加する付加部125と、マシン指令を通信サーバ3に送信する同期通信部114と、を有し、1以上のマシン4のそれぞれは、通信サーバ3からマシン指令を受信する端末通信部314と、端末通信部314が受信したマシン指令を記憶し、当該マシン指令に付加された第1サイクル情報に対応するマシン側コントロールサイクルにおいて当該マシン指令を呼び出すマシン側タイミング調整部315と、を有する。
 第5世代移動通信システム(5G)の実用化等により、高速無線通信が可能となったため、無線通信を介したマシン制御の実現可能性も高まっている。マシン制御においては、モーションプログラムの実行によるマシン指令の生成と、マシン指令に応じたマシンの制御とを所定のコントロールサイクルで繰り返す必要がある。生成されたマシン指令が無線通信ネットワークを介して送信される場合、無線通信に起因して、マシン側におけるマシン指令の受信タイミングのゆらぎが拡大し、マシン側においてマシン指令をコントロールサイクルで受信するのが困難になる可能性がある。本マシン制御システム1によれば、通信サーバ3から無線通信ネットワーク7を介して送信されたマシン指令がマシン4側でバッファリングされ、第1サイクル情報に対応するマシン側コントロールサイクルにおいて呼び出される。このように、マシン指令をその使用タイミングまでバッファリングする機能によって、コントローラ100側からのマシン指令の送信を前倒し、マシン4におけるマシン指令の受信タイミングから当該マシン指令の使用タイミングまでの期間に余裕を持たせることができる。この余裕により、無線通信に起因して拡大した受信タイミングのゆらぎを吸収し、バッファしたマシン指令をマシン側コントロールサイクルで呼び出すことができる。このため、無線通信を介してマシン指令が送信されるシステムにおいて、モーションプログラムの実行によるマシン指令の生成と、マシン指令に応じたマシンの制御とをコントロールサイクルで繰り返すことが可能となる。従って、無線通信を介したマシン制御の実現に有効である。
 1以上のマシン4のそれぞれは、モーションを実現するマシン本体10と、マシン側タイミング調整部315が呼び出したマシン指令に基づいて、マシン本体10にモーションを実現させ、マシン本体10が実現したモーションに基づく応答情報を取得するマシン制御部313と、応答情報に第2サイクル情報を付加する付加部324と、を更に有し、端末通信部314は、応答情報を通信サーバ3に送信し、マシン制御システム1は、1以上のコントローラ100と通信サーバ3との間において、1以上のマシン4から受信した応答情報を記憶し、当該応答情報に付加された第2サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出すコントローラ側タイミング調整部116,213を更に備え、モーションモジュール113は、コントローラ側タイミング調整部116,213が呼び出した応答情報に基づいて、モーションプログラムを実行してもよい。この場合、マシン4から無線通信ネットワークを介して送信された応答情報がコントローラ100側でバッファリングされ、第1サイクル情報に対応するコントロールサイクルにおいて呼び出される。このように、応答情報をその使用タイミングまでバッファリングする機能によって、マシン4側からの応答情報の送信を前倒し、コントローラ100側における応答情報の受信タイミングから当該応答情報の使用タイミングまでの期間に余裕を持たせることができる。この余裕により、無線通信に起因して拡大した受信タイミングのゆらぎを吸収し、バッファした応答情報をコントロールサイクルで呼び出すことができる。このため、無線通信を介して応答情報が送信されるシステムにおいて、応答情報の受信をコントロールサイクルで繰り返すことが可能となる。従って、無線通信を介したマシン制御の実現に更に有効である。
 1以上のコントローラ100のそれぞれは、コントロールサイクルのサイクルタイミングを対応するマシン4に送信するタイミング送信部123を更に有し、1以上のマシン4のそれぞれは、サイクルタイミングに基づいて、対応するコントローラ100におけるコントロールサイクルに同期したマシン側コントロールサイクルを生成するマシン側サイクル生成部322を更に有してもよい。この場合、サイクルタイミングに基づく同期処理の後は、コントローラ100におけるコントロールサイクルに同期したマシン側コントロールサイクルがマシン4において生成される。このため、無線通信の負担を抑えつつ、マシン4におけるマシン側コントロールサイクルをコントローラにおけるコントロールサイクルに容易に同期させることができる。
 1以上のコントローラ100のそれぞれは、時刻サーバ5が生成した時刻に同期して、コントローラ側時刻を生成するコントローラ側時刻生成部121と、コントローラ側時刻に基づいて、コントロールサイクルを生成するコントローラ側サイクル生成部122と、を更に有し、1以上のマシン4のそれぞれは、時刻サーバが生成した時刻に同期して、マシン側時刻を生成するマシン側時刻生成部321を更に有し、マシン側サイクル生成部322は、マシン側時刻生成部321が生成した時刻と、サイクルタイミングとに基づいて、マシン側コントロールサイクルを生成してもよい。この場合、コントローラ100及びマシン4における時刻合わせを予め行っておくことで、マシン4におけるサイクルタイミングの受信タイミングにゆらぎが生じた場合であっても、マシン側時刻に基づいて、マシン4におけるマシン側コントロールサイクルを適切なタイミングで生成することができる。
 タイミング送信部123は、対応するマシン4のマシン側サイクル生成部322がマシン側コントロールサイクルの生成に失敗した場合、先に送信したサイクルタイミングよりも後のサイクルタイミングを当該マシン4に再度送信してもよい。この場合、より高い信頼性で、マシン4におけるマシン側コントロールサイクルをコントローラ100におけるコントロールサイクルに同期させることができる。
 マシン制御部313は、マシン側タイミング調整部315が呼び出したマシン指令に基づいて、コントロールサイクルよりも短いサイクル長のマシンサイクルでマシン本体10を制御してもよい。この場合、コントロールサイクルによるマシン指令の呼び出しの定周期性と、より細分化されたマシンサイクルによるマシンの適切な制御との両立を図ることができる。
 マシン制御システム1は、1以上のコントローラとして複数のコントローラ100を備え、複数のコントローラ100のそれぞれがコントローラ側タイミング調整部116を有してもよい。この場合、複数のコントローラ100それぞれがと管轄マシン4との間で同期通信が可能になる一方で、同一のネットワークを利用するコントローラ100とマシン4の複数の対間においては、コントロールサイクルを同期させる必要性が低くなり、システムを容易に構成することができる。
 複数のコントローラ100における一のコントローラ100の同期通信部114が送信するデータが対応するマシン宛てであれば、通信サーバ3を介して、対応するマシン4へ当該データを送信し、データが他のコントローラ100宛てであれば、有線通信ネットワーク8を介して、他のコントローラ100のコントローラ側タイミング調整部116へ当該データを送信するスイッチ134を更に備えてもよい。この場合、コントローラ100とマシン4との間の同期通信と、コントローラ100間の同期通信とに同期通信部114を適切に使い分けることができる。
 一のコントローラ100は、他のコントローラ100を含む他のノードに対する非同期通信データを、有線通信ネットワーク8を介して他のノードに送信する非同期通信部115を更に有してもよい。この場合、同期通信用の通信リソースを節約することができる。
 複数のコントローラ100の少なくとも一つは、有線通信ネットワーク8を介して受信したマスタタイミングに基づいて、コントロールサイクルを生成するコントローラ側サイクル生成部122を更に有してもよい。この場合、コントローラ100間においてコントロールサイクルを容易に同期させることができる。
 通信サーバ3は、マスタタイミングを生成するタイミングマスタ224を有し、コントローラ側サイクル生成部122は、タイミングマスタ224からマスタタイミングを受信してもよい。この場合、コントロールサイクルを同期させるべき複数のコントローラ100のいずれにおいても、通信サーバ3のタイミングマスタ224が生成したタイミングマスタに基づいてコントロールサイクルを生成する同一の設定を採用することができる。このため、システムへのコントローラ100の追加・削除が容易である。
 1以上のコントローラ100と通信サーバ3との間において、マシン指令に含まれる第1サイクル情報に基づいて、当該マシン指令の送信遅れを検出するサイクルチェック部133,225を更に備えてもよい。この場合、コントロールサイクルに同期したマシン指令の送信の信頼性を向上させることができる。
 サイクルチェック部133は、マシン指令の送信遅れを検出した場合に、当該マシン指令の送信をキャンセルしてもよい。この場合、コントロールサイクルでの呼び出しに間に合わないマシン指令の送信をキャンセルすることで、通信サーバ3における無線通信リソースを節約することができる。
 1以上のコントローラ100と通信サーバ3との間において、応答情報に含まれる第2サイクル情報に基づいて、当該応答情報の受信遅れを検出するサイクルチェック部133,225を更に備えてもよい。この場合、コントロールサイクルでの呼び出しに間に合わない応答情報を未然に検知し、例えば一つ前に呼び出された応答情報を代用して応答情報の欠落を防ぐ等の対処が可能となる。
 1以上のコントローラ100と通信サーバ3との間において、1以上のコントローラ100の少なくともいずれかのコントロールサイクルに同期した通信サイクルを生成する通信サイクル生成部131,222を更に備え、サイクルチェック部133,225は、マシン指令に付加された第1サイクル情報と、通信サイクルのサイクル情報とに基づいて、マシン指令の送信遅れを検出してもよい。この場合、サイクルチェック部133,225による送信遅れの検出を容易に行うことができる。
〔マシン制御システムの変形例〕
 マシン制御システム1は、少なくとも、1以上のマシン4と、1以上のマシン4と通信する1以上のサーバが有する仮想空間上に実装され、1以上のマシン4をそれぞれ制御する1以上のコントローラ100と、を備える限りにおいて、マシン制御システム1は適宜変更可能である。例えば図20に示すように、無線通信ネットワーク7を有線通信ネットワーク7Aに置き換えてもよい。この場合、図5、図7、及び図8において、通信コントローラ200とローカルコントローラ300との間に介在する無線通信基地局201及び無線通信端末301は不要となる。また、図9において、時刻pt5,pt13で実行される無線通信端末301の処理も不要となる。図21に示すように、通信サーバ3を、例えばスイッチングハブ等の通信ハブ3Aに置き換えてもよい。この場合、通信サーバ3が有していたタイミングマスタ224が、通信サーバ3以外の1以上のサーバ(例えば、コントローラサーバ2、時刻サーバ5、又はアプリサーバ6)のいずれに設けられていてもよい。
 図20及び図21のように、コントローラ100とマシン4との間の通信が無線通信を含まない場合においても、ストレージ193は、少なくともコントロールサイクルでモーションプログラムを実行し、対応するマシンに対するマシン指令を生成することと、対応するマシン4において、いずれのマシン側コントロールサイクルでマシン指令を呼び出すかを指定する第1サイクル情報をマシン指令に付加することと、第1サイクル情報が付加されたマシン指令を対応するマシン4に送信することと、を実行するコントローラ100を、対応するマシン4と通信するコントローラサーバ2の仮想空間上に実装させるプログラムを記憶する。ストレージ193は、対応するマシン4が第2サイクル情報を付加した応答情報を、対応するマシン4から受信することと、受信した応答情報を記憶し、当該応答情報に付加された第2サイクル情報に対応するコントロールサイクルにおいて当該応答情報を呼び出すことと、を更に実行し、呼び出した応答情報に基づいてモーションプログラムを実行し、マシン指令を生成するコントローラをコントローラサーバ2の仮想空間上に実装させるプログラムを記憶していてもよい。
 以上、実施形態について説明したが、本開示は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変更が可能である。
 1…マシン制御システム、2…コントローラサーバ、4…マシン、3…通信サーバ、100…コントローラ、8…有線通信ネットワーク、7…無線通信ネットワーク、10…マシン本体、113…モーションモジュール、114…同期通信部、115…非同期通信部、121…コントローラ側時刻生成部、122…コントローラ側サイクル生成部、123…タイミング送信部、5…時刻サーバ、125…付加部、211…コントローラ側通信部、212…マシン側通信部、116,213…コントローラ側タイミング調整部、131,222…通信サイクル生成部、224…タイミングマスタ、133,225…サイクルチェック部、134,226…スイッチ、314…端末通信部、313…マシン制御部、315…マシン側タイミング調整部、321…マシン側時刻生成部、322…マシン側サイクル生成部、324…付加部。

Claims (23)

  1.  現実空間上に構成され、それぞれマシン指令に応じてモーションを実現する1以上のマシンと、
     前記1以上のマシンと通信する1以上のサーバが有する仮想空間上に実装され、前記1以上のマシンをそれぞれ制御する1以上のコントローラと、
    を備え、
     前記1以上のコントローラのそれぞれは、
      コントロールサイクルでモーションプログラムを実行し、対応するマシンに対するマシン指令を生成するモーションモジュールと、
      前記マシン指令に第1サイクル情報を付加する付加部と、
      前記マシン指令を前記対応するマシンに送信する同期通信部と、
     を有し、
     前記1以上のマシンのそれぞれは、
      前記1以上のサーバから前記マシン指令を受信する端末通信部と、
      前記端末通信部が受信した前記マシン指令を記憶し、当該マシン指令に付加された第1サイクル情報に対応するマシン側コントロールサイクルで当該マシン指令を呼び出すマシン側タイミング調整部と、
     を有する、マシン制御システム。
  2.  前記1以上のマシンのそれぞれは、
      モーションを実現する本体と、
      前記マシン側タイミング調整部が呼び出したマシン指令に基づいて、前記本体にモーションを実現させ、前記本体が実現したモーションに基づく応答情報を取得するマシン制御部と、
      前記応答情報に第2サイクル情報を付加する付加部と、
     を更に有し、
     前記端末通信部は、前記応答情報を前記1以上のサーバに送信し、
     前記1以上のサーバは、前記1以上のマシンから受信した前記応答情報を記憶し、当該応答情報に付加された第2サイクル情報に対応する前記コントロールサイクルにおいて当該応答情報を呼び出すコントローラ側タイミング調整部を有し、
     前記モーションモジュールは、前記コントローラ側タイミング調整部が呼び出した応答情報に基づいて、前記モーションプログラムを実行する、請求項1記載のマシン制御システム。
  3.  前記1以上のコントローラのそれぞれは、
      前記コントロールサイクルのサイクルタイミングを前記対応するマシンに送信するタイミング送信部を更に有し、
     前記1以上のマシンのそれぞれは、
      前記サイクルタイミングに基づいて、対応するコントローラにおける前記コントロールサイクルに同期した前記マシン側コントロールサイクルを生成するマシン側サイクル生成部を更に有する、請求項1又は2記載のマシン制御システム。
  4.  前記1以上のコントローラのそれぞれは、
      時刻サーバが生成した時刻に同期して、コントローラ側時刻を生成するコントローラ側時刻生成部と、
      前記コントローラ側時刻に基づいて、前記コントロールサイクルを生成するコントローラ側サイクル生成部と、
     を更に有し、
     前記1以上のマシンのそれぞれは、
      前記時刻サーバが生成した時刻に同期して、マシン側時刻を生成するマシン側時刻生成部を更に有し、
     前記マシン側サイクル生成部は、前記マシン側時刻生成部が生成した時刻と、前記サイクルタイミングとに基づいて、前記マシン側コントロールサイクルを生成する、請求項3記載のマシン制御システム。
  5.  前記タイミング送信部は、前記対応するマシンの前記マシン側サイクル生成部が前記マシン側コントロールサイクルの生成に失敗した場合、先に送信したサイクルタイミングよりも後のサイクルタイミングを前記対応するマシンに再度送信する、請求項4記載のマシン制御システム。
  6.  前記マシン制御部は、前記マシン側タイミング調整部が呼び出したマシン指令に基づいて、前記マシン側コントロールサイクルよりも短いサイクル長のマシンサイクルで前記本体を制御する、請求項2記載のマシン制御システム。
  7.  前記マシン制御システムは、前記1以上のコントローラとして複数のコントローラを備え、
     前記複数のコントローラのそれぞれが前記コントローラ側タイミング調整部を有する、請求項2記載のマシン制御システム。
  8.  前記1以上のサーバは、前記複数のコントローラにおける一のコントローラの前記同期通信部が送信するデータが前記対応するマシン宛てであれば、前記対応するマシンへ当該データを送信し、前記データが他のコントローラ宛てであれば、前記他のコントローラの前記コントローラ側タイミング調整部へ当該データを送信するスイッチを更に有する、請求項7記載のマシン制御システム。
  9.  前記一のコントローラは、
      前記他のコントローラを含む他のノードに対する非同期通信データを、前記他のノードに送信する非同期通信部を更に有する、請求項8記載のマシン制御システム。
  10.  前記複数のコントローラの少なくとも一つは、マスタタイミングに基づいて、前記コントロールサイクルを生成するコントローラ側サイクル生成部を更に有する、請求項7~9のいずれか一項記載のマシン制御システム。
  11.  前記1以上のサーバは、前記マスタタイミングを生成するタイミングマスタを更に有する、請求項10記載のマシン制御システム。
  12.  前記1以上のサーバは、前記マシン指令に含まれる前記第1サイクル情報に基づいて、当該マシン指令の送信遅れを検出するサイクルチェック部を更に備える、請求項1~11のいずれか一項記載のマシン制御システム。
  13.  前記サイクルチェック部は、前記マシン指令の送信遅れを検出した場合に、当該マシン指令の送信をキャンセルする、請求項12記載のマシン制御システム。
  14.  前記1以上のサーバは、前記応答情報に含まれる前記第2サイクル情報に基づいて、当該応答情報の受信遅れを検出するサイクルチェック部を更に備える、請求項2記載のマシン制御システム。
  15.  前記1以上のサーバは、前記1以上のコントローラの少なくともいずれかのコントロールサイクルに同期した通信サイクルを生成する通信サイクル生成部を更に備え、
     前記サイクルチェック部は、前記マシン指令に付加された前記第1サイクル情報と、前記通信サイクルのサイクル情報とに基づいて、前記マシン指令の送信遅れを検出する、請求項12又は13記載のマシン制御システム。
  16.  コントロールサイクルでモーションプログラムを実行し、対応するマシンに対するマシン指令を生成することと、
     前記対応するマシンにおいて、いずれのマシン側コントロールサイクルで前記マシン指令を呼び出すかを指定する第1サイクル情報を前記マシン指令に付加することと、
     前記第1サイクル情報が付加された前記マシン指令を前記対応するマシンに送信することと、を実行するコントローラを、前記対応するマシンと通信するサーバの仮想空間上に実装させるプログラム。
  17.  前記対応するマシンが第2サイクル情報を付加した応答情報を、前記対応するマシンから受信することと、
     受信した応答情報を記憶し、当該応答情報に付加された第2サイクル情報に対応する前記コントロールサイクルにおいて当該応答情報を呼び出すことと、を更に実行し、
     呼び出した応答情報に基づいてモーションプログラムを実行し、マシン指令を生成するコントローラを前記サーバの仮想空間上に実装させる、請求項16記載のプログラム。
  18.  モーションを実現する本体と、
     コントローラが実装された仮想空間を構成するサーバと通信し、前記コントローラがサイクル情報を付加したマシン指令を前記サーバから受信する端末通信部と、
     前記端末通信部が受信したマシン指令を記憶し、当該マシン指令に付加されたサイクル情報に対応するコントロールサイクルにおいて当該マシン指令を呼び出すマシン側タイミング調整部と、
     前記マシン側タイミング調整部が呼び出したマシン指令に基づいて、前記本体にモーションを実現させるマシン制御部と、を備えるマシン。
  19.  第1処理を繰り返す第1デバイスと、
     第1デバイスと通信し、第2処理を繰り返す第2デバイスと、
    を備え、
     前記第1デバイスは、
      前記第1処理により第1情報を生成する第1処理モジュールと、
      前記第1情報に第1サイクル情報を付加する第1付加部と、
      前記第1情報を第2デバイスに送信する第1通信部と、
     を有し、
     前記第2デバイスは、
      前記第1デバイスから前記第1情報を受信する第2通信部と、
      前記第2通信部が受信した前記第1情報を記憶し、当該第1情報に付加された第1サイクル情報に対応するサイクルの前記第2処理において当該第1情報を呼び出すタイミング調整部と、
      前記タイミング調整部により呼び出された前記第1情報に基づいて前記第2処理を実行する第2処理モジュールと、
     を有する、システム。
  20.  前記第2処理モジュールは、前記第2処理により第2情報を生成し、
     前記第2デバイスは、前記第2情報に第2サイクル情報を付加する第2付加部を更に有し、
     前記第2通信部は、前記第2情報を前記第1デバイスに送信し、
     前記第1通信部は、前記第2情報を前記第2デバイスから受信し、
     前記第1デバイスは、前記第1通信部が受信した前記第2情報を記憶し、当該第2情報に付加された第2サイクル情報に対応するサイクルの前記第1処理において当該第2情報を呼び出す第1タイミング調整部を更に有し、
     前記第1処理モジュールは、前記第1タイミング調整部により呼び出された前記第2情報に基づいて前記第1処理を実行する、請求項19記載のシステム。
  21.  第1処理により第1情報を生成することを繰り返す第1処理モジュールと、
     第2処理を繰り返す第2デバイスにおいて、いずれのサイクルの前記第2処理において前記第1情報を呼び出すかを指定する第1サイクル情報を当該第1情報に付加する第1付加部と、
     前記第1付加部により第1サイクル情報が付加された前記第1情報を前記第2デバイスに送信する通信部と、を備えるデバイス。
  22.  前記通信部は、前記第2デバイスが前記第2処理により生成し、第2サイクル情報を付加した第2情報を、前記第2デバイスから受信し、
     前記デバイスは、
     前記通信部が受信した前記第2情報を記憶し、当該第2情報に付加された第2サイクル情報に対応するサイクルの第1処理において当該第2情報を呼び出す第1タイミング調整部を更に備え、
     前記第1処理モジュールは、前記第1タイミング調整部により呼び出された前記第2情報に基づいて前記第1処理を実行し、前記第1情報を生成する、請求項21記載のデバイス。
  23.  第1処理を繰り返す第1デバイスが、第1処理により生成し、サイクル情報を付加した第1情報を、前記第1デバイスから受信する通信部と、
     前記通信部が受信した前記第1情報を記憶し、当該第1情報に付加されたサイクル情報に対応するサイクルの第2処理において当該第1情報を呼び出すタイミング調整部と、
     前記タイミング調整部により呼び出された前記第1情報に基づいて、前記第2処理を実行する処理モジュールと、を備えるデバイス。
PCT/JP2020/042331 2019-05-13 2020-11-12 マシン制御システム、プログラム、マシン、システム及びデバイス WO2021229842A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2021506773A JP6915759B1 (ja) 2019-05-13 2020-11-12 マシン制御システム、プログラム、マシン、システム及びデバイス
KR1020227042649A KR20230006582A (ko) 2020-05-13 2020-11-12 머신 제어 시스템, 프로그램, 머신, 시스템 및 디바이스
CN202080100688.4A CN115516870A (zh) 2020-05-13 2020-11-12 机器控制系统、程序、机器、系统以及设备
EP20935131.1A EP4138402A4 (en) 2020-05-13 2020-11-12 MACHINE CONTROL SYSTEM, PROGRAM, MACHINE, SYSTEM AND DEVICE
US18/053,763 US20230067306A1 (en) 2019-05-13 2022-11-09 Machine control via synchronous communication

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201962846759P 2019-05-13 2019-05-13
US201962858341P 2019-06-07 2019-06-07
US201962866622P 2019-06-26 2019-06-26
US201962871742P 2019-07-09 2019-07-09
US201962879528P 2019-07-28 2019-07-28
PCT/JP2020/019141 WO2020230824A1 (ja) 2019-05-13 2020-05-13 マシン制御システム、プログラム、マシン、及び通信方法
JPPCT/JP2020/019141 2020-05-13

Related Child Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/019141 Continuation WO2020230824A1 (ja) 2019-05-13 2020-05-13 マシン制御システム、プログラム、マシン、及び通信方法

Publications (1)

Publication Number Publication Date
WO2021229842A1 true WO2021229842A1 (ja) 2021-11-18

Family

ID=73288875

Family Applications (2)

Application Number Title Priority Date Filing Date
PCT/JP2020/019141 WO2020230824A1 (ja) 2019-05-13 2020-05-13 マシン制御システム、プログラム、マシン、及び通信方法
PCT/JP2020/042331 WO2021229842A1 (ja) 2019-05-13 2020-11-12 マシン制御システム、プログラム、マシン、システム及びデバイス

Family Applications Before (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/019141 WO2020230824A1 (ja) 2019-05-13 2020-05-13 マシン制御システム、プログラム、マシン、及び通信方法

Country Status (6)

Country Link
US (1) US12030174B2 (ja)
EP (1) EP3968653A4 (ja)
JP (2) JP6916399B2 (ja)
KR (1) KR102517023B1 (ja)
CN (1) CN113812168B (ja)
WO (2) WO2020230824A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2023148956A1 (ja) * 2022-02-07 2023-08-10
CN118696567A (zh) * 2022-02-22 2024-09-24 株式会社安川电机 通信系统以及通信终端
WO2023167324A1 (ja) * 2022-03-03 2023-09-07 株式会社安川電機 生産システム及び再現方法
JP7514887B2 (ja) 2022-08-01 2024-07-11 株式会社安川電機 産業システム、産業機械及び制御方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006312237A (ja) * 2005-05-06 2006-11-16 Fanuc Robotics America Inc 少なくとも2本のロボットアームの同期化システムおよびその制御方法
JP2011227902A (ja) * 2010-04-21 2011-11-10 General Electric Co <Ge> 外部制御システムとフィールドバス装置を同期させるシステムおよび方法
JP2019067045A (ja) * 2017-09-29 2019-04-25 オムロン株式会社 制御装置
JP2019209454A (ja) 2018-06-08 2019-12-12 株式会社安川電機 加工システム及び制御方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007123952A (ja) * 2005-10-24 2007-05-17 Mitsubishi Electric Corp 無線lanシステム
US8676239B2 (en) 2009-02-23 2014-03-18 Mitsubishi Electric Corporation Wireless communication system, wireless communication device, and wireless communication method
JP2010287959A (ja) * 2009-06-09 2010-12-24 Yaskawa Electric Corp 同期通信システム、通信装置および同期通信方法
KR20130058893A (ko) * 2011-11-28 2013-06-05 서인수 무선 통신을 이용한 제어 시스템
JP6594268B2 (ja) * 2016-07-25 2019-10-23 三菱電機株式会社 モーション制御システム
JP6705971B2 (ja) * 2017-03-16 2020-06-03 株式会社安川電機 コントロールシステム、コントローラ及び制御方法
JP6946909B2 (ja) * 2017-09-29 2021-10-13 オムロン株式会社 制御システムおよび制御装置
JP7095262B2 (ja) 2017-11-10 2022-07-05 株式会社安川電機 プログラミング支援装置、ロボットシステム及びプログラム生成方法
CN108015768A (zh) * 2017-12-04 2018-05-11 航天科工智能机器人有限责任公司 一种轮式移动平台的嵌入式控制系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006312237A (ja) * 2005-05-06 2006-11-16 Fanuc Robotics America Inc 少なくとも2本のロボットアームの同期化システムおよびその制御方法
JP2011227902A (ja) * 2010-04-21 2011-11-10 General Electric Co <Ge> 外部制御システムとフィールドバス装置を同期させるシステムおよび方法
JP2019067045A (ja) * 2017-09-29 2019-04-25 オムロン株式会社 制御装置
JP2019209454A (ja) 2018-06-08 2019-12-12 株式会社安川電機 加工システム及び制御方法

Also Published As

Publication number Publication date
WO2020230824A1 (ja) 2020-11-19
EP3968653A1 (en) 2022-03-16
CN113812168A (zh) 2021-12-17
JPWO2020230824A1 (ja) 2021-05-20
KR102517023B1 (ko) 2023-03-31
KR20220006567A (ko) 2022-01-17
JP6916399B2 (ja) 2021-08-11
US12030174B2 (en) 2024-07-09
JP7498684B2 (ja) 2024-06-12
JP2021180507A (ja) 2021-11-18
CN113812168B (zh) 2024-10-01
EP3968653A4 (en) 2023-05-24
US20220080601A1 (en) 2022-03-17

Similar Documents

Publication Publication Date Title
WO2021229842A1 (ja) マシン制御システム、プログラム、マシン、システム及びデバイス
KR101494117B1 (ko) 전동기 제어 시스템 및 통신 방법
US10071480B2 (en) Real-time interference check system of machine tool and robot
JP2018097661A (ja) 生産システム、制御装置、および制御方法
KR20130095189A (ko) 자동화 워크셀 제어 방법
US20200189100A1 (en) Technique for Providing Reliable Control in a Cloud Robotics System
KR20130027523A (ko) 자동화 워크셀 제어 방법
WO2020147949A1 (en) System for emulating remote control of a physical robot
JP7494155B2 (ja) 生産システム、セルコントローラ、ロボットコントローラ及び制御方法
JP6915759B1 (ja) マシン制御システム、プログラム、マシン、システム及びデバイス
WO2021033358A1 (ja) 制御システム、制御装置およびプログラム
JP2005014150A (ja) ロボットシステム
EP4138402A1 (en) Machine control system, program, machine, system, and device
JP2023063209A (ja) 多軸サーボ制御システム
US20240243894A1 (en) Wireless communication of transmission data by attribute
JP7400104B2 (ja) シミュレーション装置、制御システム、シミュレーション方法及びプログラム
WO2024018900A1 (ja) 機器の制御装置、制御システム、及び制御方法
US20220331951A1 (en) Robot control system, lower-level control apparatus, and control method for robot
US20240142954A1 (en) Communication system with ordered command data sets
CN116633983A (zh) 用于多机器人协同作业的通信方法、装置和通信中间件

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 2021506773

Country of ref document: JP

Kind code of ref document: A

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20935131

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2020935131

Country of ref document: EP

Effective date: 20221116

ENP Entry into the national phase

Ref document number: 20227042649

Country of ref document: KR

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE