WO2021044650A1 - プログラム開発装置、プロジェクト作成方法およびプログラム開発装置を実現するためのプログラム - Google Patents

プログラム開発装置、プロジェクト作成方法およびプログラム開発装置を実現するためのプログラム Download PDF

Info

Publication number
WO2021044650A1
WO2021044650A1 PCT/JP2020/008954 JP2020008954W WO2021044650A1 WO 2021044650 A1 WO2021044650 A1 WO 2021044650A1 JP 2020008954 W JP2020008954 W JP 2020008954W WO 2021044650 A1 WO2021044650 A1 WO 2021044650A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
variable
module
name
project
Prior art date
Application number
PCT/JP2020/008954
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 EP20860723.4A priority Critical patent/EP4027208A4/en
Priority to CN202080057008.5A priority patent/CN114245883B/zh
Priority to US17/634,247 priority patent/US11704113B2/en
Publication of WO2021044650A1 publication Critical patent/WO2021044650A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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
    • G05B19/056Programming the PLC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring

Definitions

  • the present invention relates to a program development device, a project creation method, and a program for realizing the program development device.
  • the control device Since the user program executed by the control device includes an instruction for referring to an input / output signal (IO (Input Output) signal) exchanged with the field device group, the IO signal is referred to when reusing. It is necessary to modify the instructions of. In addition, it is necessary to modify variables that are referenced between programs as appropriate.
  • IO Input Output
  • Patent Document 1 Japanese Patent Application Laid-Open No. 04-205355
  • Patent Document 1 analyzes variable usage restriction information for common variables in a source program, accumulates the restriction information, and accumulates the restriction information.
  • Patent Document 1 merely focuses on common variables used in a source program, and can achieve the purpose of improving the design efficiency and reusability of a program in a control device such as a PLC. Can not.
  • One object of the present invention is to provide a new mechanism capable of improving the design efficiency and reusability of a program executed by a control device.
  • a program development device for providing a development environment for a user program executed by a control device.
  • the program development device includes a storage unit that holds a project containing one or more program modules, and an update means for importing one or more program modules into the project.
  • Each of the program modules includes a program and is a variable that can be referred to among all the program modules included in the project, and a variable that can be referred to among a plurality of program modules included in the project. It is possible to define two variables and a third variable, which is a variable referred to in each program module.
  • the update means maintains the variable name of the first variable contained in the imported program module, and the variable name of the second variable contained in the imported program module is included in any program module of the project. When it overlaps with the variable name of the second variable, it is configured to accept the change of the duplicated variable name.
  • the first variable included in the imported program module is maintained as it is, and the second variable is duplicated. Since the variable name is changed so that there is no such thing, the design efficiency and reusability of the program can be improved.
  • the update means may present the duplicated second variable to the user when the variable name of the second variable included in the imported program module is duplicated. With this configuration, the user can easily understand which variable needs to be renamed.
  • the updating means may change the duplicated second variable according to a predetermined naming convention. According to this configuration, the variable name is automatically changed to a unique variable name without the user having to manually change the variable name.
  • the update means is further configured to accept the change of the name of the duplicated program. It may have been done. According to this configuration, when one or more program modules are imported into an existing project, the names of the programs included in the imported program modules are changed so that there is no duplication, so that the design efficiency of the program can be improved. And reusability can be improved.
  • the update means may present the name of the duplicated program to the user. With this configuration, the user can easily understand which program needs to be renamed.
  • the update means may change the name of the duplicated program according to a predetermined naming convention. According to this configuration, the variable name is automatically changed to a unique variable name without the user having to manually rename the program.
  • Each of the program modules may be capable of including the definition of the associated I / O unit. If the definition of the I / O unit included in the imported program module overlaps with the definition of the I / O unit included in any of the program modules of the project, the update means changes the definition of the duplicate I / O unit. It may be further configured to accept. According to this configuration, the input / output units can be appropriately associated with each program module without duplicating the definitions of the input / output units.
  • a project creation method for creating a project including a user program executed by a control device includes the step of holding a project containing one or more program modules.
  • Each of the program modules includes a program and is a variable that can be referred to among all the program modules included in the project, and a variable that can be referred to among a plurality of program modules included in the project. It is possible to define two variables and a third variable, which is a variable referred to in each program module.
  • the project creation method is further included in the step of accepting the import of one or more program modules into the project, the step of maintaining the variable name of the first variable included in the imported program module, and the step of maintaining the variable name of the first variable included in the imported program module. If the variable name of the second variable is duplicated with the variable name of the second variable included in any program module of the project, the step of accepting the change of the duplicate variable name is included.
  • a program for realizing a program development device for providing a development environment for a user program executed by the control device causes the computer to perform a step of holding a project containing one or more program modules.
  • Each of the program modules includes a program and is a variable that can be referred to among all the program modules included in the project, and a variable that can be referred to among a plurality of program modules included in the project. It is possible to define two variables and a third variable, which is a variable referred to in each program module.
  • the program accepts the import of one or more program modules into the project into the computer, the step of maintaining the variable name of the first variable contained in the imported program module, and the step included in the imported program module. If the variable name of the second variable overlaps with the variable name of the second variable included in any of the program modules of the project, the step of accepting the change of the duplicate variable name is executed.
  • FIG. 6 is a schematic diagram showing a specific design example of modular programming shown in FIGS. 6 and 7. It is a flowchart which shows the process process of export and import in modularized programming according to this embodiment. It is a figure which shows the data example of the program module exported in the modularized programming according to this embodiment. It is a figure which shows the data example of the program module exported in the modularized programming according to this embodiment. It is a figure which shows the procedure example at the time of importing the same apparatus module for the project shown in FIG. It is a figure which shows the procedure example at the time of importing a new apparatus module into the project shown in FIG. It is a flowchart which shows the processing procedure of the import conformance processing in modularized programming according to this embodiment.
  • FIG. 1 is a diagram for explaining an outline of a method of creating a project including a user program according to the present embodiment.
  • the project 50 includes a user program executed by a control device 100 such as a PLC. More specifically, the project 50 includes programs 560 to 563 as user programs.
  • the programs 560 to 563 are modularized as program modules 70 to 73, respectively.
  • the program modules 70 to 73 include a common variable 52, an inter-module I / F 60, and a local variable 58 as elements in addition to the programs 560 to 563.
  • the common variable 52 is a variable (corresponding to the first variable) that can be referred to among all the program modules included in the project 50.
  • the local variable 58 is a variable (corresponding to the second variable) that can be referred to among a plurality of program modules included in the project 50.
  • the local variable 58 is a variable (corresponding to a third variable) referred to in each program module.
  • variables of the type as needed can be defined.
  • the global variables 601 to 603 defined as the inter-module I / F60, if the same variable name exists in the project 50, it cannot be properly referenced. Therefore, the global variables 601 to 603 are prevented so that the variable names do not overlap. The variable name of is changed as appropriate.
  • Control system configuration example> Next, a configuration example of the control system 1 in which the user program created by the program development device 200 according to the present embodiment is executed will be described.
  • FIG. 2 is a schematic diagram showing an overall configuration example of the control system 1 according to the present embodiment.
  • the control system 1 includes one or more control devices 100.
  • Each of the control devices 100 executes a control calculation for controlling the control target, and also executes an abnormality detection process for detecting any abnormality that may occur in the monitoring target included in the control target.
  • the control device 100 may be embodied as a kind of computer such as a PLC (programmable controller).
  • the control device 100 is connected to the field device group 10 via the field bus 2. Further, the control devices 100 are connected to each other via the local network 4. A program development device 200 may be connected to the control device 100.
  • EtherCAT registered trademark
  • networks that perform such constant-period communication.
  • the control device 100 collects data (hereinafter, also referred to as “input value”) acquired by the field device group 10 and transferred to the control device 100.
  • the field device group 10 includes a device that collects a state value of a controlled object or a manufacturing device or a production line related to control (hereinafter, also collectively referred to as a “field”) as an input value.
  • state value is a term including a value that can be observed by an arbitrary control target (including: monitoring target), and is, for example, a physical value that can be measured by an arbitrary sensor, a relay, a switch, or the like. It may include an ON / OFF state, a command value such as a position, speed, and torque given to the servo driver by the PLC, and a variable value used by the PLC for calculation.
  • the field device group 10 further includes a device that gives some action to the field based on a command value (hereinafter, also referred to as “output value”) generated by the control device 100.
  • a command value hereinafter, also referred to as “output value”
  • an output relay, a contactor, a servo driver and a servo motor, and any other actuator are assumed.
  • These field device groups 10 exchange data including input values and output values with and from the control device 100 via the field bus 2.
  • the field device group 10 includes a remote IO (Input / Output) device 12, a relay group 14, an image sensor 18, a camera 20, a servo driver 22, and a servo motor 24.
  • IO Input / Output
  • relay group 14 an image sensor 18, a camera 20, a servo driver 22, and a servo motor 24.
  • the remote IO device 12 includes a communication unit that communicates via the fieldbus 2 and an input / output unit (hereinafter, also referred to as “IO unit”) for collecting input values and outputting output values. Input values and output values are exchanged between the control device 100 and the field via such an IO unit.
  • FIG. 2 shows an example in which digital signals are exchanged as input values and output values via the relay group 14.
  • the IO unit may be directly connected to the fieldbus.
  • FIG. 2 shows an example in which the IO unit 16 is directly connected to the fieldbus 2.
  • the image sensor 18 performs image measurement processing such as pattern matching on the image data captured by the camera 20, and transmits the processing result to the control device 100.
  • the servo driver 22 drives the servomotor 24 according to an output value (for example, a position command) from the control device 100.
  • the program development device 200 provides a development environment for a user program executed by the control device 100.
  • the user operates the program development device 200 to create a user program to be executed by the control device 100.
  • the program development device 200 sets the development environment (program creation / editing tool, parser, compiler, etc.) of the user program executed by the control device 100, the control device 100, and various devices connected to the control device 100. It provides a function for determining parameters (configuration), a function for transmitting a created user program to the control device 100, a function for modifying / changing a user program executed on the control device 100, and the like online.
  • FIG. 3 is a block diagram showing a hardware configuration example of the control device 100 constituting the control system 1 according to the present embodiment.
  • the control device 100 includes a processor 102 such as a CPU (Central Processing Unit) and an MPU (Micro-Processing Unit), a chip set 104, a main storage device 106, a secondary storage device 108, and the like. It includes a local network controller 110, a USB (Universal Serial Bus) controller 112, a memory card interface 114, a field bus controller 120, an internal bus controller 122, and IO units 124-1, 124-2, ....
  • a processor 102 such as a CPU (Central Processing Unit) and an MPU (Micro-Processing Unit)
  • a chip set 104 such as a main storage device 106, a secondary storage device 108, and the like.
  • It includes a local network controller 110, a USB (Universal Serial Bus) controller 112, a memory card interface 114, a field bus controller 120, an internal
  • the processor 102 reads various programs stored in the secondary storage device 108, expands them in the main storage device 106, and executes them to realize control according to the control target and various processes as described later. ..
  • the chipset 104 together with the processor 102, controls each component to realize the processing of the control device 100 as a whole.
  • an executable user program 126 (corresponding to a control program) created by the program development device 200 is stored.
  • the local network controller 110 controls the exchange of data with other devices via the local network 4.
  • the USB controller 112 controls the exchange of data with the program development device 200 via the USB connection.
  • the memory card interface 114 is configured so that the memory card 116 can be attached and detached, data can be written to the memory card 116, and various data (user programs, trace data, etc.) can be read from the memory card 116. There is.
  • the fieldbus controller 120 controls the exchange of data with other devices via the fieldbus 2.
  • the internal bus controller 122 is an interface for exchanging data with the IO units 124-1, 124-2, ... Mounted on the control device 100.
  • FIG. 3 shows a configuration example in which the necessary functions are provided by the processor 102 executing the program code, and some or all of these provided functions are provided by a dedicated hardware circuit (for example,). It may be implemented using ASIC (Application Specific Integrated Circuit) or FPGA (Field-Programmable Gate Array). Alternatively, the main part of the control device 100 may be realized by using hardware that follows a general-purpose architecture (for example, an industrial personal computer based on a general-purpose personal computer).
  • ASIC Application Specific Integrated Circuit
  • FPGA Field-Programmable Gate Array
  • FIG. 4 is a block diagram showing a hardware configuration example of the program development device 200 constituting the control system 1 according to the present embodiment.
  • the program development device 200 may be realized by executing a program using hardware (for example, a general-purpose personal computer) that follows a general-purpose architecture.
  • the program development device 200 includes a processor 202 such as a CPU and an MPU, a drive 204, a main storage device 206, a secondary storage device 208, a USB controller 212, a local network controller 214, and the like.
  • the input unit 216 and the display unit 218 are included. These components are connected via bus 220.
  • the processor 202 realizes various processes as described later by reading various programs stored in the secondary storage device 208, expanding them in the main storage device 206, and executing the programs.
  • the secondary storage device 208 is composed of, for example, an HDD (Hard Disk Drive) or an SSD (Solid State Drive).
  • the secondary storage device 208 stores a development tool 250 for realizing various functions as described later.
  • the secondary storage device 208 may store the OS and other necessary system programs.
  • Secondary storage 208 holds project 50 that includes one or more program modules. Details of the project 50 and the program modules included in the project 50 will be described later.
  • the drive 204 can write data to the storage medium 205 and read various data (user programs and various data) from the storage medium 205.
  • the storage medium 205 includes, for example, a storage medium 205 (for example, an optical storage medium such as a DVD (Digital Versatile Disc)) that non-transiently stores a computer-readable program.
  • the development tool 250 executed by the program development device 200 may be installed via a computer-readable storage medium 205, or may be installed by downloading from a server device or the like on the network. Further, the function provided by the program development device 200 according to the present embodiment may be realized by using a part of the module provided by the OS.
  • the USB controller 212 controls the exchange of data with the control device 100 via the USB connection.
  • the local network controller 214 controls the exchange of data with other devices via an arbitrary network.
  • the input unit 216 is composed of a keyboard, a mouse, and the like, and accepts user operations.
  • the display unit 218 is composed of a display, various indicators, and the like, and outputs a processing result from the processor 202 and the like.
  • a printer may be connected to the program development device 200.
  • FIG. 4 shows a configuration example in which the necessary functions are provided by the processor 202 executing the program code, and some or all of these provided functions are provided by a dedicated hardware circuit (for example,). It may be implemented using ASIC or FPGA).
  • FIG. 5 is a diagram for explaining an example of equipment for explaining modularized programming according to the present embodiment.
  • FIG. 5 shows an example of the assembly equipment 40 for assembling the screw 42 to the work 43.
  • the assembly equipment 40 includes an assembly process 47 and a transfer process 48.
  • the robot 41 picks (for example, sucks) the screw 42, moves it to the work 43, and then assembles the screw 42 into the screw hole 44 of the work 43.
  • the robot 45 picks (for example, grips) the work 43 after assembling the screw 42, moves it to a predetermined position, and then places the picked work 43.
  • the assembly equipment 40 includes an assembly process 47 and a transfer process 48 that control the robots 41 and 45, respectively.
  • FIG. 6 is a diagram showing an example of modular programming for realizing the assembly equipment 40 shown in FIG.
  • the project 50 created by modular programming includes an assembly equipment module (Machine) 80 for controlling the entire assembly equipment 40.
  • the assembly equipment module 80 calls the assembly module (Screen) 81 and the transfer module (PnP) 82 corresponding to the assembly process 47 and the transfer process 48, respectively.
  • the assembly module 81 and the transfer module 82 are respectively directed to control the corresponding devices, and are also referred to as device modules.
  • the calling relationship between modules as described above is also called “parent-child relationship”.
  • the child module called from the parent module is called "POU (Program Organization Units)”. That is, any child module having a parent module can be a POU.
  • the assembly module 81 calls a screw pick module (PickScreen) 83 and a screw mounting module (Screwing) 84 for controlling the behavior of the robot 41 and related equipment in the assembly process 47.
  • PickScreen screw pick module
  • Screwing screw mounting module
  • the transfer module 82 calls the pick module (Pick) 85 and the place module (Place) 86 for controlling the behavior of the robot 45 and related equipment in the transfer process 48.
  • the screw pick module 83 in charge of the first processing of the process and the place module 86 in charge of the last processing of the process cooperate with each other to control the processing cycle of the entire assembly facility 40.
  • the purpose of modular programming according to the present embodiment is to improve the design efficiency and reusability of the program by making parts into equipment units, equipment units included in the equipment, or process units included in the equipment.
  • FIG. 7 is a schematic diagram showing an example of the data structure of the project 50 created in the modular programming according to the present embodiment.
  • project 50 includes one or more program modules 70-76.
  • Each program module includes a common variable 52, an IO unit definition 54, a program 56 and a local variable 58, an inter-module I / F60, and an HMI (Human Machine Interface) 62 as elements. That is, each program module packages not only the program but also the elements necessary for executing the program.
  • HMI Human Machine Interface
  • the program modules 70 to 76 shown in FIG. 7 correspond to the assembly equipment module 80, the assembly module 81, the transport module 82, the screw pick module 83, the screw mounting module 84, the pick module 85, and the place module 86, respectively.
  • the common variable 52 variables that can be referred to among all the program modules included in the project 50 are defined.
  • the common variable 520 is defined as the common variable 52.
  • the common variable 520 is a variable defined in the project 50.
  • the common variable 520 includes a variable indicating an emergency stop, a variable indicating an abnormality, and the like.
  • a variable commonly referred to in each step such as “Estop” indicating an emergency stop is set as a common variable 520.
  • Battery Low battery low
  • Warning warning
  • EmergencyStop emergency stop
  • CycleTimeOver cycle time over abnormality
  • the IO unit definition 54 defines an IO unit associated with each program module. That is, each program module can include the definition of the associated IO unit (IO unit definition 54). In the example shown in FIG. 7, node addresses 541 to 546 indicating addresses on the network assigned to the connection destination IO unit are defined as IO unit definitions 54 for the program modules 71 to 76, respectively.
  • Program 56 means a program that is a main part of each program module.
  • programs 560 to 566 are created for the program modules 70 to 76, respectively.
  • the local variable 58 defines a variable that is referenced in the corresponding program 56 (that is, a variable that is not expected to be referenced by a program 56 other than the corresponding program 56).
  • local variables 580 to 586 are defined for the program modules 70 to 76, respectively. Local variables are also used as data interface variables with the corresponding IO units.
  • an interface variable that is a variable that can be referred to among a plurality of program modules included in the project 50 is defined.
  • Variables that can be referenced between all program modules may be defined in the inter-module I / F 60, but since such variables are preferably defined as common variables 52, basically, in project 50.
  • Variables that are referenced only between some of the included program modules are defined.
  • global variables 600 to 606 are defined as inter-module I / F 60 for the program modules 70 to 76, respectively.
  • a reference relationship (dependency relationship) as shown in FIG. 7 may exist between the global variables 600 to 606.
  • HMI 62 means a screen application for accepting the processing result of the corresponding program and the user operation for the program.
  • pages 620, 621, and 625 are created for the program modules 70, 71, and 74, respectively.
  • FIG. 8 is a schematic diagram showing a specific design example of modular programming shown in FIGS. 6 and 7.
  • the common variables 520, the global variables 600 to 606 as the inter-module I / F60, and the local variables 583 to 586 are defined in the program modules 70 to 76, respectively.
  • FIG. 9 is a flowchart showing an export and import processing procedure in modular programming according to the present embodiment. Each step shown in FIG. 9 is typically realized by the processor 202 of the program development apparatus 200 executing the development tool 250.
  • the user selects one or a plurality of program modules to be exported (step S10).
  • the program development device 200 visualizes the dependency of one or a plurality of program modules selected as the export target and presents it to the user (step S12). For example, the dependency of the program module as shown in FIG. 6 is presented.
  • the program development device 200 exports the information contained in one or more program modules selected as the export target according to the operation of the user (step S14).
  • the exported information includes programs (user programs), functions, function blocks, variable definitions, and the like. Then, the process ends.
  • the user imports one or more target program modules (step S20).
  • the program development device 200 determines whether or not it can be imported based on the IO unit definition 54 of the imported one or a plurality of program modules (step S22).
  • step S22 When it is determined that import is not possible (NO in step S22), the program development device 200 notifies the user of a message that import is not possible (step S24). Then, the process ends.
  • step S22 When it is determined that the program can be imported (YES in step S22), the program development device 200 executes the import conformance process, changes the contents of one or a plurality of target program modules (step S26), and then imports the destination. Incorporate into the project (step S28). Then, the process ends.
  • the exported project data 160 includes element data 166 in association with the module name 162 and the identifier 164 for identifying each data. Further, an identifier 168 indicating whether or not it is shared between modules is also associated.
  • FIG. 11 shows a part of the definitions of global variables included in the exported project data 160.
  • the definition of a global variable includes the definition of the variable name 170 and the module name 172 to which it belongs.
  • each program module has a program and configuration information of one or a plurality of IO units (devices) (for example, a node address included in the IO unit definition 54). ) And across.
  • IO unit configuration information (for example, device type, model, version information, etc.) is retained. Then, when importing the program module, the user may decide which IO unit is to be associated with by referring to the configuration information of the IO unit defined in the import destination project (described later). (See FIG. 15 and the like).
  • HMI HMI
  • device type page, resource, event, global subroutine, global variable, etc. are exported as they are.
  • the name (controller name) of the referenced control device 100 is updated as appropriate.
  • FIG. 12 is a diagram showing an example of a procedure when the same device module is imported into the project 50 shown in FIG. More specifically, FIG. 12 shows the assembly module 81 and the same module group as the screw pick module 83 and the screw mounting module 84 called from the assembly module 81 (assembly module 81A, screw pick module 83A and screw mounting module 84A). Here is an example of the import.
  • the node address included in the IO unit definition 54 is set to the correct value (see the local variable 583A of the program module 73A and 584A of the program module 74A).
  • the module name of the imported device module is duplicated with the existing module name, it cannot be properly referred to from the equipment module (assembly equipment module 80), so the imported device It is necessary to change the module name of the module (assembly module 81A).
  • the module name may be changed arbitrarily by the user, or may be changed according to a predetermined naming convention.
  • the module name of the assembly module 81A has been changed from the module name "Screw" of the assembly module 81 to "Screw2".
  • the module name defined as the reference source of the variable is also changed (the module name column of the program modules 71A, 73A, 74A).
  • the module name of the screw pick module 83A has been changed from the module name "PickScreen” of the screw pick module 83 to "PickScrew2".
  • the module name of the screw mounting module 84A has been changed from the module name "Screening" of the screw mounting module 84 to "Screening2".
  • the common variables defined in the common variable 52 are commonly referenced among a plurality of program modules, and therefore do not need to be changed. In this way, the common variables defined in the existing project 50 are used as they are (that is, they are not imported).
  • variable names will be changed.
  • the variable name may be changed arbitrarily by the user, or may be changed according to a predetermined naming convention.
  • variable name of the global variable referenced between the assembly equipment module 80 and the assembly module 81A is changed from "IF_Machine_Screw” to "IF_Machine_Screw2".
  • the variable name of the global variable referred to between the screw pick module 83A and the place module 86 is changed from "IF_PickScrew_Place” to "IF_PickScrew_Place2".
  • FIG. 13 is a diagram showing an example of a procedure when a new device module is imported into the project 50 shown in FIG. More specifically, FIG. 13 shows an example in which the inspection module (Tester) 87 for controlling the entire inspection equipment is newly imported.
  • the inspection module (Tester) 87 for controlling the entire inspection equipment is newly imported.
  • the inspection module 87 includes a processing inspection module (ProcessTest) 88 as an apparatus module called from the inspection module 87.
  • the processing inspection module 88 calls a photographing module (Camera) 891 that controls the photographing process and an evaluation module (Validate) 892 that evaluates the photographed image.
  • the program module 77 corresponding to the inspection module 87 includes a common variable 520 and a global variable 607.
  • the program module 78 corresponding to the processing inspection module 88 includes the common variable 520 and the global variable 608.
  • the program module 791 corresponding to the photographing module 891 includes a common variable 520, a global variable 6091, and a local variable 5891.
  • the program module 792 corresponding to the evaluation module 892 includes a common variable 520, a global variable 6092 and a local variable 5892.
  • the common variables defined in the common variable 52 are commonly referenced among a plurality of program modules, and therefore do not need to be changed.
  • variable names will be changed as necessary so that they will not be duplicated in the project.
  • the variable name may be changed arbitrarily by the user, or may be changed according to a predetermined naming convention.
  • FIG. 14 is a flowchart showing a processing procedure of import conforming processing in modularized programming according to the present embodiment.
  • the processing procedure shown in FIG. 14 corresponds to the detailed contents of step S26 of the processing procedure shown in FIG.
  • Each step shown in FIG. 14 is typically realized by the processor 202 of the program development apparatus 200 executing the development tool 250.
  • the program development device 200 determines whether or not the set contents of the imported IO unit definition 54 overlap with the set contents of the existing IO unit definition 54 (step S100).
  • step S100 If the settings of the imported IO unit definition 54 overlap with the settings of the existing IO unit definition 54 (YES in step S100), the program development device 200 is imported to the user. Prompt to change the IO unit definition 54 (step S102).
  • FIG. 15 is a diagram showing an example of a setting screen showing whether or not the IO unit definition 54 is duplicated in the modular programming according to the present embodiment.
  • the setting screen 350 shown in FIG. 15 the setting contents 352 of the IO unit definition 54 included in the imported program module and the setting contents 354 of the IO unit definition 54 of the import destination project are compared, and the comparison result is obtained. 356 is displayed. The user will appropriately change the IO unit definition 54 with reference to the comparison result 356.
  • the program development apparatus 200 has the duplicate IO unit definition. Accepts 54 changes. Then, when the IO unit definitions 54 included in the imported program module are duplicated, the program development device 200 presents the duplicated IO unit definitions 54 to the user (see FIG. 15).
  • the program development apparatus 200 updates the correspondence between the IO unit and the variable according to the changed IO unit definition 54 (step). S104).
  • step S100 If the settings of the imported IO unit definition 54 do not overlap with the settings of the existing IO unit definition 54 (NO in step S100), the processes of steps S102 and S104 are skipped.
  • the program development device 200 determines whether or not the module name of the imported device module overlaps with the existing module name (step S106).
  • step S106 If the module name of the imported device module is duplicated with the existing module name (YES in step S106), the program development device 200 tells the user the module name of the device module to be imported. Prompt for change (step S108).
  • step S108 If the module name of the imported device module does not overlap with the existing module name (NO in step S106), the process of step S108 is skipped.
  • the program development device 200 determines whether or not the module name of the imported child module overlaps with the existing module name (step S110).
  • step S110 If the module name of the child module to be imported is duplicated with the existing module name (YES in step S110), the program development device 200 tells the user the module name of the child module to be imported. Prompt for change (step S112).
  • FIG. 16 is a diagram showing an example of a setting screen for selecting and changing an imported module in modular programming according to the present embodiment.
  • the setting screen 360 shown in FIG. 16 among the imported modules, those that overlap with the module name of the module included in the existing project are highlighted. For example, a module having a duplicate module name is displayed in a different manner from other modules.
  • the user can easily identify the module whose module name needs to be changed from the program modules to be imported, and can change the module name as needed.
  • the program development device 200 can also change the module name according to the naming convention (details will be described later).
  • the program development apparatus 200 has the name of the overlapping program. Accept changes. Then, when the names of the programs included in the imported program module are duplicated, the program development device 200 presents the names of the duplicated programs to the user (see FIG. 16).
  • step S112 if the module name of the imported child module does not overlap with the existing module name (NO in step S110), the process of step S112 is skipped.
  • the program development device 200 determines whether or not the variable name referred to by the imported program module overlaps with the existing variable name (step S114). At this time, the common variable 520 referred to in the imported program module is maintained as it is (that is, the definition and the like are not changed). Basically, duplicate variable names are determined only for global variables defined as inter-module I / F60.
  • the program development apparatus 200 refers to the user with the imported program module. Prompt to change the variable name to be used (step S116).
  • FIG. 17 is a diagram showing an example of a setting screen for selecting and changing the variable name referred to by the imported program module in the modular programming according to the present embodiment.
  • the user selects and changes the variable name referred to by the program module to be imported.
  • the program development device 200 can also change the variable name according to the naming convention (details will be described later).
  • variable name of the global variable defined as the inter-module I / F60 included in the imported program module is the variable name of the global variable included in any program module of the existing project. If it overlaps with, the change of the duplicate variable name is accepted. Then, when the variable names of the global variables included in the imported program module are duplicated, the program development device 200 presents the duplicated global variables to the user (see FIG. 17).
  • step S116 if the variable name referred to by the imported program module does not overlap with the existing variable name (NO in step S114), the process of step S116 is skipped.
  • the program development device 200 accepts the user's selection of the HMI to be imported (step S118), and prompts the user to confirm and change the settings related to the imported HMI (step S120).
  • the program development device 200 saves a new project including the imported module (step S122), and ends the process.
  • FIG. 18 is a diagram showing an example of a setting screen for explaining an operation procedure of associating the HMI with the control device 100 in modular programming according to the present embodiment.
  • the setting screen 320 is a screen for setting an event, which is a condition for the HMI to execute some processing.
  • the user operates the pull-down 322 on the setting screen 320 to select the control device 100 to be connected from the control devices 100 included in the project. This selection operation defines an association between the controller 100 and the HMI.
  • FIG. 19 is a diagram showing another example of a setting screen for explaining an operation procedure of associating the HMI with the control device 100 in modular programming according to the present embodiment.
  • the setting screen 324 is a screen for setting the processing executed by the HMI and the associated variables and the like.
  • the user sets or changes variables (interface variables) exchanged with the connection destination control device 100 on the setting screen 324.
  • the interface variable "new_Controller_0_gvar1" of the control device 100 is associated with the process executed by the HMI.
  • FIG. 20 is a diagram showing an example of a cross reference exported from the HMI in modular programming according to the present embodiment.
  • the program development device 200 exports the cross reference 330 from which the part referring to the variable related to the interface with the control device 100 to be connected is extracted.
  • the cross reference 330 As shown in FIG. 20, it is possible to easily specify the variable name or the like to be changed when it is reused.
  • ⁇ G Naming convention> As mentioned above, if there is a duplicate module name or variable name, it may be changed to another name that the user can enter arbitrarily, or it will be automatically changed according to a predetermined naming convention. You may. An example of the naming convention will be described below.
  • an identifier for example, a numerical value or an alphabet to be incremented or decremented
  • a predetermined rule may be added.
  • the module name is changed from “Screw” to "Screw2”
  • the module name is changed from “Screw” to "Screw3”. May be good.
  • a character string that is statically or dynamically determined may be added.
  • the module name of the corresponding program module may be added to the variable name.
  • the identifier or character string may be added to the beginning of the target character string (that is, as a prefix), or the identifier or character string may be added immediately after the target character string (that is, as a suffix). ..
  • FIG. 21 is a schematic diagram showing an example of a naming convention setting screen provided in the program development device 200 according to the present embodiment.
  • the user operates the pull-down 302 of the setting screen 300 to add some additional information as a “prefix” or a “suffix”. Can be set to be added as.
  • the user can also select not to add any additional information ("None" setting).
  • the user can operate the pull-down 312 of the setting screen 310 to set to add some additional information as a "prefix” or a "suffix", and the character as the additional information. Columns can also be specified in input box 314.
  • the user can operate the pull-down 312 of the setting screen 310 to set to add some additional information as a "prefix” or a "suffix", and also "@module name".
  • a special character string "@” can also be specified in the input box 314. In this case, the module name of the corresponding program module will be added automatically.
  • a predetermined character string can be specified instead of "@module name @”.
  • the program development apparatus 200 defines the name of the duplicated program in advance. It may be changed according to the naming convention.
  • variable name of the global variable defined as the inter-module I / F60 included in the imported program module overlaps with the variable name of the global variable included in any program module of the existing project. If so, the duplicate variable name may be changed according to a predetermined naming convention.
  • Each of the program modules contains a program and is a variable that can be referred to among all the program modules included in the project, that is, between a first variable (52; 520) and a plurality of program modules included in the project.
  • the second variable (60; 600 to 606), which is a variable that can be referred to in, and the third variable (58; 580 to 586), which is a variable referred to in each program module, can be defined.
  • the update means maintains the variable name of the first variable included in the imported program module, and the variable name of the second variable included in the imported program module is any program of the project.
  • the program development apparatus is configured to accept the change of the duplicated variable name (S114, S116).
  • the update means presents the duplicated second variable to the user when the variable name of the second variable included in the imported program module is duplicated (S116), and the program development according to the configuration 1. apparatus.
  • the update means changes the duplicated second variable according to a predetermined naming convention when the variable names of the second variables included in the imported program module are duplicated, in configuration 1 or 2. Described program development device.
  • the update means accepts a change in the name of the duplicated program.
  • the program development apparatus according to any one of configurations 1 to 3, further configured in (S110, S112).
  • the program development apparatus according to configuration 4, wherein the update means presents the name of the duplicated program to the user when the name of the program included in the imported program module is duplicated (S112).
  • the program development apparatus according to any one of configurations 1 to 7, further configured to accept changes in (S106, S108).
  • a first which comprises a step (208) of holding a project containing one or more program modules, each of which is a variable that includes the program and is referenceable among all the program modules included in the project. (52; 520), a second variable (60; 600 to 606) that can be referred to among a plurality of program modules included in the project, and a variable that is referred to in each program module. It is possible to define 3 variables (58; 580 to 586).
  • step (S20) of accepting the import of one or more program modules into the project The step (S114) of maintaining the variable name of the first variable included in the imported program module, and If the variable name of the second variable included in the imported program module overlaps with the variable name of the second variable included in any of the program modules of the project, change the duplicate variable name.
  • a project creation method including accepting steps (S114, S116).
  • [Structure 10] A program (250) for realizing a program development device (200) for providing a development environment for a user program executed by the control device (100), wherein the program is applied to a computer.
  • the step (208) of holding a project containing one or more program modules is executed, and each of the program modules is a variable that includes the program and can be referred to among all the program modules included in the project.
  • One variable (52; 520), a second variable (60; 600 to 606) which is a variable that can be referred to among a plurality of program modules included in the project, and a variable that is referred to in each program module.
  • a third variable (58; 580-586) can be defined and In the step (S20) of accepting the import of one or more program modules into the project, The step (S114) of maintaining the variable name of the first variable included in the imported program module, and If the variable name of the second variable included in the imported program module overlaps with the variable name of the second variable included in any of the program modules of the project, change the duplicate variable name.
  • a program for realizing a program development device that executes the accepting steps (S114, S116).

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Automation & Control Theory (AREA)
  • Programmable Controllers (AREA)
  • Stored Programmes (AREA)

