WO2022190418A1 - 開発支援装置、開発支援方法および開発支援プログラム - Google Patents

開発支援装置、開発支援方法および開発支援プログラム Download PDF

Info

Publication number
WO2022190418A1
WO2022190418A1 PCT/JP2021/034469 JP2021034469W WO2022190418A1 WO 2022190418 A1 WO2022190418 A1 WO 2022190418A1 JP 2021034469 W JP2021034469 W JP 2021034469W WO 2022190418 A1 WO2022190418 A1 WO 2022190418A1
Authority
WO
WIPO (PCT)
Prior art keywords
variable
source code
variables
control program
development
Prior art date
Application number
PCT/JP2021/034469
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 オムロン株式会社
Publication of WO2022190418A1 publication Critical patent/WO2022190418A1/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 disclosure relates to technology for supporting development of a control program for a control device that controls a controlled object.
  • control devices such as PLC (Programmable Logic Controller) have been introduced.
  • PLC Programmable Logic Controller
  • Such a control device is a kind of computer, and can control the control target by executing a control program designed according to the control target such as a manufacturing apparatus or manufacturing facility.
  • Such a control program is generally created using a development support device prepared separately from the controller.
  • Patent Document 1 discloses a program development support device capable of improving control program development efficiency by improving variable searchability.
  • Patent Document 1 when an operand for a predetermined instruction is input, according to the specification of a keyword (character string), narrowing down by displaying a list of only variables with variable names that include the character string. enhances the searchability of variables.
  • a definition list for declaring variables is provided in the source program of the above control program, and the variables declared in the definition list can be used in the source code.
  • a network is constructed between the control device and the controlled object to control the controlled object.
  • the present disclosure has been made to solve the problems as described above, and an object in one aspect is to provide a development support device capable of preventing unnecessary variables not being used in a control program. It is to be. Another object of the present invention is to provide a development support method capable of not generating unnecessary variables that are not used in the control program. An object in still another aspect is to provide a development support program capable of not generating unnecessary variables that are not used within the control program.
  • a development support device for supporting development of a control program for a control device that controls a controlled object.
  • the development support device has an editor and a builder.
  • the editor generates and edits the source code of the control program according to user's operation.
  • the builder generates the execution code of the control program from the source code and variable declarations defining variables referenced by instruction elements included in the source code.
  • the builder includes a variable declaration generator that extracts variables referenced by instruction elements included in the source code and infers data types of the extracted variables to generate variable declarations.
  • variable declaration defining the variable is generated for a variable referenced by an instruction element included in the source code.
  • the generated variable declarations only declare variables that are used in the source code and do not declare variables that are not used in the source code. As a result, unnecessary variables that are not referenced by instruction elements included in the source code can be prevented from occurring in the variable declaration.
  • the development support device further includes an interface that interacts with the user.
  • the variable declaration generator notifies the user via the interface of the first variable whose data type cannot be inferred.
  • a variable declaration generator updates the variable declaration according to user input for the data type of the first variable through the interface.
  • the variable declaration can be completed by requesting user input using an interface. Therefore, the controller can allocate a memory area according to the data type for each variable in the variable declaration.
  • variable declaration generator further adds the second variable to the variable declaration in response to user input for the second variable via the interface.
  • control device can secure a memory area for storing the variable.
  • the second variables include variables used by the controlled object during execution of the control program.
  • variable definition list variables that are accessed from the controlled object via the network, so it is possible to suppress inconveniences on the controlled object side.
  • variable declaration generator infers the data type of the variable referenced by the instruction element based on the processing content of the instruction element.
  • a development support method for supporting development of a control program for a control device that controls a controlled object.
  • the development support method includes the steps of generating and editing source code of the control program according to a user operation; and generating executable code.
  • the step of generating the executable code includes extracting variables referenced by instruction elements included in the source code, and generating the variable declarations by inferring data types of the extracted variables.
  • a development support program for supporting development of a control program for a control device that controls a controlled object.
  • the development support program instructs a computer to generate and edit the source code of the control program according to a user operation; and generating an execution code of the control program.
  • the step of generating executable code includes extracting variables referenced by instruction elements included in the source code, and generating the variable declarations by inferring data types of the extracted variables.
  • variable declaration defining the variable is generated for a variable referenced by an instruction element included in the source code.
  • the generated variable declarations only declare variables that are used in the source code and do not declare variables that are not used in the source code. As a result, unnecessary variables that are not referenced by instruction elements included in the source code can be prevented from occurring in the variable declaration.
  • FIG. 1 is a schematic diagram showing an example of a configuration of an FA system to which a development support device according to an embodiment is applied;
  • FIG. 1 is a schematic diagram showing an example of a hardware configuration of a development support device;
  • FIG. 3 is a diagram illustrating an example of a functional configuration of a development support device;
  • FIG. FIG. 2 is a diagram schematically showing an example of a control program development environment in a development support device; 4 is a flowchart showing an example of schematic processing of control program development in the development support device;
  • FIG. 6 is a flowchart showing an example of build processing shown in FIG. 5;
  • FIG. 2 is a conceptual diagram illustrating a first example of source code;
  • FIG. 10 is a conceptual diagram illustrating a second example of source code;
  • FIG. 11 is a conceptual diagram illustrating a third example of source code;
  • FIG. 11 is a conceptual diagram illustrating a fourth example of source code;
  • FIG. 10 is a diagram showing a display example of
  • FIG. 1 is a schematic diagram showing an example of the configuration of an FA (Factory Automation) system 10 to which a development support device according to this embodiment is applied. First, the system configuration of the FA system 10 will be described with reference to FIG.
  • FA Vectory Automation
  • the FA system 10 includes one or more development support devices 100, one or more control devices (controllers) 200, and external devices 300 controlled by the control device 200.
  • the development support device 100 is, for example, a notebook or desktop PC (Personal Computer), tablet terminal, smartphone, or other information processing device.
  • a development support program 50 is installed in the development support device 100 .
  • the development support program 50 is an application for supporting development of the control program 210 for the control device 200 .
  • the development support program 50 is, for example, "Sysmac Studio” manufactured by Omron Corporation.
  • a user can design a control program for the control device 200 on the development support program 50 and download the designed control program 210 to the controller.
  • the development support device 100 can upload data or the like from the control device 200 .
  • the control device 200 and the external device 300 are connected to a network NW1 to which the development support device 100 can be connected.
  • Ethernet registered trademark
  • the control device 200 is configured by a PLC, for example.
  • the control device 200 and the external device 300 are connected to the network NW2.
  • NW2 it is preferable to employ a field network that performs fixed-cycle communication, in which data arrival time is guaranteed.
  • OPC UA registered trademark
  • OPC UA registered trademark
  • the like are known as a field network that performs such periodic communication.
  • the external device 300 is composed of various industrial devices for automating production processes, various sensors, HMI (Human Machine Interface) devices, and the like.
  • External device 300 includes devices 300A-300C connected to network NW1 or NMW2, and devices 301A-301C.
  • Devices 301A-301C are connected for communication with control device 200 via networks NW1 and NW2 by devices 300A-300C. Accordingly, the devices 301A to 301C can be controlled by the control program executed by the control device 200.
  • the device 300A connected to the equipment 301A is connected to the network NW2 to which OPCUA is applied.
  • a device 300B connected to the equipment 301B and a device 300C connected to the equipment 301C are assumed to be connected to the network NW1 to which EtherNET is applied.
  • FIG. 2 is a schematic diagram showing an example of the hardware configuration of the development support device 100. As shown in FIG.
  • the development support device 100 is, for example, a computer configured according to a general-purpose computer architecture.
  • the development support device 100 includes a processor 102 such as a CPU (Central Processing Unit) or MPU (Micro-Processing Unit), a main memory 104, a communication interface 111, an I/O (Input/Output) interface 114, and a display interface. 117 and non-volatile storage 120 . These components are communicatively connected to each other via an internal bus 125 .
  • the processor 102 expands the development support program 50 stored in the storage device 120 into the main memory 104 and executes it, thereby activating the development tool for the control program 210 (see FIG. 1).
  • the storage device 120 stores various data and programs 60 in addition to the development support program 50 .
  • a source program for control program 210 is stored in main memory 104 or storage device 120 .
  • the communication interface 111 exchanges data with other communication devices via a network.
  • the other communication device includes, for example, the control device 200 and the external device 300 shown in FIG. 1, and a server (not shown).
  • the development support apparatus 100 may be configured such that various programs such as the development support program 50 can be downloaded from the other communication device via the communication interface 111 .
  • the I/O interface 114 is connected to the operation unit 115 and receives signals indicating user operations from the operation unit 115 .
  • the operation unit 115 typically includes a keyboard, mouse, touch panel, touch pad, etc., and receives operations from the user. Operation unit 115 may be configured integrally with development support apparatus 100 or may be configured separately from development support apparatus 100 .
  • the display interface 117 is connected to the display unit 118, and transmits an image signal for displaying an image to the display unit 118 according to commands from the processor 102 or the like.
  • the display unit 118 is configured by an LCD (Liquid Crystal Display), an organic EL (Electro Luminescence) display, or the like, and presents various types of information to the user.
  • the display unit 118 may be configured integrally with the development support device 100 or may be configured separately from the development support device 100 .
  • FIG. 2 shows a configuration example in which necessary functions are provided by the processor 102 such as a CPU executing a program. It may be implemented using a circuit (for example, ASIC (Application Specific Integrated Circuit) or FPGA (Field-Programmable Gate Array), etc.). In this case, virtualization technology may be used to execute a plurality of OSs with different purposes in parallel, and necessary applications may be executed on each OS.
  • the development support apparatus 100 performs all the processes, but the present invention is not limited to this, and a plurality of apparatuses may work together to provide the functions described above. .
  • some or all of the functions may be implemented using computational resources called so-called cloud on a server.
  • FIG. 3 is a diagram showing an example of the functional configuration of the development support device 100. As shown in FIG.
  • An OS 240 , a programming application 250 and a network setting application 280 are installed in the development support device 100 .
  • the development support device 100 executes an OS 240 and provides an environment in which a programming application 250 and a network setting application 280 can be executed.
  • a development support program for realizing development support apparatus 100 according to the present embodiment includes at least programming application 250 .
  • the programming application 250 includes an editor 252 , a builder 254 , a debugger 256 , a GUI (Graphical User Interface) module 258 , a simulator 260 and a data storage section 270 .
  • Each module included in programming application 250 is typically distributed in a state stored in a CD-ROM and installed in development support device 100 .
  • the data storage unit 270 is configured including the storage device 120 .
  • the editor 252 provides input and editing functions for creating source code according to predetermined programming language specifications.
  • the source code is typically LD (Ladder Diagram), IL (Instruction List), ST (Structured Text), FBD (Function Block Diagram) defined in IEC61131-3. Function Block Diagram), SFC (Sequential Function Chart), etc. can be described in any language.
  • Source code is written using "variables" in any language.
  • a “variable” is an identifier given to data handled in the control program 210 .
  • the “variable” is data representing the state of the control device 200 or the controlled object of the control device 200 .
  • “variable” refers to data whose value changes in conjunction with the state of the control device 200 or the controlled object.
  • the concept of “variable” can include data representing one value, data represented as an array, data represented as a structure, and various data that can be defined in the control program 210 .
  • the editor 252 provides a function of receiving the operation content of the operation unit 115 by the user, generating source code according to the received operation content, and a function of saving the generated source code. Also, the editor 252 provides a function of editing the source code according to user's operation. When source code is generated or edited by the editor 252 , the editor 252 causes the display unit 118 to display information for supporting the editing work via the GUI module 258 .
  • the builder 254 provides a function of building source code according to a predetermined programming language specification and creating an executable code (control program 210) in a format that can be executed by the control device 200.
  • the debugger 256 provides a function for debugging the source code. Contents of this debugging include operations such as partially executing a range pointed out by the user in the source code and tracing temporal changes in variable values during execution of the source code. Debugger 256 causes display unit 118 to display information for assisting debugging via GUI module 258 .
  • the simulator 260 builds an environment in the development support device 100 for simulating program execution in the control device 200 (PLC).
  • the data storage unit 270 stores various information used (read/write) by each unit of the programming application 250 .
  • the contents stored in the data storage unit 270 will be described later.
  • the network setting application 280 includes a configurator 257 and a data storage unit 299. Modules included in the network setting application 280 are typically distributed in a state stored in a CD-ROM and installed in the development support device 100 .
  • the configurator 257 acquires network information 293 indicating the network configuration of the FA system 10 and stores the acquired network information 293 in the data storage unit 299 .
  • the network information 293 includes configuration information received (downloaded) from each control device 200 (PLC) connected to the network.
  • the configuration information included in the network information 293 includes information received from the actual control device 200 or logical (virtual) information that is not actual information.
  • Logical information can include information that the user inputs via editor 252 by operating operation unit 115 .
  • FIG. 4 is a diagram schematically showing an example of a control program development environment in the development support device 100. As shown in FIG.
  • FIG. 4 shows the editor 252 and the builder 254 of the programming application 250 and omits the illustration of other parts. Also shown in FIG. 4 are data store 270 , GUI module 258 and transfer module 211 in association with editor 252 and builder 254 .
  • FIG. 4 shows source code 271, variable definition list 272 and execution code 273 related to editor 252 and builder 254 among the data in data storage unit 270.
  • FIG. 4 shows source code 271, variable definition list 272 and execution code 273 related to editor 252 and builder 254 among the data in data storage unit 270.
  • the source code 271 includes an instruction section in which the processing executed by the control device 200 is described using variables.
  • the command part includes command elements described using variables.
  • "Instruction element” is a general term for elements describing the instruction part of the source code 271, and includes, for example, operators, function blocks, functions, and operands.
  • the source code 271 can be written in a programming language that can be displayed in a circuit form in which a plurality of instruction elements are interconnected. In the following, the source code written in LD is targeted as a typical example.
  • the variable definition list 272 is a variable declaration that defines variables referenced by instruction elements included in the source code 271 .
  • the variable definition list 272 is created by declaring at least the variable name and the data type of the variable for each variable.
  • the transfer module 211 controls the communication interface 111 to transfer (download or upload) the execution code 273 to the control device 200 (PLC).
  • the GUI module 258 controls the display interface 117 and the I/O interface 114 so as to realize interaction between the builder 254 and the user.
  • GUI module 258 corresponds to one embodiment of an "interface" for interacting with a user.
  • editor 252 converts the source program into source code 271 in a predetermined programming language by editing the source program written in accordance with the user's operation received via operation unit 115 . do.
  • Editor 252 stores generated source code 271 in data storage unit 270 .
  • Builder 254 includes a compiler and linker for a predetermined programming language.
  • the compiler divides the source code 271 into a plurality of files and compiles each file to create a plurality of object files.
  • the linker generates executable code 273 by combining the created object files.
  • the execution code 273 consists of code executable by the processor of the control device 200 and is generated using the source code 271 and the variable definition list 272 stored in the data storage unit 270 .
  • builder 254 includes analysis unit 212 , variable declaration generation unit 215 and execution code generation unit 216 . These units build source code 271 and generate executable code 273 that can be executed by controller 200 .
  • the development support device 100 transfers the execution code 273 to the control device 200 (PLC) using the transfer module 211.
  • the control device 200 reserves a memory area for storing the variables declared in the variable definition list 272 for the control program 210 . At this time, a memory area having a capacity according to the data type is secured for each variable.
  • the external equipment 300 can access variables in the memory area through data communication via the network NW1 or NW2.
  • the execution code 273 is executed by the processor inside the control device 200 to exchange data among the plurality of control devices 200 and to control the external device 300 to be controlled.
  • FIG. 5 is a flow chart showing an example of a schematic process of control program development in the development support device 100 .
  • the editor 252 when generating or editing the source code 271, the editor 252 is first activated.
  • the editor 252 executes editing processing of the source code 271 (step S1). Specifically, editor 252 generates source code 271 according to a user operation received via operation unit 115 .
  • Editor 252 displays source code 271 on display unit 118 .
  • step S2 When building the source code 271 , the development support device 100 activates the builder 254 .
  • Builder 254 builds source code 271 and generates execution code 273 (step S2). The build process will be described later with reference to FIG.
  • the transfer module 211 controls the communication interface 111 so as to transfer the execution code 273 to the control device 200 (step S3).
  • FIG. 6 is a flow chart showing an example of the build process (S2) shown in FIG.
  • builder 254 builds source code 271 edited by the editing process (S1).
  • the analysis unit 212 analyzes the source code 271 and converts it into a data structure suitable for building (step S21).
  • this data structure for example, an AST (abstract syntax tree) is used.
  • the analysis unit 212 first analyzes the source code 271 while scanning the source code 271 as a lexical analysis process, classifies tokens including identifiers such as variables based on the analysis result, and classifies tokens composed of the classified tokens. Generate columns.
  • the analysis unit 212 analyzes the generated token string as syntax analysis processing, and generates an AST based on the analysis result.
  • the analysis unit 212 determines the type of data or the type of an expression composed of instruction codes so that the source code 271 conforms to the description specifications of the programming language based on the AST.
  • the variable declaration generation unit 215 generates a variable definition list 272 which is a variable declaration defining variables referenced by instruction elements included in the source code 271 . Specifically, the variable declaration generator 215 first extracts variables referenced by instruction elements included in the source code 271 (step S22). Next, the variable declaration generator 215 infers the data type of the extracted variable (step S23). The variable declaration generator 215 generates the variable definition list 272 by defining each variable using the inferred data type (step S24).
  • variable data type inference processing S23 in FIG. 6
  • variable definition list 272 generation processing S24 in FIG. 6
  • FIG. 7 shows a conceptual diagram explaining the first example of the source code 271.
  • FIG. FIG. 7 shows a ladder circuit described by a ladder program, which is an example of a control program, and a variable definition list 272 generated based on the ladder circuit.
  • the ladder program is represented by a ladder circuit 420 in which a logic circuit using circuit elements and connecting lines between an input-side bus 421 and an output-side bus 422 is drawn like a ladder.
  • a circuit element corresponds to an example of an "instruction element.”
  • ladder circuit 420 includes contact 425 that is turned on/off according to the value of variable a, and coil 426 that outputs the on/off result as variable b.
  • Ladder circuit 420 is described by connecting circuit elements such as contacts 425 and coils 426 together with connection lines 423 .
  • the variable b is further used as a variable for opening and closing contacts of another ladder circuit (not shown).
  • variable a is the output value of a coil in another ladder circuit (not shown).
  • Such a hierarchical combination of ladder circuits can describe processing for the control device 200 to control the external device 300 .
  • the variable declaration generator 215 extracts variables referenced by circuit elements (instruction elements) included in the ladder circuit 420 .
  • circuit elements instruction elements
  • FIG. 7 the variable a referenced by the contact 425 and the variable b referenced by the coil 426 are extracted.
  • the variable declaration generator 215 infers the data type of each of the extracted variables a and b.
  • the data type of a variable can be inferred based on the content of processing executed by the circuit element that references the variable. In the example of FIG. 7, since the contact 425 with the variable a as an input is turned on/off according to the value of the variable a, it can be inferred that the data type of the variable a is "BOOL". Since the coil 426 outputting the variable b outputs an on/off result, it can be inferred that the data type of the variable b is "BOOL".
  • the variable declaration generation unit 215 generates a variable definition list 272 declaring variable names and data types for each of the variables a and b based on the inference result.
  • FIG. 8 shows a conceptual diagram explaining a second example of the source code 271. As in FIG. 7, FIG. 8 shows an example of a ladder circuit and a variable definition list 272 generated based on the ladder circuit.
  • ladder circuit 420 includes contact 425 that is turned on/off according to the value of variable a, coil 426 that outputs the on/off result as variable b, and function 427 .
  • a function is a basic component called a POU (Program Organization Unit) that constitutes the control program 210 .
  • a function is an element that always outputs the same value for the same input.
  • Function 427 performs the processing specified in function 427 based on the values of the variables associated with its inputs. The execution result is reflected in variables associated with the output of function 427 .
  • the variable declaration generator 215 extracts variables referenced by circuit elements (instruction elements) included in the ladder circuit 420 .
  • the variable a referenced by the contact 425, the variable b referenced by the coil 426, and the variables a and c referenced by the function 427 are extracted.
  • variable declaration generator 215 infers the data type of each of the extracted variables a, b, and c.
  • Variable a and variable b can each be inferred to have a data type of "BOOL" by the method shown in FIG.
  • Variable c can be inferred based on the processing content defined in function 427 .
  • the function 427 is an instruction element that defines the "MOVE" function, which is a data transfer instruction.
  • the "MOVE" function is defined to transfer the value of the variable (input argument) received by the input section (In) to the variable (output argument) associated with the output section (Out). .
  • the variable declaration generation unit 215 generates a variable definition list 272 declaring variable names and data types for each of the variables a and b based on the inference result.
  • FIG. 9 shows a conceptual diagram explaining a third example of the source code 271. As in FIG. 7, FIG. 9 shows an example of a ladder circuit and a variable definition list 272 generated based on the ladder circuit.
  • ladder circuit 420 includes function 428 .
  • the variable declaration generator 215 extracts the variables d and e referred to by the function 428 and infers the data types of the extracted variables d and e.
  • the function 428 is an instruction element that defines the "INT_TO_BCD_BYTE” function, which is a data type conversion instruction.
  • the left side of “TO” defines the data type of the variable that is the input argument
  • the right side of "TO” defines the data type of the variable that is the output argument. That is, the "INT_TO_BCD_BYTE” function defines an instruction for converting integer type (INT) data into byte type (BYTE) BCD (binary coded decimal notation) data.
  • variable declaration generator 215 can infer that the data type of the variable d, which is the input argument, is "INT", and that the data type of the variable e, which is the output argument, is "BYTE". .
  • the variable declaration generation unit 215 generates a variable definition list 272 declaring variable names and data types for each of the variables d and e based on the result of inference.
  • FIG. 10 shows a conceptual diagram explaining a fourth example of the source code 271. Similar to FIG. 7, FIG. 10 shows an example of a ladder circuit and a variable definition list 272 generated based on the ladder circuit.
  • the ladder circuit 420 includes a function 429.
  • the variable declaration generator 215 extracts the variable "DINT#30", the variable f and the variable g referenced by the function 429, and infers the data type of each of the extracted variable "DINT#30", the variable f and the variable g. .
  • the function 429 is an instruction element that defines an instruction to execute an arithmetic operation (multiplication "*" in FIG. 10).
  • Function 429 has two input parts (In1, In2) and one output part (Out), and is defined to multiply two input arguments and output an output argument that is the result of the multiplication. It is
  • variable data types In arithmetic operations, it is common not to mix variable data types for multiple input arguments. In addition, a plurality of input arguments and an output argument, which is the operation result of these arguments, have the same variable data type. Therefore, in arithmetic functions, if the data type of a variable is known (or can be inferred) for any one of multiple input and output arguments, the data types of the remaining arguments can be inferred. can do.
  • variable "DINT#30" input to the first input section (In1) is a "DINT” (double precision integer) type variable. Therefore, the variable declaration generation unit 215 can infer that the variable f input to the second input unit (In2) is also a "DINT” type variable. The variable declaration generation unit 215 can further infer that the variable g output from the output unit (Out) is also a “DINT” type variable.
  • the variable declaration generation unit 215 generates a variable definition list 272 that declares variable names and data types for each of the variables f and g based on the inference results.
  • variable declaration generation unit 215 determines whether the variable definition list 272 is completed (S25). In step S25, the variable declaration generator 215 determines whether or not data types are declared for all of the variables described in the source code 271. FIG. If data types have been declared for all variables, a YES determination is made in S25.
  • variable declaration generation unit 215 If data types have not been declared for all of the plurality of variables described in the source code 271 (NO determination in S25), the variable declaration generation unit 215 generates the variable definition list 272 generated in step S24 as It is presented to the user via the display unit 118 (S26). The variable declaration generator 215 completes the variable definition list 272 according to the user's operation by interacting with the user using the GUI module 258, as described below.
  • FIG. 11 is a diagram showing a display example of the variable definition list 272 on the display unit 118. As shown in FIG. In the example of FIG. 11, the variable definition list 272 is displayed in a table format showing at least the variable name and data type for each variable. Note that the variable definition list 272 may be displayed in other formats.
  • variable definition list 272 contains the data types inferred in the process of step S23 in FIG. 6 for each of the multiple variables described in the source code 271. However, for variables whose data type could not be inferred, the data type entry column is blank. Note that instead of blanking the corresponding entry field, the entry field may be displayed in a more conspicuous manner than the other entry fields.
  • the data type entry field for variable h is blank because the data type of variable h cannot be inferred.
  • the GUI module 258 uses the display unit 118 to notify the user that the data type of the variable h is unknown, and requests the user to input the data type of the variable f.
  • the GUI module 258 displays, for example, a message 500 saying "The data type of the variable h is unknown. Please enter the data type.” on the display unit 118 (S27 in FIG. 6).
  • variable declaration generator 215 updates the variable definition list 272 by rewriting the variable definition list 272 according to the user input. (S30). For example, when the user inputs the data type of variable h in the blanks in variable definition list 272 in FIG. 11, variable definition list 272 includes the data type of variable h. updated with content.
  • variable declaration generation unit 215 determines whether the variable definition list 272 is completed. As described above, the variable declaration generator 215 determines whether or not data types are declared for all of the variables described in the source code 271 . If data types have been declared for all variables, a YES determination is made in S25.
  • variable declaration generation unit 215 stores the variable definition list 272 in the data storage unit 270 (S31).
  • the execution code generation unit 216 generates execution code 273 based on the source code 271 and variable definition list 272 stored in the data storage unit 270 (S32). In S ⁇ b>32 , the execution code generation unit 216 converts the source code 271 into the execution code 273 based on the data type information of the expression obtained by the semantic analysis in the analysis unit 212 and the variable definition list 272 . The execution code generation unit 216 stores the generated execution code 273 in the data storage unit 270 . After that, the process returns to the process of FIG.
  • variable definition A list 272 is generated. According to this, only variables used in the source code 271 are declared in the generated variable definition list 272 . That is, variables not used in source code 271 are not declared in variable definition list 272 . As a result, variables that are not referenced by instruction elements included in the source code 271 (hereinafter also referred to as “unused variables”) can be prevented from occurring in the variable definition list 272 .
  • variable A may become an unused variable within the source code 271 .
  • variable A is declared in the definition list 272
  • building the source program composed of the source code 271 and the variable definition list 272 will store the variable A (unused variable ) is secured.
  • variable definition list 272 generated when building the source code 271 is updated with the contents of which the unused variable A has been removed. Therefore, it is possible to prevent unnecessary variables from being accumulated in the variable definition list 272 due to editing of the source code 271 .
  • variable definition list 272 can be completed by requesting user input using the GUI module 258. Therefore, in the control device 200, a memory area according to the data type can be secured for each of all the variables declared in the variable definition list 272.
  • GUI module 258 accepts user input about the data types of variables whose data types cannot be inferred among the variables referenced by the instruction elements included in the source code 271.
  • GUI module 258 may also be configured to accept user input for variables other than variables referenced by instructional elements.
  • control device 200 can secure a memory area for storing the variable.
  • Such variables can include variables accessed from the external device 300 via the networks NW1 and NW2.
  • variables that are periodically read by periodic communication of the network are defined.
  • Device 300 ⁇ /b>A accesses the variable through periodic communication and obtains the value of the variable from control device 200 .
  • the value of the variable is used for monitoring the state quantity and the like in the device 301A.
  • a data link setting is created that defines the correspondence (link) between the variables read from the control device 200 and the variables in the device 300B.
  • the device 300B accesses the variables of the control device 200 and acquires the values of the variables according to the data link settings.
  • the acquired variable values can be used in the device 301B in the same manner as described above.
  • the builder includes a variable declaration generation unit (215) that generates the variable declaration by extracting variables referenced by instruction elements included in the source code and inferring data types of the extracted variables. support equipment.
  • [Configuration 2] further comprising an interface (258) for interacting with the user;
  • the variable declaration generator (215) notifies the user via the interface of a first variable whose data type cannot be inferred, and according to user input about the data type of the first variable via the interface.
  • the development support device according to configuration 1, which updates the variable declaration.
  • the step of generating the executable code includes: extracting variables referenced by instruction elements included in the source code; generating the variable declaration by inferring the data type of the extracted variable.
  • the development support program in a computer, generating and editing the source code (271) of the control program according to user operation; generating an execution code (273) of the control program from the source code and a variable declaration (272) defining a variable referenced by an instruction element included in the source code;
  • the step of generating the executable code includes: extracting variables referenced by instruction elements included in the source code; generating the variable declaration by inferring the data type of the extracted variable.

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Programmable Controllers (AREA)

