WO2015145562A1 - プログラミング装置及び実行コード生成方法 - Google Patents

プログラミング装置及び実行コード生成方法 Download PDF

Info

Publication number
WO2015145562A1
WO2015145562A1 PCT/JP2014/058195 JP2014058195W WO2015145562A1 WO 2015145562 A1 WO2015145562 A1 WO 2015145562A1 JP 2014058195 W JP2014058195 W JP 2014058195W WO 2015145562 A1 WO2015145562 A1 WO 2015145562A1
Authority
WO
WIPO (PCT)
Prior art keywords
safety
cpu
drive
function block
execution code
Prior art date
Application number
PCT/JP2014/058195
Other languages
English (en)
French (fr)
Inventor
浩夫 神余
輝顕 伊東
新 山本
Original Assignee
三菱電機株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 三菱電機株式会社 filed Critical 三菱電機株式会社
Priority to JP2014526728A priority Critical patent/JP5619331B1/ja
Priority to PCT/JP2014/058195 priority patent/WO2015145562A1/ja
Publication of WO2015145562A1 publication Critical patent/WO2015145562A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • 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
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/14Plc safety
    • G05B2219/14012Safety integrity level, safety integrated systems, SIL, SIS
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23469Execute alternatively a failsafe, proven program and a non failsafe program

