WO2021199519A1 - 制御装置、プログラムおよび制御方法 - Google Patents

制御装置、プログラムおよび制御方法 Download PDF

Info

Publication number
WO2021199519A1
WO2021199519A1 PCT/JP2020/047256 JP2020047256W WO2021199519A1 WO 2021199519 A1 WO2021199519 A1 WO 2021199519A1 JP 2020047256 W JP2020047256 W JP 2020047256W WO 2021199519 A1 WO2021199519 A1 WO 2021199519A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
control
control device
data
execution
Prior art date
Legal status (The legal status 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 status listed.)
Ceased
Application number
PCT/JP2020/047256
Other languages
English (en)
French (fr)
Inventor
征彦 仲野
裕希 三宅
嵩史 大倉
太田 政則
哲司 若年
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Omron Corp
Original Assignee
Omron Corp
Omron Tateisi Electronics Co
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 Omron Corp, Omron Tateisi Electronics Co filed Critical Omron Corp
Priority to CN202080097305.2A priority Critical patent/CN115176208B/zh
Priority to US17/908,134 priority patent/US20230359487A1/en
Priority to EP20928541.0A priority patent/EP4130899A4/en
Publication of WO2021199519A1 publication Critical patent/WO2021199519A1/ja
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

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/00Program-control systems
    • G05B19/02Program-control systems electric
    • G05B19/04Program 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/15Plc structure of the system
    • G05B2219/15079Multitasking, real time multitasking
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25343Real time multitasking
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Definitions

  • This disclosure relates to a control device that executes a plurality of programs having different priorities.
  • Patent Document 1 discloses a control device that sequentially executes a plurality of tasks according to the priority of each task.
  • control device such as a PLC
  • the execution priority of the program that controls the control target is set high.
  • a program related to a system service different from the so-called control has a low execution priority and is executed in the free time of the control cycle.
  • the control device that controls the control target includes a processor, a storage unit that stores a plurality of programs, and a scheduler that manages a program that causes the processor to execute according to a priority within a predetermined cycle.
  • the plurality of programs in the storage unit are the programs having the highest execution priority executed by the processor in the cycle, and are executed by the first program for the real-time control processing of the controlled object and the first program. It is a low-priority program and is executed when the second program for related processing related to real-time control and the execution priority are lower than the second program and there is free time in the processor in the cycle.
  • the scheduler starts executing the second program within a cycle, and then the processor if a predetermined type of instruction code is executed in the second program. Includes a switching unit that interrupts the execution of the second program and starts the execution of the third program.
  • the switching unit of the scheduler starts the execution of the second program when the processor is made to execute the program according to the priority in the cycle, and then is predetermined in the second program.
  • the processor interrupts the execution of the second program and starts the execution of the third program.
  • the real-time control process includes a process of generating a command value to a controlled object based on an intermediate code generated by the related process, and a predetermined type of command code extends over a plurality of cycles when executed. Contains instruction codes that generate intermediate codes.
  • the command value can be generated in the real-time control process based on the intermediate code over a plurality of cycles generated in advance.
  • the predetermined type of instruction code includes a waiting instruction code and a waiting instruction code described by using a code for determining whether the waiting condition is satisfied.
  • the processor interrupts the execution of the second program and starts the execution of the third program. Can be done.
  • the second program includes a program written in an interpreted language.
  • control device can determine whether or not a predetermined type of instruction code is executed by using the analysis result of the instruction code by the interpreter.
  • the system service includes processing a time series database that stores records containing data related to the controlled object in a time series.
  • control device suspends the execution of the second program and starts the execution of the third program, so that the processing time of the time-series database for storing the records containing the data related to the controlled object in the time series Can be secured within the cycle.
  • control device further sequentially stores, for each cycle, a data generation unit that generates data for configuring records to be stored in the time-series database, and data generated by the data generation unit. It comprises a non-blocking queue formed on volatile main memory, and the system service includes processing to read data from the non-blocking queue and store it in a time series database.
  • data generated at a relatively high speed within a cycle can be stored in a time series database having a relatively slow access speed via a non-blocking queue.
  • the controller comprises a time series database.
  • the control device can include a time series database internally.
  • control device further includes a remaining amount monitoring unit that monitors the remaining amount of memory in the non-blocking queue, and the switching unit informs the processor that the remaining amount of memory is being executed based on the result of comparison between the remaining amount of memory and the threshold value.
  • the execution of the second program is interrupted, and the execution of the third program is started.
  • the controller suspends the execution of the second program being executed and starts the execution of the third program based on the result of the comparison between the remaining memory of the non-blocking queue and the threshold value. Can be made to.
  • the first program includes an instruction code for related processing to be executed when the execution of the second program is interrupted.
  • the control device when the execution of the second program is interrupted, the control device can execute the instruction code of the related processing during the execution of the first program.
  • the program according to this disclosure is a program executed by a control device having a processor for controlling a controlled object, and is a scheduler program that manages a program that causes the processor to execute according to a priority within a predetermined cycle.
  • a second program for related processing related to real-time control, and a third program of system services that is executed when there is free time in the processor, which has a lower execution priority than the second program.
  • the scheduler program starts execution of the second program within the cycle, and when a predetermined type of instruction code is subsequently executed in the second program, the processor executes the second program. Includes a switch program that interrupts and starts execution of a third program.
  • the switch program is executed, so that the time for executing the third program can be secured within the cycle.
  • the switch program is executed, so that the time for executing the third program can be secured within the cycle.
  • the control method is a control method for controlling a control device having a processor for controlling a controlled object, and the control device has the highest execution priority executed by the processor in a predetermined cycle.
  • a step of managing a program to be executed according to a degree is provided, and the step of managing the second program starts execution in a cycle, and then a predetermined type of instruction code is executed in the second program. It includes a step of determining whether or not to execute, and, if based on the determination, a step of causing the processor to suspend the execution of the second program and start the execution of the third program.
  • the processor while the processor is executing the program according to the priority, it is possible to secure the time for executing the third program within the cycle. As a result, it is possible to provide a mechanism that can secure a time during which the system service can be executed within a predetermined cycle.
  • FIG. 1 is a diagram schematically showing an application example.
  • the control device 100 for controlling the control target provided in the FA production site includes a processor 102, a secondary storage device 108 such as an HDD (Hard Disc Drive), a scheduler 25, and a time series database. 180 and.
  • the control device 100 includes a controller such as a PLC.
  • the “controlled object” includes a machine or equipment, a sensor, or the like provided in the FA production line and subject to control. Machines or equipment include mechanical mechanisms such as robots, tables and conveyors.
  • the scheduler 25 manages a program to be executed by the processor 102 according to the priority within a predetermined cycle.
  • the time-series database 180 is configured to store records including data related to the control target generated for each cycle in the storage in a time-series manner.
  • the predetermined cycle corresponds to the control cycle T.
  • the secondary storage device 108 stores a plurality of programs so that the processor 102 can read them.
  • the program stored in the secondary storage device 108 includes a first program, a second program, and a third program.
  • the first program is the program having the highest execution priority executed by the processor 102 in the control cycle T, and is executed for the real-time control process of the controlled object.
  • the second program is a program having a lower execution priority than the first program, and is executed for related processing related to real-time control.
  • the third program is a system service program having a lower execution priority than the second program, and is executed when there is free time in the processor 102 in the control cycle T.
  • the free time of the processor 102 indicates a period of idle state in which the processor 102 is not executing a program (process, task).
  • the first program includes an "IEC program".
  • the IEC program is a term that includes a program in which the entire program is scanned for each execution and one or more command values are calculated for each execution.
  • An IEC program typically includes a program consisting of one or more instructions written in accordance with the International Standard IEC 61131-3 defined by the International Electrotechnical Commission (IEC).
  • the IEC program may include instructions from a logic processing unit for sequence control and a motion processing unit for motion control.
  • all the programs are executed (scanned) every control cycle T.
  • IEC programs are suitable for controls that require immediacy and high speed, such as real-time control of objects.
  • the IEC program is not limited to the instructions described in accordance with the international standard IEC61131-3, and may include instructions independently specified by the PLC manufacturer or vendor.
  • the logic processing unit of sequence control basically executes a program (sequence program) described by one or more logic circuits that calculate input values, output values, internal values, etc. in order from the beginning to the end. Is. In one control cycle T, the program is executed from the beginning to the end, and in the next control cycle T, the program is executed again from the beginning to the end.
  • the sequence program is a program that expresses an electric circuit.
  • the motion processing unit of motion control follows the intermediate code output by the control application processing unit, which will be described later, with respect to the position, speed, acceleration, jerk, angle, angular speed, and angular acceleration of the servomotor and other actuators included in the control target. , Includes processing to calculate numerical values such as angular jerk as command values. Also in motion control, a program (motion processing program) described by a function block, a numerical calculation formula, or the like is executed from the beginning to the end in one control cycle T. That is, the command value is calculated (updated) for each control cycle T. Since the intermediate code used by the motion processing unit often includes an instruction capable of calculating a command value over a plurality of control cycles T, the timing at which the motion processing unit acquires the intermediate code does not have to be each control cycle T. good.
  • the second program includes a control application program.
  • the control application program is executed by the control application processing unit, for example, a device or machine that performs a specific processing or operation using CNC (Computer Numerical Control) and / or an industrial robot, and theirs. Processing related to control can be realized.
  • CNC Computer Numerical Control
  • the second program includes a program consisting of one or more instructions for realizing related processing related to real-time control of the controlled object, and is basically a control application program not included in the "IEC program". Including programs such as. As an example, the second program is described in the G language in CNC and in the robot language in industrial robot control. These languages include interpreted languages. The second program written in the interpreter language is executed by an interpreter method that sequentially interprets and executes the instruction code. The second program is not limited to the program written in the interpreter language, and may be written in the same IEC program language as the first program.
  • the processor 102 provides an interpreter by executing an interpreter program.
  • the interpreter interprets one or more instruction codes described in the second program, and based on the interpreted contents, generates an intermediate code for the motion processing unit to calculate the command value for each control cycle T. do. Since the intermediate code is generated for each one or a plurality of instruction codes described in the second program, a plurality of intermediate codes are often generated from one second program. The generation of such intermediate code can be included in the related processing described above.
  • a function capable of calculating a command value can be specified by inputting the time (or time) of the control cycle T. That is, the intermediate code may be a function for the motion processing unit to calculate a command value for each control cycle T. By using such a function, the motion processing unit can calculate the command value in each control cycle T by sequentially referring to the intermediate code generated by the second program.
  • the scheduler 25 causes the processor 102 to execute the first program, the second program, and the third program according to the priority of each program in the control cycle T.
  • Each of the first to third programs is set with a priority indicating the degree to which the program should be executed with priority over other programs.
  • the processor 102 starts executing the first program (time t0), and when the first program finishes executing, starts executing the second program (time). t1).
  • the switching unit 26 included in the scheduler 25 switches the program to be executed by the processor 102 (step R2, time t2). In the switching, the switching unit 26 causes the processor 102 to suspend the execution of the second program and start the execution of the third program (steps R3 and R4).
  • the free time of the processor 102 is provided in the control cycle T, and the third program is executed in this free time. As a result, it is possible to secure a time during which the system service can be executed within the control cycle T.
  • the system service may include, for example, processing of the time series database 180. Therefore, the processing time of the time series database 180 can be secured within the control cycle T.
  • FIG. 2 is a schematic diagram showing an overall configuration example of the control system 1 according to the embodiment.
  • the control system 1 according to the embodiment includes a control device 100 that controls a controlled object as a main component.
  • the control device 100 may be embodied as a kind of computer such as a PLC.
  • the control device 100 is connected to the field device group 8 via the fieldbus 2 and is connected to one or more display devices 300 via the fieldbus 4.
  • the control device 100 exchanges data with and from the connected device via each bus or network.
  • fieldbus is also referred to as “fieldbus”, but for the sake of simplification of description, it is collectively referred to as “fieldbus” in the following description. That is, the "fieldbus” of the embodiment may include a "field network” in addition to the "fieldbus".
  • the control device 100 performs a control calculation that executes various calculations for controlling the manufacturing device and the equipment.
  • the control device 100 includes data measured by the field device group 8 and transferred to the control device 100 (hereinafter, also referred to as “input data”) and various types of data calculated by the control calculation process. Performs input / output processing to acquire data.
  • the control device 100 further has a time series database 180.
  • the time series database 180 stores various data acquired by the input / output process in a time series.
  • the time series database 180 is shown as a time series DB 180.
  • control device 100 performs a data generation process for generating a record including data related to a designated control target
  • time series database 180 stores the data generated by the data generation process in a time series. ..
  • time series data is a series of values obtained by continuously (or discontinuously) observing changes in data (observed values) for an arbitrary object over time. Means.
  • the "observed value” is a concept that collectively refers to a value (actual value) that can be used in a control calculation in the control device 100, and is typically acquired from a controlled object and input to the control calculation. Values (measured values obtained from the field, etc.), output values for the control target determined by the control operation based on the acquired input values (command values given to the field, etc.), operations calculated in the process of the control operation It can include values (arbitrary variable values) and the like. That is, the "observed value” includes an arbitrary value that can be stored as data in the control device 100 or can be output externally as data from the control device 100.
  • EtherCAT registered trademark
  • EtherNet registered trademark
  • DeviceNet registered trademark
  • CompoNet registered trademark
  • the field device group 8 includes a device that collects input data from a controlled object or a manufacturing device or a production line related to control (hereinafter, also collectively referred to as a “field”).
  • a device for collecting such input data an input relay, various sensors (for example, an analog sensor, a temperature sensor, a vibration sensor, etc.) and the like are assumed.
  • the field device group 8 further includes a device that gives some action to the field based on a command (hereinafter, also referred to as “output data”) generated by the control device 100.
  • output data As a device that exerts some action on such a field, an output relay, a contactor, a servo driver and a servo motor, and any other actuator are assumed.
  • the field device group 8 exchanges data including input data and output data with the control device 100 via the field bus 2.
  • the field device group 8 includes a remote I / O (Input / Output) device 12, a relay group 14, an image sensor 18, a camera 20, a servo driver 22, and a servo motor 24. Includes an industrial robot 251 and a robot controller 23.
  • the field device group 8 is not limited to these, and any device may be adopted as long as it is a device capable of collecting input data or a device capable of performing some action based on output data.
  • the remote I / O device 12 is a communication coupler that communicates via the fieldbus 2 and an input / output unit for acquiring input data and outputting output data (hereinafter, also referred to as “I / O unit”). And include. Input data and output data are exchanged between the control device 100 and the field via such an I / O unit.
  • FIG. 2 shows an example in which digital signals are exchanged as input data and output data via the relay group 14.
  • the I / O unit may be directly connected to the fieldbus.
  • FIG. 2 shows an example in which the I / O 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 outputs the processing result to the control device 100.
  • the servo driver 22 drives the servo motor 24 according to output data (for example, position command, speed command, etc.) from the control device 100.
  • the display device 300 connected to the control device 100 via the fieldbus 4 receives an operation from the user and outputs a command or the like corresponding to the user operation to the control device 100, and the control device 100 outputs a command or the like according to the user operation.
  • the support device 200 may be connectable to the control device 100.
  • the support device 200 is a device that supports the preparation necessary for the control device 100 to control the controlled object.
  • the support device 200 includes a program development environment (program creation / editing tool, parser, compiler, etc.) executed by the control device 100, parameters (configuration) of the control device 100 and various devices connected to the control device 100. It provides a setting environment for setting the operation, a process of outputting the generated user program to the control device 100, a process of modifying / changing the user program executed on the control device 100 online, and the like.
  • the control device 100 also has a gateway process for outputting the data acquired by the input / output process and / or the data stored in the time series database 180 to the external device.
  • FIG. 2 shows, as typical examples, a manufacturing execution system (MES: Manufacturing Execution System) 400 and an IoT (Internet of Things) service 450, which are connected to the control device 100 via an upper network 6.
  • the control device 100 can provide information from the manufacturing device or equipment to be controlled to these external systems and services.
  • MES Manufacturing Execution System
  • IoT Internet of Things
  • the manufacturing execution system 400 acquires information from the manufacturing equipment and facilities to be controlled, monitors and manages the entire production, and can also handle order information, quality information, shipping information, and the like.
  • a database for storing information may be arranged inside the manufacturing execution system 400 or in parallel with the manufacturing execution system 400.
  • the control device 100 can acquire manufacturing data indicating a manufacturing state in the manufacturing device or equipment to be controlled from the manufacturing execution system 400.
  • the IoT service 450 is assumed to be a kind of cloud service composed of one or more computers connected to the upper network 6 or connected to the Internet connected to the upper network 6.
  • the system constituting the IoT service 450 performs communication processing and transmits arbitrary information transmitted from the control device 100 to one or more processors (for example, CPU (Central Processing Unit), MPU (Micro-Processing Unit), GPU ( Graphics Processing Unit), etc.) and a system that outputs a predetermined output.
  • processors for example, CPU (Central Processing Unit), MPU (Micro-Processing Unit), GPU ( Graphics Processing Unit), etc.
  • the IoT service 450 is envisioned as a system that acquires information from controlled manufacturing equipment and facilities and performs macro or micro analysis. For example, data mining that extracts some characteristic trends contained in information from controlled manufacturing equipment and facilities, and machine learning tools for performing machine learning based on information from controlled target equipment and machines are assumed. Will be done.
  • the control device 100 may be communicably connected to another control device 100.
  • FIG. 3 is a block diagram showing a hardware configuration example of the control device 100 according to the embodiment.
  • the control device 100 includes an arithmetic processing unit and one or more I / O units 124-1, 124-2, ....
  • the control device 100 includes a processor 102, a chipset 104, a main storage device 106, a secondary storage device 108 corresponding to internal storage, an upper network controller 110, a USB (Universal Serial Bus) controller 112, and an external storage. It includes an interface 114, a local bus controller 122, field bus controllers 118 and 120, a counter 126, and an RTC (Real Time Clock) 128.
  • the processor 102 is composed of a CPU, an MPU, a GPU, etc., reads various programs stored in the secondary storage device 108, expands them in the main storage device 106, and executes the control according to the control target. , Realize various processes as described later.
  • the secondary storage device 108 is composed of, for example, a non-volatile storage device such as an HDD (Hard Disk Drive) or an SSD (Solid State Drive).
  • the main storage device 106 is composed of a volatile storage device such as a DRAM (Dynamic Random Access Memory) or a SRAM (Static Random Access Memory).
  • the chipset 104 realizes the processing of the control device 100 as a whole by controlling the processor 102 and each device.
  • the secondary storage device 108 in addition to the system program for realizing the basic operation, a user program created according to the manufacturing device or equipment to be controlled is stored.
  • the upper network controller 110 exchanges data with the manufacturing execution system 400, the IoT service 450 (see FIG. 2), and the like via the upper network 6.
  • the host network controller 110 is typically realized by using a dedicated circuit such as an ASIC (Application Specific Integrated Circuit) or an FPGA (Field-Programmable Gate Array).
  • the USB controller 112 controls the exchange of data with the support device 200 via a USB (Universal Serial Bus) connection.
  • the USB controller 112 is typically realized using a dedicated circuit such as an ASIC or FPGA.
  • the external storage interface 114 is configured so that the external storage 116 can be attached and detached, data can be written to the external storage 116, and various data (user programs, trace data, etc.) can be read from the external storage 116.
  • the external storage 116 corresponds to, for example, a volatile storage device including a flash memory such as an SD card.
  • the counter 126 is used as a time reference for managing the execution timing of various processes in the control device 100.
  • the counter 126 typically increments or decrements the counter value at predetermined intervals.
  • the counter 126 may be implemented by using a high precision event timer (HPET: High Precision Event Timer) or the like, which is a hardware timer arranged on the system bus that drives the processor 102, or ASIC or FPGA. It may be mounted using a dedicated circuit such as.
  • HPET High Precision Event Timer
  • the RTC128 is a kind of counter that performs a timekeeping operation, and provides the current time to the processor 102 or the like.
  • the local bus controller 122 is an interface for exchanging data with the I / O units 124-1, 124-2, ... Mounted on the control device 100.
  • the local bus controller 122 is typically realized by using a dedicated circuit such as an ASIC or FPGA, but may be realized by software implementation.
  • the local bus controller 122 is mainly composed of a processor, a main storage device, a storage, etc., and the processor reads out a system program (firmware) stored in the storage and puts it in the main storage device. By deploying and executing, the necessary processing is realized.
  • the local bus controller 122 is a counter 123 used as a time reference for managing timing with the I / O units 124-1, 124-2, ..., Which are other devices connected via the local bus. have. Similarly, each of the I / O units 124-1, 124-2, ... Has a counter 125 used as a time reference for managing timing between the local bus controller 122 and other I / O units. doing. As the counter 123 and the counter 125, the same configuration as that of the counter 126 described above can be adopted.
  • the fieldbus controller 118 controls the exchange of data with other devices via the fieldbus 2.
  • the fieldbus controller 118 is typically realized by using a dedicated circuit such as an ASIC or FPGA, but may be realized by software implementation.
  • the field bus controller 118 is mainly composed of a processor, a main storage device, a storage, etc., and the processor reads out a system program (firmware) stored in the storage and puts it in the main storage device. By deploying and executing, the necessary processing is realized.
  • the fieldbus controller 118 has a counter 119 used as a time reference for managing timing with other devices.
  • the fieldbus controller 120 exchanges data with other devices via the fieldbus 4.
  • the fieldbus controller 120 is typically realized by using a dedicated circuit such as an ASIC or FPGA, but may be realized by software implementation.
  • the field bus controller 120 is mainly composed of a processor, a main storage device, a storage, and the like, and the processor reads a system program (firmware) and the like stored in the storage to the main storage device. By deploying and executing, the necessary processing is realized.
  • the fieldbus controller 120 has a counter 121 used as a time reference for managing timing with other devices.
  • each device also has a counter used as a time reference for managing timing with the fieldbus controller 118 or the fieldbus controller 120.
  • the same configuration as the counter 126 described above can be adopted.
  • the fieldbus controllers 118 and 120 operate as a communication master for performing constant periodic communication via the fieldbus, and the counter value indicated by the counter of each device connected to the fieldbus and the counter indicated by the counters 119 and 121. The difference from the value is sequentially monitored, and if necessary, a synchronization signal for instructing the device in which the counter value is deviated to be corrected is output. In this way, the fieldbus controllers 118 and 120 perform the synchronization management process of giving a command to the device to match the counter value indicated by the counter of the device with the counter value indicated by the counters 119 and 121.
  • the secondary storage device 108 stores a plurality of programs including the system program 149 and the user program.
  • the system program 149 includes an OS (Operating System), an interpreter program 151 that realizes an interpreter, and the like.
  • the user program includes a control program 152, a system service program 195 that realizes a system service, a variable management program 160, a scheduler program 170 that realizes a scheduler 25 when executed, an input program 172, and an output program 174.
  • the scheduler program 170 includes a switch program 171 that realizes the switching unit 26 when executed.
  • the control program 152 includes an IEC program 1541 which is an embodiment of the "first program”, a control application program 1542 which is an embodiment of the "second program”, a database writing program 156, and a remaining amount monitoring program 1544. And include.
  • the database writing program 156 and the remaining amount monitoring program 1544 are executed, the processing related to the NBQ (Non-Blocking Queue) 158, which will be described later, is realized.
  • the NBQ 158 is provided in the control device 100 in connection with database processing.
  • the system service program 195 includes a database program 190, an upper connection program 192, and a gateway program 194, which are examples of the "third program".
  • the database program 190 includes a database read program 191 that, when executed, reads data from the NBQ 158 for storage in the time series database 180.
  • the time-series database 180 included in the control device 100 may be realized by utilizing the storage area provided by the secondary storage device 108 and / or the external storage 116.
  • the secondary storage device 108 and the external storage 116 may be collectively referred to as “storage”.
  • the volatile main storage device 106 may be referred to as "memory”.
  • the time-series database 180 in the present embodiment includes, in addition to the storage area for storing the database file, processing by the processor 102 or the like for realizing various operations such as generation, writing, and reading of the database file, and various operations. It includes a buffering area or a working area for realizing the above.
  • the storage area included in the time series database 180 can be provided in the main storage device 106 or the secondary storage device 108.
  • FIG. 3 shows a configuration example in which the necessary processing is provided by the processor 102 executing the program, and a part or all of the provided processing is provided by a dedicated hardware circuit (for example, ASIC). Alternatively, it may be implemented using an FPGA or the like). 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). In this case, virtualization technology may be used to execute a plurality of OSs having different uses in parallel, and to execute necessary applications on each OS.
  • a general-purpose architecture for example, an industrial personal computer based on a general-purpose personal computer.
  • virtualization technology may be used to execute a plurality of OSs having different uses in parallel, and to execute necessary applications on each OS.
  • control device 100, the support device 200, and the display device 300 are configured as separate bodies, but all or part of these processes are performed by a single device. You may adopt the structure which is concentrated in.
  • Control device software configuration example> Next, a software configuration example of the control device 100 according to the embodiment will be described.
  • FIG. 4 is a block diagram showing a software configuration example of the control device 100 according to the present embodiment.
  • the control device 100 includes a PLC engine 150, a time series database 180, an upper connection program 192, and a gateway program 194.
  • the PLC engine 150 is typically executed by the processor 102 of the control device 100 reading the system program stored in the secondary storage device 108 under the OS, deploying it in the main storage device 106, and executing the system program.
  • An execution environment for various programs is provided, and various programs can be executed under the execution environment.
  • the PLC engine 150 is configured to selectively execute the control program 152, the variable management program 160, the scheduler program 170, the input program 172, and the output program 174.
  • NBQ158 is realized in the PLC engine 150.
  • NBQ158 is realized by using, for example, a shared memory area prepared on a memory (volatile main storage device 106) that shares access from a plurality of tasks or processes.
  • the NBQ 158 is realized by the buffer management process provided by the processor 102 executing the system program in addition to the shared memory area on the main storage device 106.
  • the buffer management process defines a buffer pool consisting of a plurality of data areas (shared buffers described later) divided by a predetermined size in the shared memory area, and the state of each shared buffer (free, data is being stored, reserved). Etc.), including the process of managing such things.
  • the system program for realizing the buffer management process includes a processor instruction such as a CAS (Compare And Swap) instruction for realizing a process such as writing data to an empty buffer.
  • the buffer management process for realizing the NBQ 158 has an interface for accepting data writing from the control program 152 and an interface for accepting the dequeue from the database manager 182. With each of these interfaces, NBQ158 can be used in each of the logical data transfer paths from the database write program 156 to the time series database 180.
  • variable management program 160, the scheduler program 170, the input program 172, and the output program 174 may be implemented as part of the system program. In this case, each process provided by these programs may be provided by a single system program.
  • the control program 152 includes an IEC program 1541, a control application program 1542, a database writing program 156, and a remaining amount monitoring program 1544.
  • the remaining amount monitoring program 1544 monitors the remaining amount of memory indicating the size of the free area of NBQ158, and outputs the monitoring result. Since the data stored in the NBQ 158 is read out and stored in the time series database 180, the storage area in which the read data is stored constitutes a free area until the data is subsequently written.
  • the database write program 156 corresponds to a code that provides at least a part of the data generation process of the control device 100, and corresponds to, for example, every predetermined cycle (for example, every control cycle) by an instruction described in the IEC program 1541. Is called to generate data for constructing records to be stored in the time series database 180. More specifically, the NBQ 158 is arranged in the data transfer path from the database write program 156 to the time series database 180, and the database write program 156 writes the specified data directly to the time series database 180. Write to NBQ158 instead of writing.
  • NBQ158 is a kind of buffer for continuing the processing of the database writing program 156 without waiting for the completion of data writing to the time series database 180.
  • the data from the database writing program 156 is stored in the NBQ 158 in the form of a queue.
  • the NBQ 158 sequentially stores the data generated by the database writing program 156.
  • the data (queue) stored in the NBQ 158 is sequentially read out and stored in the time series database 180.
  • the serialization communication program may be combined with the database writing program 156.
  • the serialization communication program performs serialization processing on the data written from the database writing program 156 to the time series database 180. More specifically, the serialization communication program is executed by the PLC engine 150 and executes a process (serialization) of converting time series data into a storeable byte string. The target data is converted into a predetermined byte string by serialization processing before being stored in the time series database 180.
  • the time-series database 180 includes a database manager 182 and a write buffer 184, in addition to a database file 186 in which data from the database write program 156 is stored in time series.
  • the database manager 182 is typically realized by the processor 102 of the control device 100 executing the database program 190.
  • the database manager 182 is in charge of adding records to the database file 186 and searching and extracting the records constituting the database file 186 in response to an external request.
  • the read processing unit 183 (see FIG. 5) is realized.
  • the read processing unit 183 sequentially reads the data stored in the NBQ 158 and adds it to the database file 186.
  • the write buffer 184 is realized by using, for example, a storage area prepared on the main storage device 106 or a storage area prepared on the cache memory built in the storage.
  • the database writing program 156 generates time-series data records from the data read from the NBQ 158 by the read processing unit 183, and sequentially stores the generated time-series data records in the database file 186.
  • the database file 186 stores at least a part of the input data, the output data, the calculation data calculated in the control calculation by the control program 152, the manufacturing data, and the event data in a time series.
  • the variable management program 160 manages values such as input data and output data that can be used by the PLC engine 150 in the form of variables. More specifically, the variable management program 160 includes a system variable 162 indicating the state of the control device 100 and a device variable indicating a value held by various devices connected to the control device 100 via the local bus or the field bus. It manages 164 and a user variable 166 indicating a value held by the IEC program 1541 executed by the control device 100.
  • the scheduler program 170 having the switch program 171 manages resource allocation, execution timing, and the like for processes and tasks corresponding to execution units of the program executed by the control device 100.
  • the input program 172 performs a process of acquiring input data from various devices connected to the control device 100 via a local bus or a field bus.
  • the output program 174 outputs a command value (output data) calculated by the IEC program 1541 executed by the control device 100 and the control application program 1542 to the target device connected via the local bus or the field bus.
  • a statistical record executed by the PLC engine 150 which statistically processes input data, output data, arithmetic data, manufacturing data, event data, etc. managed by the control device 100 and then writes to the time series database 180. Further programs may be provided.
  • a method such as fragment aggregation approximation (PAA: Picewise Aggregate Approximation) or symbolization into discrete strings (SAX: Symbolic Aggregate approximation) can be used. PAA can find patterns in time series data, and the found patterns facilitate compression. Alternatively, SAX can facilitate compression and pattern discovery by converting time series data into character strings.
  • the host connection program 192 of the control device 100 acquires manufacturing data from the manufacturing execution system 400.
  • the variable management program 160 manages these acquired input data and manufacturing data as variables.
  • the IEC program 1541 executes a predetermined control operation while referring to the system variable 162, the device variable 164, and the user variable 166 managed by the variable management program 160, and outputs the execution result (output data) to the variable management program. Output to 160.
  • the database writing program 156 writes the specified observation value among the variables managed by the variable management program 160 into the NBQ 158.
  • the database manager 182 of the time-series database 180 sequentially reads the data stored in the NBQ 158 in the form of a queue, and sequentially adds the records composed of the read data to the database file 186.
  • the upper connection program 192 sets the values of the specified variables among the variables managed by the variable management program 160 and / or the specified records among the records constituting the database file 186 of the time series database 180 in a time series. It is output as data to the manufacturing execution system 400.
  • a database connection program may be provided. Such a database connection program may, for example, send a query such as SQL to a relational database and execute a process of receiving a response.
  • the gateway program 194 performs time-series data on the values of the specified variables among the variables managed by the variable management program 160 and / or the specified records among the records constituting the database file 186 of the time-series database 180. Is output to the IoT service 450.
  • the IoT service 450 performs behavior analysis based on time-series data from the control device 100, and performs predictive maintenance of equipment and devices to be controlled.
  • FIG. 5 is a schematic diagram showing an example of the functional configuration of the control device 100 according to the embodiment.
  • the control device 100 includes a control application processing unit 30, a program processing unit 40, an I / O processing unit 50, a scheduler 25, a switching unit 26, a field network interface 55, and an upper network. It includes an interface 51 and a system service processing unit 185.
  • the control device 100 of FIG. 5 further includes an NBQ 158 and a time series database 180 in association with these components.
  • the scheduler 25 executes the control application processing unit 30, the program processing unit 40, the I / O processing unit 50, and the system service processing unit 185 in an order based on the execution priority of the program corresponding to each of these units. .. The order of implementation based on priority will be described later.
  • the control application processing unit 30 executes the control application program 1542 in a cycle synchronized with the control cycle T according to the scheduling of the scheduler 25.
  • the control application program 1542 is executed every two control cycles T, i.e. 2T.
  • the execution cycle of the control application program 1542 is not limited to 2T.
  • the control application processing unit 30 includes a program analysis unit 34 and a buffer 32 for storing the intermediate code 33.
  • the program analysis unit 34 analyzes the instruction code described in the control application program 1542 by using the interpreter 31.
  • the control application program 1542 generates the intermediate code 33 by being executed and stores it in the buffer 32.
  • a part of the memory of the control device 100 constitutes a buffer 32.
  • the program analysis unit 34 detects that a predetermined type of instruction code has been executed during the execution of the control application program 1542, the program analysis unit 34 stores the detection result as a flag F in the shared memory 159.
  • a part of the memory of the control device 100 constitutes the shared memory 159.
  • the interpreter 31 of the control application processing unit 30 interprets at least a part of the control application program 1542 and generates the intermediate code 33. That is, the interpreter 31 sequentially interprets and executes the control application program 1542 to generate the intermediate code 33, and stores the generated intermediate code 33 in the buffer 32.
  • the program processing unit 40 executes the IEC program 1541 every control cycle T according to the scheduling of the scheduler 25.
  • the program processing unit 40 executes (scans) the IEC program 1541 every predetermined control cycle T to calculate one or a plurality of command values. That is, the program processing unit 40 calculates the command value for each control cycle T according to the IEC program 1541.
  • the program processing unit 40 includes a logic processing unit 41 that processes logic instructions such as a sequence program included in the IEC program 1541, a motion processing unit 42 that processes motion instructions included in the IEC program 1541, and a database writing unit 43. , The remaining amount monitoring unit 44 and the like.
  • the motion processing unit 42 provides a function of calculating a command value for each control cycle T according to a motion command included in the IEC program 1541. Specifically, the motion processing unit 42 calculates a command value for each control cycle T according to an intermediate code 33 generated in advance by the interpreter 31. That is, the motion processing unit 42 provides a function of calculating a command value for each control cycle T according to the intermediate code 33 stored in advance in the buffer 32. Generally, since the instructions (codes) described in the control application program 1542 are executed sequentially, the calculation cycle of the command value cannot be guaranteed, but by using the intermediate code 33, the motion processing unit 42 controls. The command value can be calculated for each cycle T.
  • the coordinate system corresponding to each control application may be used for the instruction described in the intermediate code 33.
  • the interpreter 31 sequentially queues the generated intermediate code 33 into the buffer 32, and the motion processing unit 42 reads the intermediate code 33 in the order in which it is queued in the buffer 32.
  • the "intermediate code” is a concept including an instruction for calculating a command value for each control cycle T.
  • the “intermediate code” includes one or more instructions, or one or more functions.
  • the intermediate code 33 may be any code as long as the motion processing unit 42 can calculate the command value for each control cycle T.
  • the database writing unit 43 executes the database writing program 156 that is called during the execution of the IEC program 1541.
  • the remaining amount monitoring unit 44 executes the remaining amount monitoring program 1544 called during the execution of the IEC program 1541.
  • the database writing unit 43 that executes the database writing program 156 for each control cycle T is a “data generation unit” that generates data for configuring records to be stored in the time series database 180 for each control cycle T. Corresponds to. Specifically, the database writing unit 43 stores the generated data in the free area of the NBQ 158.
  • the remaining amount monitoring unit 44 monitors the remaining amount of memory corresponding to the size of the free area of NBQ158, compares the remaining amount of memory with the threshold value, and sets the value indicating the comparison result as the variable MR of the shared memory 159. Set.
  • the system service processing unit 185 executes the database program 190 in the free time of the processor 102 in the control cycle T according to the scheduling of the scheduler 25.
  • the system service processing unit 185 includes a database manager 182 having a reading processing unit 183.
  • the read processing unit 183 is realized by calling and executing the database read program 191 during the execution of the database program 190.
  • the read processing unit 183 realizes a process of reading data from the NBQ 158 and storing it in the time series database 180.
  • the upper network interface 51 mediates the exchange of data between the program processing unit 40 and the control application processing unit 30 and the device connected via the upper network 6.
  • the field network interface 55 is an interface between the I / O processing unit 50 and the field.
  • the I / O processing unit 50 executes the variable management program 160.
  • the I / O processing unit 50 executes an I / O refresh process for updating the input data and the output data prior to the execution of the IEC program 1541 by the program processing unit 40.
  • the values input from the fields via the field network interface 55 are set in the system variable 162, the device variable 164, and the user variable 166.
  • the logic processing unit 41 and the motion processing unit 42 perform an operation using the input data set in the system variable 162, the device variable 164, and the user variable 166.
  • command values (basically, logical values) calculated by the logic processing unit 41 and the motion processing unit 42 are calculated in the immediately preceding control cycle T.
  • One or more command values (basically numerical values) are set in the system variable 162, the device variable 164 and the user variable 166, and the set command values are output to the field via the field network interface 55. NS.
  • the NBQ 158 is prepared on the memory (volatile main storage device 106), for example, the memory capacity (size) of the NBQ 158 is limited. Therefore, if the system service processing unit 185 is not granted the right to use the resource including the processor 102 because there is no free time of the processor 102, that is, if the system service processing unit 185 cannot execute the database program 190, the NBQ 158 is free. The area, that is, the remaining memory is insufficient.
  • control device 100 is configured so that the system service processing unit 185 secures the free time of the processor 102 capable of executing the database program 190. This makes it possible to deal with memory exhaustion.
  • the switching unit 26 of the scheduler 25 detects that a predetermined type of instruction code has been executed by the control application program 1542 based on the value of the flag F, the control application is transmitted to the processor 102.
  • the execution of the program 1542 is interrupted to secure the free time of the processor 102, and the processor 102 is started to execute the database program 190 (more specifically, the database read program 191) in the reserved free time.
  • the processor 102 interrupts the execution of the control application program 1542 to secure the free time of the processor 102. , The processor 102 is made to start executing the database program 190 (more specifically, the database read program 191) in the reserved free time.
  • the switching unit 26 transfers the program executed by the processor 102 from the control application program 1542 to the database program 190 based on the value of the flag F or the variable MR while the control application program 1542 is being executed in the control cycle T. Configured to switch. As a result, in the control cycle T, the free time for executing the database read program 191 can be secured, and the memory exhaustion of the NBQ 158 can be avoided.
  • FIG. 6 is a schematic diagram showing a main part of processing related to the time series database 180 in the control device 100 according to the present embodiment.
  • the control device 100 exchanges input data and output data with and from the field device group 8 via a local bus, a field bus, or the like.
  • control program 152 including various operations for controlling the manufacturing device and the equipment is cyclically executed in the control cycle T.
  • the control program 152 includes an instruction for starting the database writing program 156 when the data writing condition is satisfied.
  • the database writing program 156 issues an instruction for writing the specified data (one or more variable values) to the time series database 180. For example, in FIG. 5, a "put" instruction is shown.
  • the data collection processing process 153 which is a process for collecting and processing the data written from the database writing program 156 to the time series database 180, is performed in the control program 152 or in parallel with the control program 152. You may want to do it.
  • Time series database 180 Data from the database writing program 156 is stored in the time series database 180 in time series (time series data).
  • the time-series data stored in the time-series database 180 may be transmitted to a higher-level system and used for analysis processing or the like.
  • necessary time-series data is extracted from the time-series database 180 by using the connection process 402 arranged in the higher-level system such as the manufacturing execution system 400 or the IoT service 450. Then, in the host system, analysis processing 404 such as time series analysis and data mining is performed on the extracted time series data.
  • the time-series data stored in the time-series database 180 may be used in the abnormality detection process 198.
  • the abnormality detection process 198 is realized by executing a program required by the PLC engine 150.
  • the abnormality detection process 198 compares the time-series data from the time-series database 180 with the teacher data acquired in advance, and is a sign that some abnormality has occurred in the controlled object or that the abnormality has occurred. Make a judgment that is seen.
  • cyclic execution is performed in the control program 152 control cycle T (for example, several hundred microseconds to several milliseconds).
  • Data may be written to the time series database 180 in synchronization with the cyclic execution of the control program 152.
  • the time series database 180 is basically configured by using the storage (secondary storage device 108 or external storage 116 (see FIG. 3)).
  • Such storage generally has a large storage capacity, but has a low access speed (particularly, a write speed) and a large fluctuation in the access speed (for example, 100 milliseconds) as compared with the main storage device. ⁇ 1000 milliseconds).
  • control device 100 provides a configuration capable of realizing data writing synchronized with the control cycle T even for the time series database 180 using the storage whose access speed is not high.
  • a lock-free queue NBQ158 (see FIG. 4) is arranged.
  • the execution of the database write program 156 is the data write. You can avoid the situation where you are interrupted by waiting. That is, it is possible to realize data writing to the time series database 180 synchronized with the control cycle T.
  • the input data for example, the measured value of the analog sensor
  • the output data for example, the position command and the speed
  • arithmetic data for example, filter parameters and feature quantities used for abnormality detection processing
  • manufacturing data for example, manufacturing status, product number, etc.
  • the control device 100 includes an observation value related to the controlled object, a time associated with the observation value indicated by the time management process, and / or a counter value associated with the observation value indicated by the internal counter. , You may generate a record.
  • the observed value is a value available to the processor 102.
  • FIG. 7 and 8 are diagrams showing an example of the data structure of the record stored in the time series database 180 in the control device 100 according to the embodiment.
  • the record includes a time field 1821, a counter value field 1822, an index field 1823, and an observed value field 1824.
  • the time field 1821 and the counter value field 1822 store information indicating the timing at which the corresponding data (one or more observed values) is acquired.
  • the time field 1821 stores a time indicating the timing when the corresponding data is acquired (for example, a time managed by RTC128).
  • the counter value field 1822 of the counter value from the counter managed by the control device 100 when the corresponding data is acquired, or the counter value from the counter for managing the timing in the field bus / local bus. At least one is stored.
  • the index field 1823 stores a value (index value) that is incremented / decremented by a predetermined value according to the operation of writing a record to the database. Typically, a value is used that counts up by 1 each time a record is stored. For example, when an instruction to start the database writing program 156 is described in the IEC program 1541, the index value may be incremented according to the execution of the instruction to be started.
  • the specified data (one or more observed values) is stored in the observed value field 1824.
  • the data stored in the observed value field 1824 includes input data, output data, arithmetic data, manufacturing data, event data, and the like.
  • the input data includes digital signals (state values) and analog signals (various measurement signals) acquired from various sensors.
  • information for identifying the sensor that outputs the observed value may be stored together.
  • a command value or the like output to the motion drive, the opening degree controller, or the like may be stored.
  • information for specifying the actuator to which the command value is output may be stored together.
  • variable values, transient values, etc. calculated by executing the IEC program 1541 may be stored.
  • the information for identifying the IEC program 1541 or the task that output the calculation data may be stored together.
  • an execution command value group (for example, a work part number, a lot number, a recipe number, etc.) received from the manufacturing execution system 400 may be stored.
  • the execution command value group may include information that specifies an identification number that uniquely identifies the work, a type of work, and the like.
  • event data information when the observed value exceeds or falls below a predetermined threshold value, information when a predetermined abnormality flag or the like is turned on, may be stored. Information such as variables that generated event data may be included.
  • the event data may be generated when predetermined conditions are satisfied, instead of time-series data that is repeatedly generated or stored at a predetermined cycle.
  • the counter value and / or the time synchronized with the counter may be associated with each other.
  • the record as described above is generated and output for each control cycle T or a predetermined event. For example, in the example shown in FIG. 8, a record is generated and output every 500 ⁇ sec. By generating and outputting records including the specified observation values in time series in this way, various analyzes can be performed based on these time series data.
  • the record shown in FIG. 7 or 8 may be configured as a key-value type.
  • the time field 1821 and the counter value field 1822 may be set as Key
  • the index field 1823 and the observed value field 1824 may be set as Value. That is, each record of the time series data includes the time and the counter value associated with the observed value as a key, and also includes the observed value as the corresponding value.
  • the process of storing the record in the time-series database 180 that the control device 100 has in the own device has been described as a typical example, but the present invention is not limited to this, and the record is transmitted to a higher-level system or the like. It may be. In this case as well, a record as shown in FIG. 7 or 8 may be generated for each control cycle T and transmitted to the target external device by the system service processing unit 185.
  • the database manager 182 and the database file 186 constituting the time series database 180 of the control device 100 do not have to be arranged in the same control device 100. That is, in the control device 100, the database manager 182 of the system service processing unit 185 may read the data from the NBQ 158 and write the record to the database file 186 outside the control device 100. As the outside of the control device 100, storage of another control device 100, storage on the network (network storage), and the like are assumed.
  • the NBQ 158 which is implemented in the control device 100 according to the present embodiment and is arranged in the logical data transfer path from the database write program 156 to the time series database 180, compensates for the slow write speed to the storage. However, it is possible to obtain the effect of compensating for the slow writing speed of the network storage.
  • Period control and switch> 9 to 12 are schematic views showing an example of periodic control in the control device 100 according to the embodiment. With reference to FIGS. 9 to 12, the periodic control and the securing of free time for the system service processing unit 185 will be described.
  • FIG. 9 shows an I / O processing unit 50, a logic processing unit 41 having a database writing unit 43 (abbreviated as DB writing unit 43 in the figure), a motion processing unit 42, and a control application processing unit 30.
  • DB writing unit 43 database writing unit 43
  • FIG. 9 shows an example in which the system service processing unit 185 and the system service processing unit 185 are executed sequentially.
  • Each of these processing units is treated as a "task" in the control device 100.
  • a task is a basic unit to be controlled for allocating resources (computing resources) including a processor 102 of a control device 100, and one or a plurality of programs to be executed are registered or set in each task.
  • the task includes, for example, a primary task, a secondary task, and a system service task.
  • the primary task includes a program having the highest execution priority (hereinafter, also simply referred to as "priority") executed by the processor 102 of the control device 100.
  • the primary task includes an I / O processing unit 50, a logic processing unit 41, and a motion processing unit 42.
  • the primary task is guaranteed to be executed in each control cycle T.
  • the secondary task is a task whose execution cycle is guaranteed although it has a lower priority than the primary task, and includes, for example, the control application processing unit 30.
  • the control application processing unit 30 of the secondary task is executed, for example, in a cycle that is an integral multiple of the control cycle T.
  • the control application processing unit 30 is executed, for example, every cycle 2T, that is, every double control cycle T.
  • the interpreter 31 of the control application processing unit 30 executed with low priority suspends the interpretation of the control application program 1542 before the predetermined control application synchronization cycle (cycle 2T) arrives.
  • the pause timing includes the timing when all the code of the control application program 1542 has been interpreted and executed.
  • the interpreter 31 updates the data shared with the program processing unit 40 every 2T, which is a synchronization cycle (that is, a control application synchronization cycle) which is an integral multiple of the control cycle T.
  • the input data and the output data acquired from the field side may also be updated (data synchronization).
  • the system service task has a lower priority than the secondary task and is executed in the free time of the processor 102 in the control cycle T.
  • the system service task includes the system service processing unit 185.
  • the control device 100 can execute the system service task within the range that guarantees the execution cycle of the primary task and the secondary task.
  • the scheduler 25 realizes task cycle control by managing the execution timing of these tasks (each program included in the tasks) according to the priority. More specifically, the scheduler 25 causes the processor 102 to execute the program of each task according to the priority by allocating the resource to the program of each task at a timely timing and period.
  • the execution time of the control application processing unit 30 becomes long.
  • the pause timing described above may coincide with the end of the cycle 2T.
  • an event of 231 with no free time occurs in the control cycle T.
  • the database writing unit 43 since the event of no free time 231 occurred in the immediately preceding cycle 2T, the database writing unit 43 does not read data from the NBQ 158 until the free time in the subsequent cycle 2T. Data is stored in NBQ158. Therefore, since the NBQ 158 stores data over the control cycle T of N times (N ⁇ 4) up to the free time in the subsequent cycle 2T, by the time the free time in the subsequent cycle 2T arrives, the data is stored. Memory can be exhausted.
  • control device 100 is provided with a predetermined type of instruction code of the control application program 1542 in order to secure the execution time of the system service processing unit 185 in the control cycle T, that is, to avoid memory exhaustion. Switch the task when it detects that it has been executed.
  • the interpreter 31 executes a predetermined type of instruction code of the control application program 1542. Detects whether or not it has been done.
  • the program analysis unit 34 sets the flag F to True.
  • the switching unit 26 of the scheduler 25 detects that the flag F has been changed from False to True, the switching unit 26 switches the task (switch 45). Specifically, the switching unit 26 causes the processor 102 to suspend (interrupt 232) the execution of the control application processing unit 30 and start the system service processing unit 185 to execute.
  • the process for the program analysis unit 34 to detect that a predetermined type of instruction code has been executed will be described later.
  • the control device 100 secures the free time 233 by the interruption 232 of the execution of the control application processing unit 30, and the system service processing unit 185 in the secured free time 233.
  • the read processing unit 183 reads data from the NBQ 158. As a result, the memory exhaustion of NBQ158 can be avoided.
  • control device 100 implements the task switch as shown in FIG. 12 based on the value of the variable MR indicating the remaining memory of the NBQ 158 detected by the remaining amount monitoring unit 44 so that the memory exhaustion can be avoided. ..
  • the primary task includes an I / O processing unit 50, a logic processing unit 41, and a motion processing unit 42.
  • the logic processing unit 41 includes a remaining amount monitoring unit 44 and a control application processing unit 301 in addition to the DB writing unit 43.
  • the remaining amount monitoring unit 44 is realized by executing the remaining amount monitoring program 1544 called during the execution of the IEC program 1541.
  • the control application processing unit 301 is realized by executing a predetermined instruction code described in the IEC program 1541. A predetermined instruction code for realizing the control application processing unit 301 will be described later.
  • the remaining amount monitoring program 1544 may also be configured to include the remaining amount monitoring instruction code described in the IEC program 1541.
  • the remaining amount monitoring unit 44 detects the remaining amount of memory (unit is, for example, percentage) of NBQ158, compares the detected remaining amount of memory with the threshold value, and sets a value based on the comparison result in the variable MR.
  • the threshold value includes a warning threshold value and a monitoring threshold value indicating a value larger than the warning threshold value.
  • the remaining amount monitoring unit 44 sets the variable MR to "Normal” so as to indicate that the memory remaining amount has a sufficient margin, and performs the above comparison. If the result shows (monitoring threshold ⁇ remaining memory> warning threshold), set the variable MR "Monitoring" to indicate that there is a possibility of memory exhaustion, and the above comparison result is (remaining memory ⁇ warning).
  • "Warning" is set in the variable MR so as to indicate that the memory has been exhausted.
  • the switching unit 26 does not execute the task switch 45 when the variable MR indicates “Normal” or “Monitoring” in the control cycle T, but implements the switch 45 when it indicates “Warning”. Specifically, the switching unit 26 causes the processor 102 to suspend the execution of the control application processing unit 30 being executed in the control cycle T 232, executes the switch 45, and starts the system service processing unit 185. As a result, the control device 100 can execute the system service processing unit 185 in the free time 233 caused by the interruption 232 in the control cycle T and read the data from the NBQ 158. As a result, the control device 100 can eliminate the memory exhaustion of the NBQ 158.
  • the remaining amount monitoring unit 44 typically detects the remaining amount of memory of the NBQ 158 at the start of execution of the IEC program 1541 having the control cycle T. As a result, in each control cycle T, the variable MR is set to a value based on the latest remaining memory amount. Therefore, the switching unit 26 can determine whether or not to execute the switch 45 based on the most recently detected remaining memory amount.
  • FIG. 13 is a flowchart schematically showing the processing of the control application processing unit 30 according to the embodiment.
  • FIG. 14 is a flowchart showing the processing of the program analysis unit 34 according to the embodiment.
  • FIG. 15 is a table showing the correspondence between the types of instruction codes and the instruction codes according to the embodiment.
  • FIG. 16 is a flowchart schematically showing the processing of the scheduler 25 according to the embodiment.
  • control application processing unit 30 executes variable synchronization processing (step S1).
  • the variable synchronization process is included in the process of the data synchronization 230 described above. Further, the control application processing unit 30 sets the flag F to False as an initial value in step S1.
  • step S3 When the processing of the control application processing unit 30 is started, the program analysis unit 34 of the interpreter 31 program-analyzes the control application program 1542 (step S3). The details of the program analysis process will be described with reference to FIG.
  • the control application processing unit 30 outputs the execution result of the control application program 1542 (step S5).
  • the control application processing unit 30 stores the intermediate code 33 in the buffer 32 as an execution result.
  • the control application processing unit 30 outputs a completion notification when the execution of the control application program 1542 is completed (step S7).
  • the processing of the program analysis unit 34 of FIG. 14 is carried out with reference to the table of FIG.
  • the table of FIG. 15 is stored, for example, in storage.
  • the table has a predetermined type of instruction code (condition waiting, operation system) and an instruction code corresponding to the type in association with each type.
  • the condition waiting instruction code includes a waiting instruction code and a waiting instruction code described by using a code for determining whether the waiting condition is satisfied.
  • the conditional waiting instruction code is an instruction code instructing not to execute the instruction code of the program on the next line until the waiting conditions are met, that is, until it is determined that the waiting conditions are satisfied.
  • this instruction code for example, an instruction code such as an IF statement or a WHILE statement described using a wait condition and an instruction code such as WAIT, TIMER, SLEEP described using the passage of a predetermined time as a wait condition are used. include.
  • the condition waiting instruction code includes, for example, an instruction code that defines a digital input signal input waiting state, timer processing, in-position check waiting state, etc. on the control application program 1542.
  • the operation system instruction code is an instruction code that generates an intermediate code 33 when executed, and includes, for example, instruction codes related to orbit generation such as MOVE, MOVEC, and MOVES.
  • the intermediate code 33 generated by executing the operation system instruction code enables the operation of the command value over a plurality of control cycles T.
  • the motion processing unit 42 intermediates.
  • the code 33 is read from the buffer 32, and the command value is periodically calculated over a period of a plurality of control cycles T.
  • the number of continuous control cycles T defined by the command values that can be generated from one intermediate code 33 can be made different for each instruction code of the operation system instruction code.
  • the motion processing unit 42 uses the intermediate code 33 of the buffer 32 to set a command value for a period over a plurality of continuous control cycles T thereafter. Can be calculated.
  • the interpreter 31 reads the program line by line from the first line of the control application program 1542 (step S31), and the program analysis unit 34 describes the types of instruction codes of the read program in the table of FIG. (Step S33).
  • step S33 When the program analysis unit 34 analyzes the instruction code and determines that it is an operation system instruction code based on the analysis result (“operation system instruction” in step S33), the program analysis unit 34 executes an operation according to the instruction code. Then, the intermediate code 33, which is the calculation result, is calculated (step S37).
  • step S39 determines whether or not the calculation is completed (step S39) and determines that the calculation is not completed (NO in step S39)
  • step S31 determines that the calculation is not completed (NO in step S39)
  • step S31 determines that the calculation is not completed (NO in step S39)
  • the process proceeds to step S31, and the interpreter 31 moves to the next line.
  • step S33 When the program analysis unit 34 analyzes the instruction code and determines that the instruction code is a condition-waiting instruction code based on the analysis result (“condition-waiting instruction” in step S33), the program analysis unit 34 executes an operation according to the instruction code. Then, it is determined whether or not the condition is satisfied (the condition is satisfied) based on the calculation result (step S35). When the program analysis unit 34 determines that the conditions are met (YES in step S35), the program proceeds to step S31, and the interpreter 31 reads the program on the next line. When the program analysis unit 34 determines that the conditions are not met (NO in step S35), that is, when the control application processing unit 30 determines that the condition is in a waiting state, the process proceeds to step S40.
  • step S40 the program analysis unit 34 sets True in the flag F.
  • the scheduler 25 determines whether or not to receive a notification from the program analysis unit 34 that the flag F has been changed from False to True (step S41).
  • the scheduler 25 executes a normal scheduling process (step S47). That is, the scheduler 25 causes the processor 102 to execute the tasks in the order based on the priority.
  • the switching unit 26 switches the task. That is, the switching unit 26 causes the processor 102 to suspend the execution of the control application processing unit 30 and start the execution of the system service processing unit 185 (step S43).
  • step S45 determines whether or not the next control cycle T has arrived.
  • the scheduler 25 repeats the process of step S45 while determining that the next control cycle T has not arrived (NO in step S45), but determines that the next control cycle T has arrived (YES in step S45). ),
  • the process of step S47 is executed, and it is determined whether or not the scheduling process is completed (step S49).
  • step S49 When the scheduler 25 determines that the task scheduling process has not been completed (NO in step S49), it returns to step S41, but when it determines that the task scheduling process has been completed (YES in step S49), it performs a series of processes. finish.
  • the switching unit 26 interrupts the execution of the control application processing unit 30 by the processor 102 and starts the system service processing unit 185. By doing so, data can be read from the NBQ 158 and memory exhaustion can be avoided.
  • the buffer 32 can store the intermediate code 33 that enables the calculation of the command value over the plurality of control cycles T, even if the execution of the control application processing unit 30 is interrupted, the interruption is caused by the motion processing unit 42. Does not affect the calculation of the command value of.
  • FIG. 17 is a diagram schematically showing a part of the control application program 1542 according to the embodiment.
  • FIG. 18 is a flowchart schematically showing the processing of the switching unit 26 according to the embodiment.
  • FIG. 19 is a diagram schematically showing an example of an instruction code executed by the control application processing unit 301 according to the embodiment.
  • the instruction code executed by the control application processing unit 301 shown in FIG. 19 is an instruction executed when the execution of the control application processing unit 30 (that is, the control application program 1542) is interrupted by the switch 45 in the IEC program 1541. Includes code.
  • This instruction code is an instruction code for executing a process related to real-time control of the controlled object, and is typically a code corresponding to the instruction code of the control application program 1542, and generates an intermediate code. Includes instruction code.
  • the control application program 1542 includes the instruction code 1600.
  • Sign (X) indicates the condition that "the variable MR indicates” Warning "”. Therefore, while the variable MR indicates "Warning", the waiting state in which the next instruction code of the control application program 1542 is not executed is used.
  • This waiting state includes a state of waiting until the variable MR is changed to "Normal” or "Monitoring”.
  • the wait state includes a state of waiting until the memory exhaustion of the NBQ 158 is resolved, that is, a state of waiting until data is read from the NBQ 158 by the read processing unit 183 and a sufficient free area is created.
  • the switching unit 26 causes the processor 102 to interrupt the execution of the control application processing unit 30 and start the system service processing unit 185 to start the execution, thereby eliminating the memory exhaustion. be able to.
  • the instruction code 1600 corresponds to the type of instruction code waiting for the condition shown in FIG.
  • the remaining amount monitoring unit 44 detects the remaining amount of memory (step S61), and compares the detected remaining amount of memory with the warning threshold value and the monitoring threshold value (step S63, step S67). Set a value based on the result of comparison in the variable MR.
  • step S63 When the value of the variable MR indicates “Warning” (YES in step S63), the switching unit 26 executes warning processing (step S65), and when the value of the variable MR indicates “Monitoring” (step S63). NO, YES in step S67), and monitoring processing (step S69) is performed.
  • step S65 When the value of the variable MR shows neither “Warning” nor “Monitoring” (NO in step S67), that is, when the variable MR shows “Normal”, the process ends.
  • step S65 An example of the warning process (step S65) and the monitoring process (step S69) will be described with reference to FIG.
  • the program of the control application processing unit 301 is described in, for example, a ladder program in the IEC program 1541.
  • FBs (function blocks) 1546 and 1548 correspond to some instruction codes of the control application program 1542.
  • the switching unit 26 outputs the signal X1 to the program processing unit 40.
  • the block 1545 is turned on and the FB 1546 is executed.
  • FB1548 is executed when the condition block 1547 of the IF statement "variable MR indicates" Warning "" is turned on, that is, when the condition of the IF statement is satisfied.
  • the FB 1546 in FIG. 19 When executed, the FB 1546 in FIG. 19 outputs, for example, an intermediate code 33 over N consecutive control cycles T. Further, when executed, the FB1548 outputs, for example, intermediate codes 33 over M consecutive control cycles T (where M ⁇ N).
  • the control cycle T By executing the control application processing unit 301 of the primary task, the intermediate code 33 for calculating the command value over the plurality of control cycles T can be calculated. Therefore, it can be guaranteed that the intermediate code required for calculating the command value is calculated prior to the execution of the motion processing unit 42 in the primary task of each control cycle T.
  • program of the control application processing unit 301 shown in FIG. 19 may be executed in the primary task when the switch 45 is executed according to the flag F.
  • FIG. 20 is a diagram for explaining an example of an application using time series data stored in the time series database 180 of the control device 100 according to the embodiment.
  • the manufacturing execution system 400 realizes quality traceability and the like by using the time series data stored in the time series database 180 of the control device 100. Specifically, based on the manufacturing data included in the time-series data stored in the time-series database 180, it is determined which work (manufacturing) the time-series data is associated with. By arranging the time-series data for each of the discriminated works in the order of the time of occurrence, the state of each work at the time of manufacturing can be grasped. For example, FIG. 20 shows an example in which a plurality of time series data are stored in association with the work of “product number 001” and a plurality of time series data are stored in association with the work of “product number 002”. ..
  • the manufacturing execution system 400 may generate information related to quality traceability based on the time series data stored in the time series database 180 of the control device 100.
  • the IoT service 450 realizes so-called big data analysis.
  • the IoT service 450 outputs not only time-series data from the control device 100 that controls the manufacturing device / equipment 11, but also time-series data from another manufacturing device / equipment 11.
  • the IoT service 450 performs various analyzes on time series data from one or more manufacturing equipment / equipment. As an example of such an analysis, a time series analysis 460 is shown.
  • One or more processors constituting the system that provides the IoT service 450 executes the time series analysis 460.
  • one or more processors perform preprocessing 462 on the time series data.
  • pre-processing 462 one or more processors execute a process of extracting a feature amount or the like from time-series data stored in the storage to lower the dimension, a process of excluding abnormal values and outliers, and the like.
  • processors execute the analysis process 464 on the time series data in which the preprocess 462 is performed.
  • One or more processors generate a model for the manufacturing equipment / equipment to be controlled by performing modeling 466 based on the result of the analysis process 464.
  • One or more processors store the generated model (a set of functions or parameters) in storage.
  • one or more processors execute prediction processing 468 such as occurrence of abnormality and progress of deterioration based on the generated model.
  • one or more processors may visually output the result of the prediction process 468 to a display or the like using a graph, a table, or the like (visualization process 470).
  • the IoT service 450 performs data analysis based on the time series data stored in the time series database 180 of the control device 100. It is assumed that such an IoT service 450 is typically implemented in an environment having sufficient computing resources on the cloud. Therefore, hidden characteristics can be found by using a large amount of time series data.
  • the time relationship between the observed values in the time series data can be determined more precisely by associating the time and counter information, so that more accurate and meaningful analysis can be realized. For example, when generating a model, it is important to search for a hidden causal relationship between observed values, but such a causal relationship may not be found due to a time lag. In the system according to the present embodiment, since the temporal relationship between the observed values can be determined more accurately in the preprocessing, more accurate model generation can be realized.
  • AI Artificial Intelligence processing 196
  • supervised machine learning may be performed to detect in advance abnormalities and deterioration tendencies that occur in the manufacturing equipment or equipment to be controlled.
  • the AI process 196 generated a feature amount from one or a plurality of observed values included in the time-series data stored in the time-series database 180 of the control device 100, and statistically processed the generated feature amount. Above, it is retained as training data. Then, the AI process 196 calculates the degree to which the input observation value deviates from the learning data when some new observation value is input, and also calculates the degree of deviation to the calculated degree of deviation. Based on this, the presence or absence of abnormalities and the tendency of deterioration are judged.
  • AI processing 196 By mounting such AI processing 196 in the control device 100, it is possible to detect abnormalities and deterioration tendencies that occur in the manufacturing device or equipment to be controlled in substantially real time.
  • a storage unit (108) that stores a plurality of programs
  • a scheduler (25) that manages a program that causes the processor to execute according to a priority within a predetermined cycle, and includes a scheduler (25).
  • the plurality of programs in the storage unit A first program (1541) for real-time control processing of the controlled object, which is the program having the highest execution priority executed by the processor in the cycle, and A second program (1542) for related processing related to the real-time control, which is a program having a lower execution priority than the first program.
  • It includes a third program (190, 191) of a system service that has a lower execution priority than the second program and is executed when there is free time in the processor in the cycle.
  • the scheduler If the execution of the second program is started within the cycle and then a predetermined type of instruction code is executed in the second program, the processor interrupts the execution of the second program.
  • a control device including a switching unit (26) for starting execution of the third program.
  • the real-time control process includes a process of generating a command value to the control target based on an intermediate code generated by the related process.
  • the control device further A data generation unit (43) that generates data for constructing a record to be stored in the time series database for each cycle, and a data generation unit (43).
  • a non-blocking queue (158) formed on a volatile main storage device for sequentially storing data generated by the data generation unit is provided.
  • the system service The control device according to configuration 5, further comprising a process (183) of reading the data from the non-blocking queue and storing it in the time series database.
  • the control device further A remaining amount monitoring unit (44) for monitoring the remaining amount of memory in the non-blocking queue is provided.
  • the switching unit is The control according to configuration 6 or 7, wherein the processor interrupts the execution of the second program being executed and starts the execution of the third program based on the result of the comparison between the remaining memory amount and the threshold value. Device.
  • the scheduler program If the execution of the second program is started within the cycle and then a predetermined type of instruction code is executed in the second program, the processor interrupts the execution of the second program.
  • the control device is A first program (1541) for real-time control processing of the controlled object, which is the program having the highest execution priority executed by the processor in a predetermined cycle, and A second program (1542) for related processing related to the real-time control, which is a program having a lower execution priority than the first program. It includes a third program (190, 191) of a system service that has a lower execution priority than the second program and is executed when there is free time in the processor in the cycle.
  • the control method is A step of managing a program that causes the processor to execute according to the priority within the cycle is provided.
  • the management step is within the cycle A step (S33) of starting execution of the second program and then determining whether or not a predetermined type of instruction code is executed in the second program. Based on the determination, the control method includes, in the case of the case, a step (S43) of causing the processor to suspend the execution of the second program and start the execution of the third program.