Abstract

制御対象(300)を制御する制御装置(200)用の制御プログラム(210)の開発を支援するための開発支援装置(100)は、エディタと、ビルダとを備える。エディタは、ユーザ操作に従って、制御プログラムのソースコードを生成および編集する。ビルダは、ソースコードおよび、当該ソースコードに含まれる命令要素が参照する変数を定義した変数宣言から、制御プログラムの実行コードを生成する。ビルダは、ソースコードに含まれる命令要素が参照する変数を抽出するとともに、抽出した変数のデータ型を推論することで、変数宣言を生成する変数宣言生成部を含む。

Description

開発支援装置、開発支援方法および開発支援プログラム
 本開示は、制御対象を制御する制御装置用の制御プログラムの開発を支援するための技術に関する。
 様々な製造現場において、PLC(Programmable Logic Controller)等の制御装置が導入されている。この様な制御装置は、一種のコンピュータであり、製造装置や製造設備等の制御対象に応じて設計された制御プログラムが実行されることで、当該制御対象を制御することができる。一般的に、この様な制御プログラムは、コントローラとは別に用意された開発支援装置を用いて作成される。
 この様な制御プログラムは、一般的に、予め宣言された変数を用いて記述される。例えば、特開2005-352612号公報(特許文献1)には、変数の検索性を高めることで制御プログラムの開発効率を高めることができるプログラム開発支援装置が開示される。特許文献1のプログラム開発支援装置では、所定の命令に対するオペランドを入力した場合に、キーワード(文字列)の指定に応じて、当該文字列を含む変数名の変数のみを一覧表示する絞り込みを行うことによって、変数の検索性が高められる。
