KR102041772B1 - 프로그램 편집 장치, 프로그램 편집 방법 및 기억 매체에 기억된 프로그램 편집 프로그램 - Google Patents

프로그램 편집 장치, 프로그램 편집 방법 및 기억 매체에 기억된 프로그램 편집 프로그램 Download PDF

Info

Publication number
KR102041772B1
KR102041772B1 KR1020197001430A KR20197001430A KR102041772B1 KR 102041772 B1 KR102041772 B1 KR 102041772B1 KR 1020197001430 A KR1020197001430 A KR 1020197001430A KR 20197001430 A KR20197001430 A KR 20197001430A KR 102041772 B1 KR102041772 B1 KR 102041772B1
Authority
KR
South Korea
Prior art keywords
command
plc
sequence control
instructions
control program
Prior art date
Application number
KR1020197001430A
Other languages
English (en)
Other versions
KR20190011810A (ko
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 미쓰비시덴키 가부시키가이샤
Publication of KR20190011810A publication Critical patent/KR20190011810A/ko
Application granted granted Critical
Publication of KR102041772B1 publication Critical patent/KR102041772B1/ko

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
    • 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
    • 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/045Programme control other than numerical control, i.e. in sequence controllers or logic controllers using logic state machines, consisting only of a memory or a programmable logic device containing the logic for the controlled machine and in which the state of its outputs is dependent on the state of its inputs or part of its own output states, e.g. binary decision controllers, finite state controllers
    • 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
    • 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/054Input/output
    • 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/10Programme control other than numerical control, i.e. in sequence controllers or logic controllers using selector switches
    • G05B19/102Programme control other than numerical control, i.e. in sequence controllers or logic controllers using selector switches for input of programme steps, i.e. setting up sequence
    • 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/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/4093Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by part programming, e.g. entry of geometrical information as taken from a technical drawing, combining this with machining and material information to obtain control information, named part programme, for the NC machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • 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/418Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323Visualisation of programs or trace data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Programmable Controllers (AREA)

Abstract

변수간 의존 해석부(310)는 시퀀스 제어용의 언어로 기술된 제어 프로그램인 시퀀스 제어 프로그램에 포함되는 복수의 명령의 명령간의 인수와 리턴값의 관계를 해석한다. PLC 명령 정렬 분할부(312)는 변수간 의존 해석부(310)에 의해 해석된 명령간의 인수와 리턴값의 관계에 근거해서, 복수의 명령의 명령 실행 순서의 변경 및 명령 단위에서의 시퀀스 제어 프로그램의 분할 중 적어도 어느 하나를 행한다.

Description

프로그램 편집 장치, 프로그램 편집 방법 및 기억 매체에 기억된 프로그램 편집 프로그램
본 발명은 프로그램 편집 장치, 프로그램 편집 방법 및 프로그램 편집 프로그램에 관한 것이다.
특허문헌 1에는, 소프트웨어 PLC(Programmable Logic Controller) 프로그래밍 장치가 개시되어 있다. 특허문헌 1의 소프트웨어 PLC 프로그래밍 장치는, PLC 명령을 이용해서 유저가 생성한 시퀀스 제어 프로그램을, 변환 프로그램을 이용해서 범용적인 고급 언어의 명령을 사용한 프로그램으로 변환한다. 그리고, 소프트웨어 PLC 프로그래밍 장치는, 변환 후의 프로그램으로부터 범용 컴파일러를 사용해서 범용 CPU(Central Processing Unit) 용의 바이너리 코드(이하, 단순히 바이너리라고도 한다)를 생성한다. 이것에 의해, 범용적인 컴퓨터에 의한 시퀀스 제어가 가능해진다.
일본 공개 특허 공보 평성7-295612
특허문헌 1에서는, PLC 명령을 이용한 시퀀스 제어 프로그램을 변환 프로그램에 의해 고급 언어의 프로그램으로 변환하고, 변환 후의 프로그램으로부터 컴파일러에 의해 바이너리를 생성한다. 특허문헌 1에서는, 시퀀스 제어 프로그램에 기술되는 명령 실행 순서를 유지해서 시퀀스 제어 프로그램을 고급 언어의 프로그램으로 변경하고, 바이너리를 생성한다.
이 때문에, 명령 실행 순서가 반드시 효율화되지 않고, 바이너리를 실행했을 때의 시퀀스 제어의 실행 소요 시간이 희망 소요 시간 이내에 들어가지 않는 경우가 있다. 이러한 경우에, 유저는, 시퀀스 제어의 실행 소요 시간을 희망 소요 시간 이내에 들어가도록 재차 시퀀스 제어 프로그램을 수정하지 않으면 안되는 과제가 있다.
또, 최근, 범용 CPU는 멀티 코어화가 진행되고 있고, 복수의 바이너리를 병렬해서 실행할 수 있어, 실행 소요 시간을 단축할 수 있다. 이 경우, 동시에 실행되는 바이너리 간에서, 처리 내용이 경합하지 않게 배려할 필요가 있다. 그러나, 소망의 처리를 복수의 시퀀스 제어 프로그램에 걸쳐 기술하는 것은 유저에게 있어 용이하지 않다. 또, 시퀀스 제어 프로그램을 몇개의 바이너리로 분할하면 가장 효율적인가는 PLC 장치나 PLC 장치 내의 프로세서 등에 따라서 상이하다. 이 때문에, PLC 장치를 변경할 때마다 시퀀스 제어 프로그램을 다시 작성할 필요가 발생한다고 하는 과제가 있다.
본 발명은 상기의 과제를 해결하는 것을 주된 목적으로 한다. 보다 구체적으로는, 본 발명은 유저가 생성한 시퀀스 제어 프로그램으로부터, 당해 시퀀스 제어 프로그램과 동일한 결과가 얻어지는 보다 효율적인 시퀀스 제어 프로그램을 생성하는 것을 주된 목적으로 한다.
본 발명에 따른 프로그램 편집 장치는,
시퀀스 제어용의 언어로 기술된 제어 프로그램인 시퀀스 제어 프로그램에 포함되는 복수의 명령의 명령간의 인수(argument)와 리턴값(return value)의 관계를 해석하는 관계 해석부와,
상기 관계 해석부에 의해 해석된 명령간의 인수와 리턴값의 관계에 근거해서, 상기 복수의 명령의 명령 실행 순서의 변경 및 명령 단위에서의 상기 시퀀스 제어 프로그램의 분할 중 적어도 어느 하나를 행하는 프로그램 편집부를 갖는다.
본 발명에 따르면, 시퀀스 제어 프로그램에 있어서의 명령 실행 순서의 변경 및 시퀀스 제어 프로그램의 분할 중 적어도 어느 하나에 의해, 유저가 생성한 시퀀스 제어 프로그램으로부터, 당해 시퀀스 제어 프로그램과 동일한 결과가 얻어지는 보다 효율적인 시퀀스 제어 프로그램을 생성할 수 있다.
도 1은 실시 형태 1에 따른 프로그래밍 장치의 기능 구성예 및 PLC 장치의 하드웨어 구성예를 나타내는 도면.
도 2는 실시 형태 1에 따른 프로그래밍 장치의 하드웨어 구성예를 나타내는 도면.
도 3은 실시 형태 1에 따른 PLC 장치의 처리 순서를 나타내는 도면.
도 4는 실시 형태 1에 따른 시퀀스 제어 프로그램 최적화부의 기능 구성예를 나타내는 도면.
도 5는 실시 형태 1에 따른 시퀀스 제어 프로그램의 예를 나타내는 도면.
도 6은 실시 형태 1에 따른 명령간의 의존 관계를 해석하는 처리를 나타내는 흐름도.
도 7은 실시 형태 1에 따른 변수간 의존 정보의 예를 나타내는 도면.
도 8은 실시 형태 1에 따른 명령 정보의 예를 나타내는 도면.
도 9는 실시 형태 1에 따른 PLC 장치 정보의 예를 나타내는 도면.
도 10은 실시 형태 1에 따른 명령 실행 순서를 변경하는 처리를 나타내는 흐름도.
도 11은 실시 형태 1에 따른 시퀀스 제어 프로그램을 분할하는 처리를 나타내는 흐름도.
도 12는 실시 형태 1에 따른 등가 최적화 시퀀스 제어 프로그램의 예를 나타내는 도면.
도 13은 실시 형태 1에 따른 등가 최적화 시퀀스 제어 프로그램의 예를 나타내는 도면.
도 14는 실시 형태 2에 따른 프로그래밍 장치의 기능 구성예 및 PLC 장치의 하드웨어 구성예를 나타내는 도면.
이하, 본 발명의 실시 형태에 대해, 도면을 이용해서 설명한다. 이하의 실시 형태의 설명 및 도면에 있어서, 동일한 부호를 부여한 것은 동일한 부분 또는 상당하는 부분을 나타낸다.
실시 형태 1.
***구성의 설명***
도 1은 본 실시 형태에 따른 프로그래밍 장치(400)의 기능 구성예 및 PLC 장치(401)의 하드웨어 구성예를 나타낸다.
프로그래밍 장치(400)는 프로그램 편집 장치의 예이다. 또, 프로그래밍 장치(400)에서 행해지는 동작은 프로그램 편집 방법의 예이다. 또, 프로그래밍 장치(400)에서 행해지는 동작을 실현하는 프로그램은 프로그램 편집 프로그램의 예이다.
도 1에 나타내는 바와 같이, 프로그래밍 장치(400)는 시퀀스 제어 프로그램 최적화부(300), 고급 언어 변환부(301) 및 컴파일러(302)로 구성된다.
PLC 장치(401)는 프로세서(500), I/O(Input/Output) 장치(501), 메모리(503), 기억 장치(504) 및 버스(505)로 구성된다.
프로그래밍 장치(400)에 있어서, 시퀀스 제어 프로그램 최적화부(300)는 유저(100)로부터 시퀀스 제어 프로그램(200)을 취득하고, 시퀀스 제어 프로그램(200)으로부터 등가 최적화 시퀀스 제어 프로그램(201)을 생성한다. 그리고, 시퀀스 제어 프로그램 최적화부(300)는, 생성한 등가 최적화 시퀀스 제어 프로그램(201)을 고급 언어 변환부(301)에 출력한다.
시퀀스 제어 프로그램(200)은 시퀀스 제어용의 언어로 기술된 제어 프로그램이다. 시퀀스 제어 프로그램(200)에는, 복수의 PLC 명령(이하, 단순히 명령이라고도 한다)이 포함된다. 도 5는 시퀀스 제어 프로그램(200)의 일례를 나타낸다. 도 5의 상세한 것은 후술한다. 시퀀스 제어 프로그램(200)은 유저(100)에 의해 생성된다. 유저(100)는 PLC 장치(401)로 하여금 시퀀스 제어를 행하게 하는 사람이다.
등가 최적화 시퀀스 제어 프로그램(201)은 시퀀스 제어 프로그램 최적화부(300)에 의해 최적화된 시퀀스 제어 프로그램이다. 구체적으로는, 등가 최적화 시퀀스 제어 프로그램(201)은 시퀀스 제어 프로그램(200) 내의 복수의 PLC 명령의 명령 실행 순서가 변경된 시퀀스 제어 프로그램 또는 명령 단위로 시퀀스 제어 프로그램(200)을 분할해서 얻어진 시퀀스 제어 프로그램이다.
고급 언어 변환부(301)는 시퀀스 제어 프로그램 최적화부(300)로부터 등가 최적화 시퀀스 제어 프로그램(201)을 취득하고, 등가 최적화 시퀀스 제어 프로그램(201)으로부터 고급 언어 프로그램(202)을 생성한다. 그리고, 고급 언어 변환부(301)는 생성한 고급 언어 프로그램(202)을 컴파일러(302)에 출력한다.
고급 언어 프로그램(202)은 범용적인 고급 언어로 기술된 제어 프로그램이다. 고급 언어 프로그램(202)은 예를 들면 C언어 등으로 기술된 제어 프로그램이다.
컴파일러(302)는 고급 언어 변환부(301)로부터 고급 언어 프로그램(202)을 취득하고, 고급 언어 프로그램(202)으로부터 바이너리(203)를 생성한다.
바이너리(203)는 PLC 장치(401)에서 실행 가능한 바이너리 코드이다.
PLC 장치(401)는 바이너리(203)를 실행해서, 시퀀스 제어를 행한다.
본 실시 형태에서는, PLC 장치(401)의 종류는 묻지 않는다. 상술한 바와 같이, PLC 장치(401)는 예를 들면, 프로세서(500), I/O 장치(501), 메모리(503), 기억 장치(504) 및 버스(505)로 구성된다.
프로그래밍 장치(400) 및 PLC 장치(401)는 도 1에 나타내는 모든 요소를 반드시 구비하고 있지 않아도 좋고, 또, 도 1에 나타내는 요소 이외의 요소를 구비하고 있어도 좋다.
또, 도 2는 본 실시 형태에 따른 프로그래밍 장치(400)의 하드웨어 구성예를 나타낸다.
프로그래밍 장치(400)는, 버스(1505)에, 프로세서(1500), I/O 장치(1501), 메모리(1503), 기억 장치(1504) 및 유저 인터페이스 장치(1506)가 접속되어 있는 컴퓨터이다.
기억 장치(1504)에는, 도 1에 나타내는 시퀀스 제어 프로그램 최적화부(300), 고급 언어 변환부(301) 및 컴파일러(302)의 기능을 실현하는 프로그램이 기억되어 있다.
이들 프로그램은 기억 장치(1504)로부터 메모리(1503)에 로딩되어, 프로세서(1500)에 의해 실행된다. 즉, 프로세서(1500)는 시퀀스 제어 프로그램 최적화부(300), 고급 언어 변환부(301) 및 컴파일러(302)의 동작을 행한다.
도 2에서는, 프로세서(1500)가 시퀀스 제어 프로그램 최적화부(300), 고급 언어 변환부(301) 및 컴파일러(302)의 기능을 실현하는 프로그램을 실행하고 있는 상태를 모식적으로 나타내고 있다.
유저 인터페이스 장치(1506)는 유저(100)로부터 시퀀스 제어 프로그램(200)을 취득한다.
I/O 장치(1501)는 설정치 및 컴파일러(302)에 의해 생성된 바이너리(203)를 PLC 장치(401)에 출력한다.
도 3은 PLC 장치(401)의 처리 시퀀스 예를 나타낸다.
우선, PLC 장치(401)는 입력 처리(900)를 실행한다. 입력 처리(900)에서는, PLC 장치(401)는 바이너리(203)의 실행에 필요한 설정치를 프로그래밍 장치(400)의 I/O 장치(1501)로부터 취득한다. 또한, PLC 장치(401)는 입력 처리(900) 이전에 바이너리(203)를 I/O 장치(1501)로부터 취득 완료한다.
다음으로, PLC 장치(401)는 시퀀스 제어 처리(901)를 행한다. 즉, PLC 장치(401)는 입력 처리(900)에서 취득한 설정치를 이용해서 바이너리(203)를 실행한다.
다음으로, PLC 장치(401)는, 출력 처리(902)에서, 시퀀스 제어 처리(901)의 실행 결과를 외부 장치에 출력하거나, 기억 장치(504)에 저장한다.
입력 처리(900), 시퀀스 제어 처리(901), 출력 처리(902)는 실행 주기(903)마다 반복해서 행해진다.
실행 주기(903)를 짧게 하고, 일정 시간 내에 행해지는 입력 처리(900), 시퀀스 제어 처리(901), 출력 처리(902)의 횟수를 많이 하면, PLC 장치(401)의 성능을 높일 수 있다.
또, PLC 장치(401)의 동작은 입력 처리(900)와 출력 처리(902)로 정해지기 때문에, 입력 처리(900)와 출력 처리(902)의 정합이 취해지면, PLC 장치(401)는 시퀀스 제어 처리(901)를 어떻게 행해도 좋다.
도 4는 시퀀스 제어 프로그램 최적화부(300)의 기능 구성예를 나타낸다.
시퀀스 제어 프로그램 최적화부(300)는 변수간 의존 해석부(310), 정보 기억부(311) 및 PLC 명령 정렬 분할부(312)로 구성된다.
변수간 의존 해석부(310)는 시퀀스 제어 프로그램(200)에 포함되는 PLC 명령간의 인수와 리턴값의 관계(이하, 의존 관계라고도 한다)를 해석한다.
또, 변수간 의존 해석부(310)는 PLC 명령간의 의존 관계가 나타나는 변수간 의존 정보(210)를 출력한다. 도 7은 변수간 의존 정보(210)의 일례이다. 도 7의 상세한 것은 후술한다.
변수간 의존 해석부(310)는 관계 해석부의 예이다. 또, 변수간 의존 해석부(310)에서 행해지는 처리는 관계 해석 처리의 예이다.
정보 기억부(311)는 명령 정보(211)와 PLC 장치 정보(212)를 기억하고 있다.
명령 정보(211)에는, 예를 들면, 복수의 연산자 중, 연속 실행에 의해 연산 효율이 향상되는 연산자의 조합이 정의되어 있다. 도 8은 명령 정보(211)의 일례를 나타낸다. 도 8의 상세한 것은 후술하지만, 도 8에 기술되어 있는 연산자의 조합은 추천 연산자 조합에 상당한다. 구체적으로는, ADD와 ADD, ADD와 SUB의 조합, SUB와 ADD, SUB와 SUB의 조합이 추천 연산자 조합에 상당한다.
PLC 장치 정보(212)에는, 예를 들면, PLC 장치(401)의 기종마다, PLC 장치(401)가 동시에 실행될 수 있는 PLC 명령의 수(동시 실행 명령수)가 정의되어 있다. 도 9는 PLC 장치 정보(212)의 예이다. 도 9의 상세한 것은 후술한다.
또한, 정보 기억부(311)는, PLC 명령에 관한, 도 8과는 상이한 종류의 정보를 명령 정보(211)로서 기억하고 있어도 좋다.
또, 정보 기억부(311)는, PLC 장치(401)에 관한, 도 9와는 상이한 종류의 정보를 PLC 장치 정보(212)로서 기억하고 있어도 좋다.
PLC 명령 정렬 분할부(312)는, 변수간 의존 정보(210), 명령 정보(211), PLC 장치 정보(212)를 토대로, 시퀀스 제어 프로그램(200)으로부터 등가 최적화 시퀀스 제어 프로그램(201)을 생성한다.
등가 최적화 시퀀스 제어 프로그램(201)은 시퀀스 제어 프로그램(200)과 처리 결과가 동일하고, PLC 장치(401)가 보다 고속으로 실행할 수 있는 시퀀스 제어 프로그램이다.
PLC 명령 정렬 분할부(312)는, 보다 구체적으로는, 시퀀스 제어 프로그램(200) 내의 복수의 PLC 명령의 명령 실행 순서의 변경 및 PLC 명령 단위에서의 시퀀스 제어 프로그램(200)의 분할 중 적어도 어느 하나를 행해서, 등가 최적화 시퀀스 제어 프로그램(201)을 생성한다.
PLC 명령 정렬 분할부(312)는, 명령 실행 순서의 변경을 행하는 경우는, 변수간 의존 정보(210)에 나타내는 PLC 명령간의 인수와 리턴값의 관계와, 시퀀스 제어 프로그램(200) 내의 각 PLC 명령에 포함되는 연산자에 근거해서, 연속 실행에 의해 연산 효율이 향상되는 2 이상의 명령을 복수의 PLC 명령중으로부터 지정한다. 그리고, PLC 명령 정렬 분할부(312)는, 지정한 2 이상의 PLC 명령이 연속해서 실행되도록 복수의 PLC 명령의 명령 실행 순서의 변경을 행한다.
예를 들면, PLC 명령 정렬 분할부(312)는 복수의 PLC 명령으로부터 임의의 PLC 명령을 선택하고, 선택한 PLC 명령(선택 명령이라고도 한다)의 리턴값을 인수로 하는 PLC 명령의 리턴값을 인수로 하는 PLC 명령 이외의 PLC 명령에 있어서 선택 명령에 포함되는 연산자와 함께 명령 정보(211)에 있어서 추천 연산자 조합에 포함되는 연산자가 포함되는 1 이상의 PLC 명령과 선택 명령을 지정한다.
또, PLC 명령 정렬 분할부(312)는, 시퀀스 제어 프로그램(200)의 분할을 행하는 경우는, 명령 정보(211)에 나타내는 PLC 명령간의 인수와 리턴값의 관계와, PLC 장치 정보(212)에 나타내는 PLC 장치(401)로 동시에 실행할 수 있는 명령수(數)(동시 실행 명령수)에 근거해서, 시퀀스 제어 프로그램(200)을 동시 실행 명령수와 동수의 분할 프로그램으로 분할한다.
예를 들면, PLC 명령 정렬 분할부(312)는, 복수의 PLC 명령으로부터 임의의 PLC 명령을 선택하고, 선택한 선택 명령과, 선택 명령의 리턴값을 인수로 하는 다른 PLC 명령이 동일 분할 프로그램에 포함되도록, 시퀀스 제어 프로그램(200)을 분할한다.
PLC 명령 정렬 분할부(312)는 프로그램 편집부의 예이다. 또, PLC 명령 정렬 분할부(312)에서 행해지는 처리는 프로그램 편집 처리의 예이다.
도 5는 시퀀스 제어 프로그램(200)의 일례를 나타낸다. 도 5는 시퀀스 제어 프로그램(200)의 예로서 래더 프로그램을 나타낸다.
도 5의 시퀀스 제어 프로그램(200)에서는, 이른바 래더(2000)에 PLC 명령(2001~2005)이 접속되어 있다. 도 5의 시퀀스 제어 프로그램(200)에서는, PLC 명령(2001), PLC 명령(2002), PLC 명령(2003), PLC 명령(2004), PLC 명령(2005)의 순으로 실행된다.
변수(2010~2020)는 PLC 명령의 입력치인 인수 또는 PLC 명령의 출력치인 리턴값으로서 데이터를 보유한다.
PLC 명령에는 여러 종류가 있고, 각각의 종류에 따라서, 인수로 주어진 데이터를 처리해서, 처리 결과의 데이터를 리턴값으로서 출력한다. 예를 들어 PLC 명령(2001, 2003, 2004)은 인수 1의 값과 인수 2의 값을 가산하고, 가산치를 리턴값 1로서 출력한다. PLC 명령(2002)는 인수 1의 값과 인수 2의 값을 승산하고, 승산값을 리턴값 1로서 출력한다. PLC 명령(2005)은 인수 1의 값을 인수 2의 값으로 제산하고, 제산값을 리턴값 1로서 출력한다.
어느 PLC 명령의 리턴값으로서 사용한 변수를, 추후에 실행하는 PLC 명령의 인수로서 사용할 수도 있다. 또, 시퀀스 제어 프로그램(200)에는, 도 5에 나타내는 PLC 명령(2001~2005)으로 행해지는 연산 이외의 연산이 행해지는 PLC 명령이 포함되어 있어도 좋다. 또, PLC 명령의 인수 및 리턴값의 수는 도 5에 나타내는 것과 상이해도 좋다. 또, 인수 및 리턴값 중 어느 하나가 존재하지 않아도 좋다.
***동작의 설명***
다음으로, 본 실시 형태에 따른 동작예를 설명한다.
유저(100)는 시퀀스 제어 프로그램(200)을 생성하고, 생성한 시퀀스 제어 프로그램(200)을 프로그래밍 장치(400)에 입력한다. 여기에서는, 유저(100)가 도 5의 시퀀스 제어 프로그램(200)을 생성한 것으로 한다.
프로그래밍 장치(400)의 시퀀스 제어 프로그램 최적화부(300)의 변수간 의존 해석부(310)는 도 6에 나타내는 처리를 행해서 변수간 의존 정보(210)를 얻는다.
도 6은 변수간 의존 해석부(310)의 동작예를 나타낸다.
이하, 도 6을 참조해서 변수간 의존 해석부(310)의 동작예를 설명한다.
스텝 S3001에서는, 변수간 의존 해석부(310)는 현재의 처리 상태를 나타내는 변수인 n와 m의 값을 초기치인 1로 설정한다.
다음으로, 스텝 S3002에서는, 변수간 의존 해석부(310)는 시퀀스 제어 프로그램(200) 상의 n번째의 PLC 명령(이하, 명령 n이라 한다)의 인수에 이용되고 있는 변수와 리턴값에 이용되고 있는 변수와 연산자를 취득한다.
다음으로, 스텝 S3003에서는, 변수간 의존 해석부(310)는 스텝 S3002에서 취득한 인수의 변수와 리턴값의 변수와 연산자를 변수간 의존 정보(210)에 기입한다.
다음으로, 스텝 S3004에서는, 변수간 의존 해석부(310)는 시퀀스 제어 프로그램(200) 상의 n+m번째의 PLC 명령(이하, 명령 n+m이라 한다)의 인수에 이용되고 있는 변수가, 스텝 S3002에서 취득한 명령 n의 리턴값의 변수에 일치하는지 아닌지를 판정한다.
명령 n+m의 인수에 이용되고 있는 변수가 명령 n의 리턴값의 변수와 일치하면, 변수간 의존 해석부(310)는 스텝 S3005에서, 명령 n+m이 명령 n에 의존하고 있다는 것을 변수간 의존 정보(210)에 기입하고, 스텝 S3006로 이동한다.
스텝 S3006에서는, 변수간 의존 해석부(310)는 명령 n+m이 시퀀스 제어 프로그램(200)의 최후의 PLC 명령인지 아닌지를 판정한다.
명령 n+m이 시퀀스 제어 프로그램(200)의 최후의 PLC 명령이 아니면, 변수간 의존 해석부(310)는 스텝 S3007에서, 변수 m의 값을 1 증가시키고, 스텝 S3004로 이동한다.
또한, 명령 n+m이 시퀀스 제어 프로그램(200)의 최후의 PLC 명령이면, 변수간 의존 해석부(310)는 스텝 S3008에서, 명령 n이 시퀀스 제어 프로그램(200)의 최후의 PLC 명령인지 아닌지를 판정한다.
명령 n이 시퀀스 제어 프로그램(200)의 최후의 PLC 명령이면, 변수간 의존 해석부(310)는 처리를 종료한다.
또한, 명령 n이 시퀀스 제어 프로그램(200)의 최후의 PLC 명령이 아니면, 변수간 의존 해석부(310)는 스텝 S3009에서, 변수 n의 값을 1 증가시키고, 또한, 변수 m의 값을 1로 재설정하고, 스텝 S3002로 이동한다.
도 7은 도 5의 시퀀스 제어 프로그램(200)에 대해, 변수간 의존 해석부(310)가 도 6에 나타내는 처리를 행해서 얻어진 변수간 의존 정보(210)의 예를 나타낸다.
도 7에 있어서, 명령 1~명령 5는 도 5에 나타내는 명령 1~명령 5이다.
종류의 란에는, 각 PLC 명령에 포함되는 연산자가 기술된다.
인수의 란에는, 각 PLC 명령의 인수에 이용되는 변수가 기술된다.
리턴값의 란에는, 각 PLC 명령의 리턴값에 이용되는 변수가 기술된다.
의존 어드레스의 란에는, 각 PLC 명령이 의존하고 있는 다른 PLC 명령이 기술된다.
도 10은 PLC 명령 정렬 분할부(312)에 의한 명령 실행 순서를 변경하는 처리를 나타낸다.
이하, 도 10을 참조해서 PLC 명령 정렬 분할부(312)의 동작예를 설명한다.
스텝 S3101에서는, PLC 명령 정렬 분할부(312)는 현재의 처리 상태를 나타내는 변수 n와 변수 m와 변수 p의 값을 초기치인 1로 설정한다.
다음으로, 스텝 S3102에서는, PLC 명령 정렬 분할부(312)는 시퀀스 제어 프로그램(200) 상의 n번째의 PLC 명령(이하, 명령 n이라 한다)을 등가 최적화 시퀀스 제어 프로그램(201)의 p번째에 배치한다. 또한, 명령 n는 선택 명령에 상당한다.
다음으로, 스텝 S3103에서는, PLC 명령 정렬 분할부(312)는, 시퀀스 제어 프로그램(200) 상의 n+m번째의 PLC 명령(이하, 명령 n+m이라 한다)이 명령 n과 함께 효율적으로 실행될 수 있는지 아닌지를 판정한다.
보다 구체적으로는, PLC 명령 정렬 분할부(312)는 명령 정보(211)를 참조해서, 명령 n와 명령 n+m이 효율적으로 실행될 수 있는지 아닌지를 판정한다.
도 8은 명령 정보(211)의 예를 나타낸다. 도 8의 예에서는, 명령 n에 포함되는 연산자가 ADD인 경우에, 명령 n+m의 연산자가 ADD 또는 SUB이면, 명령 n와 명령 n+m는 효율적으로 실행될 수 있다. 마찬가지로, 명령 n에 포함되는 연산자가 SUB인 경우에, 명령 n+m의 연산자가 ADD 또는 SUB이면, 명령 n와 명령 n+m는 효율적으로 실행될 수 있다. 이들에 해당하지 않는 경우는, 명령 n와 명령 n+m는 효율적으로 실행될 수 없다.
명령 n와 명령 n+m를 효율적으로 실행할 수 있는 경우는, PLC 명령 정렬 분할부(312)는 스텝 S3104에서, 시퀀스 제어 프로그램(200) 상에서, 명령 n+m이, 명령 n+m와 명령 n 사이에 있는 명령과 의존 관계에 있는지 아닌지를 판정한다. 즉, 명령 n+m이 명령 n의 리턴값을 인수로 하는 명령의 리턴값을 인수로 하고 있는지 아닌지를 판정한다. 또한, PLC 명령 정렬 분할부(312)는 변수간 의존 정보(210)를 참조해서, 스텝 S3104의 판정을 행한다.
명령 n+m이, 명령 n+m와 명령 n 사이에 있는 명령과 의존 관계에 있는 경우는, PLC 명령 정렬 분할부(312)는 스텝 S3105에서, 명령 n+m이 시퀀스 제어 프로그램(200)의 최후의 PLC 명령인지 아닌지를 판정한다.
명령 n+m이 최후의 명령이 아니면, PLC 명령 정렬 분할부(312)는 스텝 S3108에서, 변수 m의 값을 1 증가시키고, 스텝 S3103로 이동한다.
또, 명령 n+m이 최후의 명령이면, PLC 명령 정렬 분할부(312)는 스텝 S3109에서, 변수 n의 값과 변수 p의 값을 각각 1 증가시키고, 변수 m의 값을 1로 재설정하고, 스텝 S3102로 이동한다.
스텝 S3104에서, 명령 n+m이, 명령 n+m와 명령 n 사이에 있는 명령과 의존 관계에 없는 경우는, PLC 명령 정렬 분할부(312)는 스텝 S3106에서, 명령 n+m을 등가 최적화 시퀀스 제어 프로그램(201)의 p+1번째에 배치한다.
다음으로, 스텝 S3107에서, PLC 명령 정렬 분할부(312)는 명령 n이 시퀀스 제어 프로그램(200)의 최후의 PLC 명령인지 아닌지를 판정한다.
명령 n이 최후의 명령이면, PLC 명령 정렬 분할부(312)는 처리를 종료한다.
또한, 명령 n이 최후의 명령이 아니면, PLC 명령 정렬 분할부(312)는 스텝 S3109로 이동한다.
도 12는 도 10의 처리에 의해 얻어진 등가 최적화 시퀀스 제어 프로그램(201)의 일례를 나타낸다.
도 5의 시퀀스 제어 프로그램(200)과 비교하면, 도 12의 등가 최적화 시퀀스 제어 프로그램(201)에서는, PLC 명령의 명령 실행 순서가 변경되어 있다. 구체적으로는 PLC 명령(2003)이 PLC 명령(2002)보다 먼저 실행되도록 명령 실행 순서가 변경되어 있다.
PLC 명령(2003)의 연산자와 PLC 명령(2001)의 연산자는 모두 ADD이며, ADD와 ADD의 조합은 도 8의 명령 정보(211)에 따르면, 효율적으로 실행될 수 있는 연산자의 조합에 해당한다. 그리고, PLC 명령(2003)은 PLC 명령(2003)과 PLC 명령(2001) 사이에 있는 PLC 명령(2002)에 의존하지 않는다.
이 때문에, PLC 명령(2003)은 도 10의 스텝 S3106에서 PLC 명령(2001)의 다음에 배치된다. 이 결과, 도 12의 등가 최적화 시퀀스 제어 프로그램(201)이 얻어진다.
도 11은 PLC 명령 정렬 분할부(312)에 의한 시퀀스 제어 프로그램을 분할하는 처리를 나타낸다.
이하, 도 11을 참조해서 PLC 명령 정렬 분할부(312)의 동작예를 설명한다.
스텝 S3201에서는, PLC 명령 정렬 분할부(312)는 현재의 처리 상태를 나타내는 변수인 n와 m와 p와 t의 값을 초기치인 1로 설정한다. 또한, 변수 t는 1로 설정 하지 않아도 좋다.
스텝 S3202에서는, PLC 명령 정렬 분할부(312)는 PLC 장치 정보(212)로부터, 대상이 되는 PLC 장치(401)의 동시 실행 명령수를 취득하고, 취득한 동시 실행 명령수를 변수 t로 설정한다.
상술한 바와 같이, PLC 장치 정보(212)는 도 9에 나타내는 바와 같다. PLC 장치 정보(212)에서는, PLC 장치(401)의 기종마다, PLC 장치(401)가 몇개의 PLC 명령을 동시에 실행할 수 있는지가 정의되어 있다.
PLC 명령 정렬 분할부(312)는, 현재 대상으로 하고 있는 PLC 장치(401)의 기종이 기종 2이면, 당해 PLC 장치(401)의 동시 실행 명령 수로서 2를 취득한다.
다음으로, 스텝 S3203에서는, PLC 명령 정렬 분할부(312)는, 분할 목적지가 되는 시퀀스 제어 프로그램인 분할 프로그램을 t개 생성한다. 또, PLC 명령 정렬 분할부(312)는 각 분할 프로그램에 0번으로부터 t-1번까지의 번호를 설정한다.
또한, 이 시점에서는, 각 분할 프로그램은 공백이다.
다음으로, 스텝 S3204에서는, PLC 명령 정렬 분할부(312)는 t개의 분할 프로그램 중에서, 현재 배치되어 있는 PLC 명령수가 가장 적은 분할 프로그램을 특정하고, 당해 분할 프로그램의 번호를 변수 p로 설정한다.
다음으로, 스텝 S3205에서는, PLC 명령 정렬 분할부(312)는 시퀀스 제어 프로그램(200)의 n번째의 PLC 명령(이하, 명령 n이라 한다)을, p번째의 분할 프로그램의 최후미에 배치한다.
다음으로, 스텝 S3206에서는, PLC 명령 정렬 분할부(312)는 시퀀스 제어 프로그램(200)의 n+m번째의 PLC 명령(이하, 명령 n+m이라 한다)이 명령 n와 의존 관계가 있는지를 판정한다. 즉, PLC 명령 정렬 분할부(312)는 변수간 의존 정보(210)를 참조해서, 명령 n+m의 인수의 변수가 명령 n의 리턴값의 변수와 동일한지 아닌지를 판정한다.
명령 n+m이 명령 n와 의존 관계에 있으면, PLC 명령 정렬 분할부(312)는 스텝 S3207에서, 명령 n+m를 p번째의 분할 프로그램의 최후미에 배치한다.
다음으로, PLC 명령 정렬 분할부(312)는 스텝 S3208에서, 명령 n이 시퀀스 제어 프로그램(200)의 최후의 PLC 명령인지 아닌지를 판정한다.
명령 n이 최후의 PLC 명령이면, PLC 명령 정렬 분할부(312)는 처리를 종료한다.
또한, 명령 n이 최후의 PLC 명령이 아니면, PLC 명령 정렬 분할부(312)는 스텝 S3211로 이동한다.
스텝 S3206에서 명령 n+m이 명령 n와 의존 관계에 없으면, PLC 명령 정렬 분할부(312)는 스텝 S3209에서, 명령 n+m이 시퀀스 제어 프로그램(200)의 최후의 PLC 명령인지 아닌지를 판정한다.
명령 n+m이 최후의 PLC 명령이 아니면, PLC 명령 정렬 분할부(312)는 스텝 S3210에서, 변수 m의 값을 1 증가시키고, 스텝 S3206로 이동한다.
또한, 명령 n+m이 최후의 PLC 명령이면, PLC 명령 정렬 분할부(312)는 스텝 S3211에서, 변수 n의 값을 1 증가시키고, 변수 m의 값을 1로 초기화하고, 스텝 S3204로 이동한다.
도 13은 도 11의 처리에 의해 얻어진 등가 최적화 시퀀스 제어 프로그램(201)의 일례를 나타낸다.
도 13에서는, 도 5에 나타내는 시퀀스 제어 프로그램(200)이 분할 프로그램 1과 분할 프로그램 2의 2개로 분할되어 있다.
PLC 장치(401)가 동시에 2개의 프로그램을 실행 가능하면, 도 13에 나타내는 분할 프로그램 1과 분할 프로그램 2를 병행해서 실행함으로써, 실행 소요 시간의 단축화가 도모된다.
이상과 같이, 본 실시 형태에 따른 프로그래밍 장치(400)에서는, 시퀀스 제어 프로그램의 최적화(명령 실행 순서의 변경, 시퀀스 제어 프로그램(200)의 분할)를 행할 수 있다.
PLC 명령 정렬 분할부(312)는 도 10의 명령 실행 순서의 변경 및 도 11의 시퀀스 제어 프로그램의 분할 중 어느 하나만을 행해도 좋다. 또, PLC 명령 정렬 분할부(312)는 도 10의 명령 실행 순서의 변경과 도 11의 시퀀스 제어 프로그램의 분할의 양자를 행해도 좋다. 도 10의 명령 실행 순서의 변경과 도 11의 시퀀스 제어 프로그램의 분할의 양자를 행하는 경우는, PLC 명령 정렬 분할부(312)는 도 10의 명령 실행 순서의 변경을 행한 후의 시퀀스 제어 프로그램에 도 11의 시퀀스 제어 프로그램의 분할을 행해도 좋다. 또, PLC 명령 정렬 분할부(312)는 도 11의 시퀀스 제어 프로그램의 분할을 행한 후의 시퀀스 제어 프로그램(분할 프로그램)에 도 10의 명령 실행 순서의 변경을 행해도 좋다.
***실시 형태의 효과의 설명***
본 실시 형태에 따르면, 시퀀스 제어 프로그램에 있어서의 명령 실행 순서의 변경 및 시퀀스 제어 프로그램의 분할 중 적어도 어느 하나에 의해, 유저가 생성한 시퀀스 제어 프로그램으로부터, 당해 시퀀스 제어 프로그램과 동일한 결과가 얻어지는 보다 효율적인 시퀀스 제어 프로그램을 생성할 수 있다.
이 때문에, 유저는 PLC 장치의 구성 등에 얽매이지 않고, 소망의 처리만을 기술하면, 가장 고속으로 시퀀스 제어가 가능한 프로그램을 얻을 수 있다.
실시 형태 2.
도 14는 본 실시 형태에 따른 프로그래밍 장치(400)의 기능 구성예 및 PLC 장치(401)의 하드웨어 구성예를 나타낸다.
PLC 장치(401)의 하드웨어 구성예는 도 1에 나타낸 것과 동일하기 때문에, 설명을 생략한다.
본 실시 형태에서는, 프로그래밍 장치(400)는 시퀀스 제어 프로그램 최적화부(300)에 의해 생성된 등가 최적화 시퀀스 제어 프로그램(201)을 유저(100)에게 제시한다. 보다 구체적으로는, 도 2에 나타내는 유저 인터페이스 장치(1506)가 등가 최적화 시퀀스 제어 프로그램(201)을 표시한다.
유저(100)가 생성한 시퀀스 제어 프로그램(200)이 오류인 경우는, 등가 최적화 시퀀스 제어 프로그램(201)도 오류인 것으로 된다. 이 때문에, 시퀀스 제어 프로그램(200)이 오류인 경우는, PLC 장치(401)는 유저가 바라는 대로는 동작하지 않는다.
본 실시 형태에서는, 등가 최적화 시퀀스 제어 프로그램(201)이 유저(100)에게 제시되기 때문에, 유저(100)는 등가 최적화 시퀀스 제어 프로그램(201) 내의 PLC 명령을 1개씩 해석해서 PLC 장치(401)의 동작을 확인해 갈 수 있다.
본 실시 형태에서는, PLC 명령으로 기술된 시퀀스 제어 프로그램(200)을, 마찬가지로 PLC 명령으로 기술된 등가 최적화 시퀀스 제어 프로그램(201)으로 변환하고, 등가 최적화 시퀀스 제어 프로그램(201)을 유저(100)에게 제시한다. 이것에 의해, 유저(100)가 PLC 명령만을 이해하고, 고급 범용 언어를 이해하고 있지 않은 경우에도, 유저(100)는 최적화된 시퀀스 제어 프로그램을 확인할 수 있다.
이상, 본 발명의 실시 형태에 대해 설명했지만, 이들 2개의 실시 형태를 조합해서 실시해도 상관없다.
또는, 이들 2개의 실시 형태 중 1개를 부분적으로 실시해도 상관없다.
또는, 이들 2개의 실시 형태를 부분적으로 조합해서 실시해도 상관없다.
또한, 본 발명은 이들의 실시 형태로 한정되는 것은 아니고, 필요에 따라서 여러 변경이 가능하다.
***하드웨어 구성의 설명***
마지막으로, 프로그래밍 장치(400)의 하드웨어 구성의 보충 설명을 행한다.
도 2에 나타내는 프로세서(1500)는 프로세싱을 실시하는 IC(Integrated Circuit)이다.
프로세서(1500)는 CPU(Central Processing Unit), DSP(Digital Signal Processor) 등이다.
메모리(1503)는 RAM(Random Access Memory)이다.
기억 장치(1504)는 ROM(Read Only Memory), 플래시 메모리, HDD(Hard Disk Drive) 등이다.
I/O 장치(1501)는 데이터를 수신하는 수신기 및 데이터를 송신하는 송신기이며, 예를 들면, 통신 칩 또는 NIC(Network Interface Card)이다.
유저 인터페이스 장치(1506)는 마우스, 키보드, 디스플레이 등이다.
기억 장치(1504)에는, OS(Operating System)도 기억되어 있다.
그리고, OS의 적어도 일부가 메모리(1503)에 로딩되고, 프로세서(1500)에 의해 실행된다.
프로세서(1500)는 OS의 적어도 일부를 실행하면서, 시퀀스 제어 프로그램 최적화부(300), 고급 언어 변환부(301) 및 컴파일러(302)의 기능을 실현하는 프로그램을 실행한다.
프로세서(1500)가 OS를 실행함으로써, 태스크 관리, 메모리 관리, 파일 관리, 통신 제어 등이 행해진다.
또, 프로그래밍 장치(400)는 프로세서(1500)를 대체하는 복수의 프로세서를 구비하고 있어도 좋다.
또, 시퀀스 제어 프로그램 최적화부(300), 고급 언어 변환부(301) 및 컴파일러(302)의 처리의 결과를 나타내는 정보나 데이터나 신호치나 변수치가, 메모리(1503), 기억 장치(1504), 프로세서(1500) 내의 레지스터 및 캐시 기억 장치 중 적어도 어느 하나에 기억된다.
또, 시퀀스 제어 프로그램 최적화부(300), 고급 언어 변환부(301) 및 컴파일러(302)의 기능을 실현하는 프로그램은, 자기 디스크, 플렉시블 디스크, 광 디스크, 콤팩트 디스크, 블루레이(등록상표) 디스크, DVD 등의 가반 기억 매체에 기억되어도 좋다.
또, 시퀀스 제어 프로그램 최적화부(300) 및 고급 언어 변환부(301)의 「부」를 「회로」 또는 「공정」 또는 「순서」 또는 「처리」로 바꿔 읽어도 좋다.
또, 프로그래밍 장치(400)는 논리 IC(Integrated Circuit), GA(Gate Array), ASIC(Application Specific Integrated Circuit), FPGA(Field-Programmable Gate Array)라고 하는 전자 회로에 의해 실현되어도 좋다.
또한, 프로세서 및 상기의 전자 회로를 총칭해서 프로세싱 서킷이라고도 한다.
100 유저, 200 시퀀스 제어 프로그램, 201 등가 최적화 시퀀스 제어 프로그램, 202 고급 언어 프로그램, 203 바이너리, 210 변수간 의존 정보, 211 명령 정보, 212 PLC 장치 정보, 300 시퀀스 제어 프로그램 최적화부, 301 고급 언어 변환부, 302 컴파일러, 310 변수간 의존 해석부, 311 정보 기억부, 312 PLC 명령 정렬 분할부, 400 프로그래밍 장치, 401 PLC 장치, 500 프로세서, 501 I/O 장치, 503 메모리, 504 기억 장치, 505 버스, 1500 프로세서, 1501 I/O 장치, 1503 메모리, 1504 기억 장치, 1505 버스, 1506 유저 인터페이스 장치.

Claims (9)

  1. 시퀀스 제어용의 언어로 기술된 제어 프로그램인 시퀀스 제어 프로그램에 포함되는 복수의 명령의 명령간의 인수(argument)와 리턴값(return value)의 관계를 해석하는 관계 해석부와,
    상기 관계 해석부에 의해 해석된 명령간의 인수와 리턴값의 관계와, 각 명령에 포함되는 연산자에 근거해서, 연속 실행에 의해 연산 효율이 향상되는 2 이상의 명령을 상기 복수의 명령 중으로부터 지정하고, 지정한 2 이상의 명령이 연속해서 실행되도록 상기 복수의 명령의 명령 실행 순서의 변경을 행하는 프로그램 편집부
    를 갖는 프로그램 편집 장치.
  2. 삭제
  3. 삭제
  4. 제 1 항에 있어서,
    상기 프로그램 편집 장치는, 연속 실행에 의해 연산 효율이 향상되는 연산자의 조합이 추천 연산자 조합으로서 정의되는 명령 정보를 기억하는 정보 기억부를 더 가지며,
    상기 프로그램 편집부는, 상기 복수의 명령으로부터 임의의 명령을 선택하고, 선택한 선택 명령의 리턴값을 인수로 하는 명령의 리턴값을 인수로 하는 명령 이외의 명령으로 상기 선택 명령에 포함되는 연산자와 함께 상기 명령 정보에 있어서 상기 추천 연산자 조합에 포함되는 연산자가 포함되는 1 이상의 명령과, 상기 선택 명령을 지정하는
    프로그램 편집 장치.
  5. 삭제
  6. 삭제
  7. 삭제
  8. 컴퓨터가, 시퀀스 제어용의 언어로 기술된 제어 프로그램인 시퀀스 제어 프로그램에 포함되는 복수의 명령의 명령간의 인수와 리턴값의 관계를 해석하고,
    상기 컴퓨터가, 해석된 명령간의 인수와 리턴값의 관계와, 각 명령에 포함되는 연산자에 근거해서, 연속 실행에 의해 연산 효율이 향상되는 2 이상의 명령을 상기 복수의 명령 중으로부터 지정하고, 지정한 2 이상의 명령이 연속해서 실행되도록 상기 복수의 명령의 명령 실행 순서의 변경을 행하는
    프로그램 편집 방법.
  9. 시퀀스 제어용의 언어로 기술된 제어 프로그램인 시퀀스 제어 프로그램에 포함되는 복수의 명령의 명령간의 인수와 리턴값의 관계를 해석하는 관계 해석 처리와,
    상기 관계 해석 처리에 의해 해석된 명령간의 인수와 리턴값의 관계와,각 명령에 포함되는 연산자에 근거해서, 연속 실행에 의해 연산 효율이 향상되는 2 이상의 명령을 상기 복수의 명령 중으로부터 지정하고, 지정한 2 이상의 명령이 연속해서 실행되도록 상기 복수의 명령의 명령 실행 순서의 변경을 행하는 프로그램 편집 처리
    를 컴퓨터로 하여금 실행하게 하는, 기억 매체에 기억된 프로그램 편집 프로그램.
KR1020197001430A 2016-08-30 2016-08-30 프로그램 편집 장치, 프로그램 편집 방법 및 기억 매체에 기억된 프로그램 편집 프로그램 KR102041772B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/075360 WO2018042520A1 (ja) 2016-08-30 2016-08-30 プログラム編集装置、プログラム編集方法及びプログラム編集プログラム

Publications (2)

Publication Number Publication Date
KR20190011810A KR20190011810A (ko) 2019-02-07
KR102041772B1 true KR102041772B1 (ko) 2019-11-07

Family

ID=61300369

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197001430A KR102041772B1 (ko) 2016-08-30 2016-08-30 프로그램 편집 장치, 프로그램 편집 방법 및 기억 매체에 기억된 프로그램 편집 프로그램

Country Status (7)

Country Link
US (1) US10990073B2 (ko)
JP (1) JP6532610B2 (ko)
KR (1) KR102041772B1 (ko)
CN (1) CN109643093A (ko)
DE (1) DE112016007069T5 (ko)
TW (1) TWI621066B (ko)
WO (1) WO2018042520A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7024679B2 (ja) * 2018-10-05 2022-02-24 オムロン株式会社 開発支援プログラム、開発支援装置、および開発支援方法
JP7183877B2 (ja) * 2019-03-13 2022-12-06 オムロン株式会社 グラフ表示装置、グラフ表示方法、及びグラフ表示プログラム
AT522186B1 (de) * 2019-05-20 2020-09-15 Dipl Ing Dipl Ing Fh Markus Gruber Computerimplementiertes Verfahren zur rechnergestützten Erzeugung eines ausführbaren Steuerungsprogramms zur Steuerung und/oder Regelung eines technischen Prozesses
CN111401400B (zh) * 2020-02-12 2023-06-20 杭州电子科技大学 一种可编程控制器视觉功能块fbd的内部变量优化方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2927484B2 (ja) 1989-01-25 1999-07-28 株式会社日立製作所 プログラムの自動生成方法及び装置
JP6370503B1 (ja) 2017-04-17 2018-08-08 三菱電機株式会社 プログラム作成装置

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481741A (en) * 1986-04-14 1996-01-02 National Instruments Corporation Method and apparatus for providing attribute nodes in a graphical data flow environment
US5119318A (en) * 1989-04-17 1992-06-02 Del Partners L.P. Expert control system for real time management of automated factory equipment
JPH0769834B2 (ja) * 1991-02-27 1995-07-31 ディジタル イクイップメント コーポレイション ソース・プログラムをコンパイルする方法及び装置
JPH07295612A (ja) 1994-04-21 1995-11-10 Japan Steel Works Ltd:The 高級言語シーケンス命令プログラム生成装置および汎用シーケンサ
US5790874A (en) * 1994-09-30 1998-08-04 Kabushiki Kaisha Toshiba Information processing apparatus for reducing power consumption by minimizing hamming distance between consecutive instruction
JP3422124B2 (ja) * 1995-03-30 2003-06-30 マツダ株式会社 プログラム作成装置
US5963726A (en) * 1998-03-20 1999-10-05 National Instruments Corporation Instrumentation system and method including an improved driver software architecture
US6405145B1 (en) * 1998-03-20 2002-06-11 National Instruments Corporation Instrumentation system and method which performs instrument interchangeability checking
US6085156A (en) * 1998-03-20 2000-07-04 National Instruments Corporation Instrumentation system and method having instrument interchangeability
US6198480B1 (en) * 1998-10-07 2001-03-06 Wonderware Corporation Object-oriented tag browser
JP2001282574A (ja) 2000-03-30 2001-10-12 Oki Electric Ind Co Ltd 処理時間情報を含む図式表現プログラムの表現方法
US8302072B2 (en) * 2000-06-05 2012-10-30 National Instruments Corporation System and method for programmatically generating a graphical program based on a sequence of motion control, machine vision, and data acquisition (DAQ) operations
JP2002091512A (ja) 2000-09-12 2002-03-29 Meidensha Corp シーケンサのプログラミング支援装置
JP2002099312A (ja) * 2000-09-22 2002-04-05 Mitsubishi Electric Corp プログラマブルコントローラおよび制御プログラム開発支援装置
US7213207B2 (en) * 2000-12-20 2007-05-01 National Instruments Corporation System and method for accessing registers of a hardware device in a graphical program
US8522196B1 (en) * 2001-10-25 2013-08-27 The Mathworks, Inc. Traceability in a modeling environment
US8104017B2 (en) * 2001-10-25 2012-01-24 The Mathworks, Inc. Traceability in a modeling environment
US20030182601A1 (en) * 2002-03-19 2003-09-25 Scott Richardson System and method for integrating hardware switching operations into test executive software
JP3912278B2 (ja) * 2002-12-20 2007-05-09 株式会社日立製作所 組込みコントローラ及び組込みコントローラ開発ツール
CN1788254A (zh) * 2003-03-10 2006-06-14 珂特那株式会社 关于Lyee指向软件的静态分析方法
US20050086635A1 (en) * 2003-10-20 2005-04-21 Pegasus Technologies, Inc. Visual programming system and method
JP4254954B2 (ja) * 2004-03-29 2009-04-15 独立行政法人科学技術振興機構 データ処理装置
JP4388427B2 (ja) * 2004-07-02 2009-12-24 オークマ株式会社 スクリプト言語で記述されたプログラムを呼出し可能な数値制御装置
JP4438552B2 (ja) * 2004-07-29 2010-03-24 株式会社ジェイテクト 安全plc、シーケンスプログラム作成支援ソフトウェア及びシーケンスプログラムの判定方法
GB0418066D0 (en) * 2004-08-13 2004-09-15 Ibm A prioritization system
CN100507775C (zh) * 2006-03-13 2009-07-01 富士电机系统株式会社 可编程控制器的编程设备
JP4494361B2 (ja) * 2006-03-31 2010-06-30 三菱電機株式会社 ラダープログラム最適化装置および最適化プログラム
US7954059B2 (en) * 2006-07-24 2011-05-31 National Instruments Corporation Automatic conversion of text-based code having function overloading and dynamic types into a graphical program for compiled execution
US7975233B2 (en) * 2006-07-24 2011-07-05 National Instruments Corporation Automatic conversion of a textual language into a graphical program representation
US20090308734A1 (en) * 2008-06-17 2009-12-17 Schneider Automation Inc. Apparatus and Method for Wafer Level Arc Detection
KR100952557B1 (ko) * 2008-06-19 2010-04-12 한국전력공사 발전소용 시뮬레이터 시스템의 화면정보 제어, 저장, 복원장치 및 방법
CN101364098B (zh) * 2008-09-12 2010-07-28 南京航空航天大学 一种将梯形图转换为指令表程序及解释执行的方法与系统
US8713528B1 (en) * 2008-10-06 2014-04-29 The Mathworks, Inc. Verification of computer-executable code generated from a model
CN101859135B (zh) * 2009-04-07 2012-07-18 西门子(中国)有限公司 对分布式自动化系统进行控制的方法和装置
US8055816B2 (en) * 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
JP5655448B2 (ja) 2010-09-09 2015-01-21 富士電機株式会社 Plcシステム、その開発支援装置
JP2012083934A (ja) 2010-10-12 2012-04-26 Mitsubishi Electric Corp スキャンタイム見積り装置、スキャンタイム見積りプログラム及び記録媒体
JP2012118715A (ja) 2010-11-30 2012-06-21 Fuji Electric Co Ltd Plcシステム、その開発支援装置、プログラム
JP2012145987A (ja) 2011-01-07 2012-08-02 Hitachi Ltd ソフトウェア性能問題指摘方法
JP4905597B1 (ja) * 2011-03-15 2012-03-28 オムロン株式会社 コントローラサポート装置、その装置において実行されるためのコントローラサポートプログラム、およびそのプログラムを格納する記録媒体
JP5252014B2 (ja) * 2011-03-15 2013-07-31 オムロン株式会社 制御装置、制御システム、ツール装置および収集指示プログラム
US8819499B2 (en) * 2011-06-09 2014-08-26 At&T Mobility Ii Llc Sending network reject/error codes from a terminal adaptor to terminal equipment through an at command interface
JP5867088B2 (ja) 2012-01-05 2016-02-24 富士電機株式会社 組込み機器用ソフトウェア作成支援装置およびプログラム
JP5942446B2 (ja) * 2012-02-01 2016-06-29 オムロン株式会社 サポート装置およびサポートプログラム
CN103885376A (zh) * 2012-12-19 2014-06-25 施耐德电器工业公司 可编程逻辑控制器及其事件驱动编程方法
JP6167532B2 (ja) * 2013-01-25 2017-07-26 オムロン株式会社 制御装置および制御装置の動作方法
CN104956274B (zh) * 2013-01-30 2016-11-09 三菱电机株式会社 数控装置
EP2781977B1 (en) * 2013-03-20 2016-10-12 Siemens Aktiengesellschaft Method and system for managing distributed computing in automation systems
US10317860B2 (en) * 2013-05-20 2019-06-11 Mitsubishi Electric Corporation Monitoring control device
US10203681B2 (en) * 2013-11-20 2019-02-12 Mistubishi Electric Corporation Sequence-program-creation supporting apparatus
CN103941627B (zh) * 2014-01-08 2017-09-08 东南大学 一种基于plc编程中sfc到梯形图的转换方法
JP6595181B2 (ja) * 2014-01-09 2019-10-23 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 照明制御システムに関連した店舗業務のための情報表示方法、照明制御方法
JP5701458B1 (ja) * 2014-02-12 2015-04-15 三菱電機株式会社 作画装置および制御システム
CN103760965B (zh) 2014-02-21 2016-08-17 中南大学 一种能量受限嵌入式系统的算法源程序节能优化方法
US20150332167A1 (en) * 2014-05-13 2015-11-19 Tokyo Electron Limited System and method for modeling and/or analyzing manufacturing processes
TW201606644A (zh) * 2014-08-05 2016-02-16 拓連科技股份有限公司 具有自動調整功能之程式產生方法及系統,及其電腦程式產品
WO2016151398A1 (en) * 2015-03-23 2016-09-29 Societal Innovations Ipco Limited System and method for configuring a platform instance at runtime
WO2016209221A1 (en) * 2015-06-24 2016-12-29 Siemens Aktiengesellschaft Control contextualization and reasoning about control
US10380188B2 (en) * 2016-08-05 2019-08-13 International Business Machines Corporation Distributed graph databases that facilitate streaming data insertion and queries by reducing number of messages required to add a new edge by employing asynchronous communication
US10552450B2 (en) * 2016-08-05 2020-02-04 International Business Machines Corporation Distributed graph databases that facilitate streaming data insertion and low latency graph queries
US10394891B2 (en) * 2016-08-05 2019-08-27 International Business Machines Corporation Distributed graph databases that facilitate streaming data insertion and queries by efficient throughput edge addition
US10303582B2 (en) * 2016-10-25 2019-05-28 International Business Machines Corporation Facilitating debugging serverless applications via graph rewriting

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2927484B2 (ja) 1989-01-25 1999-07-28 株式会社日立製作所 プログラムの自動生成方法及び装置
JP6370503B1 (ja) 2017-04-17 2018-08-08 三菱電機株式会社 プログラム作成装置

Also Published As

Publication number Publication date
CN109643093A (zh) 2019-04-16
KR20190011810A (ko) 2019-02-07
TWI621066B (zh) 2018-04-11
DE112016007069T5 (de) 2019-03-28
JPWO2018042520A1 (ja) 2018-12-06
US20200012250A1 (en) 2020-01-09
US10990073B2 (en) 2021-04-27
WO2018042520A1 (ja) 2018-03-08
TW201807569A (zh) 2018-03-01
JP6532610B2 (ja) 2019-06-19

Similar Documents

Publication Publication Date Title
CN111626430B (zh) 一种数据处理方法及相关产品
KR102041772B1 (ko) 프로그램 편집 장치, 프로그램 편집 방법 및 기억 매체에 기억된 프로그램 편집 프로그램
JP4822817B2 (ja) コンパイルシステム
CN108388425B (zh) 一种基于lstm自动补全代码的方法
CN107451663B (zh) 算法组件化、基于算法组件建模方法、装置以及电子设备
US8032873B2 (en) Computer program code size partitioning system for multiple memory multi-processing systems
US9081586B2 (en) Systems and methods for customizing optimization/transformation/ processing strategies
US20100199269A1 (en) Program optimization device and program optimization method
US8448151B2 (en) Method for binarizing initial script on operating system and operating method of binary script
US8037463B2 (en) Computer program functional partitioning system for heterogeneous multi-processing systems
US9117020B2 (en) Determining control flow divergence due to variable value difference
KR20190015285A (ko) Cpu 이용 및 코드 리팩토링을 위한 쿼리 최적화기
CN113283613A (zh) 深度学习模型的生成方法、优化方法、装置、设备及介质
CN111860817A (zh) 一种网络模型部署方法、装置、设备及可读存储介质
US8650525B2 (en) Integrated circuit compilation
JP2006301989A (ja) 計算機言語によるプログラムをブロック図から自動生成する方法と装置とプログラム
CN114449063B (zh) 一种报文处理方法、装置及设备
US8954307B1 (en) Chained programming language preprocessors for circuit simulation
JP2007122187A (ja) プログラム・コード生成装置
CN113031952A (zh) 深度学习模型的执行代码的确定方法、装置及存储介质
CN113391795A (zh) 一种应用场景和软件开发包自适应映射的实现方法和系统
Gad NumPyCNNAndroid: A Library for Straightforward Implementation of Convolutional Neural Networks for Android Devices
US20150277868A1 (en) Declared variable ordering and optimizing compiler
US9304770B2 (en) Method and system adapted for converting software constructs into resources for implementation by a dynamically reconfigurable processor
US11169814B2 (en) Information processing method and computer-readable recording medium having stored therein optimization program

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right