WO2022249713A1 - 制御システム、システムプログラムおよびデバッグ方法 - Google Patents

制御システム、システムプログラムおよびデバッグ方法 Download PDF

Info

Publication number
WO2022249713A1
WO2022249713A1 PCT/JP2022/014417 JP2022014417W WO2022249713A1 WO 2022249713 A1 WO2022249713 A1 WO 2022249713A1 JP 2022014417 W JP2022014417 W JP 2022014417W WO 2022249713 A1 WO2022249713 A1 WO 2022249713A1
Authority
WO
WIPO (PCT)
Prior art keywords
value
input
address
function block
user program
Prior art date
Application number
PCT/JP2022/014417
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 WO2022249713A1 publication Critical patent/WO2022249713A1/ja

Links

Images

Classifications

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

Definitions

  • the present invention relates to a control system, system program and debugging method.
  • PLCs Programmable Logic Controllers
  • user programs programs that describe control logic
  • PLCs programs that describe control logic
  • the user program is transmitted from the development support device to the PLC. Further, it is possible to debug the user program executed by the PLC by operating the development support device.
  • IEC61131-3 defined by the International Electrotechnical Commission (IEC).
  • IEC61131-3 a main program, function blocks, and functions are defined as POUs (Program Organization Units). IEC61131-3 also defines variables that can be used in POUs.
  • Patent Document 1 discloses that only a program part at a higher level of the call hierarchy or only an intermediate function block can be extracted and modularized in an arbitrary unit, thereby improving the convenience of reuse. Disclose how to improve.
  • An object of the present invention is to provide means for more efficiently debugging user programs that include function blocks.
  • a control system includes an arithmetic processing unit that executes a user program including function blocks, a data holding unit that holds data referred to by the user program, and the arithmetic processing unit that executes An instruction issuing unit that issues an instruction to change the value of data referenced by a user program, and an instruction issuing unit that, when instructed to change the value of an input/output variable associated with a function block, reads the past execution state of the function block.
  • An address specifying unit that specifies the address of the data holding unit associated with the input/output variable by referring to it, and a changing unit that changes the value held at the specified address of the data holding unit to the indicated value. including.
  • the address of the data holding unit associated with the input/output variable is specified. , can change the value indicated by an input/output variable.
  • the address specifying unit may specify the address by collecting information on the previous execution of the function block. According to this configuration, it is possible to identify the address actually used in executing the function block.
  • the address specifying unit may specify the address when the user program has completed execution. According to this configuration, since there is a possibility that the input/output variables are changed while the user program is running, the input/output variables can be reliably changed by maintaining the state in which the user program has completed execution. .
  • the control system includes a programmable logic controller and a development support device, and the address specifying unit may be implemented in the programmable logic controller. According to this configuration, it is possible to easily acquire the execution state of the user program, so that it is possible to easily specify the address of the data holding unit associated with the input/output variable.
  • the control system includes a programmable logic controller and a development support device, and the address specifying unit may be implemented in the development support device. According to this configuration, since the development support device identifies the address of the data holding unit associated with the input/output variable, it is possible to suppress an increase in the load on the programmable logic controller.
  • a system program that provides an execution environment for executing a user program containing function blocks.
  • the system program instructs the computer to change the value of the data referred to by the user program;
  • a step of specifying an address associated with an input/output variable and a step of changing a value held at the specified address to a specified value are executed.
  • a debugging method for debugging a user program containing function blocks.
  • the debugging method comprises the step of receiving an instruction to change the value of data referred to by a user program; by referring to the address associated with the input/output variable, and changing the value held at the specified address to the indicated value.
  • user programs containing function blocks can be debugged more efficiently.
  • FIG. 1 is a schematic diagram showing main functions of a development support device according to an embodiment
  • FIG. 1 is a schematic diagram outlining the system configuration of a control system according to an embodiment
  • FIG. It is a schematic diagram which shows the hardware structural example of PLC which comprises the control system which concerns on this Embodiment.
  • 1 is a schematic diagram showing a hardware configuration example of a development support device that configures a control system according to an embodiment
  • FIG. 3 is a diagram for explaining an example of online debugging provided by the development support device according to the embodiment
  • FIG. 3 is a diagram for explaining an example of debugging of a function block provided by the development support device according to the embodiment
  • FIG. FIG. 7 is a flowchart showing a processing procedure related to online debugging shown in FIG.
  • FIG. 10 is a diagram for explaining another example of debugging of function blocks provided by the development support device according to the present embodiment
  • FIG. 9 is a flowchart showing a processing procedure related to online debugging shown in FIG. 8
  • FIG. FIG. 4 is a schematic diagram showing an example of a user interface screen for online debugging provided by the development support device according to the present embodiment
  • FIG. 1 is a schematic diagram showing an outline of a control system 1 according to this embodiment.
  • control system 1 has an arithmetic processing unit 50 that executes user program 114 including function block 150 .
  • the arithmetic processing unit 50 may typically be realized by the PLC processor 102 .
  • the control system 1 has a data holding unit 140 that holds data referred to by the user program 114 in association with the arithmetic processing unit 50 .
  • the data holding unit 140 may typically be realized by the main memory 104 of the PLC.
  • the instruction issuing unit 260 issues an instruction for changing the value of data referred to by the user program 114 executed by the arithmetic processing unit 50 in accordance with a user operation.
  • the instruction issuing unit 260 may be implemented in a development support device connected to the PLC.
  • the address identification module 170 refers to the past execution state of the function block 150 , which is associated with the input/output variable 156 .
  • the address of the data holding unit 140 is specified.
  • the change module 180 changes the value held at the specified address in the data holding unit 140 to the indicated value.
  • control system configuration Next, the configuration of the control system 1 including the development support device according to this embodiment will be described.
  • FIG. 2 is a schematic diagram outlining the system configuration of the control system 1 according to the present embodiment.
  • control system 1 includes PLC 100 and development support device 200 connected to PLC 100 .
  • the PLC 100 collects data from devices connected to the field network 10, executes control calculations using the collected data, and transfers part or all of the execution results of the control calculations to the field network 10. Executes control operations such as output to connected devices.
  • the PLC 100 is connected via the field network 10 to the remote I/O device 12, the robot controller 20 and the motor driver 30.
  • protocols for industrial networks such as EtherCAT (registered trademark) and EtherNet/IP can be used.
  • the remote I/O device 12 is connected to a field device 14 such as a sensor or actuator, transmits data measured by the sensor or the like to the PLC 100, and outputs data received from the PLC 100 via the actuator or the like.
  • a robot controller 20 controls a robot 22 .
  • a motor driver 30 controls a motor 32 .
  • the PLC 100 may be connected to the HMI 300 and the server device 400 via the host network 16.
  • a protocol for industrial networks such as EtherNet/IP can be used.
  • FIG. 3 is a schematic diagram showing a hardware configuration example of the PLC 100 configuring the control system 1 according to this embodiment.
  • PLC 100 includes processor 102, main memory 104, storage 110, memory card interface 120, host network controller 106, field network controller 108, local bus controller 116, USB (universal and a USB controller 124 that provides a Serial Bus interface. These components are connected via processor bus 118 .
  • the processor 102 corresponds to an arithmetic processing unit that executes a user program, and is composed of a CPU (Central Processing Unit), a GPU (Graphics Processing Unit), and the like. Specifically, the processor 102 reads the system program 112 and the user program 114 stored in the storage 110, develops them in the main memory 104, and executes them, thereby realizing control calculations for the controlled object.
  • a CPU Central Processing Unit
  • GPU Graphics Processing Unit
  • the main memory 104 corresponds to the data holding unit 140 referenced by the user program 114, and is composed of volatile storage devices such as DRAM (Dynamic Random Access Memory) and SRAM (Static Random Access Memory).
  • DRAM Dynamic Random Access Memory
  • SRAM Static Random Access Memory
  • the storage 110 is composed of, for example, non-volatile storage devices such as SSD (Solid State Drive) and HDD (Hard Disk Drive).
  • the storage 110 stores a system program 112 for realizing basic functions, a user program 114 created according to the object to be controlled, and the like.
  • the system program 112 includes instructions for providing an execution environment for executing the user program 114 .
  • the user program 114 describes instructions for implementing control operations, and typically includes sequence instructions and motion instructions.
  • the user program 114 may be written in any language defined by IEC61131-3. However, the user program 114 may include a program written in a manufacturer's own language other than the language defined by IEC61131-3.
  • the memory card interface 120 accepts a memory card 122, which is an example of a removable storage medium.
  • the memory card interface 120 can read/write arbitrary data from/to the memory card 122 .
  • the host network controller 106 exchanges data with arbitrary information processing devices (such as the HMI 300 and the server device 400 shown in FIG. 2) via the host network 16 .
  • arbitrary information processing devices such as the HMI 300 and the server device 400 shown in FIG. 2
  • the field network controller 108 exchanges data with each device via the field network 10.
  • the local bus controller 116 exchanges data with any functional unit 130 included in the PLC 100 via the local bus 126 .
  • the functional unit 130 includes, for example, an analog I/O unit responsible for inputting and/or outputting analog signals, a digital I/O unit responsible for inputting and/or outputting digital signals, a counter unit receiving pulses from an encoder, etc. And so on.
  • the USB controller 124 exchanges data with any information processing device (such as the development support device 200) via a USB connection.
  • FIG. 4 is a schematic diagram showing a hardware configuration example of the development support device 200 that configures the control system 1 according to this embodiment.
  • development support apparatus 200 includes processor 202 such as a CPU or MPU, main memory 204, storage 210, network controller 220, USB controller 224, input unit 226, display unit 228, and including. These components are connected via bus 208 .
  • the processor 202 reads various programs stored in the storage 210, develops them in the main memory 204, and executes them, thereby realizing necessary processing in the development support device 200.
  • the storage 210 is composed of, for example, an HDD or an SSD.
  • the storage 210 typically stores an OS 212 and development programs 214 .
  • the development program 214 implements processing such as creation and editing of the user program 114, generation of the user program 114 in an executable format from the source code user program 114, and debugging as described later. Note that the storage 210 may store necessary programs other than the programs shown in FIG.
  • the network controller 220 exchanges data with any information processing device via any network.
  • the USB controller 224 exchanges data with any information processing device via a USB connection.
  • the input unit 226 is composed of a mouse, keyboard, touch panel, etc., and receives instructions from the user.
  • a display unit 228 includes a display, various indicators, and the like, and outputs processing results from the processor 202 and the like.
  • the development support device 200 may have an optical drive 206.
  • the optical drive 206 reads the program from a recording medium 207 (for example, an optical recording medium such as a DVD (Digital Versatile Disc)) that stores a computer-readable program non-transitory, and stores the program in a storage 210 or the like.
  • a recording medium 207 for example, an optical recording medium such as a DVD (Digital Versatile Disc)
  • DVD Digital Versatile Disc
  • Various programs executed by the development support device 200 may be installed via the computer-readable recording medium 207, or may be installed by downloading from any server on the network.
  • FIG. 3 and 4 show configuration examples in which one or more processors execute programs to provide necessary functions. It may be implemented using a hardware circuit (for example, ASIC (Application Specific Integrated Circuit) or FPGA (Field-Programmable Gate Array), etc.).
  • ASIC Application Specific Integrated Circuit
  • FPGA Field-Programmable Gate Array
  • the development support device 200 may be implemented as a single information processing device, or may implement some or all of the necessary functions using multiple processor resources.
  • FIG. 5 is a diagram for explaining an example of online debugging provided by the development support device 200 according to the present embodiment.
  • user program 114 is executed.
  • User program 114 may include main program 1142, function block 1146, and function 1148 as POUs.
  • the execution environment of the PLC 100 has a data holding unit 140.
  • Data holding unit 140 is typically provided by main memory 104 .
  • the user program 114 refers to the data (values) held in the data holding unit 140 to execute the described instructions, and stores the data (values) calculated by executing the instructions in the data holding unit 140. do.
  • Online debugging from the development support device 200 includes an operation to change the description of any one of the main program 1142, function block 1146 and function 1148. By changing the description, it is possible to change the behavior and execution results of the user program 114 when it is executed.
  • online debugging from the development support device 200 includes an operation to change the value of data stored in the data holding unit 140.
  • the execution of the user program 114, the execution result, etc. can be changed.
  • the user can debug the user program 114 executed by the PLC 100 by operating the development support device 200 .
  • a function block is a block that has input/output variables, and is executed by being read from the main program 1142 and instantiated.
  • Input/output variables include input variables, output variables, input/output variables, external variables, global variables, and the like.
  • An input variable is a value passed to a function block.
  • a function block cannot change the value of an input variable.
  • An output variable is a value output from a function block.
  • a function block can change the value of an output variable.
  • An input/output variable is a variable that is like an input variable and an output variable combined.
  • a function block can change the value of an input/output variable.
  • the development support device 200 can change the values of input/output variables of function blocks included in the user program 114 executed by the PLC 100 according to user operations. Input/output variables differ from input variables in that function blocks themselves can change their values. Therefore, the following processing is adopted so that the values of the input/output variables of the function blocks can be changed according to commands from the development support device 200 .
  • FIG. 6 is a diagram for explaining an example of debugging of function blocks provided by the development support device 200 according to the present embodiment.
  • PLC 100 executes user program 114 to generate instantiated function block 150 .
  • An input variable 152 and an input/output variable 156 are given to the function block 150 as input values. Also, the function block 150 outputs an input/output variable 156 and an output variable 160 as an execution result.
  • the input variable 152 is pass-by-value, and the value (actual argument) set in the input variable 152 is copied to the input internal parameter 154 of the function block 150 .
  • the output variable 160 is also passed by value, and the value of the output internal parameter 162 calculated by executing the function block 150 is copied to the output variable 160 .
  • the input/output variable 156 is passed by reference, and the address (formal argument) set in the input/output variable 156 is copied to the input/output internal parameter 158 .
  • the input/output internal parameter 158 refers to the value on the data holding unit 140 specified by the specified address (address A in the example shown in FIG. 6). Also, when the value of the input/output internal parameter 158 is changed by the execution of the function block 150, the value of the input/output internal parameter 158 after change is stored at the specified address (in the example shown in FIG. 6) in the data holding unit 140. , address A).
  • the value of the input variable 152 can be changed from the development support device 200 as it is.
  • the value specified by the value (address) of the input/output variable 156 is input instead of the value (that is, address) of the input/output variable 156. need to change.
  • control system 1 refers to the past execution state of the function block 150 to obtain the value (address) set to the input/output variable 156 of the function block 150 . have.
  • the address identification module 170 When instructed to change the value of the input/output variable 156 associated with the function block 150 , the address identification module 170 refers to the past execution state of the function block 150 , which is associated with the input/output variable 156 .
  • the address of the data holding unit 140 is specified. More specifically, the address identification module 170 has an address identification module 170 that identifies the address (formal argument) set in the input/output variable 156 by collecting information on the previous execution of the function block 150. ing.
  • the PLC 100 Upon receiving an instruction to change the value of the input/output variable 156 from the development support device 200 , the PLC 100 changes the value on the data holding unit 140 specified by the address specified by the address specifying module 170 . That is, PLC 100 changes the value held at the specified address in data holding unit 140 to the indicated value.
  • FIG. 7 is a flow chart showing the processing procedure related to the online debugging shown in FIG. Each step shown in FIG. 7 is typically implemented by processor 102 of PLC 100 executing system program 112 .
  • PLC 100 accepts an instruction to change the value of data referenced by user program 114 . More specifically, PLC 100 determines whether or not an instruction to change the value of input/output variable 156 included in function block 150 has been received from development support device 200 (step S100). If an instruction to change the value of input/output variable 156 of function block 150 has not been received (NO in step S100), the process of step S100 is repeated.
  • the PLC 100 Upon receiving an instruction to change the value of the input/output variable 156 of the function block 150 (YES in step S100), the PLC 100 waits for the completion of execution of the currently executing user program 114 (step S102). Then, the PLC 100 identifies the address set in the input/output variable 156 of the target function block 150 by referring to the execution state of the user program 114 that has completed execution (step S104). That is, the PLC 100 identifies the address when the user program 114 has completed execution.
  • the PLC 100 when the PLC 100 is instructed to change the value of the input/output variable 156 associated with the function block, the PLC 100 refers to the past execution state of the function block, which is associated with the input/output variable 156. Identify an address.
  • the PLC 100 changes the value on the data holding unit 140 specified by the specified address to the indicated value (step S106).
  • the PLC 100 changes the value held at the specified address to the indicated value. Then, when the next execution cycle arrives, the user program 114 is executed again.
  • control system 1 writes an arbitrary value to the input/output variable 156 of the function block 150 at the address (formal argument) specified when the function block 150 was last executed. ) is specified, and the arbitrary value is written in the area corresponding to the specified address. This makes it possible to arbitrarily change input/output variables of function blocks implemented in the form of pass-by-reference to values.
  • the development support device 200 may have a function corresponding to the address identification module 170 . That is, the address identification module 170 may be implemented in the development support device 200 . In this case, the development support device 200 identifies the address (formal argument) set in the input/output variable 156 by collecting information from the PLC 100 on the previous execution of the function block 150 .
  • the PLC 100 or the development support device 200 may also be the execution subject for changing the value on the data holding unit 140 specified by the specified address.
  • FIG. 8 is a diagram for explaining another example of debugging of function blocks provided by the development support device 200 according to the present embodiment.
  • PLC 100 executes user program 114 to generate instantiated function block 150 .
  • An input variable 152 and an input/output variable 156 are given to the function block 150 as input values. Also, the function block 150 outputs an input/output variable 156 and an output variable 160 as an execution result.
  • the input variable 152 is pass-by-value, and the value (actual argument) set in the input variable 152 is copied to the input internal parameter 154 of the function block 150 .
  • the output variable 160 is also passed by value, and the value of the output internal parameter 162 calculated by executing the function block 150 is copied to the output variable 160 .
  • the input/output variable 156 is also passed by reference.
  • the value of the input/output variable 156 is changed from the outside of the function block 150 and also changed by the function block 150 itself. Therefore, the function block 150 has an input/output internal parameter 158A for receiving the input/output variable 156 as an input variable and an input/output internal parameter 158B for outputting the input/output variable 156 as an output variable.
  • the value (actual value) set in the input/output variable 156 is copied to the input/output internal parameter 158A of the function block 150.
  • the function block 150 refers to the value of the input/output internal parameter 158A to execute the operation and reflects the execution result to the input/output internal parameter 158B.
  • the value of the input/output internal parameter 158B is copied to the input/output variable 156.
  • the function block 150 changes the value of the input/output variable 156, there are environments in which the value of the input/output variable 156 is not set to be changed. In such a case, the value of the input/output internal parameter 158A of the function block 150 is changed from the development support device 200. FIG. However, each time the function block 150 is executed, the value set in the input/output variable 156 is copied to the input/output internal parameter 158A. Therefore, the input/output internal parameter 158A is not substantially changed.
  • control system 1 executes processing for changing the value of the input/output variable 156 passed to the function block 150 in response to the instruction to change the value of the input/output internal parameter 158A.
  • step S2 when the user gives an instruction to change the value of input/output internal parameter 158A (step S2), by referring to the call tree for calling function block 150 described in main program 1142, A corresponding input/output variable 156 is identified (step S4). Then, the control system 1 changes the value of the identified input/output variable 156 to the instructed value (step S6).
  • control system 1 redirects the process of writing a value to the input/output internal parameter 158A of the function block 150 to the input/output internal parameter 158A of the function block 150.
  • Either the PLC 100 or the development support device 200 may execute the process of step S4.
  • FIG. 9 is a flow chart showing the processing procedure related to the online debugging shown in FIG. Each step shown in FIG. 9 is typically implemented by processor 102 of PLC 100 executing system program 112 .
  • PLC 100 determines whether an instruction to change the value of input/output internal parameter 158A of function block 150 has been received from development support device 200 (step S200). If an instruction to change the value of input/output internal parameter 158A of function block 150 has not been received (NO in step S200), the process of step S200 is repeated.
  • the PLC 100 Upon receiving an instruction to change the value of the input/output internal parameter 158A of the function block 150 (YES in step S200), the PLC 100 waits for the completion of execution of the currently executing user program 114 (step S202).
  • the PLC 100 identifies the input/output variable 156 corresponding to the target input/output internal parameter 158A by referring to the call tree for calling the function block 150 described in the main program 1142 (step S204). Furthermore, the PLC 100 changes the value of the specified input/output variable 156 to the indicated value (step S206). Then, when the next execution cycle arrives, the user program 114 is executed again.
  • control system 1 refers to the call tree for calling the function block 150 when writing an arbitrary value to the input/output internal parameter 158A of the function block 150.
  • the input/output variable 156 corresponding to the input/output internal parameter 158A is specified, and the arbitrary value is written in the specified input/output variable 156. This makes it possible to arbitrarily change input/output variables of function blocks implemented in the pass-by-value form to values.
  • the process of identifying the input/output variable 156 corresponding to the input/output internal parameter 158A may be implemented in either the PLC 100 or the development support device 200.
  • the PLC 100 or the development support device 200 may also be the execution subject for changing the value on the data holding unit 140 specified by the specified address.
  • FIG. 10 is a schematic diagram showing an example of a user interface screen related to online debugging provided by the development support device 200 according to the present embodiment.
  • user interface screen 250 provided by development support apparatus 200 includes target variable column 252 indicating a variable to be changed, current value column 254 indicating the current value of the target variable, and and a change instruction value column 256 that indicates the desired value to change.
  • the user selects or registers any variable in the target variable column 252 , refers to the current value displayed in the current value column 254 , and enters a desired new value in the change instruction value column 256 . Then, the development support device 200 gives an instruction to the PLC 100 to change the value of the variable selected in the target variable field 252 to the value input in the change instruction value field 256 .
  • the development support device 200 has an instruction issuing unit that issues an instruction to change the value of the data referred to by the user program 114 executed by the PLC 100 according to the user's operation.
  • the user can use the user interface screen as shown in FIG. 10 to perform online debugging for the user program 114 executed by the PLC 100.
  • FIG. 1 an arithmetic processing unit (50:102) that executes a user program (114) including a function block (150); a data holding unit (140:104) holding data referred to by the user program; an instruction issuing unit (260:200) for issuing an instruction for changing the value of data referred to by the user program executed by the arithmetic processing unit according to a user operation;
  • the address of the data holding unit associated with the input/output variable is retrieved by referring to the past execution state of the function block.
  • a control system comprising: a changing unit (180) that changes the value held at the specified address of the data holding unit to an indicated value.
  • [Configuration 2] The control system according to configuration 1, wherein the address specifying unit specifies the address by collecting information on the previous execution of the function block.
  • [Configuration 3] 3. The control system according to configuration 1 or 2, wherein the address specifying unit specifies the address when the user program has completed execution.
  • the control system includes a programmable logic controller (100) and a development support device (200), 4. The control system according to any one of configurations 1 to 3, wherein the address specifying unit is implemented in the programmable logic controller.
  • the control system includes a programmable logic controller (100) and a development support device (200), The control system according to any one of configurations 1 to 3, wherein the address specifying unit is implemented in the development support device.
  • a system program (112) that provides an execution environment for executing a user program (114) that includes function blocks (150), the computer (100) comprising: a step of receiving an instruction to change the value of data referred to by the user program (S100); When the change of the value of the input/output variable associated with the function block is instructed, the step of specifying the address associated with the input/output variable by referring to the past execution state of the function block (S102 , S104) and A system program for executing a step (S106) of changing the value held at the specified address to the instructed value.
  • the control system identifies the address of the data holding unit associated with the input/output variable by referring to the past execution state of the function block. You can change the value indicated by an input/output variable without having to By providing a means to change input/output variables to arbitrary values, user programs containing function blocks can be debugged more efficiently.