特開2005-352612号公報
 上記の制御プログラムのソースプログラムでは、変数を宣言するための定義リストが設けられており、当該定義リスト中で宣言された変数がソースコード内で使用可能となる。
 一方で、当該制御プログラムの変更又は編集の際に、ソースコード内で削除された変数についても、定義リスト内に残されている場合には、制御プログラムの実行時に当該変数に対応するメモリ領域が確保される。このため、制御装置のメモリ領域を適切に確保する観点からは、不要な変数については定義リストから削除することが好ましい。
 一方で、制御プログラムの実行時には、制御装置及び制御対象の間でネットワークが構築されて制御対象が制御されるため、必要な変数を削除してしまうと制御対象側で不都合が生じることも懸念される。
 本開示は上述のような問題点を解決するためになされたものであって、ある局面における目的は、制御プログラム内で使用されていない不要な変数を生じさせないことが可能な開発支援装置を提供することである。他の局面における目的は、制御プログラム内で使用されていない不要な変数を生じさせないことが可能な開発支援方法を提供することである。さらなる他の局面における目的は、制御プログラム内で使用されていない不要な変数を生じさせないことが可能な開発支援プログラムを提供することである。
 本開示の一例によれば、制御対象を制御する制御装置用の制御プログラムの開発を支援するための開発支援装置が提供される。開発支援装置は、エディタと、ビルダとを備える。エディタは、ユーザ操作に従って、制御プログラムのソースコードを生成および編集する。ビルダは、ソースコードおよび、当該ソースコードに含まれる命令要素が参照する変数を定義した変数宣言から、制御プログラムの実行コードを生成する。ビルダは、ソースコードに含まれる命令要素が参照する変数を抽出するとともに、抽出した変数のデータ型を推論することで、変数宣言を生成する変数宣言生成部を含む。
 本開示によれば、ユーザ操作に従って記述されたソースコードのビルド時、当該ソースコードに含まれる命令要素が参照する変数について、当該変数を定義した変数宣言が生成される。これによると、生成された変数宣言では、ソースコード内で使用される変数のみが宣言され、ソースコード内で使用されない変数については宣言されない。その結果、変数宣言内に、ソースコードに含まれる命令要素から参照されない不要な変数を生じさせないことができる。
 上述の開示において、開発支援装置は、ユーザと対話するインターフェイスをさらに備える。変数宣言生成部は、データ型を推論できない第1の変数をインターフェイスを介してユーザに通知する。変数宣言生成部は、インターフェイスを介した第1の変数のデータ型についてのユーザ入力に従って変数宣言を更新する。
 この開示によれば、ソースコードに含まれる命令要素が参照する変数のうち、データ型を推論できない変数については、インターフェイスを用いてユーザ入力を求めることによって変数宣言を完成させることができる。そのため、制御装置では、変数宣言内のすべての変数の各々に対して、そのデータ型に従ったメモリ領域を確保することができる。
 上述の開示において、変数宣言生成部はさらに、インターフェイスを介した第2の変数についてのユーザ入力に応じて第2の変数を変数宣言に追加する。
 この開示によれば、ソースコードに含まれる命令要素が参照する変数以外の変数についてのユーザ入力を受け付けることができるため、例えば、命令要素からは参照されないものの、制御装置における制御プログラムの実行時に制御対象で使用される変数を宣言することができる。よって、制御装置では、当該変数を格納するためのメモリ領域を確保することができる。
 上述の開示において、第2の変数は、制御プログラムの実行中に制御対象が使用する変数を含む。
 この開示によれば、ネットワークを介して制御対象からアクセスされる変数を変数定義リストに含めることができるため、制御対象側に不都合が生じることを抑制することができる。
 上述の開示において、変数宣言生成部は、命令要素の処理内容に基づいて、当該命令要素が参照する変数のデータ型を推論する。
 この開示によれば、ソースコード内で使用される変数を宣言するための変数宣言を適切に生成することができる。
 本開示の他の例によれば、制御対象を制御する制御装置用の制御プログラムの開発を支援するための開発支援方法が提供される。開発支援方法は、ユーザ操作に従って、前記制御プログラムのソースコードを生成および編集するステップと、前記ソースコードおよび、前記ソースコードに含まれる命令要素が参照する変数を定義した変数宣言から前記制御プログラムの実行コードを生成するステップとを備える。前記実行コードを生成するステップは、前記ソースコードに含まれる命令要素が参照する変数を抽出するステップと、抽出した変数のデータ型を推論することで、前記変数宣言を生成するステップとを含む。
 本開示のさらに他の例によれば、制御対象を制御する制御装置用の制御プログラムの開発を支援するための開発支援プログラムが提供される。開発支援プログラムは、コンピュータに、ユーザ操作に従って、前記制御プログラムのソースコードを生成および編集するステップと、前記ソースコードおよび、前記ソースコードに含まれる命令要素が参照する変数を定義した変数宣言から前記制御プログラムの実行コードを生成するステップとを実行させる。実行コードを生成するステップは、前記ソースコードに含まれる命令要素が参照する変数を抽出するステップと、抽出した変数のデータ型を推論することで、前記変数宣言を生成するステップとを含む。
 本開示によれば、ユーザ操作に従って記述されたソースコードのビルド時、当該ソースコードに含まれる命令要素が参照する変数について、当該変数を定義した変数宣言が生成される。これによると、生成された変数宣言では、ソースコード内で使用される変数のみが宣言され、ソースコード内で使用されない変数については宣言されない。その結果、変数宣言内に、ソースコードに含まれる命令要素から参照されない不要な変数を生じさせないことができる。
 本開示によれば、制御対象を制御する制御装置用の制御プログラム内に使用されていない不要な変数を生じさせないことができる。