Definitions

  • the present invention relates to a technique for generating an execution code of a program executed by a controller that performs drive control and safety control.
  • Controllers such as PLC (Programmable Logic Controller) used for controlling automatic machines in factories and the like are known.
  • a controller performs drive control and sequence control.
  • the drive control for example, a servo amplifier that drives a servo motor is controlled to control the speed and rotation angle of the drive shaft.
  • the sequence control includes, for example, controlling the operation of devices around the servo motor in response to the operation of the external switch.
  • Patent Document 1 discloses a PLC that performs drive control and sequence control. Specifically, the cam operation is realized by motion control using a cam table. On the other hand, switching of the cam table is realized by sequence control. The motion control and sequence control are executed by one CPU unit of the PLC.
  • safety control In a controller such as a PLC, safety functions such as system emergency stop and drive axis speed monitoring and stop are also important. Such a safety function can be realized by sequence control.
  • sequence control for the safety function is hereinafter referred to as “safety control”.
  • An object of the present invention is to provide a technique useful for programming a controller that performs drive control and safety control.
  • a programming device that generates an execution code of a program executed by a controller.
  • the controller includes a drive CPU that performs drive control of a drive device connected to the controller, and a safety CPU that performs safety control of the drive device.
  • the programming device includes a compiler that generates drive CPU execution code executed by the drive CPU and safe CPU execution code executed by the safety CPU.
  • the compiler compiles a source program including both a driving function block for driving control and a safety function block for safety control, generates driving CPU execution code by assigning the driving function block to the driving CPU, and Then, a safety CPU execution code is generated by assigning the safety function block to the safety CPU.
  • an execution code generation method for generating an execution code of a program executed by a controller.
  • the controller includes a drive CPU that performs drive control of a drive device connected to the controller, and a safety CPU that performs safety control of the drive device.
  • the execution code generation method includes a step of generating a drive CPU execution code executed by the drive CPU and a safety CPU execution code executed by the safety CPU.
  • the generating step compiles a source program including both a driving function block for driving control and a safety function block for safety control, and generates a driving CPU execution code by assigning the driving function block to the driving CPU. And generating a safety CPU execution code by assigning the safety function block to the safety CPU.
  • the present invention is useful for programming a controller that performs drive control and safety control.
  • FIG. 1 is a block diagram showing an outline of the first embodiment of the present invention.
  • FIG. 2 is a block diagram illustrating a configuration example of the programming device according to the first embodiment of the present invention.
  • FIG. 3 is a block diagram showing an outline of the second embodiment of the present invention.
  • FIG. 4 is a table showing an example of safety POU configuration information in Embodiment 2 of the present invention.
  • FIG. 5 is a block diagram showing a configuration example of a programming device according to the second embodiment of the present invention.
  • FIG. 6 is a flowchart schematically showing the processing when the safety POU configuration information is used.
  • FIG. 7 is a block diagram showing an outline of the third embodiment of the present invention.
  • FIG. 1 is a block diagram showing an outline of the first embodiment of the present invention.
  • FIG. 2 is a block diagram illustrating a configuration example of the programming device according to the first embodiment of the present invention.
  • FIG. 3 is a block diagram showing an outline of the second embodiment of the present invention.
  • FIG. 8 is a table showing an example of the safety POU configuration information in the third embodiment of the present invention.
  • FIG. 9 is a block diagram showing an outline of the fourth embodiment of the present invention.
  • FIG. 10 is a table showing an example of the safety POU configuration information in the fourth embodiment of the present invention.
  • FIG. 1 is a block diagram showing an outline of the first embodiment of the present invention.
  • the safe drive controller 1 is a controller such as a PLC (Programmable Logic Controller) used in a factory or the like.
  • PLC Programmable Logic Controller
  • the safe drive controller 1 is connected to the drive device 30 and performs drive control of the drive device 30.
  • Examples of the drive device 30 include an inverter and a servo amplifier that drives a servo motor.
  • the drive control includes controlling the speed and rotation angle of the drive shaft by controlling an inverter and a servo amplifier.
  • the safety drive controller 1 also performs safety control related to the drive device 30.
  • the safety drive controller 1 is connected to the safety device 40, and performs safety control in response to an input from the safety device 40, or operates the safety device 40 for safety control.
  • the safety control may include an emergency stop of the system in response to the operation of the emergency stop switch.
  • the safety device 40 is an encoder provided in a motor
  • the speed control of the drive shaft can be performed based on the rotational speed detected by the encoder as the safety control.
  • the safety control includes turning off the relay.
  • the safe drive controller 1 performs both drive control and safety control.
  • separate CPUs are used for drive control and safety control in order to realize high-speed and high-precision arithmetic processing in drive control.
  • the safe drive controller 1 is equipped with a drive CPU 10 and a safety CPU 20 separately.
  • the drive CPU 10 is connected to the drive device 30 and has a function of performing drive control as described above.
  • the safety CPU 20 is connected to the safety device 40 and has a function of performing the above-described safety control.
  • the drive CPU 10 and the safety CPU 20 are connected so as to communicate with each other.
  • the drive CPU 10 and the safety CPU 20 may be realized by a dual core processor.
  • drive control requires faster processing than safety control.
  • a processing speed of ms or less is required for drive control, while a processing speed of safety control may be about 10 ms.
  • a drive CPU 10 having a higher processing performance than the safety CPU 20 is used.
  • the source code of the program executed by the safe drive controller 1 includes both drive control and safety control, and is hereinafter referred to as “safe drive program SRC”. That is, both drive control and safety control are described in the safe drive program SRC which is one source code.
  • one safe driving program SRC includes both a driving POU and a safety POU.
  • the driving POU and the safety POU are described in combination in one safe driving program SRC.
  • the execution code of the safe drive program SRC includes a drive CPU execution code EXE1 executed by the drive CPU 10 and a safe CPU execution code EXE2 executed by the safety CPU 20.
  • the drive CPU execution code EXE1 and the safety CPU execution code EXE2 are separate execution codes and are supplied to the drive CPU 10 and the safety CPU 20, respectively.
  • the drive CPU 10 performs drive control by executing the drive CPU execution code EXE1, and the safety CPU 20 performs safety control by executing the safety CPU execution code EXE2.
  • the drive control and the safety control of the drive device 30 are realized as the safety drive controller 1 as a whole.
  • the compiler 100 generates these drive CPU execution code EXE1 and safe CPU execution code EXE2 from the safe drive program SRC.
  • the compiler 100 reads one safe drive program SRC and compiles the safe drive program SRC, thereby generating the drive CPU execution code EXE1 and the safe CPU execution code EXE2 simultaneously and separately.
  • the compiler 100 identifies the driving POU and the safety POU based on the POU name or name prefix. Then, the compiler 100 assigns a safety POU or an interface for connecting different safety POUs to the safety CPU 20 and its memory. Further, the compiler 100 assigns an interface connecting the driving POU and the safety POU to a shared memory used for communication between the driving CPU 10 and the safety CPU 20.
  • the interface means a memory address or a variable.
  • the compiler 100 assigns the drive CPU 10 with excellent processing performance and its memory. That is, the compiler 100 assigns the drive POU and an interface for connecting different drive POUs to the drive CPU 10 and its memory. Further, when a POU related to a certain process can be assigned to either the driving CPU 10 or the safety CPU 20, that is, when both can be executed, the compiler 100 preferentially assigns the POU and its interface to the driving CPU 10 and its memory.
  • the compiler 100 generates the drive CPU execution code EXE1 and the safe CPU execution code EXE2 at the same time by such assignment.
  • the generated drive CPU execution code EXE1 and safety CPU execution code EXE2 are transferred to the drive CPU 10 and the safety CPU 20 of the safe drive controller 1, respectively. Then, after the safety drive controller 1 is reset, each of the drive CPU 10 and the safety CPU 20 starts executing the drive CPU execution code EXE1 and the safety CPU execution code EXE2.
  • FIG. 2 is a block diagram illustrating a configuration example of the programming device 110 that implements the compiler 100 according to the present embodiment.
  • the programming device 110 is a computer, and includes a processing device 120, a storage device 130, a controller communication unit 140, an input device 150, and a display device 160.
  • the processing device 120 is a processor such as a CPU, and executes various arithmetic processes and control processes.
  • the storage device 130 includes RAM and HDD.
  • the storage device 130 stores a safe driving program SRC as source code, a library LIB for compile processing, execution codes EXE1 and EXE2 generated by compilation, and the like.
  • the controller communication unit 140 is used for data communication with the safe drive controller 1.
  • the input device 150 includes a keyboard and a mouse. The user can create and edit the safe driving program SRC, and input commands and various data using the input device 150 while referring to information displayed on the display device 160. An example of the command is compile execution.
  • the compiler 100 is realized by the processing device 120 executing a compiler program.
  • the compiler program may be recorded on a computer-readable recording medium.
  • the compiler 100 acquires the safe driving program SRC stored in the storage device 130 and compiles the safe driving program SRC.
  • the compiler 100 may use a library LIB file that has already been created.
  • a drive CPU execution code EXE1 and a safe CPU execution code EXE2 are generated.
  • the generated drive CPU execution code EXE1 and safe CPU execution code EXE2 are transferred to the safe drive controller 1 via the controller communication unit 140.
  • the compiler 100 compiles the safe drive program SRC including both the drive control and the safety control, and separately sets the drive CPU execution code EXE1 and the safety CPU execution code EXE2. Can be generated. That is, the drive control and the safety control can be described in one source code, and the execution codes for the drive CPU 10 and the safety CPU 20 can be obtained by one compilation. Since it is not necessary to describe drive control and safety control in separate programs, the number of programming steps can be reduced.
  • the drive CPU 10 for drive control and the safety CPU 20 for safety control are provided separately.
  • the driving control requires higher speed processing than the safety control
  • a driving CPU having a processing performance higher than that of the safety CPU 20 is used.
  • processing is preferentially assigned to the drive CPU 10 having excellent processing performance. Thereby, the processing speed as a whole is improved.
  • FIG. FIG. 3 is a block diagram showing an outline of the second embodiment of the present invention.
  • the description which overlaps with previous embodiment is abbreviate
  • the safety CPU 20 of the safe drive controller 1 incorporates the authentication safety POU 21.
  • the certified safety POU is a safety POU that complies with safety standards.
  • the safety drive controller 1 collects configuration information related to the authentication safety POU 21 in the safety CPU 20 and creates safety POU configuration information CONF.
  • FIG. 4 shows the safety POU configuration information CONF in this example.
  • the data structure of a POU has a name, an interface, and processing logic.
  • the interface is a structure, and the processing logic is a pointer to a function.
  • the STO controls the safety output (Sout) based on the logical product of two inputs (Emg0 / Emg1).
  • the safety drive controller 1 collects configuration information related to the authentication safety POU 21 built in the safety CPU 20 and creates safety POU configuration information CONF indicating the list. Then, the safe drive controller 1 transmits the created safe POU configuration information CONF to the programming device 110.
  • the programming device 110 may read the safety POU configuration information CONF from the safety drive controller 1 at a certain timing, for example, when compiling. In any case, the programming device 110 acquires the safety POU configuration information CONF and stores the safety POU configuration information CONF in the storage device 130, as shown in FIG.
  • the compiler 100 reads the safety POU configuration information CONF from the storage device 130. Then, the compiler 100 refers to the safety POU configuration information CONF and checks whether or not the authentication safety POU 21 having the same name as the safety POU included in the safety drive program SRC is built in the safety CPU 20.
  • the compiler 100 uses the authentication safety POU 21 built in the safety CPU 20 instead of compiling the safety POU.
  • the safe CPU execution code EXE2 is generated.
  • the compiler 100 compares the two interfaces and adjusts the interface. Specifically, matching interfaces are used as they are, and surplus or deficient interfaces are ignored or supplemented in accordance with the safety POU configuration information CONF. Others are the same as in the first embodiment.
  • FIG. 6 is a flowchart schematically showing processing when the safety POU configuration information CONF is used.
  • Step S1 The safe drive controller 1 creates the safe POU configuration information CONF.
  • the programming device 110 acquires the safety POU configuration information CONF.
  • Step S10 The compiler 100 compiles the safe drive program SRC and generates a drive CPU execution code EXE1 and a safe CPU execution code EXE2. At this time, the compiler 100 refers to the safety POU configuration information CONF (step S11). It is assumed that the authentication safety POU 21 having the same name as the safety POU in the safety drive program SRC is built in the safety CPU 20 (step S12; No, step S14; Yes). In this case, the compiler 100 generates the safety CPU execution code EXE2 so as to use the authentication safety POU 21 of the safety CPU 20 (step S15).
  • Step S20 The programming device 110 transfers the generated drive CPU execution code EXE1 and safe CPU execution code EXE2 to the drive CPU 10 and the safety CPU 20 of the safe drive controller 1, respectively.
  • the same effect as in the first embodiment can be obtained. Furthermore, the following effects can also be obtained.
  • the present embodiment it is possible to perform safety control using the authenticated safety POU 21 built in the safety CPU 20 instead of the unauthenticated safety POU. Therefore, even when the safety driving program SRC that has not undergone the safety standard certification examination is used, it is possible to realize an execution environment that conforms to the safety standard. This is preferable from the viewpoint of improving safety.
  • the size of the safety CPU execution code EXE2 is reduced.
  • the compiler 100 automatically replaces the unauthenticated safety POU with the authenticated safety POU 21 by referring to the safety POU configuration information CONF. That is, it is not necessary to rewrite the safe driving program SRC including the unauthenticated safety POU. This also contributes to a reduction in program man-hours.
  • the safety POU configuration information CONF is automatically created by the safe drive controller 1 and sent to the programming device 110. That is, the safety POU configuration information CONF is automatically updated. Accordingly, the number of man-hours for setting related to the authentication safety POU 21 is also reduced.
  • the safety CPU 20 is replaced with the latest safety CPU 20 including the authentication safety POU 21.
  • the safety POU configuration information CONF is automatically updated.
  • the compiler 100 generates the drive CPU execution code EXE1 and the safe CPU execution code EXE2 based on the latest safety POU configuration information CONF.
  • the execution code optimized for the latest configuration can be obtained only by compiling once after the replacement of the safety CPU 20.
  • the safe drive program SRC may be developed and debugged by using the simulator.
  • the safety POU configuration information CONF cannot be acquired from the actual machine of the safety drive controller 1, but the safety POU configuration information CONF can be appropriately created using the input device 150 of the programming device 110.
  • the compiler 100 generates the driving CPU execution code EXE1 and the safe CPU execution code EXE2 for the simulator by referring to the safety POU configuration information CONF.
  • the safe drive program SRC can be developed and debugged without an actual machine of the safe drive controller 1.
  • the compiling may be performed again based on the safety POU configuration information CONF of the actual machine.
  • FIG. 7 is a block diagram showing an outline of the third embodiment of the present invention.
  • the description which overlaps with previous embodiment is abbreviate
  • the drive device 30 connected to the drive CPU 10 includes an authentication safety POU 31.
  • the drive CPU 10 can use the authentication safety POU 31 built in the drive device 30.
  • the drive device 30 is a servo amplifier
  • the servo amplifier incorporates an authentication safety POU 31 called “STO (Safe Torque Off)”.
  • the drive CPU 10 can use the STO built in the servo amplifier by outputting an external signal to the servo amplifier.
  • FIG. 8 shows the safety POU configuration information CONF in this example.
  • the interface is the I / O address of the drive CPU 10
  • the processing logic is a dummy. That is, when the drive CPU 10 outputs a signal to the interface, STO is executed on the servo amplifier side.
  • the safe drive controller 1 collects the configuration information related to the authentication safety POU 31 in the drive CPU 10 and the drive device 30, and creates the safety POU configuration information CONF indicating the list. Then, the safe drive controller 1 transmits the created safe POU configuration information CONF to the programming device 110.
  • the programming device 110 may read the safety POU configuration information CONF from the safety drive controller 1 at a certain timing, for example, when compiling. In any case, the programming device 110 acquires the safety POU configuration information CONF and stores the safety POU configuration information CONF in the storage device 130, as shown in FIG.
  • the compiler 100 reads the safety POU configuration information CONF from the storage device 130. Then, the compiler 100 refers to the safety POU configuration information CONF to check whether the authentication safety POU 31 having the same name as the safety POU included in the safety drive program SRC is built in the drive device 30.
  • the compiler 100 When the authentication safety POU 31 having the same name as the safety POU in the safety drive program SRC is built in the drive device 30, the compiler 100 does not compile the safety POU but the authentication safety POU 31 built in the drive device 30.
  • the drive CPU execution code EXE1 is generated so as to be used.
  • the compiler 100 compares the two interfaces and adjusts the interface. Specifically, matching interfaces are used as they are, and surplus or deficient interfaces are ignored or supplemented in accordance with the safety POU configuration information CONF. Others are the same as in the first embodiment.
  • steps S1, S11, and S20 are the same as those in the second embodiment. It is assumed that the authentication safety POU 31 having the same name as the safety POU in the safety drive program SRC is built in the drive device 30 (step S12; Yes). In this case, the compiler 100 generates the drive CPU execution code EXE1 so as to use the authentication safety POU 31 of the drive device 30 (step S13).
  • the same effect as in the first embodiment can be obtained. Furthermore, the following effects can also be obtained.
  • the present embodiment it is possible to perform safety control using the authenticated safety POU 31 built in the drive device 30 instead of the unauthenticated safety POU. Therefore, even when the safety driving program SRC that has not undergone the safety standard certification examination is used, it is possible to realize an execution environment that conforms to the safety standard. This is preferable from the viewpoint of improving safety.
  • the size of the drive CPU execution code EXE1 is reduced.
  • the compiler 100 automatically replaces the unauthenticated safety POU with the authenticated safety POU 31 by referring to the safety POU configuration information CONF. That is, it is not necessary to rewrite the safe driving program SRC including the unauthenticated safety POU. This also contributes to a reduction in program man-hours.
  • the safety POU configuration information CONF is automatically created by the safe drive controller 1 and sent to the programming device 110. That is, the safety POU configuration information CONF is automatically updated. Accordingly, the number of man-hours for setting the authentication safety POU 31 is also reduced.
  • the drive device 30 has been replaced with the latest drive device 30 incorporating the authentication safety POU 31.
  • the safety POU configuration information CONF is automatically updated.
  • the compiler 100 generates the drive CPU execution code EXE1 and the safe CPU execution code EXE2 based on the latest safety POU configuration information CONF. That is, the execution code optimized for the latest configuration can be obtained only by performing compilation once after the replacement of the drive device 30.
  • FIG. 9 is a block diagram showing an outline of the fourth embodiment of the present invention.
  • the description which overlaps with previous embodiment is abbreviate
  • the configuration of the present embodiment is a combination of the above-described second and third embodiments. That is, the safety CPU 20 of the safety drive controller 1 has the authentication safety POU 21 built therein. Further, the drive device 30 connected to the drive CPU 10 incorporates an authentication safety POU 31. The drive CPU 10 can use the authentication safety POU 31 built in the drive device 30.
  • the safety drive controller 1 collects configuration information regarding the authentication safety POUs 21 and 31 in the safety CPU 20, the drive CPU 10, and the drive device 30, and creates safety POU configuration information CONF indicating the list.
  • FIG. 10 shows an example of the safety POU configuration information CONF in the present embodiment. The example shown in FIG. 10 is a combination of FIGS. 4 and 8 described above.
  • Steps S1, S11, and S20 are the same as those in the above-described embodiment.
  • the compiler 100 refers to the safety POU configuration information CONF and checks whether the authentication safety POU 31 having the same name as the safety POU included in the safety drive program SRC is built in the drive device 30 (step S12).
  • the compiler 100 is built in the drive device 30 instead of compiling the safety POU.
  • the driving CPU execution code EXE1 is generated so as to use the authenticated safety POU 31 (step S13).
  • the process proceeds to step S14.
  • step S14 the compiler 100 refers to the safety POU configuration information CONF and checks whether the safety CPU 20 has an authentication safety POU 21 having the same name as the safety POU included in the safety drive program SRC.
  • the compiler 100 is built in the safety CPU 20 instead of compiling the safety POU.
  • the secure CPU execution code EXE2 is generated so as to use the authenticated authentication POU 21 (step S15).
  • the process proceeds to step S16.
  • step S16 the compiler 100 compiles in the same manner as in the first embodiment.
  • the library LIB is certified to comply with safety standards.
  • the compiler 100 generates the drive CPU execution code EXE1 so as to use the authentication safety POU 31 built in the drive device 30 (step S13). ). In other words, if possible, compilation is performed so that the driving CPU 10 having a high processing speed executes the processing related to the authentication safety POU. This is preferable from the viewpoint of processing speed and responsiveness of the safety function. Further, since the authentication safety POU 21 built in the safety CPU 20 is not used, there is a possibility that the number of parts can be reduced accordingly.
  • “STO” is incorporated in both the safety CPU 20 and the servo amplifier that is the drive device 30.
  • the compiler 100 generates the drive CPU execution code EXE1 to use the STO of the servo amplifier instead of compiling “STO” in the safe drive program SRC. That is, the drive CPU 10 executes processing related to STO. This is preferable from the viewpoint of processing speed and responsiveness of the safety function.
  • the STO of the safety CPU 20 is not used, it is not necessary to provide a relay between the servo amplifier and the servo motor. That is, the number of parts can be reduced.
  • the same effect as in the second and third embodiments can be obtained. Furthermore, the following effects can also be obtained. That is, by using the authentication safety POU 31 incorporated in the drive device 30 preferentially, the processing speed and the responsiveness of the safety function are improved. In addition, the number of parts is reduced.
  • STO was cited as an example of a safety POU.
  • the safety POU is not limited to that.
  • SLS safe speed monitoring
  • safety drive controller 10 drive CPU, 20 safety CPU, 21 authentication safety POU, 30 drive device, 31 authentication safety POU, 40 safety device, 100 compiler, 110 programming device, 120 processing device, 130 storage device, 140 controller communication unit , 150 input device, 160 display device, CONF safety POU configuration information, EXE1 driving CPU execution code, EXE2 safety CPU execution code, LIB library, SRC safety driving program.