Landscapes

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

Abstract

制御システムは、ファンクションブロックを含むユーザプログラムを実行する演算処理部と、ユーザプログラムが参照するデータを保持するデータ保持部と、ユーザ操作に応じて、演算処理部が実行するユーザプログラムが参照するデータの値を変更するための指示を発行する指示発行部と、ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、入出力変数に対応付けられたデータ保持部のアドレスを特定するアドレス特定部と、データ保持部の特定されたアドレスに保持されている値を指示された値に変更する変更部とを含む。

Description

制御システム、システムプログラムおよびデバッグ方法
 本発明は、制御システム、システムプログラムおよびデバッグ方法に関する。
 FA(Factory Automation)分野においては、各種設備や各種機械を制御するための制御装置として、PLC(プログラマブルロジックコントローラ)が多く使用されている。
 通常、PLCで実行されるユーザプログラム(制御ロジックを記述したプログラム)は、開発支援装置において開発される。そして、開発支援装置からPLCに対してユーザプログラムが送信される。さらに、開発支援装置を操作して、PLCで実行されるユーザプログラムに対してデバッグなどが可能になっている。
 また、PLCで実行されるユーザプログラムは、国際電気標準会議(IEC:International Electrotechnical Commission)が定めるIEC61131-3で規定されるいずれかの言語で記述されることが一般的である。IEC61131-3においては、POU(プログラム構成ユニット)として、メインプログラム、ファンクションブロック、ファンクションが規定されている。また、IEC61131-3においては、POUで利用できる変数についても規定されている。
 ファンクションブロックに関して、特開2009-104227号公報(特許文献1)は、呼び出し階層上位のプログラム部分だけ、或いは中間のファンクションブロックだけを抽出して任意の単位で部品化でき、再利用の利便性を向上させる方法などを開示する。
