WO2020261487A1 - 解析装置、解析方法及び解析プログラム - Google Patents

解析装置、解析方法及び解析プログラム Download PDF

Info

Publication number
WO2020261487A1
WO2020261487A1 PCT/JP2019/025596 JP2019025596W WO2020261487A1 WO 2020261487 A1 WO2020261487 A1 WO 2020261487A1 JP 2019025596 W JP2019025596 W JP 2019025596W WO 2020261487 A1 WO2020261487 A1 WO 2020261487A1
Authority
WO
WIPO (PCT)
Prior art keywords
variable
dependency
files
analysis
variables
Prior art date
Application number
PCT/JP2019/025596
Other languages
English (en)
French (fr)
Inventor
雄也 太田
玲子 服部
浩輔 鶴田
Original Assignee
オムロン株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by オムロン株式会社 filed Critical オムロン株式会社
Priority to PCT/JP2019/025596 priority Critical patent/WO2020261487A1/ja
Publication of WO2020261487A1 publication Critical patent/WO2020261487A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts

Definitions

  • the present invention relates to an analysis device, an analysis method, and an analysis program.
  • the production line installed in factories, etc. includes multiple devices (mechanisms) such as conveyors and robot arms. If any of the devices fails, the production of the product may stop and cause great damage. Therefore, in factories and the like, maintenance personnel regularly patrol the production line to check for the occurrence of abnormalities or signs of such abnormalities.
  • the true cause of the abnormality may exist in the device before the device in which the abnormality was detected. Therefore, in order to identify the true cause of the abnormality, it is important to understand the dependency of each device in the production line. However, since the number of devices included in the production line increases and the operating conditions of each device may change daily, it is difficult for the maintenance personnel to accurately grasp the dependencies of all the devices.
  • Patent Document 1 proposes an information processing device for visualizing the relationship between a control algorithm defined in a control program and an input / output device. Specifically, in the information processing apparatus proposed in Patent Document 1, each signal input / output variable described in the control program is a variable for inputting / outputting a signal to any input / output device. Is identified, and based on the identified results, a directed graph showing the dependencies between each variable is generated. According to the invention disclosed in Patent Document 1, the maintenance worker can grasp the dependency of each input / output device included in the production line by referring to the generated directed graph.
  • Control programs for multiple devices installed in factories, etc. may be described by structured programming.
  • a control program written by structured programming is composed of multiple files.
  • This control program contains multiple variables.
  • the plurality of variables include, for example, a first device variable corresponding to the first device and a second device variable corresponding to the second device.
  • the variables may include other variables (eg, global variables) that are accessible in the two or more files.
  • the dependency between the device variables in the file is analyzed. Therefore, for example, the dependency between the first device variable and the second device variable in each file is specified. Can be done.
  • the other variables other accessible in two or more files. The dependency between the first device variable and the second device variable that occurs across a plurality of files via the variable) is not specified.
  • the present invention has been made to solve such a problem, and an object of the present invention is to provide an analysis device, an analysis method, and an analysis program capable of identifying dependencies between device variables that occur across a plurality of files. Is to provide.
  • An analyzer is configured to analyze a group of control programs that control the operation of a plurality of devices included in a production line.
  • the plurality of devices include a first device and a second device.
  • the control program group is composed of a plurality of files.
  • the control program group includes a plurality of variables.
  • the plurality of variables include a first device variable corresponding to the first device, a second device variable corresponding to the second device, and other variables accessible in at least two or more of the files. ..
  • the analysis device includes an acquisition unit, an analysis unit, and a specific unit. The acquisition unit is configured to acquire the control program group.
  • the analysis unit extracts information that can identify the first dependency from the first device variable to the other variable by analyzing one of the files included in the plurality of files, and is included in the plurality of files1. Alternatively, it is configured to extract information that can identify the second dependency from the other variables to the second device variable by analyzing a plurality of other files.
  • the identification unit is configured to specify the dependency from the first device variable to the second device variable based on the first dependency and the second dependency.
  • information that can identify the first dependency from the first device variable to the other variables is extracted by analyzing any file contained in the plurality of files, and is included in the plurality of files.
  • Information that can identify the second dependency from the other variable to the second device variable is extracted by analyzing one or more other files. Then, the dependency from the first device variable to the second device variable is specified based on the extracted first dependency and the second dependency. Therefore, according to this analysis device, information that can identify the first dependency and information that can identify the second dependency are extracted in each file, and based on these, the information from the first device variable to the second device variable is transferred. Since the dependency is specified, the dependency between the device variables that occurs across a plurality of files can be specified.
  • the analysis unit is configured to specify the execution order of each file based on the execution order information indicating the execution order of a plurality of files, and analyze each file according to the specified execution order. May be good.
  • each file is analyzed according to the execution order of each file, so that the dependency between each device variable can be clearly specified by analyzing each file once.
  • the other variables may be global variables that can be accessed in each of the plurality of files.
  • this analysis device it is possible to identify the dependency from the first device variable to the second device variable that occurs across a plurality of files via global variables.
  • control program group includes a plurality of control programs, and a part or all of the plurality of control programs includes a plurality of sections, each of the plurality of control programs, and each of the plurality of sections.
  • the other variables, which are composed of files, may be local variables accessible in at least two or more sections of the plurality of sections.
  • the dependency from the first device variable to the second device variable that occurs across the plurality of sections via the local variables that can be accessed in at least two or more sections of the plurality of sections is identified. be able to.
  • the analysis method is a method of analyzing a group of control programs that control the operation of a plurality of devices included in a production line.
  • the plurality of devices include a first device and a second device.
  • the control program group is composed of a plurality of files.
  • the control program group includes a plurality of variables.
  • the plurality of variables include a first device variable corresponding to the first device, a second device variable corresponding to the second device, and other variables accessible in at least two or more of the files. ..
  • the computer acquires the control program group, and the computer analyzes one of the files included in the plurality of files, so that the first dependency relationship from the first device variable to the other variable is obtained.
  • Is extracted, and information that can identify the second dependency from the other variables to the second device variable is extracted by analyzing one or more other files contained in the plurality of files. It includes a step and a step in which the computer identifies the dependency from the first device variable to the second device variable based on the first dependency and the second dependency.
  • information that can identify the first dependency from the first device variable to the other variables is extracted by analyzing one of the files included in the plurality of files, and is included in the plurality of files.
  • information that can identify the second dependency from the other variables to the second device variable is extracted.
  • the dependency from the first device variable to the second device variable is specified based on the extracted first dependency and the second dependency. Therefore, according to this analysis method, information that can identify the first dependency and information that can identify the second dependency are extracted in each file, and based on these, the information from the first device variable to the second device variable is transferred. Since the dependency is specified, it is possible to identify the dependency between device variables that occurs across a plurality of files.
  • the analysis program is a program for causing a computer to execute a process of analyzing a group of control programs that control the operation of a plurality of devices included in a production line.
  • the plurality of devices include a first device and a second device.
  • the control program group is composed of a plurality of files.
  • the control program group includes a plurality of variables.
  • the plurality of variables include a first device variable corresponding to the first device, a second device variable corresponding to the second device, and other variables accessible in at least two or more of the files. ..
  • the analysis program provides information that can identify the first dependency from the first device variable to the other variable by analyzing one of the files included in the plurality of files and the step of acquiring the control program group.
  • information that can identify the first dependency from the first device variable to the other variables is extracted by analyzing one of the files included in the plurality of files, and is included in the plurality of files.
  • information that can identify the second dependency from the other variables to the second device variable is extracted.
  • the dependency from the first device variable to the second device variable is specified based on the extracted first dependency and the second dependency. Therefore, according to this analysis program, information that can identify the first dependency and information that can identify the second dependency are extracted in each file, and based on these, the information from the first device variable to the second device variable is changed. Since the dependency is specified, it is possible to identify the dependency between device variables that occur across a plurality of files.
  • an analysis device capable of specifying the dependency between device variables that occur across a plurality of files.
  • the present embodiment an embodiment according to one aspect of the present invention (hereinafter, also referred to as “the present embodiment”) will be described in detail with reference to the drawings.
  • the same or corresponding parts in the drawings are designated by the same reference numerals, and the description thereof will not be repeated.
  • the present embodiment described below is merely an example of the present invention in all respects.
  • Various improvements and changes can be made to the present embodiment within the scope of the present invention. That is, in carrying out the present invention, a specific configuration can be appropriately adopted according to the embodiment.
  • FIG. 1 is a diagram showing an example of a system including an analysis device 1 according to the present embodiment. As shown in FIG. 1, the system S1 includes a production line 27, a PLC2, and an analyzer 1.
  • the production line 27 is composed of a plurality of devices 28, and the PLC (Programmable logic controller) 2 is configured to control each of the plurality of devices 28 according to the control program group 221.
  • PLC Programmable logic controller
  • the production line 27 may be capable of producing something, and the type is not particularly limited.
  • the type of the device 28 is not particularly limited, and can be appropriately selected depending on the embodiment.
  • the device 28 may be, for example, a conveyor, a robot arm, a servomotor, a cylinder, a suction pad, a cutter device, a sealing device, or the like.
  • the device 28 may be, for example, a composite device such as a molding machine, a printing machine, a mounting machine, a reflow furnace, and a substrate inspection device.
  • the analysis device 1 is configured to derive the dependency relationship between the plurality of devices 28 included in the production line 27 through the analysis of the control program group 221 executed by the PLC 2.
  • the control program group 221 is composed of a plurality of files.
  • a plurality of variables are used.
  • the plurality of variables include a plurality of device variables 31, each corresponding to each device 28.
  • the device variable 31 corresponds to the device 28 included in the production line 27 and is used in the control program group 221 to determine some instruction for the corresponding device 28.
  • the plurality of variables include other variables (for example, global variable 33) that are used across two or more files.
  • the device variable 31 (for example, "D1") is changed to another variable (for example, "G1") by analyzing any file (for example, Program00) contained in the plurality of files. Information that can identify the first dependency is extracted. Then, by analyzing one or a plurality of other files (for example, Program01) contained in the plurality of files, the number from the other variable (for example, "G1") to the device variable 31 (for example, "D2") is changed. 2 Information that can identify the dependency is extracted. Further, the dependency from the device variable 31 (eg, "D1") to the device variable 31 (eg, "D2") is specified based on the first and second dependencies.
  • the analysis device 1 the information that can specify the first dependency and the information that can specify the second dependency are extracted from each file, and based on these, the device variable 31 (for example, "D1") is used. Since the dependency on the device variable 31 (for example, "D2") is specified, the dependency between the device variables 31 that occurs across a plurality of files can be specified.
  • FIG. 2 is a diagram showing an example of the hardware configuration of the analysis device 1 according to the present embodiment.
  • the analysis device 1 is a computer in which a control unit 11, a storage unit 12, a communication interface 13, an input device 14, a display device 15, and a drive 16 are electrically connected. is there.
  • the communication interface is described as "communication I / F”.
  • the control unit 11 includes a CPU (Central Processing Unit), a RAM (Random Access Memory), a ROM (Read Only Memory), and the like, which are hardware processors, and is configured to execute information processing based on a program and various data.
  • the storage unit 12 is an example of a memory, and is composed of, for example, an auxiliary storage device such as a hard disk drive or a solid state drive. In the present embodiment, the storage unit 12 stores various information such as the analysis program 81, the task setting information 121, and the program structure information 122.
  • the analysis program 81 is a program for causing the analysis device 1 to execute information processing related to the derivation of the dependency relationship between the plurality of devices 28 (FIGS. 5, 6, 8, 12, and 14 described later).
  • the analysis program 81 includes a series of instructions for this information processing.
  • the task setting information 121 and the program structure information 122 are used to specify the execution order of a plurality of files included in the control program group 221.
  • the task setting information 121 and the program structure information 122 will be described in detail later.
  • the communication interface 13 is, for example, a wired LAN (Local Area Network) module, a wireless LAN module, or the like, and is an interface for performing wired or wireless communication via a network.
  • the analysis device 1 performs data communication with the PLC 2 via the communication interface 13, for example, and acquires the control program group 221 from the PLC 2.
  • the type of network can be appropriately selected from, for example, the Internet, a wireless communication network, a mobile communication network, a telephone network, a dedicated network, and the like.
  • the input device 14 is, for example, a device for inputting a mouse, a keyboard, or the like.
  • the display device 15 is an example of an output device, for example, a display. The operator can operate the analysis device 1 via the input device 14 and the display device 15.
  • the display device 15 may be a touch panel display. In this case, the input device 14 may be omitted.
  • the drive 16 is, for example, a CD drive, a DVD drive, or the like, and is a drive device for reading a program stored in the storage medium 91.
  • the type of the drive 16 can be appropriately selected according to the type of the storage medium 91.
  • At least one of the analysis program 81, the task setting information 121, the program structure information 122, and the control program group 221 may be stored in the storage medium 91.
  • the storage medium 91 transfers the information of the program or the like by electrical, magnetic, optical, mechanical or chemical action so that the computer or other device, the machine or the like can read the information of the recorded program or the like. It is a medium to accumulate.
  • the analysis device 1 may acquire at least one of the analysis program 81, the task setting information 121, the program structure information 122, and the control program group 221 from the storage medium 91.
  • a disc-type storage medium such as a CD or DVD is illustrated.
  • the type of the storage medium 91 is not limited to the disc type, and may be other than the disc type.
  • Examples of storage media other than the disk type include semiconductor memories such as flash memories.
  • the control unit 11 may include a plurality of hardware processors.
  • the hardware processor may be composed of a microprocessor, an FPGA (field-programmable gate array), a DSP (digital signal processor), or the like.
  • the storage unit 12 may be composed of a RAM and a ROM included in the control unit 11. At least one of the communication interface 13, the input device 14, the display device 15, and the drive 16 may be omitted.
  • the analysis device 1 may further include an output device other than the display device 15 such as a speaker.
  • the analysis device 1 may be composed of a plurality of computers. In this case, the hardware configurations of the computers may or may not match.
  • the analysis device 1 may be a general-purpose information processing device such as a desktop PC (Personal Computer) or a tablet PC, a general-purpose server device, or the like, in addition to an information processing device designed exclusively for the provided service.
  • FIG. 3 is a diagram showing an example of a hardware configuration of PLC2 according to the present embodiment.
  • the PLC 2 is a computer in which the control unit 21, the storage unit 22, the input / output interface 23, and the communication interface 24 are electrically connected.
  • the PLC 2 is configured to control the operation of each device 28 on the production line 27.
  • the input / output interface and the communication interface are described as "input / output I / F" and "communication I / F", respectively.
  • the control unit 21 includes a CPU, RAM, ROM, etc., and is configured to execute information processing based on a program and various data.
  • the storage unit 22 is composed of, for example, RAM, ROM, etc., and stores various information such as the control program group 221.
  • the control program group 221 is a program for controlling the operation of the production line 27.
  • the control program group 221 includes a plurality of instructions for controlling the operation of the plurality of devices 28 included in the production line 27.
  • the input / output interface 23 is an interface for connecting to an external device, and is appropriately configured according to the external device to be connected.
  • the PLC 2 is connected to the production line 27 via the input / output interface 23.
  • the number of input / output interfaces 23 is not particularly limited and can be appropriately set according to the embodiment.
  • the communication interface 24 is, for example, a wired LAN module, a wireless LAN module, or the like, and is an interface for performing wired or wireless communication.
  • the PLC 2 can perform data communication with the analysis device 1 via the communication interface 24.
  • the control unit 21 may include a plurality of processors.
  • the storage unit 22 may be composed of a RAM and a ROM included in the control unit 21.
  • the storage unit 22 may be configured by an auxiliary storage device such as a hard disk drive or a solid state drive.
  • the PLC 2 may be a general-purpose information processing device such as a desktop PC or a tablet PC, depending on the object to be controlled, in addition to the information processing device designed exclusively for the provided service.
  • FIG. 4 is a diagram showing an example of the software configuration of the analysis device 1 according to the present embodiment.
  • the control unit 11 of the analysis device 1 expands the analysis program 81 stored in the storage unit 12 into the RAM.
  • the control unit 11 controls each component by interpreting and executing the analysis program 81 expanded in the RAM by the CPU.
  • the analysis device 1 operates as a computer including a control program acquisition unit 111, a control program analysis unit 112, a relationship identification unit 113, and an output unit 114 as software modules. To do. That is, in the present embodiment, each software module of the analysis device 1 is realized by the control unit 11 (CPU).
  • control unit 11 CPU
  • the control program acquisition unit 111 acquires the control program group 221 from the PLC 2.
  • the control program group 221 is composed of a plurality of files.
  • the control program group 221 includes a plurality of variables.
  • the plurality of variables are the plurality of device variables 31 corresponding to each device 28 included in the production line 27, and the local variables accessible in at least two or more files among the plurality of files constituting the control program group 221. 32 and / or includes the global variable 33.
  • the control program analysis unit 112 is included in the control program group 221 based on the task setting information 121 stored in the task setting information storage unit 115 and the program structure information 122 stored in the program structure storage unit 116. Specify the execution order of each file.
  • the task setting information storage unit 115 and the program structure storage unit 116 are realized by the storage unit 12. Further, the task setting information 121 and the program structure information 122 will be described in detail later. Further, the control program analysis unit 112 extracts the dependency relationships between the variables in each file included in the control program group 221 according to the specified execution order.
  • the relationship specifying unit 113 is based on the dependency between the variables in each file extracted by the control program analysis unit 112, the dependency between the device variables 31 in the file, and the device variable 31 generated across the plurality of files. Identify the dependencies between them.
  • the output unit 114 generates a directed graph showing the dependency between each device variable 31 based on the specified dependency.
  • the directed graph includes a node representing each device variable 31 and one or more edges representing having a dependency. Further, the output unit 114 outputs the generated directed graph to the display device 15 (FIG. 2).
  • each software module of the analysis device 1 will be described in detail in an operation example described later.
  • an example in which each software module of the analysis device 1 is realized by a general-purpose CPU is described.
  • some or all of the software modules may be implemented by one or more dedicated hardware processors.
  • software modules may be omitted, replaced, or added as appropriate according to the embodiment.
  • FIG. 5 is a flowchart showing an example of a processing procedure executed in the analysis device 1 according to the present embodiment.
  • the processing procedure described below is only an example, and each processing may be changed as much as possible. Further, in the processing procedure described below, steps can be omitted, replaced, and added as appropriate according to the embodiment.
  • control unit 11 functions as the control program acquisition unit 111 and acquires the control program group 221 from the PLC 2 (step S100).
  • the control program group 221 is described, for example, in a structured text language.
  • the control program group 221 may be described in any programming language as long as it is composed of a plurality of files.
  • control unit 11 functions as the control program analysis unit 112, and executes the process of specifying the execution order of each file in the control program group 221 (step S110).
  • the criteria for determining the execution order of each file will be described.
  • FIG. 6 is a diagram showing the types of tasks to which each program included in the control program group 221 is assigned. As shown in FIG. 6, each program included in the control program group 221 is assigned to one of the tasks of "primary fixed cycle", “fixed cycle”, and "event". Each task is assigned one or more programs, and each program contains one or more sections. In the control program group 221, each section is one file. The above-mentioned global variable 33 can be accessed from each section included in the control program group 221. On the other hand, the local variable 32 is accessible from other sections included in the same program, but is inaccessible from sections included in other programs.
  • Each program included in the control program group 221 is preferentially executed in the order of "primary fixed cycle", "fixed cycle", and "event".
  • each program is executed preferentially in descending order of priority (for example, executed in ascending order of priority value).
  • the program registered in the task setting information 121 in the order of earliest is preferentially executed.
  • the section registered in the program structure information 122 in the order of earliest is preferentially executed.
  • FIG. 7 is a flowchart showing an example of a processing procedure for specifying the execution order of each file in the control program group 221.
  • FIG. 8 is a diagram for explaining a processing procedure for specifying the execution order of each file in the control program group 221.
  • the execution order of each file is specified by generating the execution order information 123.
  • the processing procedure described below is only an example, and each processing may be changed as much as possible. Further, in the processing procedure described below, steps can be omitted, replaced, and added as appropriate according to the embodiment.
  • control unit 11 selects the program to be executed next according to the above-mentioned criteria by referring to the task setting information 121 (step S200). For example, when the process of step S200 is executed for the first time, the control unit 11 selects the program to be executed first according to the above-mentioned criteria. For example, in the example shown in FIG. 8, "Program 0" assigned to "Primary Task" ("primary fixed cycle") is selected.
  • control unit 11 extracts the section corresponding to the program selected in step S200 by referring to the program structure information 122 (step S210). For example, in the example shown in FIG. 8, when “Progarm 0” is selected in step S200, “Section 0 # 0” associated with “Program 0” in the program structure information 122 is extracted.
  • the control unit 11 generates a new record of the execution order information 123 by associating the record of the task setting information 121 including the program selected in step S200 with the section extracted in step S210. (Step S220). For example, in the example shown in FIG. 8, when "Program 0" is selected in step S200, the execution order information is obtained by associating "Section 0 # 0" with the record of the task setting information 121 including "Progaram 0". Create 123 new records.
  • control unit 11 adds the generated new record to the execution order information 123 (step S230). Then, the control unit 11 determines whether or not the processing for all the programs included in the task setting information 121 is completed (step S240). If it is determined that the process has not been completed (NO in step S240), the control unit 11 repeats the process of step S200-step S230. On the other hand, when it is determined that the processing is completed (YES in step S240), the control unit 11 ends the processing for specifying the execution order of each file. As a result, the execution order information 123 is generated, and the execution order of each file in the control program group 221 is specified.
  • control unit 11 functions as the control program analysis unit 112 and executes the analysis process of each file according to the specified execution order (step S120). ). That is, in the analysis device 1, the file analysis process is executed in order from the section registered earlier in the execution order information 123. For example, in the example shown in FIG. 8, the file analysis process is executed in the order of “Section 0 # 0”, “Section 1 # 0”, and “Section 1 # 1”. Through the file analysis process, the dependencies between the variables (device variable 31, local variable 32, and global variable 33) included in each file are extracted.
  • FIG. 9 is a flowchart showing an example of the analysis processing procedure of each file in the analysis device 1.
  • the processing procedure described below is only an example, and each processing may be changed as much as possible. Further, in the processing procedure described below, steps can be omitted, replaced, and added as appropriate according to the embodiment.
  • control unit 11 generates an abstract syntax tree from the file to be analyzed by executing a syntactic analysis on the file to be analyzed (step S300).
  • a known parsing method by top-down parsing or bottom-up parsing can be used.
  • FIG. 10 is a diagram showing an example of the control program group 221. As shown in FIG. 10, in this example, the control program group 221 includes sections 301, 302, 303.
  • FIG. 11 is a diagram showing an abstract syntax tree for each section in the example shown in FIG.
  • the abstract syntax trees 401, 402, and 403 are the abstract syntax trees of sections 301, 302, and 303, respectively.
  • the abstract syntax tree 401 is generated.
  • “B” and “1” are leaf nodes connected to the internal node “+”.
  • the control unit 11 executes the flow analysis using the generated abstract syntax tree.
  • the method of flow analysis does not have to be particularly limited, and may be appropriately selected depending on the embodiment. A known method may be adopted for the flow analysis.
  • the control unit 11 generates a control flow graph showing the dependency path of each instruction included in each file of the control program group 221 from the abstract syntax tree.
  • FIG. 12 is a diagram showing a control flow graph of each section in the example shown in FIG.
  • control flow graphs 501, 502, and 503 are control flow graphs corresponding to abstract syntax trees 401, 402, and 403, respectively.
  • the control flow graphs 501, 502, and 503 show the processing flow (solid line arrow) and data dependency (dotted line arrow) of sections 301, 302, and 303, respectively.
  • Data dependency indicates the relationship of processing that affects.
  • control unit 11 sets the device variable 31, the local variable 32, and the global variable 33 used in the file to be analyzed into an abstract syntax tree or control flow. Extract from the graph (step S320).
  • the method of extracting each variable used in the file to be analyzed can be appropriately selected according to the embodiment.
  • control unit 11 executes the extraction process of the dependency between each variable used in the file to be analyzed (step S330).
  • FIG. 13 is a flowchart showing an example of the procedure for extracting the dependency between the variables used in the file to be analyzed.
  • the processing procedure described below is only an example, and each processing may be changed as much as possible. Further, in the processing procedure described below, steps can be omitted, replaced, and added as appropriate according to the embodiment.
  • control unit 11 lists each variable extracted in step S320 of FIG. 9 (step S400). For example, during the analysis of section 301 of FIG. 10, the device variable "D1", the local variable “L1” and the global variable “G1" are listed.
  • the control unit 11 picks up the variable of interest (hereinafter, also referred to as “variable of interest”) from the list of extracted variables (step S410). Note that the control unit 11 picks up only the device variable 31 as the variable of interest only when the file to be analyzed is the first file.
  • the control unit 11 is a device variable 31 and a variable in which a variable of interest and a dependency have been detected in the previously analyzed file.
  • Variables local variable 32 and global variable 33
  • the control unit 11 picks up all the device variables 31, local variables 32, and global variables 33 included in the files to be analyzed as attention variables. You may.
  • control unit 11 traces the path depending on each instruction (for example, the path depending on the data) in one direction from the picked up variable of interest. (Step S420).
  • the path can be traced in two directions, a forward direction following the arrow direction and a reverse direction opposite the arrow direction. Therefore, in step S420, the control unit 11 selects one of these two directions as the one direction, and follows the route in the selected direction.
  • the control unit 11 lists variables that have a dependency relationship with the variable of interest as a result of following the route.
  • a variable having a dependency is a variable existing on the path.
  • step S430 the local variable "L1" and the global variable "G1" are listed.
  • control unit 11 saves information (extraction result data 600) indicating the dependency relationship between the variable of interest and the listed variable (step S440).
  • FIG. 14 is a diagram showing an example of the extraction result data 600 saved in step S440.
  • the extraction result data 600 has a table structure, and each record (row data) has "NO”, “PROGRAM”, “SECTION”, “DEVICE”, “FOCUS”, It has fields of "VARIABLE”, “TYPE”, “INSTANCE”, “FUNCTION”, “PARAMETER” and “IO”.
  • the data structure of the extraction result does not have to be limited to such an example, and may be appropriately determined according to the embodiment.
  • the number of each record is stored in the "NO" field. The number of each record is used to identify the analysis result.
  • the name of the program containing the section to be analyzed is stored in the "PROGRAM” field.
  • the name of the section to be analyzed is stored in the "SECTION” field.
  • the name of the device variable (device variable of interest) of interest for extracting the dependency pattern is stored.
  • the "FOCUS” field stores the names of variables (variables of interest) that are the starting points when following the path of dependence.
  • the "VARIABLE” field stores the names of variables that have a dependency relationship with the variables indicated by the "FOCUS” field. Information on other variables included in the dependency path extracted in step S430 of FIG. 13 is stored in this "VARIABLE” field.
  • the "TYPE” field stores information indicating the type of variable described in the "VARIABLE” field. For example, when the variable is the global variable 33, " ⁇ GLOBAL>” is stored, and when the variable is the local variable 32, " ⁇ LOCAL>" is stored.
  • the "INSTANCE” field stores the name of the function instance that has a dependency on the variable indicated by the "FOCUS” field.
  • the "FUNCTION” field stores the name of the instance function indicated by the “INSTANCE” field.
  • the "PARAMETER” field stores the names of the parameters of the functions that have dependencies on the variables indicated by the "FOCUS” field.
  • the "IO” field stores information indicating the type of parameter (whether it is an input parameter or an output parameter) indicated by the "PARAMETER” field. If there is no dependency on the parameters of the function instance, the "INSTANCE", “FUNCTION”, “PARAMETER”, and “IO” fields are set to "NONE".
  • NO “0” and “1” are the results obtained through the analysis of section 301 in FIG. NO “2” is the result obtained through the analysis of section 302 in FIG. NO “3” is the result obtained through the analysis of section 303 in FIG.
  • step S450 determines whether or not the tracking of the dependency path in the control flow graph is completed in both directions. If it is determined that the process has not ended in both directions (NO in step S450), the control unit 11 returns to step S420 and follows the control flow graph in the opposite direction.
  • step S450 determines whether or not all the variables to be the starting points have been processed.
  • step S460 determines whether or not all the variables to be the starting points have been processed.
  • the control unit 11 repeats the processing of step S410-step S450.
  • the control unit 11 ends the process of extracting the dependency between the variables.
  • step S130 determines whether or not the analysis process of all the files included in the control program group 221 is completed. If it is determined that the analysis processing of all the files has not been completed (NO in step S130), the control unit 11 executes the analysis processing of the next file according to the execution order information 123.
  • control unit 11 executes the processing for specifying the dependency between the device variables 31 (step S140).
  • the extraction result data 600 is completed when the analysis processing of all files is completed.
  • the extraction result data 600 shown in FIG. 14 is completed when the analysis processing of “Section 0 # 0”, “Section 1 # 0”, and “Section 1 # 1” is completed. That is, when the analysis process of "Section 0 # 0" is completed, it becomes clear that there is a dependency from the device variable "D1" to the global variable "G1”, and the analysis process of "Section 1 # 0" is completed. At that point, it becomes clear that there is a dependency from the global variable "G1" to the local variable "L2". Further, when the analysis process of "Section1 # 1" is completed, it becomes clear that the dependency relationship from the local variable "L2" to the device variable "D2" exists.
  • FIG. 15 is a flowchart showing a processing procedure for specifying the dependency between device variables.
  • the processing procedure described below is only an example, and each processing may be changed as much as possible. Further, in the processing procedure described below, steps can be omitted, replaced, and added as appropriate according to the embodiment.
  • control unit 11 lists the device variables 31 used in the control program group 221 (step S500).
  • the control unit 11 may list each device variable 31 used by referring to the list of device variables.
  • control unit 11 specifies each variable used in the control program group 221 from the abstract syntax tree or the control flow graph. Next, the control unit 11 determines whether or not each of the specified variables is a device variable by collating each specified variable with the list of device variables. As a result, the control unit 11 can extract each device variable 31 used in the control program group 221.
  • the format of the list of device variables is not particularly limited, and may be appropriately set according to the embodiment. Further, the list of device variables may be given by the user's specification or may be stored in the system in advance. This list of device variables may be stored in the storage unit 12.
  • the control unit 11 picks up the device variables to be analyzed for the dependency (hereinafter, also referred to as “device variables to be analyzed”) from the list of device variables (step S510). ).
  • the control unit 11 refers to the extraction result data 600 and lists the starting records related to the device variable to be analyzed (step S520).
  • a record in which the device variable to be analyzed is described in the "FOCUS" field can be listed as the starting record.
  • the device variable to be analyzed is "D1", NO "0" and "1" can be listed as the starting record.
  • control unit 11 picks up the record to be analyzed from the listed starting records (step S530).
  • the control unit 11 searches for each record included in the extraction result data 600 (FIG. 14) from the picked up records, and extracts the terminal record (step S540).
  • control unit 11 is a record corresponding to "PROGRAM” or "SECTION” whose execution order is slower than the record currently being focused on (the first record is the starting record), and is a record corresponding to "VARIABLE” of the record currently being focused on.
  • the record whose variable that matches the variable of "FOCUS” is included is picked up.
  • the control unit 11 pays attention to the picked-up record next.
  • the control unit 11 is a record corresponding to "PROGRAM” or “SECTION” whose execution order is slower than the attention record (currently attracting record), and is a record of "VARIABLE” of the currently attracting record. Pick up the records whose "FOCUS" contains the variable that matches the variable.
  • the control unit 11 repeats the above process until the record to be picked up becomes the terminal record (the variable included in "VARIABLE” does not match the "FOCUS" of another record).
  • the control unit 11 extracts all end records.
  • control unit 11 determines whether or not the value of the "VARIABLE" field included in the extracted terminal record indicates a device variable (step S550). When it is determined that the value of the "VARIALLE" field is not a device variable (NO in step S550), the control unit 11 executes the process of step S570.
  • step S550 when it is determined that the value in the "VARIABLE” field is a device variable (YES in step S550), the control unit 11 is shown in the device variable picked up in step S510 and in the "VARIABLE" field of the terminal record. The dependency relationship with the device variable is saved (step S560).
  • the control unit 11 determines whether or not the processing has been completed for all the starting records listed in step S520 (step S570). When it is determined that the processing has not been completed for all the starting records (NO in step S570), the control unit 11 returns to step S530 and picks up the starting records for which the processing has not been completed.
  • step S570 determines whether or not the processing has been completed for all the device variables listed in step S500. (Step S580). When it is determined that the processing has not been completed for all the device variables (NO in step S580), the control unit 11 returns to step S510 and picks up the device variables for which the processing has not been completed. On the other hand, when it is determined that the processing has been completed for all the device variables (YES in step S580), the control unit 11 ends the processing for specifying the dependency between the device variables.
  • the dependency relationships of NO “0”, “2” and “3” can be traced through the process of identifying the dependency relationships between the device variables, and as a result, the device variable “D1” can be traced.
  • the dependency on the device variable "D2" can be specified.
  • FIG. 16 is a diagram showing an example of the specific result data 700.
  • the specific result data 700 is represented by an adjacency matrix.
  • this adjacency matrix the corresponding element (component) corresponding to the set of device variables having a dependency relationship is "1", and the element (component) that does not correspond to the set of device variables is "0".
  • the columns indicate the sources and the rows indicate the dependencies.
  • the configuration of the specific result data 700 does not have to be limited to such an example, and may be appropriately determined according to the embodiment.
  • step S150 when the process of specifying the dependency between the device variables is completed, the control unit 11 functions as the output unit 114, and the specified dependency is based on the dependency specified in step S140.
  • a directed graph showing the above is generated (step S150).
  • FIG. 17 is a diagram showing an example of a directed graph 800 identified in the example of FIG. 14 and showing the dependency between device variables. As shown in FIG. 17, in the example of FIG. 14, there is a dependency relationship from the device variable “D1” to the device variable “D2”.
  • control unit 11 functions as an output unit 114 and outputs the directed graph generated in step S150 (step S160).
  • the control unit 11 causes the display device 15 to display the generated directed graph.
  • the device variable 31 (for example, “D1”) is changed to another variable (for example, “D1”). , "G1"), information that can identify the first dependency is extracted. Then, by analyzing one or a plurality of other files (for example, Section1 # 0 and Section1 # 1) contained in the plurality of files, the device variable 31 (for example, “G1”) is changed from the other variable (for example, “G1”). Information that can identify the second dependency on D2 ") is extracted. Further, the dependency from the device variable 31 (eg, "D1") to the device variable 31 (eg, "D2”) is specified based on the first and second dependencies.
  • the analysis device 1 the information that can specify the first dependency and the information that can specify the second dependency are extracted from each file, and based on these, the device variable 31 (for example, "D1") is used. Since the dependency on the device variable 31 (for example, "D2") is specified, the dependency between the device variables 31 that occurs across a plurality of files can be specified.
  • the device 28 is, for example, a device that detects some information by various sensors, a device that acquires data from various sensors, and some information from the acquired data, in addition to the device that involves some physical operation as in the above embodiment. It may include a device that performs internal processing such as a device that detects the data and a device that processes the acquired data.
  • One device 28 may be composed of one or more devices, or may be composed of a part of the devices.
  • One device may be composed of a plurality of devices 28. Further, when the same device executes a plurality of processes, each may be regarded as a different device 28. For example, when the same device executes the first process and the second process, the device that executes the first process is regarded as the first device, and the device that executes the second process is the first device. It may be regarded as the device of 2.
  • the analysis device 1 has acquired the control program group 221 from the PLC 2.
  • the analysis device 1 does not necessarily have to acquire the control program group 221 from the PLC 2.
  • the control program group 221 of the PLC 2 may be stored in the analysis device 1 in advance, and the control unit 11 may acquire the control program group 221 stored in advance and analyze the control program group 221.
  • the device variable 31 is the target of the dependency analysis, and the dependency between the device variables 31 is specified.
  • the dependency is not necessarily specified between the device variables 31.
  • the configuration may be such that the user can specify variables (other than device variables) to be analyzed.
  • the user specifies a specific variable A1 (local variable or global variable) as an analysis target, and the control unit 11 sets another variable (variable accessible from a plurality of files) from the specific variable A1 in the first file. ),
  • the information that can identify the second dependency on the other specific variable A2 is extracted in the second file, and the information that can identify the second dependency on the other specific variable A2 is extracted.
  • the dependency from the specific variable A1 to the specific variable A2 may be specified based on the second dependency. With such a configuration, the dependency between various variables can be analyzed more flexibly.
  • 1 analysis device 2 PLC, 11,21 control unit, 12,22 storage unit, 13,24 communication interface, 14 input device, 15 display device, 16 drive, 23 input / output interface, 27 production line, 28 device, 31 device Variables, 32 local variables, 33 global variables, 81 analysis program, 111 control program acquisition unit, 112 control program analysis unit, 113 relationship identification unit, 114 output unit, 115 task setting information storage unit, 116 program structure storage unit, 121 task Setting information, 122 program structure information, 123 execution order information, 221 control program group, 301, 302, 303 section, 401, 402, 403 abstract syntax tree, 501, 502, 503 control flow graph, 600 extraction result data, 700 specific Result data, 800 directed graph, S1 system.

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Stored Programmes (AREA)