実施の形態に係る開発支援装置が適用されるFAシステムの構成の一例を示す概略図である。 開発支援装置のハードウェア構成の一例を示す模式図である。 開発支援装置の機能構成の一例を示す図である。 開発支援装置における制御プログラムの開発環境の一例を概略的に示す図である。 開発支援装置における制御プログラム開発の概略処理の一例を示すフローチャートである。 図5に示したビルド処理の一例を示すフローチャートである。 ソースコードの第1例を説明する概念図である。 ソースコードの第2例を説明する概念図である。 ソースコードの第3例を説明する概念図である。 ソースコードの第4例を説明する概念図である。 表示部における変数定義リストの表示例を示す図である。
 以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品及び構成要素には同一の符号を付してある。それらの名称及び機能も同じである。従って、これらについての詳細な説明は原則的には繰り返さない。
 <A.適用例>
 図1は、本実施の形態に係る開発支援装置が適用されるFA(Factory Automation)システム10の構成の一例を示す概略図である。まず、図1を参照して、FAシステム10のシステム構成について説明する。
 FAシステム10は、1つ以上の開発支援装置100と、1つ以上の制御装置(コントローラ)200と、制御装置200によって制御される外部機器300とを備える。
 開発支援装置100は、例えば、ノート型またはデスクトップ型のPC(Personal Computer)、タブレット端末、スマートフォン、または、その他の情報処理装置である。
 開発支援装置100には、開発支援プログラム50がインストールされている。開発支援プログラム50は、制御装置200用の制御プログラム210の開発を支援するためのアプリケーションである。開発支援プログラム50は、たとえば、オムロン社製の「Sysmac Studio」である。ユーザは、開発支援プログラム50上で制御装置200用の制御プログラムを設計し、設計した制御プログラム210をコントローラにダウンロードすることができる。あるいは、開発支援装置100は、制御装置200からデータ等をアップロードすることも可能である。
 制御装置200および外部機器300は、開発支援装置100が接続可能なネットワークNW1に接続されている。ネットワークNW1には、Ethernet(登録商標)等が採用される。制御装置200は、例えば、PLCによって構成される。
 制御装置200および外部機器300は、ネットワークNW2に接続されている。ネットワークNW2には、データの到達時間が保証される、定周期通信を行うフィールドネットワークを採用することが好ましい。このような定周期通信を行うフィールドネットワークとしては、OPC UA(登録商標)等が知られている。
 外部機器300は、生産工程を自動化するための種々の産業用機器、各種センサ類、および、HMI(Human Machine Interface)機器等によって構成される。外部機器300は、ネットワークNW1またはNMW2に接続されるデバイス300A~300Cと、機器301A~301Cとを含む。機器301A~301Cは、デバイス300A~300CによってネットワークNW1,NW2を介して制御装置200と通信接続される。これにより、制御装置200で実行される制御プログラムによって、機器301A~301Cを制御することができる。即ち、外部機器300は、制御プログラムによって制御される「制御対象」に対応する。
 図1の例では、機器301Aと接続されるデバイス300Aは、OPCUAが適用されたネットワークNW2と接続されるものとする。又、機器301Bと接続されるデバイス300B、および、機器301Cと接続されるデバイス300Cは、EtherNETが適用されたネットワークNW1と接続されるものとする。
 <B.開発支援装置のハードウェア構成>
 図2を参照して、開発支援装置100のハードウェア構成について説明する。図2は、開発支援装置100のハードウェア構成の一例を示す模式図である。
 開発支援装置100は、一例として、汎用的なコンピュータアーキテクチャに準じて構成されるコンピュータからなる。開発支援装置100は、CPU(Central Processing Unit)やMPU(Micro-Processing Unit)などのプロセッサ102と、主メモリ104と、通信インターフェイス111と、I/O(Input/Output)インターフェイス114と、表示インターフェイス117と、不揮発性の記憶装置120とを含む。これらのコンポーネントは、内部バス125を介して互いに通信可能に接続されている。
 プロセッサ102は、記憶装置120に格納されている開発支援プログラム50を主メモリ104に展開して実行することで、制御プログラム210(図1参照)の開発ツールを起動する。記憶装置120は、開発支援プログラム50の他にも、各種のデータおよびプログラム60を格納する。制御プログラム210のソースプログラムは、主メモリ104または記憶装置120に記憶される。
 通信インターフェイス111は、他の通信機器との間でネットワークを介してデータを遣り取りする。当該他の通信機器は、例えば、図1に示された制御装置200および外部機器300、および、図示しないサーバ等を含む。開発支援装置100は、通信インターフェイス111を介して、当該他の通信機器から、開発支援プログラム50などの各種プログラムをダウンロード可能なように構成されてもよい。
 I/Oインターフェイス114は、操作部115に接続され、操作部115からのユーザ操作を示す信号を取り込む。操作部115は、典型的には、キーボード、マウス、タッチパネル、タッチパッドなどからなり、ユーザからの操作を受け付ける。操作部115は、開発支援装置100と一体的に構成されてもよいし、開発支援装置100とは別に構成されてもよい。
 表示インターフェイス117は、表示部118と接続され、プロセッサ102などからの指令に従って、表示部118に対して、画像を表示するための画像信号を送出する。表示部118は、LCD(Liquid Crystal Display)や有機EL(Electro Luminescence)ディスプレイ等によって構成され、ユーザに対して各種情報を提示する。表示部118は、開発支援装置100と一体的に構成されてもよいし、開発支援装置100とは別に構成されてもよい。
 なお、図2には、CPU等のプロセッサ102がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。また、上述の説明においては、開発支援装置100がすべての処理を実行する形態について例示したが、これに限らず、複数の装置が連携して上述したような機能を提供するようにしてもよい。さらに、一部または全部の機能をサーバ上のいわゆるクラウドと称される計算リソースを利用して実現してもよい。
 <C.開発支援装置の機能構成>
 次に、図3を参照して、開発支援装置100の機能構成について説明する。図3は、開発支援装置100の機能構成の一例を示す図である。
 開発支援装置100には、OS240、プログラミングアプリケーション250およびネットワーク設定アプリケーション280が実装される。開発支援装置100では、OS240が実行され、プログラミングアプリケーション250およびネットワーク設定アプリケーション280を実行可能な環境が提供される。本実施の形態に係る開発支援装置100を実現するための開発支援プログラムは、少なくともプログラミングアプリケーション250を含む。
 プログラミングアプリケーション250は、エディタ252と、ビルダ254と、デバッガ256と、GUI(Graphical User Interface)モジュール258と、シミュレータ260と、データ格納部270とを含む。プログラミングアプリケーション250に含まれるそれぞれのモジュールは、典型的には、CD-ROMに格納された状態で流通して、開発支援装置100にインストールされる。データ格納部270は、記憶装置120を含んで構成される。
 エディタ252は、予め定められたプログラミング言語の仕様に従いソースコードを作成するための入力および編集といった機能を提供する。ソースコードは、典型的には、IEC61131-3に規定された、LD(ラダーダイアグラム:Ladder Diagram)、IL(インストラクションリスト:Instruction List)、ST(ストラクチャードテキスト:Structured Text)、FBD(ファンクションブロックダイアグラム:Function Block Diagram)、SFC(シーケンシャルファンクションチャート:Sequential Function Chart)等の任意の言語にて記述することができる。
 ソースコードは、いずれの言語でも「変数」を用いて記述される。「変数」とは、制御プログラム210において扱われるデータに与えられた識別子である。典型的には、「変数」は、制御装置200や制御装置200の制御対象の状態を表すデータである。言い換えると、「変数」とは、制御装置200や制御対象の状態に連動して値が変化するデータのことをいう。「変数」の概念は、1つの値を表すデータ、配列として表されるデータ、構造体として表されるデータ、制御プログラム210に規定されうる種々のデータを含み得る。
 エディタ252は、ユーザによる操作部115の操作内容を受け付けて、受け付けた操作内容に従ってソースコードを生成する機能と、生成したソースコードを保存する機能とを提供する。また、エディタ252は、ユーザ操作に従って、ソースコードを編集する機能を提供する。エディタ252によるソースコードの生成または編集時、エディタ252は、GUIモジュール258を介して編集作業を支援するための情報を表示部118に表示させる。
 ビルダ254は、予め定められたプログラミング言語の仕様に従い、ソースコードをビルドして、制御装置200で実行可能な形式の実行コード(制御プログラム210)を作成する機能を提供する。
 デバッガ256は、ソースコードに対してデバッグを行うための機能を提供する。このデバッグの内容としては、ソースコードのうちユーザが指摘した範囲を部分的に実行する、ソースコードの実行中における変数値の時間的な変化を追跡する、といった動作を含む。デバッガ256は、デバッグを支援するための情報をGUIモジュール258を介して表示部118に表示させる。
 シミュレータ260は、開発支援装置100内に、制御装置200(PLC)でのプログラムの実行をシミュレーションする環境を構築する。
 データ格納部270は、プログラミングアプリケーション250の各部により利用(読み書き)される各種情報を格納する。データ格納部270に格納される内容については後述する。
 ネットワーク設定アプリケーション280は、コンフィグレータ257と、データ格納部299とを含む。ネットワーク設定アプリケーション280に含まれるモジュールは、典型的には、CD-ROMに格納された状態で流通して、開発支援装置100にインストールされる。
 コンフィグレータ257は、FAシステム10のネットワーク構成を示すネットワーク情報293を取得し、取得したネットワーク情報293をデータ格納部299に格納する。ネットワーク情報293は、ネットワークに接続される各制御装置200(PLC)から受信する(ダウンロードされる)コンフィグ情報を含む。なお、ネットワーク情報293が有するコンフィグ情報は、実機の制御装置200から受信する情報、または実機の情報ではない論理的(仮想的)な情報を含む。論理的な情報は、ユーザが操作部115を操作することによりエディタ252を介して入力する情報を含み得る。
 <D.制御プログラムの開発環境>
 次に、図4を参照して、開発支援装置100における制御プログラムの開発環境を説明する。図4は、開発支援装置100における制御プログラムの開発環境の一例を概略的に示す図である。
 図4では、説明のために、プログラミングアプリケーション250のうち、エディタ252およびビルダ254が示されて他の部分の図示は省略されている。また、図4では、エディタ252およびビルダ254に関連づけて、データ格納部270、GUIモジュール258および転送モジュール211が示される。
 図4では、データ格納部270のデータのうち、エディタ252およびビルダ254と関連する、ソースコード271、変数定義リスト272および実行コード273が示されている。
 ソースコード271は、制御装置200で実行される処理を、変数を用いて記述した命令部を含む。命令部は、変数を用いて記述された命令要素を含む。「命令要素」とは、ソースコード271の命令部を記述する要素を総称するものであり、例えば、演算子、ファンクションブロック、ファンクション、オペランドを含む。ソースコード271は、複数の命令要素を互いに繋いだ回路態様で表示可能なプログラミング言語で記述することができる。以下では、典型例としてLDで記述されたソースコードを対象とする。
 変数定義リスト272は、ソースコード271に含まれる命令要素が参照する変数を定義した変数宣言である。変数定義リスト272は、変数ごとに、少なくとも、変数名と、当該変数のデータ型とを宣言することで作成される。
 転送モジュール211は、実行コード273を制御装置200(PLC)に転送(ダウンロードまたはアップロード)するように、通信インターフェイス111を制御する。
 GUIモジュール258は、ビルダ254とユーザとの対話を実現するように、表示インターフェイス117およびI/Oインターフェイス114を制御する。GUIモジュール258は、ユーザと対話するための「インターフェイス」の一実施例に対応する。
 図4を参照して、エディタ252は、操作部115を介して受け付けるユーザ操作に従って記述されるソースプログラムを編集(エディット)することにより、ソースプログラムを予め定められたプログラム言語のソースコード271に変換する。エディタ252は、生成されたソースコード271をデータ格納部270に格納する。
 ビルダ254は、予め定められたプログラム言語用のコンパイラおよびリンカーを含む。コンパイラは、ソースコード271を複数のファイルに分割し、ファイル単位でコンパイルすることにより、複数のオブジェクトファイルを作成する。リンカーは、作成された複数のオブジェクトファイルを結合することにより、実行コード273を生成する。実行コード273は、制御装置200のプロセッサにより実行可能なコードからなり、データ格納部270に格納されるソースコード271および変数定義リスト272を用いて生成される。具体的には、ビルダ254は、解析部212、変数宣言生成部215および実行コード生成部216を含む。これらの部は、ソースコード271をビルドし、制御装置200で実行することが可能な実行コード273を生成する。
 開発支援装置100は、実行コード273を転送モジュール211により制御装置200(PLC)に転送する。制御装置200では、制御プログラム210用に、変数定義リスト272で宣言された変数を格納するためのメモリ領域が確保される。このとき、各変数について、そのデータ型に従った容量を有するメモリ領域が確保される。
 外部機器300(デバイス300A~300C)は、ネットワークNW1またはNW2によるデータ通信により、メモリ領域の変数にアクセス可能である。制御装置200内部のプロセッサによって実行コード273が実行されることにより、複数の制御装置200間でのデータの遣り取り、および、制御対象である外部機器300の制御が実施される。
 <E.制御プログラム開発の処理>
 図5は、開発支援装置100における制御プログラム開発の概略処理の一例を示すフローチャートである。
 図5を参照して、開発支援装置100では、ソースコード271を生成または編集する場合に、まず、エディタ252が起動される。エディタ252は、ソースコード271のエディット(編集)処理を実行する(ステップS1)。具体的には、エディタ252は、操作部115を介して受け付けるユーザ操作に従ってソースコード271を生成する。エディタ252は、ソースコード271を表示部118に表示する。
 次に、ソースコード271をビルドする場合、開発支援装置100は、ビルダ254を起動する。ビルダ254は、ソースコード271をビルドし、実行コード273を生成する(ステップS2)。ビルド処理については、図6で後述する。
 実行コード273を制御装置200に転送する場合、転送モジュール211は、実行コード273を制御装置200に転送するように通信インターフェイス111を制御する(ステップS3)。
 <ビルド処理>
 図6は、図5に示したビルド処理(S2)の一例を示すフローチャートである。
 図6を参照して、ビルダ254は、エディット処理(S1)により編集されたソースコード271をビルドする。ビルド処理において、解析部212は、ソースコード271を解析し、ビルドに適したデータ構造に変換する(ステップS21)。このデータ構造として、例えばAST(abstract syntax tree、抽象構文木)が用いられる。具体的には、解析部212は、最初に、字句解析処理として、ソースコード271を走査しながら解析し、解析結果に基づき変数などの識別子を含むトークンに分類し、分類されたトークンからなるトークン列を生成する。次に、解析部212は、構文解析処理として、生成されたトークン列を解析し、解析結果に基づきASTを生成する。さらに解析部212は、意味解析処理として、ASTに基づき、ソースコード271をプログラム言語の記述仕様に適合するようにデータの型または命令コードからなる式の型を決定する。
 変数宣言生成部215は、ソースコード271に含まれる命令要素が参照する変数を定義した変数宣言である変数定義リスト272を生成する。具体的には、変数宣言生成部215は、最初に、ソースコード271に含まれる命令要素が参照する変数を抽出する(ステップS22)。次に、変数宣言生成部215は、抽出した変数のデータ型を推論する(ステップS23)。変数宣言生成部215は、推論したデータ型を用いて各変数を定義することにより、変数定義リスト272を生成する(ステップS24)。
 <変数宣言生成処理>
 以下では、図7から図10を参照して、変数宣言生成部215における変数のデータ型の推論処理(図6のS23)および変数定義リスト272の生成処理(図6のS24)について説明する。
 図7には、ソースコード271の第1例を説明する概念図が示される。図7には、制御プログラムの一例であるラダープログラムによって記述されるラダー回路と、当該ラダー回路に基づいて生成された変数定義リスト272が示される。
 図7に示すように、ラダープログラムは、入力側母線421と出力側母線422との間に回路要素と接続線とを用いた論理回路を梯子状に描いたラダー回路420により表現される。回路要素は「命令要素」の一実施例に対応する。
 図7の例では、ラダー回路420は、変数aの値に応じてオン/オフされる接点425と、オン/オフ結果を変数bとして出力するコイル426とを含む。ラダー回路420は、接点425およびコイル426といった回路要素を互いに接続線423で繋ぐことで記述される。例えば、変数bは他のラダー回路(図示せず)の接点を開閉する変数としてさらに用いられる。あるいは、変数aは、他のラダー回路(図示せず)のコイルの出力値である。このようなラダー回路の階層的な組合せによって、制御装置200が外部機器300を制御するための処理を記述することができる。
 変数宣言生成部215は、ラダー回路420に含まれる回路要素(命令要素)が参照する変数を抽出する。図7に示す第1例では、接点425が参照する変数aと、コイル426が参照する変数bとが抽出される。
 変数宣言生成部215は、抽出した変数aおよび変数bの各々のデータ型を推論する。変数のデータ型は、当該変数を参照する回路要素にて実行される処理の内容に基づいて推論することができる。図7の例では、変数aを入力とする接点425は、変数aの値に応じてオン/オフされることから、変数aのデータ型は「BOOL」と推論することができる。変数bを出力するコイル426はオン/オフ結果を出力することから、変数bのデータ型は「BOOL」と推論することができる。
 変数宣言生成部215は、推論した結果に基づいて、変数aおよび変数bの各々について、変数名およびデータ型を宣言した変数定義リスト272を生成する。
 図8には、ソースコード271の第2例を説明する概念図が示される。図8には、図7と同様に、ラダー回路の一例と、当該ラダー回路に基づいて生成された変数定義リスト272が示される。
 図8の例では、ラダー回路420は、変数aの値に応じてオン/オフされる接点425と、オン/オフ結果を変数bとして出力するコイル426と、ファンクション427とを含む。ファンクションとは、制御プログラム210を構成するPOU(Program Organization Unit)と呼ばれる基本的な構成要素である。ファンクションは、同一入力に対して常に同じ値を出力する要素である。ファンクション427は、その入力部に関連付けられている変数の値に基づいて、ファンクション427に規定されている処理を実行する。当該実行結果は、ファンクション427の出力に関連付けられている変数に反映される。
 変数宣言生成部215は、ラダー回路420に含まれる回路要素(命令要素)が参照する変数を抽出する。図8に示す第2例では、接点425が参照する変数aと、コイル426が参照する変数bと、ファンクション427が参照する変数aおよび変数cとが抽出される。
 変数宣言生成部215は、抽出した変数a、変数bおよび変数cの各々のデータ型を推論する。変数aおよび変数bはそれぞれ、図7に示した方法によって、データ型が「BOOL」であると推論することができる。変数cについては、ファンクション427に規定されている処理内容に基づいて推論することができる。
 具体的には、図8の例では、ファンクション427は、データ転送命令である「MOVE」ファンクションを規定した命令要素である。「MOVE」ファンクションは、入力部(In)が受け付けた変数(入力引数)の値を、出力部(Out)に関連付けられた変数(出力引数)に転送する処理を実行するように規定されている。
 「MOVE」ファンクションの入力引数のデータ型は「ANY」であるため、どのようなデータ型の変数も入力部(In)に入力することができる。言い換えると、「MOVE」ファンクション単体では、入力部(In)に入力される変数のデータ型を推論することができない。ただし、図8の例では、入力引数となる変数aが他の回路要素(接点425)でも参照されているため、当該他の回路要素で得られた推論結果に基づいて、変数aのデータ型を推論することができる。
 「MOVE」ファンクションでは、通常、入力引数と出力引数との間で、変数のデータ型が一致している。したがって、入力引数である変数aのデータ型が「BOOL」と推論された場合には、出力引数である変数cのデータ型も「BOOL」であると推論することができる。
 変数宣言生成部215は、推論した結果に基づいて、変数aおよび変数bの各々について、変数名およびデータ型を宣言した変数定義リスト272を生成する。
 なお、図8の例とは反対に、「MOVE」ファンクションにおいて、出力引数となる変数のデータ型が推論された場合においても、入力引数となる変数のデータ型も推論することができる。ただし、入力引数および出力引数のうちの一方の変数のデータ型が推論できない場合には、他方の変数のデータ型も推論することができない。
 図9には、ソースコード271の第3例を説明する概念図が示される。図9には、図7と同様に、ラダー回路の一例と、当該ラダー回路に基づいて生成された変数定義リスト272が示される。
 図9の例では、ラダー回路420は、ファンクション428を含む。変数宣言生成部215は、ファンクション428が参照する変数dおよび変数eを抽出しし、抽出した変数dおよび変数eの各々のデータ型を推論する。
 図9の例では、ファンクション428は、データ型の変換命令である「INT_TO_BCD_BYTE」ファンクションを規定した命令要素である。ファンクション428のシンボル「INT_TO_BCD_BYTE」において、「TO」の左側は入力引数となる変数のデータ型を規定し、「TO」の右側は出力引数となる変数のデータ型を規定している。即ち、「INT_TO_BCD_BYTE」ファンクションは、整数型(INT)のデータを、バイト型(BYTE)のBCD(2進化10進表示:binary coded decimal notation)データに変換するための命令を規定している。
 したがって、変数宣言生成部215は、入力引数となる変数dのデータ型は「INT」であると推論するとともに、出力引数となる変数eのデータ型は「BYTE」であると推論することができる。変数宣言生成部215は、推論した結果に基づいて、変数dおよび変数eの各々について、変数名およびデータ型を宣言した変数定義リスト272を生成する。
 図10には、ソースコード271の第4例を説明する概念図が示される。図10には、図7と同様に、ラダー回路の一例と、当該ラダー回路に基づいて生成された変数定義リスト272が示される。
 図10の例では、ラダー回路420は、ファンクション429を含む。変数宣言生成部215は、ファンクション429が参照する変数「DINT#30」、変数fおよび変数gを抽出し、抽出した変数「DINT#30」、変数fおよび変数gの各々のデータ型を推論する。
 図10の例では、ファンクション429は、算術演算(図10では乗算「*」)の実行命令を規定した命令要素である。ファンクション429は、2つの入力部(In1,In2)と、1つの出力部(Out)とを有しており、2つの入力引数を乗算し、その乗算結果である出力引数を出力するように規定されている。
 算術演算では、複数の入力引数について、変数のデータ型を混在させないことが一般的である。また、複数の入力引数と、これらの演算結果である出力引数とは、変数のデータ型が同じである。したがって、算術演算ファンクションにおいては、複数の入力引数および出力引数のうちのいずれか1つの引数について変数のデータ型が既知であれば(もしくは推論できれば)、残りの引数についても変数のデータ型を推論することができる。
 図10の例では、第1の入力部(In1)に入力される変数「DINT#30」は、「DINT」(倍精度整数)型の変数である。したがって、変数宣言生成部215は、第2の入力部(In2)に入力される変数fも「DINT」型の変数であると推論することができる。変数宣言生成部215はさらに、出力部(Out)から出力される変数gも「DINT」型の変数であると推論することができる。
 変数宣言生成部215は、推論した結果に基づいて、変数fおよび変数gの各々について、変数名およびデータ型を宣言した変数定義リスト272を生成する。
 図6のフローチャートに戻って、変数のデータ型の推論結果に基づいて変数定義リスト272を生成すると、変数宣言生成部215は、変数定義リスト272が完成したか否かを判定する(S25)。ステップS25では、変数宣言生成部215は、ソースコード271に記述されている複数の変数の全てについて、データ型が宣言されているか否かを判定する。全ての変数についてデータ型が宣言されている場合、S25ではYES判定とされる。
 一方、ソースコード271に記述されている複数の変数の一部について、データ型が宣言されていない場合には、S25ではNO判定とされる。例えば、図8で述べたように、「MOVE」ファンクションにおいて、入力引数および出力引数のうちの一方の変数のデータ型が推論できない場合には、他方の変数のデータ型も推論することができない。このような場合、変数定義リスト272内にデータ型が宣言されていない変数が含まれるため、S25ではNO判定とされる。
 ソースコード271に記述されている複数の変数の全てについてデータ型が宣言されていない場合(S25のNO判定時)には、変数宣言生成部215は、ステップS24で生成した変数定義リスト272を、表示部118を介してユーザに提示する(S26)。変数宣言生成部215は、以下に説明するように、GUIモジュール258を用いてユーザと対話することにより、ユーザ操作に従って変数定義リスト272を完成させる。
 <ユーザとの対話>
 図11は、表示部118における変数定義リスト272の表示例を示す図である。図11の例では、変数定義リスト272は、変数ごとに少なくとも変数名およびデータ型を表したテーブル形式で表示されている。なお、変数定義リスト272は他の形式で表示されてもよい。
 変数定義リスト272には、ソースコード271に記述されている複数の変数の各々について、図6のステップS23の処理において推論されたデータ型が記入されている。ただし、データ型を推論できなかった変数については、データ型の記入欄が空欄となっている。なお、該当する記入欄を空欄とすることに代えて、当該記入欄を他の記入欄よりも目立つ態様で示すようにしてもよい。
 図11の例では、変数hのデータ型が推論できないため、変数hのデータ型の記入欄が空欄となっている。この場合、GUIモジュール258は、表示部118を用いて、変数hのデータ型が不明である旨をユーザに通知するとともに、変数fのデータ型の入力をユーザに求める。GUIモジュール258は、例えば、「変数hのデータ型が不明です。データ型を入力してください。」というメッセージ500を表示部118に表示する(図6のS27)。
 GUIモジュール258は、表示部118にメッセージ500を表示した状態で、所定時間の間、当該メッセージに応答したユーザ入力を受け付ける待機状態となる(S28)。所定時間内にGUIモジュール258がユーザ入力を受け付けた場合(S29のYES判定時)には、変数宣言生成部215は、ユーザ入力に従って変数定義リスト272を書き換えることにより、変数定義リスト272を更新する(S30)。例えば、図11の変数定義リスト272内の空欄に対して、変数hのデータ型を指定するユーザ入力がなされた場合には、変数定義リスト272は、指定された変数hのデータ型を含めた内容に更新される。
 ユーザ入力に従って変数定義リスト272を更新すると、ステップS25に戻って、変数宣言生成部215は、変数定義リスト272が完成したか否かを判定する。上述したように、変数宣言生成部215は、ソースコード271に記述されている複数の変数の全てについて、データ型が宣言されているか否かを判定する。全ての変数についてデータ型が宣言されている場合、S25ではYES判定とされる。
 変数定義リスト272が完成していると判定されると(S25のYES判定時)、変数宣言生成部215は、変数定義リスト272をデータ格納部270に格納する(S31)。
 実行コード生成部216は、データ格納部270に格納されているソースコード271および変数定義リスト272に基づいて、実行コード273を生成する(S32)。S32では、実行コード生成部216は、解析部212における意味解析により得られた式のデータ型の情報と、変数定義リスト272とに基づいて、ソースコード271を実行コード273に変換する。実行コード生成部216は、生成された実行コード273をデータ格納部270に格納する。その後、図5の処理に戻る。
 以上説明したように、本実施の形態では、ユーザ操作に従って記述されたソースコード271のビルド処理(S2)において、ソースコード271に含まれる命令要素が参照する変数について、当該変数を定義した変数定義リスト272が生成される。これによると、生成された変数定義リスト272では、ソースコード271内で使用される変数のみが宣言されることになる。すなわち、ソースコード271内で使用されない変数については、変数定義リスト272では宣言されない。その結果、変数定義リスト272内に、ソースコード271に含まれる命令要素から参照されない変数(以下、「不使用変数」とも称する)を生じさせないことができる。
 ここで、エディット処理(S1)において、ユーザ操作に従ってソースコード271内の一部の命令要素が削除されたケースを想定する。このケースでは、当該命令要素が参照する変数(例えば「変数A」と表記する)が、ソースコード271内において不使用変数となる場合がある。一方、変数Aが定義リスト272内で宣言されていれば、ソースコード271と変数定義リスト272とから構成されるソースプログラムをビルドすると、制御装置200のメモリ領域には、変数A(不使用変数)を格納するための領域が確保されることになる。
 本実施の形態によれば、上記のケースにおいて、ソースコード271のビルド時に生成される変数定義リスト272は、不使用変数となった変数Aが除去された内容に更新されている。よって、ソースコード271の編集によって不要となった変数が変数定義リスト272内に蓄積されることを防ぐことができる。
 なお、ソースコード271内で使用される変数のうち、データ型を推論できない変数については、GUIモジュール258を用いてユーザ入力を求めることによって変数定義リスト272を完成させることができる。そのため、制御装置200では、変数定義リスト272で宣言されたすべての変数の各々に対して、そのデータ型に従ったメモリ領域を確保することができる。
 <変形例>
 上述した実施の形態では、GUIモジュール258が、ソースコード271に含まれる命令要素が参照する変数のうち、そのデータ型を推論できない変数について、データ型についてのユーザ入力を受け付ける構成について説明したが、GUIモジュール258はさらに、命令要素が参照する変数以外の変数についてのユーザ入力を受け付ける構成とすることができる。
 上記構成によると、ソースコード271内の命令要素からは参照されないものの、制御装置200における制御プログラム210の実行時に外部機器300(制御対象)で使用される変数を宣言することができる。よって、制御装置200では、当該変数を格納するためのメモリ領域を確保することができる。
 このような変数には、ネットワークNW1,NW2を介して外部機器300からアクセスされる変数を含めることができる。例えば、ネットワークNW2によって制御装置200と接続されるデバイス300Aでは、制御プログラム210の実行時において、当該ネットワークの定周期通信によって定期的に読み出す変数が定められている。デバイス300Aは、定周期通信によって当該変数にアクセスして、当該変数の値を制御装置200から取得する。当該変数の値は、機器301Aにおいて、状態量のモニタ等のために使用される。
 また、ネットワークNW1によって制御装置200と接続されるデバイス300Bでは、制御装置200から読み出す変数と、デバイス300B内での変数との対応関係(リンク)を規定するデータリンク設定が作成されている。デバイス300Bは、データリンク設定にしたがって、制御装置200の変数にアクセスして、当該変数の値を取得する。取得した変数の値は、機器301Bにおいて、上述と同様に使用することができる。
 <付記>
 上述したような本実施の形態および変形例は、以下のような技術思想を含む。
 [構成1]
 制御対象(300)を制御する制御装置(200)用の制御プログラム(210)の開発を支援するための開発支援装置(100)であって、
 ユーザ操作に従って、前記制御プログラムのソースコード(271)を生成および編集するエディタ(252)と、
 前記ソースコードおよび、前記ソースコードに含まれる命令要素が参照する変数を定義した変数宣言(272)から前記制御プログラムの実行コード(273)を生成するビルダ(254)とを備え、
 前記ビルダは、前記ソースコードに含まれる命令要素が参照する変数を抽出するとともに、抽出した変数のデータ型を推論することで、前記変数宣言を生成する変数宣言生成部(215)を含む、開発支援装置。
 [構成2]
 前記ユーザと対話するインターフェイス(258)をさらに備え、
 前記変数宣言生成部(215)は、データ型を推論できない第1の変数を前記インターフェイスを介して前記ユーザに通知するとともに、前記インターフェイスを介した前記第1の変数のデータ型についてのユーザ入力に従って前記変数宣言を更新する、構成1に記載の開発支援装置。
 [構成3]
 前記変数宣言生成部(215)はさらに、前記インターフェイス(258)を介した第2の変数についてのユーザ入力に応じて前記第2の変数を前記変数宣言に追加する、構成2に記載の開発支援装置。
 [構成4]
 前記第2の変数は、前記制御プログラム(210)の実行中に前記制御対象(300)が使用する変数を含む、構成3に記載の開発支援装置。
 [構成5]
 前記変数宣言生成部(215)は、前記命令要素の処理内容に基づいて、前記命令要素が参照する変数のデータ型を推論する、構成1から4のいずれか1項に記載の開発支援装置。
 [構成6]
 制御対象(300)を制御する制御装置(200)用の制御プログラム(210)の開発を支援するための開発支援方法であって、
 ユーザ操作に従って、前記制御プログラムのソースコード(271)を生成および編集するステップと、
 前記ソースコードおよび、前記ソースコードに含まれる命令要素が参照する変数を定義した変数宣言(272)から前記制御プログラムの実行コード(273)を生成するステップとを備え、
 前記実行コードを生成するステップは、
 前記ソースコードに含まれる命令要素が参照する変数を抽出するステップと、
 抽出した変数のデータ型を推論することで、前記変数宣言を生成するステップとを含む、開発支援方法。
 [構成7]
 制御対象(300)を制御する制御装置(200)用の制御プログラム(210)の開発を支援するための開発支援プログラムであって、
 前記開発支援プログラムは、コンピュータに、
 ユーザ操作に従って、前記制御プログラムのソースコード(271)を生成および編集するステップと、
 前記ソースコードおよび、前記ソースコードに含まれる命令要素が参照する変数を定義した変数宣言(272)から前記制御プログラムの実行コード(273)を生成するステップとを実行させ、
 前記実行コードを生成するステップは、
 前記ソースコードに含まれる命令要素が参照する変数を抽出するステップと、
 抽出した変数のデータ型を推論することで、前記変数宣言を生成するステップとを含む、開発支援プログラム。
 今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
 10 FAシステム、50 開発支援プログラム、60 各種データ・プログラム、100 開発支援装置、102 プロセッサ、104 主メモリ、111 通信インターフェイス、114 I/Oインターフェイス、115 操作部、117 表示インターフェイス、118 表示部、120 記憶装置、200 制御装置、210 制御プログラム、212 解析部、215 変数宣言生成部、216 実行コード生成部、250 プログラミングアプリケーション、252 エディタ、254 ビルダ、256 デバッガ、257 コンフィグレータ、258 GUIモジュール、260 シミュレータ、270,299 データ格納部、271 ソースコード、272 変数定義リスト、273 実行コード、293 コンフィグ情報、280 ネットワーク設定アプリケーション、300 外部機器、300A~300C デバイス、301A~301C 機器、420 ラダー回路、421 入力側母線、422 出力側母線、423 接続線、425 接点、426 コイル、427~429 ファンクション、a~i 変数、NW1,NW2 ネットワーク。