Landscapes

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

Abstract

コントローラ(1)は、駆動制御を行う駆動CPU(10)と、安全制御を行う安全CPU(20)と、を備える。プログラミング装置は、駆動CPU(10)が実行する駆動CPU実行コードと安全CPU(20)が実行する安全CPU実行コードとを生成するコンパイラ(100)を備える。コンパイラ(100)は、駆動制御のための駆動機能ブロックと安全制御のための安全機能ブロックとの両方を含むソースプログラムをコンパイルし、駆動機能ブロックを駆動CPU(10)に割り当てることによって駆動CPU実行コードを生成し、また、安全機能ブロックを安全CPU(20)に割り当てることによって安全CPU実行コードを生成する。

Description

プログラミング装置及び実行コード生成方法
 本発明は、駆動制御と安全制御を行うコントローラが実行するプログラムの実行コードを生成する技術に関する。
 工場等における自動機械の制御に用いられるPLC(Programmable Logic Controller)等のコントローラが知られている。そのようなコントローラは、駆動制御やシーケンス制御を行う。駆動制御として、例えば、サーボモータを駆動するサーボアンプを制御して、駆動軸の速度や回転角度を制御することが挙げられる。シーケンス制御として、例えば、外部スイッチの動作に応答してサーボモータ周辺の機器の動作を制御することが挙げられる。
 特許文献1は、駆動制御とシーケンス制御を行うPLCを開示している。具体的には、カム動作が、カムテーブルを用いたモーション制御によって実現される。一方、カムテーブルの切り替えが、シーケンス制御により実現される。それらモーション制御とシーケンス制御は、PLCの1つのCPUユニットによって実行される。
