EP2930574B1 - Programming assist device for programmable logic controller program and programming assist method for the program - Google Patents

Programming assist device for programmable logic controller program and programming assist method for the program Download PDF

Info

Publication number
EP2930574B1
EP2930574B1 EP15162951.6A EP15162951A EP2930574B1 EP 2930574 B1 EP2930574 B1 EP 2930574B1 EP 15162951 A EP15162951 A EP 15162951A EP 2930574 B1 EP2930574 B1 EP 2930574B1
Authority
EP
European Patent Office
Prior art keywords
intermediate code
executable file
converter
program
reconverted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Not-in-force
Application number
EP15162951.6A
Other languages
German (de)
French (fr)
Other versions
EP2930574A3 (en
EP2930574A2 (en
Inventor
Kenichi Ikegami
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
JTEKT Corp
Original Assignee
JTEKT Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by JTEKT Corp filed Critical JTEKT Corp
Publication of EP2930574A2 publication Critical patent/EP2930574A2/en
Publication of EP2930574A3 publication Critical patent/EP2930574A3/en
Application granted granted Critical
Publication of EP2930574B1 publication Critical patent/EP2930574B1/en
Not-in-force legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/052Linking several PLC's
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13004Programming the plc

Definitions

  • the present invention relates to a programming assist device for a programmable logic controller program and a programming assist method for a programmable logic controller program.
  • a programmable logic controller (hereinafter referred to as "PLC”) is used to control automated machinery in a factory or the like.
  • the PLC includes a central processing unit (hereinafter referred to as "CPU") that is a small computer and that executes a program.
  • CPU central processing unit
  • a ladder language that describes sequence control in the form of a ladder circuit is used to prepare the program. The ladder language may be rewritten as appropriate into a sequence program that matches the usage.
  • the PLC receives a signal (on or off information) about a continuous state input from a variety of input devices (such as switches and sensors).
  • the PLC controls (e.g. outputs an on or off signal to) output devices (such as relays and motors) using the sequence program in which the variety of input devices are combined in a desired form (connected in series or in parallel).
  • PLCs called safety PLCs are provided with redundant CPUs and ROMs.
  • the two ROMs are loaded with separate executable files (codes, namely programs, written in a machine language that is executable by the PLCs) prepared from an identical ladder language program.
  • the outputs are used to control output devices such as motors and relays. That is, two different executable files prepared from an identical ladder language program are executed by separate CPUs, and outputs from the CPUs are collated with each other to prevent occurrence of an emergency stop in the case where there is any unexpected failure in software for conversion from the ladder language program to the executable files or the like.
  • an intermediate code converter (converter software) is used to convert the ladder language program into an intermediate code (a program written in an intermediate language), and the intermediate code is verified by a designer sentence by sentence to check the presence or absence of any failure in conversion.
  • the intermediate code is then converted into a first executable file by a first executable file converter (converter software), and into a second executable file by a second executable file.
  • the first executable file is loaded into a first CPU
  • the second executable file is loaded into a second CPU.
  • JP 2006-235660 A discloses a control system in which a numerical data program rather than executable files is transferred to a PLC and the PLC includes an interpreter program that interprets the numerical data program command by command to execute the numerical data program.
  • the PLC does not directly execute the numerical data program, but executes the content of an interpretation (a translation into a machine language) by the interpreter program.
  • Japanese Patent Application Publication No. 9-212212 discloses a collation method for a sequence circuit capable of recognizing a contradiction in logic or an overlap in logic by extracting sequences A and B from a ladder sequence 3 prepared by synthesizing a standard ladder sequence 1 for equipment 1E and a standard ladder sequence 2 for equipment 2E, for example, mnemonically developing the sequences A and B for each block (into a combination of English words and symbols translated from a machine language in such a manner that is easily understandable and describable by humans), logically expressing the developed sequences, sorting the sequences in the order of their addresses, and comparing the sequences with each other.
  • JP 2006-235660 A addresses a special PLC loaded with an interpreter program, and operates slower than a PLC that is loaded with an executable file in a machine language and directly operates on the machine language.
  • the redundant CPUs of the safety PLC are loaded with an interpreter program and different numerical data programs, the difference in operating time since interpretation until execution of the numerical data programs may be large, which is not preferable.
  • JP 9-212212 A The collation method for a sequence circuit described in JP 9-212212 A may not be applied as a method in which the redundant CPUs of the safety PLC are loaded with separate executable files.
  • a programming assist device for a programmable logic controller program includes:
  • two types of intermediate code are generated by two different types of intermediate code converter (converter software) from the inverse conversion program generated using the inverse converter and written in the first predetermined language, and thereafter two types of executable file are generated by two different types of executable file converter (converter software). Consequently, it is possible to appropriately stop an output from the PLC in the case where there is any failure in the converter software. Thus, it is possible to reliably prevent an emergency stop of the PLC. In addition, even in the case where there is any failure in the inverse converter (converter software), the failure can be discovered by the collation of the intermediate codes. In addition, it is possible to significantly reduce time and effort by eliminating work in which a designer verifies an intermediate code sentence by sentence.
  • the intermediate code collation device may be used to compare the first intermediate code and the reconverted first intermediate code with each other and to compare the second intermediate code and the reconverted second intermediate code with each other; and the executable file generation device may be used to generate the first executable file from the reconverted first intermediate code using the first executable file converter and to generate the second executable file, which is different from the first executable file, from the reconverted second intermediate code using the second executable file converter in the case where the codes match each other in both the comparisons performed by the intermediate code collation device.
  • a failure in the inverse converter can be discovered reliably by collating the second intermediate code and the reconverted second intermediate code with each other in addition to collating the first intermediate code and the reconverted first intermediate code with each other.
  • the file transfer device may be used to further transfer the first intermediate code to the first control device to store the first intermediate code in the first storage device.
  • the inverse conversion program, the reconverted first intermediate code, the reconverted second intermediate code, the first executable file, and the second executable file can be generated easily. Accordingly, it is not necessary to save the original program with a large capacity, and it is also not necessary to save two types of intermediate code program. Therefore, it is possible to reduce the storage capacity for saving a program for maintenance.
  • the first predetermined language is a ladder language
  • the second predetermined language is an intermediate language
  • the intermediate language is a language obtained by converting the ladder language into a text format
  • the same intermediate language is applicable to different types of control device that execute the executable file.
  • the designer may prepare the original program in the ladder language, and thus can design the PLC program relatively easily.
  • the intermediate code written in the intermediate language that is understandable by humans, in addition, the intermediate code can be appropriately verified by the designer even in the case where there is such a need, and can be easily diverted to a variety of CPUs that support different executable file formats, which is significantly convenient.
  • a programming assist method for a programmable logic controller program is performed using a computer including:
  • a PLC 1 is composed of a control unit 10, an input unit 20, and an output unit 30.
  • the number of input units 20 and output units 30 may be increased as appropriate in accordance with the number of inputs and outputs.
  • An input board 20A that includes a connector 20B for connection with the control unit 10 is housed in the input unit 20.
  • the input unit 20 is provided with an input terminal 20F for connection with wiring that extends from a plurality of input devices (such as sensors and switches).
  • An output board 30A that includes a connector 30C for connection with the control unit 10 is housed in the output unit 30.
  • the output unit 30 is provided with an output terminal 30G for connection with wiring that extends to a plurality of output devices (such as relays and motors).
  • a control board 10A that includes a connector 10B for connection with the input unit 20 and a connector 10C for connection with the output unit 30 is housed in the control unit 10.
  • the control unit 10 is provided with connectors 11G, 12G, and so forth for connection with a programming assist device for a PLC program such as a personal computer.
  • the control unit 10 is provided with an alarm device 14 that announces occurrence of an abnormality, for example.
  • Wiring that extends from a plurality of input devices (such as a switch 40A, a sensor 40B through an input apparatus 40N) is connected to the input terminal 20F of the input unit 20.
  • a signal (such as on or off information) about a continuous state of the plurality of input devices is input to the input terminal 20F.
  • the input signal about the continuous state is transferred to the control unit 10 via an interface 21A (hereinafter, the term “interface” will be referred to as "I/F”) and the connector 20B.
  • the PLC 1 (e.g. a safety PLC) described in relation to the embodiment has redundant control devices and storage devices. That is, the control unit 10 includes a first control device and a first storage device composed of a first CPU 11A (corresponding to the first control device) and a first RAM 11B and a first ROM 11C (corresponding to the first storage device), respectively, and a second control device and a second storage device composed of a second CPU 12A (corresponding to the second control device) and a second RAM 12B and a second ROM 12C (corresponding to the second storage device), respectively.
  • a rewritable ROM such as an EEPROM or a flash ROM is used as the first ROM 11C and the second ROM 12C.
  • the ROMs store an executable file which is a program to be executed by the CPUs.
  • a user can use a programming assist device 50 for a PLC program such as a personal computer (hereinafter, the programming assist device 50 for a PLC program will be abbreviated as "PC 50") to prepare a program (such as a source code) prepared by the user himself/herself using a ladder language or the like.
  • a program such as a source code
  • the program prepared by the user himself/herself will be called "original program”.
  • the user uses the PC 50 to generate two different types of executable file (native code) from an identical ladder language program, and stores a first executable file in the first ROM 11C and stores a second executable file in the second ROM 12C.
  • the first ROM 11C also stores a program for communication with the PC 50 via an I/F 11E and the connector 11G etc.
  • the second ROM 12C also stores a program for communication with the PC 50 via an I/F 12E and the connector 12G etc.
  • the first CPU 11A outputs a computation result based on the first executable file stored in the first ROM 11C and the signal about the continuous state from the input devices input from the input unit 20 via the connector 10B and an I/F 11D to a collation device 10S.
  • the second CPU 12A outputs a computation result based on the second executable file stored in the second ROM 12C and the signal about the continuous state from the input devices input from the input unit 20 via the connector 10B and an I/F 12D to the collation device 10S.
  • the collation device 10S is a collation circuit, for example.
  • the collation device 10S In the case where an output from the first CPU 11A and an output from the second CPU 12A match each other, the collation device 10S outputs the matching output to the output unit 30 via an I/F 10T and the connector 10C. In the case where an output from the first CPU 11A and an output from the second CPU 12A do not match each other, the collation device 10S does not make any output to the I/F 10T, and activates the alarm device 14 (such as an LED or a buzzer) to announce occurrence of an abnormality.
  • the alarm device 14 such as an LED or a buzzer
  • Wiring that extends to a plurality of output devices is connected to the output terminal 30G of the output unit 30.
  • the output unit 30 outputs a computation result obtained by the control unit 10 to the output devices connected to the output terminal 30G via the connector 30C and an I/F 31A.
  • An intermediate code converter (converter software) is installed in the PC 50.
  • the intermediate code converter generates an intermediate code written in an intermediate language (corresponding to the second predetermined language) from a program (so-called source code) written in the ladder language (corresponding to the first predetermined language).
  • the intermediate language is a language obtained by converting the ladder language into a text format.
  • the same intermediate language is applicable to different types of control device (CPU).
  • a first intermediate code converter and a second intermediate code converter with different code generation procedures are installed (stored) in the PC 50.
  • an inverse converter (converter software) that generates a program (a program written in the ladder language) obtained through an inverse conversion from the intermediate code written in the intermediate language is installed in the PC 50.
  • an executable file converter (converter software) that generates an executable file (a native code such as a machine language) that is executable by the PLC from the intermediate code program written in the intermediate language is installed in the PC 50.
  • a first executable file converter and a second executable file converter that are different from each other are installed in the PC 50.
  • step S10 the PC 50 determines whether or not an instruction to start execution is input with the original program (a source code written in the ladder language) selected. In the case where an instruction to start execution is input with the original program selected (Yes), the process proceeds to step S20. Otherwise (No), the process returns to step S10.
  • step S20 the PC 50 activates the first intermediate code converter, and generates a first intermediate code from the original program (see FIG. 4 ).
  • step S25A the PC 50 determines whether or not there is any error during generation by the first intermediate code converter. In the case where there is not any error (No), the process proceeds to step S30. In the case where there is any error (Yes), the process proceeds to step S25B. An error message is displayed, and the process is ended.
  • step S30 the PC 50 activates the second intermediate code converter, and generates a second intermediate code from the original program (see FIG. 4 ).
  • step S35A the PC 50 activates the second intermediate code converter, and generates a second intermediate code from the original program.
  • step S35A the PC 50 determines whether or not there is any error during generation by the second intermediate code converter. In the case where there is not any error (No), the process proceeds to step S40. In the case where there is any error (Yes), the process proceeds to step S35B. An error message is displayed, and the process is ended.
  • the processes in steps S20 and S30 correspond to step (a) (the intermediate code generation).
  • the PC 50 during execution of the processes in steps S20 and S30 corresponds to the intermediate code generation device.
  • step S40 the PC 50 activates the inverse converter, and generates an inverse conversion program (ladder language) from the first intermediate code (a program written in the intermediate language) generated in step S20 (see FIG. 4 ).
  • the process proceeds to step S45A.
  • step S45A the PC 50 determines whether or not there is any error during generation by the inverse converter. In the case where there is not any error (No), the process proceeds to step S50. In the case where there is any error (Yes), the process proceeds to step S45B. An error message is displayed, and the process is ended.
  • the process in step S40 corresponds to step (b) (the inverse conversion program generation).
  • the PC 50 during execution of the process in step S40 corresponds to the inverse conversion program generation device.
  • step S50 the PC 50 activates the first intermediate code converter, and generates a reconverted first intermediate code (intermediate language) from the inverse conversion program (ladder language) generated in step S40 (see FIG. 4 ).
  • step S55A the PC 50 determines whether or not there is any error during generation by the first intermediate code converter. In the case where there is not any error (No), the process proceeds to step S60. In the case where there is any error (Yes), the process proceeds to step S55B. An error message is displayed, and the process is ended.
  • step S60 the PC 50 activates the second intermediate code converter, and generates a reconverted second intermediate code (intermediate language) from the inverse conversion program (ladder language) generated in step S40 (see FIG. 4 ).
  • the process proceeds to step S65A.
  • step S65A the PC 50 determines whether or not there is any error during generation by the second intermediate code converter. In the case where there is not any error (No), the process proceeds to step S70. In the case where there is any error (Yes), the process proceeds to step S65B. An error message is displayed, and the process is ended.
  • the processes in steps S50 and S60 correspond to step (c) (the reconverted intermediate code generation).
  • the PC 50 during execution of the processes in steps S50 and S60 corresponds to the reconverted intermediate code generation device.
  • step S70 the PC 50 compares the first intermediate code generated in step S20 and the reconverted first intermediate code generated in step S50 with each other (see FIG. 4 ). In the case where the codes match each other (Yes), the process proceeds to step S80. In the case where the codes do not match each other (No), the process proceeds to step S75B. An error message is displayed, and the process is ended.
  • step S80 the PC 50 compares the second intermediate code generated in step S30 and the reconverted second intermediate code generated in step S60 with each other (see FIG. 4 ). In the case where the codes match each other (Yes), the process proceeds to step S110.
  • step S85B In the case where the codes do not match each other (No), the process proceeds to step S85B. An error message is displayed, and the process is ended.
  • the processes in steps S70 and S80 correspond to step (d) (the intermediate code collation).
  • the PC 50 during execution of the processes in steps S70 and S80 corresponds to the intermediate code collation device.
  • step (e) the executable file generation) to be discussed later is executed in the case where the first intermediate code and the reconverted first intermediate code match each other and the second intermediate code and the reconverted second intermediate code match each other.
  • step (e) to be discussed later may be executed in the case where the first intermediate code and the reconverted first intermediate code match each other or the second intermediate code and the reconverted second intermediate code match each other. That is, one of steps S70 and S80 may be omitted.
  • step S110 the PC 50 activates the first executable file converter, and generates a first executable file (machine language) from the reconverted first intermediate code (intermediate language) generated in step S50 (see FIG. 4 ).
  • step S115A the PC 50 determines whether or not there is any error during generation by the first executable file converter. In the case where there is not any error (No), the process proceeds to step S120. In the case where there is any error (Yes), the process proceeds to step S115B. An error message is displayed, and the process is ended.
  • step S120 the PC 50 activates the second executable file converter, and generates a second executable file (machine language) from the reconverted second intermediate code (intermediate language) generated in step S60 (see FIG. 4 ).
  • step S125A the PC 50 determines whether or not there is any error during generation by the second executable file converter. In the case where there is not any error (No), the process proceeds to step S130. In the case where there is any error (Yes), the process proceeds to step S125B. An error message is displayed, and the process is ended.
  • the processes in steps S110 and S120 correspond to step (e).
  • the PC 50 during execution of the processes in steps S110 and S120 corresponds to the executable file generation device.
  • step S130 the PC 50 transfers the first executable file generated in step S110 to the first CPU 11A via the connector 11G and the I/F 11E (see FIG. 4 ), and stores the first executable file in the first ROM 11C (see FIG. 2 ).
  • step S135A the PC 50 determines whether or not there is any error during transfer of the first executable file etc. In the case where there is not any error (No), the process proceeds to step S140. In the case where there is any error (Yes), the process proceeds to step S135B. An error message is displayed, and the process is ended.
  • step S140 the PC 50 transfers the second executable file generated in step S120 to the second CPU 12A via the connector 12G and the I/F 12E (see FIG. 4 ), and stores the second executable file in the second ROM 12C (see FIG. 2 ).
  • step S145A the PC 50 determines whether or not there is any error during transfer of the second executable file etc. In the case where there is not any error (No), the process proceeds to step S150. In the case where there is any error (Yes), the process proceeds to step S145B. An error message is displayed, and the process is ended.
  • the processes in steps S130 and S140 correspond to step (f) (the file transfer).
  • the PC 50 during execution of the processes in steps S130 and S140 corresponds to the file transfer device.
  • step S150 the PC 50 transfers the first intermediate code generated in step S20 to the first CPU 11A via the connector 11G and the I/F 11E (see FIG. 4 ), and stores the first intermediate code in the first ROM 11C (see FIG. 2 ).
  • step S155A the PC 50 determines whether or not there is any error during transfer of the first intermediate code etc. In the case where there is not any error (No), the process is ended. In the case where there is any error (Yes), the process proceeds to step S155B. An error message is displayed, and the process is ended.
  • Step S150 may be included in the file transfer S130. The processes in steps S150 to S155B may be omitted.
  • the step in which the first intermediate code is stored in the first ROM 11C corresponds to saving of a program for maintenance. If the first intermediate code is left, the inverse conversion program, the reconverted first intermediate code, the reconverted second intermediate code, the first executable file, and the second executable file can be easily generated by the relevant converter software. Thus, it is not necessary to store the original program and the inverse conversion program written in the ladder language. In this case, the size of the intermediate code in the intermediate language is about one-sixteenth the size of the program in the ladder language. Accordingly, the storage capacity can be significantly reduced. In addition, it is not necessary to store two types of intermediate code, namely the first intermediate code and the second intermediate code, and it is only necessary to store the first intermediate code.
  • two different types of intermediate code are generated from an original program in a first predetermined language using two types of intermediate code converter (converter software) with different code generation procedures
  • two types of executable file are generated from the two different types of intermediate code using two types of executable file converter (converter software) with different code generation procedures. Consequently, it is possible to appropriately stop an output from the PLC in the case where there is any failure in the converter software. Thus, it is possible to reliably prevent an emergency stop of the PLC due to an error in executable files.
  • step (d) it is possible to reduce time and effort by eliminating intermediate code verification work according to the related art in which a designer verifies an intermediate code sentence by sentence by comparing the first intermediate code and the reconverted first intermediate code with each other in step S70 and comparing the second intermediate code and the reconverted second intermediate code with each other in step S80.
  • step (d) even in the case where there is any failure in inverse converter (converter software) in step (d), the failure can be discovered appropriately.
  • PC 50 programming assist device
  • the programming assist device for a programmable logic controller program and the programming assist method for a programmable logic controller program according to the present invention are not limited to the process procedure, the configuration, the appearance, and so forth described in relation to the embodiment described above, and may be modified, added, and deleted in various ways without departing from the scope and spirits of the present invention.
  • the programmable logic controller described in relation to the embodiment is not limited to the configuration, the structure, the appearance, the shape, and so forth described in relation to the embodiment described above, and may be modified, added, and deleted in various ways without departing from the scope and spirits of the present invention.
  • the ladder language is used as the first predetermined language
  • the intermediate language is used as the second predetermined language.
  • the first predetermined language is not limited to the ladder language
  • the second predetermined language is not limited to the intermediate language.
  • the numerical values used in the description of the embodiment are exemplary, and the present invention is not limited to such values.
  • an inverse conversion program is generated from the first intermediate code, and the first intermediate code is stored in the first ROM.
  • an inverse conversion program may be generated from the second intermediate code, and the second intermediate code may be stored in the second ROM.
  • a programming assist device for a PLC program and a programming assist method for a PLC program capable of easily preparing separate executable files for causing redundant CPUs of a PLC to operate and reliably preventing an emergency stop of the PLC due to a failure in converter software are provided.
  • First and second intermediate codes are generated from an original program.
  • An inverse conversion program is generated from the first intermediate code.
  • a reconverted first intermediate code and a reconverted second intermediate code are generated from the inverse conversion program.
  • a first executable file is generated from the reconverted first intermediate code
  • a second executable file is generated from the reconverted second intermediate code.
  • the executable files are transferred to the PLC.

Description

    BACKGROUND OF THE INVENTION 1. Field of the Invention
  • The present invention relates to a programming assist device for a programmable logic controller program and a programming assist method for a programmable logic controller program.
  • 2. Description of the Related Art
  • A programmable logic controller (hereinafter referred to as "PLC") is used to control automated machinery in a factory or the like. The PLC includes a central processing unit (hereinafter referred to as "CPU") that is a small computer and that executes a program. A ladder language that describes sequence control in the form of a ladder circuit is used to prepare the program. The ladder language may be rewritten as appropriate into a sequence program that matches the usage. The PLC receives a signal (on or off information) about a continuous state input from a variety of input devices (such as switches and sensors). The PLC controls (e.g. outputs an on or off signal to) output devices (such as relays and motors) using the sequence program in which the variety of input devices are combined in a desired form (connected in series or in parallel).
  • PLCs called safety PLCs are provided with redundant CPUs and ROMs. The two ROMs are loaded with separate executable files (codes, namely programs, written in a machine language that is executable by the PLCs) prepared from an identical ladder language program. In the case where outputs from the redundant CPUs match each other, the outputs are used to control output devices such as motors and relays. That is, two different executable files prepared from an identical ladder language program are executed by separate CPUs, and outputs from the CPUs are collated with each other to prevent occurrence of an emergency stop in the case where there is any unexpected failure in software for conversion from the ladder language program to the executable files or the like.
  • In the related art, in preparing separate executable files, an intermediate code converter (converter software) is used to convert the ladder language program into an intermediate code (a program written in an intermediate language), and the intermediate code is verified by a designer sentence by sentence to check the presence or absence of any failure in conversion. The intermediate code is then converted into a first executable file by a first executable file converter (converter software), and into a second executable file by a second executable file. The first executable file is loaded into a first CPU, and the second executable file is loaded into a second CPU.
  • Japanese Patent Application Publication No. 2006-235660 ( JP 2006-235660 A ) discloses a control system in which a numerical data program rather than executable files is transferred to a PLC and the PLC includes an interpreter program that interprets the numerical data program command by command to execute the numerical data program. In the configuration, the PLC does not directly execute the numerical data program, but executes the content of an interpretation (a translation into a machine language) by the interpreter program.
  • Japanese Patent Application Publication No. 9-212212 discloses a collation method for a sequence circuit capable of recognizing a contradiction in logic or an overlap in logic by extracting sequences A and B from a ladder sequence 3 prepared by synthesizing a standard ladder sequence 1 for equipment 1E and a standard ladder sequence 2 for equipment 2E, for example, mnemonically developing the sequences A and B for each block (into a combination of English words and symbols translated from a machine language in such a manner that is easily understandable and describable by humans), logically expressing the developed sequences, sorting the sequences in the order of their addresses, and comparing the sequences with each other.
  • In the method according to the related art in which a ladder language program is converted into an intermediate code and a first executable file and a second executable file are prepared from the intermediate code resulting from the conversion, it takes significantly much time and effort for a designer to verify the intermediate code resulting from the conversion from the ladder language program sentence by sentence, which is not preferable. In addition, although two types of executable file converter are prepared to prepare separate executable files from one intermediate code, only one type of conversion from the ladder language program into an intermediate code is used. Thus, in the case where there is any failure in an intermediate code converter (converter software) that converts the ladder language program into an intermediate code, the failure may not be discovered even if the designer verifies the intermediate code sentence by sentence, and an emergency stop of a PLC due to an error in executable files may be caused, which is not preferable.
  • As opposed to the method described above, it is also conceivable to prepare two types of intermediate code converter (converter software) to prepare separate intermediate codes from one ladder language program, and to prepare separate executable files from the two types of intermediate code using two types of executable file converters (converter software). In order to maintain the series of programs, however, it is necessary to save the ladder language program, which requires a large storage capacity and thus is not preferable (a ladder language program has a significantly large size compared to intermediate codes and executable files). Alternatively, the two types of intermediate code may be saved instead of saving the ladder language program. However, saving the two types of intermediate code requires an extra storage capacity (compared to a case where one type of intermediate code is saved), which is not preferable.
  • Meanwhile, the control system described in JP 2006-235660 A addresses a special PLC loaded with an interpreter program, and operates slower than a PLC that is loaded with an executable file in a machine language and directly operates on the machine language. In the case where the redundant CPUs of the safety PLC are loaded with an interpreter program and different numerical data programs, the difference in operating time since interpretation until execution of the numerical data programs may be large, which is not preferable.
  • The collation method for a sequence circuit described in JP 9-212212 A may not be applied as a method in which the redundant CPUs of the safety PLC are loaded with separate executable files.
  • Further prior art can be found in document EP 2 151 753 A1 , disclosing a program editing device for programmable controller, wherein a common library stores therein user function blocks and ready-made protected function blocks. By being manipulated by the user, an editing device links some of function programs stored in the function blocks in the library to form a control program which controls the exchange of signals between I/O modules and external devices. A control section in the terminal device allows the alteration of the function programs included in the user function blocks, but inhibits the alteration of the function programs included in the protected function blocks.
  • SUMMARY OF THE INVENTION
  • It is an object of the present invention to provide a programming assist device for a programmable logic controller program and a programming assist method for a programmable logic controller program capable of effortlessly preparing separate executable files for causing redundant CPUs of a PLC to operate, reliably preventing an emergency stop of the PLC due to a failure in converter software, and reducing the storage capacity for maintenance of a program.
  • According to an aspect of the present invention, a programming assist device for a programmable logic controller program, includes:
    • a first intermediate code converter and a second intermediate code converter that are different from each other and that each generate an intermediate code written in a second predetermined language from a program written in a first predetermined language;
    • an inverse converter that generates a program written in the first predetermined language obtained through an inverse conversion from the intermediate code written in the second predetermined language;
    • a first executable file converter and a second executable file converter that are different from each other and that each generate an executable file that is executable by a programmable logic controller from the intermediate code written in the second predetermined language;
    • an intermediate code generation device that generates a first intermediate code from an original program written in the first predetermined language using the first intermediate code converter and that generates a second intermediate code, which is different from the first intermediate code, from the original program, which is used to generate the first intermediate code, using the second intermediate code converter;
    • an inverse conversion program generation device that generates an inverse conversion program obtained through an inverse conversion from the first intermediate code using the inverse converter;
    • a reconverted intermediate code generation device that generates a reconverted first
      intermediate code from the inverse conversion program using the first intermediate code converter and that generates a reconverted second intermediate code, which is different from the reconverted first intermediate code, from the inverse conversion program using the second intermediate code converter;
    • an intermediate code collation device that compares the first intermediate code and the reconverted first intermediate code with each other or compares the second intermediate code and the reconverted second intermediate code with each other;
    • an executable file generation device that generates a first executable file from the reconverted first intermediate code using the first executable file converter and that generates a second executable file, which is different from the first executable file, from the reconverted second intermediate code using the second executable file converter in the case where the codes match each other in the comparison performed by the intermediate code collation device; and
    • a file transfer device that, in a programmable logic controller that includes redundant control devices and storage devices composed of a first control device and a first storage device and a second control device and a second storage device, transfers the first executable file to the first control device to store the first executable file in the first storage device and transfers the second executable file to the second control device to store the second executable file in the second storage device.
  • According to the aspect described above, two types of intermediate code are generated by two different types of intermediate code converter (converter software) from the inverse conversion program generated using the inverse converter and written in the first predetermined language, and thereafter two types of executable file are generated by two different types of executable file converter (converter software). Consequently, it is possible to appropriately stop an output from the PLC in the case where there is any failure in the converter software. Thus, it is possible to reliably prevent an emergency stop of the PLC. In addition, even in the case where there is any failure in the inverse converter (converter software), the failure can be discovered by the collation of the intermediate codes. In addition, it is possible to significantly reduce time and effort by eliminating work in which a designer verifies an intermediate code sentence by sentence.
  • In the programming assist device for a programmable logic controller program according to the above-described aspect of the present invention,
    the intermediate code collation device may be used to compare the first intermediate code and the reconverted first intermediate code with each other and to compare the second intermediate code and the reconverted second intermediate code with each other; and
    the executable file generation device may be used to generate the first executable file from the reconverted first intermediate code using the first executable file converter and to generate the second executable file, which is different from the first executable file, from the reconverted second intermediate code using the second executable file converter in the case where the codes match each other in both the comparisons performed by the intermediate code collation device.
  • According to the aspect described above, a failure in the inverse converter (converter software) can be discovered reliably by collating the second intermediate code and the reconverted second intermediate code with each other in addition to collating the first intermediate code and the reconverted first intermediate code with each other.
  • In the programming assist device for a programmable logic controller program according to the above-described aspect of the present invention,
    the file transfer device may be used to further transfer the first intermediate code to the first control device to store the first intermediate code in the first storage device.
  • According to the aspect described above, only the first intermediate code, which is used to generate the inverse conversion program, is saved for maintenance. Thus, the inverse conversion program, the reconverted first intermediate code, the reconverted second intermediate code, the first executable file, and the second executable file can be generated easily. Accordingly, it is not necessary to save the original program with a large capacity, and it is also not necessary to save two types of intermediate code program. Therefore, it is possible to reduce the storage capacity for saving a program for maintenance.
  • In the programming assist device for a programmable logic controller program according to the above-described aspect of the present invention,
    the first predetermined language is a ladder language, and the second predetermined language is an intermediate language, and
    the intermediate language is a language obtained by converting the ladder language into a text format, and the same intermediate language is applicable to different types of control device that execute the executable file.
  • According to the aspect described above, the designer may prepare the original program in the ladder language, and thus can design the PLC program relatively easily. With the intermediate code written in the intermediate language that is understandable by humans, in addition, the intermediate code can be appropriately verified by the designer even in the case where there is such a need, and can be easily diverted to a variety of CPUs that support different executable file formats, which is significantly convenient.
  • According to another aspect of the present invention, a programming assist method for a programmable logic controller program is performed using a computer including:
    • a first intermediate code converter and a second intermediate code converter that are different from each other and that each generate an intermediate code written in a second predetermined language from a program written in a first predetermined language;
    • an inverse converter that generates a program written in the first predetermined language obtained through an inverse conversion from the intermediate code written in the second predetermined language; and
    • a first executable file converter and a second executable file converter that are different from each other and that each generate an executable file that is executable by a programmable logic controller from the intermediate code written in the second predetermined language. the programming assist method includes:
      1. (a) an intermediate code generation of generating a first intermediate code from an original program written in the first predetermined language using the first intermediate code converter and generating a second intermediate code, which is different from the first intermediate code, from the original program, which is used to generate the first intermediate code, using the second intermediate code converter;
      2. (b) an inverse conversion program generation of generating an inverse conversion program obtained through an inverse conversion from the first intermediate code using the inverse converter;
      3. (c) a reconverted intermediate code generation of generating a reconverted first intermediate code from the inverse conversion program using the first intermediate code converter and generating a reconverted second intermediate code, which is different from the reconverted first intermediate code, from the inverse conversion program using the second intermediate code converter;
      4. (d) an intermediate code collation of comparing the first intermediate code and the reconverted first intermediate code with each other or comparing the second intermediate code and the reconverted second intermediate code with each other;
      5. (e) an executable file generation of generating a first executable file from the reconverted first intermediate code using the first executable file converter and generating a second executable file, which is different from the first executable file, from the reconverted second intermediate code using the second executable file converter in the case where the codes match each other in step (d); and
      6. (f) a file transfer of, in a programmable logic controller that includes redundant control devices and storage devices composed of a first control device and a first storage device and a second control device and a second storage device, transferring the first executable file to the first control device to store the first executable file in the first storage device and transferring the second executable file to the second control device to store the second executable file in the second storage device.
  • According to above-described aspect, it is possible to appropriately implement the preparation assist device for a programmable logic controller program according to the first aspect.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The foregoing and further features and advantages of the invention will become apparent from the following description of example embodiments with reference to the accompanying drawings, wherein like numerals are used to represent like elements and wherein:
    • FIG. 1 is a perspective view illustrating the appearance of a control unit, an input unit, and an output unit that compose a PLC;
    • FIG. 2 illustrates an example of the block configuration of the PLC composed of the control unit, the input unit, and the output unit and the connection of the PLC with a programming assist device for a PLC program;
    • FIG. 3A is a flowchart illustrating the procedure of a process performed by the programming assist device for a PLC program; and
    • FIG. 3B is a flowchart illustrating the procedure of a process performed by the programming assist device for a PLC program; and
    • FIG. 3C is a flowchart illustrating the procedure of a process performed by the programming assist device for a PLC program; and
    • FIG. 4 illustrates the procedure for the programming assist device for a PLC program to generate programs etc. in processes illustrated in FIG. 3A TO 3C.
    DETAILED DESCRIPTION OF EMBODIMENTS
  • An embodiment of the present invention will be described below with reference to the drawings.
  • As illustrated in FIG. 1, a PLC 1 is composed of a control unit 10, an input unit 20, and an output unit 30. The number of input units 20 and output units 30 may be increased as appropriate in accordance with the number of inputs and outputs. An input board 20A that includes a connector 20B for connection with the control unit 10 is housed in the input unit 20. The input unit 20 is provided with an input terminal 20F for connection with wiring that extends from a plurality of input devices (such as sensors and switches). An output board 30A that includes a connector 30C for connection with the control unit 10 is housed in the output unit 30. The output unit 30 is provided with an output terminal 30G for connection with wiring that extends to a plurality of output devices (such as relays and motors). A control board 10A that includes a connector 10B for connection with the input unit 20 and a connector 10C for connection with the output unit 30 is housed in the control unit 10. The control unit 10 is provided with connectors 11G, 12G, and so forth for connection with a programming assist device for a PLC program such as a personal computer. In addition, the control unit 10 is provided with an alarm device 14 that announces occurrence of an abnormality, for example.
  • Next, an example of the block configuration and the connection of the PLC 1 will be described with reference to FIG. 2. Wiring that extends from a plurality of input devices (such as a switch 40A, a sensor 40B through an input apparatus 40N) is connected to the input terminal 20F of the input unit 20. A signal (such as on or off information) about a continuous state of the plurality of input devices is input to the input terminal 20F. The input signal about the continuous state is transferred to the control unit 10 via an interface 21A (hereinafter, the term "interface" will be referred to as "I/F") and the connector 20B.
  • The PLC 1 (e.g. a safety PLC) described in relation to the embodiment has redundant control devices and storage devices. That is, the control unit 10 includes a first control device and a first storage device composed of a first CPU 11A (corresponding to the first control device) and a first RAM 11B and a first ROM 11C (corresponding to the first storage device), respectively, and a second control device and a second storage device composed of a second CPU 12A (corresponding to the second control device) and a second RAM 12B and a second ROM 12C (corresponding to the second storage device), respectively. A rewritable ROM such as an EEPROM or a flash ROM is used as the first ROM 11C and the second ROM 12C. The ROMs store an executable file which is a program to be executed by the CPUs.
  • A user can use a programming assist device 50 for a PLC program such as a personal computer (hereinafter, the programming assist device 50 for a PLC program will be abbreviated as "PC 50") to prepare a program (such as a source code) prepared by the user himself/herself using a ladder language or the like. In the following, the program prepared by the user himself/herself will be called "original program". The user uses the PC 50 to generate two different types of executable file (native code) from an identical ladder language program, and stores a first executable file in the first ROM 11C and stores a second executable file in the second ROM 12C. The first ROM 11C also stores a program for communication with the PC 50 via an I/F 11E and the connector 11G etc. The second ROM 12C also stores a program for communication with the PC 50 via an I/F 12E and the connector 12G etc.
  • The first CPU 11A outputs a computation result based on the first executable file stored in the first ROM 11C and the signal about the continuous state from the input devices input from the input unit 20 via the connector 10B and an I/F 11D to a collation device 10S. In addition, the second CPU 12A outputs a computation result based on the second executable file stored in the second ROM 12C and the signal about the continuous state from the input devices input from the input unit 20 via the connector 10B and an I/F 12D to the collation device 10S. The collation device 10S is a collation circuit, for example. In the case where an output from the first CPU 11A and an output from the second CPU 12A match each other, the collation device 10S outputs the matching output to the output unit 30 via an I/F 10T and the connector 10C. In the case where an output from the first CPU 11A and an output from the second CPU 12A do not match each other, the collation device 10S does not make any output to the I/F 10T, and activates the alarm device 14 (such as an LED or a buzzer) to announce occurrence of an abnormality.
  • Wiring that extends to a plurality of output devices (such as a motor 42A, a relay 42B through an output apparatus 42N) is connected to the output terminal 30G of the output unit 30. The output unit 30 outputs a computation result obtained by the control unit 10 to the output devices connected to the output terminal 30G via the connector 30C and an I/F 31A.
  • Next, the procedure of a process for assisting preparation of a PLC program performed by the PC 50 (a programming assist device for a PLC program) (see FIG. 3A TO 3C) and programs etc. generated in each process (see FIG. 4) will be described with reference to FIGS. 3 and 4. The user uses the PC 50, another personal computer, or the like to prepare an original program, from which executable files to be loaded into the PLC 1 are prepared, and have the prepared original program stored in the PC 50. In the description of the embodiment, the original program is written in a ladder language for sequence control.
  • An intermediate code converter (converter software) is installed in the PC 50. The intermediate code converter generates an intermediate code written in an intermediate language (corresponding to the second predetermined language) from a program (so-called source code) written in the ladder language (corresponding to the first predetermined language). The intermediate language is a language obtained by converting the ladder language into a text format. The same intermediate language is applicable to different types of control device (CPU). In addition, a first intermediate code converter and a second intermediate code converter with different code generation procedures are installed (stored) in the PC 50. Further, an inverse converter (converter software) that generates a program (a program written in the ladder language) obtained through an inverse conversion from the intermediate code written in the intermediate language is installed in the PC 50. Moreover, an executable file converter (converter software) that generates an executable file (a native code such as a machine language) that is executable by the PLC from the intermediate code program written in the intermediate language is installed in the PC 50. A first executable file converter and a second executable file converter that are different from each other are installed in the PC 50. In the following, the procedure of a process in which a PLC program is prepared using the PC 50 in which the converter software described above is installed will be described with reference to FIG. 3A TO 3C, and programs etc. generated in each process will be described with reference to FIG. 4.
  • In step S10, the PC 50 determines whether or not an instruction to start execution is input with the original program (a source code written in the ladder language) selected. In the case where an instruction to start execution is input with the original program selected (Yes), the process proceeds to step S20. Otherwise (No), the process returns to step S10.
  • In the case where the process proceeds to step S20, the PC 50 activates the first intermediate code converter, and generates a first intermediate code from the original program (see FIG. 4). The process proceeds to step S25A. In step S25A, the PC 50 determines whether or not there is any error during generation by the first intermediate code converter. In the case where there is not any error (No), the process proceeds to step S30. In the case where there is any error (Yes), the process proceeds to step S25B. An error message is displayed, and the process is ended. In the case where the process proceeds to step S30, the PC 50 activates the second intermediate code converter, and generates a second intermediate code from the original program (see FIG. 4). The process proceeds to step S35A. In step S35A, the PC 50 determines whether or not there is any error during generation by the second intermediate code converter. In the case where there is not any error (No), the process proceeds to step S40. In the case where there is any error (Yes), the process proceeds to step S35B. An error message is displayed, and the process is ended. The processes in steps S20 and S30 correspond to step (a) (the intermediate code generation). The PC 50 during execution of the processes in steps S20 and S30 corresponds to the intermediate code generation device.
  • In the case where the process proceeds to step S40, the PC 50 activates the inverse converter, and generates an inverse conversion program (ladder language) from the first intermediate code (a program written in the intermediate language) generated in step S20 (see FIG. 4). The process proceeds to step S45A. In step S45A, the PC 50 determines whether or not there is any error during generation by the inverse converter. In the case where there is not any error (No), the process proceeds to step S50. In the case where there is any error (Yes), the process proceeds to step S45B. An error message is displayed, and the process is ended. The process in step S40 corresponds to step (b) (the inverse conversion program generation). The PC 50 during execution of the process in step S40 corresponds to the inverse conversion program generation device.
  • In the case where the process proceeds to step S50, the PC 50 activates the first intermediate code converter, and generates a reconverted first intermediate code (intermediate language) from the inverse conversion program (ladder language) generated in step S40 (see FIG. 4). The process proceeds to step S55A. In step S55A, the PC 50 determines whether or not there is any error during generation by the first intermediate code converter. In the case where there is not any error (No), the process proceeds to step S60. In the case where there is any error (Yes), the process proceeds to step S55B. An error message is displayed, and the process is ended. In the case where the process proceeds to step S60, the PC 50 activates the second intermediate code converter, and generates a reconverted second intermediate code (intermediate language) from the inverse conversion program (ladder language) generated in step S40 (see FIG. 4). The process proceeds to step S65A. In step S65A, the PC 50 determines whether or not there is any error during generation by the second intermediate code converter. In the case where there is not any error (No), the process proceeds to step S70. In the case where there is any error (Yes), the process proceeds to step S65B. An error message is displayed, and the process is ended. The processes in steps S50 and S60 correspond to step (c) (the reconverted intermediate code generation). The PC 50 during execution of the processes in steps S50 and S60 corresponds to the reconverted intermediate code generation device.
  • In the case where the process proceeds to step S70, the PC 50 compares the first intermediate code generated in step S20 and the reconverted first intermediate code generated in step S50 with each other (see FIG. 4). In the case where the codes match each other (Yes), the process proceeds to step S80. In the case where the codes do not match each other (No), the process proceeds to step S75B. An error message is displayed, and the process is ended. In the case where the process proceeds to step S80, the PC 50 compares the second intermediate code generated in step S30 and the reconverted second intermediate code generated in step S60 with each other (see FIG. 4). In the case where the codes match each other (Yes), the process proceeds to step S110. In the case where the codes do not match each other (No), the process proceeds to step S85B. An error message is displayed, and the process is ended. The processes in steps S70 and S80 correspond to step (d) (the intermediate code collation). The PC 50 during execution of the processes in steps S70 and S80 corresponds to the intermediate code collation device. In the process illustrated in FIG. 3A TO 3C, step (e) (the executable file generation) to be discussed later is executed in the case where the first intermediate code and the reconverted first intermediate code match each other and the second intermediate code and the reconverted second intermediate code match each other. However, step (e) to be discussed later may be executed in the case where the first intermediate code and the reconverted first intermediate code match each other or the second intermediate code and the reconverted second intermediate code match each other. That is, one of steps S70 and S80 may be omitted.
  • In the case where the process proceeds to step S110, the PC 50 activates the first executable file converter, and generates a first executable file (machine language) from the reconverted first intermediate code (intermediate language) generated in step S50 (see FIG. 4). The process proceeds to step S115A. In step S115A, the PC 50 determines whether or not there is any error during generation by the first executable file converter. In the case where there is not any error (No), the process proceeds to step S120. In the case where there is any error (Yes), the process proceeds to step S115B. An error message is displayed, and the process is ended. In the case where the process proceeds to step S120, the PC 50 activates the second executable file converter, and generates a second executable file (machine language) from the reconverted second intermediate code (intermediate language) generated in step S60 (see FIG. 4). The process proceeds to step S125A. In step S125A, the PC 50 determines whether or not there is any error during generation by the second executable file converter. In the case where there is not any error (No), the process proceeds to step S130. In the case where there is any error (Yes), the process proceeds to step S125B. An error message is displayed, and the process is ended. The processes in steps S110 and S120 correspond to step (e). The PC 50 during execution of the processes in steps S110 and S120 corresponds to the executable file generation device.
  • In the case where the process proceeds to step S130, the PC 50 transfers the first executable file generated in step S110 to the first CPU 11A via the connector 11G and the I/F 11E (see FIG. 4), and stores the first executable file in the first ROM 11C (see FIG. 2). The process proceeds to step S135A. In step S135A, the PC 50 determines whether or not there is any error during transfer of the first executable file etc. In the case where there is not any error (No), the process proceeds to step S140. In the case where there is any error (Yes), the process proceeds to step S135B. An error message is displayed, and the process is ended. In the case where the process proceeds to step S140, the PC 50 transfers the second executable file generated in step S120 to the second CPU 12A via the connector 12G and the I/F 12E (see FIG. 4), and stores the second executable file in the second ROM 12C (see FIG. 2). The process proceeds to step S145A. In step S145A, the PC 50 determines whether or not there is any error during transfer of the second executable file etc. In the case where there is not any error (No), the process proceeds to step S150. In the case where there is any error (Yes), the process proceeds to step S145B. An error message is displayed, and the process is ended. The processes in steps S130 and S140 correspond to step (f) (the file transfer). The PC 50 during execution of the processes in steps S130 and S140 corresponds to the file transfer device.
  • In the case where the process proceeds to step S150, the PC 50 transfers the first intermediate code generated in step S20 to the first CPU 11A via the connector 11G and the I/F 11E (see FIG. 4), and stores the first intermediate code in the first ROM 11C (see FIG. 2). The process proceeds to step S155A. In step S155A, the PC 50 determines whether or not there is any error during transfer of the first intermediate code etc. In the case where there is not any error (No), the process is ended. In the case where there is any error (Yes), the process proceeds to step S155B. An error message is displayed, and the process is ended. Step S150 may be included in the file transfer S130. The processes in steps S150 to S155B may be omitted.
  • The step in which the first intermediate code is stored in the first ROM 11C corresponds to saving of a program for maintenance. If the first intermediate code is left, the inverse conversion program, the reconverted first intermediate code, the reconverted second intermediate code, the first executable file, and the second executable file can be easily generated by the relevant converter software. Thus, it is not necessary to store the original program and the inverse conversion program written in the ladder language. In this case, the size of the intermediate code in the intermediate language is about one-sixteenth the size of the program in the ladder language. Accordingly, the storage capacity can be significantly reduced. In addition, it is not necessary to store two types of intermediate code, namely the first intermediate code and the second intermediate code, and it is only necessary to store the first intermediate code.
  • In the programming assist method for a PLC program described in relation to the embodiment, two different types of intermediate code are generated from an original program in a first predetermined language using two types of intermediate code converter (converter software) with different code generation procedures, and two types of executable file are generated from the two different types of intermediate code using two types of executable file converter (converter software) with different code generation procedures. Consequently, it is possible to appropriately stop an output from the PLC in the case where there is any failure in the converter software. Thus, it is possible to reliably prevent an emergency stop of the PLC due to an error in executable files. In addition, it is possible to reduce time and effort by eliminating intermediate code verification work according to the related art in which a designer verifies an intermediate code sentence by sentence by comparing the first intermediate code and the reconverted first intermediate code with each other in step S70 and comparing the second intermediate code and the reconverted second intermediate code with each other in step S80. In addition, even in the case where there is any failure in inverse converter (converter software) in step (d), the failure can be discovered appropriately.
  • In addition, it is possible to relatively easily implement a programming assist device (PC 50) for a PLC program that includes:
    • a storage device that stores the first intermediate code converter, the second intermediate code converter, the inverse converter, the first executable file converter, and the second executable file converter; and
    • a control device that executes steps (a) to (f) through execution by the first intermediate code converter, the second intermediate code converter, the inverse converter, the first executable file converter, and the second executable file converter to.
  • The programming assist device for a programmable logic controller program and the programming assist method for a programmable logic controller program according to the present invention are not limited to the process procedure, the configuration, the appearance, and so forth described in relation to the embodiment described above, and may be modified, added, and deleted in various ways without departing from the scope and spirits of the present invention. In addition, the programmable logic controller described in relation to the embodiment is not limited to the configuration, the structure, the appearance, the shape, and so forth described in relation to the embodiment described above, and may be modified, added, and deleted in various ways without departing from the scope and spirits of the present invention.
  • In the description of the embodiment, in addition, the ladder language is used as the first predetermined language, and the intermediate language is used as the second predetermined language. However, the first predetermined language is not limited to the ladder language, and the second predetermined language is not limited to the intermediate language. The numerical values used in the description of the embodiment are exemplary, and the present invention is not limited to such values. In the description of the embodiment, in addition, an inverse conversion program is generated from the first intermediate code, and the first intermediate code is stored in the first ROM. However, an inverse conversion program may be generated from the second intermediate code, and the second intermediate code may be stored in the second ROM.
  • A programming assist device for a PLC program and a programming assist method for a PLC program capable of easily preparing separate executable files for causing redundant CPUs of a PLC to operate and reliably preventing an emergency stop of the PLC due to a failure in converter software are provided. First and second intermediate codes are generated from an original program. An inverse conversion program is generated from the first intermediate code. A reconverted first intermediate code and a reconverted second intermediate code are generated from the inverse conversion program. In the case where the intermediate codes and the reconverted intermediate codes match each other, a first executable file is generated from the reconverted first intermediate code, and a second executable file is generated from the reconverted second intermediate code. The executable files are transferred to the PLC.

Claims (6)

  1. A programming assist device (50) for a programmable logic controller program, comprising:
    a first intermediate code converter (S20) and a second intermediate code converter (S30) that are different from each other and that each generate an intermediate code written in a second predetermined language from a program written in a first predetermined language;
    an inverse converter (S40) that generates a program written in the first predetermined language obtained through an inverse conversion from the intermediate code written in the second predetermined language;
    a first executable file converter (S110) and a second executable file converter (S120) that are different from each other and that each generate an executable file that is executable by a programmable logic controller from the intermediate code written in the second predetermined language;
    an intermediate code generation device that generates a first intermediate code from an original program written in the first predetermined language using the first intermediate code converter (S20) and that generates a second intermediate code, which is different from the first intermediate code, from the original program, which is used to generate the first intermediate code, using the second intermediate code converter (S30);
    an inverse conversion program generation device that generates an inverse conversion program obtained through an inverse conversion from the first intermediate code using the inverse converter (S40);
    a reconverted intermediate code generation device that generates a reconverted first intermediate code from the inverse conversion program using the first intermediate code converter and that generates a reconverted second intermediate code, which is different from the reconverted first intermediate code, from the inverse conversion program using the second intermediate code converter;
    an intermediate code collation device (S70, S80) that compares the first intermediate code and the reconverted first intermediate code with each other or compares the second intermediate code and the reconverted second intermediate code with each other;
    an executable file generation device that generates a first executable file from the reconverted first intermediate code using the first executable file converter (S110) and that generates a second executable file, which is different from the first executable file, from the reconverted second intermediate code using the second executable file converter (S120) in the case where the codes match each other in the comparison performed by the intermediate code collation device (S70, S80); and
    a file transfer device (S130, S140) that, in a programmable logic controller that includes redundant control devices and storage devices composed of a first control device and a first storage device and a second control device and a second storage device, transfers the first executable file to the first control device to store the first executable file in the first storage device and transfers the second executable file to the second control device to store the second executable file in the second storage device.
  2. The programming assist device (50) for a programmable logic controller program according to claim 1, wherein:
    the intermediate code collation device (S70, S80) is used to compare the first intermediate code and the reconverted first intermediate code with each other and to compare the second intermediate code and the reconverted second intermediate code with each other; and
    the executable file generation device is used to generate the first executable file from the reconverted first intermediate code using the first executable file converter (S110) and to generate the second executable file, which is different from the first executable file, from the reconverted second intermediate code using the second executable file converter (S120) in the case where the codes match each other in both the comparisons performed by the intermediate code collation device (S70, S80).
  3. The programming assist device (50) for a programmable logic controller program according to claim 1, wherein
    the file transfer device (S130, S140) is used to further transfer the first intermediate code to the first control device to store the first intermediate code in the first storage device.
  4. The programming assist device (50) for a programmable logic controller program according to claim 2, wherein
    the file transfer device (S130, S140) is used to further transfer the first intermediate code to the first control device to store the first intermediate code in the first storage device.
  5. The programming assist device (50) for a programmable logic controller program according to any one of claims 1 to 4, wherein:
    the first predetermined language is a ladder language, and the second predetermined language is an intermediate language, wherein
    the intermediate language is a language obtained by converting the ladder language into a text format, and the same intermediate language is applicable to different types of control device that execute the executable file.
  6. A programming assist method for a programmable logic controller program, the method being performed using a computer (50) comprising:
    a first intermediate code converter and a second intermediate code converter that are different from each other and that each generate an intermediate code written in a second predetermined language from a program written in a first predetermined language;
    an inverse converter that generates a program written in the first predetermined language obtained through an inverse conversion from the intermediate code written in the second predetermined language; and
    a first executable file converter and a second executable file converter that are different from each other and that each generate an executable file that is executable by a programmable logic controller from the intermediate code written in the second predetermined language, the programming assist method comprising:
    (a) an intermediate code generation of generating (S20) a first intermediate code from an original program written in the first predetermined language using the first intermediate code converter and generating (S30) a second intermediate code, which is different from the first intermediate code, from the original program, which is used to generate the first intermediate code, using the second intermediate code converter;
    (b) an inverse conversion program generation of generating (S40) an inverse conversion program obtained through an inverse conversion from the first intermediate code using the inverse converter;
    (c) a reconverted intermediate code generation of generating (S50) a reconverted first intermediate code from the inverse conversion program using the first intermediate code converter and generating (S60) a reconverted second intermediate code, which is different from the reconverted first intermediate code, from the inverse conversion program using the second intermediate code converter;
    (d) an intermediate code collation of comparing (S70) the first intermediate code and the reconverted first intermediate code with each other or comparing (S80) the second intermediate code and the reconverted second intermediate code with each other;
    (e) an executable file generation of generating (S110) a first executable file from the reconverted first intermediate code using the first executable file converter and generating (S120) a second executable file, which is different from the first executable file, from the reconverted second intermediate code using the second executable file converter in the case where the codes match each other in step (d); and
    (f) a file transfer of, in a programmable logic controller that includes redundant control devices and storage devices composed of a first control device and a first storage device and a second control device and a second storage device, transferring (S130) the first executable file to the first control device to store the first executable file in the first storage device and transferring (S140) the second executable file to the second control device to store the second executable file in the second storage device.
EP15162951.6A 2014-04-10 2015-04-09 Programming assist device for programmable logic controller program and programming assist method for the program Not-in-force EP2930574B1 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014081034A JP6340886B2 (en) 2014-04-10 2014-04-10 Program creation support apparatus for programmable logic controller and program creation support method for programmable logic controller

Publications (3)

Publication Number Publication Date
EP2930574A2 EP2930574A2 (en) 2015-10-14
EP2930574A3 EP2930574A3 (en) 2015-11-25
EP2930574B1 true EP2930574B1 (en) 2018-08-01

Family

ID=52823514

Family Applications (1)

Application Number Title Priority Date Filing Date
EP15162951.6A Not-in-force EP2930574B1 (en) 2014-04-10 2015-04-09 Programming assist device for programmable logic controller program and programming assist method for the program

Country Status (4)

Country Link
US (1) US9921565B2 (en)
EP (1) EP2930574B1 (en)
JP (1) JP6340886B2 (en)
CN (1) CN104977892B (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3413147B1 (en) * 2017-06-07 2022-03-23 Brooks Automation (Germany) GmbH Method for controlling a plc using a pc program
CN109032056B (en) * 2018-06-13 2020-01-10 华东师范大学 Programmable logic controller programming language conversion method
JP6950665B2 (en) * 2018-11-02 2021-10-13 横河電機株式会社 Engineering equipment, control methods and programs for engineering equipment
KR102219387B1 (en) * 2019-09-11 2021-02-23 엘에스일렉트릭(주) Control method for error status of PLC system
JP6808102B1 (en) * 2020-02-14 2021-01-06 三菱電機株式会社 Control system, program creation support device, program creation support method, and program creation support program

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1990008988A1 (en) * 1989-01-25 1990-08-09 Hitachi, Ltd. Method and apparatus for automatically generating control program for computer controlled systems
JPH05134880A (en) * 1991-06-05 1993-06-01 Fujitsu Ltd Digital computer
JP3449095B2 (en) 1996-02-01 2003-09-22 日産自動車株式会社 Sequence circuit collation method
JPH09230915A (en) * 1996-02-26 1997-09-05 Matsushita Electric Works Ltd Programming device
US6654953B1 (en) * 1998-10-09 2003-11-25 Microsoft Corporation Extending program languages with source-program attribute tags
JP3819639B2 (en) * 1999-07-09 2006-09-13 株式会社東芝 Programming device
US7543015B2 (en) * 2002-01-16 2009-06-02 Xerox Corporation Symmetrical structural pattern matching
JP3606281B2 (en) * 2002-06-07 2005-01-05 オムロン株式会社 Programmable controller, CPU unit, special function module, and duplex processing method
US20050193378A1 (en) * 2004-03-01 2005-09-01 Breault Richard E. System and method for building an executable program with a low probability of failure on demand
JP4349231B2 (en) * 2004-07-30 2009-10-21 株式会社ジェイテクト Programmable controller
US7389499B2 (en) * 2004-10-21 2008-06-17 International Business Machines Corporation Method and apparatus for automatically converting numeric data to a processor efficient format for performing arithmetic operations
US7418676B2 (en) * 2005-01-19 2008-08-26 Seiko Epson Corporation Asynchronous circuit design tool and computer program product
JP4443436B2 (en) 2005-02-21 2010-03-31 セイコーインスツル株式会社 Control system and control method
US7844958B2 (en) * 2005-03-11 2010-11-30 Aptana, Inc. System and method for creating target byte code
DE202006000135U1 (en) * 2006-01-05 2006-04-20 Framework Systems Gmbh Device for generating program code of a user program
JP5168012B2 (en) 2008-07-28 2013-03-21 株式会社ジェイテクト Program editing device for programmable controller
US8327316B2 (en) * 2008-09-30 2012-12-04 Ics Triplex Isagraf Inc. Compilation model
JP5576605B2 (en) * 2008-12-25 2014-08-20 パナソニック株式会社 Program conversion apparatus and program conversion method
CN101776877A (en) * 2009-01-12 2010-07-14 鸿富锦精密工业(深圳)有限公司 Program editing system and method for programmable logic controller
JP5515374B2 (en) * 2009-04-02 2014-06-11 富士電機株式会社 Programmable controller, program execution monitoring method, and program
EP2729855A1 (en) * 2011-07-06 2014-05-14 Abb Ag Method and device for the programming and configuration of a programmable logic controller
CN102929214A (en) * 2011-08-11 2013-02-13 西门子公司 Embedded multi-processor parallel processing system and running method for same
US20140282369A1 (en) * 2013-03-14 2014-09-18 Adminovate, Inc. Software application generator
JP6461092B2 (en) * 2013-03-19 2019-01-30 ブルックス シーシーエス ゲーエムベーハーBrooks CCS GmbH Tool compiler
EP2799981A1 (en) * 2013-04-29 2014-11-05 Siemens Aktiengesellschaft Method for providing code, code generator and software development environment
US9411920B2 (en) * 2013-05-14 2016-08-09 National Instruments Corporation Specifying and implementing relative hardware clocking in a high level programming language

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
None *

Also Published As

Publication number Publication date
US9921565B2 (en) 2018-03-20
CN104977892B (en) 2019-03-26
JP6340886B2 (en) 2018-06-13
EP2930574A3 (en) 2015-11-25
CN104977892A (en) 2015-10-14
US20150293515A1 (en) 2015-10-15
EP2930574A2 (en) 2015-10-14
JP2015201132A (en) 2015-11-12

Similar Documents

Publication Publication Date Title
EP2930574B1 (en) Programming assist device for programmable logic controller program and programming assist method for the program
EP1744230B1 (en) Safety programmable logic controller
JP4952401B2 (en) PLC
JP2008306710A (en) Method and system for modifying turbine control system
US9176734B2 (en) Ladder program creation apparatus
JP6139386B2 (en) Programmable controller
EP2541349A2 (en) Inverter system having a safety module
US20190012168A1 (en) Program generating apparatus
CN108572611B (en) Information processing apparatus, information processing method, and computer-readable recording medium
US10901387B2 (en) Control system for an industrial automation facility and method for programming and operating such a control system
CN111095138B (en) Control device, control method for control device, information processing program, and recording medium
JPH03229352A (en) Program changing method
JP2007011713A (en) Editing device for programmable controller
JP5725974B2 (en) Power distribution monitoring control system
KR20160135162A (en) Programmable logic controller system and arithmetic unit
JP2007304939A (en) Programmable controller and monitor
CN107636956B (en) PLC function built-in type drive control device
JP2008165324A (en) Program creation support device
CN113297085B (en) SOC platform-based algorithm verification method and device
KR101418478B1 (en) Fly-By-Wire Flight control system having an executing data verification function and controlling method therefor
JP2014098985A (en) Safety slave unit, control method thereof, control program thereof, and safety control system
KR101599209B1 (en) System and method for outputting electronic documents with customized fonts in different platforms
KR100423742B1 (en) Exclusive control system by sequential function chart
CN116056841A (en) Robot control system
JP2015156068A (en) Program collating device

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

AX Request for extension of the european patent

Extension state: BA ME

PUAL Search report despatched

Free format text: ORIGINAL CODE: 0009013

AK Designated contracting states

Kind code of ref document: A3

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

AX Request for extension of the european patent

Extension state: BA ME

RIC1 Information provided on ipc code assigned before grant

Ipc: G05B 19/05 20060101ALI20151021BHEP

Ipc: G05B 19/042 20060101AFI20151021BHEP

17P Request for examination filed

Effective date: 20160524

REG Reference to a national code

Ref country code: DE

Ref legal event code: R079

Ref document number: 602015014177

Country of ref document: DE

Free format text: PREVIOUS MAIN CLASS: G05B0019042000

Ipc: G06F0008400000

GRAP Despatch of communication of intention to grant a patent

Free format text: ORIGINAL CODE: EPIDOSNIGR1

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: GRANT OF PATENT IS INTENDED

RIC1 Information provided on ipc code assigned before grant

Ipc: G05B 19/042 20060101AFI20180130BHEP

Ipc: G05B 19/05 20060101ALI20180130BHEP

RIC1 Information provided on ipc code assigned before grant

Ipc: G06F 8/40 20180101AFI20180202BHEP

Ipc: G05B 19/05 20060101ALI20180202BHEP

Ipc: G05B 19/042 20060101ALI20180202BHEP

INTG Intention to grant announced

Effective date: 20180221

GRAS Grant fee paid

Free format text: ORIGINAL CODE: EPIDOSNIGR3

GRAA (expected) grant

Free format text: ORIGINAL CODE: 0009210

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE PATENT HAS BEEN GRANTED

AK Designated contracting states

Kind code of ref document: B1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

REG Reference to a national code

Ref country code: GB

Ref legal event code: FG4D

REG Reference to a national code

Ref country code: CH

Ref legal event code: EP

Ref country code: AT

Ref legal event code: REF

Ref document number: 1025076

Country of ref document: AT

Kind code of ref document: T

Effective date: 20180815

REG Reference to a national code

Ref country code: IE

Ref legal event code: FG4D

REG Reference to a national code

Ref country code: DE

Ref legal event code: R096

Ref document number: 602015014177

Country of ref document: DE

REG Reference to a national code

Ref country code: NL

Ref legal event code: MP

Effective date: 20180801

REG Reference to a national code

Ref country code: LT

Ref legal event code: MG4D

REG Reference to a national code

Ref country code: AT

Ref legal event code: MK05

Ref document number: 1025076

Country of ref document: AT

Kind code of ref document: T

Effective date: 20180801

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: FI

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

Ref country code: PL

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

Ref country code: IS

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20181201

Ref country code: RS

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

Ref country code: SE

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

Ref country code: NO

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20181101

Ref country code: GR

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20181102

Ref country code: AT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

Ref country code: BG

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20181101

Ref country code: NL

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

Ref country code: LT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

REG Reference to a national code

Ref country code: CH

Ref legal event code: PK

Free format text: BERICHTIGUNGEN

RIC2 Information provided on ipc code assigned after grant

Ipc: G06F 8/40 20180101AFI20180202BHEP

Ipc: G05B 19/042 20060101ALI20180202BHEP

Ipc: G05B 19/05 20060101ALI20180202BHEP

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: HR

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

Ref country code: LV

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

Ref country code: AL

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: RO

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

Ref country code: ES

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

Ref country code: CZ

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

Ref country code: EE

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

Ref country code: IT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

REG Reference to a national code

Ref country code: DE

Ref legal event code: R097

Ref document number: 602015014177

Country of ref document: DE

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: SM

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

Ref country code: DK

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

Ref country code: SK

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

PLBE No opposition filed within time limit

Free format text: ORIGINAL CODE: 0009261

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT

26N No opposition filed

Effective date: 20190503

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: SI

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

REG Reference to a national code

Ref country code: CH

Ref legal event code: PL

REG Reference to a national code

Ref country code: BE

Ref legal event code: MM

Effective date: 20190430

GBPC Gb: european patent ceased through non-payment of renewal fee

Effective date: 20190409

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: LU

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20190409

Ref country code: MC

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: LI

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20190430

Ref country code: GB

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20190409

Ref country code: CH

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20190430

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: BE

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20190430

Ref country code: FR

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20190430

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: TR

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: IE

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20190409

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: PT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20181201

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: CY

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: HU

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT; INVALID AB INITIO

Effective date: 20150409

Ref country code: MT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: DE

Payment date: 20210316

Year of fee payment: 7

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: MK

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180801

REG Reference to a national code

Ref country code: DE

Ref legal event code: R119

Ref document number: 602015014177

Country of ref document: DE

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: DE

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20221103