Simulation system, method of simulation system, and simulation program
The simulation system efficiently verifies programs by recording and replaying simulations with detailed logs, addressing inefficiencies in existing verification methods.
Patent Information
- Application Number
- JP2021108831
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2021-06-30
- Publication Date
- 2025-07-15
- Estimated Expiration
- 2041-06-30
AI Technical Summary
Existing simulation technologies require repeated reproduction to verify programs, which is time-consuming and inefficient.
A simulation system that records position information and variable values for each execution time, allowing for efficient debugging by displaying and replaying simulations, and storing only differences in logs to conserve storage.
Enables efficient program verification by allowing users to identify and debug issues quickly through detailed simulation replay and comparison with actual environment logs, reducing time and resource consumption.
Smart Images

Figure 0007707693000001 
Figure 0007707693000002 
Figure 0007707693000003
Abstract
Description
Technical Field
[0001] The present disclosure relates to a simulation system, and more particularly to a debugging function of a program.
Background Art
[0002] Simulations using computers are applied in various technical fields. By using such simulations, various preliminary studies can be carried out even in a state where a real device does not exist.
[0003] Regarding simulations, for example, Japanese Patent Application Laid-Open No. 2021-045797 (Patent Document 1) discloses "a first behavior calculation unit that calculates the behavior of a first object arranged in a virtual space corresponding to a first device to which an accessory device is attached, and a second behavior calculation unit that calculates the behavior of a second object in a virtual space corresponding to a second device, the second device including the accessory device. For each predetermined time step, at the time step, the first behavior calculation unit calculates the behavior of the first object corresponding to the first device to which the accessory device is attached, and then the second behavior calculation unit calculates the behavior of the accessory device attached to the first device based on the calculated behavior of the first object" ([Summary] reference).
Prior Art Documents
Patent Documents
[0004]
Patent Document 1
Summary of the Invention
Problems to be Solved by the Invention
[0005] According to the technology disclosed in Patent Document 1, it is necessary to repeatedly reproduce a simulation for verifying a program for operating a device, and it may take a lot of time to verify the program. Therefore, a simulation technology for more efficiently verifying a program is required.
[0006] The present disclosure has been made in view of the above background, and an object in one aspect is to provide a simulation technology for more efficiently verifying a program.
Means for Solving the Problems
[0007] According to an embodiment, a simulation system is provided. The simulation system includes a simulation unit that executes a simulation of the operation of one or more devices, one or more execution times during the simulation, position information of each of one or more objects in the simulation, and a data input unit that acquires the value of each of one or more variables referred to by a program for operating one or more devices, and for each of the one or more execution times, associates the position information of each of the one or more objects and the value of each of the one or more variables and stores them as a first log, and a display unit that displays the position information of each of the one or more objects and the value of each of the one or more variables for each of the one or more execution times included in the first log.
[0008] According to this disclosure, the simulation system can present the position information of each of the one or more objects and the value of each of the one or more variables for each of the one or more execution times. Thereby, the user can confirm both the position of the object and the value of the variable referred to by the program for each execution time of the simulation. Therefore, for example, when the position or operation of the object at execution time A is not as intended, the user can immediately check the value of the variable at execution time A (easily find the problem points of the program), and as a result, the program can be debugged efficiently.
[0009] In the above disclosure, the simulation unit is configured to be reproducible while pausing the simulation at each execution time based on the first log. The display unit is configured to be able to display the simulation screen for each execution time and the first log for each execution time.
[0010] According to this disclosure, the simulation system can reproduce the simulation while pausing the simulation at each execution time.
[0011] In the above disclosure, the simulation unit is configured to be reversibly reproducible while pausing the simulation at each execution time based on the first log. The display unit is configured to be able to display the simulation screen for each execution time and the first log for each execution time.
[0012] According to this disclosure, the simulation system can reversibly reproduce the simulation while pausing the simulation at each execution time. For example, the user can rewind a problematic simulation scene a little to trace the movement of the program in more detail.
[0013] In the above disclosure, the simulation system further includes a data difference extraction unit for extracting the difference between the first log and the previously recorded data. The data recording unit stores the difference.
[0014] According to this disclosure, the simulation system can save the storage capacity of the log by only storing the differences.
[0015] In the above disclosure, the data input unit further has a function of acquiring one or more timestamps in the actual environment, position information of each of one or more objects in the actual environment, and values of each of one or more variables referred to by a program for operating one or more devices in the actual environment. The data recording unit further has a function of associating the position information of each of one or more objects in the actual environment and the value of each of one or more variables referred to by a program for operating one or more devices in the actual environment for each of one or more timestamps in the actual environment and storing them as a second log.
[0016] According to this disclosure, the simulation system can acquire not only the logs in the simulation but also the logs in the actual environment.
[0017] In the above disclosure, the simulation system further includes a synchronization unit for associating the execution time of the first log and the execution time of the second log. The display unit is configured to be able to display the first log and the second log at the same execution time.
[0018] According to this disclosure, the simulation system can synchronize the execution time of the first log in the simulation and the execution time of the second log in the actual environment and display the first and second logs in a comparable manner.
[0019] In the above disclosure, the display unit is configured to be able to display a graph of the value of each of one or more variables for each execution time included in the first log.
[0020] According to this disclosure, the simulation system can intuitively display the change in the value of each of one or more variables by a graph.
[0021] In the above disclosure, the display unit is configured to be able to display while reproducing the operation of the program based on the value of each of one or more variables for each execution time included in the first log.
[0022] According to this disclosure, the simulation system can present the state of the program for each execution time to the user based on the value of each of one or more variables.
[0023] In the above disclosure, the display unit is configured to be able to display the simulation screen for each execution time during the simulation and the flowchart of the program for each execution time during the simulation. The display unit highlights the execution location of the flowchart for each execution time during the simulation.
[0024] According to this disclosure, the simulation system can present the simulation screen and the execution location of the flowchart to the user simultaneously.
[0025] In the above disclosure, the simulation unit further includes a function of receiving a selection input of a variable that traces the value for each execution time from among one or more variables included in the program.
[0026] According to this disclosure, the simulation system can allow the user to select a variable that needs to be traced.
[0027] In the above disclosure, the simulation unit further includes a function of receiving a setting input of the reproduction start time and the reproduction end time of the simulation.
[0028] According to this disclosure, the simulation system can receive a setting input of the reproduction start time and the reproduction end time of the simulation.
[0029] In the above disclosure, the data recording unit records the count of cycles and steps when the program is executed as the execution time during the simulation.
[0030] According to this disclosure, the simulation system can record the count of cycles and steps when the program is executed as the execution time during the simulation.
[0031] According to another embodiment, a method executed by a simulation system is provided. The method includes executing a simulation of the operation of one or more devices, obtaining one or more execution times during the simulation, obtaining the position information of each of one or more objects within the simulation, and obtaining the value of each of one or more variables referenced by a program for operating the one or more devices. For each of the one or more execution times, the method further includes associating the position information of each of the one or more objects and the value of each of the one or more variables and storing them as a first log, and displaying the position information of each of the one or more objects and the value of each of the one or more variables for each of the one or more execution times included in the first log.
[0032] According to this disclosure, the method may present the position information of each of the one or more objects and the value of each of the one or more variables for each of the one or more execution times. Thereby, the user can check both the position of the object and the value of the variable referenced by the program for each execution time of the simulation.
[0033] According to another embodiment, a program for causing one or more processors to execute the above method is provided.
[0034] According to this disclosure, the program may present the position information of each of the one or more objects and the value of each of the one or more variables for each of the one or more execution times. Thereby, the user can check both the position of the object and the value of the variable referenced by the program for each execution time of the simulation.
Advantages of the Invention
[0035] According to one embodiment, it is possible to provide a simulation technique for more efficiently verifying a program.
[0036] The above and other objects, features, aspects and advantages of this disclosure will become apparent from the following detailed description of the disclosure, which is to be understood in conjunction with the accompanying drawings.
Brief Description of the Drawings
[0037]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
Figure 13
Figure 14
Figure 15
Figure 16
Figure 17
Mode for Carrying Out the Invention
[0038] Hereinafter, embodiments of the technical idea according to the present disclosure will be described with reference to the drawings. In the following description, the same parts are denoted by the same reference numerals. Their names and functions are also the same. Therefore, detailed descriptions thereof will not be repeated.
[0039] <A. Application Example> First, with reference to FIGS. 1 and 2, an example of a scenario to which the present invention is applied will be described.
[0040] (a. Equipment to be simulated) FIG. 1 is a diagram showing an example of equipment whose operation can be simulated by a simulation system according to the present embodiment. The simulation system 500 (see FIG. 5) according to the present embodiment can, as an example, simulate the operation of any equipment used in factory FA (Factory Automation) or the like. The simulation system 500 can simulate the operations of a robotic arm, a belt conveyor, a rotary knife, sensors, any other equipment, and combinations thereof.
[0041] The device 150 shown in FIG. 1 is a composite device consisting of a conveyor 151 and a rotary knife 154. The device 150 has a function of cutting the sheet 158 flowing on the conveyor 151 to a predetermined length. The device 150 includes, as its components, a conveyor 151, a motor 152, a motor control device 153, a rotary knife 154, a motor 155, a motor control device 156, and a sensor 157.
[0042] The conveyor 151 transports the sheet 158. The motor 152 is connected to the main shaft for rotating the conveyor and drives the conveyor 151. The motor control device 153 controls the speed or torque of the motor 152.
[0043] The rotary knife 154 has knives provided on a rotating roller. When the roller rotates, the knives cut the sheet 158 flowing on the conveyor 151. The motor 155 is connected to the roller of the rotary knife 154 and drives the rotary knife 154. The motor control device 156 controls the speed or torque of the motor 155.
[0044] The sensor 157 detects the cut position 159 on the sheet 158. The rotary knife 154 cuts the cut position 159 detected by the sensor 157.
[0045] The motor control devices 153, 156, and the sensor 157, etc. can be connected to a PLC (Programmable Logic Controller) 200 (see FIG. 3), etc. In this case, the PLC 200 can read a signal from the sensor 157 and control the rotary knife 154 based on the signal. The PLC 200 controls the device 150 based on the installed program.
[0046] The simulation system 500 reproduces, within the simulation, the operation of the PLC 200 with the program installed and the operation of the device 150 controlled by the PLC 200. The user can debug the PLC program by checking the operation of the device 150 within the simulation. In certain situations, the program that the simulation system 500 can simulate may be an IEC program. The IEC program is a program compliant with the IEC 61131-3 standard and includes a ladder program, ST (Structured Text), etc.
[0047] (b. Function of the simulation system) FIG. 2 is a diagram showing an example of the state of execution of the simulation by the simulation system 500. With reference to FIG. 2, the functions of the simulation system 500 will be described. The simulation system 500 includes a simulation recording function and a program debugging function using the recorded simulation results. In the following description, the functions of the simulation system 500 will be described taking the device 150 as an example.
[0048] (b-1. Simulation recording function) First, the simulation recording function will be described. As described above, the simulation system 500 performs a simulation in a 3D (Three-Dimensional) space and reproduces the operation of the PLC 200 with the program installed and the operation of the device 150 controlled by the PLC 200.
[0049] At that time, the simulation system 500 records a simulation log 250. The simulation log 250 includes the position information 252 of the objects in the 3D space for each execution time (or execution timing) of the program and the values 254 of the variables of the program for each execution time. The objects in the 3D space here can include, for example, devices in the 3D space, components constituting the devices, workpieces, any other objects, and combinations thereof.
[0050] In a certain situation, the execution time (or execution timing) may be defined by the steps of the program instructions and the number of times the program is repeatedly executed (cycles). A step, for example, indicates one instruction unit of the program, or the instructions for one line of the program described in the editor (one instruction of the ladder program, or one line of ST described in the editor, etc.). When one instruction or the instructions for one line of the program are executed (such as when one instruction of the ladder program or the instructions for one line of ST described in the editor are executed), it is regarded as one step advanced. Note that the interval between steps can be determined by the instruction cycle of the PLC200. As an example, assume that the program contains instructions of 10 steps. In this case, when the instructions of 10 steps are executed, the program has been executed once (cycle), and when the instructions of 100 steps are executed, the program has been repeatedly executed 10 times (cycles). Also, in other situations, the execution time (or execution timing) may be defined at arbitrary time intervals determined in advance (1 second, 100 milliseconds, etc.).
[0051] In the example shown in FIG. 2, the simulation system 500 records the position information 252 of the object in the 3D space and the value 254 of the program variable at the execution time (3420 cycles, 118 steps) as the simulation log 250 in an associated manner.
[0052] The position information 252 of the object in the 3D space includes the position information of each of one or more objects existing in the 3D space. In the example shown in FIG. 2, the position information 252 of the object in the 3D space includes the angle of the main axis 240 (the axis of the conveyor connected to the motor 152), the angle of the sub-axis 245 (the roller of the rotary knife 154), the cut position 248 (the position of the blade), and the positions of other objects.
[0053] The value 254 of the variables of the program includes the values of each of one or more variables referenced from the program 253 installed in the PLC 200. In the example shown in FIG. 2, the value 254 of the variables of the program includes the value of GEAROMPOS1_STARTSYNC, the value of GEAROMPOS1_INSYNC, the value of MC_Axis000.Act.Pos, the value of MC_Axis001.Act.Pos, and the values of other variables.
[0054] (b-2. Debug Function) Next, the debug function will be described. The simulation system 500 can reproduce the simulation based on the simulation log 250 and display the scene of the simulation for each step on the screen 251.
[0055] The screen 251 includes the display 260 of the 3D space, the display 265 of the program, the position information 252 of the objects in the 3D space for each execution time, and the value 254 of the variables of the program for each execution time.
[0056] In addition, the simulation system 500 has a function of reproducing or reverse-reproducing the simulation while pausing temporarily for each step based on an operation input from the user.
[0057] For example, assume that the scene of the simulation is the first execution time. In this case, on the screen 251, the display 260 of the 3D space, the display 265 of the program, the position information 252 of the objects in the 3D space, and the value 254 of the variables of the program at the first execution time are displayed.
[0058] Based on the operation input from the user, assume that the simulation scenario has advanced (or regressed) one step from the first execution time to the second execution time. In this case, on the screen 251, the display 260 of the 3D space, the display 265 of the program, the position information 252 of the object in the 3D space, and the value 254 of the variable of the program are displayed at the second execution time. In a certain situation, the display 265 of the program may include the execution state of the program with the value 254 of the variable of the program substituted.
[0059] By referring to the screen 251, the user can simultaneously check the display 260 of the 3D space, the display 265 of the program, the position information 252 of the object in the 3D space, and the value 254 of the variable of the program. Thereby, the user can easily debug the program while checking the operation of the device 150.
[0060] <B. System Configuration> Next, with reference to FIGS. 3 to 5, the overall image of the system to be simulated by the simulation system 500, the hardware configuration of the device operating as the simulation system 500, and the functional configuration of the simulation system 500 will be described.
[0061] FIG. 3 is a diagram showing an example of the unit configuration of the control system 2 including a device to which the simulation technology according to the present embodiment can be applied. The device 150 shown in FIG. 1 can be realized, for example, as a part of the control system 2.
[0062] As an example, the control system 2 includes a PLC 200, servo motor drivers 531 and 532 and an IO remote terminal 5 connected to the PLC 200 via a field network 22, a robot controller 310, and IO devices (sensors 6 and encoders 236, 238, etc.) provided in the field.
[0063] The PLC 200 includes an arithmetic unit 13 that executes main arithmetic processing, one or more IO units 14, and a special unit 17. These units are configured to exchange data with each other via a system bus 81 and receive power supply from a power supply unit 12. An apparatus 100 for simulation may be connected to the arithmetic unit 13.
[0064] The apparatus 100 may operate as a simulation system 500. Also, the apparatus 100 may install a program whose operation verification in simulation has been completed in the arithmetic unit 13. The arithmetic unit 13 may control each apparatus included in the control system 2 based on the installed program. The apparatus 100 may be connected to the arithmetic unit 13 via a network 80.
[0065] The IO unit 14 collects detection values 61, 237, and 239 from IO devices including sensors 6, encoders 236, 238, etc. For example, the sensor 6 may be a sensor 157 for detecting the cut position 159 of the sheet 158 shown in FIG. 1. Also, the encoders 236, 238 may be attached to a motor 152 for driving the conveyor 151 or a motor 155 for driving the rotary knife 154. The detection value from each IO device is set (written) to a corresponding bit of a memory included in the IO unit 14, for example.
[0066] The arithmetic unit 13 executes the calculation of the control program using the values collected by the IO unit 14 and sets (writes) the calculated result value to the corresponding bit of the IO unit 14. The peripheral devices or IO devices operate by referring to the value of each bit of the IO unit 14. In this way, the PLC 200 can control a robot or a conveyor, etc. that is the control target while mutually exchanging data with the IO devices and peripheral devices via the IO unit 14.
[0067] The special unit 17 has functions such as input / output of analog data, temperature control, and communication by a specific communication method, which are not supported by the IO unit 14.
[0068] For example, a robot controller 310, servo motor drivers 531, 532, and an IO remote terminal 5 may be connected to the field network 22.
[0069] Basically, the IO remote terminal 5 performs processing related to general input / output in the same way as the IO unit 14. More specifically, the IO remote terminal 5 includes a communication coupler 52 for performing processing related to data transmission in the field network 22 and one or more IO units 53. These units are configured to be able to exchange data with each other via the IO remote terminal bus 51.
[0070] The servo motor drivers 531, 532 are connected to the arithmetic unit 13 via the field network 22 and drive the servo motors 41, 42 according to command values from the arithmetic unit 13. Specifically, the servo motor drivers 531, 532 receive command values such as position command values, speed command values, and torque command values from the PLC 200 at a fixed cycle such as a control cycle. The arithmetic unit 13 may generate these command values based on the detection values 237, 239 from the encoders 236, 238. In a certain aspect, the servo motors 41, 42 may be used as a motor 155 that drives the rotary knife 154.
[0071] By referring to the detection values from the above-described IO devices and executing a predetermined control program, the arithmetic unit 13 can cause the robot hand 210 to perform operations such as picking and placing a workpiece and holding the workpiece.
[0072] Specifically, the arithmetic unit 13 generates a control command 211 for the robot arm and a control command 222 for the robot hand 210, and outputs these control signals to the robot hand 210 via the robot controller 310. Also, when generating the control command 211, the arithmetic unit 13 can refer to the state value of the robot hand 210 in addition to the detection value 61 from the IO device described above. The robot arm may include any number of servo motors, such as servo motors 1301 to 1304.
[0073] The simulation system 500 may simulate the entire control system 2 described above, or may simulate only a part of the configurations included in the control system 2.
[0074] FIG. 4 is a diagram showing an example of the hardware configuration of the device 100. The device 100 can operate as a simulation system 500. In a certain aspect, the simulation system 500 may be realized by a plurality of devices 100, a system including at least a part of the hardware configuration of the device 100, a virtual machine on a cloud environment including at least a part of the hardware configuration of the device 100, and the like.
[0075] The device 100 includes, as main components, a processor 102 that executes an operating system (OS) and a program operating on the OS, a main memory 104 that provides a working area for storing data necessary for the execution of the program by the processor 102, an operation unit 106 (operation reception unit) that receives user operations such as a keyboard and a mouse, an output unit 108 that outputs processing results such as a display 109, various indicators, and a printer, a network interface 110 connected to various networks including the network 80, an optical drive 112, a local communication interface 116 that communicates with an external device, and a storage 111. These components are connected to be data - communicable via an internal bus 118 or the like.
[0076] The device 100 has an optical drive 112 and reads various programs from a computer-readable recording medium 114 including an optical recording medium (e.g., a DVD (Digital Versatile Disc), etc.) that non-transitorily stores a computer-readable program, and may install the various programs in the storage 111 or the like.
[0077] The various programs executed in the device 100 may be installed in the device 100 via the computer-readable recording medium 114, or may be installed in the device 100 from a server device (not shown) on the network via the network interface 110.
[0078] The storage 111 is composed of, for example, an HDD (Hard Disk Drive) or an SSD (Flash Solid State Drive), etc., and stores programs executed by the processor 102. More specifically, the storage 111 stores the OS 120 and the integrated development environment 130. The integrated development environment 130 may be realized as an application operating on the OS 120.
[0079] The integrated development environment 130 provides the functions of the simulation system 500 described with reference to FIG. 1. In other words, when the processor 102 executes the integrated development environment 130 deployed in the main memory 104, the functions of the simulation system 500 are realized.
[0080] In a certain aspect, the recording function and the debugging function of the simulation described with reference to FIG. 1 may be realized as add-ins of the integrated development environment 130.
[0081] In a certain aspect, the device 100 may realize some or all of the functions of the integrated development environment 130 using an ASIC (Application Specific Integrated Circuit) or an FPGA (Field-Programmable Gate Array), etc.
[0082] FIG. 5 is a diagram showing an example of the functional configuration of the simulation system 500. Each functional configuration shown in FIG. 5 can be realized as a program component. In this case, each functional configuration can operate as software on the hardware of the apparatus 100.
[0083] The simulation system 500 includes, as functional configurations, a 3D shape display unit 510, a PLC simulation unit 520, an IEC program editing unit 530, a variable memory graph display unit 540, a data management unit 550, an actual machine / simulation data comparison unit 560, and a repository 570.
[0084] The 3D shape display unit 510 draws a simulation in a 3D space on a display. As a configuration therefor, the 3D shape display unit 510 includes a 3D shape reading unit 511, a 3D shape drawing unit 512, and a 3D memory display unit 513.
[0085] The 3D shape reading unit 511 reads a CAD file 580 used in the simulation and converts the CAD file 580 so as to be drawable by the 3D shape drawing unit 512. In a certain aspect, the 3D shape reading unit 511 may read the CAD file 580 from the storage 111. In another aspect, the 3D shape reading unit 511 may read the CAD file 580 input from the outside via the network interface 110, the optical drive 112, or the local communication interface 116.
[0086] The 3D shape drawing unit 512 displays an object (data obtained from the 3D shape reading unit 511) and the operation of the object in a 3D space on the display 109. The object in the 3D space may include not only each device included in the control system 2 but also a workpiece or the like. For example, the 3D shape drawing unit 512 displays a 3D space display 260 on the display 109.
[0087] The 3D memory display unit 513 displays the position information 252 of the objects in the 3D space for each execution time on the display 109. Also, it reads the simulation log 250 from the repository 570 and reproduces the simulations recorded in the past. In a certain aspect, when reproducing the simulations recorded in the past, the 3D memory display unit 513 may use the drawing function of the 3D shape drawing unit 512. In a certain aspect, the 3D memory display unit 513 may draw all the screens shown in FIGS. 2 and 11 to 14.
[0088] The PLC simulation unit 520 executes the program installed in the PLC 200 in simulation. As a configuration therefor, the PLC simulation unit 520 includes a step execution unit 521. In a certain aspect, the PLC simulation unit 520 may also have a display function during the reproduction of the simulation. In this case, the PLC simulation unit 520 may draw all the screens shown in FIGS. 2 and 11 to 14.
[0089] The step execution unit 521 executes the program for each step. The step execution unit 521 can also reproduce or reverse reproduce the simulation log 250 recorded in the repository 570 for each step. Further, the step execution unit 521 displays the value 254 of the variables of the program for each execution time on the display 109. The 3D shape display unit 510 can update the display of the objects in the 3D space based on the execution position (step position) and the number of executions (cycle number) of the program acquired from the step execution unit 521.
[0090] The IEC program editor 530 receives the editing operation of the program via the operation unit 106. In a certain aspect, the step execution unit 521 may immediately reflect the change of the program by the IEC program editor 530 and execute the simulation.
[0091] The variable memory graph display unit 540 can display a graph 1310 or the like (see FIG. 13) indicating changes in the values of variables on the display 109 based on the variable memory 572 recorded in the repository 570.
[0092] The data management unit 550 manages the simulation log 250. As a configuration therefor, the data management unit 550 includes a data input unit 551, a data reading unit 552, a data difference extraction unit 553, and a data difference recording unit 554. In a certain aspect, the data management unit 550 may acquire settings for recording the simulation via the operation unit 106. The settings for recording the simulation include specification of an object to be recorded, specification of variables to be recorded, specification of a period during which the simulation is executed, and the like. The data management unit 550 can record the simulation log 250 based on the acquired settings. In a certain aspect, the period during which the simulation is executed may be set by the start time and end time of the simulation. In another aspect, the period during which the simulation is executed may be set by the number of program steps and cycles at the start and the number of program steps and cycles at the end.
[0093] The data input unit 551 acquires the position information 252 of the object in the 3D space for each execution time from the 3D shape display unit 510. Further, the data reading unit 552 acquires the values 254 of the variables of the program for each execution time from the PLC simulation unit 520.
[0094] The data reading unit 552 passes the data of the 3D simulation memory 571 to the 3D shape display unit 510 during debugging (when reproducing the recorded simulation). Similarly, the data reading unit 552 passes the data of the variable memory 572 to the PLC simulation unit 520 during debugging.
[0095] The data difference extraction unit 553 extracts the difference in execution time of the data (the position information 252 of the object in the 3D space and the value 254 of the variable of the program) acquired by the data input unit 551. More specifically, the data difference extraction unit 553 compares the position information 252 of the object in the 3D space at the first execution time with the position information 252 of the object in the 3D space at the second execution time, and extracts the difference in the position of the object. Similarly, the data difference extraction unit 553 compares the value 254 of the variable of the program at the first execution time with the value 254 of the variable of the program at the second execution time, and extracts the difference in the value of the variable.
[0096] The data difference recording unit 554 stores the difference in the position of the object in the 3D simulation memory 571 as part of the simulation log 250. Also, the data difference recording unit 554 stores the difference in the value of the variable in the variable memory 572 as part of the simulation log 250.
[0097] If the position information 252 of all the objects in the 3D space and the value 254 of the variable of the program are stored in the repository 570 for each step, the simulation log 250 will become an enormous amount. Therefore, the data difference extraction unit 553 and the data difference recording unit 554 save only the difference from the previous record in the repository 570, thereby saving the storage capacity of the repository 570.
[0098] The actual machine - simulation data comparison unit 560 compares the execution result in the simulation of the program with the execution result in the actual environment of the program. As a configuration for that, the actual machine - simulation data comparison unit 560 includes a synchronization unit 561, a data comparison unit 562, and a display unit 563.
[0099] In a certain situation, based on the video of the camera and signals obtained from sensors, etc., the PLC simulation unit 520 may output to the data management unit 550 in association with the time stamp, the position information of the object for each execution time, and the value of the variable of the program in the actual environment. The actual machine / simulation data comparison unit 560 can compare the execution result in the simulation of the program and the execution result in the actual environment of the program by reproducing the simulation log 250 stored in the repository 570 and the log of the actual environment (not shown).
[0100] The synchronization unit 561 matches the cycle of the simulation and the cycle of the actual environment. More specifically, it associates the execution time (cycle and step) of the simulation and the execution time (time stamp, or the step and cycle of the program in the actual environment) of the actual environment.
[0101] The data comparison unit 562 compares the execution result in the simulation of the program and the execution result in the actual environment of the program at the same execution time.
[0102] The display unit 563 can display the execution result in the simulation of the program and the execution result in the actual environment of the program at the same execution time. In a certain situation, the display unit 563 may display the difference between the execution result in the simulation of the program and the execution result in the actual environment of the program on the display 109. In other situations, the display unit 563 may highlight the difference between the execution result in the simulation of the program and the execution result in the actual environment of the program. Thereby, the user can easily modify the program according to the actual environment.
[0103] The repository 570 records the simulation log 250. The repository 570 includes a 3D simulation memory 571 and a variable memory 572. In a certain situation, the repository 570 may be a repository of a version management system.
[0104] The 3D simulation memory 571 stores, for each step, the position information 252 of the objects in the 3D space associated with the execution time.
[0105] The variable memory 572 stores, for each step, the value 254 of the variables of the program associated with the execution time.
[0106] Also, the repository 570 can record the execution log of the program in the actual environment. In this case, the repository 570 stores, for each step, the position information of the objects in the actual environment associated with the execution time of the actual environment. Similarly, the repository 570 stores, for each step, the value of the variables of the program in the actual environment associated with the execution time of the actual environment.
[0107] <C. Procedure for Recording Simulation Log> Next, with reference to FIGS. 6 to 10, a procedure for the simulation system 500 to record the simulation log 250 will be described. In the example shown in FIGS. 6 to 10, the simulation system 500 records the simulation log 250 of the device 150.
[0108] FIG. 6 is a diagram showing a first example of the state of the simulation. In the example shown in FIG. 6, the simulation system 500 is executing the program 611 within the simulation. The movement and position of each object are reproduced in the 3D space 601.
[0109] The 3D space 601 includes each object in the 3D space at the execution time (1920 cycles, 118 steps). The execution time (1920 cycles, 118 steps) means, in other words, that the number of times the PLC 200 executes the program 611 is the 1920th time, and indicates the point in time when the PLC 200 executes the 118th step of the program 611.
[0110] Simulation system 500 stores, as simulation log 250, the position information of the objects in 3D space 601 and the values of the variables of the program for each execution time in repository 570 every time PLC 200 executes program 611 by one step in the simulation. More specifically, simulation system 500 stores the difference information from the previous record in repository 570.
[0111] In the case of the example shown in FIG. 6, simulation system 500 stores, as simulation log 250, the position information 602 of the objects in the 3D space and the values 612 of the variables of the program in repository 570 at the execution time (1920 cycles, 118 steps).
[0112] FIG. 7 is a diagram showing a second example of the state of the simulation. The example shown in FIG. 7 shows a state where the execution state of program 611 is advanced by one step from the state shown in FIG. 6. 3D space 601 includes each object in the 3D space at the execution time (1920 cycles, 119 steps).
[0113] Since PLC 200 executes program 611 by one step in the simulation, simulation system 500 attempts to store, as simulation log 250, the position information 702 of the objects in the 3D space and the values 712 of the variables of the program in repository 570 at the execution time (1920 cycles, 119 steps).
[0114] At this time, the position information 602 of the object in the 3D space and the value 612 of the variables of the program at the execution time (1920 cycles, 118 steps), and the position information 702 of the object in the 3D space and the value 712 of the variables of the program at the execution time (1920 cycles, 119 steps) differ only in "GEAROMPOS1_INSYNC". In this case, the simulation system 500 stores the value of the differential "GEAROMPOS1_INSYNC" as the simulation log 250 in the repository 570. In this way, the simulation system 500 can save the storage capacity of the repository 570 by storing the difference from the previously recorded simulation log 250 in the repository 570.
[0115] Figure 8 is a diagram showing a third example of the state of the simulation. The example shown in Figure 8 shows the state where the execution state of the program 611 has advanced 1500 cycles from the state shown in Figure 6. The 3D space 601 includes each object in the 3D space at the execution time (3420 cycles, 118 steps).
[0116] The simulation system 500 continuously stores the simulation log 250 in the repository 570 each time the PLC 200 executes one step of the program 611 in the simulation. At that time, the simulation system 500 stores only the difference from the previously recorded simulation log 250 in the repository 570.
[0117] At the time shown in Figure 8, the repository 570 stores the position information 802 of the object in the 3D space and the value 812 of the variables of the program at the execution time (3420 cycles, 118 steps), which is 1500 cycles further ahead from the time shown in Figure 6, as the simulation log 250 in the repository 570.
[0118] FIG. 9 is a diagram showing a first example of data stored in the repository 570. In the example shown in FIG. 9, the repository 570 stores the simulation log 250. The simulation log 250 includes the value 901 of the IEC variable, the value 902 of the robot variable, the count 903 of the steps and cycles of the IEC program, and the position information 252 of the object in the 3D space.
[0119] The value 901 of the IEC variable and the value 902 of the robot variable are included in the value 254 of the program variable. The value 901 of the IEC variable includes the values of one or more variables referenced in the program executed by the PLC 200. The value 902 of the robot variable includes variables for control such as the robot hand 210.
[0120] The count 903 of the steps and cycles of the IEC program includes the number of times (cycles) the program has been repeatedly executed and the step immediately preceding. The count 903 of the steps and cycles of the IEC program is associated with the position information 252 of the object in the 3D space and the value 254 of the program variable as the execution time (or execution timing) of the simulation.
[0121] The value 901 of the IEC variable, the value 902 of the robot variable, the count 903 of the steps and cycles of the IEC program, and the position information 252 of the object are stored in the repository 570 as the difference information of the simulation log 250 for each step.
[0122] In a certain situation, if there is no difference between the simulation log 250 saved in the repository 570 last time and the current simulation log 250, the simulation system 500 may not need to save the current simulation log 250 to the repository 570. Also, in another situation, if there is no difference between the simulation log 250 saved in the repository 570 last time and the current simulation log 250, the simulation system 500 may save the count 903 of the steps and cycles of the IEC program to the repository 570 without saving the value 901 of the IEC variable, the value 902 of the robot variable, and the position information 252 of the object in the 3D space to the repository 570.
[0123] FIG. 10 is a diagram showing a second example of the data stored in the repository 570. In the example shown in FIG. 10, the repository 570 stores the simulation log 250 of the program and the log 1050 of the actual environment of the program.
[0124] The log 1050 of the actual environment includes the value 1011 of the IEC variable in the actual environment, the value 1012 of the robot variable in the actual environment, the count 1013 of the steps and cycles of the IEC program in the actual environment, and the position information 1014 of the object in the actual environment.
[0125] The value 1011 of the IEC variable in the actual environment includes the values of one or more variables referenced by the program executed by the PLC 200 when the program is executed in the actual environment.
[0126] The value 1012 of the robot variable in the actual environment includes variables for control such as the robot hand 210 when the program is executed in the actual environment.
[0127] The step and cycle count 1013 of the IEC program in the actual environment indicates the execution time when the program is executed in the actual environment. In a certain aspect, the step and cycle count 1013 of the IEC program in the actual environment may include a time stamp calculated from the execution cycle of the program of the PLC 200 or the like. In another aspect, the simulation system 500 may determine that the time when a certain sensor detects the operation of the workpiece or the device is the first step of the program in the actual environment. The simulation system 500 can synchronize the execution timing of the program in the simulation with the execution timing of the program in the actual environment by associating the first step of the program in the actual environment with the first step of the program in the simulation.
[0128] The position information 1014 of the object in the actual environment indicates the position of the object when the program is executed in the actual environment. In a certain aspect, the position information 1014 of the object in the actual environment can be detected using a camera (or 3D camera), sensors, etc. The simulation log 250 and the log 1050 of the actual environment are referred to by the actual machine - simulation data comparison unit 560. The actual machine - simulation data comparison unit 560 can compare the execution result of the program in the simulation with the execution result of the program in the actual environment by referring to the simulation log 250 and the log 1050 of the actual environment.
[0129] In a certain aspect, the simulation system 500 may create multiple branches in the version management system and save the simulation log 250 and the log 1050 of the actual environment in each branch.
[0130] <D. Procedure for Debugging the Program> Next, with reference to FIGS. 11 to 14, the procedure for debugging the program using the simulation system 500 will be described. In the example shown in FIGS. 11 to 14, the simulation system 500 reproduces the simulation log 250 of the device 150 recorded in the past step by step.
[0131] FIG. 11 is a diagram showing a first example of a debug screen in the simulation system 500. The screen 1100 includes a simulation scene reproduced based on the simulation log 250 of the device 150 recorded in the past. The screen 1100 is displayed on the display 109. The screen 1100 may include an operation UI 1101 for performing any operations such as playing, reverse-playing, pausing, and stopping the simulation scene step by step. In this case, the user can update the simulation scene step by step by operating the operation UI 1101.
[0132] The sheet 158 that is not cut at the cutting position 1120 is shown on the screen 1100. In such a case, the user can investigate the cause of the program defect by returning the simulation scene slightly before (for example, before and after the cutting of the sheet 158 at the cutting position 1130 one before the cutting position 1120) through the operation UI 1101 and then playing it back.
[0133] For example, the screen 1100A shows the scene before the cutting of the sheet 158 at the cutting position 1130. The screen 1100B shows the scene at the time of cutting the sheet 158 at the cutting position 1130. The screen 1100C shows the scene after the cutting of the sheet 158 at the cutting position 1130. Looking at the screens 1100A to 1100C, it can be seen that after the cutting of the sheet 158 at the cutting position 1130, the blade 1110 has not reached the cutting position 1120 of the sheet 158. In other words, it can be seen that the rotational speed of the slave axis 245 lags behind the speed at which the sheet 158 advances. In a certain situation, the simulation system 500 may simultaneously display continuous simulation scenes such as the screens 1100A to 1100C on the display 109.
[0134] In this way, the user can easily grasp problems such as the arrangement and operation of the device by playing or reverse-playing the simulation screen step by step, and can modify the program based on the grasped problems.
[0135] FIG. 12 is a diagram showing a second example of a debug screen in the simulation system 500. The screen 1200 includes a simulation scene 1201 (display of a 3D space) reproduced based on a simulation log 250 of the device 150 recorded in the past, a program 1202, object position information 1203, and values 1204 of program variables. In a certain situation, the simulation system 500 (or the PLC simulation unit 520) may receive a selection input of variables to be traced. Based on receiving the selection input of variables to be traced, the simulation system 500 (or the PLC simulation unit 520) may include only the values of the variables to be traced in the values 1204 of the program variables.
[0136] The user can update the simulation scene 1201 step by step by operating the operation UI 1101 to play back or reverse-play the simulation screen. Each time the simulation scene 1201 is updated step by step, the program 1202, the object position information 1203, and the values 1204 of the program variables are also updated.
[0137] For example, when the user discovers a problem in the simulation scene 1201, the user can operate the operation UI 1101 to check the simulation scenes 1201 of several steps before and after the problematic scene. Further, the user can easily grasp the problem points of the program by simultaneously checking the program 1202, the object position information 1203, and the values 1204 of the program variables in several steps before and after the problematic scene.
[0138] FIG. 13 is a diagram showing a third example of a debug screen in the simulation system 500. The screen 1300 includes a variable graph 1310 generated based on the values 254 of the program variables recorded in the past, and a program 1320 whose state is reproduced based on the values 254 of the program variables recorded in the past.
[0139] The simulation system 500 can update the value of each variable displayed in the program 1320 step by step. In a certain situation, the simulation system 500 may update the variable graph 1310 and the program 1320 based on receiving a step playback or reverse playback operation input from the user. For example, the simulation system 500 may reproduce the operation of the program for each execution time by substituting variables into the program. Also, in another situation, the simulation system 500 may highlight the variables whose values have changed on the program 1320.
[0140] By simultaneously checking the timing of the change in the value of each variable and the change in the state of the program (the operation of the program), the user can easily grasp the problems of the program.
[0141] FIG. 14 is a diagram showing a fourth example of a debug screen in the simulation system 500. The screen 1400 includes a program 1410, a flowchart 1420 of the program, and a variable graph 1430 generated based on the values 254 of the variables of the program recorded in the past.
[0142] The simulation system 500 may update the value of each variable displayed in the program 1410 based on receiving a step playback or reverse playback operation input from the user. Also, the simulation system 500 may highlight the currently executed process in the flowchart 1420 based on receiving a step playback or reverse playback operation input from the user. Furthermore, the simulation system 500 may update the variable graph 1430 based on receiving a step playback or reverse playback operation input from the user.
[0143] By simultaneously checking the timing of the change in the value of each variable, the change in the state of the program (the operation of the program), and the process being executed on the flowchart, the user can easily grasp the problems of the program.
[0144] In a certain situation, the elements included in each screen shown in FIGS. 11 to 14 may be arbitrarily combined and displayed on the display 109. For example, the simulation system 500 may display the simulation scene 1201, the program 1320 whose state is reproduced based on the values 254 of the variables of the program recorded in the past, the flowchart 1420, and the variable graph 1430 on the display 109.
[0145] <E. Flowchart> Next, with reference to FIGS. 15 to 17, the recording process of the simulation results by the simulation system 500 and the processing procedures of the debug process will be described. In a certain situation, the processor 102 may read a program (any program such as the integrated development environment 130) for performing the processes of FIGS. 15 to 17 from the storage 111 into the main memory 104 and execute the program. In other situations, part or all of the process may also be realized as a combination of circuit elements configured to execute the process.
[0146] FIG. 15 is a flowchart showing an example of the recording process of the simulation by the simulation system 500.
[0147] In step S1510, the simulation system 500 starts the simulation based on, for example, receiving a simulation start operation from the user.
[0148] In step S1520, the simulation system 500 starts recording to the 3D simulation memory 571 and the variable memory 572.
[0149] In step S1530, the simulation system 500 repeatedly executes the processes after step S1540 until the simulation is completed.
[0150] In step S1540, the simulation system 500 acquires the position information 252 of the objects in the 3D space and the values 254 of the variables of the program for each step of the simulation (or program).
[0151] In step S1550, the simulation system 500 passes the acquired data (simulation log 250: the position information 252 of the objects in the 3D space and the values 254 of the variables of the program) to the data management unit 550. The data management unit 550 commits the acquired data to the repository 570.
[0152] In step S1560, the simulation system 500 advances the steps of the simulation (or program).
[0153] In step S1570, the simulation system 500 determines whether the recording of the simulation is complete. In a certain scenario, the simulation system 500 may determine that the recording of the simulation is complete based on the completion of the recording for the specified number of cycles. In other scenarios, the simulation system 500 may determine that the recording of the simulation is complete based on the specified flag being raised (or lowered). Also, in other scenarios, the simulation system 500 may determine that the recording of the simulation is complete based on receiving an input of a simulation stop operation from the user. If the simulation system 500 determines that the recording of the simulation is complete (YES in step S1570), it ends the process. Otherwise (NO in step S1570), the simulation system 500 transfers control to step S1530. In a certain scenario, the simulation system 500 may execute the process of step S1570 at step S1530.
[0154] Note that when the simulation system 500 records the execution results in the actual environment of the program, the recording process can be performed in the same procedure as above, except that the video of the camera and the signals of the sensors are used.
[0155] FIG. 16 is a flowchart showing an example of the debug process by the simulation system 500.
[0156] In step S1610, the simulation system 500 reproduces the problem location in the simulation, for example, based on receiving an operation from the user.
[0157] In step S1620, the simulation system 500 receives the selection of variables to be traced. In a certain aspect, the PLC simulation unit 520 or the data management unit 550 may be provided with a function of receiving the selection of variables to be traced.
[0158] In step S1630, the simulation system 500 receives the specification of the graphing start time and end time. In a certain aspect, the graphing start time and end time may be specified by the number of program steps and cycles at the start and the number of program steps and cycles at the end. Note that the processes of steps S1620 and S1630 may be executed before step S1610.
[0159] In step S1640, the simulation system 500 displays a graph of the variable trace result (corresponding to graph 1310 showing the change in the value of the variable) on the display 109. The simulation system 500 can display the graph in the specified period on the display 109 based on receiving the specification of the graphing start time and end time in step S1630.
[0160] In step S1650, the simulation system 500 displays the program at the time of problem occurrence on the display 109. For example, based on the fact that the simulation scene of the problem location was displayed on the display 109 in step S1610, the simulation system 500 can display on the display 109 a program (a program with variables input) corresponding to the execution time (steps and cycles) of the simulation scene of the problem location.
[0161] In step S1660, the simulation system 500 determines whether it has received a program modification. If the simulation system 500 determines that it has received a program modification (YES in step S1660), it transfers control to step S1670. Otherwise (NO in step S1660), the simulation system 500 transfers control to step S1680.
[0162] In step S1670, the simulation system 500 reflects the modification in the program.
[0163] In step S1680, the simulation system 500 accepts re-selection of variables to be traced. For example, when the user cannot find the modification location of the program displayed in step S1650, by re-selecting the variables to be traced, the user can search for the program modification location from another perspective.
[0164] FIG. 17 is a flowchart showing an example of a comparison process between the simulation result of a program by the simulation system 500 and the execution result in the actual environment of the program.
[0165] In step S1710, the simulation system 500 receives a specification of a comparison start condition. The comparison start condition includes a condition for associating the execution time in the simulation with the execution time in the actual environment. In a certain aspect, as an example, the simulation system 500 may associate the timing at which a specific sensor in the actual environment outputs a signal by detecting the operation of a workpiece or device, etc., with the execution time (0 cycles, 1 step) in the simulation.
[0166] In step S1720, the simulation system 500 compares the simulation log 250 and the log 1050 of the actual environment at the same execution time (the timing when the number of cycles and steps of the program are equal). In a certain aspect, the simulation system 500 may compare the values of the variables included in each log, or may compare the position information of the objects, or may compare both.
[0167] In step S1730, the simulation system 500 determines whether there is a difference between the simulation log 250 and the log 1050 of the actual environment. If the simulation system 500 determines that there is a difference between the simulation log 250 and the log 1050 of the actual environment (YES in step S1730), it transfers control to step S1740. Otherwise (NO in step S1730), the simulation system 500 transfers control to step S1720.
[0168] In step S1740, the simulation system 500 displays the names and values of the variables with differences and the simulation information. The simulation information here includes the simulation scene at the step where the difference was confirmed. In a certain aspect, the simulation information may also include the position information 252 of the object in the 3D space.
[0169] In step S1750, the simulation system 500 determines whether it has received a request to end the comparison process. For example, the simulation system 500 can receive a request to end the comparison process via the operation unit 106 or the network interface 110. If the simulation system 500 determines that it has received a request to end the comparison process (YES in step S1750), it ends the process. Otherwise (NO in step S1750), the simulation system 500 transfers control to step S1720.
[0170] As described above, the simulation system 500 according to the present embodiment has a function of associating and recording the position information 252 of an object in the 3D space during simulation execution and the value 254 of a variable of the program for each execution time. Further, the simulation system 500 has a function of playing back and reverse-playing for each step of the simulation using the recorded position information 252 of the object in the 3D space and the value 254 of the variable of the program. Furthermore, the simulation system 500 has a function of displaying the position information 252 of the object in the 3D space and the value 254 of the variable of the program at each step. With these functions, the user can easily identify a scene of the simulation where there is a problem in the operation of the device by playing back the simulation step by step. Further, the user can easily debug the program by referring to the value 254 of the variable of the program in the scene of the simulation where there is such a problem.
[0171] Also, the simulation system 500 has a function of comparing the simulation log 250 and the log 1050 of the actual environment. With this function, the user can easily grasp problems with the program or problems with the arrangement of devices in the actual environment.
[0172] <F. Supplementary Note> As described above, the present embodiment includes the following disclosure. [Configuration 1] A simulation system (500), A simulation unit (520) that executes a simulation of the operation of one or more devices; A data input unit (551) that acquires one or more execution times during the simulation, position information (252) of each of one or more objects within the simulation, and values (254) of each of one or more variables referenced by a program for operating the one or more devices; A data recording unit (554) that associates the position information (252) of each of the one or more objects and the values of each of the one or more variables for each of the one or more execution times and stores them as a first log (250); A simulation system (500) comprising a display unit that displays the position information (252) of each of the one or more objects and the values of each of the one or more variables for each of the one or more execution times included in the first log (250). [Configuration 2] The simulation unit (520) is configured to be reproducible while pausing the simulation for each execution time based on the first log (250); The simulation system (500) according to Configuration 1, wherein the display unit is configured to be able to display a screen of the simulation for each execution time and the first log (250) for each execution time. [Configuration 3] The simulation unit (520) is configured to be reversibly reproducible while pausing the simulation for each execution time based on the first log (250); The simulation system (500) according to Configuration 1 or 2, wherein the display unit is configured to be able to display a screen of the simulation for each execution time and the first log (250) for each execution time. [Configuration 4] Further comprising a data difference extraction unit (553) for extracting the difference between the first log (250) and the previously recorded data; The simulation system (500) according to any one of Configurations 1 to 3, wherein the data recording unit (554) stores the difference. [Configuration 5] The above data input unit (551) further has a function of acquiring one or more timestamps in the actual environment, position information (252) of each of the one or more objects in the actual environment, and values (254) of each of one or more variables referred to by a program for operating the one or more devices in the actual environment. The above data recording unit (554) further has a function of associating, for each of the one or more timestamps in the actual environment, position information (252) of each of the one or more objects in the actual environment and values (254) of each of one or more variables referred to by a program for operating the one or more devices in the actual environment, and storing them as a second log, in the simulation system (500) according to any one of Configurations 1 to 4. [Configuration 6] The simulation system (500) according to Configuration 5 further includes a synchronization unit (561) for associating the execution time of the above first log (250) with the execution time of the above second log. The above display unit is configured to be able to display the above first log (250) and the above second log at the same execution time, in the simulation system (500) according to Configuration 5. [Configuration 7] The above display unit is configured to be able to display a graph of the values of each of the one or more variables for each execution time included in the above first log (250), in the simulation system (500) according to any one of Configurations 1 to 6. [Configuration 8] The above display unit is configured to be able to display while reproducing the operation of the above program based on the values of each of the one or more variables for each execution time included in the above first log (250), in the simulation system (500) according to any one of Configurations 1 to 7. [Configuration 9] The above display unit is configured to be able to display the screen of the above simulation for each execution time during the above simulation and the flowchart of the above program for each execution time during the above simulation. The above display unit highlights the execution location of the above flowchart for each execution time during the above simulation, in the simulation system (500) according to any one of Configurations 1 to 8. [Configuration 10] The simulation unit (520) further includes a function of receiving a selection input of a variable for tracing the value for each execution time from among the one or more variables included in the program, and the simulation system (500) according to any one of Configurations 1 to 9. [Configuration 11] The simulation unit (520) further includes a function of receiving a setting input of the reproduction start time and the reproduction end time of the simulation, and the simulation system (500) according to any one of Configurations 1 to 10. [Configuration 12] The data recording unit records the count of cycles and steps when the program is executed as the execution time during the simulation, and the simulation system (500) according to any one of Configurations 1 to 11. [Configuration 13] A method executed by a simulation system (500), executing a simulation of the operations of one or more devices, obtaining one or more execution times during the simulation, position information (252) of each of one or more objects in the simulation, and values (254) of each of one or more variables referenced by a program for operating the one or more devices, associating the position information (252) of each of the one or more objects and the values of each of the one or more variables for each of the one or more execution times and storing them as a first log (250), and further including a step of displaying the position information (252) of each of the one or more objects and the values of each of the one or more variables for each of the one or more execution times included in the first log (250). [Configuration 14] A program for causing one or more processors to execute the method according to Configuration 13.
[0173] The embodiments disclosed this time should be considered as illustrative in all respects and not restrictive. The scope of the present disclosure is shown not by the above description but by the claims, and it is intended that all modifications within the meaning and scope equivalent to the claims be included. Also, the disclosed content described in the embodiments and each modification example is intended to be implemented, as much as possible, either alone or in combination.
Description of Reference Numerals
[0174] 2 Control System, 5 Remote Terminal, 6,157 Sensor, 12 Power Supply Unit, 13 Arithmetic Unit, 14,53 Unit, 17 Special Unit, 22 Field Network, 41,42 Servo Motor, 51 Remote Terminal Bus, 52 Communication Coupler, 61,237,239 Detection Value, 80 Network, 81 System Bus, 100 Device, 102 Processor, 104 Main Memory, 106 Operation Unit, 108 Output Unit, 109 Display, 110 Network Interface, 111 Storage, 112 Optical Drive, 114 Recording Medium, 116 Local Communication Interface, 130 Integrated Development Environment, 150 Equipment, 151 Conveyor, 152,155 Motor, 153,156 Motor Control Device, 154 Rotary Knife, 158 Sheet, 159,248 Cut Position, 210 Robot Hand, 211,222 Control Command, 236,238 Encoder, 240 Spindle, 245 Slave Axis, 250 Simulation Log, 251,1100,1100A,1100B,1100C,1200,1300,1400 Screen, 252,602,702,802,1203 Position Information of Object, 253,611,1202,1320,1410 Program, 254,612,712,812,1204 Value of Variable in Program, 260,265 Display, 310 Robot Controller, 500 Simulation System, 510 3D Shape Display Unit, 511 3D Shape Reading Unit, 512 Shape Drawing Unit, 513 Memory Display Unit, 520 Simulation Unit, 521 Step Execution Unit, 530 Program Editing Unit, 531,532 Servo motor driver, 540 Variable memory graph display unit, 550 Data management unit, 551 Data input unit, 552 Data reading unit, 553 Data difference extraction unit, 554 Data difference recording unit, 560 Simulation data comparison unit, 561 Synchronization unit, 562 Data comparison unit, 563 Display unit, 570 Repository, 571 Simulation memory, 572 Variable memory, 580 File, 601 Space, 901 Value of IEC variable, 902 Value of robot variable, 903 Count of steps and cycles of IEC program, 1011 Value of IEC variable in actual environment, 1012 Value of robot variable in actual environment, 1013 Count of steps and cycles of IEC program in actual environment, 1014 Position information of object in actual environment, 1050 Log in actual environment, 1101 Operation UI, 1110 Blade, 1120, 1130 Cutting position, 1201 Simulation scene, 1310, 1430 Graph, 1420 Flowchart of program.,
Claims
1. A simulation system, comprising: a simulation unit that executes a simulation of the operations of one or more devices; a data input unit that acquires one or more execution times during the simulation, position information of each of one or more objects in a 3D (Three-Dimensional) space within the simulation, and values of each of one or more variables referred to by a program for operating the one or more devices; a data recording unit that associates the position information of each of the one or more objects in the 3D space and the value of each of the one or more variables for each of the one or more execution times, and stores them as a first log; a display unit that displays the position information of each of the one or more objects in the 3D space and the value of each of the one or more variables for each of the one or more execution times included in the first log.
2. A simulation system, comprising: a simulation unit that executes a simulation of the operations of one or more devices; a data input unit that acquires one or more execution times during the simulation, position information of each of one or more objects within the simulation, and values of each of one or more variables referred to by a program for operating the one or more devices; a data recording unit that associates the position information of each of the one or more objects and the value of each of the one or more variables for each of the one or more execution times, and stores them as a first log; a display unit that displays the position information of each of the one or more objects and the value of each of the one or more variables for each of the one or more execution times included in the first log, wherein the data input unit further has a function of acquiring one or more timestamps in an actual environment, position information of each of the one or more objects in the actual environment, and values of each of the one or more variables referred to by a program for operating the one or more devices in the actual environment; the data recording unit further has a function of associating the position information of each of the one or more objects in the actual environment and the value of each of the one or more variables referred to by a program for operating the one or more devices in the actual environment for each of the one or more timestamps in the actual environment, and storing them as a second log; further comprising a synchronization unit for associating the execution time of the first log with the execution time of the second log. The display unit is configured to be able to display the first log and the second log at the same execution time, in a simulation system. **Claim 3**: A simulation system, comprising: A simulation unit that executes a simulation of the operations of one or more devices; A data input unit that acquires one or more execution times during the simulation, position information of each of one or more objects in the simulation, and the value of each of one or more variables referred to by a program for operating the one or more devices; A data recording unit that associates the position information of each of the one or more objects and the value of each of the one or more variables for each of the one or more execution times, and stores them as a first log; A display unit that displays the position information of each of the one or more objects and the value of each of the one or more variables for each of the one or more execution times included in the first log, in a simulation system. The display unit is configured to be able to display while reproducing the operation of the program based on the value of each of the one or more variables for each execution time included in the first log, in a simulation system. **Claim 4**: A simulation system, comprising: A simulation unit that executes a simulation of the operations of one or more devices; A data input unit that acquires one or more execution times during the simulation, position information of each of one or more objects in the simulation, and the value of each of one or more variables referred to by a program for operating the one or more devices; A data recording unit that associates the position information of each of the one or more objects and the value of each of the one or more variables for each of the one or more execution times, and stores them as a first log; A display unit that displays the position information of each of the one or more objects and the value of each of the one or more variables for each of the one or more execution times included in the first log, in a simulation system. The display unit is configured to be able to display the screen of the simulation for each execution time during the simulation and the flowchart of the program for each execution time during the simulation; The display unit highlights the execution location of the flowchart for each execution time during the simulation, in a simulation system. **Claim 5** The simulation unit is configured to be able to reproduce the simulation while pausing it for each execution time based on the first log. The simulation system according to any one of claims 1 to 4, wherein the display unit is configured to be able to display the screen of the simulation for each execution time and the first log for each execution time.
6. The simulation unit is configured to be able to reversely reproduce the simulation while stopping the simulation for each execution time based on the first log. The simulation system according to any one of claims 1 to 5, wherein the display unit is configured to be able to display the screen of the simulation for each execution time and the first log for each execution time.
7. The simulation system further includes a data difference extraction unit for extracting a difference between the first log and the previously recorded data. The data recording unit stores the difference, and the simulation system according to any one of claims 1 to 6.
8. The simulation system according to any one of claims 1 to 7, wherein the display unit is configured to be able to display a graph of the value of each of the one or more variables for each execution time included in the first log.
9. The simulation system according to any one of claims 1 to 8, wherein the simulation unit further includes a function of receiving a selection input of a variable for tracing the value for each execution time from among the one or more variables included in the program.
10. The simulation system according to any one of claims 1 to 9, wherein the simulation unit further includes a function of receiving a setting input of a reproduction start time and a reproduction end time of the simulation.
11. The simulation system according to any one of claims 1 to 10, wherein the data recording unit records the count of cycles and steps when the program is executed as the execution time during the simulation.
12. A method executed by a simulation system, comprising: executing, by the simulation system, a simulation of the operation of one or more devices; acquiring, by the simulation system, one or more execution times during the simulation, position information of each of the one or more objects in the 3D space within the simulation, and the value of each of the one or more variables referred to by a program for operating the one or more devices. The step of associating, by the simulation system, position information of each of the one or more objects in the 3D space and values of each of the one or more variables for each of the one or more execution times and storing them as a first log. A method including: the step of displaying, by the simulation system, position information of each of the one or more objects in the 3D space and values of each of the one or more variables for each of the one or more execution times included in the first log.
13. A method executed by a simulation system, The step of executing, by the simulation system, a simulation of operations of one or more devices. The step of obtaining, by the simulation system, one or more execution times during the simulation, position information of each of the one or more objects in the simulation, and values of each of the one or more variables referenced by a program for operating the one or more devices. The step of associating, by the simulation system, position information of each of the one or more objects and values of each of the one or more variables for each of the one or more execution times and storing them as a first log. The step of displaying, by the simulation system, position information of each of the one or more objects and values of each of the one or more variables for each of the one or more execution times included in the first log. The step of obtaining one or more timestamps in the real environment, position information of each of the one or more objects in the real environment, and values of each of the one or more variables referenced by a program for operating the one or more devices in the real environment. The step of associating, for each of the one or more timestamps in the real environment, position information of each of the one or more objects in the real environment and values of each of the one or more variables referenced by a program for operating the one or more devices in the real environment and storing them as a second log. The step of associating the execution times of the first log and the execution times of the second log. The step of displaying includes the step of displaying side by side the first log and the second log at the same execution time. A method.
14. A method executed by a simulation system, Executing, by the simulation system, a simulation of the operations of one or more devices; Obtaining, by the simulation system, one or more execution times during the simulation, position information for each of one or more objects within the simulation, and values for each of one or more variables referenced by a program for operating the one or more devices; Associating, by the simulation system, the position information for each of the one or more objects and the values for each of the one or more variables for each of the one or more execution times, and storing the result as a first log; Displaying, by the simulation system, the position information for each of the one or more objects and the values for each of the one or more variables for each of the one or more execution times included in the first log, the method comprising: The displaying step includes displaying while reproducing the operation of the program based on the values of each of the one or more variables for each execution time included in the first log.
15. A method executed by a simulation system, comprising: Executing, by the simulation system, a simulation of the operations of one or more devices; Obtaining, by the simulation system, one or more execution times during the simulation, position information for each of one or more objects within the simulation, and values for each of one or more variables referenced by a program for operating the one or more devices; Associating, by the simulation system, the position information for each of the one or more objects and the values for each of the one or more variables for each of the one or more execution times, and storing the result as a first log; Displaying, by the simulation system, the position information for each of the one or more objects and the values for each of the one or more variables for each of the one or more execution times included in the first log, the method comprising: The displaying step includes: Displaying, for each execution time during the simulation, a screen of the simulation and a flowchart of the program during the simulation; Highlighting, for each execution time during the simulation, the execution location of the flowchart.
16. A program for causing a processor of 1 or more to execute the method according to any one of claims 12 to 15.
Citation Information
Patent Citations
Simulation system
JP2015225419A
Information processing system, information processing method, and information processing program
JP2019191737A
Simulation device, simulation program, and simulation method
JP2021045797A
Simulation system
US20150338834A1