Abstract

プログラム開発装置は、プロジェクトを保持する記憶部と、プロジェクトに1または複数のプログラムモジュールをインポートする更新手段とを含む。プログラムモジュールの各々は、プログラムを含むとともに、すべてのプログラムモジュール間で参照可能な変数である第1の変数と、複数のプログラムモジュール間で参照可能な変数である第2の変数と、各プログラムモジュールにおいて参照される変数である第3の変数とを定義可能である。更新手段は、インポートされるプログラムモジュールに含まれる第1の変数の変数名を維持するとともに、インポートされるプログラムモジュールに含まれる第2の変数の変数名がプロジェクトのいずれかのプログラムモジュールに含まれる第2の変数の変数名と重複する場合には、当該重複する変数名の変更を受け付ける。

Description

プログラム開発装置、プロジェクト作成方法およびプログラム開発装置を実現するためのプログラム
 本発明は、プログラム開発装置、プロジェクト作成方法およびプログラム開発装置を実現するためのプログラムに関する。
 FA(Factory Automation)の根幹をなすPLC(プログラマブルロジックコントローラ)などの制御装置の高機能化に伴って、ユーザプログラムと称されるアプリケーションプログラムも大規模化している。プログラムの大規模化にともなって、プログラムの設計効率および再利用性を高めたいというニーズもある。
 制御装置で実行されるユーザプログラムは、フィールド装置群との間で遣り取りされる入出力信号(IO(Input Output)信号)を参照する命令を含むため、再利用にあたっては、IO信号を参照するための命令などを適宜修正する必要がある。また、プログラム間で参照される変数などについても適宜修正する必要がある。
 例えば、特開平04-205355号公報(特許文献1)は、制御装置に向けられたものではないが、ソースプログラムにおける共通変数に対する変数使用制限情報を解析し、その制限情報を蓄積し、その蓄積された制限情報を参照しながらソースプログラム中の変数の使用を検査することにより、ソースプログラムの段階で共通変数に対する誤った使用を発見する技術を開示する。
