Program generation device, program generation method, and information storage medium

By designing a program generation device, using the specification of displaying a scheduling screen and receiving execution sequence, system programs are generated, which solves the complex and laborious problem of program generation in the prior art, and realizes a simplified program generation process.

CN112987605BActive Publication Date: 2025-02-28YASKAWA DENKI KK
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
CN202011433505.9
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-12-16
Filing Date
2020-12-10
Publication Date
2025-02-28
Estimated Expiration
2040-12-10

AI Technical Summary

Technical Problem

The prior art is complex and laborious in generating programs for multiple industrial equipment, making it difficult to simplify the process of program generation.

Method used

A program generation device is designed, including a display control unit, a receiving unit and a system program generation unit. By displaying a scheduling screen, a specification of the execution order is received, and a system program is generated based on the specified execution order and process variables.

Benefits of technology

The program generation process is simplified, so that the user can intuitively specify the program execution sequence of multiple industrial equipment and generate system programs that operate industrial equipment in a specified order.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN112987605B_ABST
    Figure CN112987605B_ABST
Patent Text Reader

Abstract

The present disclosure relates to a program generation device, a program generation method, and an information storage medium. A display control unit of a program generation device displays a scheduling screen, wherein, for each of a plurality of processes executed in a system including a plurality of industrial devices, at least the name of the process is associated with a variable that is at least referenced or changed in a process program representing the operation of one or more of the plurality of industrial devices and executed in the process, a plurality of names of a plurality of processes stored as process information obtained from a process database are included, and the execution order of the plurality of processes can be specified. A receiving unit receives a designation of an execution order on a scheduling screen displayed by the display control unit. A system program generation unit generates a system program for operating each of the plurality of industrial devices in the specified execution order based on the execution order received by the receiving unit and the variables of each process included in the execution order.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to a program generating device, a program generating method and an information storage medium. Background Art

[0002] A technique for operating a plurality of industrial devices connected to the outside in a predetermined order, such as a PLC (Programmable Logic Controller), is known. For example, Patent Document 1 describes a technique for describing a generated program by describing the operation of a PLC on a ladder diagram.

[0003] Citation List

[0004] Patent Literature

[0005] Patent Document 1: JP2012-194678A Summary of the invention

[0006] The problem to be solved by the present disclosure is to simplify the generation of programs.

[0007] A program generating device according to one aspect of the present invention includes: a display control unit configured to display a scheduling screen, wherein, for each of a plurality of processes executed in a system including a plurality of industrial devices, at least the name of the process is associated with a variable, the variable is at least referenced or changed in a process program, the process program represents the operation of one or more of the plurality of industrial devices and is executed in the process, a plurality of names of a plurality of processes stored as process information obtained from a process database are included, and an execution order of the plurality of processes can be specified; a receiving unit configured to receive a specification of an execution order on the scheduling screen displayed by the display control unit; and a system program generating unit configured to generate a system program, based on the execution order received by the receiving unit and the variables of each process included in the execution order, the system program operating each of the plurality of industrial devices in the specified execution order.

[0008] A program generation method according to one aspect of the present invention includes: displaying a scheduling screen, wherein, for each of a plurality of processes executed in a system including a plurality of industrial devices, at least the name of the process is associated with a variable, the variable being at least referenced or changed in the process program, the process program representing the operation of one or more of a plurality of industrial devices and being executed in the process, a plurality of names of a plurality of processes stored as process information obtained from a process database are included, and an execution order of the plurality of processes can be specified; receiving a designation of an execution order on the displayed scheduling screen; and generating a system program based on the execution order received by a receiving unit and the variables of each process included in the execution order, the system program operating each of the plurality of industrial devices in the specified execution order.

[0009] According to an aspect of the present invention, an information storage medium stores a program which, when executed by a computer, causes the computer to function as: a display control unit configured to display a scheduling screen, wherein, for each of a plurality of processes executed in a system including a plurality of industrial devices, at least the name of the process is associated with a variable, the variable being at least referenced or changed in the process program, the process program representing the operation of one or more of the plurality of industrial devices and being executed in the process, a plurality of names of a plurality of processes stored as process information obtained from a process database are included, and an execution order of the plurality of processes can be specified; a receiving unit configured to receive a specification of an execution order on the scheduling screen displayed by the display control unit; and a system program generating unit configured to generate a system program, based on the execution order received by the receiving unit and the variables of each process included in the execution order, the system program operating each of the plurality of industrial devices in the specified execution order.

[0010] In a program generation device according to one aspect of the present invention, variables of each process among a plurality of processes include a start variable indicating the start of execution of the process, and a system program generation unit generates a system program by associating a change variable changed in at least one process in an execution order with start variables of one or more other processes executed in coordination with the at least one process so as to be executed sequentially according to the processes in the execution order.

[0011] According to one aspect of the present invention, the program generation device also includes a condition setting unit, which is configured to set a condition for at least one of a start variable or a change variable for a new process that is not registered in a process database; and a process registration unit, which is configured to store at least one of the start variable or the change variable set by the condition setting unit in the process database as process information in association with the name of the new process.

[0012] A program generation device according to an aspect of the present invention is capable of setting predetermined default variables as at least one of start variables or change variables and adding variables designated by a user.

[0013] In a program generating device according to one aspect of the present invention, a display control unit displays a series of program screens in which a part of a series program that has been generated and that corresponds to a process program can be specified, a receiving unit receives the specification of the part corresponding to the process program on the series program screen displayed by the display control unit, and the program generating device also includes a process program generating unit configured to generate a new process program corresponding to a new process based on the part of the series program specified by the receiving unit and at least one of a start variable or a change variable set by a condition setting unit.

[0014] In a program generating device according to an aspect of the present invention, a display control unit displays a timing chart as a scheduling screen based on an execution order received by a receiving unit and names and variables of respective processes included in the execution order, names of respective processes included in the execution order are arranged on a process axis in the timing chart, and a plurality of process images are arranged in the timing chart so that the plurality of process images are arranged on the process axis at positions substantially the same as the corresponding names and are arranged in the execution order on a timing axis perpendicular to the process axis, the plurality of process images respectively indicating execution of the plurality of processes with respective lengths on the timing axis.

[0015] In the program generating device according to an aspect of the present invention, the procedure information includes an estimated execution time of the procedure, and the display control unit sets the length of the process image on the timing axis to a length corresponding to the estimated execution time.

[0016] In a program generating device according to an aspect of the present invention, a receiving unit receives a movement instruction for designating a process image on a timing axis in a timing diagram as an execution order, a display control unit moves the process image in the timing diagram based on the movement instruction, and a system program generating unit generates a system program by associating start variables of other processes corresponding to the process image moved by the display control unit with change variables of a process corresponding to a process image set immediately before the other processes on the timing axis.

[0017] In a program generating device according to one aspect of the present invention, a process database stores the names of a plurality of industrial devices in association with process information of a plurality of processes executed in the respective industrial devices, a display control unit displays a list of the names of the plurality of industrial devices on a scheduling screen, a receiving unit receives a selection of a name of the industrial device from the list, and the display control unit also arranges process images of each of the plurality of processes associated with the selected industrial device on a process axis in a timing diagram.

[0018] In a program generation device according to an aspect of the present invention, variables to be referenced are input into a process database as process information, and the process database stores the name of a process corresponding to a calculation process for outputting a result to the variable to be changed and the variables associated with the name of the process, and in a case where an execution order received by a receiving unit includes the process corresponding to the calculation process, a display control unit displays a process image of the process corresponding to the calculation process together with other process images.

[0019] In a program generation device according to one aspect of the present invention, a display control unit displays a table as a scheduling screen based on an execution order received by a receiving unit and the processes and variables included in the execution order, and the names and variables of multiple processes included in the execution order are arranged in a column direction or a row direction in the table.

[0020] In a program generation device according to one aspect of the present invention, a receiving unit receives an operation for grouping all or some of a plurality of processes on a scheduling screen, and a display control unit groups all or some of the processes based on the operation received by the receiving unit and displays the grouped processes on the scheduling screen.

[0021] In a program generating device according to one aspect of the present invention, a receiving unit receives a designation of a repetitive operation for each of a plurality of industrial devices on a scheduling screen, and a system program generating unit generates a system program for operating each industrial device with the designated repetitive operation based on the repetitive operation received by the receiving unit.

[0022] According to one aspect of the present invention, the program generation device also includes an execution time acquisition unit, which is configured to obtain an actual execution time of each of a plurality of processes based on an execution result of the system program, wherein the display control unit displays a timing chart based on an execution order received by the receiving unit, names and variables of each process included in the execution order, and the execution time of each process, the names of the plurality of processes included in the execution order are arranged on a process axis in the timing chart, and a plurality of process images are arranged in the timing chart so that the plurality of process images are arranged on the process axis at positions substantially the same as the corresponding names and are arranged on the time axis in accordance with the execution order, and the plurality of process images respectively indicate the execution of the plurality of processes with their respective lengths on the timing axis.

[0023] In a program generating device according to an aspect of the present invention, process information includes an estimated execution time of a process, a display control unit displays the estimated execution time of each of a plurality of processes on a scheduling screen, and a receiving unit receives an operation for changing the estimated execution time of each process.

[0024] Effects of the Invention

[0025] According to the above invention, the generation of the program can be simplified. BRIEF DESCRIPTION OF THE DRAWINGS

[0026] Figure 1 : is a diagram showing the overall configuration of a production system including a program generating apparatus according to the embodiment.

[0027] Figure 2 is a diagram showing the relationship between the system program and the process program.

[0028] Figure 3 A diagram for explaining the steps of generating a process program.

[0029] Figure 4 is a diagram showing an example of a scheduling screen.

[0030] Figure 5 is a diagram showing an example of a timing chart in which the names of industrial devices are dragged and dropped.

[0031] Figure 6 is a diagram showing an example of a timing chart in which the names of industrial devices are dragged and dropped.

[0032] Figure 7 is a diagram showing an example of a timing chart in a case where the execution order of processes is specified.

[0033] Figure 8 is a diagram showing an example of a timing chart in which the start timing of the second cycle is specified.

[0034] Fig. 9 is a diagram showing another layout of a timing diagram.

[0035] Fig.10 is a functional block diagram showing the functions implemented in the production system.

[0036] Fig.11 is a diagram showing an example of data storage of a process database.

[0037] Fig.12 is a flowchart illustrating an example of a process of generating a process program.

[0038] Fig.13 is a flowchart illustrating an example of a process of generating a system program.

[0039] Fig.14 is a diagram showing steps for converting a program generated by an existing tool.

[0040] Fig.15 is a diagram showing an example of processing of a calculation program.

[0041] Fig.16 : is a diagram showing an example of data storage of a process database of modification example (2).

[0042] Fig.17 is a diagram showing an example of the schedule screen G1 of the modification example (3).

[0043] Fig.18 is a diagram showing an example of a timing chart when processes are grouped.

[0044] Fig.19 This is a functional block diagram of modified example (5).

[0045] Fig. 20 is a diagram showing an example of a case in which an expected execution time and an actual execution time are compared. DETAILED DESCRIPTION

[0046] According to the viewpoint of the inventor of the present invention, for example, a program for operating a plurality of industrial devices connected to the outside in a predetermined order needs to be generated using a ladder diagram, and generating the program is very laborious. Therefore, as a result of a large amount of research and development for simplifying the generation of programs, the inventor of the present invention conceived a new and original program generation device. Hereinafter, the program generation device according to the present embodiment, etc. will be described in detail.

[0047] [1. Overall configuration of the production system]

[0048] Figure 1 1 is a diagram showing the overall configuration of a production system including a program generation device according to the present embodiment. Figure 1 As shown, the production system 1 includes a program generation device 10, a controller 20, industrial devices 30A and 30B, and a server 40. These devices are communicatively connected using any network (such as Ethernet (registered trademark) or a communication standard dedicated to industrial devices). In the following description, when there is no need to particularly distinguish between industrial devices 30A and 30B, they are simply described as industrial devices 30. Similarly, when there is no need to particularly distinguish between CPUs 31A and 31B, storage units 32A and 32B, and communication units 33A and 33B, they are simply referred to as CPUs 31, storage units 32, and communication units 33.

[0049] The program generation device 10 is a computer for generating a program. For example, the program generation device 10 is a personal computer, a portable terminal (including a tablet terminal), or a mobile phone (including a smart phone). The program generation device 10 includes a CPU 11, a storage unit 12, a communication unit 13, an operation unit 14, and a display unit 15. Figure 1 Some lines are omitted in FIG. 1 , but the program generating device 10 can be connected to the industrial device 30 and the server 40 .

[0050] The CPU 11 includes at least one processor. The storage unit 12 includes a RAM and a hard disk, and stores various programs and data. The CPU 11 performs various processes based on the programs and data. The communication unit 13 includes a communication interface such as a network card and various communication connectors, and communicates with other devices. The operation unit 14 is an input device such as a mouse and a keyboard. The display unit 15 is a liquid crystal display or an organic electroluminescent display, and displays various screens according to instructions from the CPU 11.

[0051] The controller 20 is a computer that controls a plurality of industrial devices 30. For example, the controller 20 may be a computer called a PLC, or may be a computer with another name having the same function as the PLC. For example, the controller 20 and the industrial devices 30 may be collectively referred to as a cell, which is a unit smaller than a production line, and in this case, the controller 20 may be referred to as a cell controller.

[0052] The controller 20 includes a CPU 21, a storage unit 22, and a communication unit 23. The physical configurations of the CPU 21, the storage unit 22, and the communication unit 23 may be respectively the same as those of the CPU 11, the storage unit 12, and the communication unit 13. The controller 20 may not only control the industrial device 30 but may also directly control a device such as a robot or a motor directly connected to the industrial device 30, or may request the server 40 to analyze data indicating an operation result of the industrial device 30.

[0053] The industrial device 30 is a device for executing a process. The industrial device 30 may be any type of device, for example, a robot controller, a subordinate device of a robot controller, an industrial robot, a motor controller, a subordinate device of a motor controller, a machine tool, a press machine, or a conveying device. A PLC is also a type of industrial device. The industrial device 30 includes a CPU 31, a storage unit 32, and a communication unit 33. The physical configurations of the CPU 31, the storage unit 32, and the communication unit 33 may be the same as the physical configurations of the CPU 11, the storage unit 12, and the communication unit 13, respectively.

[0054] The industrial device 30 may include other physical configurations, such as an application-specific integrated circuit called an ASIC. In addition, the industrial device 30 may be connected to any physical configuration, such as a device to be controlled such as a motor, a sensor for detecting the operation of a motor, etc., a camera for capturing the state of a workpiece to be processed, an input-output device, and other industrial devices. In this embodiment, the controller 20 controls two industrial devices 30, however, the number of industrial devices 30 controlled by the controller 20 may be any number, such as three or more.

[0055] The server 40 is a server computer. The server 40 includes a CPU 41, a storage unit 42, and a communication unit 43. The physical configurations of the CPU 41, the storage unit 42, and the communication unit 43 may be the same as the physical configurations of the CPU 11, the storage unit 12, and the communication unit 13, respectively. The server 40 collects data indicating the operation results of the controller 20 and the industrial device 30, and analyzes the operation based on the collected data. The computer that collects and analyzes the data is not limited to the server 40, and may be any other computer. For example, the data may be collected and analyzed by the program generation device 10, another device operated by a user, or another server computer.

[0056] The programs and data described as being stored in each storage unit 12, 22, 32 and 42 can be provided via a network. In addition, the hardware configuration of each device is not limited to the above examples, and various types of hardware can be applied. For example, a reading unit (e.g., an optical drive or a memory card slot) for reading a computer-readable information storage medium or an input / output unit (e.g., a USB terminal) for being directly connected to an external device can be included. In this case, a program or data stored in an information storage medium can be provided by a reading unit or an input / output unit.

[0057] [2. Overview of program generation equipment]

[0058] First, an overview of the program generation device 10 will be described. The program generation device 10 generates a system program for the controller 20 to control a plurality of industrial devices 30. When the controller 20 and the industrial devices 30 as a whole are referred to as a cell, the system program may also be referred to as a cell program. The system program is a program for controlling the execution order of a process by using variables. The execution order is the order in which the process is executed.

[0059] A variable is information that is at least referenced or changed when a process is executed. In the present embodiment, a process program for executing the process is stored in the storage unit 32 of the industrial device 30, and the variable is at least referenced or changed in the process program. Reference is to read the register corresponding to the variable. Change is to rewrite the value of the register corresponding to the variable.

[0060] Variables are conditions for executing a process, and variables are prepared for each process. Variables may also be referred to as information indicating the operation of industrial equipment 30. For example, a variable is a start condition, an interrupt condition (pause condition), or an end condition of a process. In addition to variables used as execution conditions of a process, there may be any variable, such as a variable indicating the execution result of a process, a variable indicating an intermediate calculation, a variable indicating the setting of industrial equipment 30, and a variable indicating a sensor detection result. Variables may also be referred to as input / output variables. Variables correspond to registers of industrial equipment 30. Variables are referenced by industrial equipment 30 or other devices (e.g., controller 20).

[0061] A process is a task or operation performed by the industrial device 30. A process may include only one task or operation, or a combination of tasks or operations. The industrial device 30 is capable of performing a process for any application, and for example, performs identification of a workpiece, gripping of a workpiece, opening and closing of a door, setting of a workpiece, fixing a workpiece to a machine tool, or processing using a machine tool. The industrial device 30 performs at least one process. The industrial device 30 may perform only one process or perform multiple processes.

[0062] The process program is a program in which the various steps in the process are defined. The process program may also be referred to as a program that defines the operation of the industrial device 30. The process program may be generated in any language, such as a ladder diagram language or a robot language. The language of the process program may be different depending on the industrial device 30, for example, the process program of the industrial device 30A may be a ladder diagram language, while the process program of the industrial device 30B may be a robot language.

[0063] In this embodiment, a process program is prepared for each process, and the process and the process program have a one-to-one relationship. In this way, if the industrial device 30 performs n processes (n is a natural number), the industrial device 30 stores at least n process programs. The process and the process program may not have a one-to-one relationship, for example, multiple processes may be performed by one process program, or multiple process programs may be prepared to perform one process.

[0064] Figure 2 is a diagram showing the relationship between the system program and the process program. In this embodiment, the industrial device 30A executes three processes A1, A2, and A3, and then the industrial device 30B executes two processes B1 and B2. Figure 2 As shown, the industrial device 30A stores process programs PA1, PA2 and PA3 corresponding to processes A1, A2 and A3, respectively. The industrial device 30B stores process programs PB1 and PB2 corresponding to processes B1 and B2, respectively. In the following, when the individual process programs are not distinguished, they are simply described as process programs P.

[0065] exist Figure 2 In the example of , as default variables of the process program P, a start variable "Start" indicating the start of execution, an interrupt variable "Abort" indicating an interrupt (pause), a busy variable "Busy" indicating a busy state, and an end variable "End" indicating the end of execution are prepared. Variables other than these default variables may also be set in the process program P. For example, a variable indicating the value of a predetermined signal or a variable indicating a midway calculation may be prepared.

[0066] In this embodiment, a case is described in which a user operates the program generating device 10 to generate the process program P, however the process program P may be generated by another computer. For example, when the user of the controller 20 and the user of the industrial device 30 are different from each other, the process program P is generated by a computer other than the program generating device 10. The system program Q is a program for controlling the execution order of a process, and therefore the process program P is generated before the system program Q is generated.

[0067] Figure 3 1 is a diagram for explaining the steps of generating a process program P. Here, the steps of generating a process program PA2 are taken as an example for explanation. Figure 3 As shown, the user generates a process project ( Figure 3 Step 1) A process project is a management unit of the process program PA2, and any project name such as the name of the industrial device 30 and the name of the process can be set.