特開2009-104227号公報
 上述したようなファンクションブロックを含むユーザプログラムのデバッグをより効率的に行うための方法が要望されている。
 本発明は、ファンクションブロックを含むユーザプログラムをより効率的にデバッグするための手段を提供することを目的とする。
 ある実施の形態に係る制御システムは、ファンクションブロックを含むユーザプログラムを実行する演算処理部と、ユーザプログラムが参照するデータを保持するデータ保持部と、ユーザ操作に応じて、演算処理部が実行するユーザプログラムが参照するデータの値を変更するための指示を発行する指示発行部と、ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、入出力変数に対応付けられたデータ保持部のアドレスを特定するアドレス特定部と、データ保持部の特定されたアドレスに保持されている値を指示された値に変更する変更部とを含む。
 この構成によれば、ファンクションブロックの過去の実行状態を参照することで、入出力変数に対応付けられたデータ保持部のアドレスを特定するので、入出力変数に実値が格納されていなくても、入出力変数が示す値を変更できる。入出力変数を任意の値に変更する手段を提供することで、ファンクションブロックを含むユーザプログラムをより効率的にデバッグできる。
 アドレス特定部は、ファンクションブロックの前回実行時の情報を収集することで、アドレスを特定するようにしてもよい。この構成によれば、ファンクションブロックの実行において実際に利用されたアドレスを特定できる。
 アドレス特定部は、ユーザプログラムが実行完了している状態において、アドレスを特定するようにしてもよい。この構成によれば、ユーザプログラムが実行中においては、入出力変数が変更される可能性があるので、ユーザプログラムが実行完了している状態を維持することで、確実に入出力変数を変更できる。
 制御システムは、プログラマブルロジックコントローラと、開発支援装置とを含み、アドレス特定部は、プログラマブルロジックコントローラに実装されてもよい。この構成によれば、ユーザプログラムの実行状態を容易に取得できるので、入出力変数に対応付けられたデータ保持部のアドレスを容易に特定できる。
 制御システムは、プログラマブルロジックコントローラと、開発支援装置とを含み、アドレス特定部は、開発支援装置に実装されてもよい。この構成によれば、開発支援装置が入出力変数に対応付けられたデータ保持部のアドレスを特定するので、プログラマブルロジックコントローラの負荷の上昇を抑制できる。
 別の実施の形態によれば、ファンクションブロックを含むユーザプログラムを実行する実行環境を提供するシステムプログラムが提供される。システムプログラムは、コンピュータに、ユーザプログラムが参照するデータの値を変更するための指示を受け付けるステップと、ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、入出力変数に対応付けられたアドレスを特定するステップと、特定されたアドレスに保持されている値を指示された値に変更するステップとを実行させる。
 さらに別の実施の形態によれば、ファンクションブロックを含むユーザプログラムをデバッグするデバッグ方法が提供される。デバッグ方法は、ユーザプログラムが参照するデータの値を変更するための指示を受け付けるステップと、ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、入出力変数に対応付けられたアドレスを特定するステップと、特定されたアドレスに保持されている値を指示された値に変更するステップとを含む。
 本発明によれば、ファンクションブロックを含むユーザプログラムをより効率的にデバッグできるようになる。