特開平04-205355号公報
 上述の特許文献1に開示される技術は、ソースプログラムで使用される共通変数に着目するにすぎず、PLCなどの制御装置においてプログラムの設計効率および再利用性を高めるという目的を達成することはできない。
 本発明の一つの目的は、制御装置で実行されるプログラムの設計効率および再利用性を向上させることのできる新たな仕組みを提供することである。
 本発明のある実施の形態によれば、制御装置で実行されるユーザプログラムの開発環境を提供するためのプログラム開発装置が提供される。プログラム開発装置は、1または複数のプログラムモジュールを含むプロジェクトを保持する記憶部と、プロジェクトに1または複数のプログラムモジュールをインポートする更新手段とを含む。プログラムモジュールの各々は、プログラムを含むとともに、プロジェクトに含まれるすべてのプログラムモジュール間で参照可能な変数である第1の変数と、プロジェクトに含まれる複数のプログラムモジュール間で参照可能な変数である第2の変数と、各プログラムモジュールにおいて参照される変数である第3の変数とを定義可能である。更新手段は、インポートされるプログラムモジュールに含まれる第1の変数の変数名を維持するとともに、インポートされるプログラムモジュールに含まれる第2の変数の変数名がプロジェクトのいずれかのプログラムモジュールに含まれる第2の変数の変数名と重複する場合には、当該重複する変数名の変更を受け付けるように構成されている。
 この構成によれば、既存のプロジェクトに1または複数のプログラムモジュールをインポートした場合に、当該インポートされるプログラムモジュールに含まれる第1の変数についてはそのまま維持するとともに、第2の変数については、重複がないように変数名が変更されるので、プログラムの設計効率および再利用性を高めることができる。
 更新手段は、インポートされるプログラムモジュールに含まれる第2の変数の変数名が重複する場合に、当該重複する第2の変数をユーザに提示するようにしてもよい。この構成によれば、ユーザは、いずれの変数の変数名を変更する必要があるのかを容易に理解できる。
 更新手段は、インポートされるプログラムモジュールに含まれる第2の変数の変数名が重複する場合に、当該重複する第2の変数を予め定められた命名規則に従って変更するようにしてもよい。この構成によれば、ユーザが手動で変数名を変更しなくても、重複しないような変数名に自動的に変更される。
 更新手段は、インポートされるプログラムモジュールに含まれるプログラムの名称がプロジェクトのいずれかのプログラムモジュールに含まれるプログラムの名称と重複する場合には、当該重複するプログラムの名称の変更を受け付けるようにさらに構成されていてもよい。この構成によれば、既存のプロジェクトに1または複数のプログラムモジュールをインポートした場合に、当該インポートされるプログラムモジュールに含まれるプログラムの名称について、重複がないように変更されるので、プログラムの設計効率および再利用性を高めることができる。
 更新手段は、インポートされるプログラムモジュールに含まれるプログラムの名称が重複する場合に、当該重複するプログラムの名称をユーザに提示するようにしてもよい。この構成によれば、ユーザは、いずれのプログラムの名称を変更する必要があるのかを容易に理解できる。
 更新手段は、インポートされるプログラムモジュールに含まれるプログラムの名称が重複する場合に、当該重複するプログラムの名称を予め定められた命名規則に従って変更するようにしてもよい。この構成によれば、ユーザが手動でプログラムの名称を変更しなくても、重複しないような変数名に自動的に変更される。
 呼び出し関係にある複数のプログラムモジュールの単位でインポートされてもよい。この構成によれば、設備を増設する場合などの設計効率を高めることができる。
 プログラムモジュールの各々は、対応付けられる入出力ユニットの定義を含むことが可能であってもよい。更新手段は、インポートされるプログラムモジュールに含まれる入出力ユニットの定義がプロジェクトのいずれかのプログラムモジュールに含まれる入出力ユニットの定義と重複する場合に、当該重複する入出力ユニットの定義の変更を受け付けるようにさらに構成されていてもよい。この構成によれば、入出力ユニットの定義を重複させることなく、各プログラムモジュールに適切に入出力ユニットを対応付けることができる。
 本発明の別の実施の形態によれば、制御装置で実行されるユーザプログラムを含むプロジェクトを作成するためのプロジェクト作成方法が提供される。プロジェクト作成方法は、1または複数のプログラムモジュールを含むプロジェクトを保持するステップを含む。プログラムモジュールの各々は、プログラムを含むとともに、プロジェクトに含まれるすべてのプログラムモジュール間で参照可能な変数である第1の変数と、プロジェクトに含まれる複数のプログラムモジュール間で参照可能な変数である第2の変数と、各プログラムモジュールにおいて参照される変数である第3の変数とを定義可能である。プロジェクト作成方法は、さらに、プロジェクトに1または複数のプログラムモジュールのインポートを受け付けるステップと、インポートされるプログラムモジュールに含まれる第1の変数の変数名を維持するステップと、インポートされるプログラムモジュールに含まれる第2の変数の変数名がプロジェクトのいずれかのプログラムモジュールに含まれる第2の変数の変数名と重複する場合には、当該重複する変数名の変更を受け付けるステップとを含む。
 本発明のさらに別の実施の形態によれば、制御装置で実行されるユーザプログラムの開発環境を提供するためのプログラム開発装置を実現するためのプログラムが提供される。プログラムはコンピュータに、1または複数のプログラムモジュールを含むプロジェクトを保持するステップを実行させる。プログラムモジュールの各々は、プログラムを含むとともに、プロジェクトに含まれるすべてのプログラムモジュール間で参照可能な変数である第1の変数と、プロジェクトに含まれる複数のプログラムモジュール間で参照可能な変数である第2の変数と、各プログラムモジュールにおいて参照される変数である第3の変数とを定義可能である。プログラムはコンピュータに、プロジェクトに1または複数のプログラムモジュールのインポートを受け付けるステップと、インポートされるプログラムモジュールに含まれる第1の変数の変数名を維持するステップと、インポートされるプログラムモジュールに含まれる第2の変数の変数名がプロジェクトのいずれかのプログラムモジュールに含まれる第2の変数の変数名と重複する場合には、当該重複する変数名の変更を受け付けるステップとを実行させる。
 本発明によれば、制御装置で実行されるプログラムの設計効率および再利用性を向上させることができる。