Claims (7)

  1.  制御対象を制御する制御装置用の制御プログラムの開発を支援するための開発支援装置であって、
     ユーザ操作に従って、前記制御プログラムのソースコードを生成および編集するエディタと、
     前記ソースコードおよび、前記ソースコードに含まれる命令要素が参照する変数を定義した変数宣言から、前記制御プログラムの実行コードを生成するビルダとを備え、
     前記ビルダは、前記ソースコードに含まれる前記命令要素が参照する前記変数を抽出するとともに、抽出した前記変数のデータ型を推論することで、前記変数宣言を生成する変数宣言生成部を含む、開発支援装置。
  2.  前記ユーザと対話するインターフェイスをさらに備え、
     前記変数宣言生成部は、データ型を推論できない第1の変数を前記インターフェイスを介して前記ユーザに通知するとともに、前記インターフェイスを介した前記第1の変数のデータ型についてのユーザ入力に従って前記変数宣言を更新する、請求項1に記載の開発支援装置。
  3.  前記変数宣言生成部はさらに、前記インターフェイスを介した第2の変数についてのユーザ入力に応じて前記第2の変数を前記変数宣言に追加する、請求項2に記載の開発支援装置。
  4.  前記第2の変数は、前記制御プログラムの実行中に前記制御対象が使用する変数を含む、請求項3に記載の開発支援装置。
  5.  前記変数宣言生成部は、前記命令要素の処理内容に基づいて、前記命令要素が参照する変数のデータ型を推論する、請求項1から4のいずれか1項に記載の開発支援装置。
  6.  制御対象を制御する制御装置用の制御プログラムの開発を支援するための開発支援方法であって、
     ユーザ操作に従って、前記制御プログラムのソースコードを生成および編集するステップと、
     前記ソースコードおよび、前記ソースコードに含まれる命令要素が参照する変数を定義した変数宣言から前記制御プログラムの実行コードを生成するステップとを備え、
     前記実行コードを生成するステップは、
     前記ソースコードに含まれる前記命令要素が参照する前記変数を抽出するステップと、
     抽出した前記変数のデータ型を推論することで、前記変数宣言を生成するステップとを含む、開発支援方法。
  7.  制御対象を制御する制御装置用の制御プログラムの開発を支援するための開発支援プログラムであって、
     前記開発支援プログラムは、コンピュータに、
     ユーザ操作に従って、前記制御プログラムのソースコードを生成および編集するステップと、
     前記ソースコードおよび、前記ソースコードに含まれる命令要素が参照する変数を定義した変数宣言から前記制御プログラムの実行コードを生成するステップとを実行させ、
     前記実行コードを生成するステップは、
     前記ソースコードに含まれる前記命令要素が参照する前記変数を抽出するステップと、
     抽出した前記変数のデータ型を推論することで、前記変数宣言を生成するステップとを含む、開発支援プログラム。
PCT/JP2021/034469 2021-03-11 2021-09-21 開発支援装置、開発支援方法および開発支援プログラム WO2022190418A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2021039325A JP2022139090A (ja) 2021-03-11 2021-03-11 開発支援装置、開発支援方法および開発支援プログラム
JP2021-039325 2021-03-11

Publications (1)

Publication Number Publication Date
WO2022190418A1 true WO2022190418A1 (ja) 2022-09-15

Family

ID=83227809

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/034469 WO2022190418A1 (ja) 2021-03-11 2021-09-21 開発支援装置、開発支援方法および開発支援プログラム

Country Status (2)

Country Link
JP (1) JP2022139090A (ja)
WO (1) WO2022190418A1 (ja)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0540631A (ja) * 1991-08-06 1993-02-19 Fuji Xerox Co Ltd 型推論装置
JPH05143310A (ja) * 1991-11-22 1993-06-11 Hokuriku Nippon Denki Software Kk データ部自動生成エデイタ
JP2003501742A (ja) * 1999-06-07 2003-01-14 マイクロソフト コーポレイション 中間言語内のオペランド・タイプの推定
JP2005044316A (ja) * 2003-07-25 2005-02-17 Omron Corp シミュレーション支援ツールおよびラダープログラムの検証システムならびにプログラム製品
JP2011070393A (ja) * 2009-09-25 2011-04-07 Fuji Xerox Co Ltd 情報処理システム及び通信装置
JP2012118715A (ja) * 2010-11-30 2012-06-21 Fuji Electric Co Ltd Plcシステム、その開発支援装置、プログラム
JP2018205857A (ja) * 2017-05-31 2018-12-27 オムロン株式会社 プログラム開発支援装置、プログラム開発支援方法、および、プログラム開発支援プログラム
JP2019211823A (ja) * 2018-05-31 2019-12-12 オムロン株式会社 サポート装置およびサポートプログラム

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0540631A (ja) * 1991-08-06 1993-02-19 Fuji Xerox Co Ltd 型推論装置
JPH05143310A (ja) * 1991-11-22 1993-06-11 Hokuriku Nippon Denki Software Kk データ部自動生成エデイタ
JP2003501742A (ja) * 1999-06-07 2003-01-14 マイクロソフト コーポレイション 中間言語内のオペランド・タイプの推定
JP2005044316A (ja) * 2003-07-25 2005-02-17 Omron Corp シミュレーション支援ツールおよびラダープログラムの検証システムならびにプログラム製品
JP2011070393A (ja) * 2009-09-25 2011-04-07 Fuji Xerox Co Ltd 情報処理システム及び通信装置
JP2012118715A (ja) * 2010-11-30 2012-06-21 Fuji Electric Co Ltd Plcシステム、その開発支援装置、プログラム
JP2018205857A (ja) * 2017-05-31 2018-12-27 オムロン株式会社 プログラム開発支援装置、プログラム開発支援方法、および、プログラム開発支援プログラム
JP2019211823A (ja) * 2018-05-31 2019-12-12 オムロン株式会社 サポート装置およびサポートプログラム