Abstract

解析装置は、生産ラインに含まれる複数のデバイスの動作を制御する制御プログラム群を解析する。制御プログラム群は、複数の変数を含む。複数の変数は、第1及び第2デバイスにそれぞれ対応する第1及び第2デバイス変数と、2つ以上のファイルにおいてアクセス可能な他の変数とを含む。解析装置は、取得部と、解析部と、特定部とを備える。取得部は、制御プログラム群を取得する。解析部は、いずれかのファイルを解析することによって第1デバイス変数から上記他の変数への第1依存関係を特定可能な情報を抽出し、1又は複数の他のファイルを解析することによって上記他の変数から第2デバイス変数への第2依存関係を特定可能な情報を抽出する。特定部は、第1及び第2依存関係に基づいて、第1デバイス変数から第2デバイス変数への依存関係を特定する。

Description

解析装置、解析方法及び解析プログラム
 本発明は、解析装置、解析方法及び解析プログラムに関する。
 工場等に設置された生産ラインは、コンベア、ロボットアーム等の複数のデバイス(機構)を含む。いずれかのデバイスで異常が発生すると、製品の製造が停止し、大きな損害が生じ得る。そのため、工場等においては、保全員が、生産ラインを定期的に巡回し、異常の発生又はその予兆の有無を確認している。
 生産ライン内で異常の発生又はその予兆が検知された場合に、異常が検知されたデバイスよりも前のデバイスに真の異常の原因が存在するときがある。したがって、真の異常の原因を特定するためには、生産ライン内の各デバイスの依存関係を把握することが重要である。しかしながら、生産ラインに含まれるデバイスの数が多くなり、かつ、各デバイスの動作条件が日々変化し得ることから、保全員が全てのデバイスの依存関係を正確に把握するのは困難である。
 特開2013-225251号公報(特許文献1)においては、制御プログラムで定義されている制御アルゴリズムと入出力機器との関係を可視化するための情報処理装置が提案されている。具体的には、特許文献1で提案されている情報処理装置においては、制御プログラムに記述されている各信号入出力用変数が、いずれの入出力機器と信号を入出力するための変数であるかが特定され、特定された結果に基づいて、各変数間の依存関係を示す有向グラフが生成される。特許文献1で開示される発明によれば、保全員は、生成された有向グラフを参照することによって、生産ラインに含まれる各入出力機器の依存関係を把握することができる。