特許第4807475号公報
 PLC等のコントローラにおいて、システムの非常停止、駆動軸の速度監視や停止といった安全機能も重要である。そのような安全機能はシーケンス制御により実現され得る。安全機能のためのシーケンス制御は、以下「安全制御」と呼ばれる。
 駆動制御と安全制御は、異なる概念で設計されるため、それらを別々のプログラムに記述することも考えられる。しかしながら、その場合、プログラミング工数が増大する。
 本発明の1つの目的は、駆動制御と安全制御を行うコントローラに対するプログラミングに有用な技術を提供することにある。
 本発明の1つの観点において、コントローラが実行するプログラムの実行コードを生成するプログラミング装置が提供される。コントローラは、コントローラに接続された駆動装置の駆動制御を行う駆動CPUと、駆動装置の安全制御を行う安全CPUと、を備える。プログラミング装置は、駆動CPUが実行する駆動CPU実行コードと安全CPUが実行する安全CPU実行コードとを生成するコンパイラを備える。コンパイラは、駆動制御のための駆動機能ブロックと安全制御のための安全機能ブロックとの両方を含むソースプログラムをコンパイルし、駆動機能ブロックを駆動CPUに割り当てることによって駆動CPU実行コードを生成し、また、安全機能ブロックを安全CPUに割り当てることによって安全CPU実行コードを生成する。
 本発明の他の観点において、コントローラが実行するプログラムの実行コードを生成する実行コード生成方法が提供される。コントローラは、コントローラに接続された駆動装置の駆動制御を行う駆動CPUと、駆動装置の安全制御を行う安全CPUと、を備える。実行コード生成方法は、駆動CPUが実行する駆動CPU実行コードと安全CPUが実行する安全CPU実行コードとを生成するステップを有する。当該生成するステップは、駆動制御のための駆動機能ブロックと安全制御のための安全機能ブロックとの両方を含むソースプログラムをコンパイルし、駆動機能ブロックを駆動CPUに割り当てることによって駆動CPU実行コードを生成し、また、安全機能ブロックを安全CPUに割り当てることによって安全CPU実行コードを生成するステップを含む。
 本発明は、駆動制御と安全制御を行うコントローラに対するプログラミングに有用である。
図1は、本発明の実施の形態1の概要を示すブロック図である。 図2は、本発明の実施の形態1に係るプログラミング装置の構成例を示すブロック図である。 図3は、本発明の実施の形態2の概要を示すブロック図である。 図4は、本発明の実施の形態2における安全POU構成情報の例を示すテーブルである。 図5は、本発明の実施の形態2に係るプログラミング装置の構成例を示すブロック図である。 図6は、安全POU構成情報が利用される場合の処理を要約的に示すフローチャートである。 図7は、本発明の実施の形態3の概要を示すブロック図である。 図8は、本発明の実施の形態3における安全POU構成情報の例を示すテーブルである。 図9は、本発明の実施の形態4の概要を示すブロック図である。 図10は、本発明の実施の形態4における安全POU構成情報の例を示すテーブルである。
 添付図面に基づいて、本発明の実施の形態を説明する。