Landscapes

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

Abstract

制御周期内において、システムサービスを実施する時間を確保する。制御装置は、予め定められた周期においてプロセッサ(102)で実行される最も実行の優先度が高いリアルタイム制御のための第1のプログラムと、第1のプログラムより実行の優先度が低いプログラムであって、リアルタイム制御に関連する処理のための第2のプログラムと、第2のプログラムより実行の優先度が低く、プロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラムとを含み、スケジューラ(25)は、第2のプログラムの予め定められた種類の命令コードが実行されると、プロセッサに第2のプログラムの実行を中断させ第3のプログラムを実行開始させる。

Description

制御装置、プログラムおよび制御方法
 この開示は、優先度の異なる複数のプログラムを実行する制御装置に関する。
 様々な生産現場において、PLC(プログラマブルロジックコントローラ)などの制御装置を用いたFA(Factory Automation)技術が広く普及している。このような制御装置では、制御周期内で複数種類のプログラムを実行させるようなニーズがある。特開2019-36043号公報(特許文献1)は、各タスクが有する優先度に従い複数のタスクを順番に実行する制御装置を開示する。
特開2019-36043号公報
 PLCなどの制御装置においては、制御対象を制御するプログラムの実行の優先度は高く設定される。これに対して、いわゆる制御とは異なるシステムサービスに係るプログラムは、実行の優先度は低く設定され、制御周期の空き時間で実行される。
 制御が複雑化するに伴い制御プログラムの実行時間は長くなって、制御周期内に空き時間がなくなる傾向がある。その一方で、システムサービスを実施する時間も確保したいとのニーズがある。したがって、予め定められた周期内において、システムサービスを実施できる時間を確保できる仕組みが望まれる。
 この開示に係る制御対象を制御する制御装置は、プロセッサと、複数のプログラムを格納する記憶部と、予め定められた周期内で、プロセッサに優先度に従い実行させるプログラムを管理するスケジューラと、を含み、記憶部の複数のプログラムは、周期においてプロセッサで実行される最も実行の優先度が高いプログラムであって、制御対象のリアルタイム制御処理のための第1のプログラムと、第1のプログラムより実行の優先度が低いプログラムであって、リアルタイム制御に関連する関連処理のための第2のプログラムと、第2のプログラムより実行の優先度が低く、周期においてプロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラムとを含み、スケジューラは、周期内において、第2のプログラムの実行を開始し、その後に第2のプログラムにおいて予め定められた種類の命令コードが実行された場合、プロセッサに第2のプログラムの実行を中断させ第3のプログラムを実行開始させる切替部を含む。
 上述の開示によれば、スケジューラの切替部は、周期内において、プロセッサに優先度に従いプログラムを実行させる場合に、第2のプログラムの実行を開始し、その後に第2のプログラムにおいて予め定められた種類の命令コードが実行されたときは、プロセッサに第2のプログラムの実行を中断させ第3のプログラムを実行開始させる。これにより、第3のプログラムを周期内で実行する時間を確保することが可能となり、当該周期内において、システムサービスを実施できる。
 上述の開示において、リアルタイム制御処理は、関連処理により生成された中間コードに基づき制御対象への指令値を生成する処理を含み、予め定められた種類の命令コードは、実行されると複数周期にわたる中間コードを生成する命令コードを含む。
 上述の開示によれば、第2のプログラムの実行が中断されるとしても、リアルタイム制御処理において、先行して生成された複数周期に亘る中間コードに基づき指令値を生成することができる。
 上述の開示において、予め定められた種類の命令コードは、待ち合わせ条件と当該待ち合わせ条件が満たされるかを判断するコードを用いて記述される待ち合わせ命令コードを含む。
 上述の開示によれば、待ち合わせ命令コードが実行されて待ち合わせ条件が満たされるまで関連処理が待ち状態となる場合において、プロセッサに第2のプログラムの実行を中断させ第3のプログラムを実行開始させることができる。
 上述の開示において、第2のプログラムは、インタプリタ言語で記述されたプログラムを含む。
 上述の開示によれば、制御装置は、インタプリタによる命令コードの解析結果を利用することで、予め定められた種類の命令コードが実行されるか否かを判断できる。
 上述の開示において、システムサービスは、制御対象に関するデータを含むレコードを時系列に格納する時系列データベースの処理を含む。
 上述の開示によれば、制御装置は、第2のプログラムの実行を中断させ第3のプログラムを実行開始させることにより、制御対象に関するデータを含むレコードを時系列に格納する時系列データベースの処理時間を、周期内で確保することが可能となる。
 上述の開示において、制御装置は、さらに、周期毎に、時系列データベースへ格納すべきレコードを構成するためのデータを生成するデータ生成部と、データ生成部により生成されるデータを順次格納する、揮発性の主記憶装置上に形成されるノンブロッキングキューと、を備え、システムサービスは、ノンブロッキングキューからデータを読み出し、時系列データベースに格納する処理を含む。
 上述の開示によれば、周期内で比較的高速に生成されるデータを、ノンブロッキングキューを経由して、比較的アクセス速度の遅い時系列データベースに格納することができる。
 上述の開示において、制御装置が時系列データベースを備える。
 上述の開示によれば、制御装置は、内部に時系列データベースを備えることができる。
 上述の開示において、制御装置は、さらに、ノンブロッキングキューのメモリ残量を監視する残量監視部を備え、切替部は、メモリ残量と閾値の比較の結果に基づき、プロセッサに、実行中の第2のプログラムの実行を中断させ、第3のプログラムの実行を開始させる。
 上述の開示によれば、制御装置は、ノンブロッキングキューのメモリ残量と閾値の比較の結果に基づき、プロセッサに、実行中の第2のプログラムの実行を中断させ、第3のプログラムの実行を開始させることができる。
 上述の開示において、第1のプログラムは、第2のプログラムの実行が中断した場合に実行される、関連処理の命令コードを含む。
 上述の開示によれば、制御装置は、第2のプログラムの実行が中断されると、第1のプログラムの実行中において、関連処理の命令コードを実行することができる。
 この開示に係るプログラムは、制御対象を制御するためのプロセッサを有する制御装置で実行されるプログラムであって、予め定められた周期内で、プロセッサに優先度に従い実行させるプログラムを管理するスケジューラプログラムと、周期においてプロセッサで実行される最も実行の優先度が高いプログラムであって、制御対象のリアルタイム制御処理のための第1のプログラムと、第1のプログラムより実行の優先度が低いプログラムであって、リアルタイム制御に関連する関連処理のための第2のプログラムと、第2のプログラムより実行の優先度が低く、周期においてプロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラムとを備え、スケジューラプログラムは、周期内において、第2のプログラムの実行を開始し、その後に第2のプログラムにおいて予め定められた種類の命令コードが実行された場合、プロセッサに第2のプログラムの実行を中断させ第3のプログラムを実行開始させるスイッチプログラムを含む。
 この開示によれば、プロセッサが優先度に従いプログラムを実行中において、スイッチプログラムが実行されることにより、周期内において、第3のプログラムを実行する時間を確保できる。これにより、予め定められた周期内において、システムサービスを実施できる時間を確保できる仕組みを提供できる。
 この開示に係る制御方法は、制御対象を制御するためのプロセッサを有する制御装置を制御する制御方法であって、制御装置は、予め定められた周期においてプロセッサで実行される最も実行の優先度が高いプログラムであって、制御対象のリアルタイム制御処理のための第1のプログラムと、第1のプログラムより実行の優先度が低いプログラムであって、リアルタイム制御に関連する関連処理のための第2のプログラムと、第2のプログラムより実行の優先度が低く、周期においてプロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラムとを備え、制御方法は、周期内で、プロセッサに優先度に従い実行させるプログラムを管理するステップを、備え、管理するステップは、周期内において、第2のプログラムの実行を開始し、その後に第2のプログラムにおいて予め定められた種類の命令コードが実行されるか否かを判断するステップと、判断に基づき、場合、プロセッサに第2のプログラムの実行を中断させ第3のプログラムを実行開始させるステップとを含む。
 この開示によれば、プロセッサが優先度に従いプログラムを実行中において、周期内において、第3のプログラムを実行する時間を確保できる。これにより、予め定められた周期内において、システムサービスを実施できる時間を確保できる仕組みを提供できる。
 この開示によれば、制御周期内において、システムサービスを実施できる時間を確保できる。