Also Published As

Publication number Publication date
JP2022139090A (ja) 2022-09-26

Similar Documents

Publication Publication Date Title
EP2169547B1 (en) Compilation model for programmable logic controllers (PLC).
CN107710149B (zh) 利用连接性模型生成plc代码的方法和系统
CN103814333A (zh) 用于对可编程控制装置编程和配置的方法和设备
JP6624008B2 (ja) エンジニアリングツール連携装置、エンジニアリングツール連携方法、エンジニアリングツール連携プログラム及び記録媒体
JP6950665B2 (ja) エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム
EP3671571A1 (en) A method and system for generating an artificial intelligence model
Yang et al. Transformation of Simulink models to IEC 61499 Function Blocks for verification of distributed control systems
WO2018047620A1 (ja) 実行可能プログラム作成装置、実行可能プログラム作成方法、および、実行可能プログラム作成プログラム
KR102280116B1 (ko) 엔지니어링 장치, 엔지니어링 장치의 제어 방법 및 프로그램
US20010037362A1 (en) Automation system for solving a technical-process task and corresponding method
WO2021040727A1 (en) Plc code generation with a knowledge graph
Younis et al. UML-based approach for the re-engineering of PLC programs
WO2022190418A1 (ja) 開発支援装置、開発支援方法および開発支援プログラム
Colla et al. Design and implementation of industrial automation control systems: A survey
EP4073626B1 (en) Method and system for generating engineering diagrams in an engineering system
Wang et al. Formal modelling of PLC systems by BIP components
WO2022190417A1 (ja) 開発支援装置、開発支援方法および開発支援プログラム
US20230237249A1 (en) Method and system for generating an automation engineering project in a technical installation using multidisciplinary approach
EP4328683A1 (en) Method and system for generating user recommendations to aid generation of an engineering project
CN111651142B (zh) 一种组态型示教器管理系统
EP4167079A1 (en) Method and system for generating and optimizing engineering programs for a technical installation
EP4254200A1 (en) Method and system for eradicating programmatical errors from engineering programs in a technical installation
WO2024128118A1 (ja) 開発支援装置、開発支援方法および開発支援プログラム
Ferreira et al. Integration of the ST language in a model-based engineering environment for control systems: An approach for compiler implementation
CN115480518A (zh) 基于opcua的上下位机一体化plc实现方法

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: 21930266

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: 21930266

Country of ref document: EP

Kind code of ref document: A1