本実施の形態に係る開発支援装置の主たる機能を示す模式図である。 本実施の形態に係る制御システムのシステム構成を概略する模式図である。 本実施の形態に係る制御システムを構成するPLCのハードウェア構成例を示す模式図である。 本実施の形態に係る制御システムを構成する開発支援装置のハードウェア構成例を示す模式図である。 本実施の形態に係る開発支援装置が提供するオンラインデバッグの一例を説明するための図である。 本実施の形態に係る開発支援装置が提供するファンクションブロックに対するデバッグの一例を説明するための図である。 図6に示すオンラインデバッグに係る処理手順を示すフローチャートである。 本実施の形態に係る開発支援装置が提供するファンクションブロックに対するデバッグの別の一例を説明するための図である。 図8に示すオンラインデバッグに係る処理手順を示すフローチャートである。 本実施の形態に係る開発支援装置が提供するオンラインデバッグに係るユーザインターフェイス画面の一例を示す模式図である。
 本技術の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
 <A.適用例>
 まず、本発明が適用される場面の一例について説明する。図1は、本実施の形態に係る制御システム1の概要を示す模式図である。図1を参照して、制御システム1は、ファンクションブロック150を含むユーザプログラム114を実行する演算処理部50を有している。演算処理部50は、典型的には、PLCのプロセッサ102によって実現されてもよい。制御システム1は、演算処理部50に関連付けて、ユーザプログラム114が参照するデータを保持するデータ保持部140を有している。データ保持部140は、典型的には、PLCのメインメモリ104によって実現されてもよい。
 指示発行部260は、ユーザ操作に応じて、演算処理部50が実行するユーザプログラム114が参照するデータの値を変更するための指示を発行する。典型的には、指示発行部260は、PLCに接続される開発支援装置に実装されてもよい。
 アドレス特定モジュール170は、ファンクションブロック150に関連付けられた入出力変数156の値の変更が指示されると、ファンクションブロック150の過去の実行状態を参照することで、入出力変数156に対応付けられたデータ保持部140のアドレスを特定する。変更モジュール180は、データ保持部140の特定されたアドレスに保持されている値を指示された値に変更する。
 このような構成を採用することで、ファンクションブロック150に関連付けられた入出力変数の値を任意に変更することで、ファンクションブロック150およびファンクションブロック150を含むユーザプログラム114の挙動を異ならせて、必要なデバッグを容易に行うことができる。
 <B.制御システム構成>
 次に、本実施の形態に係る開発支援装置を含む制御システム1の構成について説明する。
 (b1:全体構成)
 図2は、本実施の形態に係る制御システム1のシステム構成を概略する模式図である。図2を参照して、制御システム1は、PLC100と、PLC100に接続される開発支援装置200とを含む。
 PLC100は、ユーザプログラムを実行することで、フィールドネットワーク10に接続されたデバイスからデータの収集、収集したデータを利用した制御演算の実行、制御演算の実行結果の一部または全部のフィールドネットワーク10に接続されたデバイスへの出力、などの制御演算を実行する。
 図2に示す例では、PLC100は、フィールドネットワーク10を介して、リモートI/Oデバイス12、ロボットコントローラ20およびモータドライバ30と接続されている。
 フィールドネットワーク10には、産業用ネットワーク用のプロトコルである、EtherCAT(登録商標)やEtherNet/IPなどを用いることができる。
 リモートI/Oデバイス12は、センサやアクチュエータなどのフィールドデバイス14が接続されており、センサなどにより計測されたデータをPLC100へ送信し、PLC100から受信したデータをアクチュエータなどを介して出力する。ロボットコントローラ20は、ロボット22を制御する。モータドライバ30は、モータ32を制御する。
 PLC100は、上位ネットワーク16を介して、HMI300およびサーバ装置400に接続されてもよい。上位ネットワーク16には、産業用ネットワーク用のプロトコルであるやEtherNet/IPなどを用いることができる。
 (b2:PLC100)
 図3は、本実施の形態に係る制御システム1を構成するPLC100のハードウェア構成例を示す模式図である。図3を参照して、PLC100は、プロセッサ102と、メインメモリ104と、ストレージ110と、メモリカードインターフェイス120と、上位ネットワークコントローラ106と、フィールドネットワークコントローラ108と、ローカルバスコントローラ116と、USB(Universal Serial Bus)インターフェイスを提供するUSBコントローラ124とを含む。これらのコンポーネントは、プロセッサバス118を介して接続されている。
 プロセッサ102は、ユーザプログラムを実行する演算処理部に相当し、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などで構成される。具体的には、プロセッサ102は、ストレージ110に格納されたシステムプログラム112およびユーザプログラム114を読み出して、メインメモリ104に展開して実行することで、制御対象に対する制御演算を実現する。
 メインメモリ104は、ユーザプログラム114が参照するデータ保持部140に相当し、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。
 ストレージ110は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などの不揮発性記憶装置などで構成される。ストレージ110には、基本的な機能を実現するためのシステムプログラム112、および、制御対象に応じて作成されたユーザプログラム114などが格納される。
 システムプログラム112は、ユーザプログラム114を実行する実行環境を提供するための命令を含む。
 ユーザプログラム114は、制御演算を実現するための命令が記述されたものであり、典型的には、シーケンス命令およびモーション命令を含み得る。ユーザプログラム114は、IEC61131-3で規定されるいずれかの言語で記述されてもよい。但し、ユーザプログラム114は、IEC61131-3で規定される言語以外のメーカ独自言語で記述されるプログラムを含んでいてもよい。
 メモリカードインターフェイス120は、着脱可能な記憶媒体の一例であるメモリカード122を受け付ける。メモリカードインターフェイス120は、メモリカード122に対して任意のデータの読み書きが可能になっている。
 上位ネットワークコントローラ106は、上位ネットワーク16を介して、任意の情報処理装置(図2に示されるHMI300およびサーバ装置400など)との間でデータをやり取りする。
 フィールドネットワークコントローラ108は、フィールドネットワーク10を介して、それぞれのデバイスとの間でデータをやり取りする。
 ローカルバスコントローラ116は、ローカルバス126を介して、PLC100に含まれる任意の機能ユニット130との間でデータをやり取りする。機能ユニット130は、例えば、アナログ信号の入力および/または出力を担当するアナログI/Oユニット、デジタル信号の入力および/または出力を担当するデジタルI/Oユニット、エンコーダなどからのパルスを受け付けるカウンタユニットなどからなる。
 USBコントローラ124は、USB接続を介して、任意の情報処理装置(開発支援装置200など)との間でデータをやり取りする。
 (b2:開発支援装置200)
 図4は、本実施の形態に係る制御システム1を構成する開発支援装置200のハードウェア構成例を示す模式図である。図4を参照して、開発支援装置200は、CPUやMPUなどのプロセッサ202と、メインメモリ204と、ストレージ210と、ネットワークコントローラ220と、USBコントローラ224と、入力部226と、表示部228とを含む。これらのコンポーネントは、バス208を介して接続される。
 プロセッサ202は、ストレージ210に格納された各種プログラムを読み出して、メインメモリ204に展開して実行することで、開発支援装置200で必要な処理を実現する。
 ストレージ210は、例えば、HDDやSSDなどで構成される。ストレージ210には、典型的には、OS212と、開発プログラム214とが格納される。開発プログラム214は、ユーザプログラム114の作成や編集、ソースコードのユーザプログラム114から実行形式のユーザプログラム114の生成、後述するようなデバッグなどの処理を実現する。なお、ストレージ210には、図4に示すプログラム以外の必要なプログラムが格納されてもよい。
 ネットワークコントローラ220は、任意のネットワークを介して、任意の情報処理装置との間でデータをやり取りする。
 USBコントローラ224は、USB接続を介して、任意の情報処理装置との間でデータをやり取りする。
 入力部226は、マウス、キーボード、タッチパネルなどで構成され、ユーザからの指示を受け付ける。表示部228は、ディスプレイ、各種インジケータなどで構成され、プロセッサ202からの処理結果などを出力する。
 開発支援装置200は、光学ドライブ206を有していてもよい。光学ドライブ206は、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体207(例えば、DVD(Digital Versatile Disc)などの光学記録媒体)からプログラムを読み取って、ストレージ210などに格納する。
 開発支援装置200で実行される各種プログラムは、コンピュータ読取可能な記録媒体207を介してインストールされてもよいが、ネットワーク上の任意のサーバからダウンロードする形でインストールするようにしてもよい。
 図3および図4には、1または複数のプロセッサがプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。
 開発支援装置200は、単一の情報処理装置として実現してもよいし、必要な機能の一部または全部を複数のプロセッサリソースを用いて実現してもよい。
 <C.オンラインデバッグ>
 次に、本実施の形態に係る開発支援装置200が提供するオンラインデバッグについて説明する。
 図5は、本実施の形態に係る開発支援装置200が提供するオンラインデバッグの一例を説明するための図である。図5を参照して、PLC100においては、ユーザプログラム114が実行されている。ユーザプログラム114は、POUとして、メインプログラム1142と、ファンクションブロック1146と、ファンクション1148とを含み得る。
 PLC100の実行環境は、データ保持部140を有している。データ保持部140は、典型的には、メインメモリ104が提供する。ユーザプログラム114は、データ保持部140に保持されているデータ(値)を参照して、記述された命令を実行するとともに、命令の実行により算出されたデータ(値)をデータ保持部140に格納する。
 なお、ユーザプログラム114のソースコードにおいては、変数を用いて命令が記述されており、ソースコードから実行形式(あるいは、オブジェクト形式)のプログラムを生成する際に、各変数が格納されるアドレスなどが適宜割り当てられる。
 開発支援装置200からのオンラインデバッグは、メインプログラム1142、ファンクションブロック1146およびファンクション1148のうち、いずれかに対する記述を変更する操作を含む。記述を変更することで、ユーザプログラム114の実行時の挙動および実行結果などを変化させることができる。
 また、開発支援装置200からのオンラインデバッグは、データ保持部140に格納されているデータの値を変更する操作を含む。データ保持部140に格納されているデータの値を変更することで、ユーザプログラム114の実行や実行結果などを変化させることができる。
 このように、ユーザは、開発支援装置200を操作することで、PLC100で実行されるユーザプログラム114に対するデバッグを行うことができる。
 <D.ファンクションブロックに対するデバッグ>
 次に、ユーザプログラム114に含まれるファンクションブロックに対するデバッグについて説明する。
 ファンクションブロックは、入出力変数を有するブロックであり、メインプログラム1142から読み出されてインスタンス化されることで実行される。入出力変数としては、入力変数、出力変数、入出力変数、外部変数、グローバル変数などを含む。
 入力変数は、ファンクションブロックに渡される値である。ファンクションブロックは、入力変数の値を変更できない。出力変数は、ファンクションブロックから出力される値である。ファンクションブロックは、出力変数の値を変更可能である。入出力変数は、入力変数および出力変数を併せたような変数である。ファンクションブロックは、入出力変数の値を変更できる。
 本実施の形態に係る開発支援装置200は、ユーザ操作に応じて、PLC100で実行されるユーザプログラム114に含まれるファンクションブロックの入出力変数の値を変更できる。入出力変数は、入力変数とは異なり、ファンクションブロック自体が値を変更できるようになっている。そのため、開発支援装置200からの指令によって、ファンクションブロックの入出力変数の値を変更できるように、以下のような処理を採用する。
 (d1:参照渡し)
 まず、ファンクションブロックに入出力変数を参照渡しする場合の構成例について説明する。
 図6は、本実施の形態に係る開発支援装置200が提供するファンクションブロックに対するデバッグの一例を説明するための図である。図6を参照して、PLC100でユーザプログラム114が実行されることで、インスタンス化されたファンクションブロック150が生成される。
 ファンクションブロック150には、入力変数152および入出力変数156が入力値として与えられる。また、ファンクションブロック150からは、実行結果として、入出力変数156および出力変数160が出力される。
 入力変数152は、値渡しであり、入力変数152に設定された値(実引数)がファンクションブロック150の入力内部パラメータ154にコピーされる。出力変数160についても値渡しであり、ファンクションブロック150の実行により算出された出力内部パラメータ162の値が出力変数160にコピーされる。
 これに対して、入出力変数156は、参照渡しであり、入出力変数156に設定されたアドレス(仮引数)が入出力内部パラメータ158にコピーされる。入出力内部パラメータ158には、指定されたアドレス(図6に示す例では、アドレスA)により特定されたデータ保持部140上の値が参照される。また、ファンクションブロック150の実行により入出力内部パラメータ158の値が変更されると、変更後の入出力内部パラメータ158の値は、データ保持部140上の指定されたアドレス(図6に示す例では、アドレスA)に書き込まれる。
 すなわち、入力変数152のように値渡しで値が入力される場合には、開発支援装置200から入力変数152の値をそのまま変更すればよい。一方、入出力変数156のように参照渡しで値が入力される場合には、入出力変数156の値(すなわち、アドレス)ではなく、入出力変数156の値(アドレス)によって特定される値を変更する必要がある。
 そこで、本実施の形態に係る制御システム1は、ファンクションブロック150の過去の実行状態を参照することで、ファンクションブロック150の入出力変数156に設定された値(アドレス)を取得するアドレス特定モジュール170を有している。
 アドレス特定モジュール170は、ファンクションブロック150に関連付けられた入出力変数156の値の変更が指示されると、ファンクションブロック150の過去の実行状態を参照することで、入出力変数156に対応付けられたデータ保持部140のアドレスを特定する。より具体的には、アドレス特定モジュール170は、ファンクションブロック150の前回実行時の情報を収集することで、入出力変数156に設定されたアドレス(仮引数)を特定するアドレス特定モジュール170を有している。
 そして、開発支援装置200から入出力変数156の値を変更する指示を受けると、PLC100は、アドレス特定モジュール170により特定されたアドレスにより指定されたデータ保持部140上の値を変更する。すなわち、PLC100は、データ保持部140の特定されたアドレスに保持されている値を指示された値に変更する。
 図7は、図6に示すオンラインデバッグに係る処理手順を示すフローチャートである。図7に示す各ステップは、典型的には、PLC100のプロセッサ102がシステムプログラム112を実行することで実現される。
 図7を参照して、PLC100は、ユーザプログラム114が参照するデータの値を変更するための指示を受け付ける。より具体的には、PLC100は、開発支援装置200からファンクションブロック150に含まれる入出力変数156の値の変更指示を受けたか否かを判断する(ステップS100)。ファンクションブロック150の入出力変数156の値の変更指示を受けていなければ(ステップS100においてNO)、ステップS100の処理が繰り返される。
 ファンクションブロック150の入出力変数156の値の変更指示を受ければ(ステップS100においてYES)、PLC100は、現在実行中のユーザプログラム114の実行完了を待つ(ステップS102)。そして、PLC100は、実行完了したユーザプログラム114の実行状態を参照することで、対象のファンクションブロック150の入出力変数156に設定されたアドレスを特定する(ステップS104)。すなわち、PLC100は、ユーザプログラム114が実行完了している状態において、アドレスを特定する。
 このように、PLC100は、ファンクションブロックに関連付けられた入出力変数156の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、入出力変数156に対応付けられたアドレスを特定する。
 さらに、PLC100は、特定されたアドレスにより指定されたデータ保持部140上の値を指示された値に変更する(ステップS106)。このように、PLC100は、特定されたアドレスに保持されている値を指示された値に変更する。すると、次の実行周期が到来すると、ユーザプログラム114が再度実行される。
 以上のような処理手順によって、ファンクションブロック150を含むユーザプログラム114をデバッグする処理の実行が完了する。
 このように、本実施の形態に係る制御システム1は、ファンクションブロック150の入出力変数156に任意の値を書き込み場合には、ファンクションブロック150が前回実行された際に指定されたアドレス(仮引数)を特定して、当該特定されたアドレスに対応する領域に当該任意の値を書き込む。これによって、参照渡しの形で実装されたファンクションブロックの入出力変数を任意に値に変更することができる。
 上述の説明においては、アドレス特定モジュール170がPLC100に実装される形態について説明した。但し、開発支援装置200がアドレス特定モジュール170に相当する機能を有していてもよい。すなわち、アドレス特定モジュール170は、開発支援装置200に実装されてもよい。この場合には、開発支援装置200がPLC100からファンクションブロック150の前回実行時の情報を収集することで、入出力変数156に設定されたアドレス(仮引数)を特定する。
 さらに、特定されたアドレスにより指定されたデータ保持部140上の値の変更についても、PLC100が実行主体になってもよいし、開発支援装置200が実行主体になってもよい。
 (d2:値渡し)
 まず、ファンクションブロックに入出力変数を値渡しする場合の構成例について説明する。
 図8は、本実施の形態に係る開発支援装置200が提供するファンクションブロックに対するデバッグの別の一例を説明するための図である。図8を参照して、PLC100でユーザプログラム114が実行されることで、インスタンス化されたファンクションブロック150が生成される。
 ファンクションブロック150には、入力変数152および入出力変数156が入力値として与えられる。また、ファンクションブロック150からは、実行結果として、入出力変数156および出力変数160が出力される。
 入力変数152は、値渡しであり、入力変数152に設定された値(実引数)がファンクションブロック150の入力内部パラメータ154にコピーされる。出力変数160についても値渡しであり、ファンクションブロック150の実行により算出された出力内部パラメータ162の値が出力変数160にコピーされる。
 入出力変数156についても参照渡しである。入出力変数156の値は、ファンクションブロック150の外部から変更されるとともに、ファンクションブロック150自身が変更する。そのため、ファンクションブロック150は、入出力変数156を入力変数として受け付けるための入出力内部パラメータ158Aと、入出力変数156を出力変数として出力するための入出力内部パラメータ158Bとを有している。
 入出力変数156に設定された値(実値)がファンクションブロック150の入出力内部パラメータ158Aにコピーされる。ファンクションブロック150は、入出力内部パラメータ158Aの値を参照して演算を実行し、実行結果を入出力内部パラメータ158Bに反映する。さらに、入出力内部パラメータ158Bの値が入出力変数156にコピーされる。
 ファンクションブロック150が入出力変数156の値を変更するため、入出力変数156の値が変更対象に設定されていない環境もある。このような場合には、開発支援装置200からファンクションブロック150の入出力内部パラメータ158Aの値を変更することになる。しかしながら、ファンクションブロック150が実行されるたびに、入出力内部パラメータ158Aには入出力変数156に設定された値がコピーされることになる。そのため、入出力内部パラメータ158Aを実質的に変更することにはならない。
 そのため、本実施の形態に係る制御システム1は、入出力内部パラメータ158Aの値を変更する指示に応答して、ファンクションブロック150に渡される入出力変数156の値を変更する処理を実行する。
 より具体的には、ユーザから入出力内部パラメータ158Aの値を変更する指示が与えられると(ステップS2)、メインプログラム1142に記述されたファンクションブロック150を呼び出すためのコールツリーを参照することで、対応する入出力変数156を特定する(ステップS4)。そして、制御システム1は、特定された入出力変数156の値を指示された値に変更する(ステップS6)。
 このように、制御システム1は、ファンクションブロック150の入出力内部パラメータ158Aへ値を書き込む処理をファンクションブロック150の入出力内部パラメータ158Aにリダイレクトする。
 なお、ステップS4の処理は、PLC100および開発支援装置200のいずれが実行するようにしてもよい。
 図9は、図8に示すオンラインデバッグに係る処理手順を示すフローチャートである。図9に示す各ステップは、典型的には、PLC100のプロセッサ102がシステムプログラム112を実行することで実現される。
 図9を参照して、PLC100は、開発支援装置200からファンクションブロック150の入出力内部パラメータ158Aの値の変更指示を受けたか否かを判断する(ステップS200)。ファンクションブロック150の入出力内部パラメータ158Aの値の変更指示を受けていなければ(ステップS200においてNO)、ステップS200の処理が繰り返される。
 ファンクションブロック150の入出力内部パラメータ158Aの値の変更指示を受ければ(ステップS200においてYES)、PLC100は、現在実行中のユーザプログラム114の実行完了を待つ(ステップS202)。
 PLC100は、メインプログラム1142に記述されたファンクションブロック150を呼び出すためのコールツリーを参照することで、対象の入出力内部パラメータ158Aに対応する入出力変数156を特定する(ステップS204)。さらに、PLC100は、特定された入出力変数156の値を指示された値に変更する(ステップS206)。すると、次の実行周期が到来すると、ユーザプログラム114が再度実行される。
 このように、本実施の形態に係る制御システム1は、ファンクションブロック150の入出力内部パラメータ158Aに任意の値を書き込み場合には、ファンクションブロック150を呼び出すためのコールツリーを参照することで、対象の入出力内部パラメータ158Aに対応する入出力変数156を特定し、当該特定した入出力変数156に当該任意の値を書き込む。これによって、値渡しの形で実装されたファンクションブロックの入出力変数を任意に値に変更することができる。
 上述したように、入出力内部パラメータ158Aに対応する入出力変数156を特定する処理は、PLC100および開発支援装置200のいずれに実装されてもよい。
 さらに、特定されたアドレスにより指定されたデータ保持部140上の値の変更についても、PLC100が実行主体になってもよいし、開発支援装置200が実行主体になってもよい。
 <E.ユーザインターフェイス>
 次に、開発支援装置200が提供するオンラインデバッグに係るユーザインターフェイス画面の一例について説明する。
 図10は、本実施の形態に係る開発支援装置200が提供するオンラインデバッグに係るユーザインターフェイス画面の一例を示す模式図である。図10を参照して、開発支援装置200が提供するユーザインターフェイス画面250は、変更対象の変数を示す対象変数欄252と、対象の変数の現在値を示す現在値欄254と、対象の変数の変更を希望する値を示す変更指示値欄256とを含む。
 ユーザは、対象変数欄252で任意の変数を選択あるいは登録するとともに、現在値欄254に表示される現在値を参照して、希望する新たな値を変更指示値欄256に入力する。すると、開発支援装置200からPLC100に対して、対象変数欄252に選択された変数の値を変更指示値欄256に入力された値に変更する旨の指示が与えられる。
 このように、開発支援装置200は、ユーザ操作に応じて、PLC100が実行するユーザプログラム114が参照するデータの値を変更するための指示を発行する指示発行部を有している。
 ユーザは、図10に示すようなユーザインターフェイス画面を利用して、PLC100で実行されるユーザプログラム114に対するオンラインデバッグを行うことができる。
 <F.付記>
 上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
 ファンクションブロック(150)を含むユーザプログラム(114)を実行する演算処理部(50:102)と、
 前記ユーザプログラムが参照するデータを保持するデータ保持部(140:104)と、
 ユーザ操作に応じて、前記演算処理部が実行するユーザプログラムが参照するデータの値を変更するための指示を発行する指示発行部(260:200)と、
 前記ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、前記入出力変数に対応付けられた前記データ保持部のアドレスを特定するアドレス特定部(170)と、
 前記データ保持部の前記特定されたアドレスに保持されている値を指示された値に変更する変更部(180)とを備える、制御システム。
