WO2021161549A1 - データ処理装置、制御方法およびプログラム - Google Patents
データ処理装置、制御方法およびプログラム Download PDFInfo
- Publication number
- WO2021161549A1 WO2021161549A1 PCT/JP2020/015664 JP2020015664W WO2021161549A1 WO 2021161549 A1 WO2021161549 A1 WO 2021161549A1 JP 2020015664 W JP2020015664 W JP 2020015664W WO 2021161549 A1 WO2021161549 A1 WO 2021161549A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- read
- variables
- processing unit
- instruction
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
Definitions
- This disclosure relates to data processing devices, control methods and programs.
- Soft errors are caused, for example, by collisions of alpha particles and cosmic ray neutrons. Applying soft-error-prone memory to a system can result in a temporary system outage due to soft-error.
- Patent Document 1 Japanese Patent Application Laid-Open No. 2007-18414 includes a control device that writes the same data to each of three or more different addresses in the RAM when rewriting the variable data of the RAM (Random Access Memory). It is disclosed. When the controller reads a variable by executing a program, it reads data from each of three or more different addresses in RAM. Then, when any one data among the data read from three or more different addresses is different from the other plurality of data, the control device transfers the different data to the other plurality of data. Rewrite to data.
- the present disclosure has been made in view of the above problems, and an object of the present disclosure is to provide a data processing device, a control method, and a program capable of suppressing a temporary stoppage of a system due to garbled memory data. be.
- the data processing device includes a memory for storing a plurality of variables used for executing a task, a processing unit, and a task execution unit.
- the processing unit receives the write instruction and the read instruction, and executes the write and read of the specified variable among the plurality of variables to the memory, respectively.
- the task execution unit outputs a first read instruction specifying a necessary variable among a plurality of variables to the processing unit, and executes the task using the value of the variable received from the processing unit.
- the processing unit Upon receiving the write instruction, the processing unit writes data indicating the value of the specified variable to each of the N areas corresponding to the specified variable in the memory.
- N is an integer of 3 or more.
- the processing unit Upon receiving the read instruction, the processing unit reads data from each of the N areas corresponding to the specified variables in the memory, and collates the read data from each of the N areas with each other.
- the processing unit sends the value indicated by the data read from the N areas to the output source of the read instruction according to the fact that all the data read from the N areas match.
- the processing unit so as to match the data read from the N-1 area according to the matching of the data read from each of the N-1 areas excluding one of the N areas.
- the value indicated by the data read from the N-1 area is sent to the output source of the read instruction.
- the data processing device further outputs a dummy second read instruction to the processing unit, which specifies at least one of a plurality of variables, at a timing different from the timing when the task execution unit outputs the first read instruction. It has a part.
- the processing unit when the processing unit that has received the dummy second read instruction has garbled data in one of the N regions, the processing unit receives the data in the remaining N regions. -Repair to match the data in one area. Therefore, even for variables that are rarely read for task execution, N areas corresponding to the variables in the memory are checked at a timing different from the timing at which the first read instruction is output. As a result, the garbled data is restored to the correct data. That is, even for a variable that is read infrequently for task execution, there is an opportunity to recover the data at a timing different from the timing for reading the variable for task execution. Therefore, in the memory, a state in which data is garbled in a plurality of areas out of N areas corresponding to variables is unlikely to occur. As a result, it is possible to suppress a temporary stop of the system due to garbled memory data.
- the second read instruction specifies all of the plurality of variables.
- the dummy instruction unit outputs a second read instruction to the processing unit at predetermined intervals.
- the plurality of variables are divided into M groups.
- M is an integer greater than or equal to 2.
- the dummy instruction unit outputs, for each of the M groups, a second read instruction in which variables belonging to the group are specified to the processing unit at predetermined intervals.
- the dummy indicator unit shifts the output timing of the second read instruction for each of the M groups in order by 1 / M of the predetermined cycle.
- the time required for the variable read processing executed in response to one second read instruction can be shortened.
- the dummy indicator manages the latest time when the processing unit executes writing or reading for each of the plurality of variables, and specifies the variable in which the elapsed time from the latest time has elapsed by a predetermined period.
- the second read instruction is output to the processing unit.
- the time required for the variable read processing executed in response to one second read instruction can be shortened.
- the task is related to factory automation (FA).
- FA factory automation
- the data processing device is applied to a system in the FA field.
- Systems in the FA field can be incorporated into production lines that operate 24 hours x 365 days. In such a production line, a temporary shutdown of the system can cause great damage. Therefore, there is a new request peculiar to the FA field that the operation should be continued even if the data is garbled without incurring the cost as much as possible. According to the above disclosure, the request peculiar to the FA field can be satisfied.
- the data processing device is designated as a memory for storing a plurality of variables used for executing a task, and a plurality of variables for the memory in response to a write instruction and a read instruction.
- a processing unit that executes writing and reading of the variables.
- the processing unit Upon receiving the write instruction, the processing unit writes data indicating the value of the specified variable to each of the N areas corresponding to the specified variable in the memory.
- N is an integer of 3 or more.
- the processing unit reads data from each of the N areas corresponding to the specified variables in the memory, and collates the read data from each of the N areas with each other.
- the processing unit sends the value indicated by the data read from the N areas to the output source of the read instruction according to the fact that all the data read from the N areas match.
- the processing unit so as to match the data read from the N-1 area according to the matching of the data read from each of the N-1 areas excluding one of the N areas.
- the value indicated by the data read from the N-1 area is sent to the output source of the read instruction.
- the control method of the data processing device includes a step of outputting a first read instruction specifying a necessary variable among a plurality of variables to the processing unit and executing a task using the value of the variable received from the processing unit.
- the step includes a step of outputting a dummy second read instruction specifying at least one of a plurality of variables to the processing unit at a timing different from the timing at which the read instruction is output.
- the program causes a computer to execute the above control method.
- These disclosures can also suppress a temporary stoppage of the system due to garbled memory data.
- FIG. 1 is a schematic view showing the overall configuration of the control system according to the embodiment.
- the control system 1 exemplified in FIG. 1 includes a standard PLC (programmable logic controller) 100, a safety PLC 200, one or more couplers 300, and one or more safety IO units 400 as main components.
- These devices included in the control system 1 are data processing devices that execute various tasks.
- the standard PLC100 executes standard control for an arbitrary control target according to a standard control program created in advance.
- Standard control is a general term for processing for controlling a control target according to a predetermined requirement specification.
- the control target is, for example, a servo motor, a robot, or the like.
- the safety PLC200 executes safety control for an arbitrary control target independently of the standard PLC100.
- the safety PLC 200 illustrated in FIG. 1 is connected to the standard PLC 100 via a local bus.
- "Safety control” is a general term for processing to prevent human safety from being threatened by equipment or machines.
- the “safety control” is designed to meet the requirements for realizing the safety function specified in, for example, IEC 61508.
- the coupler 300 mediates the exchange of data between the standard PLC 100 and the safety IO unit 400.
- the coupler 300 is electrically connected to the standard PLC 100 via the field network 2.
- the field network 2 is a communication medium for realizing data transmission for FA (Factory Automation).
- FA Vectory Automation
- frame transmission is possible at a predetermined cycle, and the data arrival time for each node in the network is guaranteed.
- EtherCAT registered trademark
- EtherCAT registered trademark
- the coupler 300 transmits the data received from the standard PLC 100 to the safety IO unit 400, and when the data is received from the safety IO unit 400, prepares to store the received data in the next arriving frame.
- the safety IO unit 400 is connected to the safety PLC 200 or the coupler 300 via the local bus. Further, any safety device (not shown) is connected to the safety IO unit 400. Safety devices include light curtains, emergency stop buttons, safety door switches and the like.
- the safety IO unit 400 receives the input signal from the safety device and provides the input signal to the safety PLC 200. Alternatively, the safety IO unit 400 receives an input signal from the safety device and provides the input signal to the standard PLC 100 via the coupler 300. The input signal provided to the standard PLC100 is provided to the safe PLC200.
- the safety IO unit 400 outputs an output signal to the safety device in response to a command from the safety PLC 200.
- the safety IO unit 400 outputs an output signal to the safety device in response to a command from the safety PLC 200 via the coupler 300 and the standard PLC 100.
- the safety IO unit 400 relates to receiving an input signal from a safety device, providing the input signal, outputting an output signal to the safety device, and the like for each predetermined cycle (hereinafter referred to as "task cycle"). Perform IO tasks.
- the safety IO unit 400 includes a processing circuit for executing an IO task.
- the processing circuit is composed of a processor and a memory.
- the processor performs IO tasks using multiple variables stored in memory.
- the safety PLC 200 executes safety control in response to the input signal provided by the safety IO unit 400. For example, when the safety device, which is a light curtain, provides an input signal indicating the intrusion of a person, the safety PLC 200 cuts off the power supply to the controlled object of the standard PLC 100 and temporarily stops the control system 1. Alternatively, when the safety device, which is an emergency stop button, provides an input signal indicating that the button is pressed, the safety PLC 200 cuts off the power supply to the controlled object of the standard PLC 100 and temporarily stops the control system 1.
- the safety PLC 200 is designed to temporarily stop the control system 1 even when a failure or abnormality occurs in the safety IO unit 400.
- the safety IO unit 400 has a function of repairing the garbled data even if the garbled data occurs in the memory.
- the processor writes data indicating the value of the variable for each of the plurality of variables used for executing the IO task to N areas corresponding to the variable in the memory. .. N is an integer of 3 or more.
- the data indicating the value of each of the plurality of variables is written to the memory when the safety IO unit 400 is started. Also, for some or all of the variables, the data in memory may be rewritten during the execution of the IO task.
- the processor reads the specified variable from the memory among multiple variables in order to execute the IO task. At this time, the processor reads data from each of the N areas corresponding to the specified variables in the memory, and collates the data read from each of the N areas with each other.
- the processor executes the IO task using the values indicated by the data read from the N areas according to the fact that all the data read from the N areas match.
- the processor matches the data read from the N-1 area according to the fact that the data read from each of the N-1 areas excluding one of the N areas matches. As described above, the data in the above one area in the memory is rewritten. As a result, incorrect data due to garbled data is restored to correct data. Then, the processor executes the IO task using the value indicated by the data read from the N-1 area.
- the processor performs a process of reading at least one of the plurality of variables from the memory as a dummy at a timing different from the timing of reading the variables for executing the IO task. Run.
- the dummy read process means a process of reading the value of the variable even though the value of the read variable is not used at all.
- FIG. 2 is a schematic diagram showing a hardware configuration example of a standard PLC.
- the standard PLC 100 illustrated in FIG. 2 includes a processor 102, a main memory 104, a storage 110, a field network controller 108, and a local bus controller 116. These components are connected via the processor bus 118.
- the processor 102 mainly corresponds to an arithmetic processing unit that executes control operations related to standard control, and is composed of a CPU (Central Processing Unit), a GPU (Graphics Processing Unit), and the like. Specifically, the processor 102 reads the programs (as an example, the system program 1102 and the standard control program 1104) stored in the storage 110, expands them in the main memory 104, and executes the programs according to the control target. It realizes control calculation and various processes as described later.
- the programs as an example, the system program 1102 and the standard control program 1104
- the main memory 104 is composed of volatile memories such as DRAM (Dynamic Random Access Memory) and SRAM (Static Random Access Memory).
- the storage 110 is composed of, for example, a non-volatile storage device such as an SSD (Solid State Drive) or an HDD (Hard Disk Drive).
- the storage 110 stores a system program 1102 for realizing basic functions, a standard control program 1104 created according to a control target, and setting information 1106 for defining processing in the standard PLC 100.
- the field network controller 108 exchanges data with an arbitrary device (for example, a coupler 300) via the field network 2.
- the local bus controller 116 exchanges data with an arbitrary unit (for example, a safety PLC200) connected to the standard PLC100 via the local bus.
- an arbitrary unit for example, a safety PLC200
- FIG. 3 is a schematic diagram showing a hardware configuration example of the safety PLC.
- the safety PLC 200 illustrated in FIG. 3 includes a processor 202, a main memory 204, a storage 210, and a local bus controller 216. These components are connected via the processor bus 218.
- the processor 202 mainly corresponds to a calculation processing unit that executes control calculations related to safety control, and is composed of a CPU, a GPU, and the like.
- the main memory 204 is composed of a volatile memory such as a DRAM or SRAM.
- the storage 210 is composed of, for example, a non-volatile storage device such as an SSD or an HDD.
- the storage 210 stores a system program 2102 for realizing basic functions, a safety program 2104 created according to the required safety function, and setting information 2106 for defining processing in the safety PLC 200. NS.
- the local bus controller 216 exchanges data with the safety IO unit 400 connected to the safety PLC 200 via the local bus.
- FIG. 4 is a schematic view showing a hardware configuration example of the coupler.
- the coupler 300 illustrated in FIG. 4 includes a processor 302, a main memory 304, a storage 310, a field network controller 308, and a local bus controller 316. These components are connected via the processor bus 318.
- the processor 302 mainly corresponds to an arithmetic processing unit that executes a control operation for operating the coupler 300, and is composed of a CPU, a GPU, and the like.
- the main memory 304 is composed of a volatile memory such as a DRAM or SRAM.
- the storage 310 is composed of, for example, a non-volatile storage device such as an SSD or an HDD.
- the storage 310 stores the system program 3102 for realizing the basic functions and the setting information 3106 for defining the processing by the coupler 300.
- the field network controller 308 exchanges data with an arbitrary device (for example, standard PLC100) via the field network 2.
- an arbitrary device for example, standard PLC100
- the local bus controller 316 exchanges data with the safety IO unit 400 connected to the coupler 300 via the local bus.
- FIG. 5 is a schematic diagram showing a hardware configuration example of the safety IO unit.
- the safety IO unit 400 illustrated in FIG. 5 includes a processor 402, a main memory 404, a storage 410, a local bus controller 412, and a safety IO module 416. These components are connected via the processor bus 418.
- the processor 402 corresponds to a calculation processing unit that executes control calculations related to signal input / output and management functions necessary for realizing safety control, and is composed of a CPU, an MPU (Micro Processing Unit), and the like.
- the main memory 404 is composed of a volatile memory such as a DRAM or SRAM.
- the SRAM uses a flip-flop as the structure of the storage unit, does not require a refresh operation, and has an advantage that it can operate at a higher speed than the DRAM. Therefore, it is preferable to use SRAM as the main memory 404.
- DRAM with a stack type structure has high soft error resistance.
- soft error resistance is lowered due to miniaturization. Therefore, when the main memory 404 configured by SRAM is used, a soft error is likely to occur in the main memory 404.
- the main memory 404 will be described as being a SRAM.
- the storage 410 is composed of, for example, a non-volatile storage device such as an SSD or an HDD.
- the storage 410 stores an executable program 420 for realizing the IO function, a library 422, and a dummy read program 424.
- the local bus controller 412 exchanges data with a device (for example, safety PLC200, coupler 300) to which the safety IO unit 400 is connected via the local bus.
- a device for example, safety PLC200, coupler 300
- the safety IO module 416 is electrically connected to the safety device, accepts inputs such as detection results by the safety device, and outputs a signal to the safety device.
- FIG. 6 is a diagram showing an example of the functional configuration of the safety IO unit.
- the safety IO unit 400 illustrated in FIG. 6 includes a write / read processing unit 41, a task execution unit 42, and a dummy instruction unit 43.
- the write / read processing unit 41 is realized by the processor 402 executing the library 422.
- the task execution unit 42 is realized by the processor 402 executing the executable program 420.
- the dummy indicator 43 is realized by the processor 402 executing the dummy read program 424.
- the write / read processing unit 41 receives the write instruction and the read instruction, and executes the write / read of the designated variable to the main memory 404, respectively.
- the write / read processing unit 41 manages the data indicating the value of each of the variables used for executing the IO task on the main memory 404 by multiplexing the data indicating the value of the variable to 3 or more.
- data is tripled and managed.
- the write / read processing unit 41 manages the variable management table 44.
- the variable management table 44 contains, for each of all the variables used to execute the IO task, the variable name, the type, and the addresses of the three areas in which the data indicating the value of the variable is held in the main memory 404. It is a table associated with each other. Hereinafter, the addresses of the three areas are referred to as "first address”, "second address", and "third address”. A list of all variables used to perform IO tasks is generated when you compile the source code to create executable program 420.
- FIG. 7 is a diagram showing an example of data writing processing to the main memory by the writing / reading processing unit.
- the write / read processing unit 41 when writing the target data indicating the value of the specified variable to the main memory 404, copies the target data twice, and copies the first copy data and the second copy data. Generate copy data.
- the write / read processing unit 41 identifies the first to third addresses corresponding to the specified variables by using the variable management table 44, and sets the three areas indicated by the specified first to third addresses into the three areas.
- the target data, the first copy data, and the second copy data are written, respectively. As a result, the data is tripled in the main memory 404.
- the target data, the first copy data, and the second copy data are the same.
- garbled data may occur in either the target data, the first copy data, or the second copy data.
- FIG. 8 is a diagram showing an example of data read processing from the main memory by the write / read processing unit.
- the variable management table 44 is used to specify the first to third addresses corresponding to the designated variables. Then, the write / read processing unit 41 reads data from each of the three areas of the main memory 404 indicated by the specified first to third addresses, and collates the data read from each of the three areas with each other. do.
- the write / read processing unit 41 indicates the value indicated by the data read from any of the three areas to the output source of the read instruction according to the fact that all the data read from the three areas match. To send.
- the write / read processing unit 41 matches the data read from the two areas with the data read from the two areas excluding one of the three areas. The data in the one area is rewritten so that they match. Further, the write / read processing unit 41 sends the value indicated by the data read from the two areas to the output source of the read instruction. As a result, even if data garbled occurs in one of the three areas, the garbled data is restored in the read process.
- the write / read processing unit 41 receives the first read instruction from the task execution unit 42 and the second read instruction from the dummy instruction unit 43 as the read instruction. Further, the write / read processing unit 41 receives a write instruction from the task execution unit 42.
- the task execution unit 42 executes an IO task using variables stored in the main memory 404 for each task cycle.
- the variables used to perform IO tasks can vary from task cycle to task cycle. That is, the plurality of variables stored in the main memory 404 include variables used in all task cycles and one task cycle out of M task cycles (M is an integer of 2 or more). Variables and variables can be included. Thus, the frequency with which the variables stored in the main memory 404 are used to execute IO tasks varies from variable to variable.
- the task execution unit 42 generates a first read instruction that specifies a necessary variable among a plurality of variables stored in the main memory 404, and outputs the generated first read instruction to the write / read processing unit 41.
- the first read instruction is a regular instruction for reading the variables used for executing the IO task.
- the task execution unit 42 receives the value of the designated variable from the write / read processing unit 41, and executes the IO task using the value of the variable.
- the task execution unit 42 When the task execution unit 42 needs to rewrite the value of the variable due to the execution of the IO task, the task execution unit 42 generates a write instruction specifying the variable and the updated value, and writes and reads the generated write instruction. Output to the processing unit 41.
- the dummy indicator 43 manages a list of a plurality of variables (hereinafter, referred to as "variable list 45") used for executing the IO task.
- the variable list 45 is generated when the source code is compiled to create the executable program 420.
- the dummy instruction unit 43 periodically generates a dummy second read instruction that specifies all the variables included in the variable list 45, and outputs the generated second read instruction to the write / read processing unit 41.
- the second read instruction is generated in anticipation of restoration of the above data by the write / read processing unit 41. Therefore, the dummy instruction unit 43 does not perform any processing on the value of the variable read in response to the second read instruction, and may discard the value.
- the second read instruction is a dummy instruction for reading the value of the variable even though the value of the read variable is not used at all.
- the cycle in which the dummy instruction unit 43 generates the second read instruction is preferably shorter than the cycle in which the soft error occurs, for example, within 8 hours.
- the cycle in which the dummy instruction unit 43 generates the second read instruction may be the same as the task cycle.
- FIG. 9 is a diagram showing an operation example (reference example) when the dummy instruction is not performed.
- FIG. 9 shows an operation example when an IO task using the variable "Var_A” is executed in all task cycles.
- the processor 402 that operates as the task execution unit 42 generates a first read instruction that specifies the variable “Var_A” necessary for executing the IO task in each task cycle. Then, the processor 402 operating as the write / read processing unit 41 reads data from the three areas 404a to 404c corresponding to the variable "Var_A" in the main memory 404 in response to the first read instruction.
- data garbled occurs in the area 404b at time t1 after the execution of the first IO task.
- the processor 402 operating as the write / read processing unit 41 reads data from the three areas 404a to 404c corresponding to the variable "Var_A", and collates the read data from the areas 404a to 404c, respectively.
- the processor 402 recognizes that the data read from the areas 404a and 404c match, and the data read from the area 404b does not match the data read from the areas 404a and 404c. Therefore, the processor 402 rewrites the data in the area 404b so as to match the data read from the areas 404a and 404c. As a result, the garbled data in the area 404b is repaired.
- variables that are frequently read for the execution of IO tasks are immediately repaired even if data garbled occurs. Therefore, in the main memory 404, a state in which data is garbled in a plurality of areas out of the three areas corresponding to the variable is unlikely to occur.
- FIG. 10 is a diagram showing another operation example (reference example) when the dummy instruction is not performed.
- FIG. 10 shows an operation example when an IO task using the variable “Var_A” is executed every X times the task cycle.
- data garbled occurs in the area 404b at time t1 after the execution of the first IO task, and the Xth IO task is executed. At a later time t3, garbled data has occurred in the area 404a.
- variable "Var_A" is not used for executing the IO task in the period from the execution of the first IO task to the execution of the X + 1th IO task. Therefore, the processor 402 that operates as the task execution unit 42 does not generate the first read instruction in which the variable "Var_A" is specified during the period. Therefore, during the period, there is no opportunity to repair the garbled data in the regions 404a to 404c corresponding to the variable "Var_A". As a result, as shown in FIG. 10, a state in which data is garbled occurs in a plurality of regions (regions 404a and 404b) among the regions 404a to 404c.
- the probability that the content of the garbled data generated in the area 404a and the content of the garbled data generated in the area 404b match is very small. Therefore, the data in the regions 404a to 404c are different from each other. Therefore, even if the first read instruction with the variable "Var_A" specified is generated at the time t4 when the X + 1th IO task is executed, the processor 402 operating as the write / read processing unit 41 has the areas 404a and 404b. Data cannot be repaired.
- FIG. 11 is a diagram showing an operation example (example) when a dummy instruction is given.
- the IO task using the variable “Var_A” is executed every X times the task cycle.
- data garbled occurs in the area 404b at time t1 after the execution of the first IO task, and the Xth IO task is performed.
- time t3 after the execution of data garbled occurs in the area 404a.
- the processor 402 operating as the dummy instruction unit 43 generates a second read instruction with all variables specified immediately after the start of each task cycle. Therefore, after the first IO task is executed, at time t11 immediately after the start of the next task cycle, the processor 402 that operates as the write / read processing unit 41 has three areas corresponding to the variable “Var_A”. Data is read from 404a to 404c, and the data read from each of the areas 404a to 404c is collated. As a result of collation, the processor 402 recognizes that the data read from the areas 404a and 404c match, and the data read from the area 404b does not match the data read from the areas 404a and 404c. Therefore, the processor 402 rewrites the data in the area 404b so as to match the data read from the areas 404a and 404c. As a result, the garbled data in the area 404b is repaired.
- the processor 402 operating as the write / read processing unit 41 has three units corresponding to the variable “Var_A”. Data is read from the areas 404a to 404c, and the data read from the areas 404a to 404c is collated. As a result of collation, the processor 402 recognizes that the data read from the areas 404b and 404c match, and the data read from the area 404a does not match the data read from the areas 404b and 404c. Therefore, the processor 402 rewrites the data in the area 404a so as to match the data read from the areas 404b and 404c. As a result, the garbled data in the area 404a is repaired.
- a second read instruction is periodically generated for all variables. Therefore, even for variables that are read infrequently for the execution of IO tasks, the three areas corresponding to the variables in the main memory 404 are periodically checked, and the garbled data is restored to the correct data. Will be done. That is, even variables that are infrequently read for the execution of IO tasks are regularly provided with opportunities for data to be repaired. Therefore, in the main memory 404, a state in which data is garbled in a plurality of areas out of the three areas corresponding to the variable is unlikely to occur. As a result, it is possible to suppress a temporary stop of the system due to garbled data in the main memory 404.
- FIG. 12 is a flowchart showing an example of the processing flow in the safety IO unit.
- the processor 402 determines whether or not the start timing of the task cycle has been reached (step S1). If the start timing of the task cycle has not been reached (NO in step S1), the process returns to step S1 again.
- step S1 When the start timing of the task cycle is reached (NO in step S1), the processor 402 operating as the dummy instruction unit 43 generates a second read instruction in which all variables are specified (step S2). In response to the second read instruction, the processor 402 that operates as the write / read processing unit 41 executes the read processing of the designated variable (step S3). The details of step S3 will be described later.
- step S3 the processor 402 operating as the task execution unit 42 starts an IO task according to the executable program 420 (step S4).
- the processor 402 generates a first read instruction that specifies variables necessary for executing the IO task (step S5).
- the processor 402 that operates as the write / read processing unit 41 executes the read processing of the designated variable in response to the first read instruction generated in step S5 (step S6).
- the processor 402 that operates as the task execution unit 42 executes the IO task using the value of the variable read in step S6 (step S7).
- the processor 402 may generate a write instruction in which a variable that needs to be rewritten and a value after the update are specified.
- the processor 402 that operates as the write / read processing unit 41 executes the write processing of the designated variable.
- step S7 After the completion of step S7, the process ends.
- the processes of steps S1 to S7 are executed for each task cycle.
- FIG. 13 is a flowchart showing an example of the flow of the subroutine in steps S3 and S6 shown in FIG.
- the processor 402 that operates as the write / read processing unit 41 reads data from each of the three areas corresponding to the designated variables in the main memory 404 (step S11). Next, the processor 402 collates the data read from each of the three areas (step S12).
- the processor 402 determines whether or not all the data read from the three areas match (step S13). If YES in step S13, the process proceeds to step S16.
- step S13 the processor 402 determines whether or not the data read from two of the three areas match (step S14). If YES in step S14, the processor 402 rewrites the data in the remaining one area so as to match the data read from the two areas (step S16). After the completion of step S15, the process proceeds to step S16.
- step S17 the processor 402 outputs an error signal (step S17). As a result, the control system 1 is temporarily stopped. After step S17, the process ends.
- step S16 the processor 402 determines the value indicated by the matching data as the value of the specified variable. After the completion of step S16, the process returns to the subsequent step (step S4 or step S7) shown in FIG.
- the safety IO unit 400 which is a data processing device, includes a main memory 404 that stores a plurality of variables used for executing an IO task, a write / read processing unit 41, and a task execution unit 42. ..
- the write / read processing unit 41 receives the write instruction and the read instruction, and executes the write / read of the designated variable among the plurality of variables to the main memory 404, respectively.
- the task execution unit 42 outputs a first read instruction specifying a necessary variable among a plurality of variables to the write / read processing unit 41, and uses the value of the variable received from the write / read processing unit 41 to perform an IO task. To execute.
- the write / read processing unit 41 Upon receiving the write instruction, the write / read processing unit 41 writes data indicating the value of the designated variable to each of the three areas corresponding to the designated variable in the main memory 404. Upon receiving the read instruction, the write / read processing unit 41 reads data from each of the three areas corresponding to the designated variables in the main memory 404, and collates the read data from the three areas with each other. .. The write / read processing unit 41 sends the value indicated by the data read from the three areas to the output source of the read instruction according to the fact that all the data read from the three areas match. The write / read processing unit 41 matches the data read from the two areas according to the fact that the data read from each of the two areas excluding one of the three areas matches.
- the data in the one area is rewritten as described above. Further, the write / read processing unit 41 sends the value indicated by the data read from the two areas to the output source of the read instruction.
- the safety IO unit 400 further outputs a dummy second read instruction specifying a plurality of variables to the write / read processing unit 41 at a timing different from the timing at which the task execution unit 42 outputs the first read instruction.
- a unit 43 is provided.
- the write / read processing unit 41 that has received the dummy second read instruction has garbled data in one of the three areas
- the write / read processing unit 41 of the one area has garbled data.
- the data is restored to match the data in the remaining two areas. Therefore, even for variables that are read infrequently for the execution of IO tasks, there are three areas in the main memory 404 that correspond to the variables at a timing different from the timing at which the task execution unit 42 outputs the first read instruction. Is checked. As a result, the garbled data is restored to the correct data.
- the second read instruction specifies all of the multiple variables.
- the dummy instruction unit 43 outputs the second read instruction to the write / read processing unit 41 at predetermined intervals. This provides regular opportunities for data to be repaired for all variables. As a result, in the main memory 404, a state in which data is garbled in a plurality of areas out of the three areas corresponding to the variables is less likely to occur.
- the above-mentioned predetermined cycle may be the same as, for example, the task cycle (the cycle in which the task execution unit 42 executes the IO task).
- the opportunity for data to be repaired is provided in the same cycle as the task cycle.
- a state in which data is garbled in a plurality of areas out of the three areas corresponding to the variables is less likely to occur.
- the IO task is related to FA. That is, the safety IO unit 400 is applied to the control system 1 incorporated in the FA field.
- control system incorporated in the FA field can be incorporated into a production line that operates 24 hours x 365 days. In such a production line, a temporary outage of the control system can cause great damage. Therefore, there is a new request peculiar to the FA field that the operation should be continued even if the data is garbled without incurring the cost as in the TMR technology.
- the control system 1 can satisfy the demands specific to the FA field.
- the processor 402 that operates as the dummy instruction unit 43 generates a second read instruction that specifies all of the plurality of variables stored in the main memory 404 for each task cycle.
- the dummy instruction unit 43 may periodically generate a second read instruction that specifies a part of the plurality of variables stored in the main memory 404.
- FIG. 14 is a diagram showing an example of generating a second read instruction by the dummy instruction unit according to the first modification.
- the plurality of variables stored in the main memory 404 are divided into M groups (groups G1 to GM).
- M is an integer greater than or equal to 2.
- the processor 402 that operates as the dummy instruction unit 43 generates a second read instruction that specifies a variable belonging to the group for each of the plurality of groups at predetermined cycles.
- the predetermined cycle is M times the task cycle.
- the processor 402 operating as the dummy instruction unit 43 sequentially sets the output timing of the second read instruction for each group by 1 / M cycle (task cycle in the example shown in FIG. 14) of the predetermined cycle. Shift.
- the processor 402 that operates as the dummy instruction unit 43 when the processor 402 that operates as the dummy instruction unit 43 generates a second read instruction that specifies a variable belonging to the group Gk in a certain task cycle, it is assigned to the group G (k + 1) in the next task cycle. Outputs a second read instruction that specifies the variable to which it belongs.
- the processor 402 that operates as the dummy instruction unit 43 When the processor 402 that operates as the dummy instruction unit 43 generates a second read instruction that specifies a variable that belongs to the group GM in a certain task cycle, the processor 402 that specifies a variable that belongs to the group G1 in the next task cycle. 2 Generate a read instruction.
- the time required for the variable reading process executed in response to one second reading instruction can be shortened.
- a dummy second read instruction is periodically output for all of the plurality of variables stored in the main memory 404.
- a dummy second read instruction may be output for a variable that is infrequently written or read for executing an IO task.
- FIG. 15 is a diagram showing an example of a dummy indicating unit according to the modified example 2.
- the safety IO unit according to the second modification is different from the safety IO unit 400 shown in FIG. 6 in that the dummy indicator 43a shown in FIG. 15 is provided instead of the dummy indicator 43.
- the dummy indicator 43a manages the variable list 45a.
- the variable list 45a contains a list of a plurality of variables stored in the main memory 404 and the latest time (latest access time) in which the write / read processing unit 41 writes or reads each of the plurality of variables. Will be described.
- the dummy instruction unit 43a receives from the write / read processing unit 41 the time when the write / read processing unit 41 executes writing or reading for each of the plurality of variables, and updates the variable list 45a based on the time. In this way, the dummy instruction unit 43a manages the latest time when the write / read processing unit 41 executes writing or reading for each of the plurality of variables.
- the dummy instruction unit 43a generates a second read instruction that specifies a variable in which the elapsed time from the latest time has elapsed by a predetermined period (for example, 8 hours), and writes and reads the generated second read instruction. Output to 41.
- a dummy second read instruction is output for the variable that is infrequently written or read for executing the IO task among the plurality of variables.
- the time required for the read process executed in response to the dummy second read instruction can be shortened.
- the safety IO unit 400 is assumed to include only one processing circuit including a processor and a main memory. However, the safety IO unit 400 may include two processing circuits. The two processing circuits execute the same IO task in parallel. As a result, more reliable task results can be obtained.
- FIG. 16 is a diagram showing an example of the hardware configuration of the safety IO unit according to the modified example 3.
- the safety IO unit 400b according to the third modification is different from the safety IO unit 400 illustrated in FIG. 5 in that it further includes a processor 406 and a main memory 408. That is, the safety IO unit 400b includes an A-channel circuit 40A having a processor 402 and a main memory 404, and a B-channel circuit 40B having a processor 406 and a main memory 408.
- the A channel circuit 40A and the B channel circuit 40B execute the same processing in parallel.
- the processor 402 executes the library 422, the executable program 420, and the dummy read program 424 to realize the write / read processing unit 41, the task execution unit 42, and the dummy instruction unit 43 shown in FIG. NS.
- the write / read processing unit 41, the task execution unit 42, and the dummy instruction unit 43 shown in FIG. 6 are realized by the processor 406 executing the library 422, the executable program 420, and the dummy read program 424. Will be done.
- the write / read processing unit 41 realized in the A channel circuit 40A executes writing and reading to the main memory 404.
- the write / read processing unit 41 realized in the B channel circuit 40B executes writing and reading to the main memory 408.
- FIG. 17 is a diagram showing an operation example of the safety IO unit according to the modification 3.
- the dummy read processing from the main memories 404 and 408 is executed for each task cycle according to the dummy second read instruction. ..
- an opportunity to repair garbled data is periodically provided even for variables that are infrequently read for executing the IO task.
- the same IO task is executed for each task cycle. Then, the result of the IO task by the A channel circuit 40A and the result of the IO task by the B channel circuit 40B are collated.
- the A channel circuit 40A and the B channel circuit 40B continue to operate according to the fact that the results of both IO tasks match. On the other hand, the A channel circuit 40A and the B channel circuit 40B stop their operations depending on the results of their IO tasks not matching. As a result, it is possible to prevent the operation from being continued based on the result of the IO task executed in the state where the above-mentioned transient failure has occurred.
- the standard PLC 100, the safety PLC 200, and the coupler 300 may also include a write / read processing unit 41, a task execution unit 42, and a dummy instruction unit 43 (or a dummy instruction unit 43a), similarly to the safety IO unit 400.
- the task execution unit 42 provided in each device executes a task corresponding to each device instead of the IO task.
- the standard PLC100, the safety PLC200, and the coupler 300 can continue to operate even if the main memory is garbled. As a result, the frequency of stopping the control system 1 is suppressed.
- this embodiment includes the following disclosures.
- a first read instruction specifying a necessary variable among the plurality of variables is output to the processing unit (41, 402, 406), and the value of the variable received from the processing unit (41, 402, 406) is used.
- a task execution unit (42, 402, 406) for executing the above task is provided.
- the processing unit (41, 402, 406) Upon receiving the write instruction, the processing unit (41, 402, 406) outputs data indicating the value of the specified variable to N in the memory (404, 408) corresponding to the specified variable.
- N is an integer greater than or equal to 3
- the processing unit (41, 402, 406) receives the read instruction
- the processing unit (41, 402, 406) receives the read instruction.
- Data is read from each of the N areas corresponding to the specified variables in the memory (404, 408), and the data read from each of the N areas is collated with each other. When all the data read from the N areas match, the value indicated by the data read from any of the N areas is sent to the output source of the read instruction.
- the data processing device (400) further At a timing different from the timing at which the task execution unit (42, 402, 406) outputs the first read instruction, the processing unit (the processing unit (42, 402, 406) issues a dummy second read instruction with at least one of the plurality of variables specified.
- the second read instruction specifies all of the plurality of variables, and the second read instruction specifies all of the plurality of variables.
- the data processing apparatus (400) according to configuration 1, wherein the dummy instruction unit (43, 402, 406) outputs the second read instruction to the processing unit (41, 402, 406) at predetermined intervals. , 400b).
- the plurality of variables are divided into M groups, and the variables are divided into M groups.
- M is an integer greater than or equal to 2
- the dummy indicator (43, 402, 406) is For each of the M groups, the second read instruction specifying the variables belonging to the group is output to the processing unit (41, 402, 406) at predetermined intervals.
- the data processing apparatus (400, 400b) according to configuration 1, which sequentially shifts the output timing of the second read instruction for each of the M groups by a period of 1 / M of the predetermined period.
- the dummy indicator (43a, 402, 406) is For each of the plurality of variables, the latest time when the processing unit executes writing or reading is managed.
- the data processing apparatus (400) according to configuration 1, outputs the second read instruction to the processing unit (41, 402, 406) by designating a variable in which the elapsed time from the latest time has elapsed by a predetermined period. , 400b).
- the data processing device (400, 400b) is Memory (404,408) for storing multiple variables used to execute tasks, and Including a processing unit (41, 402, 406) that receives a write instruction and a read instruction and executes writing and reading of a specified variable among the plurality of variables to the memory, respectively.
- the processing unit (41, 402, 406) Upon receiving the write instruction, the processing unit (41, 402, 406) outputs data indicating the value of the specified variable to each of the N areas corresponding to the specified variable in the memory.
- Write to, N is an integer greater than or equal to 3
- the processing unit (41, 402, 406) receives the read instruction.
- Data is read from each of the N areas corresponding to the specified variables in the memory (404, 408), and the data read from each of the N areas is collated with each other.
- the value indicated by the data read from the N areas is sent to the output source of the read instruction.
- the data read from each of the N-1 regions excluding one of the N regions matches, the data read from the N-1 regions is matched. While rewriting the data in one area, the value indicated by the data read from the N-1 area is sent to the output source of the read instruction.
- the control method is A first read instruction specifying a necessary variable among the plurality of variables is output to the processing unit (41, 402, 406), and the value of the variable received from the processing unit (41, 402, 406) is used. And the step to execute the above task A step of outputting a dummy second read instruction specifying at least one of the plurality of variables to the processing unit (41, 402, 406) at a timing different from the timing at which the first read instruction is output.
- a control method that comprises.
- 1 control system 1 control system, 2 field network, 40A, 40B channel circuit, 41 write / read processing unit, 42 task execution unit, 43,43a dummy indicator, 44 variable management table, 45,45a variable list, 100 standard PLC, 102, 202, 302, 402, 406 processor, 104, 204, 304, 404, 408 main memory, 108, 308 field network controller, 110, 210, 310, 410 storage, 116, 216, 316, 412 local bus controller, 118, 218,318,418 processor bus, 200 safety PLC, 300 coupler, 400,400b safety IO unit, 404a, 404b, 404c area, 416 safety IO module, 420 executable program, 422 library, 424 dummy read program, 1102, 2102 , 3102 system program, 1104 standard control program, 1106, 2106, 3106 setting information, 2104 safety program, G1 to GM group.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Programmable Controllers (AREA)
Abstract
データ処理装置は、タスクの実行に使用される複数の変数を記憶するメモリと、処理部と、ダミー指示部とを備える。処理部は、各変数に対応するメモリ上のN個の領域の各々からデータを読み出し、読み出したデータを互いに照合する。処理部は、N個の領域のうち1個の領域を除いたN-1個の領域からそれぞれ読み出したデータが一致することに応じて、N-1個の領域のデータと一致するように1個の領域のデータを書き換える。ダミー指示部は、タスクの実行タイミングと異なるタイミングにおいて、複数の変数を指定したダミーの読出指示を処理部に出力する。これにより、メモリのデータ化けに起因するシステムの一時的な停止を抑制できる。
Description
本開示は、データ処理装置、制御方法およびプログラムに関する。
半導体デバイスの高集積化および微細化に伴い、メモリにおける一過性のビットエラー(ソフトエラー)が急増している。ソフトエラーは、例えばα粒子や宇宙線中性子の衝突によって生じる。ソフトエラーの起こりうるメモリをシステムに適用すると、ソフトエラーによるシステムの一時的な停止が生じうる。
ソフトエラーによるシステムの一時的な停止を回避するための技術が開発されている。例えば、特開2007-18414号公報(特許文献1)には、RAM(Random Access Memory)の変数データを書き換える場合に、同一のデータをRAM内の異なる3以上のアドレスの各々に書き込む制御装置が開示されている。この制御装置は、プログラムの実行によって変数を読み出すとき、RAM内の異なる3以上のアドレスの各々からデータを読み出す。そして、制御装置は、異なる3以上のアドレスからそれぞれ読み出したデータのうち、任意の1個のデータが他の複数個のデータと異なっている場合には、異なっているデータを他の複数個のデータに書き換える。
特許文献1に記載の制御装置では、RAM上の異なる3以上のアドレスのうちの1つのアドレスにソフトエラーが生じたとしても、プログラムの実行によって変数を読み出すときに、当該1つのアドレスのデータは修復される。ただし、各変数が読み出される頻度は、プログラムに依存する。読み出される頻度の高い変数については、データの修復される機会が多くなる。一方、読み出される頻度の低い変数については、データの修復される機会が少なくなり、RAM上の異なる3以上のアドレスのうち複数のアドレスにソフトエラーが起こり得る。3以上のアドレスのうち複数のアドレスにソフトエラーが起きた場合、データが修復されず、システムが一時的に停止する。
本開示は、上記の問題に鑑みてなされたものであり、その目的は、メモリのデータ化けに起因するシステムの一時的な停止を抑制可能なデータ処理装置、制御方法およびプログラムを提供することである。
本開示の一例によれば、データ処理装置は、タスクの実行に使用される複数の変数を記憶するメモリと、処理部と、タスク実行部とを備える。処理部は、書込指示および読出指示を受けて、メモリに対して複数の変数のうち指定された変数の書き込みおよび読み出しをそれぞれ実行する。タスク実行部は、複数の変数のうち必要な変数を指定した第1読出指示を処理部に出力し、処理部から受けた当該変数の値を用いてタスクを実行する。処理部は、書込指示を受けると、指定された変数の値を示すデータを、メモリにおける、指定された変数に対応するN個の領域の各々に書き込む。Nは3以上の整数である。処理部は、読出指示を受けると、メモリにおける、指定された変数に対応するN個の領域の各々からデータを読み出し、N個の領域からそれぞれ読み出したデータを互いに照合する。処理部は、N個の領域からそれぞれ読み出したデータの全てが一致することに応じて、読出指示の出力元にN個の領域から読み出したデータで示される値を送る。処理部は、N個の領域のうち1個の領域を除いたN-1個の領域からそれぞれ読み出したデータが一致することに応じて、N-1個の領域から読み出したデータと一致するように1個の領域のデータを書き換えるとともに、読出指示の出力元にN-1個の領域から読み出したデータで示される値を送る。データ処理装置は、さらに、タスク実行部が第1読出指示を出力するタイミングと異なるタイミングにおいて、複数の変数のうちの少なくとも1つを指定したダミーの第2読出指示を処理部に出力するダミー指示部を備える。
この開示によれば、ダミーの第2読出指示を受けた処理部は、N個の領域のうちの1個の領域にデータ化けが生じている場合、当該1個の領域のデータを、残りN-1個の領域のデータと一致するように修復する。そのため、タスクの実行のために読み出される頻度の少ない変数についても、第1読出指示が出力されるタイミングと異なるタイミングにおいて、メモリ内の当該変数に対応するN個の領域がチェックされる。その結果、データ化けの生じたデータが正しいデータに修復される。すなわち、タスクの実行のために読み出される頻度の少ない変数についても、タスクの実行のために変数を読み出すタイミングと異なるタイミングにおいて、データの修復される機会が設けられる。そのため、メモリにおいて、変数に対応するN個の領域のうち複数の領域でデータが化けた状態は、発生しにくい。これにより、メモリのデータ化けに起因するシステムの一時的な停止を抑制できる。
上述の開示において、第2読出指示は、複数の変数の全てを指定する。ダミー指示部は、予め定められた周期ごとに第2読出指示を処理部に出力する。
この開示によれば、全ての変数について、データの修復される機会が定期的に設けられる。その結果、メモリにおいて、変数に対応するN個の領域のうち複数の領域でデータが化けた状態は、より発生しにくい。
上述の開示において、複数の変数は、M個のグループに分割される。Mは2以上の整数である。ダミー指示部は、M個のグループの各々について、当該グループに属する変数を指定した第2読出指示を予め定められた周期ごとに処理部に出力する。ダミー指示部は、M個のグループごとの第2読出指示の出力タイミングを、予め定められた周期の1/Mの周期分だけ順にシフトさせる。
この開示によれば、1回の第2読出指示に応じて実行される変数の読み出し処理に要する時間を短縮化できる。
上述の開示において、ダミー指示部は、複数の変数の各々について、処理部が書き込みまたは読み出しを実行した最新時刻を管理し、最新時刻からの経過時間が予め定められた期間だけ経過した変数を指定した第2読出指示を処理部に出力する。
この開示によれば、1回の第2読出指示に応じて実行される変数の読み出し処理に要する時間を短縮化できる。
上述の開示において、タスクはファクトリオートメーション(FA)に関連する。この開示によれば、データ処理装置は、FA分野のシステムに適用される。FA分野のシステムは、24時間×365日稼働する生産ラインに組み込まれ得る。このような生産ラインにおいて、システムが一時的に停止すると、多大な損害が生じ得る。そのため、できるだけコストをかけることなく、データ化けが生じたとして運転継続させたいというFA分野特有の要望が新たに生じている。上述の開示によれば、当該FA分野特有の要望を満たすことができる。
本開示の一例によれば、データ処理装置は、タスクの実行に使用される複数の変数を記憶するメモリと、書込指示および読出指示を受けて、メモリに対して複数の変数のうち指定された変数の書き込みおよび読み出しをそれぞれ実行する処理部とを含む。処理部は、書込指示を受けると、指定された変数の値を示すデータを、メモリにおける、指定された変数に対応するN個の領域の各々に書き込む。Nは3以上の整数である。処理部は、読出指示を受けると、メモリにおける、指定された変数に対応するN個の領域の各々からデータを読み出し、N個の領域からそれぞれ読み出したデータを互いに照合する。処理部は、N個の領域からそれぞれ読み出したデータの全てが一致することに応じて、読出指示の出力元にN個の領域から読み出したデータで示される値を送る。処理部は、N個の領域のうち1個の領域を除いたN-1個の領域からそれぞれ読み出したデータが一致することに応じて、N-1個の領域から読み出したデータと一致するように1個の領域のデータを書き換えるとともに、読出指示の出力元にN-1個の領域から読み出したデータで示される値を送る。データ処理装置の制御方法は、複数の変数のうち必要な変数を指定した第1読出指示を処理部に出力し、処理部から受けた当該変数の値を用いてタスクを実行するステップと、第1読出指示が出力されるタイミングと異なるタイミングにおいて、複数の変数のうちの少なくとも1つを指定したダミーの第2読出指示を処理部に出力するステップとを備える。
本開示の一例によれば、プログラムは、上記の制御方法をコンピュータに実行させる。これらの開示によっても、メモリのデータ化けに起因するシステムの一時的な停止を抑制できる。
本開示によれば、メモリのデータ化けに起因するシステムの一時的な停止を抑制できる。
本開示の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
§1 適用例
航空宇宙システム、自動車、医療機器、通信機器、産業機器など様々に分野において、メモリのデータ化けに起因するシステムの一時的な停止を抑制することが望まれる。本開示は、このような様々な分野のシステムに適用され得る。以下では、本開示の適用例として、FA(ファクトリオートメーション)分野に組み込まれる制御システムについて説明するが、本開示の適用例は、当該制御システムに限定されない。
航空宇宙システム、自動車、医療機器、通信機器、産業機器など様々に分野において、メモリのデータ化けに起因するシステムの一時的な停止を抑制することが望まれる。本開示は、このような様々な分野のシステムに適用され得る。以下では、本開示の適用例として、FA(ファクトリオートメーション)分野に組み込まれる制御システムについて説明するが、本開示の適用例は、当該制御システムに限定されない。
図1は、実施形態に係る制御システムの全体構成を示す概略図である。図1に例示される制御システム1は、主要なコンポーネントとして、標準PLC(プログラマブルロジックコントローラ)100と、安全PLC200と、1以上のカプラ300と、1以上の安全IOユニット400とを含む。制御システム1に含まれるこれらの装置は、各種のタスクを実行するデータ処理装置である。
標準PLC100は、予め作成された標準制御プログラムに従って、任意の制御対象に対する標準制御を実行する。「標準制御」は、予め定められた要求仕様に沿って、制御対象を制御するための処理の総称である。制御対象は、例えばサーボモータ、ロボットなどである。
安全PLC200は、標準PLC100とは独立して、任意の制御対象に対するセーフティ制御を実行する。図1に例示される安全PLC200は、ローカルバスを介して標準PLC100に接続される。「セーフティ制御」は、設備や機械などによって人の安全が脅かされることを防止するための処理の総称である。「セーフティ制御」は、例えばIEC 61508などに規定されたセーフティ機能を実現するための要件を満たすように設計される。
カプラ300は、標準PLC100と安全IOユニット400との間のデータの遣り取りを仲介する。カプラ300は、フィールドネットワーク2を介して、標準PLC100と電気的に接続されている。フィールドネットワーク2は、FA(Factory Automation)用のデータ伝送を実現するための通信媒体である。フィールドネットワーク2において、予め定められた周期でフレーム伝送が可能になっており、ネットワーク内の各ノードに対するデータ到着時間が保証される。このようなデータ到着時間が保証されるプロトコルの一例として、本実施の形態に従う制御システム1においては、フィールドネットワーク2にはEtherCAT(登録商標)を採用する。
カプラ300は、標準PLC100から受信したデータを安全IOユニット400へ送信するとともに、安全IOユニット400からデータを受信すると、当該受信したデータを次に到着するフレームに格納する準備を行う。
安全IOユニット400は、安全PLC200またはカプラ300にローカルバスを介して接続される。さらに、安全IOユニット400には任意の安全デバイス(図示せず)が接続される。安全デバイスには、ライトカーテン、非常停止ボタン、セーフティドアスイッチなどが含まれる。
安全IOユニット400は、安全デバイスからの入力信号を受け付けて、安全PLC200へ当該入力信号を提供する。あるいは、安全IOユニット400は、安全デバイスからの入力信号を受け付けて、カプラ300を介して標準PLC100へ当該入力信号を提供する。標準PLC100へ提供された入力信号は、安全PLC200へ提供される。
さらに、安全IOユニット400は、安全PLC200からの指令に応じて、安全デバイスへ出力信号を出力する。あるいは、安全IOユニット400は、カプラ300および標準PLC100を介した安全PLC200からの指令に応じて、安全デバイスへ出力信号を出力する。
安全IOユニット400は、予め定められた周期(以下、「タスク周期」と称する。)ごとに、安全デバイスからの入力信号の受け付け、当該入力信号の提供、安全デバイスへの出力信号の出力などに関するIOタスクを実行する。
安全IOユニット400は、IOタスクを実行するための処理回路を備える。処理回路は、プロセッサおよびメモリによって構成される。プロセッサは、メモリが記憶する複数の変数を用いてIOタスクを実行する。
安全PLC200は、安全IOユニット400から提供された入力信号に応じて、セーフティ制御を実行する。例えば、安全PLC200は、ライトカーテンである安全デバイスから人の侵入を示す入力信号が提供されると、標準PLC100の制御対象への電源供給を遮断し、制御システム1を一時的に停止させる。あるいは、安全PLC200は、非常停止ボタンである安全デバイスからボタン押下を示す入力信号が提供されると、標準PLC100の制御対象への電源供給を遮断し、制御システム1を一時的に停止させる。
このように、安全IOユニット400は、人の安全が脅かされることを防止するためのセーフティ制御に直接関わる。従って、安全PLC200は、安全IOユニット400に故障や異常が発生したときにも、制御システム1を一時的に停止させるように設計されている。
安全IOユニット400に備えられるメモリにデータ化けが生じ、当該データ化けが修復されないまま安全IOユニット400が動作し続けると、安全PLC200は、セーフティ制御を正常に実行できない。そのため、安全IOユニット400は、メモリにデータ化けが生じたとしても、当該データ化けを修復する機能を有する。
具体的には、安全IOユニット400において、プロセッサは、IOタスクの実行に用いられる複数の変数の各々について、当該変数の値を示すデータを、メモリにおける当該変数に対応するN個の領域に書き込む。Nは3以上の整数である。複数の変数の各々の値を示すデータは、安全IOユニット400の起動時にメモリに書き込まれる。また、複数の変数のうちの一部または全部について、メモリ上のデータは、IOタスクの実行中に書き換えられてもよい。
プロセッサは、IOタスクの実行のために、複数の変数のうち指定された変数をメモリから読み出す。このとき、プロセッサは、メモリにおける、指定された変数に対応するN個の領域の各々からデータを読み出し、当該N個の領域からそれぞれ読み出したデータを互いに照合する。
メモリにデータ化けが生じていない場合、N個の領域からそれぞれ読み出されるデータは互いに一致する。そのため、プロセッサは、N個の領域からそれぞれ読み出したデータの全てが一致することに応じて、当該N個の領域から読み出したデータで示される値を用いてIOタスクを実行する。
N個の領域のうちの1個領域にデータ化けが生じた場合、残りのN-1個の領域からそれぞれ読み出されるデータは互いに一致する。そのため、プロセッサは、N個の領域のうち1個の領域を除いたN-1個の領域からそれぞれ読み出したデータが一致することに応じて、N-1個の領域から読み出したデータと一致するように、メモリにおける上記1個の領域のデータを書き換える。これにより、データ化けによる誤ったデータが正しいデータに修復される。そして、プロセッサは、当該N-1個の領域から読み出したデータで示される値を用いてIOタスクを実行する。
さらに、本実施の形態に係る安全IOユニット400では、プロセッサは、IOタスクの実行のために変数を読み出すタイミングと異なるタイミングにおいて、複数の変数のうちの少なくとも1つをメモリからダミーで読み出す処理を実行する。ダミーの読み出し処理とは、読み出した変数の値が何ら利用されないにもかかわらず、当該変数の値を読み出す処理を意味する。
ダミーの読み出し処理においても、上記と同様に、N個の領域のうちの1個の領域にデータ化けが生じている場合、当該1個の領域のデータが、N-1個の領域のデータと一致するように修復される。そのため、IOタスクの実行のために読み出される頻度の少ない変数についても、メモリ内の当該変数に対応するN個の領域がチェックされ、データ化けの生じたデータが正しいデータに修復される。すなわち、IOタスクの実行のために読み出される頻度の少ない変数についても、IOタスクの実行のために変数を読み出すタイミングと異なるタイミングにおいて、データの修復される機会が設けられる。これにより、メモリのデータ化けに起因するシステムの一時的な停止を抑制できる。
§2 具体例
<標準PLCのハードウェア構成>
図2は、標準PLCのハードウェア構成例を示す模式図である。図2に例示される標準PLC100は、プロセッサ102と、メインメモリ104と、ストレージ110と、フィールドネットワークコントローラ108と、ローカルバスコントローラ116とを含む。これらのコンポーネントは、プロセッサバス118を介して接続されている。
<標準PLCのハードウェア構成>
図2は、標準PLCのハードウェア構成例を示す模式図である。図2に例示される標準PLC100は、プロセッサ102と、メインメモリ104と、ストレージ110と、フィールドネットワークコントローラ108と、ローカルバスコントローラ116とを含む。これらのコンポーネントは、プロセッサバス118を介して接続されている。
プロセッサ102は、主として、標準制御に係る制御演算を実行する演算処理部に相当し、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などで構成される。具体的には、プロセッサ102は、ストレージ110に格納されたプログラム(一例として、システムプログラム1102および標準制御プログラム1104)を読出して、メインメモリ104に展開して実行することで、制御対象に応じた制御演算、および、後述するような各種処理を実現する。
メインメモリ104は、例えばDRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)のような揮発性メモリによって構成される。ストレージ110は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などの不揮発性記憶装置などによって構成される。
ストレージ110には、基本的な機能を実現するためのシステムプログラム1102、制御対象に応じて作成された標準制御プログラム1104、および標準PLC100での処理を規定するための設定情報1106が格納される。
フィールドネットワークコントローラ108は、フィールドネットワーク2を介して任意のデバイス(例えばカプラ300)との間でデータを遣り取りする。
ローカルバスコントローラ116は、ローカルバスを介して、標準PLC100に接続される任意のユニット(例えば安全PLC200)との間でデータを遣り取りする。
<安全PLCのハードウェア構成>
図3は、安全PLCのハードウェア構成例を示す模式図である。図3に例示される安全PLC200は、プロセッサ202と、メインメモリ204と、ストレージ210と、ローカルバスコントローラ216とを含む。これらのコンポーネントは、プロセッサバス218を介して接続されている。
図3は、安全PLCのハードウェア構成例を示す模式図である。図3に例示される安全PLC200は、プロセッサ202と、メインメモリ204と、ストレージ210と、ローカルバスコントローラ216とを含む。これらのコンポーネントは、プロセッサバス218を介して接続されている。
プロセッサ202は、主として、セーフティ制御に係る制御演算を実行する演算処理部に相当し、CPUやGPUなどで構成される。
メインメモリ204は、例えばDRAMやSRAMのような揮発性メモリによって構成される。ストレージ210は、例えば、SSDやHDDなどの不揮発性記憶装置などによって構成される。
ストレージ210には、基本的な機能を実現するためのシステムプログラム2102、要求されるセーフティ機能に応じた作成された安全プログラム2104、および安全PLC200での処理を規定するための設定情報2106が格納される。
ローカルバスコントローラ216は、ローカルバスを介して、安全PLC200に接続される安全IOユニット400との間でデータを遣り取りする。
<カプラのハードウェア構成>
図4は、カプラのハードウェア構成例を示す模式図である。図4に例示されるカプラ300は、プロセッサ302と、メインメモリ304と、ストレージ310と、フィールドネットワークコントローラ308と、ローカルバスコントローラ316とを含む。これらのコンポーネントは、プロセッサバス318を介して接続されている。
図4は、カプラのハードウェア構成例を示す模式図である。図4に例示されるカプラ300は、プロセッサ302と、メインメモリ304と、ストレージ310と、フィールドネットワークコントローラ308と、ローカルバスコントローラ316とを含む。これらのコンポーネントは、プロセッサバス318を介して接続されている。
プロセッサ302は、主として、カプラ300を動作させるための制御演算を実行する演算処理部に相当し、CPUやGPUなどで構成される。
メインメモリ304は、例えばDRAMやSRAMのような揮発性メモリによって構成される。ストレージ310は、例えば、SSDやHDDなどの不揮発性記憶装置などによって構成される。
ストレージ310には、基本的な機能を実現するためのシステムプログラム3102およびカプラ300での処理を規定するための設定情報3106が格納される。
フィールドネットワークコントローラ308は、フィールドネットワーク2を介して、任意のデバイス(例えば標準PLC100)との間でデータを遣り取りする。
ローカルバスコントローラ316は、ローカルバスを介して、カプラ300に接続される安全IOユニット400との間でデータを遣り取りする。
<安全IOユニットのハードウェア構成>
図5は、安全IOユニットのハードウェア構成例を示す模式図である。図5に例示される安全IOユニット400は、プロセッサ402と、メインメモリ404と、ストレージ410と、ローカルバスコントローラ412と、安全IOモジュール416とを含む。これらのコンポーネントは、プロセッサバス418を介して接続されている。
図5は、安全IOユニットのハードウェア構成例を示す模式図である。図5に例示される安全IOユニット400は、プロセッサ402と、メインメモリ404と、ストレージ410と、ローカルバスコントローラ412と、安全IOモジュール416とを含む。これらのコンポーネントは、プロセッサバス418を介して接続されている。
プロセッサ402は、セーフティ制御を実現するために必要な信号の入出力および管理機能に係る制御演算を実行する演算処理部に相当し、CPUやMPU(Micro Processing Unit)などによって構成される。
メインメモリ404は、例えばDRAMやSRAMのような揮発性メモリによって構成される。SRAMは、記憶部の構造としてフリップフロップを用いており、リフレッシュ動作を必要とせず、DRAMより高速に動作できるという利点を有する。そのため、SRAMをメインメモリ404として用いることが好ましい。
積み上げ型(スタック型)の構造を有するDRAMでは、ソフトエラー耐性が高い。一方、フリップフロップ構造を有するSRAMでは、微細化によりソフトエラー耐性が低下する。そのため、SRAMによって構成されるメインメモリ404を用いる場合、メインメモリ404にソフトエラーが起こりやすい。以下、メインメモリ404がSRAMであるとものとして説明する。
ストレージ410は、例えば、SSDやHDDなどの不揮発性記憶装置などで構成される。ストレージ410には、IO機能を実現するための実行可能プログラム420と、ライブラリ422と、ダミー読出プログラム424とが格納される。
ローカルバスコントローラ412は、ローカルバスを介して、安全IOユニット400が接続されるデバイス(例えば安全PLC200、カプラ300)との間でデータを遣り取りする。
安全IOモジュール416は、安全デバイスと電気的に接続され、安全デバイスによる検出結果などの入力を受け付けたり、安全デバイスへ信号を出力したりする。
<安全IOユニットの機能構成>
図6は、安全IOユニットの機能構成の一例を示す図である。図6に例示される安全IOユニット400は、書込読出処理部41と、タスク実行部42と、ダミー指示部43とを備える。書込読出処理部41は、プロセッサ402がライブラリ422を実行することにより実現される。タスク実行部42は、プロセッサ402が実行可能プログラム420を実行することにより実現される。ダミー指示部43は、プロセッサ402がダミー読出プログラム424を実行することにより実現される。
図6は、安全IOユニットの機能構成の一例を示す図である。図6に例示される安全IOユニット400は、書込読出処理部41と、タスク実行部42と、ダミー指示部43とを備える。書込読出処理部41は、プロセッサ402がライブラリ422を実行することにより実現される。タスク実行部42は、プロセッサ402が実行可能プログラム420を実行することにより実現される。ダミー指示部43は、プロセッサ402がダミー読出プログラム424を実行することにより実現される。
書込読出処理部41は、書込指示および読出指示を受けて、メインメモリ404に対して指定された変数の書き込みおよび読み出しをそれぞれ実行する。書込読出処理部41は、IOタスクの実行に使用される全ての変数の各々について、当該変数の値を示すデータを3以上に多重化させてメインメモリ404上で管理する。以下、データを3重化して管理する例について説明する。
図6に示されるように、書込読出処理部41は、変数管理テーブル44を管理している。変数管理テーブル44は、IOタスクの実行に使用される全ての変数の各々について、変数名と、型と、メインメモリ404における当該変数の値を示すデータが保持される3つの領域のアドレスとが互いに対応付けられたテーブルである。以下、3つの領域のアドレスを、「第1アドレス」、「第2アドレス」および「第3アドレス」と称する。IOタスクの実行に使用される全ての変数の一覧は、ソースコードをコンパイルして実行可能プログラム420を作成するときに生成される。
図7は、書込読出処理部によるメインメモリへのデータの書き込み処理の一例を示す図である。図7に示されるように、書込読出処理部41は、指定された変数の値を示す対象データをメインメモリ404に書き込む際に、対象データを2回コピーし、第1コピーデータおよび第2コピーデータを生成する。書込読出処理部41は、変数管理テーブル44を用いて、指定された変数に対応する第1~第3アドレスを特定し、特定した第1~第3アドレスによって示される3個の領域に、対象データ、第1コピーデータおよび第2コピーデータをそれぞれ書き込む。これにより、メインメモリ404において、データが3重化される。
書き込み直後において、対象データと第1コピーデータと第2コピーデータとは同一である。しかしながら、例えば宇宙線や中性子線の影響により、対象データと第1コピーデータと第2コピーデータとのいずれかにおいてデータ化けが生じ得る。
図8は、書込読出処理部によるメインメモリからのデータの読み出し処理の一例を示す図である。図8に示されるように、書込読出処理部41は、読出指示を受けると、変数管理テーブル44を用いて、指定された変数に対応する第1~第3アドレスを特定する。そして、書込読出処理部41は、特定した第1~第3アドレスによって示される、メインメモリ404の3個の領域の各々からデータを読み出し、当該3個の領域からそれぞれ読み出したデータを互いに照合する。
3個の領域のいずれにもデータ化けが発生していない場合、当該3個の領域からそれぞれ読み出したデータの全てが一致する。そのため、書込読出処理部41は、3個の領域からそれぞれ読み出したデータの全てが一致することに応じて、読出指示の出力元に3個の領域のいずれかから読み出したデータで示される値を送る。
3個の領域のうちの1個の領域にデータ化けが発生したとしても、残り2個の領域からそれぞれ読み出したデータが一致する。そのため、書込読出処理部41は、3個の領域のうち1個の領域を除いた2個の領域からそれぞれ読み出したデータが一致することに応じて、当該2個の領域から読み出したデータと一致するように当該1個の領域のデータを書き換える。さらに、書込読出処理部41は、読出指示の出力元に当該2個の領域から読み出したデータで示される値を送る。これにより、3個の領域のうちの1個の領域にデータ化けが発生したとしても、読み出し処理において、データ化けの生じたデータが修復される。
図6に戻って、書込読出処理部41は、読出指示として、タスク実行部42から第1読出指示を受け、ダミー指示部43から第2読出指示を受ける。また、書込読出処理部41は、タスク実行部42から書込指示を受ける。
タスク実行部42は、タスク周期ごとに、メインメモリ404に記憶される変数を用いたIOタスクを実行する。IOタスクの実行に使用される変数は、タスク周期ごとに異なり得る。すなわち、メインメモリ404に記憶される複数の変数には、全てのタスク周期において使用される変数と、M回(Mは2以上の整数)のタスク周期のうちの1回のタスク周期において使用される変数とが含まれ得る。このように、メインメモリ404に記憶される変数がIOタスクの実行のために使用される頻度は、変数ごとに異なる。
タスク実行部42は、メインメモリ404に記憶された複数の変数のうち必要な変数を指定した第1読出指示を生成し、生成した第1読出指示を書込読出処理部41に出力する。このように、第1読出指示は、IOタスクの実行に利用される変数を読み出すための正規の指示である。タスク実行部42は、指定した変数の値を書込読出処理部41から受け、当該変数の値を用いてIOタスクを実行する。
タスク実行部42は、IOタスクの実行によって変数の値の書き換えが必要となった場合、当該変数と更新後の値とを指定した書込指示を生成し、生成した書込指示を書込読出処理部41に出力する。
ダミー指示部43は、IOタスクの実行に使用される複数の変数のリスト(以下、「変数リスト45」と称する。)を管理している。変数リスト45は、ソースコードをコンパイルして実行可能プログラム420を作成するときに生成される。ダミー指示部43は、変数リスト45に含まれる全ての変数を指定したダミーの第2読出指示を定期的に生成し、生成した第2読出指示を書込読出処理部41に出力する。第2読出指示は、書込読出処理部41による上記のデータの修復を期待して生成される。そのため、ダミー指示部43は、第2読出指示に応じて読み出された変数の値に対して何ら処理を実行せず、当該値を破棄すればよい。このように、第2読出指示は、読み出された変数の値を何ら利用しないにもかかわらず、当該変数の値を読み出すためのダミーの指示である。
ダミー指示部43が第2読出指示を生成する周期は、ソフトエラーが発生する周期よりも短いことが好ましく、例えば8時間以内である。ダミー指示部43が第2読出指示を生成する周期は、タスク周期と同一であってもよい。
<ダミー指示の利点>
図9~図11を参照して、ダミー指示の利点について説明する。図9は、ダミー指示を行なわないときの動作例(参考例)を示す図である。
図9~図11を参照して、ダミー指示の利点について説明する。図9は、ダミー指示を行なわないときの動作例(参考例)を示す図である。
図9には、全てのタスク周期において、変数「Var_A」を用いたIOタスクが実行されるときの動作例が示される。タスク実行部42として動作するプロセッサ402は、各タスク周期において、IOタスクの実行に必要な変数「Var_A」を指定した第1読出指示を生成する。そして、書込読出処理部41として動作するプロセッサ402は、当該第1読出指示に応じて、メインメモリ404における、変数「Var_A」に対応する3個の領域404a~404cからデータを読み出す。
図9に例示される動作例では、1回目のIOタスクの実行後の時刻t1において、領域404bにデータ化けが発生している。しかしながら、2回目のIOタスクが実行される時刻t2において、変数「Var_A」を指定した第1読出指示が生成される。これにより、書込読出処理部41として動作するプロセッサ402は、変数「Var_A」に対応する3個の領域404a~404cからデータを読み出し、領域404a~404cからそれぞれ読み出されたデータを照合する。プロセッサ402は、照合の結果、領域404a,404cから読み出したデータが一致し、領域404bから読み出したデータが領域404a,404cから読み出したデータと一致しないことを認識する。そのため、プロセッサ402は、領域404a,404cから読み出したデータと一致するように領域404bのデータを書き換える。その結果、領域404bのデータ化けが修復される。
同様に、X回目のIOタスクの実行後の時刻t3において、領域404aにデータ化けが発生しても、次のX+1回目のIOタスクの実行期間内である時刻t4において、領域404aのデータ化けが修復される。
図9に示されるように、IOタスクの実行のために読み出される頻度の高い変数については、データ化けが発生しても、すぐに修復される。そのため、メインメモリ404において、当該変数に対応する3個の領域のうち複数の領域でデータが化けた状態は、発生しにくい。
図10は、ダミー指示を行なわないときの別の動作例(参考例)を示す図である。図10には、タスク周期のX倍の周期ごとに、変数「Var_A」を用いたIOタスクが実行されるときの動作例が示される。図10に示される動作例においても、図9に示される動作例と同様に、1回目のIOタスクの実行後の時刻t1において、領域404bにデータ化けが発生し、X回目のIOタスクの実行後の時刻t3において、領域404aにデータ化けが発生している。
図10に示される動作例では、1回目のIOタスクの実行後からX+1回目のIOタスクが実行されるまでの期間において、変数「Var_A」は、IOタスクの実行のために使用されない。そのため、タスク実行部42として動作するプロセッサ402は、当該期間において、変数「Var_A」を指定した第1読出指示を生成しない。したがって、当該期間において、変数「Var_A」に対応する領域404a~404cのデータ化けを修復する機会がない。その結果、図10に示されるように、領域404a~404cのうちの複数の領域(領域404a,404b)でデータが化けた状態が発生する。
領域404aに生じたデータ化けの内容と、領域404bに生じたデータ化けの内容とが一致する確率は非常に小さい。そのため、領域404a~404cのデータは互いに異なる。従って、X+1回目のIOタスクが実行される時刻t4において、変数「Var_A」を指定した第1読出指示が生成されたとしても、書込読出処理部41として動作するプロセッサ402は、領域404a,404bのデータを修復できない。
図10に示されるように、IOタスクの実行のために読み出される頻度の低い変数について、メインメモリ404における、当該変数に対応する3個の領域のうち複数の領域でデータが化けた状態が発生し得る。その結果、データの修復が不可能となり、システムを停止せざる得なくなる。
図11は、ダミー指示を行なうときの動作例(実施例)を示す図である。図11に示される動作例においても、図10に示される動作例と同様に、タスク周期のX倍の周期ごとに、変数「Var_A」を用いたIOタスクが実行される。さらに、図11に示される動作例においても、図10に示される動作例と同様に、1回目のIOタスクの実行後の時刻t1において、領域404bにデータ化けが発生し、X回目のIOタスクの実行後の時刻t3において、領域404aにデータ化けが発生している。
図11に示される動作例では、ダミー指示部43として動作するプロセッサ402は、各タスク周期の開始直後において、全ての変数を指定した第2読出指示を生成する。そのため、1回目のIOタスクが実行された後、次のタスク周期の開始直後である時刻t11において、書込読出処理部41として動作するプロセッサ402は、変数「Var_A」に対応する3個の領域404a~404cからデータを読み出し、領域404a~404cからそれぞれ読み出されたデータを照合する。プロセッサ402は、照合の結果、領域404a,404cから読み出したデータが一致し、領域404bから読み出したデータが領域404a,404cから読み出したデータと一致しないことを認識する。そのため、プロセッサ402は、領域404a,404cから読み出したデータと一致するように領域404bのデータを書き換える。その結果、領域404bのデータ化けが修復される。
同様に、X回目のIOタスクが実行された後、次のタスク周期の開始直後である時刻t12において、書込読出処理部41として動作するプロセッサ402は、変数「Var_A」に対応する3個の領域404a~404cからデータを読み出し、領域404a~404cからそれぞれ読み出されたデータを照合する。プロセッサ402は、照合の結果、領域404b,404cから読み出したデータが一致し、領域404aから読み出したデータが領域404b,404cから読み出したデータと一致しないことを認識する。そのため、プロセッサ402は、領域404b,404cから読み出したデータと一致するように領域404aのデータを書き換える。その結果、領域404aのデータ化けが修復される。
図11に示されるように、全ての変数について、定期的に第2読出指示が生成される。そのため、IOタスクの実行のために読み出される頻度の低い変数についても、メインメモリ404内の当該変数に対応する3個の領域が定期的にチェックされ、データ化けの生じたデータが正しいデータに修復される。すなわち、IOタスクの実行のために読み出される頻度の少ない変数についても、データの修復される機会が定期的に設けられる。そのため、メインメモリ404において、当該変数に対応する3個の領域のうち複数の領域でデータが化けた状態は、発生しにくい。これにより、メインメモリ404のデータ化けに起因するシステムの一時的な停止を抑制できる。
<安全IOユニットにおける処理の流れ>
図12は、安全IOユニットにおける処理の流れの一例を示すフローチャートである。まず、プロセッサ402は、タスク周期の開始タイミングに到達したか否かを判断する(ステップS1)。タスク周期の開始タイミングに到達していない場合(ステップS1でNO)、処理は再度ステップS1に戻る。
図12は、安全IOユニットにおける処理の流れの一例を示すフローチャートである。まず、プロセッサ402は、タスク周期の開始タイミングに到達したか否かを判断する(ステップS1)。タスク周期の開始タイミングに到達していない場合(ステップS1でNO)、処理は再度ステップS1に戻る。
タスク周期の開始タイミングに到達した場合(ステップS1でNO)、ダミー指示部43として動作するプロセッサ402は、全ての変数を指定した第2読出指示を生成する(ステップS2)。当該第2読出指示に応じて、書込読出処理部41として動作するプロセッサ402は、指定された変数の読み出し処理を実行する(ステップS3)。ステップS3の詳細については後述する。
ステップS3が完了すると、タスク実行部42として動作するプロセッサ402は、実行可能プログラム420に従ったIOタスクを開始する(ステップS4)。プロセッサ402は、IOタスクの実行に必要な変数を指定した第1読出指示を生成する(ステップS5)。
ステップS5において生成された第1読出指示に応じて、書込読出処理部41として動作するプロセッサ402は、指定された変数の読み出し処理を実行する(ステップS6)。
タスク実行部42として動作するプロセッサ402は、ステップS6によって読み出された変数の値を用いてIOタスクを実行する(ステップS7)。なお、ステップS7において、プロセッサ402は、書き換えの必要な変数と更新後の値とを指定した書込指示を生成してもよい。この場合、書込読出処理部41として動作するプロセッサ402は、指定された変数の書き込み処理を実行する。
ステップS7の完了後、処理は終了する。ステップS1~S7の処理は、タスク周期ごとに実行される。
図13は、図12に示すステップS3,S6のサブルーチンの流れの一例を示すフローチャートである。
書込読出処理部41として動作するプロセッサ402は、メインメモリ404における、指定された変数に対応する3個の領域からデータをそれぞれ読み出す(ステップS11)。次に、プロセッサ402は、3個の領域からそれぞれ読み出されたデータを照合する(ステップS12)。
プロセッサ402は、3個の領域からそれぞれ読み出されたデータの全てが一致するか否かを判断する(ステップS13)。ステップS13でYESの場合、処理はステップS16に移る。
ステップS13でNOの場合、プロセッサ402は、3個の領域のうちの2個の領域から読み出されたデータが一致するか否かを判断する(ステップS14)。ステップS14でYESの場合、プロセッサ402は、当該2個の領域から読み出されたデータと一致するように残り1個の領域のデータを書き換える(ステップS16)。ステップS15の完了後、処理はステップS16に移る。
ステップS14でNOの場合、プロセッサ402は、エラー信号を出力する(ステップS17)。これにより、制御システム1が一時的に停止する。ステップS17の後、処理は終了する。
ステップS16において、プロセッサ402は、一致するデータで示される値を指定された変数の値として決定する。ステップS16の完了後、処理は図12に示す後段のステップ(ステップS4またはステップS7)に戻る。
<作用・効果>
以上のように、データ処理装置である安全IOユニット400は、IOタスクの実行に使用される複数の変数を記憶するメインメモリ404と、書込読出処理部41と、タスク実行部42とを備える。書込読出処理部41は、書込指示および読出指示を受けて、メインメモリ404に対して複数の変数のうち指定された変数の書き込みおよび読み出しをそれぞれ実行する。タスク実行部42は、複数の変数のうち必要な変数を指定した第1読出指示を書込読出処理部41に出力し、書込読出処理部41から受けた当該変数の値を用いてIOタスクを実行する。書込読出処理部41は、書込指示を受けると、指定された変数の値を示すデータを、メインメモリ404における、指定された変数に対応する3個の領域の各々に書き込む。書込読出処理部41は、読出指示を受けると、メインメモリ404における、指定された変数に対応する3個の領域の各々からデータを読み出し、3個の領域からそれぞれ読み出したデータを互いに照合する。書込読出処理部41は、3個の領域からそれぞれ読み出したデータの全てが一致することに応じて、読出指示の出力元に3個の領域から読み出したデータで示される値を送る。書込読出処理部41は、3個の領域のうち1個の領域を除いた2個の領域からそれぞれ読み出したデータが一致することに応じて、当該2個の領域から読み出したデータと一致するように当該1個の領域のデータを書き換える。さらに、書込読出処理部41は、読出指示の出力元に当該2個の領域から読み出したデータで示される値を送る。安全IOユニット400は、さらに、タスク実行部42が第1読出指示を出力するタイミングと異なるタイミングにおいて、複数の変数を指定したダミーの第2読出指示を書込読出処理部41に出力するダミー指示部43を備える。
以上のように、データ処理装置である安全IOユニット400は、IOタスクの実行に使用される複数の変数を記憶するメインメモリ404と、書込読出処理部41と、タスク実行部42とを備える。書込読出処理部41は、書込指示および読出指示を受けて、メインメモリ404に対して複数の変数のうち指定された変数の書き込みおよび読み出しをそれぞれ実行する。タスク実行部42は、複数の変数のうち必要な変数を指定した第1読出指示を書込読出処理部41に出力し、書込読出処理部41から受けた当該変数の値を用いてIOタスクを実行する。書込読出処理部41は、書込指示を受けると、指定された変数の値を示すデータを、メインメモリ404における、指定された変数に対応する3個の領域の各々に書き込む。書込読出処理部41は、読出指示を受けると、メインメモリ404における、指定された変数に対応する3個の領域の各々からデータを読み出し、3個の領域からそれぞれ読み出したデータを互いに照合する。書込読出処理部41は、3個の領域からそれぞれ読み出したデータの全てが一致することに応じて、読出指示の出力元に3個の領域から読み出したデータで示される値を送る。書込読出処理部41は、3個の領域のうち1個の領域を除いた2個の領域からそれぞれ読み出したデータが一致することに応じて、当該2個の領域から読み出したデータと一致するように当該1個の領域のデータを書き換える。さらに、書込読出処理部41は、読出指示の出力元に当該2個の領域から読み出したデータで示される値を送る。安全IOユニット400は、さらに、タスク実行部42が第1読出指示を出力するタイミングと異なるタイミングにおいて、複数の変数を指定したダミーの第2読出指示を書込読出処理部41に出力するダミー指示部43を備える。
上記の構成によれば、ダミーの第2読出指示を受けた書込読出処理部41は、3個の領域のうちの1個の領域にデータ化けが生じている場合、当該1個の領域のデータを、残り2個の領域のデータと一致するように修復する。そのため、IOタスクの実行のために読み出される頻度の少ない変数についても、タスク実行部42が第1読出指示を出力するタイミングと異なるタイミングにおいて、メインメモリ404内の当該変数に対応する3個の領域がチェックされる。その結果、データ化けの生じたデータが正しいデータに修復される。すなわち、IOタスクの実行のために読み出される頻度の少ない変数についても、IOタスクの実行のために変数を読み出すタイミングと異なるタイミングにおいて、データの修復される機会が設けられる。そのため、メインメモリ404において、変数に対応する3個の領域のうち複数の領域でデータが化けた状態は、発生しにくい。これにより、メモリのデータ化けに起因するシステムの一時的な停止を抑制できる。
第2読出指示は、複数の変数の全てを指定する。ダミー指示部43は、予め定められた周期ごとに第2読出指示を書込読出処理部41に出力する。これにより、全ての変数について、データの修復される機会が定期的に設けられる。その結果、メインメモリ404において、変数に対応する3個の領域のうち複数の領域でデータが化けた状態がより発生しにくい。
上記の予め定められた周期は、例えばタスク周期(タスク実行部42がIOタスクを実行する周期)と同じであってもよい。これにより、データの修復される機会がタスク周期と同じ周期で設けられる。その結果、メインメモリ404において、変数に対応する3個の領域のうち複数の領域でデータが化けた状態がより一層発生しにくい。
なお、IOタスクはFAに関連する。すなわち、安全IOユニット400は、FA分野に組み込まれる制御システム1に適用される。
航空宇宙システム等の分野では、一般に一時的な停止が許されない。そのため、従来、航空宇宙システム等の分野では、データ化けが生じたとして運転継続できるように、ハードウェアである処理回路を3重化する三重モード冗長(Triple Modular Redundant(TMR))技術が適用されている。これに対し、FA分野に組み込まれる制御システムでは、航空宇宙システム等の分野と比較して、一時的な停止が許される。また、ハードウェアである処理回路を3重化すると、コストがかかる。そのため、従来、データ化けに起因した異常が発生した場合、一時的に停止するように制御システムが設計されている。
しかしながら、FA分野に組み込まれる制御システムは、24時間×365日稼働する生産ラインに組み込まれ得る。このような生産ラインにおいて、制御システムが一時的に停止すると、多大な損害が生じ得る。そのため、TMR技術のようにコストをかけることなく、データ化けが生じたとして運転継続させたいというFA分野特有の要望が新たに生じている。制御システム1は、上記の構成を有することにより、当該FA分野特有の要望を満たすことができる。
<変形例1>
上記の説明では、ダミー指示部43として動作するプロセッサ402は、タスク周期ごとに、メインメモリ404に記憶される複数の変数の全てを指定した第2読出指示を生成する。しかしながら、ダミー指示部43は、メインメモリ404に記憶される複数の変数のうちの一部を指定した第2読出指示を定期的に生成してもよい。
上記の説明では、ダミー指示部43として動作するプロセッサ402は、タスク周期ごとに、メインメモリ404に記憶される複数の変数の全てを指定した第2読出指示を生成する。しかしながら、ダミー指示部43は、メインメモリ404に記憶される複数の変数のうちの一部を指定した第2読出指示を定期的に生成してもよい。
図14は、変形例1に係るダミー指示部による第2読出指示の生成例を示す図である。図14に示されるように、メインメモリ404に記憶される複数の変数は、M個のグループ(グループG1~GM)に分割される。Mは2以上の整数である。
ダミー指示部43として動作するプロセッサ402は、複数のグループの各々について、当該グループに属する変数を指定した第2読出指示を予め定められた周期ごとに生成する。図14に示す例では、予め定められた周期は、タスク周期のM倍の周期である。さらに、ダミー指示部43として動作するプロセッサ402は、グループごとの第2読出指示の出力タイミングを、上記予め定められた周期の1/Mの周期(図14に示す例ではタスク周期)分だけ順にシフトさせる。
具体的には、ダミー指示部43として動作するプロセッサ402は、あるタスク周期において、グループGkに属する変数を指定した第2読出指示を生成した場合、次のタスク周期において、グループG(k+1)に属する変数を指定した第2読出指示を出力する。なお、ダミー指示部43として動作するプロセッサ402は、あるタスク周期において、グループGMに属する変数を指定した第2読出指示を生成した場合、次のタスク周期において、グループG1に属する変数を指定した第2読出指示を生成する。
変形例1によれば、1回の第2読出指示に応じて実行される変数の読み出し処理に要する時間を短縮化できる。
<変形例2>
上記の説明では、メインメモリ404に記憶される複数の変数の全てについて、ダミーの第2読出指示が定期的に出力されるものとした。しかしながら、複数の変数のうち、IOタスクの実行のための書き込みまたは読み出しの頻度の少ない変数について、ダミーの第2読出指示が出力されてもよい。
上記の説明では、メインメモリ404に記憶される複数の変数の全てについて、ダミーの第2読出指示が定期的に出力されるものとした。しかしながら、複数の変数のうち、IOタスクの実行のための書き込みまたは読み出しの頻度の少ない変数について、ダミーの第2読出指示が出力されてもよい。
図15は、変形例2に係るダミー指示部の一例を示す図である。変形例2に係る安全IOユニットは、ダミー指示部43の代わりに図15に示すダミー指示部43aを備える点で、図6に示す安全IOユニット400と相違する。
ダミー指示部43aは、変数リスト45aを管理している。変数リスト45aには、メインメモリ404に記憶される複数の変数の一覧と、当該複数の変数の各々について、書込読出処理部41が書き込みまたは読み出しを実行した最新時刻(最新アクセス時刻)とが記述される。ダミー指示部43aは、複数の変数の各々について、書込読出処理部41が書き込みまたは読み出しを実行した時刻を書込読出処理部41から受け、当該時刻に基づいて変数リスト45aを更新する。このようにして、ダミー指示部43aは、複数の変数の各々について、書込読出処理部41が書き込みまたは読み出しを実行した最新時刻を管理する。
ダミー指示部43aは、最新時刻からの経過時間が予め定められた期間(例えば8時間)だけ経過した変数を指定した第2読出指示を生成し、生成した第2読出指示を書込読出処理部41に出力する。これにより、複数の変数のうち、IOタスクの実行のための書き込みまたは読み出しの頻度の少ない変数について、ダミーの第2読出指示が出力される。その結果、ダミーの第2読出指示に応じて実行される読み出し処理に要する時間を短縮化できる。
<変形例3>
上記の説明では、安全IOユニット400は、プロセッサおよびメインメモリからなる処理回路を1つだけ備えるものとした。しかしながら、安全IOユニット400は、2つの処理回路を備えてもよい。2つの処理回路は、同一のIOタスクを並行して実行する。これにより、より信頼性の高いタスク結果を得ることができる。
上記の説明では、安全IOユニット400は、プロセッサおよびメインメモリからなる処理回路を1つだけ備えるものとした。しかしながら、安全IOユニット400は、2つの処理回路を備えてもよい。2つの処理回路は、同一のIOタスクを並行して実行する。これにより、より信頼性の高いタスク結果を得ることができる。
図16は、変形例3に係る安全IOユニットのハードウェア構成の一例を示す図である。図16に示されるように、変形例3に係る安全IOユニット400bは、図5に例示される安全IOユニット400と比較して、プロセッサ406と、メインメモリ408とをさらに含む点で相違する。すなわち、安全IOユニット400bは、プロセッサ402およびメインメモリ404を有するAチャンネル回路40Aと、プロセッサ406およびメインメモリ408を有するBチャンネル回路40Bとを含む。Aチャンネル回路40AとBチャンネル回路40Bとは、同一の処理を並行して実行する。
Aチャンネル回路40Aにおいて、プロセッサ402がライブラリ422、実行可能プログラム420およびダミー読出プログラム424を実行することにより、図6に示す書込読出処理部41、タスク実行部42およびダミー指示部43が実現される。Bチャンネル回路40Bにおいても、プロセッサ406がライブラリ422、実行可能プログラム420およびダミー読出プログラム424を実行することにより、図6に示す書込読出処理部41、タスク実行部42およびダミー指示部43が実現される。ただし、Aチャンネル回路40Aにおいて実現される書込読出処理部41は、メインメモリ404に対して書き込みおよび読み出しを実行する。Bチャンネル回路40Bにおいて実現される書込読出処理部41は、メインメモリ408に対して書き込みおよび読み出しを実行する。
図17は、変形例3に係る安全IOユニットの動作例を示す図である。図17に示されるように、Aチャンネル回路40AおよびBチャンネル回路40Bにおいて、タスク周期ごとに、ダミーの第2読出指示に従った、メインメモリ404,408からのダミーの読み出し処理がそれぞれ実行される。これにより、メインメモリ404,408の各々において、IOタスクの実行のために読み出される頻度の少ない変数についても、データ化けを修復する機会が定期的に設けられる。その結果、メインメモリ404,408の各々において、各変数に対応する3個の領域のうち複数の領域にデータ化けが生じた状態の発生を抑制できる。
さらに、Aチャンネル回路40AおよびBチャンネル回路40Bにおいて、タスク周期ごとに、同一のIOタスクがそれぞれ実行される。そして、Aチャンネル回路40AによるIOタスクの結果と、Bチャンネル回路40BによるIOタスクの結果とが照合される。
Aチャンネル回路40AおよびBチャンネル回路40Bの一方において、IOタスクの実行中に一過性の故障が生じた場合、Aチャンネル回路40AによるIOタスクの結果と、Bチャンネル回路40BによるIOタスクの結果とが一致しない。このような一過性の故障は、プロセッサ内のレジスタにおけるデータ化け、バス上でのデータ化け、プロセッサの誤動作などに起因して生じる。
Aチャンネル回路40AおよびBチャンネル回路40Bは、両者のIOタスクの結果が一致することに応じて、動作を継続させる。一方、Aチャンネル回路40AおよびBチャンネル回路40Bは、両者のIOタスクの結果が一致しないことに応じて、動作を停止させる。これにより、上記のような一過性の故障が生じた状態で実行されたIOタスクの結果に基づいて動作が継続されることを抑制できる。
<変形例4>
上記の説明では、メインメモリにおいてデータが3重化して管理されるものとした。しかしながら、メインメモリにおいて、各変数の値を示すデータが4以上に多重化されてもよい。
上記の説明では、メインメモリにおいてデータが3重化して管理されるものとした。しかしながら、メインメモリにおいて、各変数の値を示すデータが4以上に多重化されてもよい。
<変形例5>
標準PLC100、安全PLC200およびカプラ300も、安全IOユニット400と同様に、書込読出処理部41、タスク実行部42、およびダミー指示部43(またはダミー指示部43a)を備えていてもよい。ただし、各装置に備えられるタスク実行部42は、IOタスクの代わりに、各装置に応じたタスクを実行する。これにより、標準PLC100、安全PLC200およびカプラ300も、メインメモリにデータ化けが生じたとしても動作を継続できる。その結果、制御システム1の停止の頻度が抑制される。
標準PLC100、安全PLC200およびカプラ300も、安全IOユニット400と同様に、書込読出処理部41、タスク実行部42、およびダミー指示部43(またはダミー指示部43a)を備えていてもよい。ただし、各装置に備えられるタスク実行部42は、IOタスクの代わりに、各装置に応じたタスクを実行する。これにより、標準PLC100、安全PLC200およびカプラ300も、メインメモリにデータ化けが生じたとしても動作を継続できる。その結果、制御システム1の停止の頻度が抑制される。
§3 付記
以上のように、本実施の形態は以下のような開示を含む。
以上のように、本実施の形態は以下のような開示を含む。
(構成1)
データ処理装置(400,400b)であって、
タスクの実行に使用される複数の変数を記憶するメモリ(404,408)と、
書込指示および読出指示を受けて、前記メモリに対して前記複数の変数のうち指定された変数の書き込みおよび読み出しをそれぞれ実行する処理部(41,402,406)と、
前記複数の変数のうち必要な変数を指定した第1読出指示を前記処理部(41,402,406)に出力し、前記処理部(41,402,406)から受けた当該変数の値を用いて前記タスクを実行するタスク実行部(42,402,406)とを備え、
前記処理部(41,402,406)は、前記書込指示を受けると、前記指定された変数の値を示すデータを、前記メモリ(404,408)における、前記指定された変数に対応するN個の領域の各々に書き込み、
Nは3以上の整数であり、
前記処理部(41,402,406)は、前記読出指示を受けると、
前記メモリ(404,408)における、前記指定された変数に対応する前記N個の領域の各々からデータを読み出し、前記N個の領域からそれぞれ読み出したデータを互いに照合し、
前記N個の領域からそれぞれ読み出したデータの全てが一致することに応じて、前記読出指示の出力元に前記N個の領域のいずれかから読み出したデータで示される値を送り、
前記N個の領域のうち1個の領域を除いたN-1個の領域からそれぞれ読み出したデータが一致することに応じて、前記N-1個の領域から読み出したデータと一致するように前記1個の領域のデータを書き換えるとともに、前記読出指示の出力元に前記N-1個の領域から読み出したデータで示される値を送り、
前記データ処理装置(400)は、さらに、
前記タスク実行部(42,402,406)が前記第1読出指示を出力するタイミングと異なるタイミングにおいて、前記複数の変数のうちの少なくとも1つを指定したダミーの第2読出指示を前記処理部(41,402,406)に出力するダミー指示部(43,43a,402,406)を備える、データ処理装置(400,400b)。
データ処理装置(400,400b)であって、
タスクの実行に使用される複数の変数を記憶するメモリ(404,408)と、
書込指示および読出指示を受けて、前記メモリに対して前記複数の変数のうち指定された変数の書き込みおよび読み出しをそれぞれ実行する処理部(41,402,406)と、
前記複数の変数のうち必要な変数を指定した第1読出指示を前記処理部(41,402,406)に出力し、前記処理部(41,402,406)から受けた当該変数の値を用いて前記タスクを実行するタスク実行部(42,402,406)とを備え、
前記処理部(41,402,406)は、前記書込指示を受けると、前記指定された変数の値を示すデータを、前記メモリ(404,408)における、前記指定された変数に対応するN個の領域の各々に書き込み、
Nは3以上の整数であり、
前記処理部(41,402,406)は、前記読出指示を受けると、
前記メモリ(404,408)における、前記指定された変数に対応する前記N個の領域の各々からデータを読み出し、前記N個の領域からそれぞれ読み出したデータを互いに照合し、
前記N個の領域からそれぞれ読み出したデータの全てが一致することに応じて、前記読出指示の出力元に前記N個の領域のいずれかから読み出したデータで示される値を送り、
前記N個の領域のうち1個の領域を除いたN-1個の領域からそれぞれ読み出したデータが一致することに応じて、前記N-1個の領域から読み出したデータと一致するように前記1個の領域のデータを書き換えるとともに、前記読出指示の出力元に前記N-1個の領域から読み出したデータで示される値を送り、
前記データ処理装置(400)は、さらに、
前記タスク実行部(42,402,406)が前記第1読出指示を出力するタイミングと異なるタイミングにおいて、前記複数の変数のうちの少なくとも1つを指定したダミーの第2読出指示を前記処理部(41,402,406)に出力するダミー指示部(43,43a,402,406)を備える、データ処理装置(400,400b)。
(構成2)
前記第2読出指示は、前記複数の変数の全てを指定し、
前記ダミー指示部(43,402,406)は、予め定められた周期ごとに前記第2読出指示を前記処理部(41,402,406)に出力する、構成1に記載のデータ処理装置(400,400b)。
前記第2読出指示は、前記複数の変数の全てを指定し、
前記ダミー指示部(43,402,406)は、予め定められた周期ごとに前記第2読出指示を前記処理部(41,402,406)に出力する、構成1に記載のデータ処理装置(400,400b)。
(構成3)
前記複数の変数は、M個のグループに分割され、
Mは2以上の整数であり、
前記ダミー指示部(43,402,406)は、
前記M個のグループの各々について、当該グループに属する変数を指定した前記第2読出指示を予め定められた周期ごとに前記処理部(41,402,406)に出力し、
前記M個のグループごとの前記第2読出指示の出力タイミングを、前記予め定められた周期の1/Mの周期分だけ順にシフトさせる、構成1に記載のデータ処理装置(400,400b)。
前記複数の変数は、M個のグループに分割され、
Mは2以上の整数であり、
前記ダミー指示部(43,402,406)は、
前記M個のグループの各々について、当該グループに属する変数を指定した前記第2読出指示を予め定められた周期ごとに前記処理部(41,402,406)に出力し、
前記M個のグループごとの前記第2読出指示の出力タイミングを、前記予め定められた周期の1/Mの周期分だけ順にシフトさせる、構成1に記載のデータ処理装置(400,400b)。
(構成4)
前記ダミー指示部(43a,402,406)は、
前記複数の変数の各々について、前記処理部が書き込みまたは読み出しを実行した最新時刻を管理し、
前記最新時刻からの経過時間が予め定められた期間だけ経過した変数を指定した前記第2読出指示を前記処理部(41,402,406)に出力する、構成1に記載のデータ処理装置(400,400b)。
前記ダミー指示部(43a,402,406)は、
前記複数の変数の各々について、前記処理部が書き込みまたは読み出しを実行した最新時刻を管理し、
前記最新時刻からの経過時間が予め定められた期間だけ経過した変数を指定した前記第2読出指示を前記処理部(41,402,406)に出力する、構成1に記載のデータ処理装置(400,400b)。
(構成5)
前記タスクはファクトリオートメーションに関連する、構成1から4のいずれかに記載のデータ処理装置(400,400b)。
前記タスクはファクトリオートメーションに関連する、構成1から4のいずれかに記載のデータ処理装置(400,400b)。
(構成6)
データ処理装置(400,400b)の制御方法であって、
前記データ処理装置(400,400b)は、
タスクの実行に使用される複数の変数を記憶するメモリ(404,408)と、
書込指示および読出指示を受けて、前記メモリに対して前記複数の変数のうち指定された変数の書き込みおよび読み出しをそれぞれ実行する処理部(41,402,406)とを含み、
前記処理部(41,402,406)は、前記書込指示を受けると、前記指定された変数の値を示すデータを、前記メモリにおける、前記指定された変数に対応するN個の領域の各々に書き込み、
Nは3以上の整数であり、
前記処理部(41,402,406)は、前記読出指示を受けると、
前記メモリ(404,408)における、前記指定された変数に対応する前記N個の領域の各々からデータを読み出し、前記N個の領域からそれぞれ読み出したデータを互いに照合し、
前記N個の領域からそれぞれ読み出したデータの全てが一致することに応じて、前記読出指示の出力元に前記N個の領域から読み出したデータで示される値を送り、
前記N個の領域のうち1個の領域を除いたN-1個の領域からそれぞれ読み出したデータが一致することに応じて、前記N-1個の領域から読み出したデータと一致するように前記1個の領域のデータを書き換えるとともに、前記読出指示の出力元に前記N-1個の領域から読み出したデータで示される値を送り、
前記制御方法は、
前記複数の変数のうち必要な変数を指定した第1読出指示を前記処理部(41,402,406)に出力し、前記処理部(41,402,406)から受けた当該変数の値を用いて前記タスクを実行するステップと、
前記第1読出指示が出力されるタイミングと異なるタイミングにおいて、前記複数の変数のうちの少なくとも1つを指定したダミーの第2読出指示を前記処理部(41,402,406)に出力するステップとを備える、制御方法。
データ処理装置(400,400b)の制御方法であって、
前記データ処理装置(400,400b)は、
タスクの実行に使用される複数の変数を記憶するメモリ(404,408)と、
書込指示および読出指示を受けて、前記メモリに対して前記複数の変数のうち指定された変数の書き込みおよび読み出しをそれぞれ実行する処理部(41,402,406)とを含み、
前記処理部(41,402,406)は、前記書込指示を受けると、前記指定された変数の値を示すデータを、前記メモリにおける、前記指定された変数に対応するN個の領域の各々に書き込み、
Nは3以上の整数であり、
前記処理部(41,402,406)は、前記読出指示を受けると、
前記メモリ(404,408)における、前記指定された変数に対応する前記N個の領域の各々からデータを読み出し、前記N個の領域からそれぞれ読み出したデータを互いに照合し、
前記N個の領域からそれぞれ読み出したデータの全てが一致することに応じて、前記読出指示の出力元に前記N個の領域から読み出したデータで示される値を送り、
前記N個の領域のうち1個の領域を除いたN-1個の領域からそれぞれ読み出したデータが一致することに応じて、前記N-1個の領域から読み出したデータと一致するように前記1個の領域のデータを書き換えるとともに、前記読出指示の出力元に前記N-1個の領域から読み出したデータで示される値を送り、
前記制御方法は、
前記複数の変数のうち必要な変数を指定した第1読出指示を前記処理部(41,402,406)に出力し、前記処理部(41,402,406)から受けた当該変数の値を用いて前記タスクを実行するステップと、
前記第1読出指示が出力されるタイミングと異なるタイミングにおいて、前記複数の変数のうちの少なくとも1つを指定したダミーの第2読出指示を前記処理部(41,402,406)に出力するステップとを備える、制御方法。
(構成7)
構成6に記載の制御方法をコンピュータに実行させるプログラム。
構成6に記載の制御方法をコンピュータに実行させるプログラム。
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 制御システム、2 フィールドネットワーク、40A,40B チャンネル回路、41 書込読出処理部、42 タスク実行部、43,43a ダミー指示部、44 変数管理テーブル、45,45a 変数リスト、100 標準PLC、102,202,302,402,406 プロセッサ、104,204,304,404,408 メインメモリ、108,308 フィールドネットワークコントローラ、110,210,310,410 ストレージ、116,216,316,412 ローカルバスコントローラ、118,218,318,418 プロセッサバス、200 安全PLC、300 カプラ、400,400b 安全IOユニット、404a,404b,404c 領域、416 安全IOモジュール、420 実行可能プログラム、422 ライブラリ、424 ダミー読出プログラム、1102,2102,3102 システムプログラム、1104 標準制御プログラム、1106,2106,3106 設定情報、2104 安全プログラム、G1~GM グループ。
Claims (7)
- データ処理装置であって、
タスクの実行に使用される複数の変数を記憶するメモリと、
書込指示および読出指示を受けて、前記メモリに対して前記複数の変数のうち指定された変数の書き込みおよび読み出しをそれぞれ実行する処理部と、
前記複数の変数のうち必要な変数を指定した第1読出指示を前記処理部に出力し、前記処理部から受けた当該変数の値を用いて前記タスクを実行するタスク実行部とを備え、
前記処理部は、前記書込指示を受けると、前記指定された変数の値を示すデータを、前記メモリにおける、前記指定された変数に対応するN個の領域の各々に書き込み、
Nは3以上の整数であり、
前記処理部は、前記読出指示を受けると、
前記メモリにおける、前記指定された変数に対応する前記N個の領域の各々からデータを読み出し、前記N個の領域からそれぞれ読み出したデータを互いに照合し、
前記N個の領域からそれぞれ読み出したデータの全てが一致することに応じて、前記読出指示の出力元に前記N個の領域のいずれかから読み出したデータで示される値を送り、
前記N個の領域のうち1個の領域を除いたN-1個の領域からそれぞれ読み出したデータが一致することに応じて、前記N-1個の領域から読み出したデータと一致するように前記1個の領域のデータを書き換えるとともに、前記読出指示の出力元に前記N-1個の領域から読み出したデータで示される値を送り、
前記データ処理装置は、さらに、
前記タスク実行部が前記第1読出指示を出力するタイミングと異なるタイミングにおいて、前記複数の変数のうちの少なくとも1つを指定したダミーの第2読出指示を前記処理部に出力するダミー指示部を備える、データ処理装置。 - 前記第2読出指示は、前記複数の変数の全てを指定し、
前記ダミー指示部は、予め定められた周期ごとに前記第2読出指示を前記処理部に出力する、請求項1に記載のデータ処理装置。 - 前記複数の変数は、M個のグループに分割され、
Mは2以上の整数であり、
前記ダミー指示部は、
前記M個のグループの各々について、当該グループに属する変数を指定した前記第2読出指示を予め定められた周期ごとに前記処理部に出力し、
前記M個のグループごとの前記第2読出指示の出力タイミングを、前記予め定められた周期の1/Mの周期分だけ順にシフトさせる、請求項1に記載のデータ処理装置。 - 前記ダミー指示部は、
前記複数の変数の各々について、前記処理部が書き込みまたは読み出しを実行した最新時刻を管理し、
前記最新時刻からの経過時間が予め定められた期間だけ経過した変数を指定した前記第2読出指示を前記処理部に出力する、請求項1に記載のデータ処理装置。 - 前記タスクはファクトリオートメーションに関連する、請求項1から4のいずれか1項に記載のデータ処理装置。
- データ処理装置の制御方法であって、
前記データ処理装置は、
タスクの実行に使用される複数の変数を記憶するメモリと、
書込指示および読出指示を受けて、前記メモリに対して前記複数の変数のうち指定された変数の書き込みおよび読み出しをそれぞれ実行する処理部とを含み、
前記処理部は、前記書込指示を受けると、前記指定された変数の値を示すデータを、前記メモリにおける、前記指定された変数に対応するN個の領域の各々に書き込み、
Nは3以上の整数であり、
前記処理部は、前記読出指示を受けると、
前記メモリにおける、前記指定された変数に対応する前記N個の領域の各々からデータを読み出し、前記N個の領域からそれぞれ読み出したデータを互いに照合し、
前記N個の領域からそれぞれ読み出したデータの全てが一致することに応じて、前記読出指示の出力元に前記N個の領域から読み出したデータで示される値を送り、
前記N個の領域のうち1個の領域を除いたN-1個の領域からそれぞれ読み出したデータが一致することに応じて、前記N-1個の領域から読み出したデータと一致するように前記1個の領域のデータを書き換えるとともに、前記読出指示の出力元に前記N-1個の領域から読み出したデータで示される値を送り、
前記制御方法は、
前記複数の変数のうち必要な変数を指定した第1読出指示を前記処理部に出力し、前記処理部から受けた当該変数の値を用いて前記タスクを実行するステップと、
前記第1読出指示が出力されるタイミングと異なるタイミングにおいて、前記複数の変数のうちの少なくとも1つを指定したダミーの第2読出指示を前記処理部に出力するステップとを備える、制御方法。 - 請求項6に記載の制御方法をコンピュータに実行させるプログラム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020021549A JP6733843B1 (ja) | 2020-02-12 | 2020-02-12 | データ処理装置、制御方法およびプログラム |
JP2020-021549 | 2020-02-12 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2021161549A1 true WO2021161549A1 (ja) | 2021-08-19 |
Family
ID=71892488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2020/015664 WO2021161549A1 (ja) | 2020-02-12 | 2020-04-07 | データ処理装置、制御方法およびプログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP6733843B1 (ja) |
WO (1) | WO2021161549A1 (ja) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005301671A (ja) * | 2004-04-12 | 2005-10-27 | Denso Corp | データ修復装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3235785B2 (ja) * | 1998-04-15 | 2001-12-04 | 日本電気株式会社 | 二重化情報処理装置 |
JP4374476B2 (ja) * | 2004-05-24 | 2009-12-02 | 独立行政法人科学技術振興機構 | キャッシュ・メモリ及びその制御方法 |
JP2007018414A (ja) * | 2005-07-11 | 2007-01-25 | Hitachi Ltd | メモリビットエラーの訂正機能を有する制御装置 |
-
2020
- 2020-02-12 JP JP2020021549A patent/JP6733843B1/ja active Active
- 2020-04-07 WO PCT/JP2020/015664 patent/WO2021161549A1/ja active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005301671A (ja) * | 2004-04-12 | 2005-10-27 | Denso Corp | データ修復装置 |
Also Published As
Publication number | Publication date |
---|---|
JP6733843B1 (ja) | 2020-08-05 |
JP2021128420A (ja) | 2021-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4905196A (en) | Method and storage device for saving the computer status during interrupt | |
JP5911922B2 (ja) | 安全関連制御ユニットおよび自動化設備の制御方法 | |
JP2007511806A (ja) | 技術的装置を制御するための冗長性自動化システム及びその作動方法 | |
WO2021161549A1 (ja) | データ処理装置、制御方法およびプログラム | |
WO2021157103A1 (ja) | 情報処理装置、制御方法およびプログラム | |
CN112783117B (zh) | 一种安全控制应用与常规控制应用间数据隔离的方法及装置 | |
JP6721140B1 (ja) | データ処理装置、データ処理方法およびプログラム | |
JPH0816328A (ja) | ディスクアレイシステム | |
WO2022185582A1 (ja) | データ処理装置、データ処理方法およびプログラム | |
JP7419956B2 (ja) | 情報処理装置、情報処理方法およびプログラム | |
JPH0290254A (ja) | データ入出力システム | |
WO2015011792A1 (ja) | フィールドプログラマブルゲートアレイおよび制御装置 | |
JP7554924B2 (ja) | 保安装置および保安方法 | |
RU66560U1 (ru) | Устройство оперативного управления | |
JP7538021B2 (ja) | Plc、及びplcシステム | |
JPH11338712A (ja) | 割込順序保存回路 | |
JP3068713B2 (ja) | 拡張記憶装置の保守制御装置 | |
JPS58125154A (ja) | 状態履歴記憶方式 | |
JPS59111501A (ja) | シ−ケンスコントロ−ラ | |
KR101679936B1 (ko) | 에너지 및 공정 제어를 위한 이중화된 산업용 제어 시스템 및 그 제어 방법 | |
JPH02220159A (ja) | アダプタ制御方式 | |
TW202001543A (zh) | 影像處理電路及其備份/還原方法 | |
JPH03291701A (ja) | プログラマブルコントローラ | |
JPH0535615A (ja) | 計算機システムのデータ保存復元装置 | |
US20020089772A1 (en) | Automation system with a work drive unit |
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: 20918149 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 20918149 Country of ref document: EP Kind code of ref document: A1 |