本実施の形態に従うユーザプログラムを含むプロジェクトの作成方法の概要を説明するための図である。 本実施の形態に従う制御システムの全体構成例を示す模式図である。 本実施の形態に従う制御システムを構成する制御装置のハードウェア構成例を示すブロック図である。 本実施の形態に従う制御システムを構成するプログラム開発装置のハードウェア構成例を示すブロック図である。 本実施の形態に従うモジュール化プログラミングを説明するための設備の一例を説明するための図である。 図5に示す組立設備を実現するためのモジュール化プログラミングの一例を示す図である。 本実施の形態に従うモジュール化プログラミングにおいて作成されるプロジェクト50のデータ構造の一例を示す模式図である。 図6および図7に示されるモジュール化プログラミングの具体的な設計例を示す模式図である。 本実施の形態に従うモジュール化プログラミングにおけるエクスポートおよびインポートの処理手順を示すフローチャートである。 本実施の形態に従うモジュール化プログラミングにおいてエクスポートされたプログラムモジュールのデータ例を示す図である。 本実施の形態に従うモジュール化プログラミングにおいてエクスポートされたプログラムモジュールのデータ例を示す図である。 図8に示すプロジェクトに対して同一の装置モジュールをインポートする場合の手順例を示す図である。 図8に示すプロジェクトに対して新たな装置モジュールをインポートする場合の手順例を示す図である。 本実施の形態に従うモジュール化プログラミングにおけるインポート適合処理の処理手順を示すフローチャートである。 本実施の形態に従うモジュール化プログラミングにおけるIOユニット定義54の重複有無を示す設定画面の一例を示す図である。 本実施の形態に従うモジュール化プログラミングにおけるインポートされるモジュールの選択および変更を行うための設定画面の一例を示す図である。 本実施の形態に従うモジュール化プログラミングにおけるインポートされるプログラムモジュールが参照する変数名の選択および変更を行うための設定画面の一例を示す図である。 本実施の形態に従うモジュール化プログラミングにおけるHMIと制御装置100との関連付けの操作手順を説明するための設定画面の一例を示す図である。 本実施の形態に従うモジュール化プログラミングにおけるHMIと制御装置100との関連付けの操作手順を説明するための設定画面の別の一例を示す図である。 本実施の形態に従うモジュール化プログラミングにおけるHMIからエクスポートされるクロスレファレンスの一例を示す図である。 本実施の形態に従うプログラム開発装置において提供される命名規則の設定画面の一例を示す模式図である。
 本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
 <A.適用例>
 まず、本発明が適用される場面の一例について説明する。
 図1は、本実施の形態に従うユーザプログラムを含むプロジェクトの作成方法の概要を説明するための図である。図1を参照して、プロジェクト50は、PLCなどの制御装置100で実行されるユーザプログラムを含む。より具体的には、プロジェクト50は、ユーザプログラムとして、プログラム560~563を含む。プログラム560~563は、それぞれプログラムモジュール70~73としてモジュール化されている。
 プログラムモジュール70~73は、プログラム560~563に加えて、共通変数52と、モジュール間I/F60と、ローカル変数58とを要素として含む。
 共通変数52は、プロジェクト50に含まれるすべてのプログラムモジュール間で参照可能な変数(第1の変数に相当)である。モジュール間I/F60は、ローカル変数58は、プロジェクト50に含まれる複数のプログラムモジュール間で参照可能な変数(第2の変数に相当)である。ローカル変数58は、各プログラムモジュールにおいて参照される変数(第3の変数に相当)である。
 プログラムモジュール70~73の各々においては、必要に応じたタイプの変数が定義可能である。
 図1に示す例では、プログラムモジュール70~73においては、共通変数520と、ローカル変数580~583と、グローバル変数600~603とがそれぞれ定義されている。
 図1に示すプロジェクト50に対して、プログラムモジュール71~73をインポート(追加)する場合を想定する。この場合において、インポートされるプログラムモジュール71~73においても、既存のプロジェクト50に定義されている共通変数520が参照されるので、共通変数520の変数名はそのまま維持される。これによって、インポートされたプログラムモジュール71~73を含むすべてのプログラムモジュールが共通変数520を参照できる。
 一方、モジュール間I/F60として定義されるグローバル変数601~603については、同一の変数名がプロジェクト50内に存在すると、適切に参照できないので、変数名が重複しないように、グローバル変数601~603の変数名が適宜変更される。
 このように、インポートされるプログラムモジュールで定義されている変数名を適切に取り扱うことで、プロジェクト50に対してプログラムモジュールをインポート(追加)して、プロジェクト50を順次作成することを容易化できる。
 <B.制御システム構成例>
 次に、本実施の形態に従うプログラム開発装置200によって作成されるユーザプログラムが実行される制御システム1の構成例について説明する。
 図2は、本実施の形態に従う制御システム1の全体構成例を示す模式図である。図2を参照して、制御システム1は、1または複数の制御装置100を含む。
 制御装置100の各々は、制御対象に対する制御を行うための制御演算を実行するとともに、制御対象に含まれる監視対象に生じ得る何らかの異常を検知するための異常検知処理を実行する。制御装置100は、PLC(プログラマブルコントローラ)などの、一種のコンピュータとして具現化されてもよい。
 制御装置100は、フィールドバス2を介してフィールド装置群10と接続されている。さらに、制御装置100同士は、ローカルネットワーク4を介して互いに接続されている。制御装置100には、プログラム開発装置200が接続されることもある。
 フィールドバス2としては、データの到達時間が保証される、定周期通信を行うネットワークを採用することが好ましい。このような定周期通信を行うネットワークとしては、EtherCAT(登録商標)などが知られている。
 制御装置100は、フィールド装置群10にて取得され、制御装置100へ転送されるデータ(以下、「入力値」とも称す。)を収集する。フィールド装置群10は、制御対象または制御に関連する製造装置や生産ラインなど(以下、「フィールド」とも総称する。)の状態値を入力値として収集する装置を含む。
 本明細書において、「状態値」は、任意の制御対象(含む:監視対象)にて観測できる値を包含する用語であり、例えば、任意のセンサにより測定できる物理値や、リレーやスイッチなどのON/OFF状態、PLCがサーボドライバに与える位置、速度、トルクなどの指令値、PLCが演算に用いる変数値などを含み得る。
 このような状態値を収集する装置としては、入力リレーや各種センサなどが想定される。フィールド装置群10は、さらに、制御装置100にて生成される指令値(以下、「出力値」とも称す。)に基づいて、フィールドに対して何らかの作用を与える装置を含む。このようなフィールドに対して何らかの作用を与える装置としては、出力リレー、コンタクタ、サーボドライバおよびサーボモータ、その他任意のアクチュエータが想定される。これらのフィールド装置群10は、フィールドバス2を介して、制御装置100との間で、入力値および出力値を含むデータを遣り取りする。
 図2に示す構成例においては、フィールド装置群10は、リモートIO(Input/Output)装置12と、リレー群14と、画像センサ18およびカメラ20と、サーボドライバ22およびサーボモータ24とを含む。
 リモートIO装置12は、フィールドバス2を介して通信を行う通信部と、入力値の収集および出力値の出力を行うための入出力部(以下、「IOユニット」とも称す。)とを含む。このようなIOユニットを介して、制御装置100とフィールドとの間で入力値および出力値が遣り取りされる。図2には、リレー群14を介して、入力値および出力値として、デジタル信号が遣り取りされる例が示されている。
 IOユニットは、フィールドバスに直接接続されるようにしてもよい。図2には、フィールドバス2にIOユニット16が直接接続されている例を示す。
 画像センサ18は、カメラ20によって撮像された画像データに対して、パターンマッチングなどの画像計測処理を行って、その処理結果を制御装置100へ送信する。
 サーボドライバ22は、制御装置100からの出力値(例えば、位置指令など)に従って、サーボモータ24を駆動する。
 プログラム開発装置200は、制御装置100で実行されるユーザプログラムの開発環境を提供する。ユーザは、プログラム開発装置200を操作して、制御装置100で実行されるユーザプログラムを作成する。具体的には、プログラム開発装置200は、制御装置100で実行されるユーザプログラムの開発環境(プログラム作成編集ツール、パーサ、コンパイラなど)、制御装置100および制御装置100に接続される各種デバイスの設定パラメータ(コンフィギュレーション)を決定するための機能、作成したユーザプログラムを制御装置100へ送信する機能、制御装置100上で実行されるユーザプログラムなどをオンラインで修正・変更する機能、などを提供する。
 <C.ハードウェア構成例>
 次に、本実施の形態に従う制御システム1を構成する制御装置100およびプログラム開発装置200のハードウェア構成例について説明する。
 (c1:制御装置100のハードウェア構成例)
 図3は、本実施の形態に従う制御システム1を構成する制御装置100のハードウェア構成例を示すブロック図である。図3を参照して、制御装置100は、CPU(Central Processing Unit)やMPU(Micro-Processing Unit)などのプロセッサ102と、チップセット104と、主記憶装置106と、二次記憶装置108と、ローカルネットワークコントローラ110と、USB(Universal Serial Bus)コントローラ112と、メモリカードインターフェイス114と、フィールドバスコントローラ120と、内部バスコントローラ122と、IOユニット124-1,124-2,…とを含む。
 プロセッサ102は、二次記憶装置108に格納された各種プログラムを読み出して、主記憶装置106に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。チップセット104は、プロセッサ102とともに、各コンポーネントを制御することで、制御装置100全体としての処理を実現する。
 二次記憶装置108には、図示しないシステムプログラムに加えて、プログラム開発装置200において作成された実行形式のユーザプログラム126(制御プログラムに相当)が格納される。
 ローカルネットワークコントローラ110は、ローカルネットワーク4を介した他の装置との間のデータの遣り取りを制御する。USBコントローラ112は、USB接続を介してプログラム開発装置200との間のデータの遣り取りを制御する。
 メモリカードインターフェイス114は、メモリカード116を着脱可能に構成されており、メモリカード116に対してデータを書き込み、メモリカード116から各種データ(ユーザプログラムやトレースデータなど)を読み出すことが可能になっている。
 フィールドバスコントローラ120は、フィールドバス2を介した他の装置との間のデータの遣り取りを制御する。内部バスコントローラ122は、制御装置100に搭載されるIOユニット124-1,124-2,…との間でデータを遣り取りするインターフェイスである。
 図3には、プロセッサ102がプログラムコードを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。あるいは、制御装置100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。
 (c2:プログラム開発装置200のハードウェア構成例)
 図4は、本実施の形態に従う制御システム1を構成するプログラム開発装置200のハードウェア構成例を示すブロック図である。プログラム開発装置200は、一例として、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコン)を用いてプログラムを実行することで実現されてもよい。
 図4を参照して、プログラム開発装置200は、CPUやMPUなどのプロセッサ202と、ドライブ204と、主記憶装置206と、二次記憶装置208と、USBコントローラ212と、ローカルネットワークコントローラ214と、入力部216と、表示部218とを含む。これらのコンポーネントはバス220を介して接続される。
 プロセッサ202は、二次記憶装置208に格納された各種プログラムを読み出して、主記憶装置206に展開して実行することで、後述するような各種処理を実現する。
 二次記憶装置208は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などで構成される。二次記憶装置208には、後述するような各種機能を実現するための開発ツール250が格納される。二次記憶装置208には、OSおよび他の必要なシステムプログラムが格納されていてもよい。二次記憶装置208は、1または複数のプログラムモジュールを含むプロジェクト50を保持する。プロジェクト50およびプロジェクト50に含まれるプログラムモジュールの詳細については、後述する。
 ドライブ204は、記憶媒体205に対してデータを書き込み、記憶媒体205から各種データ(ユーザプログラムおよび各種データ)を読み出すことが可能になっている。記憶媒体205は、例えばコンピュータ読取可能なプログラムを非一過的に格納する記憶媒体205(例えば、DVD(Digital Versatile Disc)などの光学記憶媒体)を含む。
 プログラム開発装置200で実行される開発ツール250は、コンピュータ読取可能な記憶媒体205を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に従うプログラム開発装置200が提供する機能は、OSが提供するモジュールの一部を使用する形で実現される場合もある。
 USBコントローラ212は、USB接続を介して制御装置100との間のデータの遣り取りを制御する。ローカルネットワークコントローラ214は、任意ネットワークを介した他の装置との間のデータの遣り取りを制御する。
 入力部216は、キーボードやマウスなどで構成され、ユーザ操作を受け付ける。表示部218は、ディスプレイ、各種インジケータなどで構成され、プロセッサ202からの処理結果などを出力する。プログラム開発装置200には、プリンタが接続されてもよい。
 図4には、プロセッサ202がプログラムコードを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。
 <D.モジュール化プログラミング>
 次に、本実施の形態に従うモジュール化プログラミングについて概略する。
 (d1:プロジェクト構成)
 図5は、本実施の形態に従うモジュール化プログラミングを説明するための設備の一例を説明するための図である。図5には、ワーク43にネジ42を組み付ける組立設備40の一例を示す。組立設備40は、組付工程47および搬送工程48を含む。
 組付工程47においては、ロボット41がネジ42をピック(例えば、吸着)し、ワーク43まで移動した後に、ワーク43のネジ穴44にネジ42を組み付ける。
 搬送工程48においては、ロボット45がネジ42を組み付けた後のワーク43をピック(例えば、把持)し、所定位置まで移動した後に、ピックしたワーク43をプレイスする。このように、組立設備40は、それぞれロボット41および45を制御する組付工程47および搬送工程48を含む。
 図6は、図5に示す組立設備40を実現するためのモジュール化プログラミングの一例を示す図である。図6を参照して、モジュール化プログラミングにより作成されたプロジェクト50は、組立設備40の全体を制御するための組立設備モジュール(Machine)80を含む。組立設備モジュール80は、組付工程47および搬送工程48にそれぞれ対応する組立モジュール(Screw)81および搬送モジュール(PnP)82を呼び出す。組立モジュール81および搬送モジュール82は、それぞれ対応する装置の制御に向けられており、装置モジュールとも称される。
 また、上述したようなモジュール間の呼び出し関係は「親子関係」などとも称される。親モジュールから呼び出される子モジュールは、「POU(Program Organization Units)」と称される。すなわち、親モジュールを有している子モジュールは、いずれもPOUとなり得る。
 さらに、組立モジュール81は、組付工程47におけるロボット41および関連設備の挙動を制御するためのネジピックモジュール(PickScrew)83およびネジ取付モジュール(Screwing)84を呼び出す。
 同様に、搬送モジュール82は、搬送工程48におけるロボット45および関連設備の挙動を制御するためのピックモジュール(Pick)85およびプレイスモジュール(Place)86を呼び出す。
 さらに、工程の最初の処理を担当するネジピックモジュール83と、工程の最後の処理を担当するプレイスモジュール86とは、互いに連携して組立設備40全体の処理サイクルを制御する。
 本実施の形態に従うモジュール化プログラミングにおいては、設備単位、設備に含まれる装置単位、あるいは、装置に含まれる工程単位で部品化して、プログラムの設計効率および再利用性を高めることを目的とする。
 図7は、本実施の形態に従うモジュール化プログラミングにおいて作成されるプロジェクト50のデータ構造の一例を示す模式図である。図7を参照して、プロジェクト50は、1または複数のプログラムモジュール70~76を含む。各プログラムモジュールは、要素として、共通変数52と、IOユニット定義54と、プログラム56およびローカル変数58と、モジュール間I/F60と、HMI(Human Machine Interface)62とを含む。すなわち、各プログラムモジュールは、プログラムだけではなく、プログラムの実行に必要な要素をパッケージ化したものである。
 例えば、図7に示されるプログラムモジュール70~76は、組立設備モジュール80、組立モジュール81、搬送モジュール82、ネジピックモジュール83、ネジ取付モジュール84、ピックモジュール85およびプレイスモジュール86にそれぞれ対応する。
 共通変数52は、プロジェクト50に含まれるすべてのプログラムモジュール間で参照可能な変数が定義される。図7に示す例では、共通変数52として、共通変数520が定義されている。共通変数520は、プロジェクト50に定義される変数である。例えば、共通変数520としては、非常停止を示す変数や異常を示す変数などが含まれる。以下では、非常停止を示す「Estop」といった各工程において共通に参照される変数を共通変数520とする例を示す。但し、これに限らず、「Battery Low」(バッテリー低下)、「Warning」(警告)、「EmergencyStop」(緊急停止)、「CycleTimeOver」(サイクルタイムオーバ異常)などを共通変数520としてもよい。
 IOユニット定義54には、各プログラムモジュールと関連付けられるIOユニットが定義される。すなわち、各プログラムモジュールは、対応付けられるIOユニットの定義(IOユニット定義54)を含むことが可能である。図7に示す例では、プログラムモジュール71~76に対して、IOユニット定義54として、接続先のIOユニットに割り当てられているネットワーク上のアドレスを示すノードアドレス541~546がそれぞれ定義されている。
 プログラム56は、各プログラムモジュールの主要部分であるプログラムを意味する。図7に示す例では、プログラムモジュール70~76に対して、プログラム560~566がそれぞれ作成されている。
 ローカル変数58は、対応するプログラム56において参照される変数(すなわち、対応するプログラム56以外のプログラム56からの参照は想定されていない変数)が定義される。図7に示す例では、プログラムモジュール70~76に対して、ローカル変数580~586がそれぞれ定義されている。ローカル変数は、対応するIOユニットとのデータのインターフェイス変数としても利用される。
 モジュール間I/F60は、プロジェクト50に含まれる複数のプログラムモジュール間で参照可能な変数であるインターフェイス変数が定義される。モジュール間I/F60に、すべてのプログラムモジュール間で参照可能な変数を定義してもよいが、このような変数は共通変数52として定義されることが好ましいので、基本的には、プロジェクト50に含まれる一部のプログラムモジュール間でのみ参照される変数が定義される。図7に示す例では、プログラムモジュール70~76に対して、モジュール間I/F60として、グローバル変数600~606がそれぞれ定義されている。図5に示す組立設備40の例においては、グローバル変数600~606の間では、図7に示すような参照関係(依存関係)が存在し得る。
 HMI62は、対応するプログラムの処理結果やプログラムに対するユーザ操作を受け付けるための画面アプリケーションを意味する。図7に示す例では、プログラムモジュール70,71,74に対して、ページ620,621,625がそれぞれ作成されている。
 図8は、図6および図7に示されるモジュール化プログラミングの具体的な設計例を示す模式図である。図8を参照して、プロジェクト50において、プログラムモジュール70~76には、共通変数520、モジュール間I/F60としてのグローバル変数600~606、ローカル変数583~586がそれぞれ定義されている。
 (d2:エクスポートおよびインポート)
 本実施の形態に従うモジュール化プログラミングにおいては、プログラムモジュールの単位で再利用が可能になっている。このような再利用にあたっては、対象のプログラムモジュールの「エクスポート/インポート」あるいは「コピー&ペースト」を行うことになる。すなわち、プログラム開発装置200は、プロジェクトから1または複数のプログラムモジュールをエクスポートする抽出機能を有しているとともに、プロジェクトに1または複数のプログラムモジュールをインポートする更新機能を有している。これらの機能は、プログラム開発装置200のプロセッサ202が開発ツール250を実行することで実現されてもよい。
 図9は、本実施の形態に従うモジュール化プログラミングにおけるエクスポートおよびインポートの処理手順を示すフローチャートである。図9に示す各ステップは、典型的には、プログラム開発装置200のプロセッサ202が開発ツール250を実行することで実現される。
 図9(a)に示すプログラムモジュールのエクスポート処理において、ユーザは、対象のエクスポートの対象となる1または複数のプログラムモジュールを選択する(ステップS10)。プログラム開発装置200は、エクスポートの対象として選択された1または複数のプログラムモジュールの依存関係を可視化してユーザへ提示する(ステップS12)。例えば、図6に示すようなプログラムモジュールの依存関係などが提示される。
 最終的に、プログラム開発装置200は、ユーザの操作に応じて、エクスポートの対象として選択されている1または複数のプログラムモジュールに含まれる情報をエクスポートする(ステップS14)。エクスポートされる情報は、プログラム(ユーザプログラム)、ファンクション、ファンクションブロック、変数定義などを含む。そして、処理は終了する。
 図9(b)に示すプログラムモジュールのインポート処理において、ユーザは、対象の1または複数のプログラムモジュールをインポートする(ステップS20)。プログラム開発装置200は、インポートされた1または複数のプログラムモジュールのIOユニット定義54に基づいて、インポート可能であるか否かを判断する(ステップS22)。
 インポート不可能と判断されると(ステップS22においてNO)、プログラム開発装置200は、インポート不可能のメッセージをユーザに通知する(ステップS24)。そして、処理は終了する。
 インポート可能と判断されると(ステップS22においてYES)、プログラム開発装置200は、インポート適合処理を実行して、対象の1または複数のプログラムモジュールの内容を変更した上で(ステップS26)、インポート先のプロジェクトに組み入れる(ステップS28)。そして、処理は終了する。
 図10および図11は、本実施の形態に従うモジュール化プログラミングにおいてエクスポートされたプログラムモジュールのデータ例を示す図である。図10を参照して、エクスポートされたプロジェクトデータ160は、モジュール名162および各データを特定するための識別子164に対応付けて、要素データ166を含む。さらに、モジュール間で共有されるか否かを示す識別子168も関連付けられている。
 図11には、エクスポートされたプロジェクトデータ160に含まれるグローバル変数の定義の一部を示す。グローバル変数の定義には、変数名170および所属するモジュール名172の定義を含む。
 <E.インポート>
 次に、本実施の形態に従うモジュール化プログラミングのインポートおよびインポート適合処理について説明する。
 (e1:プログラムモジュール単位での追加(インポート))
 図7に示すように、本実施の形態に従うモジュール化プログラミングにおいては、各プログラムモジュールは、プログラムと、1または複数のIOユニット(デバイス)の構成情報(例えば、IOユニット定義54に含まれるノードアドレス)とを横断的に有している。
 プログラムモジュールをエクスポートする場合には、IOユニットの構成情報(例えば、デバイス種別、モデル、バージョン情報など)が保持される。そして、プログラムモジュールをインポートする場合には、インポート先のプロジェクトに定義されているIOユニットの構成情報を参照することで、いずれのIOユニットと対応させるのかをユーザが決定してもよい(後述の図15など参照)。
 (1)制御装置100の場合
 インポートされたモジュール名の重複有無が判断されて、重複がある場合には、モジュール名が変更される。また、インポートされたIOユニット定義54の重複有無の判断が判断されて、重複がある場合には、IOユニット定義54が設定される。
 データ型、軸、軸グループなどについては、そのままエクスポートされることになるが、グローバル変数名の重複がある場合は、グローバル変数名が変更される。
 さらに、HMIのグローバル変数に対する参照関係も適宜更新される。
 (2)HMIの場合
 HMIについては、デバイス種別、ページ、リソース、イベント、グローバルサブルーチン、グローバル変数などがそのままエクスポートされる。なお、参照先の制御装置100の名称(コントローラ名)は、適宜更新される。
 以下、図8に示すプロジェクト50に対して、組立設備モジュール80を親モジュールとして、装置モジュールをインポートする場合について例示する。
 (e2:装置モジュールのインポートその1)
 図12は、図8に示すプロジェクト50に対して同一の装置モジュールをインポートする場合の手順例を示す図である。より具体的には、図12には、組立モジュール81ならびに組立モジュール81から呼び出されるネジピックモジュール83およびネジ取付モジュール84と同一のモジュール群(組立モジュール81A、ネジピックモジュール83Aおよびネジ取付モジュール84A)がインポートされた例を示す。
 このように、呼び出し関係にある複数のプログラムモジュールの単位でインポートされてもよい。
 このようなモジュール群のインポートにあたっては、以下のような(1)~(4)の処理が実行される。
 (1)インポートされるIOユニット定義54の重複有無の判断
 IOユニット定義54は、複数のプログラムモジュールにおいて重複して参照できないので、インポートされるモジュールのIOユニット定義54の重複有無が判断される。具体的には、IOユニット定義54内のノードアドレスの重複有無が判断される。
 この場合には、インポートされるモジュールが利用するIOユニットのノードアドレスに変更する必要がある。すなわち、IOユニット定義54に含まれるノードアドレスが正しい値に設定される(プログラムモジュール73Aのローカル変数583Aおよびプログラムモジュール74Aの584A参照)。
 (2)インポートされる装置モジュール名の重複有無の判断
 インポートされる装置モジュールのモジュール名が既存のモジュール名と重複すると、設備モジュール(組立設備モジュール80)から適切に参照できないので、インポートされる装置モジュール(組立モジュール81A)のモジュール名を変更する必要がある。モジュール名の変更は、ユーザが任意に入力するようにしてもよいし、予め定められた命名規則に従って行ってもよい。
 図12に示す例では、組立モジュール81Aのモジュール名は、組立モジュール81のモジュール名「Screw」から「Screw2」へ変更されている。このモジュール名の変更に併せて、変数の参照元として定義されているモジュール名も変更される(プログラムモジュール71A,73A,74Aのモジュール名の欄)。
 (3)インポートされる子モジュール名の重複有無の判断
 インポートされる子モジュール名(呼び出されるモジュール)が既存のモジュール名と重複すると、モジュール間で適切に参照できないので、インポートされる子モジュール(ネジピックモジュール83Aおよびネジ取付モジュール84A)のモジュール名を変更する必要がある。モジュール名の変更は、ユーザが任意に入力するようにしてもよいし、予め定められた命名規則に従って行ってもよい。
 図12に示す例では、ネジピックモジュール83Aのモジュール名は、ネジピックモジュール83のモジュール名「PickScrew」から「PickScrew2」へ変更されている。同様に、ネジ取付モジュール84Aのモジュール名は、ネジ取付モジュール84のモジュール名「Screwing」から「Screwing2」へ変更されている。
 (4)プログラムモジュールが参照する変数名の重複有無の判断
 共通変数52に定義される共通変数については、複数のプログラムモジュール間で共通に参照されるので、変更は不要である。このように、共通変数は、既存のプロジェクト50に定義されているものがそのまま利用される(すなわち、インポートされない)。
 一方、モジュール間I/F60に定義されるグローバル変数(インターフェイス変数)については、プログラムモジュール間で参照されるので、プロジェクト内で重複しないように調整する必要がある。プロジェクト内で重複がある場合には、変数名が変更される。変数名の変更は、ユーザが任意に入力するようにしてもよいし、予め定められた命名規則に従って行ってもよい。
 図12に示す例では、プログラムモジュール71Aのグローバル変数601Aにおいて、組立設備モジュール80と組立モジュール81Aとの間で参照されるグローバル変数の変数名が「IF_Machine_Screw」から「IF_Machine_Screw2」に変更されている。同様に、プログラムモジュール73Aのグローバル変数603Aにおいて、ネジピックモジュール83Aとプレイスモジュール86との間で参照されるグローバル変数の変数名が「IF_PickScrew_Place」から「IF_PickScrew_Place2」に変更されている。
 以上のような4つの処理を適用することで、モジュール化されたプロジェクトの一部を容易に再利用できる。なお、インポートされるプログラムモジュールにおいて参照される共通変数520については、そのまま維持される(すなわち、定義などが変更されない)。
 (e3:モジュールのインポートその2)
 図13は、図8に示すプロジェクト50に対して新たな装置モジュールをインポートする場合の手順例を示す図である。より具体的には、図13には、検査設備の全体を制御するための検査モジュール(Tester)87が新たにインポートされた例を示す。
 検査モジュール87は、検査モジュール87から呼び出される装置モジュールとして、処理検査モジュール(ProcessTest)88を含む。処理検査モジュール88は、撮影工程を制御する撮影モジュール(Camera)891および撮影した画像を評価する評価モジュール(Validate)892を呼び出す。
 このように、呼び出し関係にある複数のプログラムモジュールの単位でインポートされてもよい。
 このようなモジュール群のインポートにあたっては、上述のモジュールのインポートと同様に、以下のような(1)~(4)の処理が実行される。
 (1)インポートされるIOユニット定義54の重複有無の判断
 インポートされるモジュールのIOユニット定義54の重複有無が判断される。図13に示す例では、IOユニット定義54の重複はないので、当初のIOユニット定義54がそのままインポートされる。
 (2)インポートされる装置モジュール名の重複有無の判断
 新たな装置モジュールをインポートする場合にも既存の装置モジュールのモジュール名との重複が判断されるが、図13に示す例では、モジュール名の重複はないので、当初の装置モジュールのままインポートされる。
 検査モジュール87に対応するプログラムモジュール77は、共通変数520およびグローバル変数607を含む。
 (3)インポートされる子モジュール名の重複有無の判断
 インポートされる子モジュール(処理検査モジュール88、撮影モジュール891および評価モジュール892)のモジュール名が既存のモジュール名と重複するか否かが判断される。図13に示す例では、モジュール名の重複はないので、当初のモジュール名のままインポートされる。
 図13に示す例では、処理検査モジュール88に対応するプログラムモジュール78は、共通変数520およびグローバル変数608を含む。撮影モジュール891に対応するプログラムモジュール791は、共通変数520、グローバル変数6091およびローカル変数5891を含む。評価モジュール892に対応するプログラムモジュール792は、共通変数520、グローバル変数6092およびローカル変数5892を含む。
 (4)プログラムモジュールが参照する変数名の重複有無の判断
 共通変数52に定義される共通変数については、複数のプログラムモジュール間で共通に参照されるので、変更は不要である。
 また、モジュール間I/F60に定義されるグローバル変数(インターフェイス変数)については、プロジェクト内で重複しないように、必要に応じて変数名が変更される。変数名の変更は、ユーザが任意に入力するようにしてもよいし、予め定められた命名規則に従って行ってもよい。
 なお、ローカル変数については、対応するプログラム内でのみ使用されるので、他のモジュールとの重複を考慮する必要はない。また、インポートされるプログラムモジュールにおいて参照される共通変数520については、そのまま維持される(すなわち、定義などが変更されない)。
 (e4:インポート適合処理の処理手順)
 次に、インポート適合処理の処理手順について説明する。
 図14は、本実施の形態に従うモジュール化プログラミングにおけるインポート適合処理の処理手順を示すフローチャートである。図14に示す処理手順は、図9に示す処理手順のステップS26の詳細な内容に相当する。図14に示す各ステップは、典型的には、プログラム開発装置200のプロセッサ202が開発ツール250を実行することで実現される。
 図14を参照して、プログラム開発装置200は、インポートされるIOユニット定義54の設定内容が既存のIOユニット定義54の設定内容と重複しているか否かを判断する(ステップS100)。
 インポートされるIOユニット定義54の設定内容が既存のIOユニット定義54の設定内容と重複している場合(ステップS100においてYESの場合)には、プログラム開発装置200は、ユーザに対して、インポートされるIOユニット定義54の変更を促す(ステップS102)。
 図15は、本実施の形態に従うモジュール化プログラミングにおけるIOユニット定義54の重複有無を示す設定画面の一例を示す図である。図15に示す設定画面350においては、インポートされるプログラムモジュールに含まれるIOユニット定義54の設定内容352と、インポート先であるプロジェクトのIOユニット定義54の設定内容354とが比較され、その比較結果356が表示される。ユーザは、比較結果356を参照して、IOユニット定義54を適宜変更することになる。
 このように、プログラム開発装置200は、インポートされるプログラムモジュールに含まれるIOユニット定義54がプロジェクト50のいずれかのプログラムモジュールに含まれるIOユニット定義54と重複する場合に、当該重複するIOユニット定義54の変更を受け付ける。そして、プログラム開発装置200は、インポートされるプログラムモジュールに含まれるIOユニット定義54が重複する場合に、当該重複するIOユニット定義54をユーザに提示する(図15参照)。
 再度図14を参照して、プログラム開発装置200は、ユーザによりIOユニット定義54が変更されると、変更されたIOユニット定義54に応じて、IOユニットと変数との対応関係を更新する(ステップS104)。
 インポートされるIOユニット定義54の設定内容が既存のIOユニット定義54の設定内容と重複していない場合(ステップS100においてNOの場合)には、ステップS102およびS104の処理はスキップされる。
 続いて、プログラム開発装置200は、インポートされる装置モジュールのモジュール名が既存のモジュール名と重複しているか否かを判断する(ステップS106)。
 インポートされる装置モジュールのモジュール名が既存のモジュール名と重複している場合(ステップS106においてYESの場合)には、プログラム開発装置200は、ユーザに対して、インポートされる装置モジュールのモジュール名の変更を促す(ステップS108)。
 インポートされる装置モジュールのモジュール名が既存のモジュール名と重複していない場合(ステップS106においてNOの場合)には、ステップS108の処理はスキップされる。
 続いて、プログラム開発装置200は、インポートされる子モジュールのモジュール名が既存のモジュール名と重複しているか否かを判断する(ステップS110)。
 インポートされる子モジュールのモジュール名が既存のモジュール名と重複している場合(ステップS110においてYESの場合)には、プログラム開発装置200は、ユーザに対して、インポートされる子モジュールのモジュール名の変更を促す(ステップS112)。
 図16は、本実施の形態に従うモジュール化プログラミングにおけるインポートされるモジュールの選択および変更を行うための設定画面の一例を示す図である。図16に示す設定画面360においては、インポートされるモジュールのうち、既存のプロジェクトに含まれるモジュールのモジュール名と重複するものが強調表示される。例えば、モジュール名が重複するモジュールについては、他のモジュールとは異なる態様で表示される。
 ユーザは、インポート予定のプログラムモジュールのうち、モジュール名を変更しなければならないモジュールを容易に識別でき、必要に応じて、モジュール名を変更できる。なお、プログラム開発装置200は、命名規則に従ってモジュール名を変更することも可能である(詳細については後述する)。
 このように、プログラム開発装置200は、インポートされるプログラムモジュールに含まれるプログラムの名称がプロジェクト50のいずれかのプログラムモジュールに含まれるプログラムの名称と重複する場合には、当該重複するプログラムの名称の変更を受け付ける。そして、プログラム開発装置200は、インポートされるプログラムモジュールに含まれるプログラムの名称が重複する場合に、当該重複するプログラムの名称をユーザに提示する(図16参照)。
 再度図14を参照して、インポートされる子モジュールのモジュール名が既存のモジュール名と重複していない場合(ステップS110においてNOの場合)には、ステップS112の処理はスキップされる。
 続いて、プログラム開発装置200は、インポートされるプログラムモジュールが参照する変数名が既存の変数名と重複しているか否かを判断する(ステップS114)。このとき、インポートされるプログラムモジュールにおいて参照される共通変数520については、そのまま維持される(すなわち、定義などが変更されない)。基本的には、モジュール間I/F60として定義されるグローバル変数についてのみ、変数名の重複が判断される。
 インポートされるプログラムモジュールが参照する変数名が既存の変数名と重複している場合(ステップS114においてYESの場合)には、プログラム開発装置200は、ユーザに対して、インポートされるプログラムモジュールが参照する変数名の変更を促す(ステップS116)。
 図17は、本実施の形態に従うモジュール化プログラミングにおけるインポートされるプログラムモジュールが参照する変数名の選択および変更を行うための設定画面の一例を示す図である。図17に示す設定画面370において、ユーザは、インポート予定のプログラムモジュールが参照する変数名の選択および変更を行う。なお、プログラム開発装置200は、命名規則に従って変数名を変更することも可能である(詳細については後述する)。
 このように、プログラム開発装置200は、インポートされるプログラムモジュールに含まれるモジュール間I/F60として定義されるグローバル変数の変数名が既存のプロジェクトのいずれかのプログラムモジュールに含まれるグローバル変数の変数名と重複する場合には、当該重複する変数名の変更を受け付ける。そして、プログラム開発装置200は、インポートされるプログラムモジュールに含まれるグローバル変数の変数名が重複する場合に、当該重複するグローバル変数をユーザに提示する(図17参照)。
 再度図14を参照して、インポートされるプログラムモジュールが参照する変数名が既存の変数名と重複していない場合(ステップS114においてNOの場合)には、ステップS116の処理はスキップされる。
 続いて、プログラム開発装置200は、ユーザによるインポートされる予定のHMIの選択を受け付け(ステップS118)、ユーザに対して、インポートされたHMIに係る設定の確認および変更を促す(ステップS120)。
 最終的に、プログラム開発装置200は、インポートされたモジュールを含む新たなプロジェクトを保存し(ステップS122)、処理を終了する。
 <F.HMIのインポート/再利用>
 次に、プログラムモジュールに含まれるHMI62をインポートまたは再利用する場合の処理について説明する。HMIは、対象となる1または複数の制御装置100と接続されて動作するため、HMIの情報を再利用する場合には、接続先の制御装置100などを適宜設定および変更する必要がある。以下、このようなHMIをインポートする場合の操作手順などについて説明する。
 図18は、本実施の形態に従うモジュール化プログラミングにおけるHMIと制御装置100との関連付けの操作手順を説明するための設定画面の一例を示す図である。図18を参照して、設定画面320は、HMIが何らかの処理を実行するための条件であるイベントを設定するための画面である。
 ユーザは、設定画面320において、プルダウン322を操作して、プロジェクトに含まれる制御装置100のうち接続先となる制御装置100を選択する。この選択操作によって、制御装置100とHMIとの間に関連付けが定義される。
 図19は、本実施の形態に従うモジュール化プログラミングにおけるHMIと制御装置100との関連付けの操作手順を説明するための設定画面の別の一例を示す図である。図19を参照して、設定画面324は、HMIで実行される処理および関連付けられる変数などを設定するための画面である。
 ユーザは、設定画面324において、接続先の制御装置100との間で遣り取りされる変数(インターフェイス変数)を設定あるは変更する。図19に示す例では、制御装置100のインターフェイス変数である「new_Controller_0_gvar1」をHMIで実行される処理に関連付ける。
 図20は、本実施の形態に従うモジュール化プログラミングにおけるHMIからエクスポートされるクロスレファレンスの一例を示す図である。図20を参照して、プログラム開発装置200は、接続先の制御装置100とのインターフェイスに関連する変数を参照している部分を抽出したクロスレファレンス330をエクスポートする。図20に示すようなクロスレファレンス330をエクスポートすることで、再利用する際に、変更すべき変数名などを容易に特定できる。
 <G:命名規則>
 上述したように、モジュール名または変数名に重複がある場合には、ユーザが任意に入力する別の名前に変更されてもよいし、予め定められた命名規則に従って自動的に変更されるようにしてもよい。以下、命名規則の一例について説明する。
 このような命名規則の一例としては、予め定められた規則で変化する識別子(例えば、インクリメントまたはデクリメントする数値やアルファベットなど)を付加するようにしてもよい。具体的には、モジュール名を「Screw」から「Screw2」に変更し、さらに同一の「Screw」というモジュール名をもつモジュールがインポートされると、「Screw」から「Screw3」に変更するようにしてもよい。
 あるいは、静的または動的に決定される文字列を付加するようにしてもよい。例えば、変数名に、対応するプログラムモジュールのモジュール名を付加するようにしてもよい。対応するプログラムモジュールのモジュール名を変数に付加することで、モジュール名がユニークである限り、変数名の重複は生じない。
 また、識別子や文字列を対象文字列の先頭に(すなわち、接頭語として)付加してもよいし、識別子や文字列を対象文字列の直後に(すなわち、接尾語として)付加してもよい。
 図21は、本実施の形態に従うプログラム開発装置200において提供される命名規則の設定画面の一例を示す模式図である。図21(a)を参照して、ユーザは、モジュール名や変数名に重複が生じた場合に、設定画面300のプルダウン302を操作して、何らかの付加情報を「接頭語」あるいは「接尾語」として付加するように設定できる。なお、ユーザは、何らの付加情報も付加しない(「なし」の設定)を選択することもできる。
 図21(b)に示すように、ユーザは、設定画面310のプルダウン312を操作して、何らかの付加情報を「接頭語」あるいは「接尾語」として付加するように設定できるとともに、付加情報として文字列を入力ボックス314に指定することもできる。
 図21(c)に示すように、ユーザは、設定画面310のプルダウン312を操作して、何らかの付加情報を「接頭語」あるいは「接尾語」として付加するように設定できるとともに、「@モジュール名@」という特殊文字列を入力ボックス314に指定することもできる。この場合には、対応するプログラムモジュールのモジュール名が自動的に付加されるようになる。「@モジュール名@」に代えて、予め定められた文字列を指定することもできる。
 なお、説明の便宜上、モジュール名および変数名の区別をすることなく、共通の命名規則を適用する例を示したが、モジュール名および変数名の別に命名規則を適用するようにしてもよい。
 上述したように、プログラム開発装置200は、インポートされるプログラムモジュールに含まれるプログラムの名称が既存のプロジェクトに含まれるプログラムの名称と重複する場合には、当該重複するプログラムの名称を予め定められた命名規則に従って変更するようにしてもよい。
 また、プログラム開発装置200は、インポートされるプログラムモジュールに含まれるモジュール間I/F60として定義されるグローバル変数の変数名が既存のプロジェクトのいずれかのプログラムモジュールに含まれるグローバル変数の変数名と重複する場合には、当該重複する変数名を予め定められた命名規則に従って変更するようにしてもよい。
 このような命名規則に沿ったモジュール名または変数名の自動的な変更を採用することで、モジュールを再利用する際に、ユーザの手間を低減できる。この結果、プログラムの設計効率および再利用性を向上できる。
 <H.付記>
 上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
 制御装置(100)で実行されるユーザプログラム(50)の開発環境を提供するためのプログラム開発装置(200)であって、
 1または複数のプログラムモジュール(70~76)を含むプロジェクトを保持する記憶部(208)と、
 前記プロジェクトに1または複数のプログラムモジュールをインポートする更新手段(202;250)とを備え、
 前記プログラムモジュールの各々は、プログラムを含むとともに、前記プロジェクトに含まれるすべてのプログラムモジュール間で参照可能な変数である第1の変数(52;520)と、前記プロジェクトに含まれる複数のプログラムモジュール間で参照可能な変数である第2の変数(60;600~606)と、各プログラムモジュールにおいて参照される変数である第3の変数(58;580~586)とを定義可能であり、
 前記更新手段は、前記インポートされるプログラムモジュールに含まれる第1の変数の変数名を維持するとともに、前記インポートされるプログラムモジュールに含まれる第2の変数の変数名が前記プロジェクトのいずれかのプログラムモジュールに含まれる第2の変数の変数名と重複する場合には、当該重複する変数名の変更を受け付けるように構成されている(S114,S116)、プログラム開発装置。
[構成2]
 前記更新手段は、前記インポートされるプログラムモジュールに含まれる第2の変数の変数名が重複する場合に、当該重複する第2の変数をユーザに提示する(S116)、構成1に記載のプログラム開発装置。
[構成3]
 前記更新手段は、前記インポートされるプログラムモジュールに含まれる第2の変数の変数名が重複する場合に、当該重複する第2の変数を予め定められた命名規則に従って変更する、構成1または2に記載のプログラム開発装置。
[構成4]
 前記更新手段は、前記インポートされるプログラムモジュールに含まれるプログラムの名称が前記プロジェクトのいずれかのプログラムモジュールに含まれるプログラムの名称と重複する場合には、当該重複するプログラムの名称の変更を受け付けるようにさらに構成されている(S110,S112)、構成1~3のいずれか1項に記載のプログラム開発装置。
[構成5]
 前記更新手段は、前記インポートされるプログラムモジュールに含まれるプログラムの名称が重複する場合に、当該重複するプログラムの名称をユーザに提示する(S112)、構成4に記載のプログラム開発装置。
[構成6]
 前記更新手段は、前記インポートされるプログラムモジュールに含まれるプログラムの名称が重複する場合に、当該重複するプログラムの名称を予め定められた命名規則に従って変更する、構成4または5に記載のプログラム開発装置。