特開2013-225251号公報
 工場等に設置された複数のデバイスの制御プログラムが構造化プログラミングによって記述される場合がある。構造化プログラミングによって記述された制御プログラムは、複数のファイルによって構成される。この制御プログラムは複数の変数を含む。複数の変数は、たとえば、第1デバイスに対応する第1デバイス変数と、第2デバイスに対応する第2デバイス変数とを含む。さらに、複数の変数は、2つ以上のファイルにおいてアクセス可能な他の変数(たとえば、グローバル変数)を含む場合がある。上記特許文献1に開示されている発明によれば、ファイル内におけるデバイス変数間の依存関係が解析されるため、たとえば、各ファイル内における第1デバイス変数と第2デバイス変数との依存関係を特定することはできる。しかしながら、上記特許文献1に開示されている発明においては、ファイルを跨って生じるデバイス変数間の依存関係については考慮されていないため、上記他の変数(2つ以上のファイルにおいてアクセス可能な他の変数)を介して複数のファイルに跨って生じる第1デバイス変数と第2デバイス変数との依存関係は特定されない。
 本発明は、このような問題を解決するためになされたものであって、その目的は、複数のファイルに跨って生じるデバイス変数間の依存関係を特定可能な解析装置、解析方法及び解析プログラムを提供することである。
 本発明のある局面に従う解析装置は、生産ラインに含まれる複数のデバイスの動作を制御する制御プログラム群を解析するように構成されている。複数のデバイスは、第1デバイスと、第2デバイスとを含む。制御プログラム群は、複数のファイルから構成されている。制御プログラム群は、複数の変数を含む。複数の変数は、第1デバイスに対応する第1デバイス変数と、第2デバイスに対応する第2デバイス変数と、複数のファイルのうち少なくとも2つ以上のファイルにおいてアクセス可能な他の変数とを含む。解析装置は、取得部と、解析部と、特定部とを備える。取得部は、制御プログラム群を取得するように構成されている。解析部は、複数のファイルに含まれるいずれかのファイルを解析することによって第1デバイス変数から上記他の変数への第1依存関係を特定可能な情報を抽出し、複数のファイルに含まれる1又は複数の他のファイルを解析することによって上記他の変数から第2デバイス変数への第2依存関係を特定可能な情報を抽出するように構成されている。特定部は、第1依存関係と第2依存関係とに基づいて、第1デバイス変数から第2デバイス変数への依存関係を特定するように構成されている。
 この解析装置においては、複数のファイルに含まれるいずれかのファイルを解析することによって第1デバイス変数から上記他の変数への第1依存関係を特定可能な情報が抽出され、複数のファイルに含まれる1又は複数の他のファイルを解析することによって上記他の変数から第2デバイス変数への第2依存関係を特定可能な情報が抽出される。そして、抽出された第1依存関係と第2依存関係とに基づいて、第1デバイス変数から第2デバイス変数への依存関係が特定される。したがって、この解析装置によれば、各ファイルにおいて第1依存関係を特定可能な情報及び第2依存関係を特定可能な情報が抽出され、それらに基づいて第1デバイス変数から第2デバイス変数への依存関係が特定されるため、複数のファイルに跨って生じるデバイス変数間の依存関係を特定することができる。
 上記解析装置において、解析部は、複数のファイルの実行順序を示す実行順序情報に基づいて各ファイルの実行順序を特定し、特定された該実行順序に従って各ファイルを解析するように構成されていてもよい。
 この解析装置によれば、各ファイルの実行順序に従って各ファイルが解析されるため、各ファイルを一度解析するだけで、各デバイス変数間の依存関係を明確に特定することができる。
 上記解析装置において、他の変数は、複数のファイルの各々においてアクセス可能なグローバル変数であってもよい。
 この解析装置によれば、グローバル変数を介して複数のファイルに跨って生じる第1デバイス変数から第2デバイス変数への依存関係を特定することができる。
 上記解析装置において、制御プログラム群は、複数の制御プログラムを含み、複数の制御プログラムの一部又は全部は、複数のセクションを含み、複数の制御プログラムの各々、及び、複数のセクションの各々は、ファイルで構成されており、上記他の変数は、複数のセクションのうち少なくとも2つ以上のセクションにおいてアクセス可能なローカル変数であってもよい。
 この解析装置によれば、複数のセクションのうち少なくとも2つ以上のセクションにおいてアクセス可能なローカル変数を介して複数のセクションに跨って生じる第1デバイス変数から第2デバイス変数への依存関係を特定することができる。
 本発明の他の局面に従う解析方法は、生産ラインに含まれる複数のデバイスの動作を制御する制御プログラム群を解析する方法である。複数のデバイスは、第1デバイスと、第2デバイスとを含む。制御プログラム群は、複数のファイルから構成されている。制御プログラム群は、複数の変数を含む。複数の変数は、第1デバイスに対応する第1デバイス変数と、第2デバイスに対応する第2デバイス変数と、複数のファイルのうち少なくとも2つ以上のファイルにおいてアクセス可能な他の変数とを含む。上記解析方法は、コンピュータが、制御プログラム群を取得するステップと、コンピュータが、複数のファイルに含まれるいずれかのファイルを解析することによって第1デバイス変数から上記他の変数への第1依存関係を特定可能な情報を抽出し、複数のファイルに含まれる1又は複数の他のファイルを解析することによって上記他の変数から第2デバイス変数への第2依存関係を特定可能な情報を抽出するステップと、コンピュータが、第1依存関係と第2依存関係とに基づいて、第1デバイス変数から第2デバイス変数への依存関係を特定するステップとを含む。
 この解析方法においては、複数のファイルに含まれるいずれかのファイルを解析することによって第1デバイス変数から上記他の変数への第1依存関係を特定可能な情報が抽出され、複数のファイルに含まれる1又は複数の他のファイルを解析することによって上記他の変数から第2デバイス変数への第2依存関係を特定可能な情報が抽出される。そして、抽出された第1依存関係と第2依存関係とに基づいて、第1デバイス変数から第2デバイス変数への依存関係が特定される。したがって、この解析方法によれば、各ファイルにおいて第1依存関係を特定可能な情報及び第2依存関係を特定可能な情報が抽出され、それらに基づいて第1デバイス変数から第2デバイス変数への依存関係が特定されるため、複数のファイルに跨って生じるデバイス変数間の依存関係を特定することができる。
 本発明の他の局面に従う解析プログラムは、生産ラインに含まれる複数のデバイスの動作を制御する制御プログラム群を解析する処理をコンピュータに実行させるためのプログラムである。複数のデバイスは、第1デバイスと、第2デバイスとを含む。制御プログラム群は、複数のファイルから構成されている。制御プログラム群は、複数の変数を含む。複数の変数は、第1デバイスに対応する第1デバイス変数と、第2デバイスに対応する第2デバイス変数と、複数のファイルのうち少なくとも2つ以上のファイルにおいてアクセス可能な他の変数とを含む。上記解析プログラムは、制御プログラム群を取得するステップと、複数のファイルに含まれるいずれかのファイルを解析することによって第1デバイス変数から上記他の変数への第1依存関係を特定可能な情報を抽出し、複数のファイルに含まれる1又は複数の他のファイルを解析することによって上記他の変数から第2デバイス変数への第2依存関係を特定可能な情報を抽出するステップと、第1依存関係と第2依存関係とに基づいて、第1デバイス変数から第2デバイス変数への依存関係を特定するステップとをコンピュータに実行させるように構成されている。
 この解析プログラムにおいては、複数のファイルに含まれるいずれかのファイルを解析することによって第1デバイス変数から上記他の変数への第1依存関係を特定可能な情報が抽出され、複数のファイルに含まれる1又は複数の他のファイルを解析することによって上記他の変数から第2デバイス変数への第2依存関係を特定可能な情報が抽出される。そして、抽出された第1依存関係と第2依存関係とに基づいて、第1デバイス変数から第2デバイス変数への依存関係が特定される。したがって、この解析プログラムによれば、各ファイルにおいて第1依存関係を特定可能な情報及び第2依存関係を特定可能な情報が抽出され、それらに基づいて第1デバイス変数から第2デバイス変数への依存関係が特定されるため、複数のファイルに跨って生じるデバイス変数間の依存関係を特定することができる。
 本発明によれば、複数のファイルに跨って生じるデバイス変数間の依存関係を特定可能な解析装置、解析方法及び解析プログラムを提供することができる。