実施の形態1.
 図1は、本発明の実施の形態1の概要を示すブロック図である。安全駆動コントローラ1は、工場等で使用されるPLC(Programmable Logic Controller)等のコントローラである。
 安全駆動コントローラ1は、駆動装置30に接続されており、その駆動装置30の駆動制御を行う。駆動装置30としては、インバータや、サーボモータを駆動するサーボアンプが例示される。この場合、駆動制御として、インバータやサーボアンプを制御することによって、駆動軸の速度や回転角度を制御することが挙げられる。
 また、安全駆動コントローラ1は、駆動装置30に関する安全制御も行う。具体的には、安全駆動コントローラ1は、安全装置40に接続されており、その安全装置40からの入力に応答して安全制御を行う、あるいは、安全制御のために安全装置40を動作させる。例えば、安全装置40が外部の非常停止スイッチである場合、安全制御として、非常停止スイッチの操作に応答してシステムを非常停止させることが挙げられる。また、安全装置40がモータに設けられたエンコーダである場合、安全制御として、エンコーダによって検出された回転速度に基づいて駆動軸の速度制限を行うことが挙げられる。また、安全装置40が外部のリレーである場合、安全制御として、そのリレーをOFFすることが挙げられる。
 このように、安全駆動コントローラ1は、駆動制御と安全制御の両方を行う。ここで、本実施の形態では、駆動制御における高速且つ高精度な演算処理を実現するために、駆動制御と安全制御のために別々のCPUが用いられる。より詳細には、図1に示されるように、安全駆動コントローラ1は、駆動CPU10と安全CPU20とを別々に搭載している。駆動CPU10は、駆動装置30に接続されており、上述のような駆動制御を行う機能を有する。一方、安全CPU20は、安全装置40に接続されており、上述のような安全制御を行う機能を有する。また、駆動CPU10と安全CPU20は、互いに通信可能に接続されている。駆動CPU10と安全CPU20は、デュアルコアプロセッサで実現されてもよい。
 尚、一般に、駆動制御に対しては、安全制御よりも高速処理が要求される。例えば、駆動制御にはms以下の処理速度が要求される一方、安全制御の処理速度は10ms程度でもよい。従って、駆動CPU10として、安全CPU20よりも処理性能が高いものが使用される。
 本実施の形態では、このような安全駆動コントローラ1が実行するプログラムの実行コードを作成する技術が提案される。本実施の形態に係る安全駆動コントローラ1が実行するプログラムのソースコードは、駆動制御と安全制御の両方を含んでおり、以下「安全駆動プログラムSRC」と呼ばれる。すなわち、1つのソースコードである安全駆動プログラムSRCに、駆動制御と安全制御の両方が記述されている。
 より詳細には、安全駆動プログラムSRCの制御ロジックは、POU(Program Organization Unit:プログラム構成単位)の組み合わせで記述される。POUは、機能ブロックに相当する。駆動制御及び安全制御のためのPOUは、以下、「駆動POU」及び「安全POU」とそれぞれ呼ばれる。図1に示されるように、本実施の形態では、1つの安全駆動プログラムSRCが、駆動POUと安全POUの両方を含んでいる。つまり、1つの安全駆動プログラムSRC中に、駆動POUと安全POUが組み合わされて記述されている。
 安全駆動プログラムSRCの実行コードは、駆動CPU10が実行する駆動CPU実行コードEXE1と、安全CPU20が実行する安全CPU実行コードEXE2とを含んでいる。これら駆動CPU実行コードEXE1と安全CPU実行コードEXE2は、別々の実行コードであり、それぞれ駆動CPU10と安全CPU20に供給される。駆動CPU10は駆動CPU実行コードEXE1を実行することにより駆動制御を行い、安全CPU20は安全CPU実行コードEXE2を実行することにより安全制御を行う。これにより、安全駆動コントローラ1全体として、駆動装置30の駆動制御と安全制御が実現される。
 安全駆動プログラムSRCからこれら駆動CPU実行コードEXE1及び安全CPU実行コードEXE2を生成するのが、コンパイラ100である。コンパイラ100は、1つの安全駆動プログラムSRCを読み込み、その安全駆動プログラムSRCをコンパイルすることによって、駆動CPU実行コードEXE1と安全CPU実行コードEXE2を同時且つ別々に生成する。
 より詳細には、コンパイラ100は、POUの名称または名称プリフィックスに基づいて、駆動POUと安全POUを識別する。そして、コンパイラ100は、安全POUや、異なる安全POU間をつなぐインタフェースを、安全CPU20とそのメモリに割り当てる。また、コンパイラ100は、駆動POUと安全POUとをつなぐインタフェースを、駆動CPU10と安全CPU20との間に通信に用いられる共有メモリに割り当てる。ここで、インタフェースとは、メモリアドレスや変数を意味する。
 それ以外については、コンパイラ100は、処理性能の優れた駆動CPU10とそのメモリへの割り当てを行う。つまり、コンパイラ100は、駆動POUや、異なる駆動POU間をつなぐインタフェースを、駆動CPU10とそのメモリに割り当てる。また、ある処理に関するPOUを駆動CPU10と安全CPU20のいずれにも割り当て可能な場合、すなわちいずれでも実行可能な場合、コンパイラ100は、当該POUとそのインタフェースを優先的に駆動CPU10とそのメモリに割り当てる。
 このような割り当てにより、コンパイラ100は、駆動CPU実行コードEXE1と安全CPU実行コードEXE2を同時に生成する。生成された駆動CPU実行コードEXE1と安全CPU実行コードEXE2は、安全駆動コントローラ1の駆動CPU10と安全CPU20のそれぞれに転送される。そして、安全駆動コントローラ1のリセット後、駆動CPU10と安全CPU20のそれぞれが、駆動CPU実行コードEXE1と安全CPU実行コードEXE2の実行を開始する。
 図2は、本実施の形態に係るコンパイラ100を実現するプログラミング装置110の構成例を示すブロック図である。このプログラミング装置110は、コンピュータであり、処理装置120、記憶装置130、コントローラ通信部140、入力装置150、及び表示装置160を備えている。
 処理装置120は、CPU等のプロセッサであり、各種の演算処理や制御処理を実行する。記憶装置130は、RAMやHDDを含んでいる。この記憶装置130には、ソースコードである安全駆動プログラムSRC、コンパイル処理用のライブラリLIB、コンパイルによって生成される実行コードEXE1、EXE2などが格納される。コントローラ通信部140は、安全駆動コントローラ1とのデータ通信に用いられる。入力装置150は、キーボードやマウスを含んでいる。ユーザは、表示装置160に表示される情報を参照しながら、入力装置150を使用して、安全駆動プログラムSRCの作成及び編集、コマンドや各種データの入力が可能である。コマンドとしては、例えばコンパイル実行が挙げられる。
 コンパイラ100は、処理装置120がコンパイラプログラムを実行することにより実現される。尚、コンパイラプログラムは、コンピュータ読み取り可能な記録媒体に記録されていてもよい。ユーザからの指示に従い、コンパイラ100は、記憶装置130に保存されている安全駆動プログラムSRCを取得し、その安全駆動プログラムSRCをコンパイルする。このとき、コンパイラ100は、既に作成されているライブラリLIBのファイルを利用してもよい。このコンパイルの結果、駆動CPU実行コードEXE1及び安全CPU実行コードEXE2が生成される。生成された駆動CPU実行コードEXE1と安全CPU実行コードEXE2は、コントローラ通信部140を介して、安全駆動コントローラ1へ転送される。
 以上に説明されたように、本実施の形態に係るコンパイラ100は、駆動制御と安全制御の両方を含む安全駆動プログラムSRCをコンパイルして、駆動CPU実行コードEXE1と安全CPU実行コードEXE2をそれぞれ別々に生成することができる。つまり、駆動制御と安全制御を1つのソースコードに記述しておき、1回のコンパイルで駆動CPU10と安全CPU20のそれぞれ用の実行コードを得ることができる。駆動制御と安全制御を別々のプログラムに記述する必要がなくなるため、プログラミング工数を削減することが可能となる。
 また、本実施の形態によれば、駆動制御のための駆動CPU10と安全制御のための安全CPU20とが別々に設けられる。ここで、駆動制御に対しては安全制御よりも高速処理が要求されるため、駆動CPU10として、安全CPU20よりも処理性能が高いものが使用される。そして、コンパイルにおいては、処理性能の優れた駆動CPU10に対して優先的に処理が割り当てられる。これにより、全体としての処理速度が向上する。