適用例を模式的に示す図である。 実施の形態に係る制御システム1の全体構成例を示す模式図である。 実施の形態に係る制御装置100のハードウェア構成例を示すブロック図である。 本実施の形態に係る制御装置100のソフトウェア構成例を示すブロック図である。 実施の形態に係る制御装置100の機能構成の一例を示す模式図である。 本実施の形態に係る制御装置100における時系列データベース180に関する処理の要部を示す模式図である。 実施の形態に係る制御装置100における時系列データベース180に格納されるレコードのデータ構造の一例を示す図である。 実施の形態に係る制御装置100における時系列データベース180に格納されるレコードのデータ構造の一例を示す図である。 実施の形態に係る制御装置100における周期制御の一例を示す模式図である。 実施の形態に係る制御装置100における周期制御の一例を示す模式図である。 実施の形態に係る制御装置100における周期制御の一例を示す模式図である。 実施の形態に係る制御装置100における周期制御の一例を示す模式図である。 実施の形態に係る制御アプリケーション処理部30の処理を概略的に示すフローチャートである。 実施の形態に係るプログラム解析部34の処理を示すフローチャートである。 実施の形態に係る命令コードの種類とプログラムコードの対応関係を示す表である。 実施の形態に係るスケジューラ25の処理を概略的に示すフローチャートである。 実施の形態に係る制御アプリケーションプログラム1542の一部を模式的に示す図である。 実施の形態に係る切替部26の処理を概略的に示すフローチャートである。 実施の形態に係る制御アプリケーション処理部301が実行する命令コードの一例を模式的に示す図である。 実施の形態に係る制御装置100の時系列データベース180に格納される時系列データを用いたアプリケーションの一例を説明するための図である。
 以下、図面を参照しつつ、本発明に従う実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。
 <A.適用例>
 図1は、適用例を模式的に示す図である。図1を参照して、本開示が適用される場面の一例について説明する。図1を参照して、FAの生産現場に備えられる制御対象を制御する制御装置100は、プロセッサ102と、HDD(Hard Disc Drive)などの二次記憶装置108と、スケジューラ25と、時系列データベース180と、を備える。制御装置100は、PLCなどのコントローラを含む。「制御対象」は、FAの生産ラインに備えられて制御の対象となる機械または設備、センサなどを含む。機械または設備は、ロボット、テーブル、コンベアなどのメカニカル機構を含む。
 スケジューラ25は、予め定められた周期内で、プロセッサ102に優先度に従い実行させるプログラムを管理する。時系列データベース180は、周期毎に生成される制御対象に関するデータを含むレコードを時系列にストレージに格納するよう構成される。本実施の形態では、予め定められた周期は、制御周期Tに相当する。
 二次記憶装置108は、プロセッサ102が読み取り可能なように複数のプログラムを格納する。二次記憶装置108に格納されるプログラムは、第1のプログラム、第2のプログラムおよび第3のプログラムを含む。第1のプログラムは、制御周期Tにおいてプロセッサ102で実行される最も実行の優先度が高いプログラムであって、制御対象のリアルタイム制御処理のために実行される。第2のプログラムは、第1のプログラムより実行の優先度が低いプログラムであって、リアルタイム制御に関連する関連処理のために実行される。第3のプログラムは、第2のプログラムより実行の優先度が低いシステムサービスのプログラムであって、制御周期Tにおいてプロセッサ102の空き時間がある場合に実行される。実施の形態では、プロセッサ102の空き時間は、プロセッサ102がプログラム(プロセス,タスク)を実行していないアイドル状態の期間を示す。
 例えば、第1のプログラムは、「IECプログラム」を含む。IECプログラムは、実行毎に全体がスキャンされて、実行される毎に1または複数の指令値を演算するプログラムを包含する用語である。IECプログラムは、典型的には、国際電気標準会議(International Electrotechnical Commission:IEC)によって規定された国際規格IEC61131-3に従って記述された1または複数の命令からなるプログラムを包含する。IECプログラムには、シーケンス制御のためのロジック処理部およびモーション制御のためのモーション処理部の命令を含み得る。IECプログラムは、制御周期T毎にすべてのプログラムが実行(スキャン)される。IECプログラムは、対象のリアルタイム制御などのような即時性および高速性が要求される制御に好適である。なお、IECプログラムとしては、国際規格IEC61131-3に従って記述された命令に限らず、PLCの製造メーカまたはベンダーなどが独自に規定した命令を含むようにしてもよい。
 シーケンス制御のロジック処理部は、基本的には、入力値、出力値、内部値などを演算する1または複数の論理回路により記述されるプログラム(シーケンスプログラム)を先頭から最終まで順番に実行する方式である。1回の制御周期Tにおいて、プログラムの先頭から最終まで実行され、次の制御周期Tにおいて、プログラムの先頭から最終までが再度実行される。なお、シーケンスプログラムは、電気回路を表現するプログラムである。
 モーション制御のモーション処理部は、後述する制御アプリケーション処理部が出力する中間コードに従い、制御対象に含まれるサーボモータなどのアクチュエータに対して、位置、速度、加速度、加加速度、角度、角速度、角加速度、角加加速度などの数値を指令値として演算する処理を含む。モーション制御においても、1回の制御周期Tにおいて、ファンクションブロックや数値演算式などにより記述されるプログラム(モーション処理プログラム)の先頭から最終までが実行される。すなわち、制御周期T毎に指令値は演算(更新)されることになる。モーション処理部が用いる中間コードは、複数の制御周期Tに亘って指令値を演算できるだけの命令を含むことが多いから、モーション処理部が中間コードを取得するタイミングは、各制御周期Tでなくともよい。
 第2のプログラムは、制御アプリケーションプログラムを含む。制御アプリケーションプログラムが制御アプリケーション処理部により実行されることにより、例えば、CNC(Computer Numerical Control:コンピュータ数値制御)および/または産業用ロボットを用いた、特定の加工または動作を行う装置または機械ならびにそれらの制御に係る処理が実現され得る。
 第2のプログラムは、制御対象のリアルタイム制御に関連した関連処理を実現するための1または複数の命令からなるプログラムを包含し、基本的には、「IECプログラム」には含まれない制御アプリケーションプログラムなどのプログラムを包含する。第2のプログラムは、一例として、CNCではG言語を用いて記述され、産業用ロボット制御ではロボット言語を用いて記述される。これらの言語はインタプリタ言語を含む。インタプリタ言語で記述される第2のプログラムは、命令コードを逐次解釈し実行するインタプリタ方式で実行される。なお、第2のプログラムは、インタプリタ言語で記述されたプログラムに限定されず、第1のプログラムと同様のIECプログラムの言語で記述されてもよい。
 プロセッサ102は、インタプリタプログラムを実行することによりインタプリタを提供する。インタプリタは、第2のプログラムに記述された1または複数の命令コードを解釈し、その解釈された内容に基づいて、制御周期T毎にモーション処理部が指令値を演算するための中間コードを生成する。中間コードは、第2のプログラムに記述された1または複数の命令コード毎に生成されるので、1つの第2のプログラムから複数の中間コードが生成されることが多い。このような中間コードの生成が、上記に述べた関連処理に含まれ得る。
 中間コードの各々においては、制御周期Tの時刻(あるいは、時間)を入力として、指令値を演算できる関数が規定され得る。すなわち、中間コードは、モーション処理部が制御周期T毎に指令値を演算するための関数であってもよい。このような関数を用いることで、モーション処理部は、第2のプログラムによって生成される中間コードを順次参照して、各制御周期Tにおける指令値を演算できる。
 スケジューラ25は、制御周期T内において、プロセッサ102に、第1のプログラム、第2のプログラムおよび第3のプログラムを各プログラムが有する優先度に従い実行させる。第1~第3のプログラムは、それぞれ、当該プログラムが他のプログラムよりも優先して実行されるべき度合いを示す優先度が設定されている。第2のプログラムおよび第3のプログラム制御周期T内では、プロセッサ102は、第1のプログラムを実行開始し(時間t0)、第1のプログラムが実行終了すると第2のプログラムを実行開始する(時間t1)。その後、第2のプログラムにおいて予め定められた種類の命令コードが実行された場合(ステップR1)、スケジューラ25が備える切替部26は、プロセッサ102に実行させるプログラムを切替える(ステップR2、時間t2)。切替えでは、切替部26は、プロセッサ102に第2のプログラムの実行を中断させ第3のプログラムを実行開始させる(ステップR3,R4)。
 このように第2のプログラムの実行を中断させることにより、制御周期T内においてプロセッサ102の空き時間が設けられて、この空き時間で第3のプログラムが実行される。これにより、制御周期T内において、システムサービスを実施できる時間を確保することができる。
 システムサービスは、例えば、時系列データベース180の処理を含み得る。したがって、制御周期T内において時系列データベース180の処理時間を確保することができる。
 <B.制御システムの全体構成例>
 まず、本実施の形態に係る制御装置を含む制御システム1の全体構成例について説明する。
 図2は、実施の形態に係る制御システム1の全体構成例を示す模式図である。図2を参照すると、実施の形態に係る制御システム1は、主たる構成要素として、制御対象を制御する制御装置100を含む。
 制御装置100は、PLCなどの、一種のコンピュータとして具現化されてもよい。制御装置100は、フィールドバス2を介してフィールド装置群8と接続されるとともに、フィールドバス4を介して1または複数の表示装置300と接続される。制御装置100は、それぞれのバスまたはネットワークを介して、接続された装置との間でデータを遣り取りする。一般的に「フィールドバス」は、「フィールドネットワーク」とも称されるが、説明の簡素化のため、以下の説明においては、「フィールドバス」と総称する。すなわち、実施の形態の「フィールドバス」は、「フィールドバス」に加えて「フィールドネットワーク」を含み得る。
 制御装置100は、製造装置や設備を制御するための各種演算を実行する制御演算を行う。制御装置100は、制御演算処理に加えて、フィールド装置群8にて計測され、制御装置100へ転送されるデータ(以下、「入力データ」とも称す。)や制御演算処理によって算出される各種のデータを取得する入出力処理を行う。
 制御装置100は、時系列データベース180をさらに有している。時系列データベース180は、後述するように、入出力処理により取得される各種データを時系列に格納する。図2では、時系列データベース180は、時系列DB180と示されている。
 具体的には、制御装置100は、指定された、制御対象に関するデータを含むレコードを生成するデータ生成処理を行い、時系列データベース180は、データ生成処理により生成されるデータを時系列に格納する。
 時系列データベース180に格納されるレコードの群を「時系列データ」とも称す。本明細書において、「時系列データ」は、任意の対象についてのデータ(観測値)の時間的な変化を連続的(あるいは、一定間隔をおいて不連続)に観測して得られる一連の値を意味する。
 本明細書において「観測値」は、制御装置100での制御演算において利用可能な値(実値)を総称する概念であり、典型的には、制御対象から取得されて制御演算に入力される値(フィールドから取得された測定値など)、取得された入力値に基づいて制御演算によって決定される制御対象に対する出力値(フィールドへ与えられる指令値など)、制御演算の過程において算出される演算値(任意の変数値)などを含み得る。すなわち、「観測値」は、制御装置100においてデータとして格納できる、あるいは、制御装置100からデータとして外部出力できる任意の値を包含するものである。
 フィールドバス2およびフィールドバス4は、データの到達時間が保証される、定周期通信を行うバスまたはネットワークを採用することが好ましい。このような定周期通信を行うバスまたはネットワークとしては、EtherCAT(登録商標)などが知られている。また、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)などを採用してもよい。
 フィールド装置群8は、制御対象または制御に関連する製造装置や生産ラインなど(以下、「フィールド」とも総称する。)から入力データを収集する装置を含む。このような入力データを収集する装置としては、入力リレーや各種センサ(例えば、アナログセンサ、温度センサ、振動センサなど)などが想定される。フィールド装置群8は、さらに、制御装置100にて生成される指令(以下、「出力データ」とも称す。)に基づいて、フィールドに対して何らかの作用を与える装置を含む。このようなフィールドに対して何らかの作用を与える装置としては、出力リレー、コンタクタ、サーボドライバおよびサーボモータ、その他任意のアクチュエータが想定される。
 フィールド装置群8は、フィールドバス2を介して、制御装置100との間で、入力データおよび出力データを含むデータを遣り取りする。図2に示す構成例においては、フィールド装置群8は、リモートI/O(Input/Output)装置12と、リレー群14と、画像センサ18およびカメラ20と、サーボドライバ22およびサーボモータ24と、産業用ロボット251およびロボットコントローラ23とを含む。フィールド装置群8としては、これらに限られることなく、入力データを収集できるデバイス、または、出力データに基づく何らかのアクションができるデバイスであれば、どのようなものを採用してもよい。
 リモートI/O装置12は、フィールドバス2を介して通信を行う通信カプラと、入力データの取得および出力データの出力を行うための入出力部(以下、「I/Oユニット」とも称す。)とを含む。このようなI/Oユニットを介して、制御装置100とフィールドとの間で入力データおよび出力データが遣り取りされる。図2には、リレー群14を介して、入力データおよび出力データとして、デジタル信号が遣り取りされる例が示されている。
 I/Oユニットは、フィールドバスに直接接続されるようにしてもよい。図2には、フィールドバス2にI/Oユニット16が直接接続されている例を示す。
 画像センサ18は、カメラ20によって撮像された画像データに対して、パターンマッチングなどの画像計測処理を行って、その処理結果を制御装置100へ出力する。
 サーボドライバ22は、制御装置100からの出力データ(例えば、位置指令や速度指令など)に従って、サーボモータ24を駆動する。
 上述のように、フィールドバス2を介して、制御装置100とフィールド装置群8との間でデータが遣り取りされることになるが、これらの遣り取りされるデータは、数100μsecオーダ~数10msecオーダのごく短い周期で更新されることになる。なお、このような遣り取りされるデータの更新処理は、I/Oリフレッシュ処理とも称される。
 また、フィールドバス4を介して制御装置100と接続される表示装置300は、ユーザからの操作を受けて、制御装置100に対してユーザ操作に応じたコマンドなどを出力するとともに、制御装置100での演算結果などをグラフィカルに表示する。
 制御装置100は、サポート装置200が接続可能になっていてもよい。サポート装置200は、制御装置100が制御対象を制御するために必要な準備を支援する装置である。具体的には、サポート装置200は、制御装置100で実行されるプログラムの開発環境(プログラム作成編集ツール、パーサ、コンパイラなど)、制御装置100および制御装置100に接続される各種デバイスのパラメータ(コンフィギュレーション)を設定するための設定環境、生成したユーザプログラムを制御装置100へ出力する処理、制御装置100上で実行されるユーザプログラムなどをオンラインで修正・変更する処理、などを提供する。
 制御装置100は、さらに、入出力処理により取得されたデータおよび/または時系列データベース180に格納されたデータを外部装置へ出力するゲートウェイ処理も有している。
 外部装置として、図2には、制御装置100と上位ネットワーク6を介して接続される、製造実行システム(MES:Manufacturing Execution System)400およびIoT(Internet of Things)サービス450を典型例として示す。制御装置100は、これらの外部システムや外部サービスに対して、制御対象の製造装置や設備からの情報を提供することができる。
 製造実行システム400は、制御対象の製造装置や設備からの情報を取得して、生産全体を監視および管理するものであり、オーダ情報、品質情報、出荷情報などを扱うこともできる。製造実行システム400の内部、あるいは、製造実行システム400と並列して、情報を格納するためのデータベースを配置してもよい。制御装置100は、制御対象の製造装置や設備での製造状態などを示す製造データを製造実行システム400から取得することができる。
 IoTサービス450は、上位ネットワーク6に接続された、あるいは、上位ネットワーク6に接続されるインターネットに接続された、1または複数のコンピュータで構成される、一種のクラウドサービスが想定される。IoTサービス450を構成するシステムは、通信処理を行い、制御装置100から送信された任意の情報を1または複数のプロセッサ(例えば、CPU(Central Processing Unit)、MPU(Micro-Processing Unit)、GPU(Graphics Processing Unit)など)で処理するとともに、所定の出力を行うシステムをいう。
 IoTサービス450としては、制御対象の製造装置や設備からの情報を取得して、マクロ的またはミクロ的な分析などを行うシステムを想定している。例えば、制御対象の製造装置や設備からの情報に含まれる何らかの特徴的な傾向を抽出するデータマイニングや、制御対象の設備や機械からの情報に基づく機械学習を行うための機械学習ツールなどが想定される。
 制御装置100は、他の制御装置100と通信可能に接続されることもある。
 <C.制御装置のハードウェア構成例>
 実施の形態に係る制御装置100のハードウェア構成例について説明する。
 図3は、実施の形態に係る制御装置100のハードウェア構成例を示すブロック図である。図3を参照すると、制御装置100は、演算処理部および1または複数のI/Oユニット124-1,124-2,…を含む。
 制御装置100は、プロセッサ102と、チップセット104と、主記憶装置106と、内部ストレージに相当する二次記憶装置108と、上位ネットワークコントローラ110と、USB(Universal Serial Bus)コントローラ112と、外部ストレージインターフェイス114と、ローカルバスコントローラ122と、フィールドバスコントローラ118,120と、カウンタ126と、RTC(Real Time Clock)128とを含む。
 プロセッサ102は、CPU、MPU、GPUなどで構成され、二次記憶装置108に格納された各種プログラムを読出して、主記憶装置106に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。二次記憶装置108は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性記憶装置などで構成される。主記憶装置106は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置で構成される。
 チップセット104は、プロセッサ102と各デバイスを制御することで、制御装置100全体としての処理を実現する。
 二次記憶装置108には、基本的な動作を実現するためのシステムプログラムに加えて、制御対象の製造装置や設備に応じて作成されるユーザプログラムが格納される。
 上位ネットワークコントローラ110は、上位ネットワーク6を介して、製造実行システム400やIoTサービス450(図2参照)などとの間のデータを遣り取りする。上位ネットワークコントローラ110は、典型的には、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)といった専用回路を用いて実現される。
 USBコントローラ112は、USB(Universal Serial Bus)接続を介してサポート装置200との間のデータの遣り取りを制御する。USBコントローラ112は、典型的には、ASICやFPGAといった専用回路を用いて実現される。
 外部ストレージインターフェイス114は、外部ストレージ116を着脱可能に構成されており、外部ストレージ116に対してデータを書込み、外部ストレージ116から各種データ(ユーザプログラムやトレースデータなど)を読出すことが可能になっている。外部ストレージ116は、例えば、SDカードなどのフラッシュメモリからなる揮発性記憶装置に相当する。
 カウンタ126は、制御装置100における各種処理の実行タイミングを管理するための時刻基準として用いられる。カウンタ126は、典型的には、所定周期毎にカウンタ値をインクリメントまたはデクリメントする。カウンタ126として、プロセッサ102を駆動するシステムバス上に配置された、ハードウェアタイマーである高精度イベントタイマー(HPET:High Precision Event Timer)などを用いて実装してもよいし、あるいは、ASICやFPGAなどの専用回路を用いて実装してもよい。
 RTC128は、計時動作を行う一種のカウンタであり、現在時刻をプロセッサ102などへ提供する。
 ローカルバスコントローラ122は、制御装置100に搭載されるI/Oユニット124-1,124-2,…との間でデータを遣り取りするインターフェイスである。ローカルバスコントローラ122は、典型的には、ASICやFPGAといった専用回路を用いて実現されるが、ソフトウェア実装で実現してもよい。ソフトウェア実装を採用する場合には、ローカルバスコントローラ122は、主として、プロセッサ、主記憶装置、ストレージなどで構成され、プロセッサがストレージに格納されたシステムプログラム(ファームウェア)などを読出して、主記憶装置に展開して実行することで、必要な処理を実現する。
 ローカルバスコントローラ122は、ローカルバスを介して接続される他のデバイスである、I/Oユニット124-1,124-2,…との間でタイミングを管理するための時刻基準として用いられるカウンタ123を有している。同様に、I/Oユニット124-1,124-2,…の各々も、ローカルバスコントローラ122および他のI/Oユニットとの間でタイミングを管理するための時刻基準として用いられるカウンタ125を有している。カウンタ123およびカウンタ125については、上述のカウンタ126と同様の構成を採用できる。
 フィールドバスコントローラ118は、フィールドバス2を介した他のデバイスとの間のデータの遣り取りを制御する。フィールドバスコントローラ118は、典型的には、ASICやFPGAといった専用回路を用いて実現されるが、ソフトウェア実装で実現してもよい。ソフトウェア実装を採用する場合には、フィールドバスコントローラ118は、主として、プロセッサ、主記憶装置、ストレージなどで構成され、プロセッサがストレージに格納されたシステムプログラム(ファームウェア)などを読出して、主記憶装置に展開して実行することで、必要な処理を実現する。フィールドバスコントローラ118は、他のデバイスとの間でタイミングを管理するための時刻基準として用いられるカウンタ119を有している。
 同様に、フィールドバスコントローラ120は、フィールドバス4を介した他のデバイスとの間でデータを遣り取りする。フィールドバスコントローラ120は、典型的には、ASICやFPGAといった専用回路を用いて実現されるが、ソフトウェア実装で実現してもよい。ソフトウェア実装を採用する場合には、フィールドバスコントローラ120は、主として、プロセッサ、主記憶装置、ストレージなどで構成され、プロセッサがストレージに格納されたシステムプログラム(ファームウェア)などを読出して、主記憶装置に展開して実行することで、必要な処理を実現する。フィールドバスコントローラ120は、他のデバイスとの間でタイミングを管理するための時刻基準として用いられるカウンタ121を有している。
 また、各デバイスも、フィールドバスコントローラ118またはフィールドバスコントローラ120との間でタイミングを管理するための時刻基準として用いられるカウンタを有している。
 カウンタ119およびカウンタ121ならびに各デバイスが有するカウンタについては、上述のカウンタ126と同様の構成を採用できる。
 フィールドバスコントローラ118,120は、フィールドバスを介した定周期通信を行うための通信マスターとして動作し、フィールドバスに接続されている各デバイスが有するカウンタが示すカウンタ値とカウンタ119,121が示すカウンタ値との差分を逐次監視して、必要に応じて、カウンタ値にずれが発生しているデバイスに対して補正を指示するための同期信号を出力する。このように、フィールドバスコントローラ118,120は、デバイスのカウンタが示すカウンタ値をカウンタ119,121が示すカウンタ値と一致させるための指令をデバイスへ与える同期管理処理を行う。
 二次記憶装置108は、システムプログラム149とユーザプログラムとを含む複数のプログラムを格納する。システムプログラム149は、OS(Operating System)およびインタプリタを実現するインタプリタプログラム151などを含む。
 ユーザプログラムは、制御プログラム152、システムサービスを実現するシステムサービスプログラム195、変数管理プログラム160、実行されるとスケジューラ25を実現するスケジューラプログラム170、入力プログラム172および出力プログラム174を含む。スケジューラプログラム170は、実行されると切替部26を実現するスイッチプログラム171を含む。
 制御プログラム152は、「第1のプログラム」の実施例であるIECプログラム1541と、「第2のプログラム」の実施例である制御アプリケーションプログラム1542と、データベース書込プログラム156と、残量監視プログラム1544とを含む。データベース書込プログラム156と残量監視プログラム1544とは、実行されると、後述するNBQ(Non-Blocking Queue:ノンブロッキングキュー)158に関連した処理を実現する。NBQ158は、制御装置100においてデータベース処理に関連して備えられる。
 システムサービスプログラム195は、「第3のプログラム」の実施例であるデータベースプログラム190と、上位接続プログラム192と、ゲートウェイプログラム194とを含む。データベースプログラム190は、実行されると、時系列データベース180に格納するためにNBQ158からデータを読出すデータベース読出プログラム191を含む。
 実施の形態に係る制御装置100が備える時系列データベース180は、二次記憶装置108および/または外部ストレージ116が提供する記憶領域を利用して実現されてもよい。以下の説明においては、二次記憶装置108および外部ストレージ116を単に「ストレージ」と総称することもある。また、「ストレージ」との対比で、揮発性の主記憶装置106を「メモリ」と称することもある。
 なお、本実施の形態における時系列データベース180は、データベースファイルを格納する記憶領域に加えて、データベースファイルの生成、書込み、読出しといった各種操作を実現するためのプロセッサ102などによる処理、ならびに、各種操作を実現するためのバッファリング領域あるいはワーキング領域を含むものである。時系列データベース180に含まれる記憶領域は、主記憶装置106または二次記憶装置108に備えることができる。
 図3には、プロセッサ102がプログラムを実行することで必要な処理が提供される構成例を示したが、これらの提供される処理の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。あるいは、制御装置100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
 上述の図2および図3に示す制御システム1においては、制御装置100、サポート装置200および表示装置300がそれぞれ別体として構成されているが、これらの処理の全部または一部を単一の装置に集約した構成を採用してもよい。
 <D.制御装置のソフトウェア構成例>
 次に、実施の形態に係る制御装置100のソフトウェア構成例について説明する。
 図4は、本実施の形態に係る制御装置100のソフトウェア構成例を示すブロック図である。図4を参照すると、制御装置100は、PLCエンジン150と、時系列データベース180と、上位接続プログラム192と、ゲートウェイプログラム194とを含む。
 PLCエンジン150は、典型的には、制御装置100のプロセッサ102が、OSの元で、二次記憶装置108に格納されているシステムプログラムを読出して主記憶装置106に展開して実行することで各種プログラムの実行環境が提供され、当該実行環境下において、各種プログラムを実行することができる。
 より具体的には、PLCエンジン150は、制御プログラム152と、変数管理プログラム160と、スケジューラプログラム170と、入力プログラム172と、出力プログラム174とを選択的に実行可能に構成される。PLCエンジン150には、NBQ158が実現されている。
 NBQ158は、例えば、メモリ(揮発性の主記憶装置106)上に用意される、複数のタスクまたはプロセスからのアクセスを共用する共有メモリ領域を用いて実現される。NBQ158は、主記憶装置106上の共有メモリ領域に加えて、システムプログラムをプロセッサ102が実行することで提供されるバッファ管理処理によって実現される。バッファ管理処理は、共有メモリ領域内に所定の大きさで区切った複数のデータ領域(後述する、共有バッファ)からなるバッファプールを規定するとともに、各共有バッファの状態(空き、データ格納中、予約など)などを管理する処理を含む。バッファ管理処理を実現するためのシステムプログラムは、空バッファへのデータ書込みなどの処理を実現するためのCAS(Compare And Swap)命令などのプロセッサ命令を含む。
 また、NBQ158を実現するためのバッファ管理処理は、制御プログラム152からのデータ書込みを受付けるインターフェイスと、データベースマネージャ182からのデキューを受付けるインターフェイスとを有している。このようなそれぞれのインターフェイスによって、データベース書込プログラム156から時系列データベース180までの論理的なデータ転送経路において、それぞれがNBQ158を利用することができる。
 変数管理プログラム160と、スケジューラプログラム170と、入力プログラム172と、出力プログラム174とについては、システムプログラムの一部として実装されてもよい。この場合には、これらのプログラムが提供するそれぞれの処理を単一のシステムプログラムが提供するようにしてもよい。
 制御プログラム152は、IECプログラム1541と、制御アプリケーションプログラム1542と、データベース書込プログラム156と、残量監視プログラム1544とを含む。残量監視プログラム1544は、NBQ158の空き領域のサイズを示すメモリ残量を監視し、監視の結果を出力する。NBQ158に格納されたデータは読出されて時系列データベース180に格納されるので、読出されたデータが格納されていた記憶領域はその後にデータが書込まれるまでは空き領域を構成する。
 データベース書込プログラム156は、制御装置100のデータ生成処理の少なくとも一部を提供するコードに相当し、例えばIECプログラム1541内に記述された命令によって、予め定められた周期毎(例えば制御周期毎)に呼び出され、時系列データベース180へ格納すべきレコードを構成するためのデータを生成する。より具体的には、データベース書込プログラム156から時系列データベース180へのデータ転送経路には、NBQ158が配置されており、データベース書込プログラム156は、指定されたデータを時系列データベース180に直接書込むのではなく、NBQ158へ書込む。
 NBQ158は、時系列データベース180へのデータ書込みの完了を待つことなく、データベース書込プログラム156の処理を続行させるための、一種のバッファである。NBQ158には、データベース書込プログラム156からのデータがキューの形で格納される。NBQ158は、データベース書込プログラム156により生成されるデータを順次格納する。NBQ158に格納されたデータ(キュー)は、順次読出されて、時系列データベース180に格納される。
 なお、データベース書込プログラム156にシリアライズ通信プログラムを結合させてもよい。シリアライズ通信プログラムは、データベース書込プログラム156から時系列データベース180に対して書込まれるデータに対してシリアライズ処理を行う。より具体的には、シリアライズ通信プログラムは、PLCエンジン150により実行され、時系列データを格納可能なバイト列に変換する処理(シリアライズ)を実行する。対象のデータは、時系列データベース180内への格納前に、シリアライズ処理により所定のバイト列に変換される。
 時系列データベース180の少なくとも一部は、ストレージ(二次記憶装置108、または、外部ストレージ116)を利用して構成される。時系列データベース180は、データベース書込プログラム156からのデータが時系列に格納されるデータベースファイル186に加えて、データベースマネージャ182および書込みバッファ184を含む。
 データベースマネージャ182は、典型的には、制御装置100のプロセッサ102が、データベースプログラム190を実行することで実現される。データベースマネージャ182は、データベースファイル186へのレコードの追加、および、外部からの要求に応じたデータベースファイル186を構成するレコードの検索および抽出を担当する。データベースプログラム190によってデータベース読出プログラム191が呼び出されて実行されると読出処理部183(図5参照)が実現される。読出処理部183は、NBQ158に格納されたデータを順次読出して、データベースファイル186へ追加する。
 書込みバッファ184は、例えば、主記憶装置106上に用意される記憶領域、または、ストレージに内蔵されるキャッシュメモリ上に用意される記憶領域を用いて実現される。
 データベース書込プログラム156は、読出処理部183によってNBQ158から読出されたデータから時系列データのレコードを生成し、生成された時系列データのレコードをデータベースファイル186に順次格納する。データベースファイル186には、入力データ、出力データ、制御プログラム152による制御演算において算出される演算データ、製造データ、イベントデータの少なくとも一部が時系列に格納されることになる。
 変数管理プログラム160は、入力データおよび出力データなどのPLCエンジン150で利用可能な値を変数の形で管理する。より具体的には、変数管理プログラム160は、制御装置100の状態などを示すシステム変数162と、制御装置100とローカルバスまたはフィールドバスを介して接続される各種デバイスが保持する値を示すデバイス変数164と、制御装置100で実行されるIECプログラム1541が保持する値を示すユーザ変数166とを管理する。
 スイッチプログラム171を有するスケジューラプログラム170は、制御装置100で実行されるプログラムの実行単位に相当するプロセスやタスクなどに対してリソース割当てや実行タイミングなどを管理する。
 入力プログラム172は、制御装置100とローカルバスまたはフィールドバスを介して接続される各種デバイスから入力データを取得する処理を行う。
 出力プログラム174は、制御装置100において実行されるIECプログラム1541と制御アプリケーションプログラム1542によって算出される指令値(出力データ)をローカルバスまたはフィールドバスを介して接続される対象のデバイスへ出力する。
 なお、制御装置100が管理する入力データ、出力データ、演算データ、製造データ、イベントデータなどを統計処理した上で、時系列データベース180に対して書込みを行う、PLCエンジン150により実行される統計記録プログラムをさらに備えるようにしてもよい。統計処理としては、例えば、断片集約近似(PAA:Picewise Aggregate Approximation)や離散ストリングへの記号化(SAX:Symbolic Aggregate approximation)などの手法を用いることができる。PAAは、時系列データからパターンを見つけることができ、発見されたパターンにより圧縮を容易にする。あるいは、SAXは、時系列データを文字列に変換することで、圧縮およびパターンの発見を容易化できる。
 制御装置100の上位接続プログラム192は、製造実行システム400から製造データを取得する。変数管理プログラム160は、これらの取得された入力データおよび製造データを変数として管理する。
 IECプログラム1541は、変数管理プログラム160により管理されるシステム変数162、デバイス変数164、ユーザ変数166を参照しつつ、予め指定された制御演算を実行し、その実行結果(出力データ)を変数管理プログラム160に出力する。
 データベース書込プログラム156は、変数管理プログラム160により管理される変数のうち指定された観測値をNBQ158へ書込む。時系列データベース180のデータベースマネージャ182は、NBQ158にキューの形で格納されているデータを順次読出して、その読出したデータからなるレコードをデータベースファイル186に順次追加する。
 上位接続プログラム192は、変数管理プログラム160により管理される変数のうち指定された変数の値、および/または、時系列データベース180のデータベースファイル186を構成するレコードのうち指定されたレコードを、時系列データとして製造実行システム400へ出力する。
 製造実行システム400がデータベースを有しており、あるいは、製造実行システム400とは別にデータベースが配置されている場合には、上位接続プログラム192に代えて、あるいは、上位接続プログラム192の一部として、データベース接続プログラムが設けられていてもよい。このようなデータベース接続プログラムは、例えば、リレーショナルデータベースに対してSQLなどのクエリを送信するとともに、応答を受信する処理を実行するようにしてもよい。
 ゲートウェイプログラム194は、変数管理プログラム160により管理される変数のうち指定された変数の値、および/または、時系列データベース180のデータベースファイル186を構成するレコードのうち指定されたレコードを、時系列データとしてIoTサービス450へ出力する。IoTサービス450は、制御装置100からの時系列データに基づいて、挙動解析を行って、制御対象の設備や装置などの予知保全などを行う。
 <E.制御装置の機能構成例>
 図5は、実施の形態に係る制御装置100の機能構成の一例を示す模式図である。図5を参照して、制御装置100は、制御アプリケーション処理部30と、プログラム処理部40と、I/O処理部50と、スケジューラ25と、切替部26と、フィールドネットワークインターフェイス55と、上位ネットワークインターフェイス51と、システムサービス処理部185とを含む。図5の制御装置100は、これらコンポーネントに関連づけて、さらに、NBQ158と、時系列データベース180とを含む。
 スケジューラ25は、制御アプリケーション処理部30と、プログラム処理部40と、I/O処理部50と、システムサービス処理部185とを、これら各部に対応のプログラムの実行の優先度に基づく順序で実施する。優先度に基づく実施の順序は後述する。
 制御アプリケーション処理部30は、スケジューラ25のスケジューリングに従い、制御アプリケーションプログラム1542を制御周期Tに同期した周期で実行する。例えば、制御アプリケーションプログラム1542は2回の制御周期T、すなわち2T毎に実行される。なお、制御アプリケーションプログラム1542の実行周期は、2Tに限定されない。
 制御アプリケーション処理部30は、プログラム解析部34と、中間コード33を格納するバッファ32とを含む。プログラム解析部34は、インタプリタ31を利用することで制御アプリケーションプログラム1542に記述された命令コードを解析する。制御アプリケーションプログラム1542は、実行されることにより中間コード33を生成し、バッファ32に格納する。制御装置100のメモリの一部は、バッファ32を構成する。プログラム解析部34は、制御アプリケーションプログラム1542の実行中に、予め定められた種類の命令コードが実行されたことを検出すると、検出結果をフラグFとして共有メモリ159に格納する。制御装置100のメモリの一部が共有メモリ159を構成する。
 制御アプリケーション処理部30のインタプリタ31は、制御アプリケーションプログラム1542の少なくとも一部を解釈して、中間コード33を生成する。すなわち、インタプリタ31は、制御アプリケーションプログラム1542を逐次解釈および実行して中間コード33を生成するとともに、生成した中間コード33をバッファ32に格納する。
 プログラム処理部40は、スケジューラ25のスケジューリングに従い、IECプログラム1541を制御周期T毎に実行する。
 プログラム処理部40は、予め定められた制御周期T毎にIECプログラム1541を実行(スキャン)して1または複数の指令値を演算する。すなわち、プログラム処理部40は、IECプログラム1541に従って、制御周期T毎に指令値を演算する。
 プログラム処理部40は、IECプログラム1541に含まれるシーケンスプログラムなどのロジック命令を処理するロジック処理部41と、IECプログラム1541に含まれるモーション命令を処理するモーション処理部42と、データベース書込部43と、残量監視部44とを含む。
 モーション処理部42は、IECプログラム1541に含まれるモーション命令に従って、制御周期T毎に指令値を演算する機能を提供する。具体的には、モーション処理部42は、インタプリタ31が事前に生成した中間コード33に従って、制御周期T毎に指令値を演算する。すなわち、モーション処理部42は、バッファ32に予め格納された中間コード33に従って、制御周期T毎に指令値を演算する機能を提供する。一般的に制御アプリケーションプログラム1542に記述される命令(コード)は、逐次実行されるために、指令値の演算周期を保証できないが、中間コード33を利用することで、モーション処理部42は、制御周期T毎に指令値を演算できる。中間コード33において記述される命令には、各制御アプリケーションに応じた座標系が用いられてもよい。
 このように、インタプリタ31は、生成した中間コード33をバッファ32に逐次キューイングし、モーション処理部42は、バッファ32にキューイングされた順に中間コード33を読出す。
 実施の形態において、「中間コード」は、制御周期T毎に指令値を演算するための命令を包含する概念である。「中間コード」は、1または複数の命令、あるいは、1または複数の関数を含む。本実施の形態においては、中間コード33は、モーション処理部42が制御周期T毎に指令値を演算できるものであれば、どのようなコードであってもよい。
 データベース書込部43は、IECプログラム1541の実行中に呼び出されるデータベース書込プログラム156を実行する。残量監視部44は、IECプログラム1541の実行中に呼び出される残量監視プログラム1544を実行する。制御周期T毎に、データベース書込プログラム156を実行するデータベース書込部43は、制御周期T毎に、時系列データベース180へ格納すべきレコードを構成するためのデータを生成する「データ生成部」に相当する。具体的には、データベース書込部43は、生成したデータをNBQ158の空き領域に格納する。
 また、残量監視部44は、NBQ158の空き領域の大きさに相当するメモリ残量を監視し、メモリ残量と閾値とを比較し、比較の結果を示す値を共有メモリ159の変数MRに設定する。
 システムサービス処理部185は、スケジューラ25のスケジューリングに従い、データベースプログラム190を、制御周期Tにおけるプロセッサ102の空き時間で実行する。システムサービス処理部185は、読出処理部183を有するデータベースマネージャ182を含む。読出処理部183は、データベースプログラム190の実行中にデータベース読出プログラム191が呼び出されて実行されることで実現される。
 読出処理部183は、NBQ158からデータを読出し、時系列データベース180に格納する処理を実現する。
 上位ネットワークインターフェイス51は、プログラム処理部40および制御アプリケーション処理部30と、上位ネットワーク6を介して接続されている装置との間のデータの遣り取りを仲介する。
 フィールドネットワークインターフェイス55は、I/O処理部50とフィールドとの間のインターフェイスである。
 I/O処理部50は、変数管理プログラム160を実行する。I/O処理部50は、プログラム処理部40によるIECプログラム1541の実行に先だって、入力データおよび出力データを更新するI/Oリフレッシュ処理を実施する。I/Oリフレッシュ処理においては、フィールドネットワークインターフェイス55を介してフィールドから入力した値をシステム変数162、デバイス変数164およびユーザ変数166に設定する。ロジック処理部41およびモーション処理部42は、システム変数162、デバイス変数164およびユーザ変数166に設定された入力データを用いて演算を実施する。次の制御周期TのI/Oリフレッシュ処理において、直前の制御周期Tでロジック処理部41により演算された1または複数の指令値(基本的には、論理値)およびモーション処理部42により演算された1または複数の指令値(基本的には、数値)は、システム変数162、デバイス変数164およびユーザ変数166に設定されて、設定された指令値はフィールドネットワークインターフェイス55を介してフィールドに出力される。
 (e1.メモリ枯渇の回避)
 実施の形態では、NBQ158は例えば、メモリ(揮発性の主記憶装置106)上に用意されるから、NBQ158のメモリ容量(サイズ)は制限される。したがって、プロセッサ102の空き時間がないために、システムサービス処理部185にプロセッサ102を含むリソースの使用権が与えられない、すなわちシステムサービス処理部185がデータベースプログラム190を実行できない場合は、NBQ158の空き領域、すなわちメモリ残量が不足することになる。つまり、NBQ158には、データベース書込部43によってデータが順次に書込まれるが、一方で読出処理部183によってNBQ158からデータは読出されないために、NBQ158にデータを書込むための空き領域が不足することになる。以下では、このようなNBQ158の空き領域の不足を「メモリ枯渇」と称する。
 実施の形態では、制御装置100は、システムサービス処理部185がデータベースプログラム190を実行できるプロセッサ102の空き時間を確保するように構成される。これにより、メモリ枯渇に対処することができる。
 より具体的には、スケジューラ25の切替部26は、フラグFの値に基づき、制御アプリケーションプログラム1542で予め定められた種類の命令コードが実行されたことを検出したときは、プロセッサ102に制御アプリケーションプログラム1542の実行を中断させて、プロセッサ102の空き時間を確保し、確保された空き時間でプロセッサ102にデータベースプログラム190(より特定的にはデータベース読出プログラム191)を実行開始させる。
 また、スケジューラ25の切替部26は、変数MRの値に基づき、メモリ枯渇の可能性を検出しときは、プロセッサ102に制御アプリケーションプログラム1542の実行を中断させて、プロセッサ102の空き時間を確保し、確保された空き時間でプロセッサ102にデータベースプログラム190(より特定的にはデータベース読出プログラム191)を実行開始させる。
 このように、切替部26は、制御周期Tにおいて、制御アプリケーションプログラム1542を実行中に、フラグFまたは変数MRの値に基づき、プロセッサ102が実行するプログラムを、制御アプリケーションプログラム1542からデータベースプログラム190にスイッチするよう構成される。これにより、制御周期Tにおいて、データベース読出プログラム191を実行するための空き時間を確保できて、NBQ158のメモリ枯渇を回避できる。
 <F.時系列データベースへのデータ書込み処理>
 次に、実施の形態に係る時系列データベース180へのデータ書込み処理について説明する。
 図6は、本実施の形態に係る制御装置100における時系列データベース180に関する処理の要部を示す模式図である。図6を参照すると、制御装置100は、ローカルバスまたはフィールドバスなどを介して、フィールド装置群8との間で入力データおよび出力データを遣り取りする。
 制御装置100において、製造装置や設備を制御するための各種演算を含む制御プログラム152は、制御周期Tでサイクリック実行される。制御プログラム152は、データ書込み条件が成立すると、データベース書込プログラム156を起動させるための命令を含む。
 データベース書込プログラム156は、指定されたデータ(1または複数の変数値)を時系列データベース180へ書込むための命令を発行する。例えば、図5中には、"put"命令が示されている。なお、データベース書込プログラム156から時系列データベース180へ書込まれるデータを収集および加工するための処理である、データ収集加工処理153を、制御プログラム152内において、あるいは、制御プログラム152と並行して実行するようにしてもよい。
 時系列データベース180には、データベース書込プログラム156からのデータが時系列に格納される(時系列データ)。時系列データベース180に格納された時系列データは、上位システムへ送信されて解析処理などに利用されてもよい。
 図6に示す構成においては、製造実行システム400やIoTサービス450といった上位システムに配置された接続処理402を利用して、時系列データベース180から必要な時系列データが抽出される。そして、上位システムにおいては、抽出された時系列データに対して、時系列分析やデータマイニングといった解析処理404が実施される。
 あるいは、時系列データベース180に格納される時系列データを異常検知処理198で利用するようにしてもよい。異常検知処理198は、PLCエンジン150が必要なプログラムを実行することで実現される。異常検知処理198は、時系列データベース180からの時系列データと、予め取得している教師データなどとを比較することで、制御対象において何らかの異常が発生している、あるいは、異常が発生する兆候が見られるといった判断を行う。
 制御装置100において、制御プログラム152制御周期T(例えば、数百マイクロ秒~数ミリ秒)でサイクリック実行される。制御プログラム152のサイクリック実行と同期して、時系列データベース180へのデータ書込みが実行されることもある。一方で、時系列データベース180は、基本的には、ストレージ(二次記憶装置108、または、外部ストレージ116(図3参照))を利用して構成される。このようなストレージは、一般的には、記憶容量は大きいものの、主記憶装置に比較して、アクセス速度(特に、書込み速度)は低く、かつ、アクセス速度のゆらぎが大きい(例えば、100ミリ秒~1000ミリ秒)。
 そこで、本実施の形態に係る制御装置100は、アクセス速度が高くないストレージを利用した時系列データベース180に対しても、制御周期Tと同期したデータ書込みを実現できる構成を提供する。
 具体的には、制御プログラム152(データベース書込プログラム156)から時系列データベース180へのデータ書込みプロセスにおいて、ロックフリーのキューであるNBQ158(図4参照)が配置される。このようなNBQ158を採用することで、ストレージに対するアクセス速度に比較して、データベース書込プログラム156がデータ書込み命令を発行する周期が短い場合であっても、データベース書込プログラム156の実行がデータ書込み待ちで中断するような事態を回避できる。すなわち、制御周期Tに同期した、時系列データベース180へのデータ書込みを実現できる。
 このような制御周期Tと同期した時系列データの格納により、制御プログラム152に含まれる命令を用いることで、入力データ(例えば、アナログセンサの計測値など)、出力データ(例えば、位置指令や速度指令など)、演算データ(例えば、異常検知処理に用いられるフィルタパラメータや特徴量など)、製造データ(例えば、製造状態や品番など)を不揮発性のストレージに制御周期T毎に格納できる。
 <G.データ構造>
 実施の形態に係る時系列データベース180に格納されるレコードのデータ構造の一例について説明する。
 制御装置100は、制御対象に関連する観測値と、時刻管理処理によって示される観測値に対応付けられた時刻、および/または、内部カウンタが示す当該観測値に対応付けられたカウンタ値とを含む、レコードを生成してもよい。観測値は、プロセッサ102が利用可能な値である。
 図7と図8は、実施の形態に係る制御装置100における時系列データベース180に格納されるレコードのデータ構造の一例を示す図である。図7を参照すると、レコードは、時刻フィールド1821と、カウンタ値フィールド1822と、インデックスフィールド1823と、観測値フィールド1824とを含む。
 時刻フィールド1821およびカウンタ値フィールド1822は、対応するデータ(1または複数の観測値)が取得されたタイミングを示す情報が格納される。
 より具体的には、時刻フィールド1821には、対応するデータが取得されたタイミングを示す時刻(例えば、RTC128により管理される時刻)が格納される。
 カウンタ値フィールド1822には、対応するデータが取得されたときの、制御装置100で管理するカウンタからのカウンタ値、または、フィールドバス/ローカルバスにおいてタイミングを管理するためのカウンタからのカウンタ値のうち少なくともいずれか1つが格納される。時刻フィールド1821に時刻を格納するとともに、カウンタ値フィールド1822にカウンタ値を格納することで、対応するデータ(観測値)の事後的な解析を支援することができる。
 インデックスフィールド1823は、データベースへのレコードの書込み動作などに応じて、所定値だけインクリメント/デクリメントされる値(インデックス値)が格納される。典型的には、レコードが格納される毎に1ずつカウントアップされるような値が用いられる。例えば、IECプログラム1541内にデータベース書込プログラム156を起動する命令が記述されている場合には、その起動する命令の実行に伴ってインデックス値をインクリメントするようにしてもよい。
 観測値フィールド1824には、指定されたデータ(1または複数の観測値)が格納される。観測値フィールド1824に格納されるデータとしては、入力データ、出力データ、演算データ、製造データ、イベントデータなどが含まれる。
 具体的には、入力データとしては、各種センサから取得されたデジタル信号(状態値)やアナログ信号(各種計測信号)などを含む。観測値に加えて、当該観測値を出力したセンサを特定するための情報を併せて格納するようにしてもよい。
 出力データとしては、モーションドライブや開度調節器などに対して出力される指令値などが格納されてもよい。指令値に加えて、指令値の出力先のアクチュエータを特定するための情報を併せて格納するようにしてもよい。
 演算データとしては、IECプログラム1541の実行によって算出される変数値や過渡的な値などが格納されてもよい。変数値や過渡的な値に加えて、当該演算データを出力したIECプログラム1541またはタスクなどを特定するための情報を併せて格納するようにしてもよい。
 製造データとしては、製造実行システム400から受信した実行指令値群(例えば、ワークの品番、ロット番号、レシピ番号など)が格納されてもよい。実行指令値群としては、ワークを一意に特定する識別番号やワークの種類などを特定する情報が含まれていてもよい。
 イベントデータとしては、観測値が予め定められたしきい値を超えたあるいは下回った場合の情報や、予め定められた異常フラグなどがオンした場合の情報が格納されてもよい。イベントデータを発生させた変数などの情報を含めてもよい。
 さらに、イベントデータについては、予め定められた周期で繰返し生成または格納される時系列データではなく、予め定められた条件が満たされた場合に生成してもよい。この場合にも、カウンタ同期されたカウンタ値および/または時刻を対応付けるようにしてもよい。
 上述したようなレコードが制御周期Tまたは所定イベント毎に生成および出力される。例えば、図8に示す例では、500μsec毎にレコードが生成および出力される例を示す。このように、指定された観測値を含むレコードが時系列に生成および出力されることで、これらの時系列データに基づいて、各種解析を行うことができる。
 図7または図8に示すレコードをKey-Value型で構成してもよい。この場合には、例えば、時刻フィールド1821およびカウンタ値フィールド1822をKeyとし、インデックスフィールド1823および観測値フィールド1824をValueとしてもよい。すなわち、時系列データの各レコードは、観測値に対応付けられた時刻およびカウンタ値をKeyとして含むとともに、対応するValueとして観測値を含む。
 上述の説明においては、制御装置100が自装置内に有している時系列データベース180にレコードを格納する処理を典型例として説明したが、これに限らず、上位システムなどへレコードを送信するようにしてもよい。この場合においても、図7または図8に示すようなレコードが制御周期T毎に生成され、システムサービス処理部185により、目的の外部装置へ送信されてもよい。
 さらに、制御装置100の時系列データベース180を構成するデータベースマネージャ182およびデータベースファイル186が同一の制御装置100内に配置されなくてもよい。すなわち、制御装置100においては、システムサービス処理部185のデータベースマネージャ182がNBQ158からデータを読出すとともに、制御装置100の外部にあるデータベースファイル186へレコードを書込むようにしてもよい。制御装置100の外部としては、他の制御装置100のストレージやネットワーク上のストレージ(ネットワークストレージ)などが想定される。
 本実施の形態に係る制御装置100において実装される、データベース書込プログラム156から時系列データベース180までの論理的なデータ転送経路において配置されるNBQ158は、ストレージへの書込み速度の遅さを補償するという効果を発揮するが、ネットワークストレージに対する書込み速度の遅さについても補償するという効果を得ることができる。
 このような、ネットワークストレージ上にレコードを書込むことのできるような構成を採用することで、制御装置100内にデータベースファイル186としてレコードを格納する構成に比較して、より多くのデータを蓄えることができる。さらに、複数の制御装置100が単一のネットワークストレージに対してそれぞれレコードを書込むような構成も可能であり、ストレージの集約が可能であり、これによって、データ管理やセキュリティの面からもメリットが得られる。
 <H.周期制御とスイッチ>
 図9~図12は、実施の形態に係る制御装置100における周期制御の一例を示す模式図である。図9~図12を参照して、周期制御とシステムサービス処理部185のための空き時間の確保を説明する。
 図9は、I/O処理部50と、データベース書込部43(図中は、DB書込部43と略す)を有するロジック処理部41と、モーション処理部42と、制御アプリケーション処理部30と、システムサービス処理部185とがシーケンシャルに実行されている例を示す。これら各処理部は、制御装置100では「タスク」として扱われる。タスクは、制御装置100のプロセッサ102を含むリソース(コンピューティング資源)を割当てる制御の対象となる基本単位であり、各タスクに、実行させるべき1または複数のプログラムが登録または設定される。すなわち、いずれかのタスクに対してリソースが割当てられ、当該タスクが実行できる状態になると、当該タスクに登録または設定されている1または複数のプログラムの実行が開始または再開されることになる。タスクは、実施の形態では、例えばプライマリタスクと、セカンダリタスクと、システムサービスタスクとを含む。
 プライマリタスクは、制御装置100のプロセッサ102で実行される最も実行の優先度(以下、単に「優先度」とも称す。)の高いプログラムを含む。プライマリタスクは、I/O処理部50と、ロジック処理部41と、モーション処理部42とを含む。プライマリタスクは各制御周期Tで実行されることが保証されている。
 セカンダリタスクは、プライマリタスクに比較して優先度が低いが実行周期が保証されるタスクであって、例えば制御アプリケーション処理部30を含む。セカンダリタスクの制御アプリケーション処理部30は、例えば制御周期Tの整数倍の周期で実行される。実施の形態では、制御アプリケーション処理部30は、例えば周期2T、すなわち2倍の制御周期T毎に実行される。
 低優先で実行される制御アプリケーション処理部30のインタプリタ31は、予め定められた制御アプリケーション同期周期(周期2T)が到来する前に、制御アプリケーションプログラム1542の解釈を一時停止する。一時停止するタイミングは制御アプリケーションプログラム1542の全てのコードを解釈実行し終えたタイミングを含む。
 その一時停止したタイミングで、プログラム処理部40と制御アプリケーション処理部30との間でデータ同期230を行うことで、双方に整合性をもつデータを共有する。このように、インタプリタ31は、制御周期Tの整数倍である同期周期(すなわち、制御アプリケーション同期周期)である周期2T毎に、プログラム処理部40との間で共有するデータを更新する。共有データの更新に併せて、フィールド側から取得される入力データおよび出力データについても更新(データ同期)するようにしてもよい。
 システムサービスタスクは、セカンダリタスクよりも優先度が低く、制御周期Tにおけるプロセッサ102の空き時間で実行される。システムサービスタスクは、システムサービス処理部185を含む。これにより、制御装置100は、プライマリタスクおよびセカンダリタスクの実行周期を保証する範囲で、システムサービスタスクを実行することができる。
 スケジューラ25は、これらのタスク(に含まれる各プログラム)を優先度に従い実行タイミングを管理することでタスクの周期制御を実現する。より具体的には、スケジューラ25は、適時のタイミングおよび期間で、リソースを各タスクのプログラムに割当てることで、プロセッサ102に、各タスクのプログラムを優先度に従い実行させる。
 図9のケースでは、各制御周期Tにおいて、ロジック処理部41により呼出されたデータベース書込部43が実行されてNBQ158へのデータ書込みが実施されるとともに、周期2T毎にシステムサービス処理部185の読出処理部183によってNBQ158からデータが読出される。その結果、メモリ枯渇を回避することができる。
 その一方で、制御アプリケーションプログラム1542の内容によっては、制御アプリケーション処理部30の実行時間が長くなる。制御アプリケーション処理部30の実行時間が長くなると、上記に述べた一時停止のタイミングが周期2Tの終了に一致する場合が発生する。この場合、図10に示すように、制御周期T内において空き時間無し231の事象が生じる。図10では、直前の周期2Tにおいて空き時間無し231の事象が生じたために、その後の周期2Tにおける空き時間まで、読出処理部183によってNBQ158からデータ読出しが実施されないにもかかわらずデータベース書込部43によってデータがNBQ158に格納される。したがって、NBQ158は、その後の周期2Tにおける空き時間までのN回(N≧4)の制御周期Tに亘るデータが格納されることになるから、その後の周期2Tにおける空き時間が到来するまでに、メモリが枯渇する可能性がある。
 (h1.タスクスイッチの一例)
 実施の形態では、制御周期Tにおいてシステムサービス処理部185の実行時間を確保するために、すなわちメモリ枯渇を回避できるよう、制御装置100は、制御アプリケーションプログラム1542の予め定められた種類の命令コードが実行されたことを検出したとき、タスクをスイッチする。
 具体的には、図11を参照して、制御アプリケーション処理部30の実行中に呼出されて実行されるプログラム解析部34は、インタプリタ31が制御アプリケーションプログラム1542の予め定められ種類の命令コードが実行されたか否かを検出する。プログラム解析部34は、予め定められた種類の命令コードが実行されたことを検出すると、フラグFをTrueにセットする。スケジューラ25の切替部26は、フラグFがFalseからTrueに変更されたことを検出すると、タスクを切替える(スイッチ45)。具体的には、切替部26は、プロセッサ102に制御アプリケーション処理部30の実行を中断(中断232)させシステムサービス処理部185を実行開始させる。プログラム解析部34が、予め定められた種類の命令コードが実行されたことを検出する処理は後述する。
 図11に示すタスクスイッチによれば、制御装置100は、制御周期Tにおいて、制御アプリケーション処理部30の実行の中断232によって空き時間233を確保し、確保された空き時間233においてシステムサービス処理部185の読出処理部183はNBQ158からのデータ読出を実施する。これにより、NBQ158のメモリ枯渇を回避できる。
 (h2.タスクスイッチの他の例)
 実施の形態では、メモリ枯渇を回避できるよう、制御装置100は、残量監視部44が検出したNBQ158のメモリ残量を示す変数MRの値に基づき、図12に示すようにタスクスイッチを実施する。
 図12を参照して、プライマリタスクは、I/O処理部50と、ロジック処理部41と、モーション処理部42とを含む。ロジック処理部41はDB書込部43に加えて、残量監視部44および制御アプリケーション処理部301を含む。残量監視部44は、IECプログラム1541の実行中に呼出される残量監視プログラム1544が実行されることにより実現される。制御アプリケーション処理部301は、IECプログラム1541内に記述された所定の命令コードが実行されることにより実現される。この制御アプリケーション処理部301を実現する所定の命令コードについては後述する。なお、残量監視プログラム1544も、IECプログラム1541内に記述された残量監視の命令コードを含んで構成されてもよい。
 残量監視部44は、NBQ158のメモリ残量(単位は、例えばパーセント)を検出し、検出したメモリ残量と閾値とを比較し、比較の結果に基づく値を変数MRに設定する。
 実施の形態では、閾値は、警告閾値と、警告閾値よりも大きな値を示す監視閾値とを含む。残量監視部44は、上記の比較結果が(メモリ残量>監視閾値)を示す場合はメモリ残量に十分余裕があることを示すように変数MRに「Normal」を設定し、上記の比較結果が(監視閾値≧メモリ残量>警告閾値)を示す場合はメモリ枯渇の可能性があることを示すように変数MRの「Monitoring」を設定し、上記の比較結果が(メモリ残量≦警告閾値)を示す場合はメモリ枯渇に至ったことを示すように変数MRに「Warning」を設定する。
 例えば、切替部26は、制御周期Tにおいて変数MRが「Normal」または「Monitoring」を示す場合は、タスクのスイッチ45を実施しないが「Warning」を示す場合は、スイッチ45を実施する。具体的には、切替部26は、プロセッサ102に制御周期Tにおいて実行中の制御アプリケーション処理部30の実行を中断232させて、スイッチ45を実施して、システムサービス処理部185を実行開始させる。これにより、制御装置100は、当該制御周期Tにおいて、中断232によって生じた空き時間233においてシステムサービス処理部185を実行して、NBQ158からデータを読出すことができる。これにより、制御装置100はNBQ158のメモリ枯渇を解消することができる。
 残量監視部44は、典型的には、制御周期TのIECプログラム1541の実行開始時において、NBQ158のメモリ残量を検出する。これにより、各制御周期Tにおいて、変数MRは最新のメモリ残量に基づく値が設定される。したがって、切替部26は、直近に検出されたメモリ残量に基づき、スイッチ45を実施するか否かを判断できる。
 <I.タスクスイッチの具体例>
 上記の(h1.タスクスイッチの一例)および(h2.タスクスイッチの他の例)のそれぞれについて、具体的な実現例を説明する。
 (i1.タスクスイッチの一の具体例)
 上記の(h1.タスクスイッチの一例)の具体的な処理を、図13~図16を参照して説明する。図13は、実施の形態に係る制御アプリケーション処理部30の処理を概略的に示すフローチャートである。図14は、実施の形態に係るプログラム解析部34の処理を示すフローチャートである。図15は、実施の形態に係る命令コードの種類と命令コードの対応関係を示す表である。図16は、実施の形態に係るスケジューラ25の処理を概略的に示すフローチャートである。
 図13を参照して、制御アプリケーション処理部30は、変数同期処理を実施する(ステップS1)。変数同期処理は、上記に述べたデータ同期230の処理に含まれる。また、制御アプリケーション処理部30は、ステップS1において、フラグFに初期値としてFalseをセットする。
 制御アプリケーション処理部30の処理が開始されると、インタプリタ31のプログラム解析部34は、制御アプリケーションプログラム1542をプログラム解析する(ステップS3)。プログラム解析処理の詳細は図14で説明する。
 制御アプリケーション処理部30は、制御アプリケーションプログラム1542の実行結果を出力する(ステップS5)。例えば、制御アプリケーション処理部30は、実行結果として中間コード33をバッファ32に格納する。
 制御アプリケーション処理部30は、制御アプリケーションプログラム1542の実行を終了すると終了通知を出力する(ステップS7)。
 図14のプログラム解析部34の処理は、図15の表を参照して実施される。図15の表は、例えばストレージに格納される。図15を参照して、表は、予め定められた命令コードの種類(条件待ち、動作系)と、各種類に対応付けて当該種類に該当する命令コードとを有する。
 図15では、条件待ち命令コードは、待ち合わせ条件と当該待ち合わせ条件が満たされるかを判断するコードを用いて記述される待ち合わせ命令コードを含む。具体的には、条件待ち命令コードは、待ち合わせ条が合致するまで、すなわち待ち合わせ条が満たされることが判断されるまで次の行のプログラムの命令コードを実行しないことを指示する命令コードである。この命令コードには、例えば、待ち合わせ条件を用いて記述されるIF文またはWHILE文などの命令コードと、待ち合わせ条件として所定時間の経過を用いて記述されるWAIT、TIMER、SLEEPなどの命令コードを含む。
 条件待ち命令コードとしては、例えば、制御アプリケーションプログラム1542上でデジタルインプットの信号の入力待ち状態、タイマ処理、インポジションチェック待ち状態などを規定する命令コードを含む。
 また、動作系命令コードは、実行されると中間コード33を生成する命令コードであって、例えば、軌道生成に関連した命令コードであるMOVE、MOVEC、MOVESなどを含む。
 動作系命令コードが実行されることで生成される中間コード33は、複数の制御周期Tに亘って指令値の演算を可能にする。例えば、ある動作系命令コードが実行されることにより出力される中間コード33が連続した複数の制御周期Tの期間に亘って指令値を規定するものであるとすると、モーション処理部42は、中間コード33をバッファ32から読出して、複数の制御周期T分の期間に亘って指令値を周期的に演算する。なお、動作系命令コードの命令コード毎に、1個の中間コード33から生成することのできる指令値が規定する連続する制御周期Tの数を異ならせることができる。
 したがって、制御アプリケーション処理部30の制御アプリケーションプログラム1542から中間コード33の生成処理が、プログラム処理部40のモーション処理部42による指令値の演算処理に比較して、十分に先だって実行されれば、タスクのスイッチ45によって制御アプリケーション処理部30の実行が中断されたとしても、モーション処理部42は、バッファ32の中間コード33を用いて、その後の複数の連続した制御周期Tに亘る期間の指令値を算出することができる。
 図14を参照して、インタプリタ31は制御アプリケーションプログラム1542の先頭行から1行ずつプログラムを読出し(ステップS31)、プログラム解析部34は、読出されたプログラムの命令コードの種類を、図15の表を参照して判断する(ステップS33)。
 プログラム解析部34は、命令コードを解析し、解析の結果に基づき動作系命令コードであると判断すると(ステップS33で“動作系命令”)、プログラム解析部34は、当該命令コードに従う演算を実施し、演算結果である中間コード33を算出する(ステップS37)。
 プログラム解析部34は、演算が終了したか否かを判断し(ステップS39)、演算は終了していないと判断すると(ステップS39でNO)、ステップS31に移行し、インタプリタ31は次の行のプログラムを読出すが、演算は終了したと判断すると(ステップS39でYES)、ステップS40に移行する。
 プログラム解析部34は、命令コードを解析し、解析の結果に基づき条件待ち命令コードであると判断すると(ステップS33で“条件待ち命令”)、プログラム解析部34は、当該命令コードに従う演算を実施し、演算結果に基づき条件が満たされた(条件が合致した)か否かを判断する(ステップS35)。プログラム解析部34は、条件が合致したと判断すると(ステップS35でYES)、ステップS31に移行し、インタプリタ31は次の行のプログラムを読出す。プログラム解析部34は、条件は合致しないと判断すると(ステップS35でNO)、すなわち制御アプリケーション処理部30は条件が合致するまで待ち状態となると判断する場合は、ステップS40に移行する。
 ステップS40では、プログラム解析部34は、フラグFにTrueをセットする。
 図16を参照して、スケジューラ25は、フラグFがFalseからTrueに変更されたことの通知をプログラム解析部34から受信するか否かを判断する(ステップS41)。スケジューラ25は、通知を受信しないと判断すると(ステップS41でNO)、通常のスケジューリング処理を実施する(ステップS47)。すなわち、スケジューラ25は、優先度に基づく順序でプロセッサ102にタスクを実行させる。
 一方、スケジューラ25は、通知を受信したと判断すると(ステップS41でYES)、切替部26は、タスクをスイッチする。すなわち、切替部26は、プロセッサ102に制御アプリケーション処理部30の実行を中断させて、システムサービス処理部185の実行を開始させる(ステップS43)。
 タスクのスイッチが実施されると、スケジューラ25は、次の制御周期Tが到来したか否かを判断する(ステップS45)。スケジューラ25は、次の制御周期Tは到来していないと判断する間は(ステップS45でNO)、ステップS45の処理を繰り返すが、次の制御周期Tが到来したと判断すると(ステップS45でYES)、ステップS47の処理を実施し、スケジューリングの処理が終了したか否かを判断する(ステップS49)。
 スケジューラ25は、タスクのスケジューリング処理は終了していないと判断すると(ステップS49でNO)、ステップS41に戻るが、タスクのスケジューリング処理は終了したと判断すると(ステップS49でYES)、一連の処理を終了する。
 図16のスケジューラ25の処理によれば、フラグFがFalseからTrueに変更されたとき、切替部26は、プロセッサ102に制御アプリケーション処理部30の実行を中断させてシステムサービス処理部185を実行開始させることで、NBQ158からのデータ読出しが実施されてメモリ枯渇を回避できる。
 また、バッファ32には複数の制御周期Tに亘る指令値の算出を可能にする中間コード33が格納され得るので、制御アプリケーション処理部30の実行が中断したとしても、当該中断はモーション処理部42の指令値の算出に影響しない。
 (i2.タスクスイッチの他の具体例)
 上記の(h2.タスクスイッチの他の例)の具体的な処理を、図17と図18を参照して説明する。図17は、実施の形態に係る制御アプリケーションプログラム1542の一部を模式的に示す図である。図18は、実施の形態に係る切替部26の処理を概略的に示すフローチャートである。図19は、実施の形態に係る制御アプリケーション処理部301が実行する命令コードの一例を模式的に示す図である。
 図19において示される、制御アプリケーション処理部301が実行する命令コードは、IECプログラム1541において、スイッチ45によって制御アプリケーション処理部30(すなわち、制御アプリケーションプログラム1542)の実行が中断した場合に実行される命令コードを含む。この命令コードは、制御対象のリアルタイム制御に関連する処理を実施するための命令コードであって、典型的には、制御アプリケーションプログラム1542の命令コードに相当するコードであって、中間コードを生成する命令コードを含む。
 図17を参照して、制御アプリケーションプログラム1542は、命令コード1600を含む。命令コード1600は、“Sign(X)=True”の条件が満たされる間は、プログラムの次の行の命令コードを解析・実行しないことを示す待ち合わせ命令を示す。Sign(X)は、“変数MRは「Warning」を示す”との条件を示す。したがって、変数MRが「Warning」を示す間は、制御アプリケーションプログラム1542の次の命令コードが実行されない待ち状態となる。この待ち状態は、変数MRが「Normal」または「Monitoring」に変更されるまで待ち合わせる状態を包含する。具体的には、待ち合わせ状態は、NBQ158のメモリ枯渇が解消されるまで待ち合わせる状態、すなわち読出処理部183によってNBQ158からデータが読出されて十分な空き領域ができるまで待ち合わせる状態を含む。
 このように、NBQ158がメモリ枯渇の状態にある間は、切替部26が、プロセッサ102に制御アプリケーション処理部30の実行を中断させてシステムサービス処理部185を実行開始させて、メモリ枯渇を解消することができる。なお、この命令コード1600は、図15に示す条件待ちの命令コードの種類に該当する。
 待ち合わせ命令の命令コード1600は、NBQ158からのシステムサービス処理部185のデータ読出によって、変数MRが「Warning」から「Normal」または「Monitoring」に変更されると、待ち合わせは終了する。すなわち変数MRが「Warning」から「Normal」または「Monitoring」に変更されると、命令コード1600の“Sign(X)=True”の条件が満たされなくなり、制御アプリケーションプログラム1542では、命令コード1600の次の行の命令コードが読出されて解析・実行される。
 図18を参照して、残量監視部44は、メモリ残量を検出し(ステップS61)、検出したメモリ残量と警告閾値および監視閾値とを比較することにより(ステップS63、ステップS67)、変数MRに比較の結果に基づく値を設定する。
 切替部26は、変数MRの値が「Warning」を示すときは(ステップS63でYES)、警告の処理(ステップS65)を実施し、変数MRの値が「Monitoring」を示すときは(ステップS63でNO、ステップS67でYES)、監視の処理(ステップS69)を実施する。変数MRの値が「Warning」および「Monitoring」のいずれも示さないとき(ステップS67でNO)、すなわち変数MRが「Normal」を示すときは、処理は終了する。
 図19を参照して、警告の処理(ステップS65)と監視の処理(ステップS69)の一例を説明する。制御アプリケーション処理部301のプログラムは、IECプログラム1541内において例えばラダープログラムで記述されている。図19では、FB(ファンクションブロック)1546、1548は、制御アプリケーションプログラム1542の一部の命令コードに相当する。監視の処理(ステップS69)では、切替部26は、信号X1をプログラム処理部40に出力する。プログラム処理部40が実行するIECプログラム1541は、信号X1を入力するとブロック1545がオンし、FB1546が実行される。また、警告の処理(ステップS65)では、“変数MRが「Warning」を示す”のIF文の条件ブロック1547がオンすると、すなわちIF文の条件が満たされると、FB1548が実行される。
 図19のFB1546は、実行されると、例えば、連続したN個の制御周期Tに亘る中間コード33を出力する。また、FB1548は、実行されると、例えば、連続したM個(ただし、M≧N)の制御周期Tに亘る中間コード33を出力する。
 これにより、メモリ残量の値が監視閾値または警告閾値よりも小さい期間では、メモリ枯渇に対処するために、制御周期Tにおいて制御アプリケーション処理部30の実行が中断されるとしても、当該制御周期Tにおいて、プライマリタスクの制御アプリケーション処理部301が実行されることで、複数の制御周期Tに亘る指令値を算出するための中間コード33を算出することができる。したがって、各制御周期Tのプライマリタスクにおけるモーション処理部42の実行に先行して、指令値の算出に必要な中間コードが算出されることを保証できる。
 なお、図19に示す制御アプリケーション処理部301のプログラムは、フラグFに従いスイッチ45が実施される場合に、プライマリタスクにおいて実行されるようにしてもよい。
 <J.応用例>
 次に、実施の形態に係る制御装置100が生成および出力する時系列データを用いた応用例について説明する。
 図20は、実施の形態に係る制御装置100の時系列データベース180に格納される時系列データを用いたアプリケーションの一例を説明するための図である。
 図20に示す例では、製造実行システム400は、制御装置100の時系列データベース180に格納された時系列データを用いて、品質トレーサビリティなどを実現する。具体的には、時系列データベース180に格納された時系列データに含まれる製造データに基づいて、いずれのワーク(製造物)に対応付けられる時系列データであるかを判別する。判別されたワーク毎の時系列データを発生した時刻順に並べることで、製造時におけるワーク毎の状態を把握することができる。例えば、図20には、「品番001」のワークに対応付けて複数の時系列データが格納されるとともに、「品番002」のワークに対応付けて複数の時系列データが格納される例を示す。
 このように、製造実行システム400は、制御装置100の時系列データベース180に格納された時系列データに基づいて、品質トレーサビリティに係る情報を生成してもよい。
 品質トレーサビリティに係る情報を生成する際に、時刻およびカウンタの情報を対応付けて、時系列データ内の観測値を処理することで、より時間的に緻密な情報を生成することができる。
 また、図20に示す例では、IoTサービス450は、いわゆるビッグデータ解析を実現する。IoTサービス450には、製造装置/設備11を制御する制御装置100からの時系列データだけではなく、別の製造装置/設備11からの時系列データも出力される。IoTサービス450には、1または複数の製造装置/設備からの時系列データに対して、各種の解析を実施する。このような解析の一例として、時系列分析460が示されている。
 IoTサービス450を提供するシステムを構成する1または複数のプロセッサが時系列分析460を実行する。時系列分析460においては、1または複数のプロセッサが時系列データに対する前処理462を実行する。前処理462においては、1または複数のプロセッサがストレージに格納された時系列データから特徴量などを抽出して次元を下げる処理、異常値・外れ値を除外する処理などを実行する。さらに、1または複数のプロセッサは、前処理462が実施された時系列データに対して、分析処理464を実行する。
 1または複数のプロセッサは、分析処理464の結果に基づいてモデリング466を実施することで、制御対象の製造装置/設備についてのモデルを生成する。1または複数のプロセッサは、生成したモデル(関数またはパラメータのセット)をストレージに格納する。さらに、1または複数のプロセッサは、生成されたモデルに基づいて、異常の発生や劣化の進行などの予測処理468を実行する。最終的に、1または複数のプロセッサは、予測処理468の結果がグラフや表などを用いて視覚的にディスプレイなどに出力されてもよい(視覚化処理470)。
 以上のように、IoTサービス450は、制御装置100の時系列データベース180に格納された時系列データに基づくデータ解析を実施する。このようなIoTサービス450は、典型的には、クラウド上の十分な演算リソースを有する環境で実施されることが想定される。そのため、大量の時系列データを用いて、隠れた特性などを見つけることができる。
 このようなデータ解析を行う際に、時刻およびカウンタの情報を対応付けて、時系列データ内の観測値同士の時間的関係をより精緻に決定できるので、より正確かつ有意義な解析を実現できる。例えば、モデルの生成にあたっては、観測値同士の隠れた因果関係を探索することが重要であるが、このような因果関係は時間的なずれによって見つけることができない場合もある。本実施の形態に係るシステムにおいては、前処理において、観測値同士の時間的な関係をより正確に決定できるので、より正確なモデルの生成を実現できる。
 また、何らかの異常が発生した時刻を参照して、その発生した時刻における設備データを確認する必要がある場合などにより有益である。
 また、図20に示す例においては、制御装置100の内部でAI(Artificial Intelligence)処理196が実施される例を示す。AI処理196においては、例えば、教師ありの機械学習を行っておき、制御対象の製造装置や設備に生じる異常や劣化傾向を事前に検出するようにしてもよい。
 具体的には、AI処理196は、制御装置100の時系列データベース180に格納された時系列データに含まれる1または複数の観測値から特徴量を生成し、その生成した特徴量を統計処理した上で、学習データとして保持する。そして、AI処理196は、何らかの新たな観測値が入力されると、当該入力された観測値が学習データからどの程度外れているのかを示す度合いを算出するとともに、その算出された外れの度合いに基づいて、異常の有無や劣化傾向を判断する。
 このようなAI処理196を制御装置100内に実装することで、制御対象の製造装置や設備に生じる異常や劣化傾向を実質的にリアルタイムに検出できる。
 <K.付記>
 上述したような本実施の形態は、以下のような技術思想を含む。
 [構成1]
 制御対象(8)を制御する制御装置(100)であって、
 プロセッサ(102)と、
 複数のプログラムを格納する記憶部(108)と、
 予め定められた周期内で、前記プロセッサに優先度に従い実行させるプログラムを管理するスケジューラ(25)と、を含み、
 前記記憶部の前記複数のプログラムは、
 前記周期において前記プロセッサで実行される最も実行の優先度が高いプログラムであって、前記制御対象のリアルタイム制御処理のための第1のプログラム(1541)と、
 前記第1のプログラムより実行の優先度が低いプログラムであって、前記リアルタイム制御に関連する関連処理のための第2のプログラム(1542)と、
 前記第2のプログラムより実行の優先度が低く、前記周期においてプロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラム(190、191)とを含み、
 前記スケジューラは、
 前記周期内において、前記第2のプログラムの実行を開始し、その後に前記第2のプログラムにおいて予め定められた種類の命令コードが実行された場合、前記プロセッサに前記第2のプログラムの実行を中断させ前記第3のプログラムを実行開始させる切替部(26)を含む、制御装置。
 [構成2]
 前記リアルタイム制御処理は、前記関連処理により生成された中間コードに基づき前記制御対象への指令値を生成する処理を含み、
 前記予め定められた種類の命令コードは、実行されると複数周期にわたる前記中間コードを生成する命令コードを含む、構成1に記載の制御装置。
 [構成3]
 前記予め定められた種類の命令コードは、待ち合わせ条件と当該待ち合わせ条件が満たされるかを判断するコードを用いて記述される待ち合わせ命令コードを含む、構成1または2に記載の制御装置。
 [構成4]
 前記第2のプログラムは、インタプリタ言語で記述されたプログラムを含む、構成1から3のいずれか1に記載の制御装置。
 [構成5]
 前記システムサービスは、
 前記制御対象に関するデータを含むレコードを時系列に格納する時系列データベース(180)の処理を含む、構成1から4のいずれか1に記載の制御装置。
 [構成6]
 前記制御装置は、さらに、
 前記周期毎に、前記時系列データベースへ格納すべきレコードを構成するためのデータを生成するデータ生成部(43)と、
 前記データ生成部により生成されるデータを順次格納する、揮発性の主記憶装置上に形成されるノンブロッキングキュー(158)と、を備え、
 前記システムサービスは、
 前記ノンブロッキングキューから前記データを読み出し、前記時系列データベースに格納する処理(183)を含む、構成5に記載の制御装置。
 [構成7]
 前記制御装置が前記時系列データベースを備える、構成6に記載の制御装置。
 [構成8]
 前記制御装置は、さらに、
 前記ノンブロッキングキューのメモリ残量を監視する残量監視部(44)を備え、
 前記切替部は、
 前記メモリ残量と閾値の比較の結果に基づき、前記プロセッサに、実行中の前記第2のプログラムの実行を中断させ、前記第3のプログラムの実行を開始させる、構成6または7に記載の制御装置。
 [構成9]
 前記第1のプログラムは、前記第2のプログラムの実行が中断した場合に実行される、前記関連処理の命令コード(301)を含む、構成1から8のいずれか1に記載の制御装置。
 [構成10]
 制御対象(8)を制御するためのプロセッサ(102)を有する制御装置(100)で実行されるプログラムであって、
 予め定められた周期内で、前記プロセッサに優先度に従い実行させるプログラムを管理するスケジューラプログラム(170)と、
 前記周期において前記プロセッサで実行される最も実行の優先度が高いプログラムであって、前記制御対象のリアルタイム制御処理のための第1のプログラム(1541)と、
 前記第1のプログラムより実行の優先度が低いプログラムであって、前記リアルタイム制御に関連する関連処理のための第2のプログラム(1542)と、
 前記第2のプログラムより実行の優先度が低く、前記周期においてプロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラム(190、191)とを備え、
 前記スケジューラプログラムは、
 前記周期内において、前記第2のプログラムの実行を開始し、その後に前記第2のプログラムにおいて予め定められた種類の命令コードが実行された場合、前記プロセッサに前記第2のプログラムの実行を中断させ前記第3のプログラムを実行開始させるスイッチプログラム(171)を含む、プログラム。
 [構成11]
 制御対象(8)を制御するためのプロセッサ(102)を有する制御装置(100)を制御する制御方法であって、
 前記制御装置は、
 予め定められた周期において前記プロセッサで実行される最も実行の優先度が高いプログラムであって、前記制御対象のリアルタイム制御処理のための第1のプログラム(1541)と、
 前記第1のプログラムより実行の優先度が低いプログラムであって、前記リアルタイム制御に関連する関連処理のための第2のプログラム(1542)と、
 前記第2のプログラムより実行の優先度が低く、前記周期においてプロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラム(190、191)とを備え、
 前記制御方法は、
 前記周期内で、前記プロセッサに優先度に従い実行させるプログラムを管理するステップを、備え、
 前記管理するステップは、
 前記周期内において、
  前記第2のプログラムの実行を開始し、その後に前記第2のプログラムにおいて予め定められた種類の命令コードが実行されるか否かを判断するステップ(S33)と、
  前記判断に基づき、場合、前記プロセッサに前記第2のプログラムの実行を中断させ前記第3のプログラムを実行開始させるステップ(S43)とを含む、制御方法。
 今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
 1 制御システム、25 スケジューラ、26 切替部、30,301 制御アプリケーション処理部、31 インタプリタ、32 バッファ、33 中間コード、34 プログラム解析部、40 プログラム処理部、41 ロジック処理部、42 モーション処理部、43 データベース書込部、44 残量監視部、45 スイッチ、50 I/O処理部、100 制御装置、102 プロセッサ、106 主記憶装置、108 二次記憶装置、151 インタプリタプログラム、152 制御プログラム、156 データベース書込プログラム、159 共有メモリ、160 変数管理プログラム、170 スケジューラプログラム、171 スイッチプログラム、172 入力プログラム、174 出力プログラム、180 時系列データベース、182 データベースマネージャ、183 読出処理部、184 書込みバッファ、185 システムサービス処理部、186 データベースファイル、190 データベースプログラム、191 データベース読出プログラム、195 システムサービスプログラム、1541 IECプログラム、1542 制御アプリケーションプログラム、1544 残量監視プログラム、F フラグ、MR 変数、T 制御周期。