解析装置が含まれるシステムの一例を示す図である。 解析装置のハードウェア構成の一例を示す図である。 PLCのハードウェア構成の一例を示す図である。 解析装置のソフトウェア構成の一例を示す図である。 解析装置において実行される処理手順の一例を示すフローチャートである。 制御プログラム群に含まれている各プログラムが割り当てられているタスクの種類を示す図である。 制御プログラム群における各ファイルの実行順序の特定処理手順の一例を示すフローチャートである。 制御プログラム群における各ファイルの実行順序の特定処理手順を説明するための図である。 解析装置における各ファイルの解析処理手順の一例を示すフローチャートである。 制御プログラム群の一例を示す図である。 図10に示される例における各セクションの抽象構文木を示す図である。 図11に示される例における各セクションの制御フローグラフを示す図である。 解析対象のファイル内で利用されている各変数間の依存関係の抽出処理手順の一例を示すフローチャートである。 抽出結果データの一例を示す図である。 デバイス変数間の依存関係を特定する処理手順を示すフローチャートである。 特定結果データの一例を示す図である。 図14の例において特定されデバイス変数間の依存関係を示す有向グラフの一例を示す図である。
 以下、本発明の一側面に係る実施の形態(以下、「本実施の形態」とも称する。)について、図面を用いて詳細に説明する。なお、図中同一又は相当部分には同一符号を付してその説明は繰り返さない。また、以下で説明する本実施の形態は、あらゆる点において本発明の例示にすぎない。本実施の形態は、本発明の範囲内において、種々の改良や変更が可能である。すなわち、本発明の実施にあたっては、実施の形態に応じて具体的構成を適宜採用することができる。
 [1.概要]
 図1は、本実施の形態に従う解析装置1が含まれるシステムの一例を示す図である。図1に示されるように、システムS1は、生産ライン27と、PLC2と、解析装置1とを含んでいる。
 生産ライン27は複数のデバイス28によって構成されており、PLC(Programable logic controller)2は制御プログラム群221に従って複数のデバイス28の各々を制御するように構成されている。
 生産ライン27は何らかの物を生産可能であればよく、その種類は特に限定されない。デバイス28の種類は、特に限定されず、実施の形態に応じて適宜選択可能である。デバイス28は、たとえば、コンベア、ロボットアーム、サーボモータ、シリンダ、吸着パッド、カッター装置、シール装置等であってもよい。また、デバイス28は、たとえば、成形機、印刷機、実装機、リフロー炉、基板検査装置等の複合装置であってもよい。
 解析装置1は、PLC2によって実行される制御プログラム群221の解析を通じて、生産ライン27に含まれる複数のデバイス28間の依存関係を導出するように構成されている。
 制御プログラム群221は、複数のファイルから構成されている。制御プログラム群221では、複数の変数が利用されている。複数の変数は、各々が各デバイス28に対応する複数のデバイス変数31を含む。デバイス変数31は、生産ライン27に含まれるデバイス28に対応し、対応するデバイス28に対する何らかの命令を定めるために制御プログラム群221内で利用される。また、複数の変数は、2つ以上のファイルに跨って利用される他の変数(たとえば、グローバル変数33)を含む。
 仮に、各ファイルにおけるデバイス変数31間の依存関係のみが解析装置1によって導出されるとする。この場合には、各ファイル内におけるデバイス変数31間の依存関係は導出可能であるが、複数のファイルを跨って生じるデバイス変数31間の依存関係は導出不可能である。
 解析装置1においては、複数のファイルに含まれるいずれかのファイル(たとえば、Program00)を解析することによって、デバイス変数31(たとえば、「D1」)から他の変数(たとえば、「G1」)への第1依存関係を特定可能な情報が抽出される。そして、複数のファイルに含まれる1又は複数の他のファイル(たとえば、Program01)を解析することによって、他の変数(たとえば、「G1」)からデバイス変数31(たとえば、「D2」)への第2依存関係を特定可能な情報が抽出される。さらに、第1及び第2依存関係に基づいて、デバイス変数31(たとえば、「D1」)からデバイス変数31(たとえば、「D2」)への依存関係が特定される。
 したがって、解析装置1によれば、各ファイルにおいて第1依存関係を特定可能な情報及び第2依存関係を特定可能な情報が抽出され、それらに基づいてデバイス変数31(たとえば、「D1」)からデバイス変数31(たとえば、「D2」)への依存関係が特定されるため、複数のファイルに跨って生じるデバイス変数31間の依存関係を特定することができる。
 [2.ハードウェア構成]
 (2-1.解析装置)
 図2は、本実施の形態に従う解析装置1のハードウェア構成の一例を示す図である。図2に示されるように、解析装置1は、制御部11と、記憶部12と、通信インターフェース13と、入力装置14と、表示装置15と、ドライブ16とが電気的に接続されたコンピュータである。なお、図2では、通信インターフェースを「通信I/F」と記載している。
 制御部11は、ハードウェアプロセッサであるCPU(Central Processing Unit)、RAM(Random Access Memory)及びROM(Read Only Memory)等を含み、プログラム及び各種データに基づいて情報処理を実行するように構成されている。記憶部12は、メモリの一例であり、たとえば、ハードディスクドライブ、ソリッドステートドライブ等の補助記憶装置により構成されている。本実施の形態において、記憶部12は、解析プログラム81、タスク設定情報121及びプログラム構造情報122等の各種情報を記憶する。
 解析プログラム81は、複数のデバイス28間の依存関係の導出に関する情報処理(後述する図5、図6、図8、図12及び図14)を解析装置1に実行させるためのプログラムである。解析プログラム81は、この情報処理の一連の命令群を含む。タスク設定情報121及びプログラム構造情報122は、制御プログラム群221に含まれる複数のファイルの実行順序を特定するために用いられる。タスク設定情報121及びプログラム構造情報122については、後程詳しく説明する。
 通信インターフェース13は、たとえば、有線LAN(Local Area Network)モジュール、無線LANモジュール等であり、ネットワークを介した有線又は無線通信を行うためのインターフェースである。解析装置1は、たとえば、通信インターフェース13を介してPLC2との間でデータ通信を行い、PLC2から制御プログラム群221を取得する。なお、ネットワークの種類は、たとえば、インターネット、無線通信網、移動通信網、電話網、専用網等から適宜選択可能である。
 入力装置14は、たとえば、マウス、キーボード等の入力を行うための装置である。また、表示装置15は、出力装置の一例であり、たとえば、ディスプレイである。オペレータは、入力装置14及び表示装置15を介して、解析装置1を操作することができる。なお、表示装置15は、タッチパネルディスプレイであってもよい。この場合、入力装置14は省略されてもよい。
 ドライブ16は、たとえば、CDドライブ、DVDドライブ等であり、記憶媒体91に記憶されたプログラムを読み込むためのドライブ装置である。ドライブ16の種類は、記憶媒体91の種類に応じて適宜選択可能である。上記解析プログラム81、タスク設定情報121、プログラム構造情報122及び制御プログラム群221の少なくともいずれかは、記憶媒体91に記憶されていてもよい。
 記憶媒体91は、コンピュータその他装置、機械等が、記録されたプログラム等の情報を読み取り可能なように、当該プログラム等の情報を、電気的、磁気的、光学的、機械的又は化学的作用によって蓄積する媒体である。解析装置1は、記憶媒体91から、上記解析プログラム81、タスク設定情報121、プログラム構造情報122及び制御プログラム群221の少なくともいずれかを取得してもよい。
 図2においては、記憶媒体91の一例として、CD、DVD等のディスク型の記憶媒体を例示している。しかしながら、記憶媒体91の種類は、ディスク型に限定される訳ではなく、ディスク型以外であってもよい。ディスク型以外の記憶媒体として、たとえば、フラッシュメモリ等の半導体メモリを挙げることができる。
 なお、解析装置1の具体的なハードウェア構成に関して、実施の形態に応じて、適宜、構成要素の省略、置換及び追加が可能である。たとえば、制御部11は、複数のハードウェアプロセッサを含んでもよい。ハードウェアプロセッサは、マイクロプロセッサ、FPGA(field-programmable gate array)、DSP(digital signal processor)等で構成されてよい。記憶部12は、制御部11に含まれるRAM及びROMにより構成されてもよい。通信インターフェース13、入力装置14、表示装置15及びドライブ16の少なくともいずれかは省略されてもよい。解析装置1は、たとえば、スピーカ等の表示装置15以外の出力装置をさらに備えてもよい。解析装置1は、複数台のコンピュータで構成されてもよい。この場合、各コンピュータのハードウェア構成は、一致していてもよいし、一致していなくてもよい。また、解析装置1は、提供されるサービス専用に設計された情報処理装置の他、デスクトップPC(Personal Computer)、タブレットPC等の汎用の情報処理装置、汎用のサーバ装置等であってもよい。
 (2-2.PLC)
 図3は、本実施の形態に従うPLC2のハードウェア構成の一例を示す図である。図3に示されるように、PLC2は、制御部21と、記憶部22と、入出力インターフェース23と、通信インターフェース24とが電気的に接続されたコンピュータである。PLC2は、生産ライン27の各デバイス28の動作を制御するように構成される。なお、図3では、入出力インターフェース及び通信インターフェースをそれぞれ「入出力I/F」及び「通信I/F」と記載している。
 制御部21は、CPU、RAM及びROM等を含み、プログラム及び各種データに基づいて情報処理を実行するように構成される。記憶部22は、たとえば、RAM、ROM等で構成され、制御プログラム群221等の各種情報を記憶する。制御プログラム群221は、生産ライン27の動作を制御するためのプログラムである。制御プログラム群221は、生産ライン27に含まれる複数のデバイス28の動作を制御するための複数の命令を含む。
 入出力インターフェース23は、外部装置と接続するためのインターフェースであり、接続する外部装置に応じて適宜構成される。本実施の形態において、PLC2は、入出力インターフェース23を介して、生産ライン27に接続される。入出力インターフェース23の数は、特に限定されなくてもよく、実施の形態に応じて適宜設定可能である。
 通信インターフェース24は、たとえば、有線LANモジュール、無線LANモジュール等であり、有線又は無線通信を行うためのインターフェースである。PLC2は、通信インターフェース24を介して、解析装置1との間でデータ通信を行うことができる。
 なお、PLC2の具体的なハードウェア構成に関して、実施の形態に応じて、適宜、構成要素の省略、置換、及び追加が可能である。たとえば、制御部21は、複数のプロセッサを含んでもよい。記憶部22は、制御部21に含まれるRAM及びROMにより構成されてもよい。記憶部22は、ハードディスクドライブ、ソリッドステートドライブ等の補助記憶装置により構成されてもよい。また、PLC2は、提供されるサービス専用に設計された情報処理装置の他、制御する対象に応じて、デスクトップPC、タブレットPC等の汎用の情報処理装置であってもよい。
 [3.ソフトウェア構成]
 図4は、本実施の形態に従う解析装置1のソフトウェア構成の一例を示す図である。解析装置1の制御部11は、記憶部12に記憶された解析プログラム81をRAMに展開する。制御部11は、RAMに展開された解析プログラム81をCPUにより解釈及び実行して、各構成要素を制御する。
 図4に示されるように、本実施の形態に従う解析装置1は、制御プログラム取得部111と、制御プログラム解析部112と、関係特定部113と、出力部114とをソフトウェアモジュールとして備えるコンピュータとして動作する。すなわち、本実施の形態において、解析装置1の各ソフトウェアモジュールは、制御部11(CPU)により実現される。
 制御プログラム取得部111は、制御プログラム群221をPLC2から取得する。制御プログラム群221は、複数のファイルから構成されている。制御プログラム群221は、複数の変数を含む。複数の変数は、各々が生産ライン27に含まれる各デバイス28に対応する複数のデバイス変数31と、制御プログラム群221を構成する複数のファイルのうち少なくとも2つ以上のファイルにおいてアクセス可能なローカル変数32及び/又はグローバル変数33とを含む。
 制御プログラム解析部112は、タスク設定情報記憶部115に記憶されているタスク設定情報121と、プログラム構造記憶部116に記憶されているプログラム構造情報122とに基づいて、制御プログラム群221に含まれる各ファイルの実行順序を特定する。なお、タスク設定情報記憶部115及びプログラム構造記憶部116は、記憶部12によって実現されている。また、タスク設定情報121及びプログラム構造情報122に関しては、後程詳しく説明する。また、制御プログラム解析部112は、特定された実行順序に従って、制御プログラム群221に含まれる各ファイルにおける変数間の依存関係を抽出する。
 関係特定部113は、制御プログラム解析部112によって抽出された各ファイルにおける変数間の依存関係に基づいて、ファイル内におけるデバイス変数31間の依存関係、及び、複数のファイルに跨って生じるデバイス変数31間の依存関係を特定する。
 出力部114は、特定された依存関係に基づいて、各デバイス変数31間の依存関係を示す有向グラフを生成する。有向グラフは、各デバイス変数31をそれぞれ表現するノード、及び、依存関係を有することを表現する1つ以上のエッジを含む。また、出力部114は、生成された有向グラフを表示装置15(図2)に出力する。
 解析装置1の各ソフトウェアモジュールに関しては後述する動作例で詳細に説明する。なお、本実施の形態では、解析装置1の各ソフトウェアモジュールがいずれも汎用のCPUにより実現される例について説明している。しかしながら、ソフトウェアモジュールの一部又は全部が、1又は複数の専用のハードウェアプロセッサにより実現されてもよい。また、解析装置1のソフトウェア構成に関して、実施の形態に応じて、適宜、ソフトウェアモジュールの省略、置換及び追加が行われてもよい。
 [4.解析装置の動作]
 図5は、本実施の形態に従う解析装置1において実行される処理手順の一例を示すフローチャートである。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてもよい。また、以下で説明する処理手順において、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
 図5を参照して、制御部11は、制御プログラム取得部111として機能し、制御プログラム群221をPLC2から取得する(ステップS100)。制御プログラム群221は、たとえば、ストラクチャード・テキスト言語によって記述されている。なお、制御プログラム群221は、複数のファイルによって構成されていればどのようなプログラミング言語で記述されていてもよい。
 次に、制御部11は、制御プログラム解析部112として機能し、制御プログラム群221における各ファイルの実行順序の特定処理を実行する(ステップS110)。各ファイルの実行順序の特定処理について説明する前に、各ファイルの実行順序がどのような基準に従って定められているかについて説明する。
 図6は、制御プログラム群221に含まれている各プログラムが割り当てられているタスクの種類を示す図である。図6に示されるように、制御プログラム群221に含まれている各プログラムは、「プライマリ定周期」、「定周期」及び「イベント」のいずれかのタスクに割り当てられている。各タスクには1又は複数のプログラムが割り当てられており、各プログラムには1又は複数のセクションが含まれている。制御プログラム群221においては、各セクションが1つのファイルとなっている。上述のグローバル変数33は、制御プログラム群221に含まれる各セクションからアクセス可能である。一方、ローカル変数32は、同一プログラムに含まれる他のセクションからはアクセス可能であるが、他のプログラムに含まれるセクションからはアクセス不可能である。
 制御プログラム群221に含まれている各プログラムは、「プライマリ定周期」、「定周期」及び「イベント」の順に優先的に実行される。同一のタスクに割り当てられている複数のプログラム間においては、各プログラムの優先度が高い順に優先的に実行される(たとえば、優先度の値が小さい順に実行される)。同一の優先度の複数のプログラム間においては、タスク設定情報121において登録されている順が早いプログラムが優先的に実行される。同一のプログラムに含まれる複数のセクション間においては、プログラム構造情報122において登録されている順が早いセクションが優先的に実行される。
 図7は、制御プログラム群221における各ファイルの実行順序の特定処理手順の一例を示すフローチャートである。図8は、制御プログラム群221における各ファイルの実行順序の特定処理手順を説明するための図である。解析装置1においては、実行順序情報123を生成することによって、各ファイルの実行順序を特定する。なお、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてもよい。また、以下で説明する処理手順において、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
 図7及び図8を参照して、制御部11は、タスク設定情報121を参照することによって、上述の基準に従って次に実行されるプログラムを選択する(ステップS200)。たとえば、制御部11は、初めてステップS200の処理を実行する場合には、上述の基準に従って最初に実行されるプログラムを選択する。たとえば、図8に示される例では、「PrimaryTask」(「プライマリ定周期」)に割り当てられている「Program0」を選択する。
 次に、制御部11は、プログラム構造情報122を参照することによって、ステップS200において選択されたプログラムに対応するセクションを抽出する(ステップS210)。たとえば、図8に示される例において、ステップS200で「Progarm0」が選択された場合には、プログラム構造情報122において「Program0」に対応付けられている「Section0#0」を抽出する。
 次に、制御部11は、ステップS200において選択されたプログラムが含まれているタスク設定情報121のレコードに、ステップS210において抽出されたセクションを対応付けることによって、実行順序情報123の新たなレコードを生成する(ステップS220)。たとえば、図8に示される例において、ステップS200で「Program0」が選択された場合には、「Progaram0」が含まれるタスク設定情報121のレコードに「Section0#0」を対応付けることによって、実行順序情報123の新たなレコードを生成する。
 その後、制御部11は、生成された新たなレコードを実行順序情報123に追加する(ステップS230)。そして、制御部11は、タスク設定情報121に含まれる全プログラム関し処理が終了したか否かを判定する(ステップS240)。処理が終了していないと判定されると(ステップS240においてNO)、制御部11は、ステップS200-ステップS230の処理を繰り返す。一方、処理が終了したと判定されると(ステップS240においてYES)、制御部11は、各ファイルの実行順序の特定処理を終了する。これにより、実行順序情報123が生成され、制御プログラム群221における各ファイルの実行順序が特定される。
 再び図5を参照して、各ファイルの実行順序が特定されると、制御部11は、制御プログラム解析部112として機能し、特定された実行順序に従って各ファイルの解析処理を実行する(ステップS120)。すなわち、解析装置1においては、実行順序情報123に早く登録されたセクションから順に、ファイルの解析処理が実行される。たとえば、図8に示される例では、「Section0#0」、「Section1#0」、「Section1#1」の順にファイルの解析処理が実行される。ファイルの解析処理を通じて、各ファイルに含まれる変数(デバイス変数31、ローカル変数32及びグローバル変数33)間の依存関係が抽出される。
 図9は、解析装置1における各ファイルの解析処理手順の一例を示すフローチャートである。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてもよい。また、以下で説明する処理手順において、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
 図9を参照して、制御部11は、解析対象となるファイルに対する構文解析を実行することによって、解析対象のファイルから抽象構文木を生成する(ステップS300)。抽象構文木の生成には、たとえば、トップダウン構文解析又はボトムアップ構文解析による公知の構文解析方法を用いることができる。
 図10は、制御プログラム群221の一例を示す図である。図10に示されるように、この例において、制御プログラム群221は、セクション301,302,303を含んでいる。
 図11は、図10に示される例における各セクションの抽象構文木を示す図である。図11を参照して、抽象構文木401,402,403は、それぞれセクション301,302,303の抽象構文木である。たとえば、セクション301の解析処理においては、抽象構文木401が生成される。なお、図11においては、括弧を利用したネスト構造により抽象構文木が表現されている。たとえば、「a=b+1」に対して構文解析を実行することで、抽象構文木「(=a(+ b 1))」が得られる。このネスト構造で表現された抽象構文木においては、「=」が根ノードである。「a」が根ノード「=」に連結される葉ノードであり、「+」が根ノード「=」に連結される内部ノードである。「b」及び「1」が、内部ノード「+」に連結される葉ノードである。
 再び図9を参照して、抽象構文木が生成されると、制御部11は、生成された抽象構文木を利用して、フロー解析を実行する。フロー解析の方法は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。フロー解析には、公知の方法が採用されてよい。これにより、制御部11は、制御プログラム群221の各ファイルに含まれる各命令の依存経路を示す制御フローグラフを抽象構文木から生成する。
 図12は、図11に示される例における各セクションの制御フローグラフを示す図である。図12を参照して、制御フローグラフ501,502,503は、それぞれ抽象構文木401,402,403に対応する制御フローグラフである。制御フローグラフ501,502,503は、それぞれセクション301,302,303の処理の流れ(実線の矢印)、データの依存性(点線の矢印)を示す。処理の流れは、セクション301,302,303の各々において処理が実行される順序を示す。たとえば、セクション301においては、「L1:=D1」の処理の後に「G1:=L1」の処理が実行される。そのため、制御フローグラフ501において、「L1:=D1」及び「G1:=L1」は、処理の流れを示す矢印で連結されている。
 データの依存性は、影響を与える処理の関係を示す。たとえば、制御フローグラフ501においては、「L1:=D1」の処理の結果が、「G1:=L1」の処理に影響を与える。そのため、制御フローグラフ501において、「L1:=D1」及び「G1:=L1」は、データの依存性を示す矢印で連結されている。
 生成される制御フローグラフによれば、制御プログラム群221に含まれる各ファイルにおける変数の演算を含む処理同士の依存関係を特定することができる。
 再び図9を参照して、制御フローグラフが生成されると、制御部11は、解析対象のファイル内で利用されているデバイス変数31、ローカル変数32及びグローバル変数33を抽象構文木又は制御フローグラフから抽出する(ステップS320)。解析対象のファイル内で利用されている各変数を抽出する方法は、実施の形態に応じて適宜選択可能である。
 その後、制御部11は、解析対象のファイル内で利用されている各変数間の依存関係の抽出処理を実行する(ステップS330)。
 図13は、解析対象のファイル内で利用されている各変数間の依存関係の抽出処理手順の一例を示すフローチャートである。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてもよい。また、以下で説明する処理手順において、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
 図13を参照して、制御部11は、図9のステップS320において抽出された各変数をリストアップする(ステップS400)。たとえば、図10のセクション301の解析中においては、デバイス変数「D1」、ローカル変数「L1」及びグローバル変数「G1」がリストアップされる。
 各変数がリストアップされると、制御部11は、抽出された変数のリストから注目する変数(以下、「注目変数」とも称する。)をピックアップする(ステップS410)。なお、解析対象のファイルが最初のファイルである場合に限り、制御部11は、デバイス変数31のみを注目変数としてピックアップする。解析対象のファイルが2つ目以降のファイルである場合には、たとえば、制御部11は、デバイス変数31、及び、以前に解析されたファイルにおいて注目変数と依存関係が検出された変数であって以前に解析されたファイルと現在解析中のファイルとの両方からアクセス可能な変数(ローカル変数32及びグローバル変数33)を注目変数としてピックアップする。なお、制御部11は、解析対象のファイルが2つ目以降のファイルである場合に、解析対象のファイルに含まれる全てのデバイス変数31、ローカル変数32及びグローバル変数33の各々を注目変数としてピックアップしてもよい。
 制御部11は、制御フローグラフ(たとえば、制御フローグラフ501,502又は503)において、ピックアップされた注目変数を起点に各命令の依存する経路(たとえば、データの依存する経路)を一方向にたどる(ステップS420)。なお、該経路は、矢印方向に従う順方向及び矢印方向に逆らう逆方向の2方向にたどることができる。そのため、ステップS420において、制御部11は、これら2方向のうちのいずれかの方向を上記一方向として選択し、選択された方向に経路をたどる。
 制御部11は、経路をたどった結果、注目変数と依存関係を有する変数をリストアップする。依存関係を有する変数とは、経路上に存在する変数である。
 たとえば、図12の制御フローグラフ501において、デバイス変数「D1」を注目変数としてピックアップした場面を想定する。この場合には、ステップS420において、「L1:=D1」から「G1:=L1」へと依存性の経路をたどることができる。ステップS430においては、ローカル変数「L1」及びグローバル変数「G1」がリストアップされる。
 注目変数との依存関係を有する変数がリストアップされると、制御部11は、注目変数とリストアップされた変数との依存関係を示す情報(抽出結果データ600)を保存する(ステップS440)。
 図14は、ステップS440において保存された抽出結果データ600の一例を示す図である。図14に示されるように、抽出結果データ600は、テーブル構造を有しており、各レコード(行データ)は、「NO」、「PROGRAM」、「SECTION」、「DEVICE」、「FOCUS」、「VARIABLE」、「TYPE」、「INSTANCE」、「FUNCTION」、「PARAMETER」及び「IO」のフィールドを有している。ただし、抽出結果のデータ構成は、このような例に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。
 「NO」フィールドには、各レコードの番号が格納される。各レコードの番号は、解析結果を識別するために利用される。
 「PROGRAM」フィールドには、解析対象のセクションが含まれているプログラムの名称が格納される。「SECTION」フィールドには、解析対象のセクションの名称が格納される。
 「DEVICE」フィールドには、依存関係のパターンを抽出するために注目しているデバイス変数(注目デバイス変数)の名称が格納される。「FOCUS」フィールドには、依存性の経路をたどる際に起点にした変数(注目変数)の名称が格納される。
 「VARIABLE」フィールドには、「FOCUS」フィールドにより示される変数と依存関係を有する変数の名称が格納される。図13のステップS430で抽出される依存性の経路に含まれる他の変数の情報は、この「VARIABLE」フィールドに格納される。「TYPE」フィールドには、「VARIABLE」フィールドに記載の変数の種類を示す情報が格納される。たとえば、変数がグローバル変数33である場合には「<GLOBAL>」が格納され、変数がローカル変数32である場合には「<LOCAL>」が格納される。
 「INSTANCE」フィールドには、「FOCUS」フィールドにより示される変数と依存関係を有する関数のインスタンスの名称が格納される。「FUNCTION」フィールドには、「INSTANCE」フィールドにより示されるインスタンスの関数の名称が格納される。「PARAMETER」フィールドには、「FOCUS」フィールドにより示される変数と依存関係を有する関数のパラメータの名称が格納される。「IO」フィールドには、「PARAMETER」フィールドにより示されるパラメータの種別(入力パラメータであるか出力パラメータであるか)を示す情報が格納される。なお、関数のインスタンスのパラメータに対する依存関係がない場合には、「INSTANCE」、「FUNCTION」、「PARAMETER」及び「IO」フィールドが「NONE」となる。
 図14において、NO「0」及び「1」は、図10におけるセクション301の解析を通じて得られた結果である。NO「2」は、図10におけるセクション302の解析を通じて得られた結果である。NO「3」は、図10におけるセクション303の解析を通じて得られた結果である。
 再び図13を参照して、ステップS440において変数間の依存関係が保存されると、制御部11は、制御フローグラフにおける依存経路の追跡が両方向において終了しているか否かを判定する(ステップS450)。両方向において終了していないと判定されると(ステップS450においてNO)、制御部11は、ステップS420に戻り制御フローグラフを逆方向にたどる。
 一方、両方向において終了していると判定されると(ステップS450においてYES)、制御部11は、起点にすべき全変数に関し処理済みであるか否かを判定する(ステップS460)。起点にすべき全変数に関し処理済みではないと判定されると(ステップS460においてNO)、制御部11は、ステップS410-ステップS450の処理を繰り返す。一方、起点にすべき全変数に関し処理済みであると判定されると(ステップS460においてYES)、制御部11は、変数間の依存関係の抽出処理を終了する。
 再び図5を参照して、ステップS120においてファイルの解析処理が終了すると、制御部11は、制御プログラム群221に含まれる全ファイルの解析処理が終了したか否かを判定する(ステップS130)。全ファイルの解析処理は終了していないと判定されると(ステップS130においてNO)、制御部11は、実行順序情報123に従って次のファイルの解析処理を実行する。
 一方、全ファイルの解析処理が終了したと判定されると(ステップS130においてYES)、制御部11は、デバイス変数31間の依存関係の特定処理を実行する(ステップS140)。
 なお、抽出結果データ600は、全ファイルの解析処理が終了した時点で完成する。たとえば、図10に示される例においては、「Section0#0」、「Section1#0」、「Section1#1」の解析処理が終了した時点で図14に示される抽出結果データ600が完成する。すなわち、「Section0#0」の解析処理が終了した時点で、デバイス変数「D1」からグローバル変数「G1」への依存関係が存在することが明らかになり、「Section1#0」の解析処理が終了した時点で、グローバル変数「G1」からローカル変数「L2」への依存関係が存在することが明らかになる。また、「Section1#1」の解析処理が終了した時点で、ローカル変数「L2」からデバイス変数「D2」への依存関係が存在することが明らかになる。
 図15は、デバイス変数間の依存関係を特定する処理手順を示すフローチャートである。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてもよい。また、以下で説明する処理手順において、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
 図15を参照して、制御部11は、制御プログラム群221で利用されているデバイス変数31をリストアップする(ステップS500)。一例として、制御部11は、デバイス変数のリストを参照することで、利用されている各デバイス変数31をリストアップしてもよい。
 具体的には、制御部11は、抽象構文木又は制御フローグラフから制御プログラム群221内で利用されている各変数を特定する。次に、制御部11は、特定された各変数をデバイス変数のリストと照合することで、特定された各変数がデバイス変数であるか否かを判定する。これにより、制御部11は、制御プログラム群221内で利用されている各デバイス変数31を抽出することができる。なお、デバイス変数のリストの形式は、特に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。また、デバイス変数のリストは、ユーザの指定により与えられてもよいし、システムに予め保持されていてもよい。このデバイス変数のリストは、記憶部12に格納されていてもよい。
 デバイス変数31がリストアップされると、制御部11は、依存関係を解析する対象となるデバイス変数(以下、「解析対象のデバイス変数」とも称する。)をデバイス変数のリストからピックアップする(ステップS510)。解析対象のデバイス変数がピックアップされると、制御部11は、抽出結果データ600を参照し、解析対象のデバイス変数に関する始端のレコードをリストアップする(ステップS520)。
 たとえば、「FOCUS」フィールドに解析対象のデバイス変数が記されているレコードを始端のレコードとしてリストアップすることができる。たとえば、図14の例において、解析対象のデバイス変数を「D1」とすると、NO「0」及び「1」を始端のレコードとしてリストアップすることができる。
 その後、制御部11は、リストアップされた始端のレコードから解析の対象とするレコードをピックアップする(ステップS530)。制御部11は、ピックアップされたレコードから、抽出結果データ600(図14)に含まれる各レコードを探索し、終端のレコードを抽出する(ステップS540)。
 たとえば、制御部11は、現在注目しているレコード(最初は始端のレコード)よりも実行順序が遅い「PROGRAM」又は「SECTION」に対応するレコードであって、現在注目しているレコードの「VARIABLE」の変数とマッチする変数が「FOCUS」に含まれているレコードをピックアップする。制御部11は、ピックアップされたレコードを次に注目する。制御部11は、該注目されたレコード(現在注目されているレコード)よりも実行順序が遅い「PROGRAM」又は「SECTION」に対応するレコードであって、現在注目されているレコードの「VARIABLE」の変数とマッチする変数が「FOCUS」に含まれているレコードをピックアップする。制御部11は、ピックアップされるレコードが終端のレコード(「VARIABLE」に含まれている変数が他のレコードの「FOCUS」とマッチしない)になるまで上記処理を繰り返す。1つの始端のレコードに対して複数の終端のレコードが存在する場合には、制御部11は、全ての終端のレコードを抽出する。
 その後、制御部11は、抽出された終端のレコードに含まれる「VARIABLE」フィールドの値がデバイス変数を示すか否かを判定する(ステップS550)。「VARIABLE」フィールドの値がデバイス変数でないと判定されると(ステップS550においてNO)、制御部11は、ステップS570の処理を実行する。
 一方、「VARIABLE」フィールドの値がデバイス変数であると判定されると(ステップS550においてYES)、制御部11は、ステップS510においてピックアップされたデバイス変数と、終端レコードの「VARIABLE」フィールドに示されているデバイス変数との依存関係を保存する(ステップS560)。
 制御部11は、ステップS520においてリストアップされた全ての始端のレコードに関し処理が終了したか否かを判定する(ステップS570)。全ての始端のレコードに関し処理が終了していないと判定されると(ステップS570においてNO)、制御部11は、ステップS530に戻り、処理が完了していない始端のレコードをピックアップする。
 一方、全ての始端のレコードに関し処理が終了したと判定されると(ステップS570においてYES)、制御部11は、ステップS500においてリストアップされた全てのデバイス変数に関し処理が終了したか否かを判定する(ステップS580)。全てのデバイス変数に関しては処理が終了していないと判定されると(ステップS580においてNO)、制御部11は、ステップS510に戻り、処理が完了していないデバイス変数をピックアップする。一方、全てのデバイス変数に関し処理が終了したと判定されると(ステップS580においてYES)、制御部11は、デバイス変数間の依存関係の特定処理を終了する。
 たとえば、図14に示される例においては、デバイス変数間の依存関係の特定処理を通じて、NO「0」、「2」及び「3」の依存関係をたどることができ、その結果、デバイス変数「D1」からデバイス変数「D2」への依存関係を特定することができる。デバイス変数間の依存関係の特定処理が終了すると、デバイス変数間の依存関係を示す特定結果データ700が生成される。
 図16は、特定結果データ700の一例を示す図である。図16に示されるように、特定結果データ700は隣接行列により表現されている。この隣接行列において、互いに依存関係を有するデバイス変数の組に対応する該当要素(成分)は「1」であり、そうではない要素(成分)は「0」である。列が依存元を示し、行が依存先を示している。ただし、特定結果データ700の構成は、このような例に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。
 再び図5を参照して、デバイス変数間の依存関係の特定処理が終了すると、制御部11は、出力部114として機能し、ステップS140において特定された依存関係に基づいて、特定された依存関係を示す有向グラフを生成する(ステップS150)。
 図17は、図14の例において特定されデバイス変数間の依存関係を示す有向グラフ800の一例を示す図である。図17に示されるように、図14の例においては、デバイス変数「D1」からデバイス変数「D2」への依存関係が存在する。
 その後、制御部11は、出力部114として機能し、ステップS150において生成された有向グラフを出力する(ステップS160)。たとえば、制御部11は、生成された有向グラフを表示装置15に表示させる。
 [5.特徴]
 以上のように、解析装置1においては、複数のファイルに含まれるいずれかのファイル(たとえば、Section0#0)を解析することによって、デバイス変数31(たとえば、「D1」)から他の変数(たとえば、「G1」)への第1依存関係を特定可能な情報が抽出される。そして、複数のファイルに含まれる1又は複数の他のファイル(たとえば、Section1#0及びSection1#1)を解析することによって、他の変数(たとえば、「G1」)からデバイス変数31(たとえば、「D2」)への第2依存関係を特定可能な情報が抽出される。さらに、第1及び第2依存関係に基づいて、デバイス変数31(たとえば、「D1」)からデバイス変数31(たとえば、「D2」)への依存関係が特定される。
 したがって、解析装置1によれば、各ファイルにおいて第1依存関係を特定可能な情報及び第2依存関係を特定可能な情報が抽出され、それらに基づいてデバイス変数31(たとえば、「D1」)からデバイス変数31(たとえば、「D2」)への依存関係が特定されるため、複数のファイルに跨って生じるデバイス変数31間の依存関係を特定することができる。
 [6.変形例]
 以上、実施の形態について説明したが、本発明は、上記実施の形態に限定されるものではなく、その趣旨を逸脱しない限りにおいて、種々の変更が可能である。以下、変形例について説明する。
 (6-1)
 デバイス28は、上記実施の形態のような何らかの物理的な動作を伴う装置の他に、たとえば、各種センサにより何らかの情報を検知する装置、各種センサからデータを取得する装置、取得したデータから何らかの情報を検知する装置、取得したデータに情報処理を施す装置等の内部処理を行う装置を含んでもよい。1つのデバイス28は、1又は複数の装置で構成されてもよいし、装置の一部で構成されてもよい。複数のデバイス28により1つの装置が構成されてもよい。また、同一の装置が複数の処理を実行する場合には、それぞれを別のデバイス28とみなしてもよい。例えば、同一の装置が第1の処理と第2の処理とを実行する場合に、第1の処理を実行する当該装置を第1のデバイスとみなし、第2の処理を実行する当該装置を第2のデバイスとみなしてもよい。
 (6-2)
 上記実施の形態において、解析装置1は、制御プログラム群221をPLC2から取得した。しかしながら、解析装置1は、必ずしも制御プログラム群221をPLC2から取得する必要はない。たとえば、PLC2の制御プログラム群221が解析装置1に予め保存されており、制御部11は、予め保存されている制御プログラム群221を取得し、制御プログラム群221の解析を行なってもよい。
 (6-3)
 上記実施の形態においては、依存関係の解析対象がデバイス変数31とされ、デバイス変数31間の依存関係が特定された。しかしながら、依存関係が特定されるのは、必ずしもデバイス変数31間に限られない。たとえば、ユーザが解析対象の変数(デバイス変数以外)を指定できるような構成であってもよい。たとえば、ユーザが特定の変数A1(ローカル変数又はグローバル変数)を解析対象として指定し、制御部11が、第1のファイルにおいて該特定の変数A1から他の変数(複数のファイルからアクセス可能な変数)への第1依存関係を特定可能な情報を抽出し、第2のファイルにおいて上記他の変数から他の特定の変数A2への第2依存関係を特定可能な情報を抽出し、第1及び第2依存関係に基づいて特定の変数A1から特定の変数A2への依存関係を特定してもよい。このような構成によれば、様々な変数間の依存関係をより柔軟に解析することができる。
 1 解析装置、2 PLC、11,21 制御部、12,22 記憶部、13,24 通信インターフェース、14 入力装置、15 表示装置、16 ドライブ、23 入出力インターフェース、27 生産ライン、28 デバイス、31 デバイス変数、32 ローカル変数、33 グローバル変数、81 解析プログラム、111 制御プログラム取得部、112 制御プログラム解析部、113 関係特定部、114 出力部、115 タスク設定情報記憶部、116 プログラム構造記憶部、121 タスク設定情報、122 プログラム構造情報、123 実行順序情報、221 制御プログラム群、301,302,303 セクション、401,402,403 抽象構文木、501,502,503 制御フローグラフ、600 抽出結果データ、700 特定結果データ、800 有向グラフ、S1 システム。

Claims (6)

  1.  生産ラインに含まれる複数のデバイスの動作を制御する制御プログラム群を解析するように構成された解析装置であって、
     前記複数のデバイスは、第1デバイスと、第2デバイスとを含み、
     前記制御プログラム群は、複数のファイルから構成されており、
     前記制御プログラム群は、複数の変数を含み、
     前記複数の変数は、前記第1デバイスに対応する第1デバイス変数と、前記第2デバイスに対応する第2デバイス変数と、前記複数のファイルのうち少なくとも2つ以上のファイルにおいてアクセス可能な他の変数とを含み、
     前記解析装置は、
     前記制御プログラム群を取得するように構成された取得部と、
     前記複数のファイルに含まれるいずれかのファイルを解析することによって前記第1デバイス変数から前記他の変数への第1依存関係を特定可能な情報を抽出し、前記複数のファイルに含まれる1又は複数の他のファイルを解析することによって前記他の変数から前記第2デバイス変数への第2依存関係を特定可能な情報を抽出するように構成された解析部と、
     前記第1依存関係と前記第2依存関係とに基づいて、前記第1デバイス変数から前記第2デバイス変数への依存関係を特定するように構成された特定部とを備える、解析装置。
  2.  前記解析部は、前記複数のファイルの実行順序を示す実行順序情報に基づいて各ファイルの実行順序を特定し、特定された該実行順序に従って前記各ファイルを解析するように構成されている、請求項1に記載の解析装置。
  3.  前記他の変数は、前記複数のファイルの各々においてアクセス可能なグローバル変数である、請求項1又は請求項2に記載の解析装置。
  4.  前記制御プログラム群は、複数の制御プログラムを含み、
     前記複数の制御プログラムの一部又は全部は、複数のセクションを含み、
     前記複数の制御プログラムの各々、及び、前記複数のセクションの各々は、ファイルで構成されており、
     前記他の変数は、前記複数のセクションのうち少なくとも2つ以上のセクションにおいてアクセス可能なローカル変数である、請求項1から請求項3のいずれか1項に記載の解析装置。
  5.  生産ラインに含まれる複数のデバイスの動作を制御する制御プログラム群を解析する解析方法であって、
     前記複数のデバイスは、第1デバイスと、第2デバイスとを含み、
     前記制御プログラム群は、複数のファイルから構成されており、
     前記制御プログラム群は、複数の変数を含み、
     前記複数の変数は、前記第1デバイスに対応する第1デバイス変数と、前記第2デバイスに対応する第2デバイス変数と、前記複数のファイルのうち少なくとも2つ以上のファイルにおいてアクセス可能な他の変数とを含み、
     前記解析方法は、
     コンピュータが、前記制御プログラム群を取得するステップと、
     前記コンピュータが、前記複数のファイルに含まれるいずれかのファイルを解析することによって前記第1デバイス変数から前記他の変数への第1依存関係を特定可能な情報を抽出し、前記複数のファイルに含まれる1又は複数の他のファイルを解析することによって前記他の変数から前記第2デバイス変数への第2依存関係を特定可能な情報を抽出するステップと、
     前記コンピュータが、前記第1依存関係と前記第2依存関係とに基づいて、前記第1デバイス変数から前記第2デバイス変数への依存関係を特定するステップとを含む、解析方法。
  6.  生産ラインに含まれる複数のデバイスの動作を制御する制御プログラム群を解析する処理をコンピュータに実行させるための解析プログラムであって、
     前記複数のデバイスは、第1デバイスと、第2デバイスとを含み、
     前記制御プログラム群は、複数のファイルから構成されており、
     前記制御プログラム群は、複数の変数を含み、
     前記複数の変数は、前記第1デバイスに対応する第1デバイス変数と、前記第2デバイスに対応する第2デバイス変数と、前記複数のファイルのうち少なくとも2つ以上のファイルにおいてアクセス可能な他の変数とを含み、
     前記解析プログラムは、
     前記制御プログラム群を取得するステップと、
     前記複数のファイルに含まれるいずれかのファイルを解析することによって前記第1デバイス変数から前記他の変数への第1依存関係を特定可能な情報を抽出し、前記複数のファイルに含まれる1又は複数の他のファイルを解析することによって前記他の変数から前記第2デバイス変数への第2依存関係を特定可能な情報を抽出するステップと、
     前記第1依存関係と前記第2依存関係とに基づいて、前記第1デバイス変数から前記第2デバイス変数への依存関係を特定するステップとを前記コンピュータに実行させるように構成されている、解析プログラム。
PCT/JP2019/025596 2019-06-27 2019-06-27 解析装置、解析方法及び解析プログラム WO2020261487A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/025596 WO2020261487A1 (ja) 2019-06-27 2019-06-27 解析装置、解析方法及び解析プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/025596 WO2020261487A1 (ja) 2019-06-27 2019-06-27 解析装置、解析方法及び解析プログラム

Publications (1)

Publication Number Publication Date
WO2020261487A1 true WO2020261487A1 (ja) 2020-12-30

Family

ID=74060499

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/025596 WO2020261487A1 (ja) 2019-06-27 2019-06-27 解析装置、解析方法及び解析プログラム

Country Status (1)

Country Link
WO (1) WO2020261487A1 (ja)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010282441A (ja) * 2009-06-04 2010-12-16 Sharp Corp モジュール間依存強度算出装置、モジュール間依存強度測定方法およびモジュール間依存強度測定プログラム
WO2012011145A1 (ja) * 2010-07-20 2012-01-26 株式会社 日立製作所 ソフトウェア保守支援装置及びそれにより検証した電子制御装置
JP2013156802A (ja) * 2012-01-30 2013-08-15 Mitsubishi Electric Corp モジュール依存関係抽出装置、モジュール依存関係抽出方法、及び、プログラム
JP2013225251A (ja) * 2012-04-23 2013-10-31 Mitsubishi Electric Corp 情報処理装置及び情報処理方法及びプログラム
WO2014097379A1 (ja) * 2012-12-17 2014-06-26 三菱電機株式会社 プログラム解析支援装置及び制御装置
JP2016076080A (ja) * 2014-10-06 2016-05-12 三菱電機株式会社 ソースコード解析装置、ソースコード解析方法、及びプログラム
JP2018206362A (ja) * 2017-06-02 2018-12-27 オムロン株式会社 工程解析装置、工程解析方法、及び工程解析プログラム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010282441A (ja) * 2009-06-04 2010-12-16 Sharp Corp モジュール間依存強度算出装置、モジュール間依存強度測定方法およびモジュール間依存強度測定プログラム
WO2012011145A1 (ja) * 2010-07-20 2012-01-26 株式会社 日立製作所 ソフトウェア保守支援装置及びそれにより検証した電子制御装置
JP2013156802A (ja) * 2012-01-30 2013-08-15 Mitsubishi Electric Corp モジュール依存関係抽出装置、モジュール依存関係抽出方法、及び、プログラム
JP2013225251A (ja) * 2012-04-23 2013-10-31 Mitsubishi Electric Corp 情報処理装置及び情報処理方法及びプログラム
WO2014097379A1 (ja) * 2012-12-17 2014-06-26 三菱電機株式会社 プログラム解析支援装置及び制御装置
JP2016076080A (ja) * 2014-10-06 2016-05-12 三菱電機株式会社 ソースコード解析装置、ソースコード解析方法、及びプログラム
JP2018206362A (ja) * 2017-06-02 2018-12-27 オムロン株式会社 工程解析装置、工程解析方法、及び工程解析プログラム

Similar Documents

Publication Publication Date Title
JP7460237B2 (ja) 分散型工業パフォーマンス監視及び分析
JP7568347B2 (ja) 分散型工業パフォーマンス監視用のデータ分析サービス
JP6978156B2 (ja) 分散型工業パフォーマンス監視及び分析
JP6935972B2 (ja) 分散型工業システムにおけるソース非依存クエリ
JP2017076385A (ja) 分散型工業パフォーマンス監視及び分析プラットフォーム
JP7054051B2 (ja) ソフトウェアロボット定義情報生成システム、ソフトウェアロボット定義情報生成方法、及びプログラム
US11656592B2 (en) Analysis device, analysis method, and recording medium
US20150089415A1 (en) Method of processing big data, apparatus performing the same and storage media storing the same
US7974937B2 (en) Adaptive embedded historians with aggregator component
WO2020261487A1 (ja) 解析装置、解析方法及び解析プログラム
US11803170B2 (en) Graph display device, graph display method, and recording medium
EP3940483A1 (en) Graph display device, graph display method, and graph display program
JP2022158225A (ja) 分析装置、その制御方法、および分析システム
JP5444071B2 (ja) 障害情報収集システムと方法およびプログラム
EP3940481A1 (en) Graph display device, graph display method, and graph display program
EP4270121A1 (en) Method and system for seamless transition of runtime system from controller device to digitalization platform
JP5514682B2 (ja) バッチ処理プログラム分析方法および装置
EP4345677A1 (en) System and method for managing simulation artifacts
EP4345609A1 (en) System and method for decomposing monolith applications into software services
WO2022038812A1 (ja) 情報処理装置
EP3835977A1 (en) Method for generating triples from log entries
JP2020149297A (ja) 解析装置、解析方法、及び解析プログラム
CN116166254A (zh) 一种系统的开发方法、装置、电子设备及存储介质
TW202301122A (zh) 日誌解析系統及日誌解析方法

Legal Events

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

Ref document number: 19934861

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19934861

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP