WO2023275942A1 - 通信周期決定装置、通信周期決定方法および通信周期決定プログラム - Google Patents
通信周期決定装置、通信周期決定方法および通信周期決定プログラム Download PDFInfo
- Publication number
- WO2023275942A1 WO2023275942A1 PCT/JP2021/024381 JP2021024381W WO2023275942A1 WO 2023275942 A1 WO2023275942 A1 WO 2023275942A1 JP 2021024381 W JP2021024381 W JP 2021024381W WO 2023275942 A1 WO2023275942 A1 WO 2023275942A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- control program
- variable
- communication cycle
- input
- branch
- Prior art date
Links
- 238000004891 communication Methods 0.000 title claims abstract description 188
- 238000000034 method Methods 0.000 title claims description 80
- 238000000605 extraction Methods 0.000 claims abstract description 27
- 239000000284 extract Substances 0.000 claims abstract description 5
- 230000001174 ascending effect Effects 0.000 claims 1
- 230000000737 periodic effect Effects 0.000 description 17
- 230000006870 function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 239000013589 supplement Substances 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000001502 supplementing effect Effects 0.000 description 2
- 240000008168 Ficus benjamina Species 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0426—Programming the control sequence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
Definitions
- the present disclosure relates to technology for determining the communication cycle of equipment controlled by a control program.
- a control system generally includes a control device and a target device.
- the controller executes a control program.
- the control device and target equipment are connected by an FA network.
- FA is an abbreviation for Factory Automation.
- Target devices include, for example, remote input devices and remote output devices.
- a remote input device inputs the state of the switch or the state of the sensor to the controller.
- a remote output device drives the solenoid and lamp according to the output of the control device.
- remote input devices and remote output devices will be collectively referred to as remote input/output devices if there is no problem.
- the control system also includes a setting device.
- the setting device sets, for example, a control program or information about the operation of the FA network to the control device. Information is entered by the user.
- a setting device is optionally connected to the control device.
- a control program is a program in which a control operation desired by a user is described.
- the control program includes a sequence of instructions that specify the target of processing, the output destination of the processing result, and the content of the processing.
- a control device is given an I/O variable list along with a control program.
- I/O is an abbreviation for input/output.
- the I/O variables are variables used within the control program, and the I/O variables correspond to remote input/output devices.
- the I/O variable list describes an I/O variable and a corresponding remote input/output device for each I/O variable.
- Some FA networks have a periodic communication function using time-division communication technology.
- the communication band of the network is time-divided, a communication cycle time frame having a predetermined time length is provided, and communication of predetermined contents is performed.
- periodic communication is not performed, other types of communication can utilize the network.
- the values of I/O variables are updated using periodic communication.
- Periodic communication is performed independently of execution of the control program.
- input data obtained from a remote input device is stored in a temporary storage device inside the control device, and the value of the input data is referenced by the control program as the value of an I/O variable.
- the values of the I/O variables manipulated by the control program are stored in a temporary storage device and transmitted to the remote output device by periodic communication.
- the control program does not refer to the input data.
- an event occurs in which output data not manipulated by the control program is transmitted to the remote output device through periodic communication. In such a case, there is no problem in control, but network bandwidth is wasted.
- the execution cycle of the control program is set in accordance with the communication cycle.
- Patent Document 1 discloses a servo system.
- a host device and a plurality of servo amplifiers are connected by synchronous serial communication means.
- the synchronous serial communication means data exchange regarding operation commands and the like is performed at a constant communication cycle.
- the host device plays the role of a control device. Then, the period of calculations executed in the higher-level device is synchronized with 1/n times (n is an integer) the communication period.
- the control program is generally repeatedly executed at regular intervals.
- a control program may include processing that is executed each time the control program is executed and processing that is executed only once out of several executions of the control program. If an appropriate communication cycle is set for the device corresponding to the I/O variable according to the execution frequency of processing for the I/O variable in the control program, the amount of data exchanged by fixed cycle communication can be reduced. be. However, it is a heavy burden for the user to check the execution frequency of processing for the I/O variable and determine the appropriate communication cycle for the device corresponding to the I/O variable.
- An object of the present disclosure is to obtain an appropriate communication cycle for a target device that is accessed once while a control program is executed multiple times.
- the communication cycle determination device of the present disclosure is a counter variable search unit that finds a counter variable for counting the number of executions of the control program from the control program for controlling one or more target devices; a remainder operation search unit for finding, from the control program, a remainder operation in which the counter variable is the dividend and the constant is the divisor; a branch instruction retrieving unit for retrieving from the control program a conditional branch instruction whose branch condition is a match between the remainder of the remainder operation and a constant; an input/output variable extraction unit for extracting input/output variables from the branch destination block of the conditional branch instruction; a target device identification unit that identifies a target device to which the value of the input/output variable extracted from the one or more target devices is input/output; When the extracted input/output variable is accessed only in one branch destination block, the time obtained by multiplying the execution cycle of the control program by the divisor of the remainder operation is determined as the communication cycle of the specified target device. and a communication cycle determination unit.
- FIG. 1 is a configuration diagram of a control system 200 according to Embodiment 1.
- FIG. 1 is a configuration diagram of a communication cycle determination device 100 according to Embodiment 1;
- FIG. 4 is a flowchart of a communication cycle determination method according to Embodiment 1; 4 shows an example of a control program 191 according to the first embodiment;
- FIG. 4 shows an example of an input/output variable list 192 according to the first embodiment;
- FIG. 4 is a flowchart of step S120 in Embodiment 1; 4 is a flowchart of step S120 in Embodiment 1; 4 shows an example of a counter variable list 193 according to the first embodiment;
- FIG. 1 is a configuration diagram of a control system 200 according to Embodiment 1.
- FIG. 1 is a configuration diagram of a communication cycle determination device 100 according to Embodiment 1;
- FIG. 4 is a flowchart of a communication cycle determination method according to Embodiment 1; 4 shows an example of a
- FIG. 4 is a flowchart of step S130 in Embodiment 1; 4 shows an example of a surplus variable list 194 according to Embodiment 1.
- FIG. 4 is a flowchart of step S140 in Embodiment 1; 4 is a flowchart of step S140 in Embodiment 1; 4 shows an example of a surplus branch block list 195 according to the first embodiment;
- FIG. 4 is a flowchart of step S150 in Embodiment 1; 4 is a flowchart of step S150 in Embodiment 1; 4 shows an example of a surplus branch access destination list 196 according to the first embodiment;
- FIG. 4 is a diagram for explaining fixed-cycle communication according to Embodiment 1; FIG.
- FIG. 4 is a diagram for explaining fixed-cycle communication according to Embodiment 1;
- FIG. 4 is a diagram for supplementing the control program according to the first embodiment;
- FIG. 4 is a diagram for supplementing the control program according to the first embodiment;
- FIG. 10 is a flowchart of a communication cycle determination method according to Embodiment 2;
- FIG. 11 shows an example of a designated variable list 197 according to Embodiment 3;
- Embodiment 1 The control system 200 will be described based on FIGS. 1 to 20.
- FIG. 1 A block diagram illustrating an exemplary computing environment in accordance with the present disclosure.
- control system 200 *** Configuration description *** The configuration of the control system 200 will be described based on FIG. A specific example of control system 200 is factory automation (FA).
- FA factory automation
- the control system 200 includes a control device 210 , one or more target devices 220 and a setting device 230 .
- the setting device 230 and the control device 210 are connected by the network 201 .
- a control device 210 and one or more target devices 220 are connected by a network 202 .
- a network 202 is a communication line that employs a time division method. Real-time is guaranteed between the control device 210 and one or more target devices 220 .
- the control device 210 and two target devices (220A, 220B) are connected in a daisy chain fashion, but the control device 210 and one or more target devices 220 may be connected in other ways, such as tree or star. It may be connected in any form.
- a sensor 221 , a switch 222 , a lamp 223 and a solenoid 224 are connected to one target device 220 .
- the control device 210 is a computer equipped with hardware such as a processor, memory, auxiliary storage device, communication device, and input/output interface.
- the controller 210 controls one or more target devices 220 by executing control programs according to operating parameters.
- Each of the one or more target devices 220 is a device controlled by the control device 210 .
- the target device 220A is a device called a remote input device
- the target device 220B is a device called a remote output device.
- the target device 220 ⁇ /b>A acquires state data indicating the state from each of the sensor 221 and the switch 222 and inputs the acquired state data to the control device 210 .
- Target device 220B drives lamp 223 and solenoid 224 according to command data input from control device 210 .
- the setting device 230 is a device for setting control programs and operating parameters in the control device 210 . Specifically, the setting device 230 functions as the communication cycle determination device 100 . The communication cycle determination device 100 determines communication cycles for each of one or more target devices 220 . The communication cycle is one of the operating parameters.
- the configuration of the communication cycle determination device 100 will be described based on FIG.
- the communication cycle determination device 100 is a computer having hardware such as a processor 101 , a memory 102 , an auxiliary storage device 103 , a communication device 104 and an input/output interface 105 . These pieces of hardware are connected to each other via signal lines.
- the processor 101 is an IC that performs arithmetic processing and controls other hardware.
- processor 101 is a CPU.
- IC is an abbreviation for Integrated Circuit.
- CPU is an abbreviation for Central Processing Unit.
- Memory 102 is a volatile or non-volatile storage device. Memory 102 is also referred to as main storage or main memory. For example, memory 102 is RAM. The data stored in the memory 102 is saved in the auxiliary storage device 103 as required. RAM is an abbreviation for Random Access Memory.
- Auxiliary storage device 103 is a non-volatile storage device.
- the auxiliary storage device 103 is ROM, HDD or flash memory. Data stored in the auxiliary storage device 103 is loaded into the memory 102 as required.
- ROM is an abbreviation for Read Only Memory.
- HDD is an abbreviation for Hard Disk Drive.
- Communication device 104 is a receiver and transmitter.
- communication device 104 is a communication chip or NIC.
- Communication of the communication cycle determination device 100 is performed using the communication device 104 .
- NIC is an abbreviation for Network Interface Card.
- the input/output interface 105 is a port to which an input device and an output device are connected.
- the input/output interface 105 is a USB terminal
- the input device is a keyboard and mouse
- the output device is a display.
- Input/output of the communication cycle determination device 100 is performed using the input/output interface 105 .
- USB is an abbreviation for Universal Serial Bus.
- the processor 101 includes elements such as a reception unit 110 , a determination unit 120 and a setting unit 130 .
- the determination unit 120 includes elements such as a counter variable search unit 121 , a remainder operation search unit 122 , a branch instruction search unit 123 , an input/output variable extraction unit 124 , a target device identification unit 125 and a communication cycle determination unit 126 . These elements are implemented in software.
- the auxiliary storage device 103 stores a communication cycle determination program for causing the computer to function as a reception unit 110 , a determination unit 120 and a setting unit 130 .
- the communication cycle determination program is loaded into memory 102 and executed by processor 101 .
- the auxiliary storage device 103 further stores an OS. At least part of the OS is loaded into memory 102 and executed by processor 101 .
- the processor 101 executes the communication cycle determination program while executing the OS.
- OS is an abbreviation for Operating System.
- the input/output data of the communication cycle determination program are stored in the storage unit 190 .
- Memory 102 functions as storage unit 190 .
- a storage device such as the auxiliary storage device 103 , a register within the processor 101 and a cache memory within the processor 101 may function as the storage unit 190 instead of or together with the memory 102 .
- the communication cycle determination device 100 may include multiple processors that substitute for the processor 101 .
- the communication cycle determination program can be recorded (stored) in a computer-readable manner on a non-volatile recording medium such as an optical disc or flash memory.
- the operation procedure of the communication cycle determination device 100 corresponds to the communication cycle determination method. Further, the procedure of operation of the communication cycle determination device 100 corresponds to the procedure of processing by the communication cycle determination program.
- step S ⁇ b>110 the receiving unit 110 receives the control program 191 and the input/output variable list 192 .
- a user inputs the control program 191 to the communication cycle determination device 100, and the receiving unit 110 receives the input control program 191.
- FIG. 1 A communication cycle determination method will be described based on FIG.
- step S ⁇ b>110 the receiving unit 110 receives the control program 191 and the input/output variable list 192 .
- the control program 191 has the following features. (1) The control program 191 is written without violating grammar and rules. (2) The execution cycle of the control program 191 is equal to the basic communication cycle. A basic communication cycle is called a “fixed-cycle communication cycle” and is represented by “T”. (3) The control program 191 does not contain an infinite loop inside. This feature (3) is related to feature (2). (4) In the control program 191, a branch consists of a "branch instruction", a "start instruction” and an "end instruction". A branch instruction is an instruction for determining whether a branch condition is met. A start instruction indicates the start of a branch destination block. The end instruction means the end of the branch destination block. (5) The control program 191 sequentially describes one or more instructions. Therefore, the “nth instruction” uniquely identifies one place in the control program 191 . "n” is a positive integer.
- the input/output variable list 192 indicates the target device 220 corresponding to each input/output variable.
- the value of the input/output variable is input/output to/from the target device 220 corresponding to the input/output variable.
- FIG. 4 shows an example of the control program 191.
- the control program 191 includes a sequence of instructions that specify the target of processing, the output destination of the processing result, and the content of the processing.
- the input/output variable list 192 indicates a set of an input/output variable, a target device 220, and a variable type for each input/output variable.
- the column of the target device 220 indicates the name of the input/output interface to which the input/output variable value is input in addition to the name of the target device 220 .
- the variable type is the type of input/output variable (input or output).
- step S ⁇ b>120 the counter variable search unit 121 finds counter variables in the control program 191 .
- a counter variable is a variable for counting the number of times the control program 191 is executed.
- step S1211 the counter variable search unit 121 sets the initial value 1 to the temporary variable i and the initial value 0 to the temporary variable f.
- the counter variable search unit 121 uses the temporary variable f to determine whether the i-th instruction in the control program 191 is an instruction to be executed only once.
- a start branch instruction and an end branch instruction are not instructions that are executed only once.
- step S ⁇ b>1212 the counter variable search unit 121 selects the i-th instruction from the control program 191 . Then, the counter variable search unit 121 determines whether the i-th instruction is a branch start instruction. That is, the counter variable search unit 121 determines whether the i-th instruction means the start of the branch destination block. If the i-th instruction is a branch start instruction, the process proceeds to step S1213. If the i-th instruction is not a branch start instruction, the process proceeds to step S1214.
- step S1213 the counter variable search unit 121 adds 1 to the value of the temporary variable f. After step S1213, the process proceeds to step S1214.
- step S1214 the counter variable search unit 121 determines whether the i-th instruction is a branch end instruction. That is, the counter variable search unit 121 determines whether the i-th instruction means the end of the branch destination block. If the i-th instruction is a branch end instruction, the process proceeds to step S1215. If the i-th instruction is not an end branch instruction, the process proceeds to step S1216.
- step S1215 the counter variable search unit 121 subtracts 1 from the value of the temporary variable f. After step S1215, the process proceeds to step S1216.
- step S1216 the counter variable search unit 121 determines whether the value of the temporary variable f is 0. If the value of temporary variable f is 0, the process proceeds to step S1217. If the value of temporary variable f is not 0, the process proceeds to step S1241.
- step S1217 the counter variable search unit 121 determines whether the i-th instruction is an addition instruction. If the i-th instruction is an addition instruction, processing proceeds to step S1218. If the i-th instruction is not an add instruction, the process proceeds to step S1241.
- step S1218 the counter variable search unit 121 determines whether the i-th instruction is an instruction to add the variable X and a constant.
- Variable X is an arbitrary variable. If the i-th instruction is an instruction to add the variable X and the constant, the process proceeds to step S1221. If the i-th instruction is not an instruction to add the variable X and the constant, the process proceeds to step S1241.
- step S1221 the counter variable search unit 121 sets the initial value 1 to the temporary variable j.
- step S1222 the counter variable search unit 121 determines whether the j-th instruction changes the value of the variable X. If the j-th instruction changes the value of variable X, processing proceeds to step S1223. If the jth instruction does not change the value of variable X, processing proceeds to step S1224.
- step S1223 the counter variable search unit 121 compares the value of the temporary variable j with the value of the temporary variable i. If the value of temporary variable j is equal to the value of temporary variable i, processing proceeds to step S1224. If the value of temporary variable j is different from the value of temporary variable i, the process proceeds to step S1241.
- step S ⁇ b>1224 the counter variable search unit 121 determines whether the j-th instruction is the last instruction of the control program 191 . If the j-th instruction is the last instruction of control program 191, the process proceeds to step S1231. If the jth instruction is not the last instruction of control program 191, the process proceeds to step S1225.
- step S1225 the counter variable search unit 121 adds 1 to the value of the temporary variable j. After step S1225, the process proceeds to step S1222.
- step S1231 the counter variable search unit 121 adds the variable X in the i-th instruction to the counter variable list 193 as a counter variable.
- FIG. 8 shows an example of the counter variable list 193.
- Counter variable list 193 indicates one or more counter variables.
- Each of "D1" and “D2" is a counter variable name.
- step S ⁇ b>1241 the counter variable search unit 121 determines whether the i-th instruction is the last instruction of the control program 191 . If the i-th instruction is the last instruction of control program 191, the process ends. If the i-th instruction is not the last instruction of control program 191, processing proceeds to 1242;
- step S1242 the counter variable search unit 121 adds 1 to the value of the temporary variable i. After step S1242, the process proceeds to step S1212.
- a counter variable list 193 is obtained through step S120. Note that if a variable for counting the number of executions of the control program 191 is defined in advance, the counter variable search unit 121 also adds that variable to the counter variable list 193 .
- step S ⁇ b>130 the remainder calculation search unit 122 finds the remainder calculation for the counter variable from the control program 191 .
- a modulo operation on a counter variable is a modulo operation where the counter variable is the dividend and the constant is the divisor.
- a remainder operation is an operation (instruction) for obtaining a remainder.
- step S130 The procedure of step S130 will be described based on FIG.
- step S131 the remainder calculation search unit 122 sets the initial value 1 to the temporary variable i.
- step S ⁇ b>132 the remainder calculation search unit 122 selects the i-th instruction from the control program 191 . Then, the remainder operation search unit 122 determines whether the i-th instruction is a remainder operation. If the i-th instruction is a remainder operation, the process proceeds to step S133. If the i-th instruction is not a remainder operation, the process proceeds to step S136.
- step S133 the remainder calculation search unit 122 determines whether the divisor P in the i-th instruction is a constant. If the divisor P in the i-th instruction is a constant, processing proceeds to step S134. If the divisor P in the i-th instruction is not a constant, processing proceeds to step S136.
- step S134 the remainder calculation search unit 122 determines whether the dividend in the i-th instruction is a counter variable. That is, the remainder operation search unit 122 determines whether the dividend in the i-th instruction is a variable indicated in the counter variable list 193 . If the dividend in the i-th instruction is a counter variable, processing proceeds to step S135. If the dividend in the i-th instruction is not a counter variable, processing proceeds to step S136.
- step S ⁇ b>135 the remainder operation search unit 122 adds information on the remainder operation, which is the i-th instruction, to the remainder variable list 194 .
- the remainder operation search unit 122 adds a set of a counter variable (dividend) name, a remainder variable name, a divisor, and an operation position to the remainder variable list 194 .
- the remainder variable is the variable to which the remainder is assigned.
- the calculation position is the position of the remainder calculation in the control program 191 .
- the value of temporary variable i is set as the calculation position.
- the remainder variable list 194 indicates a counter variable (dividend), a remainder variable, a divisor, and an operation position as information of the remainder calculation.
- step S ⁇ b>136 the remainder calculation search unit 122 determines whether the i-th instruction is the last instruction of the control program 191 . If the i-th instruction is the last instruction of control program 191, the process ends. If the i-th instruction is not the last instruction of the control program 191, the process proceeds to step S137.
- step S137 the remainder calculation search unit 122 adds 1 to the value of the temporary variable i. After step S137, the process proceeds to step S132.
- a surplus variable list 194 is obtained by step S130.
- step S ⁇ b>140 the branch instruction search unit 123 finds a conditional branch instruction for remainder from the control program 191 .
- the conditional branch instruction for the remainder is a conditional branch instruction for the remainder of the remainder calculation found in step S130, with the branch condition being that the remainder matches the constant.
- step S1411 the branch instruction search unit 123 sets the initial value 1 to the temporary variable i.
- step S ⁇ b>1412 the branch instruction search unit 123 acquires the i-th information from the remainder variable list 194 . Specifically, the branch instruction search unit 123 acquires the counter variable name (X), the remainder variable name (Y), the divisor P, and the calculation position J. FIG. Then, the branch instruction search unit 123 sets the calculation position J as an initial value to the temporary variable j.
- step S ⁇ b>1413 the branch instruction search unit 123 selects the j-th instruction from the control program 191 . Then, the branch instruction search unit 123 determines whether the j-th instruction is a conditional branch instruction. If the j-th instruction is a conditional branch instruction, processing proceeds to step S1414. If the j-th instruction is not a conditional branch instruction, the process proceeds to step S1451.
- step S1414 the branch instruction search unit 123 determines whether the branch condition in the j-th instruction is a match between the remainder variable Y and the constant N. If the branching condition in the jth instruction is a match between the remainder variable Y and the constant N, the process proceeds to step S1421. If the branch condition in the jth instruction is not a match between the remainder variable Y and the constant N, the process proceeds to step S1451.
- step S1421 the branch instruction search unit 123 adds 1 to the value of the temporary variable j.
- step S ⁇ b>1422 the branch instruction search unit 123 selects the j-th instruction from the control program 191 .
- the branch instruction search unit 123 determines whether the j-th instruction is the start instruction for the conditional branch instruction found in step S1413. That is, the branch instruction search unit 123 determines whether the j-th instruction means the start of the branch destination block. If the j-th instruction is the start instruction for the conditional branch instruction found in step S1413, the process proceeds to step S1431. If the j-th instruction is not the start instruction for the conditional branch instruction found in step S1413, the process proceeds to step S1421.
- step S1431 the branch instruction search unit 123 sets the value of the temporary variable j to the temporary variable k.
- step S1432 the branch instruction search unit 123 adds 1 to the value of the temporary variable j.
- step S ⁇ b>1433 the branch instruction search unit 123 selects the j-th instruction from the control program 191 .
- the branch instruction search unit 123 determines whether the j-th instruction is the end instruction for the conditional branch instruction found in step S1413. That is, the branch instruction search unit 123 determines whether the j-th instruction means the end of the branch destination block. If the j-th instruction is the end instruction for the conditional branch instruction found in step S1413, the process proceeds to step S1441. If the j-th instruction is not the end instruction for the conditional branch instruction found in step S1413, the process proceeds to step S1432.
- step S ⁇ b>1441 the branch instruction search unit 123 adds information on the surplus branch block to the surplus branch block list 195 .
- the remainder branch block is the branch block for the conditional branch instruction found in step S1413.
- the branch instruction search unit 123 extracts a set of a counter variable (dividend) name X, a remainder variable name Y, a divisor P, an operation position J, a constant N, a start position k, and an end position j as a remainder branch instruction. Add to block list 195.
- the constant N is called the comparison constant.
- the start position k is the start position of the branch destination block in the control program 191 .
- the end position j is the end position of the branch destination block in the control program 191 .
- the surplus branch block list 195 indicates, as surplus branch block information, a counter variable (dividend), a remainder variable, a divisor, an operation position, a comparison constant, a start position, and an end position.
- step S1451 the branch instruction search unit 123 adds 1 to the value of the temporary variable j.
- step S ⁇ b>1452 the branch instruction search unit 123 selects the j-th instruction from the control program 191 .
- the branch instruction search unit 123 determines whether the j-th instruction is the last instruction of the control program 191 . If the j-th instruction is the last instruction of control program 191, the process proceeds to step S1453. If the j-th instruction is not the last instruction of control program 191, the process proceeds to step S1413.
- step S ⁇ b>1453 the branch instruction search unit 123 determines whether the i-th information is the last information in the remainder variable list 194 . If the i-th information is the last information in the remainder variable list 194, the process ends. If the i-th information is not the last information in residual variable list 194, processing proceeds to step S1454.
- step S1454 the branch instruction search unit 123 adds 1 to the value of the temporary variable i. After step S1454, the process proceeds to step S1412.
- the surplus branch block list 195 is obtained by step S140.
- step S150 the input/output variable extraction unit 124 extracts input/output variables from the branch destination block of the conditional branch instruction. At this time, the input/output variable extraction unit 124 determines whether there is a jump instruction in the branch destination block. Then, if there is no jump instruction in the branch destination block, the input/output variable extraction unit 124 extracts the input/output variables.
- the target device identification unit 125 identifies the target device 220 corresponding to the extracted input/output variables.
- the specified target device 220 is the target device 220 to which the value of the extracted input/output variable is input/output.
- step S150 the procedure of step S150 is demonstrated.
- step S1511 the input/output variable extraction unit 124 sets the initial value 1 to the temporary variable i.
- step S ⁇ b>1512 the input/output variable extraction unit 124 acquires the i-th information from the residual branch block list 195 . Specifically, the input/output variable extraction unit 124 acquires the counter variable name (X), the constant N, the start position, and the end position. Then, the input/output variable extraction unit 124 sets the start position to the temporary variable k, and sets the end position to the temporary variable j.
- step S ⁇ b>1513 the input/output variable extraction unit 124 selects the k-th instruction from the control program 191 . Then, the input/output variable extraction unit 124 determines whether the k-th instruction is an instruction involving an execution instruction jump. If the kth instruction is an instruction with an execution instruction jump, the process proceeds to step S1551. If the kth instruction is not an instruction with an execution instruction jump, the process proceeds to step S1514.
- step S1514 the input/output variable extraction unit 124 adds 1 to the value of the temporary variable k.
- step S1515 the input/output variable extraction unit 124 compares the value of the temporary variable k with the value of the temporary variable j. If the value of temporary variable k is equal to the value of temporary variable j, processing proceeds to step S1521. If the value of temporary variable k is different from the value of temporary variable j, processing proceeds to step S1513.
- step S ⁇ b>1521 the input/output variable extraction unit 124 acquires the i-th start position from the residual branch block list 195 . Then, the input/output variable extraction unit 124 sets the i-th start position to the temporary variable k.
- step S ⁇ b>1522 the input/output variable extraction unit 124 selects the k-th instruction from the control program 191 . Then, the input/output variable extraction unit 124 determines whether the input/output variables indicated in the input/output variable list 192 are included as operands in the k-th instruction. If the input/output variable shown in input/output variable list 192 is included as an operand in the kth instruction, the process proceeds to step S1531. If the input/output variable shown in the input/output variable list 192 is not included as an operand in the kth instruction, the process proceeds to step S1541.
- the target device identification unit 125 refers to the input/output variable list 192 and identifies the target device 220 corresponding to the input/output variable in the k-th instruction. Then, the target device specifying unit 125 adds the information of the surplus branch access destination to the surplus branch access destination list 196 . Specifically, the target device identification unit 125 sets the name X of the counter variable (dividend), the name Y of the remainder variable, the divisor P, the calculation position J, the constant N, the start position k, the end position j, and the access destination. is added to the remainder branch access destination list 196 . Access destination means the name of the target device 220 corresponding to the input/output variable in the kth instruction.
- FIG. 16 shows the remainder branch access destination list 196 .
- a surplus branch access destination list 196 shows a counter variable (dividend), a remainder variable, a divisor, an operation position, a comparison constant, a start position, an end position, and an access destination as information of the surplus branch access destination.
- step S1541 the input/output variable extraction unit 124 adds 1 to the value of the temporary variable k.
- step S1542 the input/output variable extraction unit 124 compares the value of the temporary variable k with the value of the temporary variable j. If the value of temporary variable k is equal to the value of temporary variable j, processing proceeds to step S1551. If the value of temporary variable k is different from the value of temporary variable j, processing proceeds to step S1522.
- step S ⁇ b>1551 the input/output variable extraction unit 124 determines whether the i-th information is the last information in the remainder branch block list 195 . If the i-th information is the last information in the remainder branch block list 195, the process ends. If the i-th information is not the last information in remainder branch block list 195, processing proceeds to step S1552.
- step S1552 the input/output variable extraction unit 124 adds 1 to the value of the temporary variable i. After step S1552, the process proceeds to step S1512.
- the surplus branch access destination list 196 is obtained by step S150.
- step S ⁇ b>160 the communication cycle determination unit 126 determines the communication cycle of each target device 220 .
- the communication cycle determination unit 126 determines whether the input/output variables are accessed by only one branch destination block.
- the communication cycle determining unit 126 assigns the time obtained by multiplying the execution cycle of the control program 191 by the divisor of the remainder operation to correspond to the input/output variable.
- the communication cycle of the target device 220 is determined.
- the communication cycle determining unit 126 determines the communication cycle of the remaining target devices 220 to be the execution cycle of the control program 191 .
- the communication cycle determination unit 126 determines the communication cycle of each target device 220 as follows. "T" represents a basic fixed-cycle communication cycle.
- the fixed cycle communication cycle T is equal to the execution cycle of the control program 191 .
- the communication cycle determination unit 126 identifies the target device 220 indicated by only one piece of information in the residual branch access destination list 196 and acquires the divisor P from the information on the identified target device 220 .
- the communication cycle determination unit 126 determines the fixed cycle communication cycle of the specified target device 220 to be the value of “T ⁇ P”.
- the communication cycle determination unit 126 determines the fixed cycle communication cycle of the remaining target devices 220 to be "T".
- step S ⁇ b>170 the setting unit 130 sets the control program 191 and the communication cycle of each target device 220 to the control device 210 by communicating with the control device 210 .
- Embodiment 1 *** Effect of Embodiment 1 *** According to Embodiment 1, it is possible to obtain an appropriate communication cycle for the target device 220 that is accessed once while the control program 191 is executed P times.
- FIG. Some FA networks have a periodic communication function using time-division communication technology.
- the communication band of the network is time-divided, a communication cycle time frame having a predetermined time length is provided, and predetermined content is provided. communication is performed.
- periodic communication is not performed, other types of communication can utilize the network.
- the values of input/output variables are updated using periodic communication.
- Periodic communication is performed independently of execution of the control program (see FIG. 18).
- input data obtained from a remote input device is stored in the internal memory of the control device, and the value of the input data is referenced by the control program as the value of the input/output variable.
- the values of the input/output variables manipulated by the control program are stored in the memory and transmitted to the remote output device by periodic communication.
- the control program will be supplemented based on FIGS. 19 and 20.
- FIG. The control program is generally repeatedly executed at regular intervals.
- a control program may include processing that is executed each time the control program is executed and processing that is executed only once out of several executions of the control program.
- FIG. 19 shows an example of a flow chart of the control program.
- process A is always executed.
- process B(1) is executed only when the remainder when the value of the variable n is divided by P is 1.
- process B(2) is executed only when the remainder when the value of the variable n is divided by P is 2.
- the process B(P-1) is executed only when the remainder when the value of the variable n is divided by P is (P-1).
- the process B(P) is executed only when the remainder when the value of the variable n is divided by P is zero.
- the value of the variable n is incremented by 1 each time the control program is executed. In that case, each of the processes B(1) to B(P) is executed once every time the control program is executed P times.
- FIG. 20 shows an example of the configuration of the remote input/output device.
- Process A processes input/output variables of remote input/output device A.
- process B(1) processes input/output variables of remote input/output device B1
- process B(2) processes input/output variables of remote input/output device B(2)
- process B(P) Process input/output variables of remote input/output device B(P).
- the input/output variables of the remote input/output device A are referenced or manipulated by the process A.
- the input/output variables of the remote input/output device A must be updated each time the control program is executed.
- the input/output variables of the remote input/output devices B(1) to B(P) are referenced or manipulated by the processes B(1) to B(P).
- the input/output variables of the remote input/output devices B(1) to B(P) must be updated each time the control program is executed P times. That is, it can be said that the periodic communication period suitable for the remote input/output devices B(1) to B(P) is P times the periodic communication period suitable for the remote input/output device A. Therefore, if the communication cycle of the remote input/output devices B(1) to B(P) is set to P times the communication cycle of the remote input/output device A, the amount of data exchanged in fixed-cycle communication can be reduced.
- Embodiment 221 the main difference from the first embodiment is that the periodic communication cycle of the target device 220 indicated by the plurality of pieces of information in the remainder branch access destination list 196 is longer than the periodic communication cycle T. to explain.
- control system 200 and the configuration of communication cycle determination device 100 are the same as those in the first embodiment.
- Steps S210 to S250 are the same as steps S110 to S150 in the first embodiment.
- Step S260 is partially different from step S160 in the first embodiment.
- Step S270 is the same as step S170 in the first embodiment. Step S260 will be described below.
- step S ⁇ b>260 the communication cycle determination unit 126 determines the communication cycle of each target device 220 .
- the communication cycle determination unit 126 determines whether the input/output variables are accessed in two or more branch destination blocks.
- the communication cycle determination unit 126 determines the execution cycle of the control program 191, the divisor of the remainder calculation, and two variables corresponding to the two or more branch destination blocks. Based on two or more constants of the above branch conditions, the communication cycle of the target device 220 corresponding to the input/output variable is determined.
- the communication cycle determination unit 126 determines the communication cycle of each target device 220 as follows. "T" represents a basic fixed-cycle communication cycle.
- the fixed cycle communication cycle T is equal to the execution cycle of the control program 191 .
- the communication cycle determination unit 126 identifies the target device 220 indicated by only one piece of information in the residual branch access destination list 196 .
- the identified target device 220 is referred to as target device (1).
- the communication cycle determining unit 126 acquires the divisor P from the information on the target device (1).
- the communication cycle determination unit 126 determines the fixed cycle communication cycle of the target device (1) to be the value of “T ⁇ P”.
- the communication cycle determination unit 126 identifies the target device 220 indicated by a plurality of pieces of information in the residual branch access destination list 196 .
- the specified target device 220 is referred to as target device (2).
- the communication cycle determining unit 126 determines whether the plurality of residual variables indicated in the plurality of pieces of information of the target device (2) are the same.
- target device (2) is referred to as target device (2A).
- N For the target device (2A), there are k comparison constants N and the divisor is "P".
- the communication cycle determining unit 126 calculates all the elements R i of the sequence R for the elements S i of the sequence S based on k comparison constants (N 1 , N 2 , . is a positive integer. If all elements R i of the sequence R are positive integers, the target device (2A) is called target device (2B). The communication cycle determination unit 126 determines the fixed cycle communication cycle CC of the target device (2B) as follows.
- the communication cycle determination unit 126 determines the fixed cycle communication cycle of the remaining target devices 220 to be "T".
- Embodiment 2 *** Effect of Embodiment 2 ***
- the periodic communication cycle of the target device 220 described in only one line of the surplus branch access destination list 196 is determined.
- the fixed cycle communication cycle can be made longer than the execution cycle of the control program 191 for the target devices 220 listed in multiple lines of the remainder branch access destination list 196 .
- a fixed cycle communication cycle longer than the execution cycle of the control program 191 is determined for the target devices 220 listed in multiple lines of the remainder branch access destination list 196. can be done.
- Embodiment 3 A mode that considers variables for which constants are set will be described mainly with reference to FIGS. 22 to 24 for differences from the first and second embodiments.
- control system 200 is the same as the configuration in the first embodiment.
- the configuration of the communication cycle determination device 100 will be described with reference to FIG.
- the communication cycle determination device 100 further includes an editing section 140 .
- the communication cycle determination program also causes the computer to function as an editing unit 140 .
- receiving unit 110 receives designated variable list 197 in addition to control program 191 and input/output variable list 192 .
- the designated variable list 197 is a list of designated variables.
- a specified variable is a variable to which a constant is set and is specified by the user.
- FIG. 24 shows an example of the designated variable list 197. As shown in FIG.
- the designated variable list 197 indicates designated variables and constants for each designated variable.
- the communication cycle determination device 100 may have a graphical user interface for supporting the creation of the designated variable list 197.
- step S320 the editing unit 140 edits the control program 191 based on the designated variable list 197 . Specifically, the editing unit 140 finds each specified variable from the control program 191 and replaces each specified variable in the control program 191 with a constant.
- step S330 From step S330 to step S370, the edited control program 191 is used.
- Steps S330 to S380 are the same as steps S120 to S170 of the first embodiment or steps S220 to S270 of the second embodiment.
- Embodiment 4 A mode considering a branch instruction whose branch result is fixed will be described mainly with reference to FIGS. 25 to 28 for differences from the first and second embodiments.
- control system 200 is the same as the configuration in the first embodiment.
- the configuration of the communication cycle determination device 100 will be described based on FIG.
- the communication cycle determining device 100 further includes an editing section 150 .
- the communication cycle determination program also causes the computer to function as an editor 150 .
- control device 210 receives designated branch list 198 in addition to control program 191 and input/output variable list 192 .
- the directed branch list 198 is a list of directed branch instructions.
- a specified branch instruction is a branch instruction whose branch result is fixed, and is specified by the user.
- the directed branch list 198 indicates the branch instruction location and fixed branch outcome for each directed branch instruction.
- a branch instruction location is the location of the designated branch instruction in the control program 191 .
- a fixed branch outcome is a branch outcome that is fixed.
- the communication cycle determination device 100 may have a graphical user interface for supporting creation of the designated branch list 198.
- step S ⁇ b>420 the editing unit 150 edits the control program 191 based on the specified branch list 198 . Specifically, the editing unit 150 finds each specified branch instruction from the control program 191 and fixes and invalidates the branch result of each specified branch instruction in the control program 191 .
- step S430 to step S470 the edited control program 191 is used.
- Steps S430 to S480 are the same as steps S120 to S170 of the first embodiment or steps S220 to S270 of the second embodiment.
- Embodiment 4 may be combined with Embodiment 3. That is, the communication cycle determining apparatus 100 may include the editing section 140 and the editing section 150 and the control program 191 may be edited by the editing section 140 and the editing section 150 .
- the communication cycle determination device 100 has a processing circuit 109 .
- the processing circuit 109 is hardware that implements the reception unit 110 , the determination unit 120 , the setting unit 130 , the editing unit 140 , and the editing unit 150 .
- the processing circuit 109 may be dedicated hardware, or may be the processor 101 that executes a program stored in the memory 102 .
- processing circuitry 109 may be, for example, a single circuit, multiple circuits, a programmed processor, a parallel programmed processor, an ASIC, an FPGA, or a combination thereof.
- ASIC is an abbreviation for Application Specific Integrated Circuit.
- FPGA is an abbreviation for Field Programmable Gate Array.
- the communication cycle determination device 100 may include a plurality of processing circuits that substitute for the processing circuit 109.
- processing circuit 109 some functions may be implemented by dedicated hardware, and the remaining functions may be implemented by software or firmware.
- the functions of the communication cycle determination device 100 can be realized by hardware, software, firmware, or a combination thereof.
- the communication cycle determination device 100 may be realized by two or more devices.
- a “unit” that is an element of the communication cycle determination device 100 may be read as “processing”, “process”, “circuit” or “circuitry”.
- 100 communication cycle determination device 101 processor, 102 memory, 103 auxiliary storage device, 104 communication device, 105 input/output interface, 109 processing circuit, 110 reception unit, 120 determination unit, 121 counter variable search unit, 122 remainder calculation search unit, 123 branch instruction search unit, 124 input/output variable extraction unit, 125 target device identification unit, 126 communication cycle determination unit, 130 setting unit, 140 editing unit, 150 editing unit, 190 storage unit, 191 control program, 192 input/output variable list , 193 Counter variable list, 194 Remainder variable list, 195 Remainder branch block list, 196 Remainder branch access destination list, 197 Specified variable list, 198 Specified branch list, 200 Control system, 201 Network, 202 Network, 210 Control device, 220 Target Equipment, 221 sensor, 222 switch, 223 lamp, 224 solenoid, 230 setting device.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
Description
FAはファクトリーオートメーションの略称である。
リモート入力機器は、スイッチの状態またはセンサの状態を制御装置に入力する。
リモート出力機器は、制御機器の出力にしたがってソレノイドおよびランプを駆動する。
以下、差し支えない場合はリモート入力機器とリモート出力機器をまとめてリモート入出力機器と呼ぶ。
設定装置は、必要に応じ制御装置に接続される。
制御プログラムには、処理の対象、処理結果の出力先および処理の内容を指定する命令列が並ぶ。
制御機器には、制御プログラムとともにI/O変数リストが与えられる。I/Oは入出力の略称である。
I/O変数は制御プログラム内で使用される変数であり、I/O変数はリモート入出力機器と対応する。
I/O変数リストには、I/O変数ごとに、I/O変数と、対応するリモート入出力機器と、が記載される。
時分割通信技術を用いた定周期通信機能では、ネットワークの通信帯域が時分割され、あらかじめ決められた時間長を有する通信周期の時間枠が設けられ、あらかじめ決められた内容の通信が行われる。
定周期通信が行われないときは、他の種類の通信がネットワークを利用できる。
I/O変数の値は、定周期通信を用いて更新される。
定周期通信では、リモート入力機器から取得された入力データが制御装置の内部の一時記憶装置に保存され、その入力データの値が制御プログラムによってI/O変数の値として参照される。また、制御プログラムによって操作されたI/O変数の値は、一時記憶装置に保存され、定周期通信によってリモート出力機器へ送信される。
このような場合、制御に不具合は発生しないが、ネットワーク帯域を空費することになる。
このような場合、制御に不具合が発生する。
従来技術では、制御プログラムの実行周期が通信周期に合わせて設定されていた。
そのサーボシステムでは、上位装置と複数のサーボアンプが同期型シリアル通信手段で接続される。同期型シリアル通信手段では、一定の通信周期で動作指令などについてデータ交換が行われる。上位装置は制御装置の役割を果たす。そして、上位装置において実行される演算の周期が、通信周期の1/n倍(nは整数)に同期される。
制御プログラムには、制御プログラムが実行されるたびに実行される処理と、制御プログラムが何回か実行されるうちの1回のみ実行される処理と、が含まれる場合がある。
制御プログラム内のI/O変数に対する処理の実行頻度に応じて、I/O変数に対応する機器に対して適切な通信周期が設定されれば、定周期通信でやり取りされるデータ量が削減される。
しかし、I/O変数について処理の実行頻度を調べて、I/O変数に対応する機器に対して適切な通信周期を決定することは、ユーザにとって負担が大きい。
1つ以上の対象機器を制御するための制御プログラムから、前記制御プログラムの実行回数をカウントするためのカウンタ変数を見つけるカウンタ変数検索部と、
前記制御プログラムから、前記カウンタ変数が被除数であり定数が除数である剰余演算を見つける剰余演算検索部と、
前記制御プログラムから、前記剰余演算の剰余と定数の一致を分岐条件とする条件分岐命令を見つける分岐命令検索部と、
前記条件分岐命令の分岐先ブロックから入出力変数を抽出する入出力変数抽出部と、
前記1つ以上の対象機器のうち抽出された入出力変数の値が入出力される対象機器を特定する対象機器特定部と、
抽出された入出力変数が1つの分岐先ブロックのみでアクセスされる場合、前記制御プログラムの実行周期に前記剰余演算の除数を掛けて得られる時間を、特定された対象機器の通信周期に決定する通信周期決定部と、を備える。
制御システム200について、図1から図20に基づいて説明する。
図1に基づいて、制御システム200の構成を説明する。
制御システム200の具体例は、ファクトリーオートメーション(FA)である。
設定装置230と制御装置210は、ネットワーク201で接続される。
制御装置210と1つ以上の対象機器220は、ネットワーク202で接続される。ネットワーク202は、時分割方式を採用する通信回線である。制御装置210と1つ以上の対象機器220との間では、リアルタイム性が保証される。図1において、制御装置210と2つの対象機器(220A、220B)がデイジーチェーン型で接続されているが、制御装置210と1つ以上の対象機器220は、ツリー型またはスター型などの他の形態で接続されても構わない。
1つの対象機器220には、センサ221、スイッチ222、ランプ223およびソレノイド224などが接続される。
制御装置210は、動作パラメータにしたがって制御プログラムを実行することによって、1つ以上の対象機器220を制御する。
対象機器220Aは、センサ221とスイッチ222とのそれぞれから状態を示す状態データを取得し、取得した状態データを制御装置210に入力する。
対象機器220Bは、制御装置210から入力される指令データにしたがってランプ223とソレノイド224とのそれぞれを駆動する。
通信周期決定装置100は、1つ以上の対象機器220のそれぞれの通信周期を決定する。通信周期は、動作パラメータの一つである。
通信周期決定装置100は、プロセッサ101とメモリ102と補助記憶装置103と通信装置104と入出力インタフェース105といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
ICは、Integrated Circuitの略称である。
CPUは、Central Processing Unitの略称である。
RAMは、Random Access Memoryの略称である。
ROMは、Read Only Memoryの略称である。
HDDは、Hard Disk Driveの略称である。
NICは、Network Interface Cardの略称である。
USBは、Universal Serial Busの略称である。
補助記憶装置103には、さらに、OSが記憶されている。OSの少なくとも一部は、メモリ102にロードされて、プロセッサ101によって実行される。
プロセッサ101は、OSを実行しながら、通信周期決定プログラムを実行する。
OSは、Operating Systemの略称である。
メモリ102は記憶部190として機能する。但し、補助記憶装置103、プロセッサ101内のレジスタおよびプロセッサ101内のキャッシュメモリなどの記憶装置が、メモリ102の代わりに、又は、メモリ102と共に、記憶部190として機能してもよい。
通信周期決定装置100の動作の手順は通信周期決定方法に相当する。また、通信周期決定装置100の動作の手順は通信周期決定プログラムによる処理の手順に相当する。
ステップS110において、受付部110は、制御プログラム191と入出力変数リスト192とを受け付ける。
例えば、ユーザが制御プログラム191を通信周期決定装置100に入力し、受付部110が入力された制御プログラム191を受け付ける。
(1)制御プログラム191は、文法および規約に違反せずに記述されている。
(2)制御プログラム191の実行周期は、基本となる通信周期と等しい。基本となる通信周期を「定周期通信周期」と称し、「T」で表す。
(3)制御プログラム191は、内部に無限ループを含まない。この特徴(3)は特徴(2)に関連する。
(4)制御プログラム191において、分岐は「分岐命令」と「開始命令」と「終了命令」とで構成される。分岐命令は分岐条件の成否を判定する命令である。開始命令は分岐先ブロックの開始を意味する。終了命令は分岐先ブロックの終了を意味する。
(5)制御プログラム191には、1つ以上の命令がシーケンシャルに記述されている。このため、「n番目の命令」は制御プログラム191の中の一か所を一意に特定する。「n」は正の整数である。
入出力変数に対応する対象機器220は、入出力変数の値が入出力される。
制御プログラム191には、処理の対象、処理結果の出力先および処理の内容を指定する命令列が並んでいる。
入出力変数リスト192は、入出力変数ごとに入出力変数と対象機器220と変数種別との組を示している。
対象機器220の欄は、対象機器220の名前の他に、入出力変数の値が入力される入出力インタフェースの名前を示している。
変数種別は、入出力変数の種別(入力または出力)である。
カウンタ変数は、制御プログラム191の実行回数をカウントするための変数である。
ステップS1211において、カウンタ変数検索部121は、一時変数iに初期値1を設定し、一時変数fに初期値0を設定する。
分岐の開始命令および分岐の終了命令は、1回だけ実行される命令ではない。
そして、カウンタ変数検索部121は、i番目の命令が分岐の開始命令であるか判定する。つまり、カウンタ変数検索部121は、i番目の命令が分岐先ブロックの開始を意味するか判定する。
i番目の命令が分岐の開始命令である場合、処理はステップS1213に進む。
i番目の命令が分岐の開始命令でない場合、処理はステップS1214に進む。
ステップS1213の後、処理はステップS1214に進む。
i番目の命令が分岐の終了命令である場合、処理はステップS1215に進む。
i番目の命令が分岐の終了命令でない場合、処理はステップS1216に進む。
ステップS1215の後、処理はステップS1216に進む。
一時変数fの値が0である場合、処理はステップS1217に進む。
一時変数fの値が0でない場合、処理はステップS1241に進む。
i番目の命令が加算命令である場合、処理はステップS1218に進む。
i番目の命令が加算命令でない場合、処理はステップS1241に進む。
i番目の命令が変数Xと定数の加算命令である場合、処理はステップS1221に進む。
i番目の命令が変数Xと定数の加算命令でない場合、処理はステップS1241に進む。
j番目の命令が変数Xの値を変更する場合、処理はステップS1223に進む。
j番目の命令が変数Xの値を変更しない場合、処理はステップS1224に進む。
一時変数jの値を一時変数iの値と等しい場合、処理はステップS1224に進む。
一時変数jの値を一時変数iの値と異なる場合、処理はステップS1241に進む。
j番目の命令が制御プログラム191の最後の命令である場合、処理はステップS1231に進む。
j番目の命令が制御プログラム191の最後の命令でない場合、処理はステップS1225に進む。
ステップS1225の後、処理はステップS1222に進む。
カウンタ変数リスト193は、1つ以上のカウンタ変数を示す。「D1」と「D2」とのそれぞれはカウンタ変数名である。
ステップS1241において、カウンタ変数検索部121は、i番目の命令が制御プログラム191の最後の命令であるか判定する。
i番目の命令が制御プログラム191の最後の命令である場合、処理は終了する。
i番目の命令が制御プログラム191の最後の命令でない場合、処理は1242に進む。
ステップS1242の後、処理はステップS1212に進む。
ステップS120により、カウンタ変数リスト193が得られる。
なお、制御プログラム191の実行回数をカウントするための変数があらかじめ定義されている場合、カウンタ変数検索部121は、その変数もカウンタ変数リスト193に加える。
カウンタ変数に対する剰余演算は、カウンタ変数が被除数であり定数が除数である剰余演算である。
剰余演算は、剰余を求めるための演算(命令)である。
ステップS131において、剰余演算検索部122は、一時変数iに初期値1を設定する。
そして、剰余演算検索部122は、i番目の命令が剰余演算であるか判定する。
i番目の命令が剰余演算である場合、処理はステップS133に進む。
i番目の命令が剰余演算でない場合、処理はステップS136に進む。
i番目の命令の中の除数Pが定数である場合、処理はステップS134に進む。
i番目の命令の中の除数Pが定数でない場合、処理はステップS136に進む。
つまり、剰余演算検索部122は、i番目の命令の中の被除数がカウンタ変数リスト193に示される変数であるか判定する。
i番目の命令の中の被除数がカウンタ変数である場合、処理はステップS135に進む。
i番目の命令の中の被除数がカウンタ変数でない場合、処理はステップS136に進む。
具体的には、剰余演算検索部122は、カウンタ変数(被除数)の名前と剰余変数の名前と除数と演算位置との組を剰余変数リスト194に追加する。
剰余変数は、剰余が代入される変数である。
演算位置は、制御プログラム191の中の剰余演算の位置である。一時変数iの値が演算位置として設定される。
剰余変数リスト194は、剰余演算の情報として、カウンタ変数(被除数)と剰余変数と除数と演算位置とを示している。
ステップS136において、剰余演算検索部122は、i番目の命令が制御プログラム191の最後の命令であるか判定する。
i番目の命令が制御プログラム191の最後の命令である場合、処理は終了する。
i番目の命令が制御プログラム191の最後の命令でない場合、処理はステップS137に進む。
ステップS137の後、処理はステップS132に進む。
ステップS130により、剰余変数リスト194が得られる。
剰余に対する条件分岐命令は、ステップS130で見つかった剰余演算の剰余について、剰余と定数の一致を分岐条件とする条件分岐命令である。
ステップS1411において、分岐命令検索部123は、一時変数iに初期値1を設定する。
具体的には、分岐命令検索部123は、カウンタ変数名(X)と剰余変数名(Y)と除数Pと演算位置Jとを取得する。
そして、分岐命令検索部123は、一時変数jに初期値として演算位置Jを設定する。
そして、分岐命令検索部123は、j番目の命令が条件分岐命令であるか判定する。
j番目の命令が条件分岐命令である場合、処理はステップS1414に進む。
j番目の命令が条件分岐命令でない場合、処理はステップS1451に進む。
j番目の命令の中の分岐条件が剰余変数Yと定数Nとの一致である場合、処理はステップS1421に進む。
j番目の命令の中の分岐条件が剰余変数Yと定数Nとの一致でない場合、処理はステップS1451に進む。
そして、分岐命令検索部123は、j番目の命令がステップS1413で見つけた条件分岐命令に対する開始命令であるか判定する。
つまり、分岐命令検索部123は、j番目の命令が分岐先ブロックの開始を意味するか判定する。
j番目の命令がステップS1413で見つけた条件分岐命令に対する開始命令である場合、処理はステップS1431に進む。
j番目の命令がステップS1413で見つけた条件分岐命令に対する開始命令でない場合、処理はステップS1421に進む。
そして、分岐命令検索部123は、j番目の命令がステップS1413で見つけた条件分岐命令に対する終了命令であるか判定する。
つまり、分岐命令検索部123は、j番目の命令が分岐先ブロックの終了を意味するか判定する。
j番目の命令がステップS1413で見つけた条件分岐命令に対する終了命令である場合、処理はステップS1441に進む。
j番目の命令がステップS1413で見つけた条件分岐命令に対する終了命令でない場合、処理はステップS1432に進む。
剰余分岐ブロックは、ステップS1413で見つけた条件分岐命令に対する分岐ブロックである。
具体的には、分岐命令検索部123は、カウンタ変数(被除数)の名前Xと剰余変数の名前Yと除数Pと演算位置Jと定数Nと開始位置kと終了位置jとの組を剰余分岐ブロックリスト195に追加する。
定数Nは、比較定数と称する。
開始位置kは、制御プログラム191の中の分岐先ブロックの開始位置である。
終了位置jは、制御プログラム191の中の分岐先ブロックの終了位置である。
剰余分岐ブロックリスト195は、剰余分岐ブロックの情報として、カウンタ変数(被除数)と剰余変数と除数と演算位置と比較定数と開始位置と終了位置とを示している。
ステップS1451において、分岐命令検索部123は、一時変数jの値に1を加算する。
そして、分岐命令検索部123は、j番目の命令が制御プログラム191の最後の命令であるか判定する。
j番目の命令が制御プログラム191の最後の命令である場合、処理はステップS1453に進む。
j番目の命令が制御プログラム191の最後の命令でない場合、処理はステップS1413に進む。
i番目の情報が剰余変数リスト194の最後の情報である場合、処理は終了する。
i番目の情報が剰余変数リスト194の最後の情報でない場合、処理はステップS1454に進む。
ステップS1454の後、処理はステップS1412に進む。
ステップS140により、剰余分岐ブロックリスト195が得られる。
このとき、入出力変数抽出部124は、分岐先ブロックにジャンプ命令があるか判定する。そして、分岐先ブロックにジャンプ命令がない場合に、入出力変数抽出部124は入出力変数を抽出する。
特定される対象機器220は、抽出された入出力変数の値が入出力される対象機器220である。
ステップS1511において、入出力変数抽出部124は、一時変数iに初期値1を設定する。
具体的には、入出力変数抽出部124は、カウンタ変数名(X)と定数Nと開始位置と終了位置とを取得する。
そして、入出力変数抽出部124は、一時変数kに開始位置を設定し、一時変数jに終了位置を設定する。
そして、入出力変数抽出部124は、k番目の命令が実行命令ジャンプを伴う命令であるか判定する。
k番目の命令が実行命令ジャンプを伴う命令である場合、処理はステップS1551に進む。
k番目の命令が実行命令ジャンプを伴う命令でない場合、処理はステップS1514に進む。
一時変数kの値が一時変数jの値と等しい場合、処理はステップS1521に進む。
一時変数kの値が一時変数jの値と異なる場合、処理はステップS1513に進む。
そして、入出力変数抽出部124は、一時変数kにi番目の開始位置を設定する。
そして、入出力変数抽出部124は、入出力変数リスト192に示される入出力変数がk番目の命令の中にオペランドとして含まれるか判定する。
入出力変数リスト192に示される入出力変数がk番目の命令の中にオペランドとして含まれる場合、処理はステップS1531に進む。
入出力変数リスト192に示される入出力変数がk番目の命令の中にオペランドとして含まれない場合、処理はステップS1541に進む。
そして、対象機器特定部125は、剰余分岐アクセス先の情報を剰余分岐アクセス先リスト196に追加する。
具体的には、対象機器特定部125は、カウンタ変数(被除数)の名前Xと剰余変数の名前Yと除数Pと演算位置Jと定数Nと開始位置kと終了位置jとアクセス先との組を剰余分岐アクセス先リスト196に追加する。
アクセス先は、k番目の命令の中の入出力変数に対応する対象機器220の名前を意味する。
剰余分岐アクセス先リスト196、剰余分岐アクセス先の情報として、カウンタ変数(被除数)と剰余変数と除数と演算位置と比較定数と開始位置と終了位置とアクセス先とを示している。
ステップS1541において、入出力変数抽出部124は、一時変数kの値に1を加算する。
一時変数kの値が一時変数jの値と等しい場合、処理はステップS1551に進む。
一時変数kの値が一時変数jの値と異なる場合、処理はステップS1522に進む。
i番目の情報が剰余分岐ブロックリスト195の最後の情報である場合、処理は終了する。
i番目の情報が剰余分岐ブロックリスト195の最後の情報でない場合、処理はステップS1552に進む。
ステップS1552の後、処理はステップS1512に進む。
ステップS150により、剰余分岐アクセス先リスト196が得られる。
このとき、通信周期決定部126は、入出力変数が1つの分岐先ブロックのみでアクセスされるか判定する。そして、入出力変数が1つの分岐先ブロックのみでアクセスされる場合、通信周期決定部126は、制御プログラム191の実行周期に剰余演算の除数を掛けて得られる時間を、入出力変数に対応する対象機器220の通信周期に決定する。また、通信周期決定部126は、残りの対象機器220の通信周期を制御プログラム191の実行周期に決定する。
通信周期決定部126は、剰余分岐アクセス先リスト196の中の1つの情報にのみ示されている対象機器220を特定し、特定された対象機器220の情報から除数Pを取得する。そして、通信周期決定部126は、特定された対象機器220の定周期通信周期を「T×P」の値に決定する。
通信周期決定部126は、残りの対象機器220の定周期通信周期を「T」に決定する。
実施の形態1により、制御プログラム191がP回実行されるうちに1回アクセスされる対象機器220に対して適切な通信周期を求めることができる。
図17および図18に基づいて、定周期通信を説明する。
FAネットワークには、時分割通信技術を用いた定周期通信機能を持つものがある。
時分割通信技術を用いた定周期通信機能(図17を参照)では、ネットワークの通信帯域が時分割され、あらかじめ決められた時間長を有する通信周期の時間枠が設けられ、あらかじめ決められた内容の通信が行われる。
定周期通信が行われないときは、他の種類の通信がネットワークを利用できる。
入出力変数の値は、定周期通信を用いて更新される。
定周期通信では、リモート入力機器から取得された入力データが制御装置の内部のメモリに保存され、その入力データの値が制御プログラムによって入出力変数の値として参照される。また、制御プログラムによって操作された入出力変数の値は、メモリに保存され、定周期通信によってリモート出力機器へ送信される。
制御プログラムは一般に一定周期で反復して実行される。
制御プログラムには、制御プログラムが実行されるたびに実行される処理と、制御プログラムが何回か実行されるうちの1回のみ実行される処理と、が含まれる場合がある。
例えば、制御プログラムが実行されると処理Aは必ず実行される。これに対し、処理B(1)は、変数nの値をPで割った際の剰余が1であるときにのみ実行される。また、処理B(2)は、変数nの値をPで割った際の剰余が2であるときにのみ実行される。また、処理B(P-1)は、変数nの値をPで割った際の剰余が(P-1)であるときにのみ実行される。また、処理B(P)は、変数nの値をPで割った際の剰余が0であるときにのみ実行される。
変数nの値は、制御プログラムが実行されるたびに1ずつ加算される。その場合、処理B(1)~B(P)は、それぞれ制御プログラムがP回実行されるごとに1回実行されることになる。
リモート入出力機器Aおよびリモート入出力機器B(1)~B(P)があると仮定する。処理Aはリモート入出力機器Aの入出力変数を処理する。同様に、処理B(1)はリモート入出力機器B1の入出力変数を処理し、処理B(2)はリモート入出力機器B(2)の入出力変数を処理し、処理B(P)はリモート入出力機器B(P)の入出力変数を処理する。
この場合、リモート入出力機器Aの入出力変数は、処理Aによって参照または操作される。そして、リモート入出力機器Aの入出力変数は、制御プログラムが実行されるたびに更新される必要がある。
他方、リモート入出力機器B(1)~B(P)の入出力変数は、処理B(1)~B(P)によって参照または操作される。そして、リモート入出力機器B(1)~B(P)の入出力変数は、制御プログラムがP回実行されるごとに更新される必要がある。
すなわち、リモート入出力機器B(1)~B(P)について適切な定周期通信の周期はリモート入出力機器Aについて適切な定周期通信の周期のP倍である、といえる。
よって、リモート入出力機器B(1)~B(P)の通信周期がリモート入出力機器Aの通信周期のP倍に設定されれば、定周期通信でやり取りされるデータ量が削減される。
剰余分岐アクセス先リスト196の中の複数の情報に示される対象機器220の定周期通信周期を定周期通信周期Tよりも長くする形態について、主に実施の形態1と異なる点を図21に基づいて説明する。
制御システム200の構成および通信周期決定装置100の構成は、実施の形態1における構成と同じである。
図21に基づいて、通信周期決定方法を説明する。
ステップS210からステップS250は、実施の形態1におけるステップS110からステップS150と同じである。
ステップS260は、実施の形態1におけるステップS160と一部異なる。
ステップS270は、実施の形態1におけるステップS170と同じである。
以下に、ステップS260を説明する。
このとき、通信周期決定部126は、入出力変数が2つ以上の分岐先ブロックでアクセスされるか判定する。そして、入出力変数が2つ以上の分岐先ブロックでアクセスされる場合、通信周期決定部126は、制御プログラム191の実行周期と剰余演算の除数と2つ以上の分岐先ブロックに対応する2つ以上の分岐条件の2つ以上の定数とに基づいて、入出力変数に対応する対象機器220の通信周期を決定する。
通信周期決定部126は、対象機器(1)の情報から除数Pを取得する。
通信周期決定部126は、対象機器(1)の定周期通信周期を「T×P」の値に決定する。
通信周期決定部126は、対象機器(2)の複数の情報に示される複数の剰余変数が同一であるか判定する。対象機器(2)の複数の情報に示される複数の剰余変数が同一である場合、対象機器(2)を対象機器(2A)と称する。対象機器(2A)について、比較定数Nがk個あり、除数が「P」である。
通信周期決定部126は、小さい順に並べられたk個の比較定数(N1,N2,・・・,Nk)に基づく数列Sの要素Siに対して数列Rの全ての要素Riが正の整数であるか判定する。数列Rの全ての要素Riが正の整数である場合、対象機器(2A)を対象機器(2B)と称する。
通信周期決定部126は、対象機器(2B)の定周期通信周期CCを以下のように決定する。
前述の実施の形態1では、剰余分岐アクセス先リスト196の1行のみに記載されている対象機器220の定周期通信周期が決定された。
しかし、剰余分岐アクセス先リスト196の複数行に記載されている対象機器220に対して定周期通信周期を制御プログラム191の実行周期より長くすることができる場合がある。
このような場合に対して、実施の形態2により、剰余分岐アクセス先リスト196の複数行に記載されている対象機器220に対して制御プログラム191の実行周期より長い定周期通信周期を決定することができる。
定数が設定される変数を考慮する形態について、主に実施の形態1および実施の形態2と異なる点を図22から図24に基づいて説明する。
制御システム200の構成は、実施の形態1における構成と同じである。
通信周期決定装置100は、さらに、編集部140を備える。
通信周期決定プログラムは、さらに、編集部140としてコンピュータを機能させる。
図23に基づいて、通信周期決定方法を説明する。
ステップS310において、受付部110は、制御プログラム191と入出力変数リスト192との他に、指定変数リスト197を受け付ける。
指定変数リスト197は、指定変数のリストである。
指定変数は、定数が設定される変数であり、ユーザによって指定される。
指定変数リスト197は、指定変数ごとに指定変数と定数とを示している。
ステップS320において、編集部140は、指定変数リスト197に基づいて、制御プログラム191を編集する。
具体的には、編集部140は、制御プログラム191から各指定変数を見つけ、制御プログラム191の中の各指定変数を定数に置き換える。
前述の実施の形態1では、命令のオペランドおよび比較の対象が定数であることを条件とする処理があった。
しかし、定数に相当する役割を果たす値をあえて変数にして制御プログラム191が作成され、その変数の値が制御プログラム191の冒頭または別途の定義によって特定の値に固定されることがある。
このような場合に対して、実施の形態3により、ユーザが定数として扱われるべき値が代入されている変数を個別に指定した場合に、それらの変数を定数と同様に扱うことができる。
分岐結果が固定される分岐命令を考慮する形態について、主に実施の形態1および実施の形態2と異なる点を図25から図28に基づいて説明する。
制御システム200の構成は、実施の形態1における構成と同じである。
通信周期決定装置100は、さらに、編集部150を備える。
通信周期決定プログラムは、さらに、編集部150としてコンピュータを機能させる。
図26に基づいて、通信周期決定方法を説明する。
ステップS410において、制御装置210は、制御プログラム191と入出力変数リスト192との他に、指定分岐リスト198を受け付ける。
指定分岐リスト198は、指定分岐命令のリストである。
指定分岐命令は、分岐結果が固定される分岐命令であり、ユーザによって指定される。
指定分岐リスト198は、指定分岐命令ごとに分岐命令場所と固定分岐結果とを示す。
分岐命令場所は、制御プログラム191の中の指定分岐命令の場所である。
固定分岐結果は、固定される分岐結果である。
ステップS420において、編集部150は、指定分岐リスト198に基づいて、制御プログラム191を編集する。
具体的には、編集部150は、制御プログラム191から各指定分岐命令を見つけ、制御プログラム191の中の各指定分岐命令の分岐結果を固定して無効化する。
図28と図29とのそれぞれに、制御プログラムのフローチャートの例を示す。
図28において、制御プログラムは非定常状態に備えた分岐命令を持ち、非常停止スイッチがOFFにならない限り、制御処理が実行されない。
このような制御プログラムには1回だけ実行される命令がなく、カウンタ変数リストが空になる。カウンタ変数リストが空になる場合、実施の形態は適用できない。
このような事象に対して、実施の形態4により、ユーザによって指定された分岐命令の分岐結果を1つに固定する。その結果、指定された分岐命令が実質的に無効化される。
図28において「非常停止スイッチがOFFになっているか?」という分岐命令の分岐結果を「No」に固定することにより、制御プログラムを図29のように表すことが実質的に可能になる。
実施の形態4は実施の形態3と組み合わせてもよい。つまり、通信周期決定装置100が編集部140と編集部150とを備え、制御プログラム191が編集部140と編集部150とによって編集されてもよい。
図30に基づいて、通信周期決定装置100のハードウェア構成を説明する。
通信周期決定装置100は処理回路109を備える。
処理回路109は、受付部110と決定部120と設定部130と編集部140と編集部150とを実現するハードウェアである。
処理回路109は、専用のハードウェアであってもよいし、メモリ102に格納されるプログラムを実行するプロセッサ101であってもよい。
ASICは、Application Specific Integrated Circuitの略称である。
FPGAは、Field Programmable Gate Arrayの略称である。
通信周期決定装置100の要素である「部」は、「処理」、「工程」、「回路」または「サーキットリ」と読み替えてもよい。
Claims (10)
- 1つ以上の対象機器を制御するための制御プログラムから、前記制御プログラムの実行回数をカウントするためのカウンタ変数を見つけるカウンタ変数検索部と、
前記制御プログラムから、前記カウンタ変数が被除数であり定数が除数である剰余演算を見つける剰余演算検索部と、
前記制御プログラムから、前記剰余演算の剰余と定数の一致を分岐条件とする条件分岐命令を見つける分岐命令検索部と、
前記条件分岐命令の分岐先ブロックから入出力変数を抽出する入出力変数抽出部と、
前記1つ以上の対象機器のうち抽出された入出力変数の値が入出力される対象機器を特定する対象機器特定部と、
抽出された入出力変数が1つの分岐先ブロックのみでアクセスされる場合、前記制御プログラムの実行周期に前記剰余演算の除数を掛けて得られる時間を、特定された対象機器の通信周期に決定する通信周期決定部と、
を備える通信周期決定装置。 - 前記通信周期決定部は、前記1つ以上の対象機器のうちの残りの対象機器の通信周期を前記実行周期に決定する
請求項1に記載の通信周期決定装置。 - 前記入出力変数抽出部は、前記分岐先ブロックにジャンプ命令があるか判定し、前記分岐先ブロックに前記ジャンプ命令がない場合に前記入出力変数を抽出する
請求項1または請求項2に記載の通信周期決定装置。 - 前記通信周期決定部は、抽出された入出力変数が2つ以上の分岐先ブロックでアクセスされる場合、前記実行周期と前記除数と前記2つ以上の分岐先ブロックに対応する2つ以上の分岐条件の2つ以上の定数とに基づいて、特定された対象機器の通信周期を決定する
請求項1から請求項3のいずれか1項に記載の通信周期決定装置。 - 定数が設定される変数として指定される指定変数を前記制御プログラムから見つけ、前記制御プログラムの中の前記指定変数を前記指定変数に設定される前記定数に置き換えることによって前記制御プログラムを編集する編集部を備え、
編集済みの前記制御プログラムを使用して、前記特定された対象機器の通信周期を決定する
請求項1から請求項5のいずれか1項に記載の通信周期決定装置。 - 分岐結果が固定される分岐命令として指定される指定分岐命令を前記制御プログラムから見つけ、前記制御プログラムの中の前記指定分岐命令の分岐結果が固定されるように前記制御プログラムを編集する編集部を備え、
編集済みの前記制御プログラムを使用して、前記特定された対象機器の通信周期を決定する
請求項1から請求項5のいずれか1項に記載の通信周期決定装置。 - 定数が設定される変数として指定される指定変数を前記制御プログラムから見つけ、前記制御プログラムの中の前記指定変数を前記指定変数に設定される前記定数に置き換えることによって前記制御プログラムを編集する第1編集部と、
分岐結果が固定される分岐命令として指定される指定分岐命令を前記制御プログラムから見つけ、前記制御プログラムの中の前記指定分岐命令の分岐結果が固定されるように前記制御プログラムを編集する第2編集部と、
を備え、
編集済みの前記制御プログラムを使用して、前記特定された対象機器の通信周期を決定する
請求項1から請求項5のいずれか1項に記載の通信周期決定装置。 - 1つ以上の対象機器を制御するための制御プログラムから、前記制御プログラムの実行回数をカウントするためのカウンタ変数を見つけ、
前記制御プログラムから、前記カウンタ変数が被除数であり定数が除数である剰余演算を見つけ、
前記制御プログラムから、前記剰余演算の剰余と定数の一致を分岐条件とする条件分岐命令を見つけ、
前記条件分岐命令の分岐先ブロックから入出力変数を抽出し、
前記1つ以上の対象機器のうち抽出された入出力変数の値が入出力される対象機器を特定し、
抽出された入出力変数が1つの分岐先ブロックのみでアクセスされる場合、前記制御プログラムの実行周期に前記剰余演算の除数を掛けて得られる時間を、特定された対象機器の通信周期に決定する
通信周期決定方法。 - 1つ以上の対象機器を制御するための制御プログラムから、前記制御プログラムの実行回数をカウントするためのカウンタ変数を見つけるカウンタ変数検索処理と、
前記制御プログラムから、前記カウンタ変数が被除数であり定数が除数である剰余演算を見つける剰余演算検索処理と、
前記制御プログラムから、前記剰余演算の剰余と定数の一致を分岐条件とする条件分岐命令を見つける分岐命令検索処理と、
前記条件分岐命令の分岐先ブロックから入出力変数を抽出する入出力変数抽出処理と、
前記1つ以上の対象機器のうち抽出された入出力変数の値が入出力される対象機器を特定する対象機器特定処理と、
抽出された入出力変数が1つの分岐先ブロックのみでアクセスされる場合、前記制御プログラムの実行周期に前記剰余演算の除数を掛けて得られる時間を、特定された対象機器の通信周期に決定する通信周期決定処理と、
をコンピュータに実行させるための通信周期決定プログラム。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE112021007633.7T DE112021007633T5 (de) | 2021-06-28 | 2021-06-28 | Kommunikationsdauer-bestimmungseinrichtung, kommunikationsdauer-bestimmungsverfahren und kommunikationsdauer-bestimmungsprogramm |
CN202180099759.8A CN117546104A (zh) | 2021-06-28 | 2021-06-28 | 通信周期决定装置、通信周期决定方法以及通信周期决定程序 |
PCT/JP2021/024381 WO2023275942A1 (ja) | 2021-06-28 | 2021-06-28 | 通信周期決定装置、通信周期決定方法および通信周期決定プログラム |
JP2023531157A JP7317269B2 (ja) | 2021-06-28 | 2021-06-28 | 通信周期決定装置、通信周期決定方法および通信周期決定プログラム |
TW110142180A TWI830085B (zh) | 2021-06-28 | 2021-11-12 | 通訊周期決定裝置、通訊周期決定方法及通訊周期決定程式產品 |
US18/516,569 US20240086295A1 (en) | 2021-06-28 | 2023-11-21 | Communication period determination device, communication period determination method, and computer readable medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2021/024381 WO2023275942A1 (ja) | 2021-06-28 | 2021-06-28 | 通信周期決定装置、通信周期決定方法および通信周期決定プログラム |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US18/516,569 Continuation US20240086295A1 (en) | 2021-06-28 | 2023-11-21 | Communication period determination device, communication period determination method, and computer readable medium |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2023275942A1 true WO2023275942A1 (ja) | 2023-01-05 |
Family
ID=84691023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2021/024381 WO2023275942A1 (ja) | 2021-06-28 | 2021-06-28 | 通信周期決定装置、通信周期決定方法および通信周期決定プログラム |
Country Status (6)
Country | Link |
---|---|
US (1) | US20240086295A1 (ja) |
JP (1) | JP7317269B2 (ja) |
CN (1) | CN117546104A (ja) |
DE (1) | DE112021007633T5 (ja) |
TW (1) | TWI830085B (ja) |
WO (1) | WO2023275942A1 (ja) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006048203A (ja) * | 2004-08-02 | 2006-02-16 | Matsushita Electric Ind Co Ltd | サーボ制御装置 |
WO2016189689A1 (ja) * | 2015-05-27 | 2016-12-01 | 三菱電機株式会社 | プログラム生成装置、プログラム生成方法及びプログラム生成プログラム |
WO2021005691A1 (ja) * | 2019-07-08 | 2021-01-14 | 三菱電機株式会社 | 制御装置、プログラム監視方法及びプログラム |
JP2021027512A (ja) * | 2019-08-07 | 2021-02-22 | ファナック株式会社 | 同期方法、及び制御装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4935369B2 (ja) | 2007-01-22 | 2012-05-23 | パナソニック株式会社 | サーボシステム |
CN110073301A (zh) * | 2017-08-02 | 2019-07-30 | 强力物联网投资组合2016有限公司 | 工业物联网中具有大数据集的数据收集环境下的检测方法和系统 |
-
2021
- 2021-06-28 JP JP2023531157A patent/JP7317269B2/ja active Active
- 2021-06-28 WO PCT/JP2021/024381 patent/WO2023275942A1/ja active Application Filing
- 2021-06-28 CN CN202180099759.8A patent/CN117546104A/zh active Pending
- 2021-06-28 DE DE112021007633.7T patent/DE112021007633T5/de active Pending
- 2021-11-12 TW TW110142180A patent/TWI830085B/zh active
-
2023
- 2023-11-21 US US18/516,569 patent/US20240086295A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006048203A (ja) * | 2004-08-02 | 2006-02-16 | Matsushita Electric Ind Co Ltd | サーボ制御装置 |
WO2016189689A1 (ja) * | 2015-05-27 | 2016-12-01 | 三菱電機株式会社 | プログラム生成装置、プログラム生成方法及びプログラム生成プログラム |
WO2021005691A1 (ja) * | 2019-07-08 | 2021-01-14 | 三菱電機株式会社 | 制御装置、プログラム監視方法及びプログラム |
JP2021027512A (ja) * | 2019-08-07 | 2021-02-22 | ファナック株式会社 | 同期方法、及び制御装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117546104A (zh) | 2024-02-09 |
DE112021007633T5 (de) | 2024-02-22 |
JP7317269B2 (ja) | 2023-07-28 |
TW202301052A (zh) | 2023-01-01 |
US20240086295A1 (en) | 2024-03-14 |
TWI830085B (zh) | 2024-01-21 |
JPWO2023275942A1 (ja) | 2023-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0463251A1 (en) | Software installation | |
JPH0622035B2 (ja) | ベクトル処理装置 | |
CN104932875A (zh) | 图像处理装置、管理系统及管理方法 | |
US7100063B2 (en) | Low power operation control unit and program optimizing apparatus | |
EP0032515A1 (en) | A method of pipeline control for a computer | |
WO2023275942A1 (ja) | 通信周期決定装置、通信周期決定方法および通信周期決定プログラム | |
JP2001015398A (ja) | 半導体処理工程制御システム、半導体処理工程制御方法、及び、そのための処理を記録した記録媒体 | |
US10353591B2 (en) | Fused shader programs | |
JP7298210B2 (ja) | 設定情報生成装置、設定情報生成方法、及び制御プログラム | |
EP0240606A2 (en) | Pipe-line processing system and microprocessor using the system | |
EP0164418A1 (en) | Microprogram control system | |
CN105122158B (zh) | 具有短延迟时间的可编程控制装置 | |
JPS63142431A (ja) | パイプライン制御方式 | |
EP0436402A2 (en) | Channel assignment in data processing apparatus | |
US8490097B2 (en) | Information processing apparatus having a plurality of control units receiving transactions at the current time such that when the current time coincides with most recent start-up time the control units update the start-up time with the current time and sum up the number of transactions being processed limited to a predetermined threshold | |
US8291145B2 (en) | Method and apparatus for setting a primary port on a PCI bridge | |
CN117093268B (zh) | 一种向量处理方法、系统、设备及存储介质 | |
JP7378666B2 (ja) | プログラム作成支援システムおよびプログラム作成支援プログラム | |
CN110968412B (zh) | 一种任务执行方法、系统及存储介质 | |
JP2000250612A (ja) | プログラマブルコントローラ | |
JPS6116111B2 (ja) | ||
JPH086797A (ja) | 定数参照最適化処理装置 | |
KR20230092501A (ko) | 자동화된 디지털 트윈 구축을 위한 임무 할당 방법 및 이를 수행하는 장치 | |
JP2010003066A (ja) | インタフェース回路および通信システム | |
JPS6258339A (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: 21948254 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2023531157 Country of ref document: JP Kind code of ref document: A |
|
WWE | Wipo information: entry into national phase |
Ref document number: 202180099759.8 Country of ref document: CN Ref document number: 112021007633 Country of ref document: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 21948254 Country of ref document: EP Kind code of ref document: A1 |