Simulation device, system, program, and implementation method
The simulation device addresses the challenge of accurately simulating industrial controllers by using virtual hardware and real-time systems on non-real-time operating systems, ensuring precise replication of hardware capabilities and synchronization, thus improving digital twin accuracy and anomaly detection.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- YASKAWA DENKI KK
- Filing Date
- 2024-11-07
- Publication Date
- 2026-05-15
AI Technical Summary
Existing simulation technologies struggle to accurately simulate the operation of industrial controllers due to the constraints imposed by hardware performance, leading to inconsistencies in time-based operations and synchronization, which affects the accuracy of digital twins and anomaly detection in production environments.
A simulation device is developed that implements virtual hardware and real-time operating systems on a non-real-time operating system, allowing for the accurate simulation of industrial controllers by reproducing their hardware capabilities and synchronization processes, including the use of virtual controllers with timing control units and communication units to mimic interrupt signals and delays.
This approach enhances the accuracy of simulations, improving the precision of digital twins and anomaly detection by accurately reflecting the real-world operations and synchronization of industrial controllers, thereby enhancing the reliability of production line studies and processes.
Smart Images

Figure JP2024039641_15052026_PF_FP_ABST
Abstract
Description
Simulation apparatus, system, program, and implementation method
[0001] The present invention relates to a simulation device, system, program, and implementation method.
[0002] Patent Document 1 discloses a simulation apparatus comprising: a first simulator for simulating control of a first machine by a first controller; a second simulator for simulating control of a second machine by a second controller; and a simulation manager that controls the progress of the simulation by the first simulator and the progress of the simulation by the second simulator in accordance with the relationship between the progress of control by the first controller and the progress of control by the second controller. Patent Document 2 discloses a real-time device control system comprising a general-purpose OS (GPOS (General Purpose Operating System)), a real-time OS (RTOS (Real-Time Operating System)) that operates on the GPOS and drives the device control system, and one or more devices connected to the RTOS and controlled in hard real time, wherein the device control system provides a user interface with the GPOS, performs real-time device control processing according to interface input or time synchronization, and processes communication with one or more devices according to the control processing. Patent Document 3 discloses a technology that enables the coexistence of real-time applications and PC applications without changing the PC-OS by providing real-time processing in the position of an input / output device driver in a personal computer operating system (PC-OS) that does not guarantee real-time performance. [Prior Art Documents] [Patent Documents] [Patent Document 1] International Publication No. 2021 / 261018 [Patent Document 2] Japanese Patent Publication No. 2018-535468 [Patent Document 3] Japanese Patent Publication No. 10-021094 General disclosure
[0003] According to an embodiment of the present invention, a simulation device is provided. The simulation device may simulate the processing by a controller that controls an industrial machine. The simulation device may include a non-real-time OS that does not guarantee real-time performance. The simulation device may include a virtual controller that virtually reproduces the operation of the controller. The virtual controller may have virtual hardware implemented on the non-real-time OS. The virtual controller may have a real-time OS implemented on the virtual hardware. The virtual controller may have virtual controller control implemented on the real-time OS and simulating the processing by the controller that controls the industrial machine.
[0004] In the simulation device, the virtual controller may have the virtual hardware that virtually realizes at least a part of the hardware of the controller to be simulated. The industrial machine and the controller may be used for product production, and the virtual controller may have the virtual hardware that virtually realizes at least any one of a processor, a network unit, and a storage of the controller.
[0005] Any of the simulation devices may include a plurality of virtual controllers each corresponding to one of the plurality of controllers and each having the virtual hardware, the real-time OS, and the virtual controller control function. At least two of the plurality of virtual controllers may be implemented on different non-real-time OSs.
[0006] In any of the simulation devices, the plurality of controllers may be capable of performing a cooperative operation on an object by a plurality of the industrial machines to be controlled, and the simulation device may virtually realize the cooperative operation by the plurality of controllers by the plurality of virtual controllers.
[0007] In any of the simulation devices described above, each of the plurality of virtual controllers may further have a timing control unit that, upon receiving an interrupt notification, causes the virtual controller control function to start the processing assigned to the interrupt. If the timing control unit receives an interrupt notification and causes the virtual controller control function to start the processing assigned to the first interrupt, and then receives an interrupt notification for the next interrupt, it may confirm that the processing assigned to the first interrupt has been completed, and after confirmation is complete, it may cause the virtual controller control function to start the processing assigned to the next interrupt. The simulation device may include a communication unit that virtually simulates interrupt signals transmitted via hardwires between the plurality of controllers and transmits interrupt notifications to the plurality of timing control units. If the simulation device transmits an interrupt notification to one of the plurality of timing control units and then transmits an interrupt notification for the next interrupt, it may include a communication unit that confirms that the processing assigned to the first interrupt has been completed, and after confirmation is complete, transmits an interrupt notification for the next interrupt to the first timing control unit. The timing control unit may, in response to the generation of an interrupt notification by the virtual controller control function of the virtual controller having the timing control unit, send the interrupt notification to the timing control unit of the virtual controller that is the synchronization partner among the plurality of virtual controllers.
[0008] Any of the simulation devices described above may further include a main control unit that transmits interrupt notifications to a plurality of timing control units, and the main control unit may include virtual hardware implemented on the non-real-time OS, a real-time OS implemented on the virtual hardware, and a main control function implemented on the real-time OS.
[0009] Any of the simulation devices described above may further include an information acquisition unit that acquires controller information including the type of controller to be simulated, and an implementation unit that implements the virtual hardware corresponding to the controller based on the controller information acquired by the information acquisition unit.
[0010] According to one embodiment of the present invention, a system is provided comprising the simulation device and the controller.
[0011] According to one embodiment of the present invention, a program is provided for a computer having a non-real-time OS that does not guarantee real-time performance, which includes the steps of: implementing virtual hardware on the non-real-time OS; implementing a real-time OS on the virtual hardware; and implementing a virtual controller control function on the real-time OS that simulates processing by a controller that controls industrial machinery.
[0012] According to one embodiment of the present invention, an implementation method is provided that is executed by a computer having a non-real-time OS that does not guarantee real-time performance. The implementation method may include a step of implementing virtual hardware on the non-real-time OS. The implementation method may include a step of implementing a real-time OS on the virtual hardware. The implementation method may include a step of implementing a virtual controller control function on the real-time OS that simulates processing by a controller that controls industrial machinery.
[0013] It should be noted that the above summary of the invention does not enumerate all the necessary features of the present invention. Furthermore, subcombinations of these features may also constitute an invention.
[0014] A schematic example of system 10 is shown. A schematic example of the connection configuration of multiple controllers 200 is shown. A schematic example of the configuration of the simulation device 100 that simulates multiple controllers 200 is shown. A schematic example of the configuration of the simulation device 100 that simulates multiple controllers 200 is shown. A schematic example of the configuration of the simulation device 100 that simulates multiple controllers 200 is shown. A schematic example of the configuration of the simulation device 100 that simulates multiple controllers 200 is shown. A schematic example of the configuration of the simulation device 100 that simulates multiple controllers 200 is shown. A schematic example of the functional configuration regarding the implementation of the virtual controller 120 in the simulation device 100 is shown. A schematic example of the processing flow by the simulation device 100 is shown. A schematic example of the hardware configuration of the computer 1200 that functions as the simulation device 100 is shown.
[0015] The present invention will be described below through embodiments, but these embodiments are not intended to limit the scope of the claimed invention. Furthermore, not all combinations of features described in the embodiments are necessarily essential to the solution of the invention.
[0016] Figure 1 schematically shows an example of system 10. System 10 comprises a simulation device 100 and a controller 200 which is the target of simulation by the simulation device 100. The controller 200 controls the industrial machine 20. System 10 may further comprise the industrial machine 20 which is the target of control by the controller 200. System 10 may comprise multiple controllers 200. System 10 may comprise multiple industrial machines 20.
[0017] Industrial machine 20 may include robots. Industrial machine 20 may include specialized and general-purpose machines such as motors, machine tools, self-propelled devices, mounters, and winding machines. Industrial machine 20 may also include other machines known as so-called industrial machines.
[0018] The controller 200 may include a robot controller. The controller 200 may include a motion controller. The controller 200 may include servos, inverters, etc. The controller 200 may include other controllers known to control industrial machinery 20.
[0019] The industrial machines 20 and controllers 200 may be used in the production of products. Multiple controllers 200 may be capable of performing coordinated operations on an object by multiple industrial machines 20 that are being controlled. Coordinated operations on an object by multiple industrial machines 20 may include multiple industrial machines 20 working on a single object in parallel, and multiple industrial machines 20 working on a single workpiece in sequence, etc.
[0020] The controller 200 comprises hardware (sometimes referred to as HW (HardWare)) 202, a real-time OS (sometimes referred to as RTOS) implemented on HW202, and controller control functions 206 and applications 208 implemented on RTOS 204.
[0021] HW202 includes one or more processors. One or more processors may include at least one of the following: CPU (Central Processing Unit), GPU (Graphics Processing Unit), FPGA (Field Programmable Gate Array), ASIC (Application Specific Integrated Circuit), and NPU (Neural Network Processing Unit). HW202 includes memory. HW202 includes a network unit. Examples of network units include field network units such as mechatronic link units and Ethernet units. HW202 includes storage. HW202 may include a timer for managing the periodicity of fixed-period control.
[0022] RTOS204 is an operating system intended to guarantee real-time performance. RTOS204 may be an operating system that prioritizes execution within a certain time frame in response to processing requests, and may have functions to determine the priority of multiple processing requests. Examples of RTOS204 include VxWorks® and FreeRTOS®, but other operating systems may be used as long as they aim to guarantee real-time performance. The types of RTOS204 used by multiple controllers 200 may be the same or different. For example, all RTOS204 used by multiple controllers 200 may be VxWorks, all RTOS204 used by multiple controllers 200 may be FreeRTOS, or VxWorks and FreeRTOS may be mixed.
[0023] The controller control function 206 is a function that controls the controller 200. The controller control function 206 may be software that controls the controller 200. For example, the controller control function 206 may be the firmware of the controller 200. The application 208 is used to control the industrial machine 20 by the controller 200. The application 208 is generated or prepared by a user of the industrial machine 20, such as a producer who manufactures products using the industrial machine 20. For example, if the industrial machine 20 is a robot and the controller 200 is a robot controller, the controller control function 206 may correspond to a so-called robot program, and the application 208 may correspond to an application that operates on the robot program and controls the industrial machine 20 according to the needs of the user of the industrial machine 20. Note that here the controller control function 206 and the application 208 are expressed separately, but the controller control function 206 may also serve as the application 208.
[0024] Figure 2 schematically shows an example of a connection configuration for multiple controllers 200. In the example shown in Figure 2, the multiple controllers 200 are connected to a mounting section 310. The mounting section 310 includes a connection section to which the multiple controllers 200 are connected, and hardwires for connecting the multiple controllers 200 to each other. The multiple controllers 200 communicate with each other via the hardwires of the mounting section 310. The multiple controllers 200 communicate with each other, for example, by sending and receiving interrupt signals.
[0025] A power supply unit 320 may be connected to the mounting section 310, and multiple controllers 200 may be supplied with power from the power supply unit 320. Other types of units may also be connected to the mounting section 310.
[0026] The connection configuration of the multiple controllers 200 is not limited to the example shown in Figure 2, but may be other configurations. For example, the multiple controllers 200 may be connected via an inter-controller network.
[0027] The controller 200 and the industrial machine 20 may be directly connected, connected via a communication unit or I / O unit connected to the mounting unit 310, or connected via a field network.
[0028] Figure 3 schematically shows an example of the configuration of a simulation device 100 that simulates multiple controllers 200.
[0029] The simulation device 100 comprises hardware 102, a non-real-time OS (sometimes referred to as nRTOS) 104 implemented on the hardware 102, and a plurality of virtual controllers 120. Figure 3 illustrates the case where three controllers 200 are simulated, but the number of controllers 200 simulated by the simulation device 100 is not limited to this; it may be one, two, or four or more.
[0030] The simulation device 100 may be a general-purpose computer. For example, the simulation device 100 is a PC (Personal Computer). The simulation device 100 may also be a computer dedicated to simulation.
[0031] HW102 includes a processor, memory, storage, and a network unit, etc. HW102 may include one or more processors. One or more processors may include at least one of a CPU, GPU, FPGA, ASIC, and NPU.
[0032] nRTOS104 is an OS that does not guarantee real-time performance. nRTOS104 may be a general-purpose OS. nRTOS104 may be, for example, Linux® or Windows®. Furthermore, a real-time operation patch may be applied to nRTOS104 to make it equivalent to an RTOS.
[0033] The virtual controller 120 includes a virtual hardware 122 implemented on the nRTOS 104 via a virtual hardware control 121, an RTOS 124 implemented on the virtual hardware 122, and a virtual controller control function 126 and an application 128 implemented on the RTOS 124. The virtual controller 120 does not necessarily need to include the application 128.
[0034] The virtual hardware control 121 is an emulator that emulates hardware. An example of a virtual hardware control 121 is QEMU (Quick Emulator), but any emulator that can emulate hardware may be used. The types of virtual hardware controls 121 for multiple virtual controllers 120 may be the same or different.
[0035] The virtual HW122 may be a virtual reproduction of at least a portion of the hardware of the controller 200 being simulated. The virtual HW122 may include a virtual processor that virtually reproduces the processor of the controller 200. The virtual HW122 may include at least one of a virtual CPU, virtual GPU, virtual FPGA, virtual ASIC, and virtual NPU. The virtual HW122 may include a virtual network unit that virtually reproduces the network unit of the controller 200. The virtual HW122 may include virtual storage that virtually reproduces the storage of the controller 200. The virtual HW122 may include virtual memory that virtually reproduces the memory of the controller 200. The virtual HW122 may include a virtual timer that virtually reproduces the timer that manages the periodicity of the fixed-period control of the controller 200.
[0036] The virtual HW122 may be a virtual reproduction of the hardware of a standard controller 200, rather than the controller 200 being simulated. The virtual HW122 may include a virtual processor that virtually reproduces the processor of a standard controller 200. The virtual HW122 may include virtual memory that virtually reproduces the memory of a standard controller 200. The virtual HW122 may include virtual storage that virtually reproduces the storage of a standard controller 200. The virtual HW122 may include a virtual network unit that virtually reproduces the network unit of a standard controller 200. The configurations of the multiple virtual HW122s of the multiple virtual controllers 120 may be identical or different.
[0037] RTOS124 may be the same type of real-time OS as RTOS204. RTOS124 may be a different type of real-time OS than RTOS204. The types of RTOS124 in multiple virtual controllers 120 may be the same or different.
[0038] The virtual controller control function 126 may be a virtual reproduction of the controller control function 206 of the controller 200 being simulated. The virtual controller control function 126 may also be a virtual reproduction of the controller control function 206 of a standard controller 200, rather than the controller 200 being simulated. The virtual controller control function 126 is implemented on the RTOS 124 on the virtual HW 122, but may be physically realized by one or more processors of the HW 102. The configurations of the multiple virtual controller control functions 126 of the multiple virtual controllers 120 may be the same or different.
[0039] Application 128 may be a virtual reproduction of Application 208 on the controller 200 being simulated. Application 128 may also be identical to Application 208. That is, the source code of Application 128 may be identical to the source code of Application 208. Multiple applications 128 for multiple virtual controllers 120 will be different if the simulation targets of the multiple virtual controllers 120 are different types of controllers 200. Multiple applications 128 for multiple virtual controllers 120 may be the same or different if the simulation targets of the multiple virtual controllers 120 are the same type of controller 200.
[0040] When attempting to simulate a controller 200 in a real environment, one might consider using a simulator to virtually realize the operation of the controller 200. However, the operation of the controller 200 depends on the performance of the controller 200's hardware. For example, the operation of the controller 200 is constrained in the time axis by the hardware performance. For instance, even for the same operation, the time to completion may differ depending on whether the processor performance is high or low. Similarly, the time to completion may differ depending on whether the communication capability is high or low. According to the simulation device 100 of this embodiment, a virtual HW 122 is implemented on the nRTOS 104, and the RTOS 124 and virtual controller control function 126 are implemented on top of it, enabling a simulation that reflects the hardware capabilities of the controller 200. This allows for accurate simulation, improving the accuracy of digital twins, improving the accuracy of line studies before constructing physical production lines, and improving the accuracy of anomaly detection in operating production lines.
[0041] Furthermore, according to the simulation apparatus 100 of this embodiment, the operation of the controller 200 can be virtually reproduced by a virtual controller 120 having a virtual HW 122 that virtually reproduces at least a part of the hardware of the controller 200 to be simulated. This makes it possible to reproduce the operation of the controller 200 more accurately.
[0042] As described above, the virtual controller 120 may have a virtual HW 122 that virtually implements at least one of the processor, network unit, and storage of the controller 200. The controller 200 that controls the industrial machine 20 has improved its production capacity through the development of the hardware listed above. Therefore, by virtualizing and reproducing the controller control function 206, including the hardware, it is possible to more accurately simulate production capacity and operation that depend on the development of the hardware, and to further improve the accuracy of various processes such as digital twins and anomaly detection.
[0043] As described above, the simulation device 100 may include a plurality of virtual controllers 120 each corresponding to one of the plurality of controllers 200. By virtually reproducing the operations of the plurality of controllers 200 by the plurality of virtual controllers 120 each having a virtual HW 122, an RTOS 124, and a virtual controller control function 126, the cooperation of the plurality of controllers 200 in the real environment can be reproduced with high accuracy in the virtual environment.
[0044] The simulation device 100 may virtually realize the cooperative operation by the plurality of controllers 200 by the plurality of virtual controllers 120. For example, the simulation device 100 virtually realizes the cooperative operation on one workpiece by the plurality of industrial machines 20 by the plurality of virtual controllers 120. When the plurality of controllers 200 perform a cooperative operation in the real environment, the real-time property is guaranteed by the RTOS 204, and synchronization with high accuracy is performed. In a conventional simulator on a PC, the controller is directly reproduced even on the nRTOS, and it has been difficult to reproduce the very high-accuracy synchronization in the real environment. In contrast, the simulation device 100 according to the present embodiment adopts a configuration in which the virtual HW 122 and the RTOS 124 are mounted on the nRTOS 104 and then the virtual controller control function 126 is mounted, instead of mounting the virtual controller control function 126 on the nRTOS 104. Thereby, it may be possible to realize synchronization with the same accuracy as the real environment.
[0045] As described above, the simulation device 100 may mount the nRTOS 104 which is made equivalent to the RTOS by applying a patch for real-time operation on the HW 102, and mount the virtual controller 120 on the nRTOS 104. Thereby, it is possible to more accurately guarantee the real-time property of the virtual controller control function 126 and the application 128.
[0046] FIG. 4 schematically shows an example of the configuration of the simulation device 100 that simulates the plurality of controllers 200. Here, the points different from FIG. 3 will be mainly described.
[0047] In the example shown in FIG. 4, the simulation device 100 includes a container engine 106. Examples of the container engine 106 include, but are not limited to, Docker (registered trademark) and LXC (Linux Containers). As shown in FIG. 4, the simulation device 100 may implement a plurality of virtual controllers 120 on the container engine 106 on the nRTOS 104.
[0048] By constructing a virtual environment by implementing a plurality of virtual controllers 120 on the container engine 106, the simulation device 100 can contribute to realizing a simulation with very few or no differences from the real environment even in a cloud environment.
[0049] FIG. 5 schematically shows an example of the configuration of the simulation device 100 that simulates a plurality of controllers 200. Here, the differences from FIG. 3 will be mainly described. In FIG. 3, the case where a plurality of virtual controllers 120 are implemented on one nRTOS 104 is illustrated, but the present invention is not limited to this. At least two virtual controllers 120 of the plurality of virtual controllers 120 may be implemented on different nRTOSs 104. For example, all of the plurality of virtual controllers 120 may be implemented on different nRTOSs 104. Also, some of the plurality of virtual controllers 120 of the plurality of virtual controllers 120 may be implemented on one nRTOS 104, and the other plurality of virtual controllers 120 of the plurality of virtual controllers 120 may be implemented on a plurality of nRTOSs 104 different from the one nRTOS 104, respectively.
[0050] In the example shown in Figure 5, all of the multiple virtual controllers 120 are implemented on different nRTOS 104. Thus, the simulation device 100 may implement multiple nRTOS 104 on the HW 102 and implement each of the multiple virtual controllers 120 on each of the multiple nRTOS 104. Alternatively, the simulation device 100 may implement multiple virtual controllers 120 on some of the multiple nRTOS 104, and implement one virtual controller 120 on other parts of the multiple nRTOS 104. Compared to the case where multiple virtual controllers 120 are implemented on a single nRTOS 104, this can increase the independence of the multiple virtual controllers 120 and contribute to improving the reproducibility of the multiple controllers 200.
[0051] Furthermore, the simulation device 100 may implement multiple nRTOS 104 on the HW 102, implement multiple container engines 106 on each of the multiple nRTOS 104, and implement multiple virtual controllers 120 on each of the multiple container engines 106. This can increase the independence of the multiple virtual controllers 120 and improve the reproducibility of the multiple controllers 200 compared to the case where multiple virtual controllers 120 are implemented on one container engine 106 on one nRTOS 104.
[0052] Figure 6 schematically shows an example of the configuration of a simulation device 100 that simulates multiple controllers 200. Here, we will mainly explain the differences from Figure 4.
[0053] In the example shown in Figure 6, each of the multiple virtual controllers 120 includes a timing control unit 130. The timing control unit 130 may be implemented on the RTOS 124. Upon receiving an interrupt notification, the timing control unit 130 may cause the virtual controller control function 126 to start the processing assigned to the interrupt. Upon receiving the interrupt notification generated by the virtual controller control function 126, the timing control unit 130 may send the interrupt notification to the timing control unit 130 of the other virtual controllers 120 that are synchronized with it.
[0054] In a real environment, multiple controllers 200 synchronize and operate in a coordinated manner by transmitting physical interrupt signals via hardwires. For example, when an interrupt signal from another controller 200 is input to the interrupt terminal of the CPU of controller 200, the controller control function 206 saves the state of the work being executed and starts the processing assigned to the interrupt. When multiple controllers 200 operate in a coordinated manner, the main controller 200 and the sub-controllers 200 are determined, and the main controller 200 sends an interrupt signal to the sub-controllers 200, so that all of the multiple controllers 200 can start operating at the same time.
[0055] On the other hand, in a virtual environment, hardwires cannot be connected between virtual controllers 120. Furthermore, although the virtual controller control function 126 is implemented on the RTOS 124 on the virtual HW 122, since the virtual HW 122 and RTOS 124 are implemented on the container engine 106 on the nRTOS 104, the operation of the virtual controller control function 126 may not complete within the expected time.
[0056] Therefore, in the example shown in Figure 6, each of the multiple virtual controllers 120 is equipped with a timing control unit 130, and the multiple timing control units 130 synchronize with each other through communication, thereby achieving synchronization of the multiple virtual controllers 120 in the same way as in a real environment. The timing control unit 130 may include a management unit 132 and a communication unit 134.
[0057] The communication unit 134 sends an interrupt notification to the communication unit 134 of another virtual controller 120. When an interrupt is generated by the virtual controller control function 126, the communication unit 134 sends an interrupt notification to the communication unit 134 of the synchronized virtual controller 120. The virtual controller control function 126 manages the periodicity of the fixed-period control itself, for example, and generates interrupts according to the periodicity of the fixed-period control it manages. As another example, the virtual hardware 122 includes a virtual timer that virtually reproduces a timer that manages the periodicity of the fixed-period control included in the hardware 202, and the virtual controller control function 126 generates interrupts according to the periodicity managed by the virtual timer.
[0058] The communication unit 134 receives an interrupt notification from the communication unit 134 of another virtual controller 120. In response to the communication unit 134 receiving the interrupt notification from the communication unit 134 of another virtual controller 120, the management unit 132 instructs the virtual controller control function 126 to start the processing assigned to the interrupt.
[0059] When multiple virtual controllers 120 operate in cooperation, one of the virtual controllers 120 becomes the main one, and the others become sub-controllers. The virtual controller control function 126 of the main virtual controller 120 generates an interrupt for the sub-virtual controllers 120, and the communication unit 134 sends an interrupt notification to the sub-virtual controllers 120. The management unit 132 of the sub-virtual controllers 120 instructs the virtual controller control function 126 to start the processing assigned to the interrupt.
[0060] As described above, each of the multiple virtual controllers 120 is equipped with a timing control unit 130, and by synchronizing the multiple timing control units 130 through communication, the synchronization of the multiple virtual controllers 120 can be achieved in the same way as the synchronization of multiple controllers 200 in a real environment.
[0061] [Interrupt notification simulating real-world interrupt signals] The interrupt notification may simulate the interrupt signals between multiple controllers 200. For example, the communication unit 134 virtually simulates the interrupt signals transmitted via hardwires between multiple controllers 200 and sends the interrupt notification to other timing control units 130.
[0062] As a specific example, a communication unit 134 of a timing control unit 130 of a virtual controller 120 that simulates one controller 200 sends an interrupt notification to another communication unit 134 of another timing control unit 130 of another virtual controller 120 that simulates another controller 200, by virtually simulating the interrupt signal transmitted via hardwire between one controller 200 and the other controller 200. For example, the communication unit 134 reproduces the hardwire communication delay between one controller 200 and the other controller 200 and sends the interrupt notification to the other communication unit 134. Specifically, the communication unit 134 sends the interrupt notification to the other communication unit 134 for the same amount of time as the time it takes from transmission to reception (sometimes referred to as delay time) when one controller 200 transmits an interrupt signal to the other controller 200 via hardwire.
[0063] Each of the multiple timing control units 130 may have a pre-set delay time for interrupt signals transmitted via hardwires between the controller 200 targeted by its own virtual controller 120 and other controllers 200. For example, this delay time may be set to the average of the measured values of interrupt signals transmitted via hardwires between the multiple controllers 200. For example, this delay time may be set to the theoretical value of interrupt signals transmitted via hardwires between the multiple controllers 200.
[0064] Depending on the specifications of the multiple controllers 200, the communication environment, the specifications of the simulation device 100, etc., the delay time for interrupt notification from one communication unit 134 to another communication unit 134 is often shorter than the delay time for the interrupt signal transmitted between one controller 200 and the other controllers 200 via hardwire. For example, one communication unit 134 delays the start timing of sending the interrupt notification to match the transmission time of the interrupt notification from one communication unit 134 to the transmission time of the interrupt signal transmitted between one controller 200 and the other controllers 200 via hardwire. Alternatively, for example, one communication unit 134 sends an instruction to the other communication unit 134 along with the interrupt notification, instructing it to start the processing assigned to the interrupt after a specified time has elapsed since receiving the interrupt notification. When the other communication unit 134 receives the instruction and the interrupt notification, the other management unit 132, in accordance with the instruction, causes the virtual controller control function 126 to start the processing assigned to the interrupt after a specified time has elapsed since the receipt of the interrupt notification.
[0065] As described above, the communication unit 134 reproduces interrupt signals via hardwires between multiple controllers 200 that are being simulated, thereby reflecting delays and other factors in the actual hardwires in the interrupts in the virtual environment, and contributing to improved simulation accuracy.
[0066] [Interrupt notifications that do not simulate real-world interrupt signals] Interrupt notifications do not have to simulate interrupt signals between multiple controllers 200. For example, an interrupt notification may be a notification of the timing to advance one cycle of periodic control.
[0067] As a specific example, one communication unit 134 of one virtual controller 120 does not notify an interrupt by simulating an interrupt signal, but rather notifies another communication unit 134 of another virtual controller 120 of the timing via communication. Then, another management unit 132 of the other virtual controller 120 that receives the timing notification causes the other virtual controller control function 126 of that other virtual controller 120 to advance the control by one cycle in response to the timing notification.
[0068] As another specific example, the communication unit 134 of one virtual controller 120 notifies the timing via communication, and another communication unit 134 of the other virtual controller 120 that receives the notification generates an interrupt, and in response to the interrupt, another management unit 132 of the other virtual controller 120 causes the other virtual controller control function 126 of the other virtual controller 120 to start the process assigned to the interrupt.
[0069] [Adjustment for consecutively received interrupt notifications] If the timing control unit 130 receives an interrupt notification and has the virtual controller control function 126 start the processing assigned to the interrupt, and then receives a notification for the next interrupt, it may confirm that the processing assigned to the first interrupt has been completed, and after confirmation is complete, have the virtual controller control function 126 start the processing assigned to the next interrupt. In other words, if the timing control unit 130 receives an interrupt notification and has the virtual controller control function 126 start the processing assigned to the interrupt, and then receives a notification for the next interrupt before that processing is completed, it may wait until the processing assigned to the first interrupt is completed, and after confirming that it has been completed, have the virtual controller control function 126 start the processing assigned to the next interrupt. This prevents malfunctions that would occur if the processing assigned to the next interrupt was started before the processing assigned to the first interrupt was completed. Furthermore, the communication unit 134 can improve the accuracy of the simulation while reducing the possibility of malfunctions by both reproducing interrupt signals via hardwires between the multiple controllers 200 being simulated and adjusting for notifications of continuously received interrupts.
[0070] [Adjustment of consecutively transmitted interrupt notifications] When the communication unit 134 sends an interrupt notification to one communication unit 134 of one virtual controller 120 and then sends the next interrupt notification, it may confirm that the processing assigned to the first interrupt notification by the first virtual controller 120 has been completed, and after confirmation is complete, it may send the next interrupt notification to one communication unit 134 of the first virtual controller 120. As a specific example, when the communication unit 134 of the main virtual controller 120 sends an interrupt notification to the communication unit 134 of the sub virtual controller 120 and then sends the next interrupt notification, it confirms that the processing assigned to the first interrupt notification by the sub virtual controller 120 has been completed, and after confirmation is complete, it sends the next interrupt notification to the communication unit 134 of the sub virtual controller 120. To perform such adjustments, the timing control unit 130 may be configured as follows.
[0071] When the management unit 132 has the virtual controller control function 126 start the processing assigned to the interrupt, it monitors the processing status by the virtual controller control function 126. The management unit 132 has the communication unit 134 notify other timing control units 130 of the processing status by the virtual controller control function 126. For example, the management unit 132 has the communication unit 134 notify other timing control units 130 that processing has started by the virtual controller control function 126 or that processing by the virtual controller control function 126 has been completed. After the communication unit 134 sends a notification of the interrupt to another timing control unit 130, the management unit 132 determines whether the processing assigned to the interrupt has been completed based on the processing status of the virtual controller control function 126 of the other timing control unit 130 that is transmitted from that other timing control unit 130.
[0072] This prevents a malfunction that could occur if the notification for the next interrupt is sent before the processing assigned to the previous interrupt is completed, thus preventing the processing assigned to the next interrupt from starting before the processing assigned to the previous interrupt is completed. Furthermore, by having the communication unit 134 reproduce the interrupt signals via hardwires between the multiple controllers 200 being simulated and adjust for the successively transmitted interrupt notifications, the accuracy of the simulation can be improved while reducing the possibility of malfunctions occurring.
[0073] The simulation device 100 illustrated in Figure 6 has an nRTOS 104 implemented on the HW 102, a container engine 106 implemented on the nRTOS 104, and multiple virtual controllers 120 implemented on the container engine 106, but is not limited to this. The simulation device 100 may have multiple nRTOS 104 implemented on the HW 102, multiple container engines 106 implemented on the multiple nRTOS 104, and multiple virtual controllers 120 implemented on the multiple container engines 106. Furthermore, the simulation device 100 does not have to have a container engine 106. That is, the simulation device 100 may have an nRTOS 104 implemented on the HW 102, and multiple virtual controllers 120 implemented on the nRTOS 104. Furthermore, the simulation device 100 may implement multiple nRTOS 104 on the HW 102, and implement multiple virtual controllers 120 on the multiple nRTOS 104.
[0074] Figure 7 schematically shows an example of the configuration of a simulation device 100 that simulates multiple controllers 200. Here, we will mainly explain the differences from Figure 4. In the example shown in Figure 7, the simulation device 100 includes a main control unit 420.
[0075] The main control unit 420 includes a virtual hardware 422 implemented on the container engine 106 via a virtual hardware control 421, an RTOS 424 implemented on the virtual hardware 422, and a main control function 430 implemented on the RTOS 424. The virtual hardware 422 may be the same as the virtual hardware control 121. The virtual hardware 422 may be the same as the virtual hardware 122. The RTOS 424 may be the same as the RTOS 124.
[0076] In the example shown in Figure 7, the main control unit 420 sends interrupt notifications to multiple timing control units 130, thereby synchronizing multiple virtual controllers 120 in the same way as in a real environment.
[0077] The main control function 430 includes a communication unit 432. The communication unit 432 transmits an interrupt notification to at least one of the multiple timing control units 130. The communication unit 432 transmits the interrupt notification to multiple timing control units 130 of multiple virtual controllers 120 that are to be synchronized, for example, according to the settings. The multiple timing control units 130 that receive the interrupt notification cause the virtual controller control function 126 to start the processing assigned to the interrupt.
[0078] By including a main control unit 420 in the simulation device 100, it becomes possible to centrally manage the synchronization between multiple virtual controllers 120, and to appropriately realize cooperative operation by multiple virtual controllers 120.
[0079] [Interrupt notification simulating real-world interrupt signals] The interrupt notification by the communication unit 432 may simulate interrupt signals between multiple controllers 200. For example, the communication unit 432 sends an interrupt notification to the target multiple timing control units 130 at the same timing as when the main controller 200 of the multiple controllers 200 sends an interrupt signal to the sub-controllers 200 via hardwire. For example, the communication unit 432 reproduces the hardwire communication delay between the main controller 200 and the sub-controllers 200 and sends the interrupt notification to the target multiple timing control units 130. Specifically, the communication unit 432 sends the interrupt notification to the target multiple timing control units 130 for the same amount of time as the delay time from transmission to reception when the main controller 200 sends an interrupt signal to the sub-controllers 200 via hardwire.
[0080] The main control unit 420 may have a pre-set delay time for interrupt signals transmitted via hardwires between multiple controllers 200. For example, this delay time may be set to the average of the measured values of the interrupt signals transmitted via hardwires between multiple controllers 200. For example, this delay time may be set to the theoretical value of the interrupt signals transmitted via hardwires between multiple controllers 200.
[0081] For example, the communication unit 432 adjusts the timing of the interrupt notification to match the delay time of the interrupt notification to the target multiple timing control units 130 by adjusting the timing of the interrupt notification to start sending the interrupt notification to the target multiple timing control units 130. Also, for example, along with the interrupt notification, the communication unit 432 sends an instruction to the target multiple timing control units 130 to start the processing assigned to the interrupt after a specified time has elapsed since the reception of the interrupt notification. When the timing control unit 130 receives the instruction and the interrupt notification, it causes the virtual controller control function 126 to start the processing assigned to the interrupt after a specified time has elapsed since the reception of the interrupt notification, in accordance with the instruction.
[0082] As described above, the communication unit 432 reproduces interrupt signals via hardwires between multiple controllers 200 that are being simulated, thereby reflecting delays and other factors in the actual hardwires in the interrupts in the virtual environment, and contributing to improved simulation accuracy.
[0083] [Interrupt notification that does not simulate real-world interrupt signals] The interrupt notification by the communication unit 432 does not have to simulate the interrupt signals between multiple controllers 200. For example, the interrupt notification may be a notification of the timing to advance one cycle of periodic control.
[0084] As a specific example, the communication unit 432 does not notify of an interrupt by simulating an interrupt signal, but rather notifies of the timing via communication. The timing control unit 130, upon receiving the timing notification, then causes the virtual controller control function 126 to advance the control by one cycle in response to the timing notification.
[0085] [Adjustment of consecutively transmitted interrupt notifications] When the communication unit 432 sends an interrupt notification to one timing control unit 130 of one virtual controller 120 and then sends the next interrupt notification, it may confirm that the processing assigned to the first interrupt notification by the first virtual controller 120 has been completed, and after confirmation is complete, it may send the next interrupt notification to the first timing control unit 130. To perform this adjustment, after sending the first interrupt notification to the first timing control unit 130, the communication unit 432 may determine whether the processing assigned to the first interrupt has been completed based on the processing status of the first virtual controller control function 126 of the first timing control unit 130 transmitted from the first timing control unit 130.
[0086] The simulation device 100 illustrated in Figure 7 has an nRTOS 104 implemented on the HW 102, a container engine 106 implemented on the nRTOS 104, and multiple virtual controllers 120 and a main control unit 420 implemented on the container engine 106, but is not limited to this. The simulation device 100 may have multiple nRTOS 104 implemented on the HW 102, multiple container engines 106 implemented on the multiple nRTOS 104, and multiple virtual controllers 120 and a main control unit 420 implemented on the multiple container engines 106. Furthermore, the simulation device 100 does not have to have a container engine 106. That is, the simulation device 100 may have an nRTOS 104 implemented on the HW 102, and multiple virtual controllers 120 and a main control unit 420 implemented on the nRTOS 104. Furthermore, the simulation device 100 may implement multiple nRTOS 104 on the HW 102, and implement multiple virtual controllers 120 and main control units 420 on the multiple nRTOS 104.
[0087] Figure 8 schematically shows an example of a functional configuration for the implementation of a virtual controller 120 in the simulation device 100. The simulation device 100 may be equipped with an information acquisition unit 152, an implementation unit 154, and a management unit 156 to implement one or more virtual controllers 120 corresponding to one or more controllers 200 that are to be simulated, depending on the controllers 200 that are to be simulated.
[0088] The information acquisition unit 152 acquires controller information, including the type of controller 200 to be simulated. The information acquisition unit 152 may acquire controller information entered by the user via the user interface.
[0089] The implementation unit 154 implements a virtual controller 120 corresponding to the controller 200 based on the controller information acquired by the information acquisition unit 152.
[0090] The implementation unit 154 may identify the hardware configuration of the controller 200 based on the type of controller 200 included in the controller information. Hardware configuration information indicating the hardware configuration for each type of controller 200 may be pre-registered in the implementation unit 154, and the implementation unit 154 may identify the hardware configuration of the controller 200 by referring to the hardware configuration information.
[0091] The implementation unit 154 may implement the container engine 106 on the nRTOS 104 and implement the virtual HW control 121 and virtual HW 122 on the container engine 106 according to the hardware configuration of the specified controller 200. The implementation unit 154 may implement the virtual HW control 121 and virtual HW 122 on the nRTOS 104. The implementation unit 154 implements the virtual HW 122, which virtually realizes at least a part of the hardware of the controller 200. The implementation unit 154 may implement a virtual processor that virtually reproduces the processor of the controller 200. The implementation unit 154 may implement a virtual network unit that virtually reproduces the network unit of the controller 200. The implementation unit 154 may implement virtual storage that virtually reproduces the storage of the controller 200. The implementation unit 154 may also virtually reproduce and implement other hardware of the controller 200.
[0092] The implementation unit 154 may identify the RTOS of the controller 200 based on the type of controller 200 included in the controller information. The implementation unit 154 may have RTOS information indicating the RTOS of the controller 200 for each type of controller 200 pre-registered, and the implementation unit 154 may identify the RTOS of the controller 200 by referring to the RTOS information. The implementation unit 154 may implement the identified RTOS 124 on the virtual HW 122.
[0093] The implementation unit 154 may identify the controller control function 206 of the controller 200 based on the type of controller 200 included in the controller information. The implementation unit 154 may have controller control function information indicating the controller control function 206 of the controller 200 for each type of controller 200 pre-registered, and the implementation unit 154 may identify the controller control function 206 of the controller 200 by referring to the controller control function information. The implementation unit 154 may implement a virtual controller control function 126 on the RTOS 124 that virtually reproduces the identified controller control function 206.
[0094] The information acquisition unit 152 may acquire information about the application 208 on the controller 200 being simulated. For example, the information acquisition unit 152 may acquire application function information that indicates the functions of the application 208. For example, the information acquisition unit 152 may acquire the source code of the application 208.
[0095] The implementation unit 154 may implement application 128 using the information of application 208 acquired by the information acquisition unit 152. For example, the implementation unit 154 may implement application 128 that virtually reproduces the functions of application 208 using application function information. The implementation unit 154 may also implement application 128 identical to application 208 using the source code of application 208.
[0096] The management unit 156 manages one or more virtual controllers 120 implemented by the implementation unit 154. The management unit 156 may use one or more virtual controllers 120 to perform simulations of one or more controllers 200.
[0097] Figure 9 schematically shows an example of the processing flow by the simulation device 100. Here, we will explain the processing flow for implementing the virtual controller 120 corresponding to the controller 200 to be simulated.
[0098] In step 102 (sometimes abbreviated as S), the information acquisition unit 152 acquires controller information for each of the controllers 200 to be simulated. In step S104, the implementation unit 154 uses the controller information acquired by the information acquisition unit 152 in S102 to identify the hardware corresponding to the controller type of the controller 200.
[0099] In S106, the implementation unit 154 implements the container engine 106 on the nRTOS 104, implements the virtual HW control 121 on the container engine 106, and implements the virtual HW 122, which is a virtualized version of the HW identified in S104, on the virtual HW control 121. Alternatively, the implementation unit 154 may implement the virtual HW control 121 on the nRTOS 104, and implement the virtual HW 122, which is a virtualized version of the HW identified in S104, on the virtual HW control 121.
[0100] In S108, the implementation unit 154 implements the RTOS 124 on the virtual HW 122 implemented in S106. The implementation unit 154 may implement a pre-specified RTOS 124 on the virtual HW 122. The implementation unit 154 may use the controller information acquired by the information acquisition unit 152 in S102 to identify the RTOS 124 corresponding to the controller type and implement the identified RTOS 124 on the virtual HW 122.
[0101] In S110, the implementation unit 154 implements the virtual controller control function 126 on the RTOS 124 implemented in S108. The implementation unit 154 may implement a pre-specified virtual controller control function 126 on the RTOS 124. The implementation unit 154 may use the controller information acquired by the information acquisition unit 152 in S102 to identify a virtual controller control function 126 corresponding to the controller type, and then implement the identified virtual controller control function 126 on the RTOS 124.
[0102] When simulating multiple controllers 200, the implementation unit 154 may implement multiple virtual controllers 120 by executing the process shown in Figure 9 for each of the multiple controllers 200.
[0103] The implementation unit 154 may further implement a timing control unit 130 on the RTOS 124 for each of the multiple virtual controllers 120. Alternatively, the implementation unit 154 may implement a main control unit 420 on the nRTOS 104.
[0104] Figure 10 schematically shows an example of the hardware configuration of a computer 1200 that functions as a simulation device 100. A program installed on the computer 1200 may cause the computer 1200 to function as a simulation device 100. Such a program may be executed by a processor to cause the computer 1200 to perform specific operations associated with some or all of the blocks in the flowcharts and block diagrams described herein. The functional configuration of the simulation device 100 may be realized by one or more processors.
[0105] Computer 1200 includes a CPU 1212, RAM 1214, and a graphics controller 1216, which are interconnected by a host controller 1210. In addition to the CPU 1212, computer 1200 may include at least one of a GPU, FPGA, ASIC, and NPU. Computer 1200 may include an FPGA instead of the CPU 1212. Computer 1200 also includes input / output units such as a communication interface 1222, a storage device 1224, a DVD drive, and an IC card drive, which are connected to the host controller 1210 via an input / output controller 1220. The storage device 1224 may be a hard disk drive, a solid-state drive, etc. Computer 1200 also includes legacy input / output units such as a ROM 1230 and a keyboard, which are connected to the input / output controller 1220 via an input / output chip 1240. The CPU 1212 operates according to programs stored in the ROM 1230 and RAM 1214, thereby controlling each unit. The graphics controller 1216 acquires image data generated by the CPU 1212 and displays the image data on the display device 1218. The communication interface 1222 communicates with other electronic devices via the network. The storage device 1224 stores programs and data used by the CPU 1212. The information processing described in the programs is read by the computer 1200, resulting in coordination between the programs and the various types of hardware resources described above.
[0106] In this embodiment, blocks in the flowchart and block diagram may represent a stage in a process in which an operation is performed or a "part" of a device that has the role of performing an operation. A particular stage and "part" may be implemented by a dedicated circuit, a programmable circuit supplied with computer-readable instructions stored on a computer-readable storage medium, and / or a processor supplied with computer-readable instructions stored on a computer-readable storage medium. The dedicated circuit may include digital and / or analog hardware circuits, and may include integrated circuits (ICs) and / or discrete circuits. The programmable circuit may include reconfigurable hardware circuits, such as field-programmable gate arrays (FPGAs) and programmable logic arrays (PLAs), which include logical AND, logical OR, exclusive OR, negated AND, negated OR, and other logical operations, flip-flops, registers, and memory elements.
[0107] A computer-readable storage medium may include any tangible device capable of storing instructions to be executed by a suitable device, and as a result, a computer-readable storage medium having instructions stored therein will comprise a product containing instructions that can be executed to create means for performing an operation specified in a flowchart or block diagram. Examples of computer-readable storage media may include electronic storage media, magnetic storage media, optical storage media, electromagnetic storage media, semiconductor storage media, etc. Computer-readable instructions may be provided locally or via a wide area network (WAN) such as a local area network (LAN) or the Internet to a processor or programmable circuit of a programmable data processing device such as a computer, so that the processor or programmable circuit of the programmable data processing device may execute the computer-readable instructions to generate means for performing an operation specified in a flowchart or block diagram. Examples of processors include computer processors, central processing units, processing units, microprocessors, digital signal processors, controllers, microcontrollers, etc. A computer may have one or more processors. In a multiprocessor system with multiple processors, each processor executes a portion of the program, and data from the program execution is passed between processors as needed, allowing the multiple processors to execute the program collectively. For example, in multitasking, each of the multiple processors may execute a portion of each task in small chunks by switching tasks at each time slice. In this case, which part of a program each processor executes changes dynamically. Alternatively, which part of the program each of the multiple processors executes may be statically determined by multiprocessor-aware programming.
[0108] Although the present invention has been described above using embodiments, the technical scope of the present invention is not limited to the scope described in the above embodiments. It will be apparent to those skilled in the art that various modifications or improvements can be made to the above embodiments. It will be clear from the claims that such modified or improved forms may also be included in the technical scope of the present invention.
[0109] It should be noted that the execution order of operations, procedures, steps, and stages in the devices, systems, programs, and methods shown in the claims, specifications, and drawings is not explicitly stated as "before" or "prior to," and that these can be performed in any order unless the output of a previous operation is used in a later operation. Even if the operation flow in the claims, specifications, and drawings is described using phrases such as "first," and "next," for convenience, this does not mean that it is mandatory to perform the operations in that order.
[0110] 10 System, 20 Industrial Machinery, 100 Simulation Device, 102 HW, 104 nRTOS, 106 Container Engine, 120 Virtual Controller, 121 Virtual HW Control, 122 Virtual HW, 124 RTOS, 126 Virtual Controller Control Function, 128 Application, 130 Timing Control Unit, 132 Management Unit, 134 Communication Unit, 152 Information Acquisition Unit, 154 Implementation Unit, 156 Management Unit, 200 Controller, 202 HW, 204 RTOS, 206 Controller Control Function, 208 Application, 310 Mounting Unit, 320 Power Supply Unit, 420 Main Control Unit, 421 Virtual HW Control, 422 Virtual HW, 424 RTOS, 430 Main Control Function, 432 Communication Unit, 1200 Computer, 1210 Host controller, 1212 CPU, 1214 RAM, 1216 Graphics controller, 1218 Display device, 1220 Input / Output controller, 1222 Communication interface, 1224 Storage device, 1230 ROM, 1240 Input / Output chip
Claims
1. A simulation device for simulating processing by a controller that controls industrial machinery, comprising: a non-real-time OS that does not guarantee real-time operation; and a virtual controller that virtually reproduces the operation of the controller, wherein the virtual controller comprises: virtual hardware implemented on the non-real-time OS; a real-time OS implemented on the virtual hardware; and a virtual controller control function implemented on the real-time OS that simulates processing by the controller that controls the industrial machinery.
2. The simulation apparatus according to claim 1, wherein the virtual controller has virtual hardware that virtually realizes at least a part of the hardware of the controller to be simulated.
3. The simulation apparatus according to claim 2, wherein the industrial machine and the controller are used in the production of a product, and the virtual controller has the virtual hardware which virtually realizes at least one of the processor, network unit, and storage of the controller.
4. The simulation apparatus according to any one of claims 1 to 3, comprising a plurality of virtual controllers, each corresponding to a plurality of controllers, each having the virtual hardware, the real-time OS, and the virtual controller control function.
5. The simulation apparatus according to claim 4, wherein at least two of the plurality of virtual controllers are implemented on different non-real-time operating systems.
6. The simulation apparatus according to claim 4 or 5, wherein the plurality of controllers are capable of performing coordinated actions on an object by the plurality of industrial machines to be controlled, and the simulation apparatus virtually realizes the coordinated actions by the plurality of controllers by the plurality of virtual controllers.
7. The simulation apparatus according to any one of claims 4 to 6, wherein each of the plurality of virtual controllers further has a timing control unit that causes the virtual controller control function to start the processing assigned to the interrupt in response to receiving an interrupt notification.
8. The simulation apparatus according to claim 7, wherein the timing control unit, after receiving notification of one interrupt and causing the virtual controller control function to start the processing assigned to the first interrupt, receives notification of the next interrupt, confirms that the processing assigned to the first interrupt has been completed, and after confirmation is complete, causes the virtual controller control function to start the processing assigned to the next interrupt.
9. The simulation apparatus according to claim 7, further comprising a communication unit that virtually simulates interrupt signals transmitted via hardwires between the plurality of controllers and transmits notifications of the interrupts to the plurality of timing control units.
10. The simulation apparatus according to claim 7, further comprising a communication unit that, after sending a notification of one interrupt to one of the multiple timing control units, confirms that the processing assigned to the first interrupt has been completed, and after confirmation is complete, sends a notification of the next interrupt to the first timing control unit.
11. The simulation apparatus according to claim 7, wherein the timing control unit transmits the interrupt notification to the timing control unit of the virtual controller that is the synchronization partner among the plurality of virtual controllers, in response to the generation of the interrupt notification by the virtual controller control function of the virtual controller having the timing control unit.
12. The simulation apparatus according to claim 7, further comprising a main control unit that transmits interrupt notifications to a plurality of timing control units, wherein the main control unit comprises: virtual hardware implemented on the non-real-time OS; a real-time OS implemented on the virtual hardware; and a main control function implemented on the real-time OS.
13. The simulation apparatus according to any one of claims 1 to 12, further comprising: an information acquisition unit that acquires controller information including the type of controller to be simulated; and an implementation unit that implements the virtual hardware corresponding to the controller based on the controller information acquired by the information acquisition unit.
14. A system comprising the simulation apparatus described in any one of claims 1 to 13 and the controller.
15. A program for causing a computer having a non-real-time OS that does not guarantee real-time performance to execute the following steps: implementing virtual hardware on the non-real-time OS; implementing a real-time OS on the virtual hardware; and implementing a virtual controller control function on the real-time OS that simulates processing by a controller that controls industrial machinery.
16. An implementation method to be performed by a computer having a non-real-time OS that does not guarantee real-time performance, comprising the steps of: implementing virtual hardware on the non-real-time OS; implementing a real-time OS on the virtual hardware; and implementing a virtual controller control function on the real-time OS that simulates processing by a controller that controls industrial machinery.