[構成7]
 呼び出し関係にある複数のプログラムモジュールの単位でインポートされる、構成1~6のいずれか1項に記載のプログラム開発装置。
[構成8]
 前記プログラムモジュールの各々は、対応付けられる入出力ユニットの定義(54;540~546)を含むことが可能であり、
 前記更新手段は、前記インポートされるプログラムモジュールに含まれる入出力ユニットの定義が前記プロジェクトのいずれかのプログラムモジュールに含まれる入出力ユニットの定義と重複する場合に、当該重複する入出力ユニットの定義の変更を受け付けるようにさらに構成されている(S106,S108)、構成1~7のいずれか1項に記載のプログラム開発装置。
[構成9]
 制御装置(100)で実行されるユーザプログラムを含むプロジェクト(50)を作成するためのプロジェクト作成方法であって、
 1または複数のプログラムモジュールを含むプロジェクトを保持するステップ(208)を備え、前記プログラムモジュールの各々は、プログラムを含むとともに、前記プロジェクトに含まれるすべてのプログラムモジュール間で参照可能な変数である第1の変数(52;520)と、前記プロジェクトに含まれる複数のプログラムモジュール間で参照可能な変数である第2の変数(60;600~606)と、各プログラムモジュールにおいて参照される変数である第3の変数(58;580~586)とを定義可能であり、
 前記プロジェクトに1または複数のプログラムモジュールのインポートを受け付けるステップ(S20)と、
 前記インポートされるプログラムモジュールに含まれる第1の変数の変数名を維持するステップ(S114)と、
 前記インポートされるプログラムモジュールに含まれる第2の変数の変数名が前記プロジェクトのいずれかのプログラムモジュールに含まれる第2の変数の変数名と重複する場合には、当該重複する変数名の変更を受け付けるステップ(S114,S116)とを備える、プロジェクト作成方法。