Claims (11)

  1.  制御対象を制御する制御装置であって、
     プロセッサと、
     複数のプログラムを格納する記憶部と、
     予め定められた周期内で、前記プロセッサに優先度に従い実行させるプログラムを管理するスケジューラと、を含み、
     前記記憶部の前記複数のプログラムは、
     前記周期において前記プロセッサで実行される最も実行の優先度が高いプログラムであって、前記制御対象のリアルタイム制御処理のための第1のプログラムと、
     前記第1のプログラムより実行の優先度が低いプログラムであって、前記リアルタイム制御に関連する関連処理のための第2のプログラムと、
     前記第2のプログラムより実行の優先度が低く、前記周期においてプロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラムとを含み、
     前記スケジューラは、
     前記周期内において、前記第2のプログラムの実行を開始し、その後に前記第2のプログラムにおいて予め定められた種類の命令コードが実行された場合、前記プロセッサに前記第2のプログラムの実行を中断させ前記第3のプログラムを実行開始させる切替部を含む、制御装置。
  2.  前記リアルタイム制御処理は、前記関連処理により生成された中間コードに基づき前記制御対象への指令値を生成する処理を含み、
     前記予め定められた種類の命令コードは、実行されると複数周期にわたる前記中間コードを生成する命令コードを含む、請求項1に記載の制御装置。
  3.  前記予め定められた種類の命令コードは、待ち合わせ条件と当該待ち合わせ条件が満たされるかを判断するコードを用いて記述される待ち合わせ命令コードを含む、請求項1または2に記載の制御装置。
  4.  前記第2のプログラムは、インタプリタ言語で記述されたプログラムを含む、請求項1から3のいずれか1項に記載の制御装置。
  5.  前記システムサービスは、
     前記制御対象に関するデータを含むレコードを時系列に格納する時系列データベースの処理を含む、請求項1から4のいずれか1項に記載の制御装置。
  6.  前記制御装置は、さらに、
     前記周期毎に、前記時系列データベースへ格納すべきレコードを構成するためのデータを生成するデータ生成部と、
     前記データ生成部により生成されるデータを順次格納する、揮発性の主記憶装置上に形成されるノンブロッキングキューと、を備え、
     前記システムサービスは、
     前記ノンブロッキングキューから前記データを読み出し、前記時系列データベースに格納する処理を含む、請求項5に記載の制御装置。
  7.  前記制御装置が前記時系列データベースを備える、請求項6に記載の制御装置。
  8.  前記制御装置は、さらに、
     前記ノンブロッキングキューのメモリ残量を監視する残量監視部を備え、
     前記切替部は、
     前記メモリ残量と閾値の比較の結果に基づき、前記プロセッサに、実行中の前記第2のプログラムの実行を中断させ、前記第3のプログラムの実行を開始させる、請求項6または7に記載の制御装置。
  9.  前記第1のプログラムは、前記第2のプログラムの実行が中断した場合に実行される、前記関連処理の命令コードを含む、請求項1から8のいずれか1項に記載の制御装置。
  10.  制御対象を制御するためのプロセッサを有する制御装置で実行されるプログラムであって、
     予め定められた周期内で、前記プロセッサに優先度に従い実行させるプログラムを管理するスケジューラプログラムと、
     前記周期において前記プロセッサで実行される最も実行の優先度が高いプログラムであって、前記制御対象のリアルタイム制御処理のための第1のプログラムと、
     前記第1のプログラムより実行の優先度が低いプログラムであって、前記リアルタイム制御に関連する関連処理のための第2のプログラムと、
     前記第2のプログラムより実行の優先度が低く、前記周期においてプロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラムとを備え、
     前記スケジューラプログラムは、
     前記周期内において、前記第2のプログラムの実行を開始し、その後に前記第2のプログラムにおいて予め定められた種類の命令コードが実行された場合、前記プロセッサに前記第2のプログラムの実行を中断させ前記第3のプログラムを実行開始させるスイッチプログラムを含む、プログラム。
  11.  制御対象を制御するためのプロセッサを有する制御装置を制御する制御方法であって、
     前記制御装置は、
     予め定められた周期において前記プロセッサで実行される最も実行の優先度が高いプログラムであって、前記制御対象のリアルタイム制御処理のための第1のプログラムと、
     前記第1のプログラムより実行の優先度が低いプログラムであって、前記リアルタイム制御に関連する関連処理のための第2のプログラムと、
     前記第2のプログラムより実行の優先度が低く、前記周期においてプロセッサの空き時間がある場合に実行されるシステムサービスの第3のプログラムとを備え、
     前記制御方法は、
     前記周期内で、前記プロセッサに優先度に従い実行させるプログラムを管理するステップを、備え、
     前記管理するステップは、
     前記周期内において、
      前記第2のプログラムの実行を開始し、その後に前記第2のプログラムにおいて予め定められた種類の命令コードが実行されるか否かを判断するステップと、
      前記判断に基づき、場合、前記プロセッサに前記第2のプログラムの実行を中断させ前記第3のプログラムを実行開始させるステップとを含む、制御方法。