[構成2]
 前記アドレス特定部は、前記ファンクションブロックの前回実行時の情報を収集することで、前記アドレスを特定する、構成1に記載の制御システム。
[構成3]
 前記アドレス特定部は、前記ユーザプログラムが実行完了している状態において、前記アドレスを特定する、構成1または2に記載の制御システム。
[構成4]
 前記制御システムは、プログラマブルロジックコントローラ(100)と、開発支援装置(200)とを含み、
 前記アドレス特定部は、前記プログラマブルロジックコントローラに実装される、構成1~3のいずれか1項に記載の制御システム。
[構成5]
 前記制御システムは、プログラマブルロジックコントローラ(100)と、開発支援装置(200)とを含み、
 前記アドレス特定部は、前記開発支援装置に実装される、構成1~3のいずれか1項に記載の制御システム。
[構成6]
 ファンクションブロック(150)を含むユーザプログラム(114)を実行する実行環境を提供するシステムプログラム(112)であって、コンピュータ(100)に、
 前記ユーザプログラムが参照するデータの値を変更するための指示を受け付けるステップ(S100)と、
 前記ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、前記入出力変数に対応付けられたアドレスを特定するステップ(S102,S104)と、
 前記特定されたアドレスに保持されている値を指示された値に変更するステップ(S106)とを実行させる、システムプログラム。