[構成10]
 制御装置(100)で実行されるユーザプログラムの開発環境を提供するためのプログラム開発装置(200)を実現するためのプログラム(250)であって、前記プログラムはコンピュータに、
 1または複数のプログラムモジュールを含むプロジェクトを保持するステップ(208)を実行させ、前記プログラムモジュールの各々は、プログラムを含むとともに、前記プロジェクトに含まれるすべてのプログラムモジュール間で参照可能な変数である第1の変数(52;520)と、前記プロジェクトに含まれる複数のプログラムモジュール間で参照可能な変数である第2の変数(60;600~606)と、各プログラムモジュールにおいて参照される変数である第3の変数(58;580~586)とを定義可能であり、
 前記プロジェクトに1または複数のプログラムモジュールのインポートを受け付けるステップ(S20)と、
 前記インポートされるプログラムモジュールに含まれる第1の変数の変数名を維持するステップ(S114)と、
 前記インポートされるプログラムモジュールに含まれる第2の変数の変数名が前記プロジェクトのいずれかのプログラムモジュールに含まれる第2の変数の変数名と重複する場合には、当該重複する変数名の変更を受け付けるステップ(S114,S116)とを実行させる、プログラム開発装置を実現するためのプログラム。
 <I.利点>
 本実施の形態に従うモジュール化プログラミングによれば、制御装置で実行されるプログラムの設計効率および再利用性を向上させることのできる新たな仕組みを提供できる。
 今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
 1 制御システム、2 フィールドバス、4 ローカルネットワーク、10 フィールド装置群、12 リモートIO装置、14 リレー群、16,124 IOユニット、18 画像センサ、20 カメラ、22 サーボドライバ、24 サーボモータ、40 組立設備、41,45 ロボット、42 ネジ、43 ワーク、44 ネジ穴、47 組付工程、48 搬送工程、50 プロジェクト、52,520 共通変数、54 IOユニット定義、56,560~566 プログラム、58,580~586,583A,5891,5892 ローカル変数、60 モジュール間I/F、62 HMI、70~78,71A,73A,74A,791,792 プログラムモジュール、80 組立設備モジュール、81,81A 組立モジュール、82 搬送モジュール、83,83A ネジピックモジュール、84,84A ネジ取付モジュール、85 ピックモジュール、86 プレイスモジュール、87 検査モジュール、88 処理検査モジュール、100 制御装置、102,202 プロセッサ、104 チップセット、106,206 主記憶装置、108,208 二次記憶装置、110,214 ローカルネットワークコントローラ、112,212 USBコントローラ、114 メモリカードインターフェイス、116 メモリカード、120 フィールドバスコントローラ、122 内部バスコントローラ、126 ユーザプログラム、160 プロジェクトデータ、162,172 モジュール名、164,168 識別子、166 要素データ、170 変数名、200 プログラム開発装置、204 ドライブ、205 記憶媒体、216 入力部、218 表示部、220 バス、250 開発ツール、300,310,320,324,350,360,370 設定画面、302,312,322 プルダウン、314 入力ボックス、330 クロスレファレンス、352,354 設定内容、356 比較結果、541~546 ノードアドレス、600~608,601A,603A,6091,6092 グローバル変数、620,621,625 ページ、891 撮影モジュール、892 評価モジュール。