実施の形態2.
 図3は、本発明の実施の形態2の概要を示すブロック図である。尚、既出の実施の形態と重複する説明は適宜省略する。
 本実施の形態では、安全駆動コントローラ1の安全CPU20が、認証安全POU21を内蔵している。認証安全POUとは、安全規格に適合した安全POUのことである。本実施の形態では、安全駆動コントローラ1が、安全CPU20における認証安全POU21に関する構成情報を収集し、安全POU構成情報CONFを作成する。
 一例として、安全CPU20が“STO(Safe Torque Off)”という認証安全POU21を内蔵している場合を考える。安全CPU20が内蔵する“STO”は、例えば、サーボモータへの電力供給を遮断するために、サーボアンプとサーボモータとの間に設けられたリレーをOFFする関数である。図4は、この例の場合の安全POU構成情報CONFを示している。一般に、POUのデータ構造は、名称、インタフェース、及び処理ロジックを有している。CPU内蔵のPOUの場合、インタフェースは構造体であり、処理ロジックは関数へのポインタである。図4の例では、STOが、2つの入力(Emg0/Emg1)の論理積に基づいて安全出力(Sout)を制御する。
 電源投入時の構成管理フェーズにおいて、安全駆動コントローラ1は、安全CPU20が内蔵している認証安全POU21に関する構成情報を収集し、その一覧を示す安全POU構成情報CONFを作成する。そして、安全駆動コントローラ1は、作成した安全POU構成情報CONFを、プログラミング装置110に送信する。あるいは、プログラミング装置110が、あるタイミングで、例えばコンパイル実施時に、安全駆動コントローラ1から安全POU構成情報CONFを読みだしてもよい。いずれにせよ、プログラミング装置110は、図5に示されるように、安全POU構成情報CONFを取得し、その安全POU構成情報CONFを記憶装置130に格納する。
 コンパイル時、コンパイラ100は、記憶装置130から安全POU構成情報CONFを読み込む。そして、コンパイラ100は、安全POU構成情報CONFを参照して、安全駆動プログラムSRCに含まれる安全POUと同一名の認証安全POU21が安全CPU20に内蔵されているかチェックする。
 安全駆動プログラムSRC中の安全POUと同一名の認証安全POU21が安全CPU20に内蔵されている場合、コンパイラ100は、当該安全POUをコンパイルする代わりに、安全CPU20に内蔵されている認証安全POU21を使用するように安全CPU実行コードEXE2を生成する。このとき、コンパイラ100は、両者のインタフェースを比較して、インタフェースの調整を行う。具体的には、一致するインタフェースについてはそのまま使用し、余剰または不足するインタフェースについては安全POU構成情報CONFに合わせて無視または補完する。その他は、実施の形態1と同様である。
 図6は、安全POU構成情報CONFが利用される場合の処理を要約的に示すフローチャートである。
 ステップS1:
 安全駆動コントローラ1は、安全POU構成情報CONFを作成する。プログラミング装置110は、その安全POU構成情報CONFを取得する。
 ステップS10:
 コンパイラ100は、安全駆動プログラムSRCをコンパイルし、駆動CPU実行コードEXE1及び安全CPU実行コードEXE2を生成する。このとき、コンパイラ100は、安全POU構成情報CONFを参照する(ステップS11)。安全駆動プログラムSRC中の安全POUと同一名の認証安全POU21が安全CPU20に内蔵されているとする(ステップS12;No、ステップS14;Yes)。この場合、コンパイラ100は、安全CPU20の認証安全POU21を使用するように安全CPU実行コードEXE2を生成する(ステップS15)。
 ステップS20:
 プログラミング装置110は、生成された駆動CPU実行コードEXE1と安全CPU実行コードEXE2を、安全駆動コントローラ1の駆動CPU10と安全CPU20のそれぞれに転送する。
 本実施の形態によれば、前述の実施の形態1の場合と同じ効果が得られる。更に、次の効果も得られる。
 すなわち、本実施の形態によれば、未認証の安全POUの代わりに、安全CPU20が内蔵する認証安全POU21を利用した安全制御が可能となる。従って、安全規格の認証審査を受けていない安全駆動プログラムSRCを用いる場合であっても、安全規格に適合した実行環境を実現することが可能となる。このことは、安全性の向上の観点から好適である。
 また、安全CPU20に内蔵された認証安全POU21が利用されるため、安全CPU実行コードEXE2のサイズが削減される。
 また、コンパイラ100は、安全POU構成情報CONFを参照することによって、自動的に、未認証の安全POUを認証安全POU21に置き換える。つまり、未認証の安全POUを含む安全駆動プログラムSRCを書き換える必要はない。このことも、プログラム工数の削減に寄与する。
 また、安全POU構成情報CONFは、安全駆動コントローラ1によって自動的に作成され、プログラミング装置110に送られる。つまり、安全POU構成情報CONFは自動的に更新される。従って、認証安全POU21に関する設定の工数も削減される。
 例えば、安全CPU20が、認証安全POU21を内蔵する最新の安全CPU20に交換されたとする。この場合、安全駆動コントローラ1のリセット後に、安全POU構成情報CONFは自動的に更新される。そして、コンパイラ100は、最新の安全POU構成情報CONFに基づいて、駆動CPU実行コードEXE1及び安全CPU実行コードEXE2を生成する。すなわち、安全CPU20の交換後に一度コンパイルを実施するだけで、最新の構成に最適化された実行コードを得ることができる。
 尚、実際の開発では、安全駆動コントローラ1の実機が無く、そのシミュレータを用いることによって、安全駆動プログラムSRCの開発及びデバックを行うこともある。この場合は、安全駆動コントローラ1の実機から安全POU構成情報CONFを取得することはできないが、プログラミング装置110の入力装置150を用いて、安全POU構成情報CONFを適宜作成することは可能である。この場合、コンパイラ100は、その安全POU構成情報CONFを参照することにより、シミュレータ用の駆動CPU実行コードEXE1及び安全CPU実行コードEXE2を生成する。つまり、安全駆動コントローラ1の実機が無くても、安全駆動プログラムSRCの開発及びデバックを行うことはできる。安全駆動コントローラ1の実機に接続した際には、実機の安全POU構成情報CONFに基づいて再度コンパイルを実施すればよい。
実施の形態3.
 図7は、本発明の実施の形態3の概要を示すブロック図である。尚、既出の実施の形態と重複する説明は適宜省略する。
 本実施の形態では、駆動CPU10に接続された駆動装置30が、認証安全POU31を内蔵している。駆動CPU10は、駆動装置30に内蔵されている認証安全POU31を利用可能である。
 一例として、駆動装置30がサーボアンプであり、そのサーボアンプが“STO(Safe Torque Off)”という認証安全POU31を内蔵している場合を考える。駆動CPU10は、サーボアンプに外部信号を出力することにより、サーボアンプに内蔵されたSTOを利用することができる。図8は、この例の場合の安全POU構成情報CONFを示している。サーボアンプ内蔵のPOUの場合、インタフェースは駆動CPU10のI/Oアドレスであり、処理ロジックはダミーである。つまり、駆動CPU10がインタフェースに信号を出力すれば、サーボアンプ側でSTOが実行される。
 電源投入時の構成管理フェーズにおいて、安全駆動コントローラ1は、駆動CPU10及び駆動装置30における認証安全POU31に関する構成情報を収集し、その一覧を示す安全POU構成情報CONFを作成する。そして、安全駆動コントローラ1は、作成した安全POU構成情報CONFを、プログラミング装置110に送信する。あるいは、プログラミング装置110が、あるタイミングで、例えばコンパイル実施時に、安全駆動コントローラ1から安全POU構成情報CONFを読みだしてもよい。いずれにせよ、プログラミング装置110は、図5に示されるように、安全POU構成情報CONFを取得し、その安全POU構成情報CONFを記憶装置130に格納する。
 コンパイル時、コンパイラ100は、記憶装置130から安全POU構成情報CONFを読み込む。そして、コンパイラ100は、安全POU構成情報CONFを参照して、安全駆動プログラムSRCに含まれる安全POUと同一名の認証安全POU31が駆動装置30に内蔵されているかチェックする。
 安全駆動プログラムSRC中の安全POUと同一名の認証安全POU31が駆動装置30に内蔵されている場合、コンパイラ100は、当該安全POUをコンパイルする代わりに、駆動装置30に内蔵されている認証安全POU31を使用するように駆動CPU実行コードEXE1を生成する。このとき、コンパイラ100は、両者のインタフェースを比較して、インタフェースの調整を行う。具体的には、一致するインタフェースについてはそのまま使用し、余剰または不足するインタフェースについては安全POU構成情報CONFに合わせて無視または補完する。その他は、実施の形態1と同様である。
 既出の図6において、ステップS1、S11、S20は、実施の形態2の場合と同じである。安全駆動プログラムSRC中の安全POUと同一名の認証安全POU31が駆動装置30に内蔵されているとする(ステップS12;Yes)。この場合、コンパイラ100は、駆動装置30の認証安全POU31を使用するように駆動CPU実行コードEXE1を生成する(ステップS13)。
 本実施の形態によれば、前述の実施の形態1の場合と同じ効果が得られる。更に、次の効果も得られる。
 すなわち、本実施の形態によれば、未認証の安全POUの代わりに、駆動装置30が内蔵する認証安全POU31を利用した安全制御が可能となる。従って、安全規格の認証審査を受けていない安全駆動プログラムSRCを用いる場合であっても、安全規格に適合した実行環境を実現することが可能となる。このことは、安全性の向上の観点から好適である。
 また、駆動装置30に内蔵された認証安全POU31が利用されるため、駆動CPU実行コードEXE1のサイズが削減される。
 また、コンパイラ100は、安全POU構成情報CONFを参照することによって、自動的に、未認証の安全POUを認証安全POU31に置き換える。つまり、未認証の安全POUを含む安全駆動プログラムSRCを書き換える必要はない。このことも、プログラム工数の削減に寄与する。
 また、安全POU構成情報CONFは、安全駆動コントローラ1によって自動的に作成され、プログラミング装置110に送られる。つまり、安全POU構成情報CONFは自動的に更新される。従って、認証安全POU31に関する設定の工数も削減される。
 例えば、駆動装置30が、認証安全POU31を内蔵する最新の駆動装置30に交換されたとする。この場合、安全駆動コントローラ1のリセット後に、安全POU構成情報CONFは自動的に更新される。そして、コンパイラ100は、最新の安全POU構成情報CONFに基づいて、駆動CPU実行コードEXE1及び安全CPU実行コードEXE2を生成する。すなわち、駆動装置30の交換後に一度コンパイルを実施するだけで、最新の構成に最適化された実行コードを得ることができる。