[構成7]
 ファンクションブロック(150)を含むユーザプログラム(114)をデバッグするデバッグ方法であって、
 前記ユーザプログラムが参照するデータの値を変更するための指示を受け付けるステップ(S100)と、
 前記ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、前記入出力変数に対応付けられたアドレスを特定するステップ(S102,S104)と、
 前記特定されたアドレスに保持されている値を指示された値に変更するステップ(S106)とを備える、デバッグ方法。
 <G.利点>
 本実施の形態に係る制御システムは、ファンクションブロックの過去の実行状態を参照することで、入出力変数に対応付けられたデータ保持部のアドレスを特定するので、入出力変数に実値が格納されていなくても、入出力変数が示す値を変更できる。入出力変数を任意の値に変更する手段を提供することで、ファンクションブロックを含むユーザプログラムをより効率的にデバッグできる。
 今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
 1 制御システム、10 フィールドネットワーク、12 デバイス、14 フィールドデバイス、16 上位ネットワーク、20 ロボットコントローラ、22 ロボット、30 モータドライバ、32 モータ、50 演算処理部、100 PLC、102,202 プロセッサ、104,204 メインメモリ、106 上位ネットワークコントローラ、108 フィールドネットワークコントローラ、110,210 ストレージ、112 システムプログラム、114 ユーザプログラム、116 ローカルバスコントローラ、118 プロセッサバス、120 メモリカードインターフェイス、122 メモリカード、124,224 USBコントローラ、126 ローカルバス、130 機能ユニット、140 データ保持部、150,1146 ファンクションブロック、152 入力変数、154 入力内部パラメータ、156 入出力変数、158,158A,158B 入出力内部パラメータ、160 出力変数、162 出力内部パラメータ、170 アドレス特定モジュール、180 変更モジュール、200 開発支援装置、206 光学ドライブ、207 記録媒体、208 バス、212 OS、214 開発プログラム、220 ネットワークコントローラ、226 入力部、228 表示部、250 ユーザインターフェイス画面、252 対象変数欄、254 現在値欄、256 変更指示値欄、260 指示発行部、300 HMI、400 サーバ装置、1142 メインプログラム、1148 ファンクション。