[0068] When creating a process project, the user performs the initial setup of the process program PA2 ( Figure 3 In step 2 of the initial setting, basic information of the process program PA2 is set, and for example, the name of the industrial device 30A that executes the process, the type of the process program PA2, and the name of the process are specified. The name of the process is information for uniquely identifying the process in the industrial device 30. The name of the process can be any character string input by the user, and is set not to overlap with other processes. It is assumed that the estimated execution time described later is also specified in step 2.

[0069] exist Figure 3 In step 2, default variables are set for the process program PA2 being generated. For example, the start variable "start", the interrupt variable "stop", the busy variable "busy", and the end variable "end" are set as default variables of the process program PA2. For example, when the start variable "start" in process A2 is changed to a predetermined value, the process program PA2 is executed, and the process A2 is started. In addition, for example, when all instructions described in the process program PA2 are executed and the process is terminated, the end variable "end" of the process A2 is changed to a predetermined value.

[0070] This embodiment also provides default variables for other procedures A1 and A3. Thus, the string "A2" identifying procedure A2 is provided to the name of the procedure so that the variables of procedure A2 can be identified. For example, the name of the start variable in procedure A2 is "A2.Start", and the name of the end variable in procedure A2 is "A2.End". Although in Figure 2 and Figure 3 is omitted in the output, but the string "A2" is also supplied to the interrupt variable "abort" and the busy variable "busy".

[0071] The user can set a variable other than the default variable. For example, when setting another variable, the user enters "S1" ( Figure 3 3 in step 1). Similar to the start variable, for example, the name of another variable is provided with a character string "A2" for identifying process A2 and becomes "A2.S1". When the setting of the variable is completed, the process program PA2 is programmed ( Figure 3 Step 4 in the process program PA2 is completed. Various known techniques can be applied to the programming of the process program PA2, for example, ladder diagram language or robot language can be used. In programming or variable setting, the user can enter supplementary comments for explanation.

[0072] When the process program PA2 is generated, the actual data of the process program PA2 is recorded in the industrial device 30A. In addition, process information in which the name of the process specified by the user and the name of the variable are stored is registered in the process database of the controller 20. The details of the process information and the process database will be described later. The user repeats the above-mentioned generation step as many times as the number of processes, and generates the process program P and the process information of each process.

[0073] In this embodiment, when the process programs PA1, PA2, and PA3 are generated, the execution order of the process programs in the industrial device 30A is specified and stored in the process information. The same applies to the process programs PB1 and PB2. When these programs are generated, the execution order in the industrial device 30B is specified and will be stored in the process information. However, whether the process to be executed by the industrial device 30A or the process to be executed by the industrial device 30B is executed first is not specified when the process program P is generated, but is specified on the scheduling screen to be described later.

[0074] When the generation of the process program P and the registration of the process information are completed, the user generates the system program Q. In this embodiment, the processes are executed in the order of A1, A2, A3, B1, and B2, so the user generates the system program Q so that the process programs PA1, PA2, PA3, PB1, and PB2 are executed in this order.

[0075] exist Figure 2 In the example of , when a predetermined input / output signal is input, process A1 starts. For example, the input / output signal is input from an external device (such as a button provided in the controller 20 or the industrial device 30A). When the input / output signal is input, the system program Q changes the start variable "A1.Start" of process A1 to a predetermined value. When the start variable "A1.Start" is changed to a predetermined value, the process program PA1 is executed to start process A1.

[0076] When process A1 ends successfully, the end variable "A1.End" of process A1 becomes a predetermined value. When the end variable "A1.End" becomes a predetermined value, system program Q changes the start variable "A2.Start" of the subsequent process A2 to a predetermined value. When the start variable "A2.Start" is changed to a predetermined value, process program PA2 is executed to start process A2.

[0077] When the process A2 ends successfully, the variable "A2.S1" and the end variable "A2.End" of the process A2 become predetermined values. When these values ​​become predetermined values, the system program Q changes the start variable "A3.Start" of the subsequent process A3 to a predetermined value. When the start variable "A3.Start" changes to the predetermined value, the process program PA3 is executed to start the process A3.

[0078] When process A3 ends successfully, the end variable "A3.End" of process A3 becomes a predetermined value. When the end variable "A3.End" becomes a predetermined value, system program Q changes the start variable "B1.Start" of the subsequent process B1 to a predetermined value. When the start variable "B1.Start" changes to a predetermined value, process program PB1 is executed to start process B1.

[0079] When process B1 ends successfully, the end variable "B1.End" of process B1 becomes a predetermined value. When the end variable "B1.End" becomes a predetermined value, system program Q changes the start variable "B2.Start" of the subsequent process B2 to a predetermined value. When the start variable "B2.Start" changes to a predetermined value, process program PB2 is executed to start process B2.

[0080] When process B2 ends successfully, the end variable "B2.End" of process B2 becomes a predetermined value. When the end variable "B2.End" becomes a predetermined value, the system program Q causes the industrial device 30B to output a predetermined output signal and completes all processes of the first cycle. The output signal may be a signal to the controller 20, or a signal to a device such as an external sensor or an LED lamp.

[0081] The start variable and end variable of each process can be changed to the initial value at any timing (such as at the end of the cycle or after each process ends). The second cycle can start after the end of the first cycle or in the middle of the first cycle. When the start timing of the second cycle comes, the system program Q changes the start variable "A1.Start" of the process A1 to a predetermined value and starts the process of the second cycle. After that, each process is periodically executed in the same way as the first cycle.

[0082] The program generating apparatus 10 is provided with an engineering tool for simplifying generation of the above-described system program Q. When the engineering tool is started in the program generating apparatus 10 , a scheduling screen for generating the system program Q by specifying the execution order of processes is displayed on the display unit 15 .

[0083] Figure 4is a diagram showing an example of a scheduling screen. Figure 4 As shown, the scheduling screen G1 has various user interfaces for supporting the work of the user. The scheduling screen G1 can set variables and simulate in addition to the generation of programs, for example. For example, a timing chart C for specifying the execution order of a process is displayed on the scheduling screen G1.

[0084] For example, in the timing diagram C, the timing axis (time axis) is set in the right direction (horizontally). The further to the right the screen is, the later the time is. In the timing diagram C, every predetermined time ( Figure 4 5 seconds) to display the value, and arrange the indication unit time ( Figure 4 In the grid of 1 second. Figure 4 In the example, 5 grids are arranged between 0 and 5 seconds.

[0085] In the timing chart C, the user specifies the execution order of the processes to be executed by the industrial devices 30 and generates a system program Q. Figure 4 In the example of FIG. 4 , the user has not yet specified the industrial unit 30 and the timing diagram C does not display information about the process.

[0086] For example, the scheduling screen G1 displays a list L indicating the names of the industrial devices 30 to be controlled by the controller 20. In this embodiment, the industrial devices 30A and 30B are controlled, so the names of the two devices are displayed on the list L. For example, when the user drags and drops the name of the industrial device 30A from the list L onto the timing chart C, information of the processes A1, A2, and A3 to be executed by the industrial device 30A is displayed on the timing chart C.

[0087] Figure 5 2 is a diagram showing an example of a timing chart C when the name of the industrial device 30A is dragged and dropped. Figure 5 As shown, the timing diagram C displays the name of the industrial device 30A, the name of each process A1, A2 and A3, and the estimated execution time set for each process. The timing diagram C may display other information included in the process information (eg, the name and execution order of variables in the industrial device 30A).

[0088] The estimated execution time is the estimated time required to execute each process. In this embodiment, the estimated execution time is defined in units of 1 second, but the execution time can be defined in other units such as 2 seconds or 0.5 seconds. Figure 5 In the example, the estimated execution time of each process A1, A2, and A3 is 3 seconds, 4 seconds, and 3 seconds. Figure 5 The example does not take into account the time required to move from one process to the next, but as described later Fig. 9 As shown, the time between processes can be taken into account.

[0089] In this embodiment, the execution order of processes A1, A2, and A3 in the industrial device 30 is specified in advance, so the names of these processes are displayed in the execution order from top to bottom in the timing chart C. By arranging the names of the respective processes in the execution order, the user can intuitively grasp the execution order.

[0090] In the timing diagram C, process images I1, I2, and I3 indicating processes A1, A2, and A3, respectively, are displayed on the timing axis in the order of execution. For example, the estimated execution time of process A1 is 3 seconds, and the process image I1 is displayed so that three grids from 1 second to 3 seconds in the row of process A1 are filled with a predetermined color. The estimated execution time of process A2 is 4 seconds, and the process image I2 is displayed so as to fill four grids from 4 seconds to 7 seconds in the row of process A2. The estimated execution time of process A3 is 3 seconds, and the process image I3 is displayed so as to fill three grids from 8 seconds to 10 seconds in the row of process A3.

[0091] like Figure 5 As shown, each of the process images I1, I2, and I3 has a length corresponding to the estimated execution time, and the user can intuitively grasp the length of the estimated execution time of each process A1, A2, and A3. In addition, the process images I1, I2, and I3 are arranged in the execution order on the timing axis, so the user can grasp the execution order of the processes A1, A2, and A3 in the time series.

[0092] exist Figure 5 In the state of , only the industrial device 30A is selected, and the user also selects the name of the industrial device 30B. For example, when the user drags and drops the name of the industrial device 30B from the list L onto the timing chart C, information of processes B1 and B2 to be executed by the industrial device 30B is displayed on the timing chart C.

[0093] Figure 6 3 is a diagram showing an example of a timing chart C when the name of the industrial device 30B is dragged and dropped. Figure 6 As shown, the timing diagram C shows the name of the industrial device 30B, the name of each process B1 and B2, and the estimated execution time set for each process. Figure 6 In the example of , as shown by process images I4 and I5 , the estimated execution time of each process B1 and B2 is 4 seconds and 2 seconds.

[0094] exist Figure 6 , only the name of the industrial device 30B is dragged and dropped onto the timing diagram C, and the execution order of the processes A1, A2, and A3 and the processes B1 and B2 has not yet been specified. As such, on the timing diagram C, the time relationship between the processes A1, A2, and A3 and the processes B1 and B2 is not distinguished, so the process A1 starts at 0 seconds, and the process B1 also starts at 0 seconds.

[0095] In this embodiment, the execution order of the processes can be specified by dragging and dropping the process image I displayed in the timing chart C and moving it. As described above, the process B1 is executed after the process A3, and the user specifies the execution order of the processes by dragging and dropping the process image I4 so as to make it later than the process A3 (at a position 11 seconds or later on the right side of the process image I3).

[0096] Figure 7 1 is a diagram showing an example of a timing chart C in the case where the execution order of the processes is specified. Figure 7 As shown in FIG. 1 , when the execution order of the processes is specified, the process image I4 moves after the process image I3 and moves to the position of 11 seconds to 14 seconds in the row of the process B1. The process image I5 moves in the same manner and moves to the position of 15 seconds to 16 seconds in the row of the process B2. In this way, the user specifies the execution order of the processes by dragging and dropping the process image I.

[0097] The method of specifying the execution order of the processes is not limited to the above example, and other operations may be used. Figure 6 In the state of , the user can specify the execution order of the processes by dragging and dropping process image I5. For example, the user can drag and drop process image I5 to make it after process A3 (to the right of process image I3). In this case, the timing diagram C is in the same Figure 7 Same status.

[0098] In addition, for example, in Figure 6 In the state, the user can specify the execution order of the processes by dragging and dropping process image I1 before process B1 (to the left of process image I4 before 0 seconds). In this case, the user specifies that the execution order of processes A1, A2, and A3 is earlier than the execution order of processes B1 and B2, and the timing diagram C is in the same order as Figure 7 In addition, for example, in addition to dragging and dropping the process image I, the execution order of the process can be specified by clicking or tapping any position (grid) in the timing diagram C.

[0099] The execution order of the process is specified by the above operations. In this embodiment, the start timing of the second cycle can be specified in the timing diagram C. For example, Figure 7 In the state, when the user selects a certain position in the row of process A1 as the start timing of the second cycle, the processes of the second cycle and subsequent cycles are displayed in time series.

[0100] Figure 8 is a diagram showing an example of a timing chart C when the start timing of the second cycle is specified. Figure 8As shown, when the user selects the grid at the 15th second in the row of process A1 as the start timing of the second cycle, a process image I6 indicating process A1 of the second cycle is displayed from 15 seconds to 17 seconds in the row of process A1.

[0101] In the second and subsequent cycles, the execution order and estimated execution time of the processes are not changed, so if Figure 8 As shown, process images I7, I8, I9, and I10 representing processes A2, A3, B1, and B2 in the second cycle are displayed so that the execution order of the first cycle is maintained in the second cycle and subsequent cycles. Similarly, process images I11, I12, I13, and I14 are displayed so that the third cycle and subsequent cycles start at the same start time as the second cycle. The process image I not included in the screen is displayed by a scroll operation.

[0102] When the execution order of the processes is designated as described above, the user performs a build operation for generating a system program Q. The build operation is performed based on the process information of each process program P and the execution order designated on the timing chart C, and the system program Q is generated.

[0103] As a program for executing the construction operation, various known programs can be used. For example, if a ladder diagram language is used, a start switch and a coil are arranged so that the value of the start variable, etc. of each process changes in the execution order specified by the user, so that the system program Q is generated. For example, if a robot language is used, a command for conditional branching is written so that the value of the start variable, etc. of each process changes in the execution order specified by the user, so that the system program Q is generated. When the system program Q is generated, the controller 20 stores the system program Q.

[0104] As described above, in this embodiment, the system program Q is generated by specifying the execution order of the process on the timing diagram C. For example, this eliminates the need to manually generate a ladder diagram, and the system program Q can be easily implemented. Examples of the timing diagram C are not limited to Figures 4 to 8 The timing chart C may have any layout capable of displaying the operation of the industrial device 30 in time series.

[0105] Fig. 9 is a diagram showing another layout of the timing diagram C. Fig. 9 As shown, the timing diagram C may not have a grid indicating unit time. Fig. 9 In the example of FIG. 1 , the time period for executing each process is shown by process images I1 to I11. Figures 4 to 8 In the timing diagram C of FIG. 1 , no time interval is set between one process and the next process. However, Fig. 9 As shown, a time interval (eg, 1 second) may be set between processes.

[0106] exist Fig. 9 In the example of , process images I1 to I11 are connected by arrows, so that the start condition of each process can be intuitively understood. Fig. 9 In the case of the timing diagram C shown, the user can also specify the execution order of the processes by, for example, dragging and dropping the process images I1 to I11. As another example, the user can specify the execution order of the processes by connecting the processes A3 and B1 with arrows.

[0107] As described above, the program generating apparatus 10 of the present embodiment has a configuration that simplifies the generation of the system program Q. The details of this configuration will be described below.

[0108] [3. Functions implemented in production systems]

[0109] Fig.10 1 is a functional block diagram showing functions implemented in the production system 1. In this embodiment, functions implemented by each of the program generation device 10, the controller 20, and the industrial device 30 will be described. The same functions are implemented in each of the industrial devices 30A and 30B, so Fig.10 An industrial device 30 will be described.

[0110] [3-1. Functions implemented by the program generation device]

[0111] like Fig.10 As shown, the program generating device 10 implements a data storage unit 100 , a condition setting unit 101 , a procedure registering unit 102 , a procedure program generating unit 103 , a display control unit 104 , a receiving unit 105 , and a system program generating unit 106 .

[0112] [Data storage unit]

[0113] The data storage unit 100 is mainly realized by the storage unit 12. The data storage unit 100 stores data required for generating the system program Q. For example, the data storage unit 100 stores a process database DB in which process information of each process is stored.

[0114] Fig.11 2 is a diagram showing an example of data storage in a process database DB. Fig.11As shown, the process database DB stores the name of the industrial device 30 and the process information of the process executed by the industrial device 30. For example, when a process program P of a new process is generated, the process information of the new process is registered in the process database DB by the process registration unit 102 described later. After being registered in the process database DB, the process information may be editable. In this embodiment, the process information of all the industrial devices 30 to be controlled by the controller 20 is stored in the process database DB, however, only the process information of some of the industrial devices 30 may be stored in the process database DB.

[0115] The process information indicates basic information of the process, and its contents are set by the condition setting unit 101 described later. The process information stores information required to generate the system program Q on the scheduling screen G1. For example, the process information includes the name of the process, the estimated execution time, the execution order, the name of the variable, the execution condition, and the comment.

[0116] The name of the process is a name specified when the process program P is generated. The name of the process may be determined so that the process can be uniquely identified in the industrial device 30, and may be the same as the name of the process of other industrial devices 30. In this embodiment, the user specifies the name of the process, but the name of the process may be automatically assigned based on a predetermined rule. The name of the process may be something that uniquely specifies the process, such as an ID of the process.

[0117] In this embodiment, the estimated execution time is a numerical value specified when generating the process program P. The estimated execution time may not be specified by the user but may be a numerical value calculated by simulation. As in a modified example described later, the estimated execution time may be editable.

[0118] The execution order is the order in which the processes are executed within the entire production system 1. In this embodiment, when the process program P is generated, the local execution order in the industrial device 30 is specified, and therefore, when the process is registered, the specified execution order is stored. After the process is registered, the execution order in the entire production system 1 is specified, and therefore, the local execution order is changed to the execution order in the entire production system 1.

[0119] For example, when process programs PA1, PA2, and PA3 are generated, "1", "2", and "3" are respectively specified as the order in which processes A1, A2, and A3 are executed. Also, for example, when process programs PB1 and PB2 are generated, "1" and "2" are respectively specified as the order in which processes B1 and B2 are executed. At this time, since only the execution order in the industrial device 30 is specified, it is not specified which of processes A1, A2, and A3 and processes B1 and B2 is to be executed first. As shown in FIG. Figure 7As described, when the user designates the execution order on the scheduling screen G1, the execution order of the processes B1 and B2 is changed to "4" and "5".

[0120] When the process program P is generated, the local execution order may not be specified in the industrial device 30. In this case, the execution order may not be stored when the process is registered, and when the user specifies the execution order on the scheduling screen G1, the specified execution order may be stored in the process information. For example, the user specifies "1", "2", "3", "4", and "5" as the execution order of each of the processes A1, A2, A3, B1, and B2 on the scheduling screen G1, and these execution orders are stored in the process information.

[0121] The name of the variable is a name set when the process program P is generated. In this embodiment, the user can specify not only the default variable but also any variable, so the name of the variable specified by the user can be stored. As described above, in this embodiment, the name of the variable includes the name of the process (a character string such as "A1") and a character string indicating the type of the variable (a character string such as "Start"), so that the name of the variable does not overlap between processes.

[0122] The name of the variable can be set according to any rule and is not limited to the example of this embodiment. For example, the variable name may include the name of the industrial device 30 (a string such as "EquipA"), and it can be identified which industrial device 30 the variable is used for. In addition, for example, the variable name can be defined by a string that can uniquely identify the variable in the production system 1 or the industrial device 30 without specifically including the name of the industrial device 30 or the name of the process. Similar to the name of the process, the name of the variable can be something that uniquely identifies the variable, such as the ID of the variable.

[0123] In addition, for example, the name of the variable managed by the controller 20 may be different from the name of the variable managed by the industrial device 30. That is, the name by which the controller 20 identifies the variable and the name by which the industrial device 30 identifies the variable may be different. Here, the former is called a system variable and the latter is called a device variable, and the data storage unit 100 stores a table or database for converting the system variable and the device variable to each other. When the controller 20 references the variable of the industrial device 30, the system variable is converted into the device variable, and then the register read corresponding to the device variable is performed. Similarly, when the controller 20 changes the variable of the industrial device 30, the system variable is converted into the device variable.

[0124] The execution condition is a condition indicating whether to change a variable. The condition for starting a process is set as the execution condition of the start variable. The condition for interrupting a process is set as the execution condition for the interrupt variable. The condition for making a process busy is set as the execution condition of the busy variable. The condition for ending a process is set as the execution condition of the end variable.

[0125] In this embodiment, when the process program P is generated, the local execution order in the industrial device 30 is specified, and therefore, when the process is registered, the execution conditions are stored according to the specified execution order. After the process is registered, the execution order in the entire production system 1 is specified, and therefore the execution conditions are changed according to the execution order in the entire production system 1.

[0126] For example, when an input / output signal is input when the process program PA1 is generated, the start of process A1 is specified. The condition for executing process A1 is a variable "IO1.Input1" indicating an input / output signal. When the variable "IO1.Input1" becomes a predetermined value, the start variable "A1.Start" becomes a predetermined value, and process A1 starts.

[0127] For example, when process program PA2 is generated, it is specified that process A2 is executed after process A1. The condition for executing process A2 is the end variable "A1.End" of process A1. When the end variable "A1.End" becomes a predetermined value, the start variable "A2.Start" becomes a predetermined value, and process A2 starts.

[0128] For example, when the process program PA3 is generated, it is specified that the process A3 is executed after the process A2. In addition, the variable "A2.S1" of the process A2 is also specified as a condition for starting the process A3. In this way, the execution condition of the process A3 is the end variable "A2.End" of the process A2. When each of the variable "A2.S1" and the end variable "A2.End" becomes a predetermined value, the start variable "A3.Start" becomes a predetermined value, and the process A3 starts.

[0129] In this embodiment, when the process program PB1 is generated, the condition for starting the process B1 is not specified. It is specified on the scheduling screen G1 that the process B1 is executed after the process A3, and therefore, when this specification is received (when the screen is opened from Figure 6 Change to Figure 7 ), the execution condition of process B1 is the end variable "A3.End" of process A3. When the end variable "A3.End" becomes a predetermined value, the start variable "B1.Start" becomes a predetermined value, and process B1 starts.

[0130] For example, when process program PB2 is generated, it is specified that process B2 is executed after process B1. The execution condition of process B2 is the end variable "B1.End" of process B1. When the end variable "B1.End" becomes a predetermined value, the start variable "B2.Start" becomes a predetermined value, and process B2 starts.

[0131] The data stored in the data storage unit 100 is not limited to the above-mentioned examples. For example, the data storage unit 100 stores a program for executing a construction operation of the system program Q. In addition, for example, the data storage unit 100 may store image data of an image displayed on the scheduling screen G1, or may store an engineering tool. For example, the data storage unit 100 may store the generated process program P and the system program Q.

[0132] [Condition setting unit]

[0133] The condition setting unit 101 is mainly implemented by the CPU 11. The condition setting unit 101 sets a condition of at least one of a start variable and a change variable for a new process that is not registered in the process database DB. In this embodiment, both the start variable and the change variable conditions are set for the new process, however, the condition setting unit 101 may set only one of the start variable condition and the change variable condition.

[0134] An unregistered new process is a process whose process information is not registered (stored) in the process database DB. That is, a process whose process information is to be registered is a new process that has not yet been registered. In other words, a process for which a process program P is to be newly generated is a new process that has not yet been registered.

[0135] As described above, the start variable is a variable used as a start condition of a process. A start variable having an initial value (e.g., 0) means that the process does not start, while a start variable having a predetermined value (e.g., 1) means that the process starts. For example, the process program P periodically changes its start variable, and when the start variable becomes a predetermined value, the first write instruction is executed. The condition of the start variable is a condition for changing the value of the start variable (e.g., the value of another variable).

[0136] The change variable is a variable changed by the process program P. The change variable may be referred to as a variable other than the start variable. For example, the change variable is an interrupt variable, a busy variable, an end variable, a number indicating a predetermined signal (e.g., the variable "A2.S1" of the process A2), or a variable indicating an intermediate result of a calculation. The condition of the change variable is a condition for changing the value of the change variable.

[0137] The condition setting unit 101 can set any condition as a condition for starting a variable and changing a variable. For example, the condition setting unit 101 sets other variables to a predetermined value, receives a predetermined signal from a device such as a button and a sensor, changes the operating state of the industrial device 30 to a predetermined state, or sets a predetermined time as a condition. Setting a condition is determining or acquiring the content of the condition. The condition can be specified by a user or automatically set by a predetermined algorithm.

[0138] In this embodiment, when the process program P of a new process is generated, the local execution order in the industrial device 30 is specified, so the condition setting unit 101 sets the condition of the start variable of the new process. For example, when the process A1 is newly registered, the condition setting unit 101 sets the variable "IO1.Input1" of the input / output signal as the condition of the start variable of the process A1. When the process A2 is newly registered, the condition setting unit 101 sets the end variable "A1.End" of the process A1 as the condition of the start variable of the process A2. When the process A3 is newly registered, the condition setting unit 101 sets the variable "PA2.S1" and the end variable "A2.End" of the process A2 as the condition of the start variable of the process A3.

[0139] If the process B1 is newly registered, since it is not specified that the process B1 is executed after the process A3, the condition of the start variable of the process B1 is not set. When the execution order is specified on the scheduling screen G1, the condition of the start variable of the process B1 is set. For example, when it is specified on the scheduling screen G1 that the process B1 is executed after the process A3, the condition setting unit 101 sets the end variable "A3.End" of the process A3 as the condition of the start variable of the process B1. When the process B2 is newly registered, the condition setting unit 101 sets the variable "PA2.S1" and the end variable "A1.End" of the process A2 as the condition of the start variable of the process B3.

[0140] When the process program P is generated, a condition for changing a variable is also specified. The condition setting unit 101 sets the condition specified when the process program P is generated as a condition for changing a variable. For example, the condition setting unit 101 sets a variable indicating an error occurrence to a predetermined value as a condition for an interrupt variable. Furthermore, for example, the condition setting unit 101 sets a process not ending after a predetermined period of time has passed since the start of the process as a condition for a busy variable. Furthermore, for example, the condition setting unit 101 sets a final process described in the process program P to be completed as a condition for an end variable.

[0141] In this embodiment, in addition to the default variables such as "Start" and "End", any variable such as "Input1" may be added, so the condition setting unit 101 may set a predetermined default variable as at least one of the start variable and the change variable and add a user-specified variable. That is, at least one of the start variable and the change variable may include not only the default variable but also the user-specified variable.

[0142] For example, if it is desired to set a variable other than the default variable as a condition for starting a process, the condition setting unit 101 can also add a variable specified by the user for the start variable. In this case, the user can specify a variable of any signal, such as "Input1", as the start variable. The case where the user specifies a change variable is as described above. The condition setting unit 101 does not need to add a variable specified by the user, and does not add a variable when the user does not specify a variable. In this case, only the default variable is set for the newly registered process.

[0143] The default variables are not limited to "Start", "End", "Abort", and "Busy" described in this embodiment. The default variables may be any variables. For example, there may be default variables that can be input, such as "Stop" to stop an operation, "Pause" to wait or pause an operation, or "Restart" to resume an operation. In addition, for example, there may also be default variables that can be output, such as "Complete" to indicate that an operation is complete, "Ready" to indicate that preparation is complete, "Error" to indicate that an error has occurred, and "Timeout" to indicate a timeout.

[0144] In addition, the variables specified by the user are not limited to the examples described in this embodiment, such as "Input1". The variables specified by the user can be any variables. For example, the user can specify variables that can be input or output, such as variables indicating the speed or position of industrial equipment or work objects (workpieces), variables indicating the name of the program to be executed by the industrial equipment, variables indicating the production line or cell number to which the industrial equipment belongs, or variables indicating the process execution time.

[0145] [Process Registration Unit]

[0146] The process registration unit 102 is mainly implemented by the CPU 11. The process registration unit 102 stores at least one of the start variable and the change variable set by the condition setting unit 101 in the process database DB as process information in association with the name of the new process. In this embodiment, although both the start variable and the change variable are stored in association with the name of the new process, the process registration unit 102 may store only one of the start variable and the change variable in association with the name of the new process. The process registration unit 102 stores the process information (including the name of the new process and the conditions for the start variable and the change variable) in the process database DB ( Fig.11 In this embodiment, the name of the new procedure is specified when the procedure program P is generated, so the procedure registration unit 102 includes the specified name of the new procedure in the procedure information.

[0147] [Process program generation unit]

[0148] The process program generating unit 103 is mainly realized by the CPU 11. The process program generating unit 103 generates a process program P. Figure 3 As described above, the process program P itself can be generated in a known language. For example, the process program generation unit 103 generates the process program P by performing a build operation on a ladder diagram described by a user. For example, the process program generation unit 103 compiles the code described by the user using a robot language to generate the process program P.

[0149] In this embodiment, the start variable is a start condition for executing the process program P, and therefore, the process program generation unit 103 generates the process program P so that the execution starts when the start variable set by the condition setting unit 101 becomes a predetermined value. For example, when a ladder diagram language is used, the process program generation unit 103 performs a build operation by inserting a start switch or a coil corresponding to the start variable into a ladder diagram described by a user. For example, when a robot language is used, the process program generation unit 103 performs a compile by inserting a conditional branch to be executed into a code described by a user when the start variable becomes a predetermined value.

[0150] In addition, for example, when the process program P performs the last processing, the process program generation unit 103 generates the process program P to change the end variable to a predetermined value. For example, when the ladder diagram language is used, the process program generation unit 103 performs a build operation by inserting a start switch or a coil corresponding to the end variable into the ladder diagram described by the user. In addition, for example, when the robot language is used, the process program generation unit 103 performs compilation by inserting an instruction for setting the end variable to a predetermined value into the code described by the user when the last process is completed. Similarly, with respect to the interrupt variable and the busy variable, the process program generation unit 103 can generate the process program P so that the interrupt variable and the busy variable become predetermined values ​​when a predetermined condition is met.

[0151] [Display control unit]

[0152] The display control unit 104 is mainly implemented by the CPU 11. The display control unit 104 displays a scheduling screen G1 including the names of a plurality of processes acquired from a process database DB storing process information, wherein, for each process executed in the production system 1 having a plurality of industrial devices 30, at least the name of the process is associated with a variable which is at least referenced or changed in a process program executed in the process representing the operation of one or more industrial devices 30 and which can specify the execution order of the plurality of processes.

[0153] In this embodiment, the variable is referenced and changed by the process program P, however, the variable may be only referenced or changed. The variable of a process may be referenced and changed by the process program P of the process, or may be referenced and changed by another process program P or a system program Q. To associate a process name with a variable is to include the process name and the variable in the same process information or to link them to each other.

[0154] The scheduling screen G1 capable of specifying the execution order is a screen having a user interface capable of specifying the execution order. The execution order can be specified by any method, and the layout of the scheduling screen G1 is not limited to Figures 4 to 8 For example, the scheduling screen G1 may have Fig. 9 , or a layout in a table format instead of a timing chart format as in a modified example described later. In addition, for example, the schedule screen G1 may have another layout such as a flowchart format.

[0155] In this embodiment, the display control unit 104 displays the timing chart C as the scheduling screen G1 based on the execution order and the names and variables of the respective processes included in the execution order received by the receiving unit 105. In this embodiment, the process database DB stores the execution order, the process names, and the variables, which are stored as the process information, and thus the display control unit 104 displays the timing chart C based on the process information in the process database DB.

[0156] The timing diagram C is a diagram showing the execution order of a process. In other words, the timing diagram C is a diagram showing the execution timing of a process in time series. The timing diagram C shows information for identifying a process in time series. For example, the timing diagram C displays the name of the process in time series. In addition, for example, a process image I indicating the execution timing of the process is arranged in time series in the timing diagram C. The information for identifying a process may be information other than the name of the process or an image (e.g., an icon) other than the process image I. The execution order of the process may be specified by a numerical value of the execution order stored in the process information or by a variable and an execution condition stored in the process information.

[0157] The information for identifying the process may be arranged in any direction, for example, from top to bottom, from left to right, from bottom to top, or from right to left. In this embodiment, the names of the processes are arranged from top to bottom in time series. The process images I are arranged from left to right in time series. For example, the display control unit 104 specifies the process names and the execution order by referring to the process information stored in the process database DB, and displays a timing chart C in which the process names are arranged in the execution order from top to bottom and the process images I are arranged in the execution order from left to right.

[0158] In the timing diagram C, the names of a plurality of processes included in the execution order are arranged on a process axis. The process axis is the direction in which the process names are arranged. In this embodiment, the process axis is oriented from top to bottom, although the process axis may be oriented in any predetermined direction, such as from left to right, from bottom to top, or from right to left. The names of the processes are arranged in a time series on the process axis. Figure 7 In the example of , the execution order is specified so that processes A1, A2, A3, B1, and B2 are executed in this order, and therefore, these names are arranged in a top-to-bottom direction which is a process axis.

[0159] In addition, for example, the timing diagram C displays the process image I on the process axis at a position substantially the same as the process name and in the order of execution on the timing axis perpendicular to the process axis, and the process image I indicates the execution of the corresponding process with each length on the timing axis. The timing axis may also be referred to as a time axis. In this embodiment, the timing axis is oriented from left to right, however, the timing axis may be at a 90° angle to the process axis and may be, for example, from right to left. For example, if the process axis is from left to right, the timing axis may be from top to bottom.

[0160] The process image I and the name of the process are arranged at substantially the same position on the process axis. Substantially the same position on the process axis means that there is no displacement in the process axis direction, or it is small enough to be considered as no displacement. Small displacement refers to displacement less than a predetermined distance (for example, less than 1 cm or less than 10 pixels). Figure 7As shown, the process images I of the processes A1, A2, A3, B1, and B2 are arranged to have substantially the same height as the names of the corresponding processes, and in the order of execution on the timing axis. The display control unit 104 arranges the process images I of the processes to be aligned in time series in the time axis direction. When the same process is repeatedly executed as in this embodiment, the process images I are arranged on different timing axes on the same process axis.

[0161] In this embodiment, the process information of a process includes an estimated execution time of the process. The display control unit 104 sets the length of the process image I on the timing axis (i.e., the length of the process image I in the timing axis direction) to a length corresponding to the estimated execution time. The length corresponding to the estimated execution time may be a length proportional to the estimated execution time, or a length that conceptually captures the length of the estimated execution time. For example, the longer the estimated execution time is, the longer the process image I becomes in the timing axis direction. For each process, the display control unit 104 determines the length of the process image I of the process based on the estimated execution time included in the process information of the process.

[0162] The relationship between the estimated execution time and the length of the process image I is not limited to the above example. For example, if the estimated execution time of a process is 10 seconds, and the other two processes are 2 seconds and 1 second respectively, the process images I of the 1 second and 2 second processes can be displayed in proportion to their lengths, and the 10 second process can be displayed in a shortened manner, which is not proportional to its length. This helps to conceptually grasp the execution order and improve the listability of the execution order. In addition, the length of the process image I may not correspond to the estimated execution time. For example, if the estimated execution time is omitted, the process image I can have a fixed length. As another example, a numerical value indicating the estimated execution time can be displayed in a fixed-length process image I.

[0163] For example, the display control unit 104 moves the process image I in the timing chart C based on the movement instruction. The movement instruction is an instruction for moving the process image I. In this embodiment, the drag-and-drop operation is described as an example of the movement instruction, but the movement instruction may be any other operation, such as clicking or tapping. In addition, for example, the movement instruction may not be an operation on the process image I, but may be an operation of clicking or tapping the position of the destination of the process image I. As another example, the movement instruction may be an operation of pressing an arrow button on a keyboard.

[0164] In this embodiment, the process image I is moved and the execution order of the process is specified by this, so the move instruction can be called an operation for specifying the execution order. The display control unit 104 moves the process image I to the destination specified by the move instruction. The execution order of the process is also changed according to the order of the process images I. The execution order of each process is changed so that the order of the process images I on the timing axis matches the execution order. The execution order can be changed by the system program generation unit 106 to be described later, or can be changed by the display control unit 104.

[0165] In this embodiment, the process database DB stores the names of a plurality of industrial devices 30 in association with the process information of a plurality of processes to be performed by the industrial devices 30, and the display control unit 104 displays a list L of the names of the industrial devices 30 on the scheduling screen G1. The industrial devices 30 listed in the list L are all or some of the industrial devices 30 to be controlled by the controller 20. In this embodiment, the industrial devices 30 to be controlled are defined in the process database DB, so the display control unit 104 refers to the process database DB and displays the list L of the industrial devices 30. The list L is a list of the names of the industrial devices 30, and the order of the names can be freely determined. For example, in the list L, the names of the industrial devices 30 can be arranged in word order (e.g., alphabetical order) or in the order of registration in the process database.

[0166] The user can select the name of the industrial device 30 from the list L, and further, the display control unit 104 arranges the process image I of the process associated with the selected industrial device 30 on the process axis of the timing chart C. The display control unit 104 obtains the process information related to the industrial device 30 selected by the user from the process database DB, and specifies the process executed by the industrial device 30 and the execution order thereof. The display control unit 104 arranges the process image I of the specified process on the process axis of the timing chart C in the specified execution order.

[0167] For example, when a user Figure 4 When the industrial device 30A in the list L is selected in the state of , the display control unit 104 arranges the process images I1, I2 and I3 of the respective processes A1, A2 and A3 on the process axis of the timing chart C based on the process information of the industrial device 30A. In this case, the timing chart C is in Figure 5 , each process image I1, I2, and I3 are aligned from top to bottom on the process axis. Subsequently, if the user selects the industrial device 30B in the list L, the display control unit 104 arranges the process images I4 and I5 of the respective processes B1 and B2 on the process axis of the timing chart C based on the process information of the industrial device 30B. In this case, the timing chart C is in Figure 6 In the state shown, each of the process images I4 and I5 is aligned from top to bottom on the process axis.

[0168] [Receiving unit]

[0169] The receiving unit 105 is mainly implemented by the CPU 11. The receiving unit 105 receives the designation of the execution order on the scheduling screen G1 displayed by the display control unit 104. In this embodiment, the receiving unit 105 receives a move instruction for moving the process image I in the timing chart C on the timing axis in accordance with the designated execution order. The execution order can be designated by any operation and can be designated by an operation other than a move instruction. For example, the execution order can be designated by an operation for inputting a numerical value indicating the execution order in an input form or an operation for selecting the execution order from a pull-down menu.

[0170] The receiving unit 105 receives the selection of the name of the industrial device 30 from the list L. The receiving unit 105 receives the designation of the execution order of the process of the industrial device 30 selected from the list L. In this embodiment, even if the name of the industrial device 30 is displayed in the list L, the industrial device 30 is not controlled by the system program Q unless the user selects the display device 30. The receiving unit 105 may receive the selection of the names of all the industrial devices 30 in the list L, or may receive the selection of only some of the industrial devices 30 in the list L. In this embodiment, the name in the list L is selected by a drag-and-drop operation, however, the name may be selected by any other operation. For example, the name of the industrial device 30 may be selected by clicking or tapping the name in the list L.

[0171] The receiving unit 105 receives the designation of the repetitive operation of the plurality of industrial devices 30 on the scheduling screen G1. The repetitive operation is a periodic operation of the industrial device 30. The designation of the repetitive operation is to designate the execution timing of the repetitive operation. In this embodiment, the case where the designation of the start timing of the second cycle corresponds to the designation of the repetitive operation will be described, however, the designation of the repetitive operation may be the designation of any start timing of the third cycle or the subsequent cycles.

[0172] In this embodiment, the repetitive operation is specified by specifying any position on the timing diagram C, but the repetitive operation can be specified by any other operation. For example, the repetitive operation can be specified by placing other processes (in Figure 7 In the example of , the process B1) indicated by the process image I4 is specified as the start condition of the first process in the second cycle to specify the repetitive operation. In addition, for example, the repetitive operation can be specified by inputting a numerical value of the start timing of the second cycle.

[0173] [System program generation unit]

[0174] The system program generation unit 106 is mainly implemented by the CPU 11. The system program generation unit 106 generates a system program Q for operating each industrial device 30 in a specified execution order based on the execution order received by the receiving unit 105 and the variables of each process included in the execution order. The system program generation unit 106 generates the system program Q that controls the variables of each process so that each process is executed in the specified execution order.

[0175] In this embodiment, the variables of the process include a start variable indicating the start of execution of this process. The system program generation unit 106 generates the system program Q by associating the change variable changed in at least one process with the start variables of one or more other processes executed in cooperation with the at least one process in the execution order, so that the processes according to the execution order are sequentially executed. Associating the change variable with the start variable means that the value of the change variable is a condition for changing the value of the start variable. For example, the end variable "A1.End" of the process A1 is a condition for changing the start variable "A2.Start" of the process A2, and therefore, these variables are associated with each other in the system program Q.

[0176] For example, the system program generation unit 106 generates the system program Q by associating the start variable of another process corresponding to the process image I moved by the display control unit 104 with the change variable of a process corresponding to the process image I immediately preceding the another process on the timing axis. The process image I that is immediately preceding on the timing axis is the most recent in time. Figure 7 In the example of FIG. 1 , process images I1 , I2 , I3 , and I4 are located immediately before process images I2 , I3 , I4 , and I5 , respectively.

[0177] In this embodiment, process A1 is the first process to be executed, and the end variable of another process is not a condition to start in the first cycle. For example, when the variable "IO1.Input1" indicating a predetermined input / output signal becomes a predetermined value, the system program generation unit 106 generates the system program Q so that the start variable of process A1 is the predetermined value.

[0178] Furthermore, for example, since the process image I2 of the process A2 is located immediately after the process image I1 of the process A1, the system program generation unit 106 generates the system program Q so that when the end variable "A1.End" of the process A1 becomes a predetermined value, the start variable "A2.Start" of the process A2 becomes a predetermined value. Furthermore, for example, since the process image I3 of the process A3 is located immediately after the process image I2 of the process A2, the system program generation unit 106 generates the system program Q so that when the variable "A2.S1" of the process A2 becomes a predetermined value and the end variable "A2.End" of the process A2 becomes a predetermined value, the start variable "A3.Start" of the process A3 becomes a predetermined value.

[0179] Furthermore, for example, since the process image I4 of the process B1 is located immediately after the process image I3 of the process A3, the system program generation unit 106 generates the system program Q so that when the end variable "A3.End" of the process A3 becomes a predetermined value, the start variable "B1.Start" of the process B1 becomes a predetermined value. Furthermore, for example, since the process image I5 of the process B2 is located immediately after the process image I4 of the process B1, the system program generation unit 106 generates the system program Q so that when the end variable "B1.End" of the process B1 becomes a predetermined value, the start variable "B2.Start" of the process B2 becomes a predetermined value.

[0180] It is assumed that a program for generating the system program Q is stored in the data storage unit 100. For example, the system program generating unit 106 generates the system program Q by performing a build operation. The instruction for executing the above-mentioned processing can be described by a start switch or a coil in a ladder diagram language, for example, or can be described by an instruction of a conditional branch in a robot language. In addition to the build, the system program generating unit 106 can generate the system program Q using a compiler, for example. In addition, the change variable associated with the start variable is not limited to the end variable. For example, similar to the start variable "A3.Start" of process A3, not only the end variable "A2.End" of process A2 but also the variable "A2.S1" of the signal of process A2 can be associated with the start variable.

[0181] The system program generation unit 106 generates a system program Q for operating the industrial device 30 with the designated repetitive operation based on the repetitive operation received by the reception unit 105. For example, the system program generation unit 106 determines the start timing of the second cycle and subsequent cycles to execute the repetitive operation designated by the user.

[0182] exist Figure 8In the example of , the system program generation unit 106 associates the start variable of the process A1 in the second cycle and the subsequent cycle with the end variable of the process B1. Therefore, when the process B1 of the previous cycle is completed, the process A1 in the second cycle and the subsequent cycle is started, and the process B1 is completed as shown in FIG. Figure 8 The system program generation unit 106 generates the system program Q so that when the end variable "B1.End" of the process B1 (not the variable "IO1.Input1" of the input / output signal) becomes a predetermined value, the start variable "A1.Start" of the process A1 in the second cycle is changed. The system program generation unit 106 generates the system program Q to perform the same processing as in the first cycle for subsequent processing.

[0183] [3-2. Functions implemented by the controller]

[0184] like Fig.10 As shown, a data storage unit 200 and a system program execution unit 201 are implemented in the controller 20 .

[0185] [Data storage unit]

[0186] The data storage unit 200 is mainly implemented by the storage unit 22. The data storage unit 200 stores data required for the execution order of the control process. For example, the data storage unit 200 stores the system program Q. The system program Q stored in the data storage unit 200 is generated by the program generation device 10. For example, the data storage unit 200 can store the names and IP addresses of the industrial devices 30A and 30B to be controlled by the controller 20. For example, the data storage unit 200 can store the process database DB. For example, the data storage unit 200 can store the values ​​of the variables of the industrial device 30. It is assumed that the variables of the data storage unit 200 and the variables of the data storage unit 300 are periodically matched.

[0187] [System program execution unit]

[0188] The system program execution unit 201 is mainly implemented by the CPU 21. The system program execution unit 201 controls the execution order of the process based on the system program Q. For example, the system program execution unit 201 sends an instruction to each industrial device 30 to start each process, so that each industrial device 30 operates in the execution order specified by the user. For example, the system program execution unit 201 periodically refers to the change variable of each industrial device 30, and when the change variable of a certain process becomes a predetermined value, the start variable of the next process is changed to a predetermined value. The system program execution unit 201 returns the start variable of the next process to the initial value at any timing after the next process starts. After that, the execution order of the process is controlled by the same processing.

[0189] [3-3. Functions of industrial equipment]

[0190] like Fig.10 As shown, a data storage unit 300 and a process program execution unit 301 are implemented in an industrial device 30 .

[0191] [Data storage unit]

[0192] The data storage unit 300 is mainly implemented by the storage unit 32. The data storage unit 300 stores data required for the industrial device 30 to execute a process. For example, the data storage unit 300 stores a process program P. In this embodiment, process information is prepared for each process program P, so the data storage unit 300 can store the process program P and the process information in association with each other. The data storage unit 300 stores the values ​​of variables of each process. As described above, the variables of the data storage unit 300 and the variables of the data storage unit 200 are consistent with each other. In addition, the data storage unit 300 can store, for example, parameters for controlling a motor and teaching data of a robot.

[0193] [Process program execution unit]

[0194] The process program execution unit 301 is mainly implemented by the CPU 31. The process program execution unit 301 executes a process based on the process program P and variables stored in the data storage unit 300. For example, in response to an instruction received from the controller 20, the start variable of each process is changed to a predetermined value, and the process program execution unit 301 starts the process when detecting the change. In addition, for example, when the last process described in the process program P of the process ends, the process program execution unit 301 changes the end variable of the process to a predetermined value. When the system program Q detects that the end variable of the process becomes the predetermined value, the start variable of the next process is changed to the predetermined value, and the process program execution unit 301 starts executing the process program P of the next process. Thereafter, the respective processes are sequentially executed by the same processing.

[0195] [4. Processing performed by program generation device]

[0196] Next, a description will be given of processing executed in the program generating device 10. In this embodiment, a description will be given of processing for generating a process program P and processing for generating a system program Q. This processing is executed by the CPU 11 operating according to a program stored in the storage unit 12 (for example, an engineering tool). Fig.12 and 13 The processing shown in Fig.10 Examples of the processing performed by the functional blocks shown.

[0197] [4-1. Processing of generating a process program]

[0198] Fig.12 is a flowchart showing an example of a process of generating a process program P. Fig.12 As shown, the CPU 11 starts the engineering tool (S100) and generates a process item of a new process based on the user's operation (S101). In S101, the user inputs the name of the industrial device 30 that executes the process and the name of the new process from the operation unit 14, and generates a process item.

[0199] The CPU 11 performs initial setting of the process program P of the new process based on the operation of the user (S102). In S102, the CPU 11 sets default values ​​of the new process, and receives, for example, a process name and an estimated execution time from the user.

[0200] The CPU 11 performs detailed settings such as variables based on the user's operation (S103). In S103, for example, the CPU 11 receives designation of variables other than default variables in the industrial device 30 and designation of an execution order.

[0201] The CPU 11 performs process programming based on the user's operation, and generates a process program P (S104). In S104, process programming using any language such as a ladder language or a robot language is performed, and the process program P is generated.

[0202] The CPU 11 generates process information of the new process and stores the information in the process database DB (S105). In S105, the CPU 11 generates a new record in the process database DB and registers the process information of the new process in association with the name of the industrial device 30 in which the new process is generated.

[0203] The CPU 11 records the process program P generated in S104 in the industrial device 30 (S106), and the processing terminates. In S106, the CPU 11 records the process program P in the storage unit 32 of the industrial device 30 that executes the new process.

[0204] [4-2. Processing of generating system program]

[0205] Fig.13 : is a flowchart showing an example of a process of generating a system program Q. Fig.13 As shown in FIG. 1 , the CPU 11 starts the engineering tool based on the process database DB (S200) and displays the scheduling screen G1 on the display unit 15 (S201). The scheduling screen G1 in S201 is as shown in FIG. Figure 4 As shown, the list L shows the names of the industrial devices 30 to be controlled by the controller 20 (process information of the industrial devices 30 is registered in the process database DB).

[0206] The CPU 11 specifies the user's operation (S202) based on the detection signal of the operation unit 14. Here, a case where the selection of the name of the industrial device 30 from the list L, the movement instruction of the process image I, the specification of the repetitive operation, or the instruction to generate the system program Q is executed will be described.

[0207] In S202, if the name of the industrial device 30 in the list L is selected (S202; selection of industrial device), the CPU 11 updates the display of the timing chart C based on the process information of the industrial device 30 selected by the user (S203). In S203, the CPU 11 displays the name of the industrial device 30 selected by the user, and updates the display of the timing chart C so that the name and estimated execution time of the process are arranged on the process axis and the process image I having a length corresponding to the estimated execution time is arranged on the timing axis. The scheduling screen G1 in S203 is as shown in FIG. Figure 5 If a plurality of industrial devices 30 are not selected, the name of the industrial device 30 in the list L is selected again, and the process of S103 is executed.

[0208] In S202, if the move instruction of the process image I is executed (S202; move instruction), the CPU 11 moves the process image I based on the move instruction (S204) and sets the execution order of the process (S205). In S205, the CPU 11 updates the process database DB according to the execution order specified by the move instruction. For example, the CPU 11 associates the start variable of the process in the later execution order with the end variable of the process in the earlier execution order. The display of the timing chart C is changed from Figure 6 The status changes to Figure 7 status.

[0209] If a repetitive operation is specified in S202 (S202; specification of repetitive operation), the CPU 11 performs setting of the repetitive operation (S206). In S206, the CPU 11 updates the timing chart C so that the second cycle starts at the start timing specified by the user. The CPU 11 updates the process database DB so that the end variable of any process in the first cycle is associated with the start variable of the first process in the second cycle.

[0210] In S202, if an instruction to generate the system program Q is issued (S202; generate instruction), the CPU 11 generates the system program Q based on the process information of the process database DB (S207), and the processing is terminated. In S207, the CPU 11 performs the above-mentioned construction operation and generates the system program Q. The system program Q is written to the controller 20 at any time.

[0211] According to the program generation device 10 in this embodiment, based on the execution order of the plurality of processes received in the scheduling screen G1 and the variables of each process included in the execution order, a system program Q for operating each industrial device 30 in the specified execution order is generated. This is used to simplify the generation of the system program Q. For example, in the conventional technology, the user needs to generate a ladder diagram of the PLC at any time. However, according to the program generation device 10, the user can specify the execution order of the plurality of processes on the scheduling screen G1, so that the program can be generated by a simpler operation.

[0212] Furthermore, it is possible to generate a system program Q that enables one process and other processes to be executed in coordination with each other by associating a change variable changed in at least one process with a start variable of one or more other processes executed in coordination with the at least one process in the execution order so that the processes according to the execution order specified on the scheduling screen G1 are sequentially executed. For example, a change variable changed in another process executed before a process can be set as a condition for starting the process.

[0213] In addition, at least one of the start variables and change variables set for a new process that is not registered in the process database DB is stored in the process database DB as process information in association with the new process. Therefore, even if a new process is added, the execution order of the new process can be specified on the scheduling screen G1, and the system program Q can be generated in a further simplified manner.

[0214] In addition, a timing chart C is displayed as the scheduling screen G1 in which the names of processes included in the execution order are arranged on the process axis, and a process image I indicating the execution of each process with a certain length on the timing axis orthogonal to the process axis is arranged at substantially the same position as the name of each process on the process axis and in the execution order. This enables the provision of a scheduling screen G1 in which the execution order of the processes can be easily and intuitively grasped.

[0215] Furthermore, the length on the timing axis of the process image I is set to a length corresponding to the estimated execution time. This provides a scheduling screen G1 in which the estimated execution time can be intuitively grasped.

[0216] Furthermore, a movement instruction for moving the process image I on the timing axis in the timing chart C is received as a designation of the execution order, so that the execution order of the processes can be designated by a more intuitive operation.

[0217] Furthermore, a list L of the names of the industrial devices 30 is displayed, and process images I of the respective processes associated with the selected industrial device 30 are arranged on the process axis of the timing chart C. With this arrangement, the industrial device 30 for which the execution order is to be specified can be freely selected, and the system program Q can be generated in a further simplified manner.

[0218] Furthermore, in the scheduling screen G1, designation of a repetitive operation for each industrial device 30 is received, and a system program Q for operating each industrial device 30 with the designated repetitive operation is generated. This can simplify generation of the system program Q for causing each industrial device 30 to perform the repetitive operation.

[0219] [5. Modification example]

[0220] The present invention is not limited to the above-described embodiments, and can be modified appropriately without departing from the spirit of the present invention.

[0221] (1) For example, the process program P may be generated by using a program generated by a tool other than the engineering tool described in the embodiment. In this modification example, a case where a program generated by another tool is converted to generate the process program P will be described. In this modification example, a case where the process program P is generated by converting a program generated in a ladder language will be described, however, when a program generated in another language (such as a robot language) is converted, the process program P is generated by the same steps.

[0222] Fig.14 1 is a diagram showing steps for converting a program generated by an existing tool. Here, an example of steps when a process program PA1 is generated by conversion will be described. Fig.14 As shown, the display control unit 104 displays a series program screen G2 ( Fig.14 Step 1) in the above code.

[0223] The generated series of programs are programs generated by other tools. It is assumed that the generated series of programs are pre-stored in the data storage unit 100. The other tools can be various well-known tools, for example, tools that can be programmed in ladder diagrams or robot languages. However, other tools cannot be programmed by specifying variables similar to the engineering tools described in the embodiments. In the generated series of programs, variables for executing processes are not specified, for example, the start conditions and operation outputs of the processes are described by ladder diagrams. In the generated series of programs, instructions for at least one process are described.

[0224] The part corresponding to the process program PA1 is the part that is the target of the process program PA1 in the already generated series of programs. The part corresponding to the process program PA1 can also be called a part to be converted (reused) or a part whose start and end are controlled by a variable in the already generated series of programs. Any part of the already generated series of programs is a part corresponding to the process program PA1. For example, all programs of the already generated series of programs can be parts corresponding to the process program PA1.

[0225] The series program screen G2 is a screen for displaying the content of the already generated series program. For example, in the case of a ladder diagram language, a ladder diagram of the already generated series program is displayed on the series program screen G2. In addition, for example, in the case of a robot language, the code of the already generated series program is displayed on the series program screen G2. The series program screen G2 is not limited to these examples, and may be any screen on which the content of the already generated series program is displayed. For example, the series program screen G2 may be a screen that displays the individual processes of the already generated series program in the form of a flowchart.

[0226] The receiving unit 105 receives a designation of a portion corresponding to the process program PA1 in the series program screen G2 displayed by the display control unit 104 ( Fig.14 Step 2) The user specifies any part of the series program that has been generated on the series program screen G2. Fig.14 In the example of , a case where a portion corresponding to the process program PA1 is specified by selecting a range in the series program screen G2 will be described, however the portion can be specified by any other operation. The user specifies the target portion of the process program P (i.e., the portion operated by the variable control). For example, the user specifies a portion corresponding to the start variable and a portion corresponding to the end variable in the already generated series program. In addition, for example, the user specifies a portion corresponding to the interrupt variable and a portion corresponding to the busy variable in the already generated series program.

[0227] The process program generating unit 103 generates a new process program PA1 corresponding to a new process based on the part of the series program specified in the receiving unit 105 and at least one of the start variable and the change variable set by the condition setting unit 101. Fig.14 In the present modification example, it is assumed that the start variable and the change variable are set in advance by the condition setting unit 101. These setting methods are as described in the embodiment.

[0228] The process program generation unit 103 inserts a start switch and a coil corresponding to the start variable and the change variable in the portion specified by the user in the series program, and generates a new process program PA1. For example, by inserting the start switch and the coil, an operation is started by the start variable set by the condition setting unit 101, and the end and interruption of the operation are controlled by the change variable set by the condition setting unit 101. The new process program P may be stored in the data storage unit 200 of the controller 20, or in the data storage unit 300 of the industrial device 30. When converting a series program generated using a robot language, a new process program PA1 may be generated by inserting a conditional branch or an instruction for changing the start variable and the change variable in the portion specified by the user in the series program.

[0229] The designation of a portion of the series program or the setting of a condition for at least one of the start variable and the change variable may be performed first. In other words, for example, the variable may be set after cutting out the trapezoid, rather than cutting out and associating the trapezoid after setting the variable. For example, the designation of a portion of the series program may be performed before setting the conditions for the start variable and the change variable. In this case, the user sets the condition for at least one of the start variable and the change variable after designating the portion corresponding to the process program in the existing series program. In addition, for example, the setting of the condition for the start variable and the change variable may be performed before designating the portion of the series program. In this case, after setting the condition for at least one of the start variable and the change variable, the user designates the portion corresponding to the process program in the existing series program.

[0230] According to modified example (1), a new process program P corresponding to a new process is generated based on part of an already generated series program and at least one of the set start variables and change variables. Therefore, a new process program P can be generated by reusing the already generated series program, which can reduce the workload of generating a new process program P.

[0231] (2) In addition, for example, the controller 20 can perform predetermined calculations on the variables of the industrial equipment 30, and control the processes of other industrial equipment 30 based on the calculation results. Hereinafter, a program for performing calculations is referred to as a calculation program. In this modified example, the calculation program can be executed by the controller 20, but the calculation program can be executed by another computer such as the server 40. For example, the calculation program can be executed separately, for example, the controller 20 executes the calculation program in normal processing, and when an error occurs, the server 40 executes the calculation program in calculations related to operation analysis and recovery operations.

[0232] Fig.15 FIG. 1 is a diagram showing an example of processing of a computing program. Fig.15In the example shown, the controller 20 executes the calculation program PF and performs the calculation process F. The calculation process F is not a physical operation performed in the industrial device 30, but only a calculation process inside the controller 20 is performed, however in this modified example, the calculation process F is handled the same as the process of the industrial device 30 and is called a calculation process.

[0233] For example, the calculation program PF is generated in the same steps as the process program P. In this way, the start variable and the end variable are also set for the calculation process F. Fig.15 In the example of , when each of the variable "A2.S1" of process A2 and the variable "B1.Result" of process B1 becomes a predetermined value, the start variable "F1.Start" of the calculation process F changes, and the calculation process F starts. Other variables such as an interrupt variable and a busy variable may also be set for the calculation process F.

[0234] For example, the calculation program PF performs a predetermined calculation on the variable "A2.S1" of the process A2 and the variable "B1.Result" of the process B1. If the calculation result is a predetermined result, the end variable "F1.End" of the calculation process F becomes a predetermined value. Fig.15 In the example of , when each of the end variable "B1.End" of process B1 and the end variable "F1.End" of calculation process F becomes a predetermined value, the start variable of process B2 changes, and process B2 starts. Calculation program PF can output the calculation result to process program P. Fig.15 In the example of FIG. 2 , the calculation program PF can output the calculation results to the process program PB2 .

[0235] Regarding the calculation process F, the same process information as other processes is prepared, and the process database DB stores the process information of the calculation process F. Fig.16 : is a diagram showing an example of data storage of a process database of the modification example (2). Fig.16 As shown, the procedure database DB of the present modification stores variables to be referred to as procedure information, and stores the names of procedures corresponding to calculation processing for outputting results to the variables to be changed and the variables associated therewith.

[0236] The variable to be referenced is a variable referenced by the calculation procedure PF. The variable to be referenced can be a variable of the calculation procedure F or a variable of a procedure other than the calculation procedure F. Fig.16 In the example of , the calculation program PF references the variable "A2.S1" of the process A2 and the variable "B1.Result" of the process B1, so these variables are stored in the process information of the calculation process F.

[0237] The variable to be changed is a variable changed by the calculation process PF. The variable to be changed may be a variable of the calculation process F, or may be a variable of a process other than the calculation process F. Fig.16 The data storage example of shows that the end variable "F1.End" of the calculation process F becomes a predetermined value according to the calculation result of the calculation process F, and the process B2 starts. For example, the process information of the calculation process F stores the conditions of the start variable "F1.Start" and the end variable "F1.End" of the calculation process F. In the case where the calculation program PF outputs the calculation result to change the variable of other processes, the variable of other processes corresponds to the variable to be changed.

[0238] When a process corresponding to a calculation process is included in the execution order received by the receiving unit 105, the display control unit 104 of the present modification displays the process image I of the process corresponding to the calculation process together with other process images I. The scheduling screen G1 of the present modification may have the same layout as that described in the embodiment, and display the process image I of the calculation process F therein.

[0239] For example, in Figure 7 In the timing chart C of FIG. 1 , the process image I of the calculation process F is displayed on the row of the industrial device 30A. The calculation process F is executed between the process B1 and the process B2, so these process images I are displayed so that the process B1, the calculation process F, and the process B2 are arranged in this order on the timing axis. The process image I of the calculation process F may have a length corresponding to the estimated execution time, or may have a fixed length, similar to the process images I of other processes.

[0240] The process image I of the calculation process F may be displayed at any position in the timing diagram C, such as between the industrial devices 30A and 30B or below the industrial device 30B. The process image I may be displayed in the timing diagram C in the execution order of the normal process and the calculation process F.

[0241] According to modification example (2), when a calculation process F corresponding to a calculation process is included in a specified execution order, a process image I of the calculation process F is displayed together with other process images I, so that the calculation process F is processed the same as other processes on the scheduling screen G1, and a system program Q can be generated in a further simplified manner.

[0242] (3) Furthermore, for example, the layout of the schedule screen G1 is not limited to the timing chart format, and a table-type user interface may be displayed to specify the execution order of the processes.

[0243] Fig.17 : is a diagram showing an example of the scheduling screen G1 of the modification example (3). Fig.17As shown, the display control unit 104 displays a table T as a scheduling screen G1 based on the execution order received by the receiving unit 105 and the processes and variables included in the execution order. The table T displays process information of each process in a tabular form, such as the name of the industrial device 30, the name of the process, the estimated execution time, the execution order, the name of the variable, the execution condition, and comments.

[0244] For example, in table T, the names and variables of each process included in the execution order are arranged in the column direction or the row direction. The column direction is the direction from top to bottom, or the direction from bottom to top. The row direction is the direction from left to right or from right to left. Fig.17 In the example, the names of the procedures and the variables are arranged in columns.

[0245] In the scheduling screen G1, the timing chart C described in the present embodiment and the table T of the present modification can be switched. For example, the table T can be displayed when the user double-clicks the timing chart C, and the timing chart C can be displayed when the user double-clicks the table T. In this case, when the user specifies the execution order of the processes on the table T, this execution order is also reflected in the timing chart C.

[0246] The user enters information into each cell of the table T, thereby specifying the execution order of the process. For example, the user may enter a numerical value in the cell of the execution order, or may enter the name of a conditional variable in the cell of the execution condition. The system program Q may be generated so that each process is executed in the execution order specified by the user as described in the embodiment.

[0247] According to the modification example (3), the table T is displayed as the scheduling screen G1, which makes it easy to intuitively grasp the execution order of each process.

[0248] (4) For example, a case has been described in which the estimated execution time of each process executed by a certain industrial device 30 is distinguished in the scheduling screen G1, but some users may want to group the processes for management purposes. The receiving unit 105 of the present modification receives an operation to group all or part of the processes on the scheduling screen G1. For example, the user selects a plurality of processes to be executed by the industrial device 30, thereby grouping the processes. For example, when grouping all processes in the industrial device 30, the user selects the industrial device 30 that groups all processes. In addition, for example, when grouping a process of one industrial device 30 and a process of another industrial device 30, the user selects the processes.

[0249] Fig.18 is a diagram showing an example of a timing diagram when processes are grouped. Fig.18As shown, the display control unit 104 groups all or some of the processes based on the operation received by the receiving unit 105, and displays the processes on the schedule screen G1. The grouped processes are summarized in one process image I.

[0250] exist Fig.18 In the example of , processes A1, A2, and A3 in industrial equipment 30A are grouped together and displayed as process images I20, I22, and I24. Processes B1 and B2 in industrial equipment 30A are grouped together and displayed as process images I21 and I23. In this way, a process executed in a certain industrial equipment 30 can be placed in a black box, and the estimated execution time of the entire group can be displayed.

[0251] According to the modification example (4), all or some of the processes are grouped and displayed on the schedule screen G1, so that the processes related to each other can be displayed in a visually clear manner, and the generation of the system program Q can be effectively supported.

[0252] (5) For example, the estimated execution time and the actual execution time can be compared and displayed. Fig.19 is a functional block diagram of modified example (5). Fig.19 As shown, in this modification, the execution time acquisition unit 107 is implemented. The execution time acquisition unit 107 is mainly implemented by the CPU 11.

[0253] The execution time acquisition unit 107 obtains the actual execution time of each process based on the execution result of the system program Q. The actual execution time is the length from the actual start time to the end time. For example, the execution time acquisition unit 107 starts the timing process after setting the start variable of the process to a predetermined value, and measures the time until the end variable of the process becomes the predetermined value. The measurement of the actual execution time can be performed in the industrial device 30. In this case, the execution time acquisition unit 107 obtains the actual execution time from the industrial device 30.

[0254] Fig. 20 is a diagram showing an example of a case where the expected execution time and the actual execution time are compared. Fig. 20 In FIG. 1 , the process images of the estimated execution time are indicated by symbols I1 to I14, and the process images of the actual execution time are indicated by symbols R1 to R12. The display control unit 104 displays the timing chart C based on the execution order received by the receiving unit 105, the names and variables of each process included in the execution order, and the execution time of each process. Fig. 20 As shown, in the timing chart C of the present modification, the names of the processes included in the execution sequence as described in the present embodiment are arranged on the process axis.

[0255] In the timing chart C, process images R1 to R12 are arranged on the process axis at positions substantially the same as the names of the respective processes and are arranged on the time axis in the order of execution, and the process images R1 to R12 represent the execution time of each process by the length on the timing axis. The process images R1 to R12 are different from the process images I1 to I14 in that the process images R1 to R12 indicate the actual execution time, and are similar to the process images I1 to I14 in other aspects such as display position and length.

[0256] Fig. 20 The example shows a case where a process image R indicating the actual execution time of each process is displayed below a process image I indicating the estimated execution time of each process, however, the process image R may be displayed above the process image I, or the process image I and the process image R may overlap each other. In the timing chart C, the estimated execution time and the actual execution time may be displayed in a comparable manner. The timing chart for specifying the execution order and the timing chart for displaying the execution time may be the same or different.

[0257] According to modification example (5), the estimated execution time of each process is compared with the actual execution time to be displayed, which helps to grasp how much the actual operation differs from the estimation at the time of programming.

[0258] (6) In addition, for example, the estimated execution time of each process can be changed by the user. As described in the embodiment, the display control unit 104 displays the estimated execution time of each process on the scheduling screen G1. The estimated execution time can be represented by a numerical value or the length of the process image I.

[0259] The receiving unit 105 receives an operation for changing the estimated execution time of each process. The change operation may be any operation such as an operation for inputting a numerical value of the expected execution time in an input form, an operation for selecting a numerical value of the estimated execution time from a pull-down menu, or an operation for changing the length of the process image I. The estimated execution time is changed to a length corresponding to the change operation, and the display on the scheduling screen G1 and the process information are also updated.

[0260] According to the modification example (6), an operation of changing the estimated execution time of each process is received on the scheduling screen G1, which helps to easily plan the steps in the entire industrial equipment.

[0261] (7) Furthermore, for example, the above modification examples may be combined.

[0262] In addition, for example, the controller 20 may store a process program P for controlling the operation of the device directly below it. In addition, for example, in the timing diagram C, the process axis may be omitted, and only the timing axis may be set. In this case, the process images I of the various processes may be displayed so that they are aligned in rows. In addition, for example, the process database may be stored in a computer (e.g., server 40) other than the program generation device 10. In addition, for example, a plurality of industrial devices 30 may perform a process alternately. For example, default variables may not be prepared. In this case, the creator may manually set the variables, or the creator may freely select the variables from a list of variables prepared in advance. In addition, for example, variables for interrupt processing may be prepared. In addition, for example, instead of selecting an industrial device 30 from the list L, the process information of all industrial devices 30 may be automatically displayed on the timing diagram C.

[0263] Furthermore, for example, if the start of the second cycle is later than the end of all processes of the first cycle, the start timing of the second cycle can be automatically determined without specifying the start timing of the second cycle. Figure 7 In the example of , the start timing of the second cycle (the second start timing of process A1) can be automatically determined as any timing after the 17th second. In addition, for example, there may be one process program P for executing multiple processes. In addition, for example, although the case where the industrial device 30 operates periodically has been described, the periodic operation may not be performed in particular. In this case, the repeated operation is not set. In addition, for example, although the case where the program generation device 10 is a personal computer has been described, the program generation device 10 may be implemented by another type of computer such as a server computer.

[0264] In addition, for example, the above-mentioned embodiments have been shown as specific examples, and the present invention disclosed in this specification is not limited to the configuration and data storage examples of these specific examples themselves. The technicians of this field can make various modifications to the disclosed embodiments, such as the shape and number of physical components, the execution order of data structures and processes. It should be understood that the technical scope of the present invention disclosed herein includes such modifications.

Claims

1. A program generation device, comprising: a display control unit configured to display a scheduling screen, wherein, for each of a plurality of processes executed in a system including a plurality of industrial devices, at least a name of the process is associated with variables, the variables including a start variable indicating a start of execution of the process, and an end variable indicating an end of execution of the process, the variables being at least referenced or changed in a process program representing an operation of one or more of the plurality of industrial devices and being executed in the process, a plurality of names of the plurality of processes obtained from a process database and stored as process information are included, and an execution order of the plurality of processes can be specified; a receiving unit configured to receive a designation of the execution order on the scheduling screen displayed by the display control unit; and a system program generating unit configured to generate a system program, based on the execution sequence received by the receiving unit and the variable of each process included in the execution sequence, the system program operating each of the plurality of industrial devices in the specified execution sequence; When the start variable of each of the plurality of processes changes to a first predetermined value, the process is started, and when the process ends, the end variable of the process changes to a second predetermined value, and the start variable of the subsequent process changes to the first predetermined value. The system program generation unit generates the system program that controls the respective start variables and the end variables of the plurality of processes so that each of the plurality of processes is sequentially executed in the execution order.

2. The program generation device according to claim 1, further comprising: a condition setting unit configured to set a condition of at least one of the start variable or the change variable for a new process not registered in the process database; as well as A procedure registration unit configured to store at least one of the start variable or the change variable set by the condition setting unit in the procedure database as the procedure information in association with the name of the new procedure.

3. The program generation device according to claim 2, wherein: The condition setting unit is capable of setting a predetermined default variable as at least one of the start variable or the change variable and adding a variable designated by a user.

4. The program generation device according to claim 2 or 3, wherein: the display control unit displays a series of program screens in which a portion corresponding to the process program in a series of programs that has been generated can be specified, The receiving unit receives a designation of a portion corresponding to the process program on the series program screen displayed by the display control unit, and The program generating device further includes a process program generating unit configured to generate a new process program corresponding to the new process based on the portion of the series of programs specified by the receiving unit and at least one of the start variable or the change variable set by the condition setting unit.

5. The program generation device according to any one of claims 1 to 3, wherein: the display control unit displays a timing chart as the scheduling screen based on the execution order received by the receiving unit and the names and variables of the respective processes included in the execution order, The names of the respective processes of the plurality of processes included in the execution order are arranged on the process axis of the timing chart, and A plurality of process images are arranged in the timing diagram such that the plurality of process images are arranged in the execution order on a timing axis perpendicular to the process axis and are arranged at positions substantially the same as the corresponding names on the process axis, and the plurality of process images respectively indicate the execution of the plurality of processes with their respective lengths on the timing axis.

6. The program generation device according to claim 5, wherein: The process information includes an estimated execution time of the process, and The display control unit sets the length of the process image on the timing axis to a length corresponding to the estimated execution time.

7. The program generation device according to claim 5, wherein: The receiving unit receives a movement instruction as a designation of the execution order, the movement instruction being used to move the process image on the timing axis in the timing diagram, The display control unit moves the process image in the timing chart based on the movement instruction, and The system program generation unit generates the system program by associating start variables of other processes corresponding to the process image moved by the display control unit with change variables of a process corresponding to a process image disposed immediately before the other process on the timing axis.

8. The program generation device according to claim 5, wherein: The process database stores the names of the plurality of industrial devices in association with process information of a plurality of processes executed in the respective industrial devices. The display control unit displays a list of names of the plurality of industrial devices (30) on the scheduling screen, The receiving unit receives a selection of a name of the industrial device from the list, and The display control unit further arranges a process image of each of a plurality of processes associated with the selected industrial device on the process axis in the timing chart.

9. The program generation device according to claim 4, wherein: The variable to be referenced is input into the process database as the process information, and the process database stores the name of the process corresponding to the calculation process for outputting a result to the variable to be changed and the variable associated with the name of the process, and In a case where the execution order received by the receiving unit includes a process corresponding to the calculation process, the display control unit displays a process image of the process corresponding to the calculation process together with other process images.

10. The program generation device according to any one of claims 1 to 3, wherein: The display control unit displays a table as the scheduling screen based on the execution order received by the receiving unit and the processes and variables included in the execution order, and The names and variables of the plurality of processes included in the execution order are arranged in a column direction or a row direction in the table.

11. The program generation device according to any one of claims 1 to 3, wherein: The receiving unit receives an operation for grouping all or some of the plurality of processes on the scheduling screen, and The display control unit groups all or some of the processes based on the operation received by the receiving unit and displays the grouped processes on the schedule screen.

12. The program generation device according to any one of claims 1 to 3, wherein: The receiving unit receives a designation of a repetitive operation for each of the plurality of industrial devices on the scheduling screen, and The system program generation unit generates the system program for operating each industrial device with a designated repetitive operation based on the repetitive operation received by the reception unit.

13. The program generation device according to claim 4, further comprising an execution time acquisition unit configured to obtain an actual execution time of each of the plurality of processes based on an execution result of the system program, wherein the display control unit displays a timing chart based on the execution order received by the receiving unit, the names and variables of the respective processes included in the execution order, and the execution time of each of the processes, The names of the plurality of processes included in the execution order are arranged on a process axis in the timing chart, and A plurality of process images are arranged in the timing diagram such that the plurality of process images are set in the execution order on a timing axis perpendicular to the process axis and are set at positions substantially the same as the respective names on the process axis, and the plurality of process images respectively indicate the execution of the plurality of processes with respective lengths on the timing axis.

14. The program generation device according to any one of claims 1 to 3, wherein: The process information includes an estimated execution time of the process, The display control unit displays the estimated execution time of each of the plurality of processes on the schedule screen, and The receiving unit receives an operation for changing the estimated execution time of each process.

15. A program generation method, comprising: displaying a scheduling screen, wherein, for each of a plurality of processes executed in a system including a plurality of industrial devices, at least a name of the process is associated with variables, the variables including a start variable indicating a start of execution of the process, and an end variable indicating an end of execution of the process, the variables being at least referenced or changed in a process program representing an operation of one or more of the plurality of industrial devices and being executed in the process, a plurality of names of the plurality of processes stored as process information obtained from a process database are included, and an execution order of the plurality of processes can be specified; receiving a designation of the execution order on the displayed scheduling screen; and generating a system program that operates each of the plurality of industrial devices in the specified execution order based on the execution order received by the receiving unit and the variable of each process included in the execution order; When the start variable of each of the plurality of processes changes to a first predetermined value, the process is started, and when the process ends, the end variable of the process changes to a second predetermined value, and the start variable of the subsequent process changes to the first predetermined value. The system program controls the respective start variables and the end variables of the plurality of processes so that each of the plurality of processes is sequentially executed in the execution order.

16. An information storage medium storing a program which, when executed by a computer, causes the computer to function as: A display control unit is configured to display a scheduling screen, wherein: For each of a plurality of processes executed in a system including a plurality of industrial devices, at least a name of the process is associated with variables, the variables including a start variable indicating a start of execution of the process, and an end variable indicating an end of execution of the process, the variables being at least referenced or changed in a process program representing an operation of one or more of the plurality of industrial devices and being executed in the process, a plurality of names of the plurality of processes obtained from a process database and stored as process information are included, and an execution order of the plurality of processes can be specified; a receiving unit configured to receive a designation of the execution order on the scheduling screen displayed by the display control unit; as well as a system program generating unit configured to generate a system program for operating each of the plurality of industrial devices in the specified execution order based on the execution order received by the receiving unit and the variable of each process included in the execution order; When the start variable of each of the plurality of processes changes to a first predetermined value, the process is started, and when the process ends, the end variable of the process changes to a second predetermined value, and the start variable of the subsequent process changes to the first predetermined value. The system program generation unit generates the system program that controls the respective start variables and the end variables of the plurality of processes so that each of the plurality of processes is sequentially executed in the execution order.

Citation Information

Patent Citations

  • Control program development support device, program for supporting control program development, and recording medium

    JP2012194678A

  • Engineering tool

    US20140306642A1

  • Program creation device, program creation method, and program

    US20160231733A1