実施の形態4.
 図9は、本発明の実施の形態4の概要を示すブロック図である。尚、既出の実施の形態と重複する説明は適宜省略する。
 本実施の形態の構成は、既出の実施の形態2、3の組み合わせである。すなわち、安全駆動コントローラ1の安全CPU20が、認証安全POU21を内蔵している。また、駆動CPU10に接続された駆動装置30が、認証安全POU31を内蔵している。駆動CPU10は、駆動装置30に内蔵されている認証安全POU31を利用可能である。
 安全駆動コントローラ1は、安全CPU20、駆動CPU10及び駆動装置30における認証安全POU21、31に関する構成情報を収集し、その一覧を示す安全POU構成情報CONFを作成する。図10は、本実施の形態における安全POU構成情報CONFの一例を示している。図10に示される例は、既出の図4、図8の組み合わせである。
 既出の図6で示されたフローチャートに基づいて、本実施の形態におけるコンパイルを説明する。尚、ステップS1、S11、S20は、既出の実施の形態の場合と同じである。
 まず、コンパイラ100は、安全POU構成情報CONFを参照して、安全駆動プログラムSRCに含まれる安全POUと同一名の認証安全POU31が駆動装置30に内蔵されているかチェックする(ステップS12)。安全駆動プログラムSRC中の安全POUと同一名の認証安全POU31が駆動装置30に内蔵されている場合(ステップS12;Yes)、コンパイラ100は、当該安全POUをコンパイルする代わりに、駆動装置30に内蔵されている認証安全POU31を使用するように駆動CPU実行コードEXE1を生成する(ステップS13)。一方、安全駆動プログラムSRC中の安全POUと同一名の認証安全POU31が駆動装置30に内蔵されていない場合(ステップS12;No)、処理はステップS14に進む。
 ステップS14において、コンパイラ100は、安全POU構成情報CONFを参照して、安全駆動プログラムSRCに含まれる安全POUと同一名の認証安全POU21が安全CPU20に内蔵されているかチェックする。安全駆動プログラムSRC中の安全POUと同一名の認証安全POU21が安全CPU20に内蔵されている場合(ステップS14;Yes)、コンパイラ100は、当該安全POUをコンパイルする代わりに、安全CPU20に内蔵されている認証安全POU21を使用するように安全CPU実行コードEXE2を生成する(ステップS15)。一方、安全駆動プログラムSRC中の安全POUと同一名の認証安全POU21が安全CPU20に内蔵されていない場合(ステップS14;No)、処理はステップS16に進む。
 ステップS16において、コンパイラ100は、実施の形態1の場合と同様にコンパイルを実施する。尚、安全性の向上のためには、ライブラリLIBが安全規格適合の認証を受けていることが好ましい。
 ここで、安全駆動プログラムSRCに含まれる安全POUと同一名の認証安全POU(21、31)が、安全CPU20と駆動装置30の両方に内蔵されている場合を考える。この場合、図6で示されたフローによれば、コンパイラ100は、駆動装置30に内蔵されている認証安全POU31の方を使用するように駆動CPU実行コードEXE1を生成することになる(ステップS13)。すなわち、可能であれば、処理速度に優れた駆動CPU10に認証安全POUに係る処理を実行させるようにコンパイルが行われる。このことは、処理速度と安全機能の応答性の観点から好適である。また、安全CPU20に内蔵された認証安全POU21を使用しないため、その分、部品点数を削減できる可能性がある。
 例えば、図10で示された例の場合、“STO”が安全CPU20と駆動装置30であるサーボアンプの両方に内蔵されている。この場合、コンパイラ100は、安全駆動プログラムSRC中の“STO”をコンパイルする代わりに、サーボアンプの方のSTOを使用するように駆動CPU実行コードEXE1を生成する。すなわち、STOに関する処理を駆動CPU10が実行する。このことは、処理速度と安全機能の応答性の観点から好適である。また、安全CPU20の方のSTOは使用しないため、サーボアンプとサーボモータとの間にリレーを設ける必要がなくなる。つまり、部品点数を削減することが可能となる。
 本実施の形態によれば、前述の実施の形態2、3の場合と同じ効果が得られる。更に、次の効果も得られる。すなわち、駆動装置30に内蔵された認証安全POU31を優先的に使用することにより、処理速度と安全機能の応答性が向上する。また、部品点数が削減される。
 尚、以上の説明において、STOが安全POUの一例として挙げられた。しかし、安全POUはそれだけに限られない。サーボアンプの安全POUとして、安全速度監視(SLS)なども考えられる。安全CPU20の安全POUとして、非常停止スイッチが押された時の停止(ESTOP)や、ライトカーテン遮光時の停止(ESPE)なども考えられる。これら安全POUの場合であっても、既出の実施の形態は同様に適用可能である。
 以上、本発明の実施の形態が添付の図面に基づいて説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
 1 安全駆動コントローラ、10 駆動CPU、20 安全CPU、21 認証安全POU、30 駆動装置、31 認証安全POU、40 安全装置、100 コンパイラ、110 プログラミング装置、120 処理装置、130 記憶装置、140 コントローラ通信部、150 入力装置、160 表示装置、CONF 安全POU構成情報、EXE1 駆動CPU実行コード、EXE2 安全CPU実行コード、LIB ライブラリ、SRC 安全駆動プログラム。