Claims (7)

  1.  ファンクションブロックを含むユーザプログラムを実行する演算処理部と、
     前記ユーザプログラムが参照するデータを保持するデータ保持部と、
     ユーザ操作に応じて、前記演算処理部が実行するユーザプログラムが参照するデータの値を変更するための指示を発行する指示発行部と、
     前記ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、前記入出力変数に対応付けられた前記データ保持部のアドレスを特定するアドレス特定部と、
     前記データ保持部の前記特定されたアドレスに保持されている値を指示された値に変更する変更部とを備える、制御システム。
  2.  前記アドレス特定部は、前記ファンクションブロックの前回実行時の情報を収集することで、前記アドレスを特定する、請求項1に記載の制御システム。
  3.  前記アドレス特定部は、前記ユーザプログラムが実行完了している状態において、前記アドレスを特定する、請求項1または2に記載の制御システム。
  4.  前記制御システムは、プログラマブルロジックコントローラと、開発支援装置とを含み、
     前記アドレス特定部は、前記プログラマブルロジックコントローラに実装される、請求項1~3のいずれか1項に記載の制御システム。
  5.  前記制御システムは、プログラマブルロジックコントローラと、開発支援装置とを含み、
     前記アドレス特定部は、前記開発支援装置に実装される、請求項1~3のいずれか1項に記載の制御システム。
  6.  ファンクションブロックを含むユーザプログラムを実行する実行環境を提供するシステムプログラムであって、コンピュータに、
     前記ユーザプログラムが参照するデータの値を変更するための指示を受け付けるステップと、
     前記ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、前記入出力変数に対応付けられたアドレスを特定するステップと、
     前記特定されたアドレスに保持されている値を指示された値に変更するステップとを実行させる、システムプログラム。
  7.  ファンクションブロックを含むユーザプログラムをデバッグするデバッグ方法であって、
     前記ユーザプログラムが参照するデータの値を変更するための指示を受け付けるステップと、
     前記ファンクションブロックに関連付けられた入出力変数の値の変更が指示されると、当該ファンクションブロックの過去の実行状態を参照することで、前記入出力変数に対応付けられたアドレスを特定するステップと、
     前記特定されたアドレスに保持されている値を指示された値に変更するステップとを備える、デバッグ方法。