PCT/JP2020/047256 2020-03-31 2020-12-17 制御装置、プログラムおよび制御方法 Ceased WO2021199519A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202080097305.2A CN115176208B (zh) 2020-03-31 2020-12-17 控制装置、记录介质以及控制方法
US17/908,134 US20230359487A1 (en) 2020-03-31 2020-12-17 Control device, non-transitory computer-readable medium, and control method
EP20928541.0A EP4130899A4 (en) 2020-03-31 2020-12-17 CONTROL DEVICE, PROGRAM AND CONTROL METHOD

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2020062362A JP7380390B2 (ja) 2020-03-31 2020-03-31 制御装置、プログラムおよび制御方法
JP2020-062362 2020-03-31

Publications (1)

Publication Number Publication Date
WO2021199519A1 true WO2021199519A1 (ja) 2021-10-07

Family

ID=77930243

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/047256 Ceased WO2021199519A1 (ja) 2020-03-31 2020-12-17 制御装置、プログラムおよび制御方法

Country Status (5)

Country Link
US (1) US20230359487A1 (ja)
EP (1) EP4130899A4 (ja)
JP (1) JP7380390B2 (ja)
CN (1) CN115176208B (ja)
WO (1) WO2021199519A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102022103812A1 (de) * 2022-02-17 2023-08-17 WAGO Verwaltungsgesellschaft mit beschränkter Haftung Computerimplementiertes verfahren zur zumindest teilweise automatisierten konfiguration eines feldbusses, feldbussystem, computerprogramm, computerlesbares speichermedium, trainingsdatensatz und verfahren zum trainieren eines konfigurations-ki-modells
EP4293437A1 (de) * 2022-06-15 2023-12-20 Schneider Electric Industries SAS Verfahren und vorrichtung zum steuern des ablaufs von programmteilen, programmierverfahren, programmiervorrichtung
US20260003343A1 (en) * 2023-03-14 2026-01-01 Mitsubishi Electric Corporation Numerical control device
EP4550136A1 (de) * 2023-11-06 2025-05-07 Schaeffler Technologies AG & Co. KG Verfahren zur ausführungssteuerung von tasks in einem prozessorsystem und taskausführungssteuerung
CN117312117B (zh) * 2023-11-30 2024-03-01 沐曦集成电路(杭州)有限公司 一种打点数据的处理方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007004334A (ja) * 2005-06-22 2007-01-11 Fuji Electric Fa Components & Systems Co Ltd プログラマブルコントローラ
JP2013025353A (ja) * 2011-07-15 2013-02-04 Omron Corp Plcのcpuユニット、plc用のシステムプログラム、plc用のシステムプログラムを格納した記録媒体、plcシステム、plcサポート装置、plcサポートプログラム、および、plcサポートプログラムを格納した記録媒体
JP2018181315A (ja) * 2017-04-07 2018-11-15 オムロン株式会社 制御装置、制御方法および制御プログラム
JP2019036043A (ja) 2017-08-10 2019-03-07 オムロン株式会社 制御装置
JP2019153144A (ja) * 2018-03-05 2019-09-12 オムロン株式会社 制御装置、システムプログラム、制御方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3826626B2 (ja) * 1997-11-21 2006-09-27 オムロン株式会社 プログラム制御装置、プログラム制御方法、およびプログラム記録媒体
JP3405696B2 (ja) * 1999-08-19 2003-05-12 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイル装置およびその方法
DE10065417B4 (de) * 2000-12-27 2011-07-21 Siemens AG, 80333 Programmierung von zyklischen Maschinen
JP2004234546A (ja) * 2003-01-31 2004-08-19 Sanyo Electric Co Ltd プログラム実行方法および装置
JP4609381B2 (ja) * 2006-06-14 2011-01-12 株式会社デンソー 異常監視用プログラム、記録媒体及び電子装置
JP4957853B1 (ja) * 2011-03-15 2012-06-20 オムロン株式会社 Plcのcpuユニット、plc用のシステムプログラムおよびplc用のシステムプログラムを格納した記録媒体
US8706262B2 (en) * 2011-03-15 2014-04-22 Omron Corporation CPU unit of PLC, system program for PLC, and recording medium storing system program for PLC
JP6626240B2 (ja) * 2014-03-13 2019-12-25 オムロン株式会社 コントローラ
CN103984596B (zh) * 2014-05-19 2017-06-20 上海微小卫星工程中心 一种星载软件的调度方法及装置
JP2018133037A (ja) * 2017-02-17 2018-08-23 オムロン株式会社 制御装置
JP6388050B1 (ja) * 2017-03-31 2018-09-12 オムロン株式会社 制御装置
US11301294B2 (en) * 2017-04-07 2022-04-12 Omron Corporation Control device, control method, and control program
JP6950385B2 (ja) * 2017-09-12 2021-10-13 オムロン株式会社 制御装置および制御方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007004334A (ja) * 2005-06-22 2007-01-11 Fuji Electric Fa Components & Systems Co Ltd プログラマブルコントローラ
JP2013025353A (ja) * 2011-07-15 2013-02-04 Omron Corp Plcのcpuユニット、plc用のシステムプログラム、plc用のシステムプログラムを格納した記録媒体、plcシステム、plcサポート装置、plcサポートプログラム、および、plcサポートプログラムを格納した記録媒体
JP2018181315A (ja) * 2017-04-07 2018-11-15 オムロン株式会社 制御装置、制御方法および制御プログラム
JP2019036043A (ja) 2017-08-10 2019-03-07 オムロン株式会社 制御装置
JP2019153144A (ja) * 2018-03-05 2019-09-12 オムロン株式会社 制御装置、システムプログラム、制御方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP4130899A4