Claims (7)

  1.  コントローラが実行するプログラムの実行コードを生成するプログラミング装置であって、
     前記コントローラは、
     前記コントローラに接続された駆動装置の駆動制御を行う駆動CPUと、
     安全制御を行う安全CPUと
     を備え、
     前記プログラミング装置は、前記駆動CPUが実行する駆動CPU実行コードと前記安全CPUが実行する安全CPU実行コードとを生成するコンパイラを備え、
     前記コンパイラは、前記駆動制御のための駆動機能ブロックと前記安全制御のための安全機能ブロックとの両方を含むソースプログラムをコンパイルし、前記駆動機能ブロックを前記駆動CPUに割り当てることによって前記駆動CPU実行コードを生成し、また、前記安全機能ブロックを前記安全CPUに割り当てることによって前記安全CPU実行コードを生成する
     ことを特徴とするプログラミング装置。
  2.  前記安全CPUは、安全規格に適合した安全機能ブロックである認証安全機能ブロックを内蔵しており、
     前記コンパイラは、前記認証安全機能ブロックに関する構成情報を読み込み、
     前記ソースプログラムに含まれる前記安全機能ブロックと同一名の前記認証安全機能ブロックが前記安全CPUに内蔵されている場合、前記コンパイラは、前記ソースプログラム中の前記安全機能ブロックをコンパイルする代わりに、前記安全CPUの前記認証安全機能ブロックを使用するように前記安全CPU実行コードを生成する
     ことを特徴とする請求項1に記載のプログラミング装置。
  3.  前記駆動装置は、安全規格に適合した安全機能ブロックである認証安全機能ブロックを内蔵しており、
     前記駆動CPUは、前記駆動装置に内蔵された前記認証安全機能ブロックを利用可能であり、
     前記コンパイラは、前記認証安全機能ブロックに関する構成情報を読み込み、
     前記ソースプログラムに含まれる前記安全機能ブロックと同一名の前記認証安全機能ブロックが前記駆動装置に内蔵されている場合、前記コンパイラは、前記ソースプログラム中の前記安全機能ブロックをコンパイルする代わりに、前記駆動装置の前記認証安全機能ブロックを使用するように前記駆動CPU実行コードを生成する
     ことを特徴とする請求項1に記載のプログラミング装置。
  4.  前記安全CPUと前記駆動装置の各々は、安全規格に適合した安全機能ブロックである認証安全機能ブロックを内蔵しており、
     前記駆動CPUは、前記駆動装置に内蔵された前記認証安全機能ブロックを利用可能であり、
     前記コンパイラは、前記認証安全機能ブロックに関する構成情報を読み込み、
     前記ソースプログラムに含まれる前記安全機能ブロックと同一名の前記認証安全機能ブロックが前記安全CPUと前記駆動装置の両方に内蔵されている場合、前記コンパイラは、前記ソースプログラム中の前記安全機能ブロックをコンパイルする代わりに、前記駆動装置の前記認証安全機能ブロックを使用するように前記駆動CPU実行コードを生成する
     ことを特徴とする請求項1に記載のプログラミング装置。
  5.  前記駆動CPUと前記安全CPUのいずれもが実行可能な処理が前記ソースプログラムに含まれる場合、前記コンパイラは、当該処理を前記駆動CPUに割り当てて前記駆動CPU実行コードを生成する
     ことを特徴とする請求項1から4のいずれか一項に記載のプログラミング装置。
  6.  前記コンパイラは、前記駆動機能ブロックと前記安全機能ブロックとをつなぐインタフェースを、前記駆動CPUと前記安全CPUとの間の通信に用いられる共有メモリに割り当てる
     ことを特徴とする請求項1から5のいずれか一項に記載のプログラミング装置。
  7.  コントローラが実行するプログラムの実行コードを生成する実行コード生成方法であって、
     前記コントローラは、
     前記コントローラに接続された駆動装置の駆動制御を行う駆動CPUと、
     安全制御を行う安全CPUと
     を備え、
     前記実行コード生成方法は、前記駆動CPUが実行する駆動CPU実行コードと前記安全CPUが実行する安全CPU実行コードとを生成するステップを有し、
     前記生成するステップは、前記駆動制御のための駆動機能ブロックと前記安全制御のための安全機能ブロックとの両方を含むソースプログラムをコンパイルし、前記駆動機能ブロックを前記駆動CPUに割り当てることによって前記駆動CPU実行コードを生成し、また、前記安全機能ブロックを前記安全CPUに割り当てることによって前記安全CPU実行コードを生成するステップを含む
     ことを特徴とする実行コード生成方法。
PCT/JP2014/058195 2014-03-25 2014-03-25 プログラミング装置及び実行コード生成方法 WO2015145562A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014526728A JP5619331B1 (ja) 2014-03-25 2014-03-25 プログラミング装置及び実行コード生成方法
PCT/JP2014/058195 WO2015145562A1 (ja) 2014-03-25 2014-03-25 プログラミング装置及び実行コード生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/058195 WO2015145562A1 (ja) 2014-03-25 2014-03-25 プログラミング装置及び実行コード生成方法

Publications (1)

Publication Number Publication Date
WO2015145562A1 true WO2015145562A1 (ja) 2015-10-01

Family

ID=54194162

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/058195 WO2015145562A1 (ja) 2014-03-25 2014-03-25 プログラミング装置及び実行コード生成方法

Country Status (2)

Country Link
JP (1) JP5619331B1 (ja)
WO (1) WO2015145562A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107193249A (zh) * 2016-03-14 2017-09-22 欧姆龙株式会社 程序开发辅助装置以及程序开发辅助方法
EP3270238A1 (de) * 2016-07-13 2018-01-17 Siemens Aktiengesellschaft Verfahren zur steuerung eines antriebs
WO2020166328A1 (ja) 2019-02-13 2020-08-20 オムロン株式会社 制御装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009259134A (ja) * 2008-04-21 2009-11-05 Koyo Electronics Ind Co Ltd 安全plc
JP2012518823A (ja) * 2009-02-23 2012-08-16 ピルツ ゲーエムベーハー アンド コー.カーゲー 安全コントローラ用のユーザプログラムを作成するための方法および機器
JP2012524352A (ja) * 2009-04-20 2012-10-11 ピルツ ゲーエムベーハー アンド コー.カーゲー 安全関連制御ユニット用アプリケーションプログラムの生成方法および装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009259134A (ja) * 2008-04-21 2009-11-05 Koyo Electronics Ind Co Ltd 安全plc
JP2012518823A (ja) * 2009-02-23 2012-08-16 ピルツ ゲーエムベーハー アンド コー.カーゲー 安全コントローラ用のユーザプログラムを作成するための方法および機器
JP2012524352A (ja) * 2009-04-20 2012-10-11 ピルツ ゲーエムベーハー アンド コー.カーゲー 安全関連制御ユニット用アプリケーションプログラムの生成方法および装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107193249A (zh) * 2016-03-14 2017-09-22 欧姆龙株式会社 程序开发辅助装置以及程序开发辅助方法
CN107193249B (zh) * 2016-03-14 2020-06-23 欧姆龙株式会社 程序开发辅助装置以及程序开发辅助方法
EP3270238A1 (de) * 2016-07-13 2018-01-17 Siemens Aktiengesellschaft Verfahren zur steuerung eines antriebs
CN107621794A (zh) * 2016-07-13 2018-01-23 西门子公司 控制驱动装置的方法和执行该方法的系统
US10601219B2 (en) 2016-07-13 2020-03-24 Siemens Aktiengesellschaft Method for controlling a drive
EP3270238B1 (de) 2016-07-13 2020-05-20 Siemens Aktiengesellschaft Verfahren zur steuerung eines antriebs
WO2020166328A1 (ja) 2019-02-13 2020-08-20 オムロン株式会社 制御装置
US11875065B2 (en) 2019-02-13 2024-01-16 Omron Corporation Control device

Also Published As

Publication number Publication date
JPWO2015145562A1 (ja) 2017-04-13
JP5619331B1 (ja) 2014-11-05

Similar Documents

Publication Publication Date Title
JP5436660B2 (ja) 安全関連制御ユニット用アプリケーションプログラムの生成方法および装置
EP3410296A1 (en) Starting method and device for embedded device
US10901387B2 (en) Control system for an industrial automation facility and method for programming and operating such a control system
ITTO980869A1 (it) Elaboratore con sistema per predisporre un record di avviamento con partizione modificabile del dispositivo di memoria.
JP6786984B2 (ja) プログラム処理装置およびプログラム
JP5619331B1 (ja) プログラミング装置及び実行コード生成方法
JP2009146039A (ja) セーフティ・コントロール・システム
JP2014211721A (ja) 数値制御装置
US20190012168A1 (en) Program generating apparatus
ES2772675T3 (es) Método de compilación óptima de un comando de PLC
CN111095138B (zh) 控制装置、控制装置的控制方法、信息处理程序及记录介质
JP6362821B2 (ja) 制御装置、制御方法および命令セット
US11169510B2 (en) Engineering system and method for planning an automation system
JP6821101B1 (ja) 数値制御装置
JP6323685B2 (ja) プログラマブルコントローラ
EP3885856B1 (en) Control system, control method, and drive device
WO2012124162A1 (ja) デバッグ装置
JP6455096B2 (ja) コントロールシステム、その支援装置、プログラマブルコントロール装置
JP7036064B2 (ja) 制御装置およびソフトウェアのデプロイ方法
JP4877257B2 (ja) プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム
JP6295914B2 (ja) プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ
JP3764436B2 (ja) 機械の制御装置
JP7040389B2 (ja) 制御システム、サポート装置、およびサポートプログラム
KR20110122574A (ko) 중간언어 생성기를 포함한 로봇 프로그래밍 툴과 그 중간 언어 코드를 수행할 수 있는 버츄얼 머신을 기반으로 하는 로봇 프로그래밍 방법
JP5726106B2 (ja) 組み込みシステムの制御装置

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 2014526728

Country of ref document: JP

Kind code of ref document: A

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14887528

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14887528

Country of ref document: EP

Kind code of ref document: A1