PCT/JP2022/014417 2021-05-27 2022-03-25 制御システム、システムプログラムおよびデバッグ方法 WO2022249713A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2021089544A JP2022182160A (ja) 2021-05-27 2021-05-27 制御システム、システムプログラムおよびデバッグ方法
JP2021-089544 2021-05-27

Publications (1)

Publication Number Publication Date
WO2022249713A1 true WO2022249713A1 (ja) 2022-12-01

Family

ID=84228675

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2022/014417 WO2022249713A1 (ja) 2021-05-27 2022-03-25 制御システム、システムプログラムおよびデバッグ方法

Country Status (2)

Country Link
JP (1) JP2022182160A (ja)
WO (1) WO2022249713A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001209412A (ja) * 2000-01-25 2001-08-03 Omron Corp シーケンスプログラムのシミュレーション装置
JP2009104227A (ja) * 2007-10-19 2009-05-14 Omron Corp Plc制御プログラム開発装置及びプログラム
JP2016045712A (ja) * 2014-08-22 2016-04-04 株式会社日立産機システム プログラマブルロジックコントローラ

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001209412A (ja) * 2000-01-25 2001-08-03 Omron Corp シーケンスプログラムのシミュレーション装置
JP2009104227A (ja) * 2007-10-19 2009-05-14 Omron Corp Plc制御プログラム開発装置及びプログラム
JP2016045712A (ja) * 2014-08-22 2016-04-04 株式会社日立産機システム プログラマブルロジックコントローラ

Also Published As

Publication number Publication date
JP2022182160A (ja) 2022-12-08

Similar Documents

Publication Publication Date Title
JP6299064B2 (ja) 制御装置、制御方法、およびプログラム
JP2019053459A (ja) 制御装置および制御方法
WO2010017835A1 (en) A system and a method for off-line programming of an industrial robot
JP2019061467A (ja) サポート装置およびサポートプログラム
JP6362821B2 (ja) 制御装置、制御方法および命令セット
JP7327225B2 (ja) ロボット制御システムおよび制御方法
WO2020246097A1 (ja) サポート装置およびサポートプログラム
WO2022249713A1 (ja) 制御システム、システムプログラムおよびデバッグ方法
JP7067520B2 (ja) 開発支援装置、開発支援装置の制御方法、情報処理プログラム、および記録媒体
JP7077848B2 (ja) 制御装置
JP2014199485A (ja) 情報処理装置および情報処理プログラム
JP6881174B2 (ja) 制御装置および制御方法
JP7151161B2 (ja) 制御システム、サポート装置、サポートプログラム
JP7247808B2 (ja) 制御システム、解析方法およびプログラム
WO2021024520A1 (ja) 情報処理装置、サポートプログラムおよびサポートシステム
JP7036064B2 (ja) 制御装置およびソフトウェアのデプロイ方法
JP2008033572A (ja) 画面作成装置、画面作成プログラムおよびそれを記録した記録媒体
JP7375632B2 (ja) 制御システムおよびサポート装置
JP2002073120A (ja) プログラマブルコントローラのプログラミング装置とその方法
WO2023157091A1 (ja) 画像生成プログラム、画像生成装置、プログラマブルコントローラシステム及び画像生成方法
JP2023151876A (ja) 制御装置、制御方法、開発支援装置、及びプログラム
JP2009157534A (ja) プログラム作成支援システム、そのプログラマブルコントローラ支援装置、プログラマブル表示器支援装置
van der Linden et al. Towards evolvable state machines for automation systems
JP2023151965A (ja) 制御装置、制御方法、開発支援装置、及びプログラム
JP2022118822A (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: 22810989

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

Country of ref document: EP

Kind code of ref document: A1