Claims (10)

  1.  制御装置で実行されるユーザプログラムの開発環境を提供するためのプログラム開発装置であって、
     1または複数のプログラムモジュールを含むプロジェクトを保持する記憶部と、
     前記プロジェクトに1または複数のプログラムモジュールをインポートする更新手段とを備え、
     前記プログラムモジュールの各々は、プログラムを含むとともに、前記プロジェクトに含まれるすべてのプログラムモジュール間で参照可能な変数である第1の変数と、前記プロジェクトに含まれる複数のプログラムモジュール間で参照可能な変数である第2の変数と、各プログラムモジュールにおいて参照される変数である第3の変数とを定義可能であり、
     前記更新手段は、前記インポートされるプログラムモジュールに含まれる第1の変数の変数名を維持するとともに、前記インポートされるプログラムモジュールに含まれる第2の変数の変数名が前記プロジェクトのいずれかのプログラムモジュールに含まれる第2の変数の変数名と重複する場合には、当該重複する変数名の変更を受け付けるように構成されている、プログラム開発装置。
  2.  前記更新手段は、前記インポートされるプログラムモジュールに含まれる第2の変数の変数名が重複する場合に、当該重複する第2の変数をユーザに提示する、請求項1に記載のプログラム開発装置。
  3.  前記更新手段は、前記インポートされるプログラムモジュールに含まれる第2の変数の変数名が重複する場合に、当該重複する第2の変数を予め定められた命名規則に従って変更する、請求項1または2に記載のプログラム開発装置。
  4.  前記更新手段は、前記インポートされるプログラムモジュールに含まれるプログラムの名称が前記プロジェクトのいずれかのプログラムモジュールに含まれるプログラムの名称と重複する場合には、当該重複するプログラムの名称の変更を受け付けるようにさらに構成されている、請求項1~3のいずれか1項に記載のプログラム開発装置。
  5.  前記更新手段は、前記インポートされるプログラムモジュールに含まれるプログラムの名称が重複する場合に、当該重複するプログラムの名称をユーザに提示する、請求項4に記載のプログラム開発装置。
  6.  前記更新手段は、前記インポートされるプログラムモジュールに含まれるプログラムの名称が重複する場合に、当該重複するプログラムの名称を予め定められた命名規則に従って変更する、請求項4または5に記載のプログラム開発装置。
  7.  呼び出し関係にある複数のプログラムモジュールの単位でインポートされる、請求項1~6のいずれか1項に記載のプログラム開発装置。
  8.  前記プログラムモジュールの各々は、対応付けられる入出力ユニットの定義を含むことが可能であり、
     前記更新手段は、前記インポートされるプログラムモジュールに含まれる入出力ユニットの定義が前記プロジェクトのいずれかのプログラムモジュールに含まれる入出力ユニットの定義と重複する場合に、当該重複する入出力ユニットの定義の変更を受け付けるようにさらに構成されている、請求項1~7のいずれか1項に記載のプログラム開発装置。
  9.  制御装置で実行されるユーザプログラムを含むプロジェクトを作成するためのプロジェクト作成方法であって、
     1または複数のプログラムモジュールを含むプロジェクトを保持するステップを備え、前記プログラムモジュールの各々は、プログラムを含むとともに、前記プロジェクトに含まれるすべてのプログラムモジュール間で参照可能な変数である第1の変数と、前記プロジェクトに含まれる複数のプログラムモジュール間で参照可能な変数である第2の変数と、各プログラムモジュールにおいて参照される変数である第3の変数とを定義可能であり、
     前記プロジェクトに1または複数のプログラムモジュールのインポートを受け付けるステップと、
     前記インポートされるプログラムモジュールに含まれる第1の変数の変数名を維持するステップと、
     前記インポートされるプログラムモジュールに含まれる第2の変数の変数名が前記プロジェクトのいずれかのプログラムモジュールに含まれる第2の変数の変数名と重複する場合には、当該重複する変数名の変更を受け付けるステップとを備える、プロジェクト作成方法。
  10.  制御装置で実行されるユーザプログラムの開発環境を提供するためのプログラム開発装置を実現するためのプログラムであって、前記プログラムはコンピュータに、
     1または複数のプログラムモジュールを含むプロジェクトを保持するステップを実行させ、前記プログラムモジュールの各々は、プログラムを含むとともに、前記プロジェクトに含まれるすべてのプログラムモジュール間で参照可能な変数である第1の変数と、前記プロジェクトに含まれる複数のプログラムモジュール間で参照可能な変数である第2の変数と、各プログラムモジュールにおいて参照される変数である第3の変数とを定義可能であり、
     前記プロジェクトに1または複数のプログラムモジュールのインポートを受け付けるステップと、
     前記インポートされるプログラムモジュールに含まれる第1の変数の変数名を維持するステップと、
     前記インポートされるプログラムモジュールに含まれる第2の変数の変数名が前記プロジェクトのいずれかのプログラムモジュールに含まれる第2の変数の変数名と重複する場合には、当該重複する変数名の変更を受け付けるステップとを実行させる、プログラム開発装置を実現するためのプログラム。
PCT/JP2020/008954 2019-09-04 2020-03-03 プログラム開発装置、プロジェクト作成方法およびプログラム開発装置を実現するためのプログラム WO2021044650A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP20860723.4A EP4027208A4 (en) 2019-09-04 2020-03-03 PROGRAM DEVELOPMENT DEVICE, PROCESS FOR CREATING PROJECTS, AND PROGRAM FOR IMPLEMENTING THE PROGRAM DEVELOPMENT DEVICE
CN202080057008.5A CN114245883B (zh) 2019-09-04 2020-03-03 程序开发装置、工程制作方法以及存储介质
US17/634,247 US11704113B2 (en) 2019-09-04 2020-03-03 Program development device, project creation method, and storage medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019160899A JP7322604B2 (ja) 2019-09-04 2019-09-04 プログラム開発装置、プロジェクト作成方法およびプログラム開発装置を実現するためのプログラム
JP2019-160899 2019-09-04

Publications (1)

Publication Number Publication Date
WO2021044650A1 true WO2021044650A1 (ja) 2021-03-11

Family

ID=74847146

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/008954 WO2021044650A1 (ja) 2019-09-04 2020-03-03 プログラム開発装置、プロジェクト作成方法およびプログラム開発装置を実現するためのプログラム

Country Status (5)

Country Link
US (1) US11704113B2 (ja)
EP (1) EP4027208A4 (ja)
JP (1) JP7322604B2 (ja)
CN (1) CN114245883B (ja)
WO (1) WO2021044650A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7151161B2 (ja) * 2018-05-10 2022-10-12 オムロン株式会社 制御システム、サポート装置、サポートプログラム

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04205355A (ja) 1990-11-30 1992-07-27 Mitsubishi Electric Corp プログラム変数の使用検査装置
JPH0969041A (ja) * 1995-08-31 1997-03-11 Meidensha Corp ソフトウェア部品の作成支援方法
JP2001109632A (ja) * 1999-10-13 2001-04-20 Nec Ic Microcomput Syst Ltd プログラム翻訳システム及びプログラム翻訳方法
JP2009193181A (ja) * 2008-02-13 2009-08-27 Meidensha Corp ソフトウェアの開発支援システム、支援方法およびこの方法のプログラム
JP2010049484A (ja) * 2008-08-21 2010-03-04 Okuma Corp プログラマブル・ロジック・コントローラのプログラム編集装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2592955B2 (ja) * 1989-04-04 1997-03-19 株式会社東芝 プログラム自動生成装置
JPH05313871A (ja) * 1992-05-13 1993-11-26 Hokkaido Nippon Denki Software Kk 複数プログラム編集装置
WO1996026484A2 (en) * 1995-02-22 1996-08-29 Egilsson Agust S Graphical environment for managing and developing applications
US6804682B1 (en) * 2002-04-29 2004-10-12 Borland Software Corporation System and methodology providing compiler-assisted refactoring
JP4319082B2 (ja) * 2004-04-08 2009-08-26 三菱電機株式会社 プログラミングシステム
JP2006099639A (ja) * 2004-09-30 2006-04-13 Denso Wave Inc プログラム作成装置,制御装置及びコンピュータプログラム
US7555658B2 (en) * 2004-09-30 2009-06-30 Regents Of The University Of California Embedded electronics building blocks for user-configurable monitor/control networks
US20090043844A1 (en) * 2007-08-09 2009-02-12 International Business Machines Corporation System and method for name conflict resolution
JP2009157533A (ja) * 2007-12-25 2009-07-16 Fuji Electric Systems Co Ltd プログラマブルコントローラシステム
US9300522B2 (en) * 2009-12-23 2016-03-29 International Business Machines Corporation Information technology asset management
JP2011180814A (ja) * 2010-03-01 2011-09-15 Renesas Electronics Corp コンパイラ装置、コンパイル方法及びプログラム
JP5503508B2 (ja) * 2010-11-22 2014-05-28 株式会社日立製作所 プラント制御システム、イコライズデータ選択装置、および、イコライズデータ選択方法
US9146652B1 (en) * 2011-08-31 2015-09-29 Comsol Ab System and method for creating user interfaces in a multiphysics modeling system
JP5777837B2 (ja) * 2013-03-04 2015-09-09 三菱電機株式会社 プログラム開発支援装置およびその方法
US20140259005A1 (en) * 2013-03-08 2014-09-11 Air Computing, Inc. Systems and methods for managing files in a cloud-based computing environment
JP6520545B2 (ja) * 2015-08-10 2019-05-29 オムロン株式会社 サポート装置およびサポートプログラム
US10402173B2 (en) * 2017-02-24 2019-09-03 General Electric Company Systems and methods for arbitrary software logic modeling
JP6989411B2 (ja) * 2018-02-16 2022-01-05 株式会社東芝 検索装置
JP6950634B2 (ja) * 2018-07-03 2021-10-13 オムロン株式会社 制御装置および制御方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04205355A (ja) 1990-11-30 1992-07-27 Mitsubishi Electric Corp プログラム変数の使用検査装置
JPH0969041A (ja) * 1995-08-31 1997-03-11 Meidensha Corp ソフトウェア部品の作成支援方法
JP2001109632A (ja) * 1999-10-13 2001-04-20 Nec Ic Microcomput Syst Ltd プログラム翻訳システム及びプログラム翻訳方法
JP2009193181A (ja) * 2008-02-13 2009-08-27 Meidensha Corp ソフトウェアの開発支援システム、支援方法およびこの方法のプログラム
JP2010049484A (ja) * 2008-08-21 2010-03-04 Okuma Corp プログラマブル・ロジック・コントローラのプログラム編集装置

Also Published As

Publication number Publication date
CN114245883A (zh) 2022-03-25
JP7322604B2 (ja) 2023-08-08
EP4027208A4 (en) 2023-09-20
CN114245883B (zh) 2023-08-11
US20220326943A1 (en) 2022-10-13
EP4027208A1 (en) 2022-07-13
JP2021039570A (ja) 2021-03-11
US11704113B2 (en) 2023-07-18

Similar Documents

Publication Publication Date Title
CN108227641A (zh) 控制装置、控制方法及计算机可读存储介质
WO2015136961A1 (ja) 制御装置
US20080303472A1 (en) Method for replacement of a defective field device by a new field device in a system which communicates via a digital fieldbus, in particular an automation system
JP2018097663A (ja) 制御システム、制御プログラムおよび制御方法
JP2019159697A (ja) 制御システムおよび制御方法
WO2018110259A1 (ja) 制御装置、制御プログラムおよび制御方法
CN114787838A (zh) 软件定义的制造/组装系统
JP6623856B2 (ja) スレーブ装置、スレーブ装置の制御方法、情報処理プログラム、および記録媒体
JP6874438B2 (ja) スレーブ装置、スレーブ装置の制御方法、情報処理プログラム、および記録媒体
JP6468313B2 (ja) 制御装置、制御プログラムおよび制御方法
JP2018159981A (ja) 制御システム、制御装置、制御プログラム、および制御方法
WO2021044650A1 (ja) プログラム開発装置、プロジェクト作成方法およびプログラム開発装置を実現するためのプログラム
US20110202145A1 (en) Automatic device parameter binding method and system
US20050065746A1 (en) Device and method for testing machine tools and production machines
US11165745B2 (en) Control system, controller, and control method
JP6135247B2 (ja) 情報処理装置および情報処理プログラム
US20190303319A1 (en) Support apparatus, non-transitory computer-readable recording medium and setting method
WO2021038930A1 (ja) サポート装置、サポートプログラムおよび設定方法
IT201800001507A1 (it) Sistema per gestire e monitorare una pluralita' di macchine utensili a controllo numerico
WO2013005350A1 (ja) シンボルテーブル生成方法、周辺機器との通信方法およびプログラマブルロジックコントローラ
WO2021065033A1 (ja) プログラム開発装置およびプログラム開発装置を実現するためのプログラム
KR101354698B1 (ko) 차량용 전자 제어 장치의 동작 방법
WO2020189142A1 (ja) 制御システム、制御方法、および制御プログラム
JP2005084941A (ja) 機器管理システム
WO2023189136A1 (ja) 開発支援装置、開発支援プログラム、及び開発支援方法

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2020860723

Country of ref document: EP

Effective date: 20220404