Also Published As

Publication number Publication date
JP2021163030A (ja) 2021-10-11
CN115176208A (zh) 2022-10-11
JP7380390B2 (ja) 2023-11-15
EP4130899A1 (en) 2023-02-08
EP4130899A4 (en) 2024-05-01
US20230359487A1 (en) 2023-11-09
CN115176208B (zh) 2025-06-24

Similar Documents

Publication Publication Date Title
JP7380390B2 (ja) 制御装置、プログラムおよび制御方法
JP6388050B1 (ja) 制御装置
US10606246B2 (en) Control device and control method with various command values in a shared memory providing access to various program execution and command value operation parts in each control cycle
JP6903275B2 (ja) 制御装置および制御方法
EP3373087B1 (en) Control device and program
CN110402430B (zh) 控制装置、控制方法以及记录介质
EP3336637A1 (en) Control system, control program, and control method
US11301294B2 (en) Control device, control method, and control program
US20190095246A1 (en) Support device and non-transitory storage medium
JP2018173883A (ja) 制御装置、制御プログラム、制御システム、および制御方法
EP3376320A1 (en) Control device
EP3457239B1 (en) Control device and control method
WO2020100548A1 (ja) 制御システムおよび制御装置
WO2021095466A1 (ja) 制御装置
EP4703819A1 (en) Control device and program
JP2024157672A (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: 20928541

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

Country of ref document: EP

Effective date: 20221031

WWG Wipo information: grant in national office

Ref document number: 202080097305.2

Country of ref document: CN

WWW Wipo information: withdrawn in national office

Ref document number: 2020928541

Country of ref document: EP