KR20010106421A - 프로그래머블 컨트롤러 - Google Patents

프로그래머블 컨트롤러 Download PDF

Info

Publication number
KR20010106421A
KR20010106421A KR1020017001166A KR20017001166A KR20010106421A KR 20010106421 A KR20010106421 A KR 20010106421A KR 1020017001166 A KR1020017001166 A KR 1020017001166A KR 20017001166 A KR20017001166 A KR 20017001166A KR 20010106421 A KR20010106421 A KR 20010106421A
Authority
KR
South Korea
Prior art keywords
data
instruction
data memory
register
sequence program
Prior art date
Application number
KR1020017001166A
Other languages
English (en)
Other versions
KR100398759B1 (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 KR20010106421A publication Critical patent/KR20010106421A/ko
Application granted granted Critical
Publication of KR100398759B1 publication Critical patent/KR100398759B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Programmable Controllers (AREA)

Abstract

명령디코드부에서 통정/비통전정보저장부에 저장되어 있는 직전의 시퀀스프로그램의 접점의 상태에서 해당 명령디코드부에 디코드된 명령의 실행조건으로한 실행/비실행을 판독하고, 데이터메모리제어부에 의해 실행조건 성립시에는 연산데이터를 상기 데이터메모리 또는 시퀀스프로그램메모리에서 판독하여 상기 연산부에서의 연산처리후에 연산결과를 상기 데이터메모리에 기록하는 제어를 행하고,실행조건 불성립시에는 상기 데이터메모리와, 상기 연산부간의 연산데이터의 판독/기록을 하지않는 제어를 행하며 실행조건 불성립시에는 연산을 실행하지 않고 다음의 명령으로 이행한다.

Description

프로그래머블 컨트롤러{A PROGRAMMABLE CONTROLLER}
프로그래머블 컨트롤러의 종래예를 도 21를 참조하여 설명한다. 도 21은 일본국특개평 5-204416호 공보에 나타낸 프로그래머블 컨트롤러의 구성을 나타낸다. 이 프로그래머블 컨트롤러는 시퀀스프로그램을 저장하는 시퀀스프로그램메모리 (100)와, 시퀀스프로그램의 연산회로(101)와, 연산데이터를 저장하는 데이터메모리 (102)와, 연산회로(101)에서는 실행되지 않는 명령을 처리하는 마이크로프로세서 (103)와를 구비하고 있다.
연산회로(101)는 시퀀스프로그램메모리(100)에 저장된 시퀀스프로그램의 명령코드를 디코드하는 명령디코드부(104)와, 직전의 시퀀스프로그램의 접점의 상태를 저장하는 도통/비도통정보저장부(105)와, 연산하는 데이터를 일시적으로 저장하는 연산데이터저장부(106)와, 명령코드의 내용에 따라 비트처리, 워드처리를 실행하는 연산부(107)와, 데이터메모리(102)에 대한 어드레스를 생성하는 어드레스생성부 (108)와, 데이터메모리(102)에서 연산데이터를 연산회로(101)에 판독하며, 연산부 (107)의 연산결과를 데이터메모리(102) 및 도통/비도통정보저장부(105)에 기입할 때의 제어를 하는 제어부(109)를 구비하고 있다.
다음에 연산회로(101)의 동작에 대하여 설명한다. 연산회로(101)에서 처리되는 명령을 실행하는 경우, 시퀀스프로그램메모리(100)에서 판독한 데이터가 연산회로(101)에서 처리되는 명령인 것을 명령디코드부(104)에서 인식하면, 디코드한 내용에 따라 연산부(107)에서 연산처리를 하고, 연산결과를 도통/비도통정보저장부 (105) 또는 데이터메모리(102)에 저장한다. 이때 연산을 행하는 데이터에는 데이터메모리(102)에서 연산데이터저장부(106)에 판독된 데이터, 도통/비도통정보저장부 (105)에 저장된 데이터 및 연산회로(101)내의 각 레지스터에 저장된 데이터가 있다. 연산결과를 도통/비도통정보저장부(105)에 저장하는 경우는 데이터메모리(102)내의 데이터를 도통/비도통정보로서 유지하며, 다음에 계속되는 명령이 도통/비도통정보를 사용하는 경우이다. 한편, 연산결과를 데이터메모리(102)에 저장하는 경우는 도통/비도통정보가 도통한 경우에 연산부(107)에서 연산한 결과를 데이터메모리(102)에 유지하는 경우이다.
다음, 연산회로(101)에서 실행안되는 명령을 처리하는 경우의 동작에 대하여 설명한다. 명령디코드부(104)에서, 연산회로(101)에서는 처리안되는 명령을 인식하면, 명령디코드부(104)에서 마이크로프로세서(103)를 기동한다. 마이크로프로세서 (103)가 기동하면, 마이크로프로세서(103)는 데이터메모리(102)에서 연산데이터를 판독하고, 연산을 실행하여 연산결과를 도통/비도통정보저장부(105) 또는 데이터메모리(102)에 기록한다. 또, 전회의 스캔에서 실행했는가 아닌가를 판단하여 동작하는 명령 및 전회 실행했을 때의 데이터메모리(102)의 해당 비트의 상태를 판단하여 동작하는 명령에서는 전회의 실행/비실행정보를 예로서 시퀀스프로그램내의 해당 비트에 저장하여 명령의 처리를 완료한다.
다음, 구체적으로 도 22에 나타난 시퀀스프로그램을 앞에서 기술한 구성에 의한 종래의 프로그래머블 컨트롤러에서 처리를 하는 경우에 대하여 설명한다. 도 22에 있어서, 110은 데이터메모리(102)에 저장된 비트데이터(X0)의 상태를 도통/비도통정보저장부(105)에 저장하는 명령(심볼)을, 111은 데이터메모리(102)에 저장된 비트데이터(X1)의 상태와 명령(110)으로 도통/비도통정보저장부(105)에 저장한 접점의 도통/비도통정보의 논리적을 도통/비도통정보저장부(105)에 저장하는 명령(심볼)을, 112는 데이터메모리(102)에 저장된 워드데이터(D0)와 워드데이터(D1)의 비교결과와 명령(110)으로 저장된 도통/비도통정보의 논리적을 행하여 그의 결과를 도통/비도통정보저장부(105)에 저장하는 명령(심볼)을, 113은 직전의 도통/비도통정보저장부(105)의 데이터가 ON의 경우에는 데이터메모리(102)에 저장된 워드데이터(D2)를 워드데이터(D3)의 내용으로서 전송하며, OFF의 경우에는 전송을 실행하지 않는 명령(심볼)을, 114는 직전의 도통/비도통정보저장부(105)의 데이터가 ON의 경우에는 데이터메모리(102)에 저장된 워드데이터(D4)와 워드데이터(D5)의 데이터의 가산결과를 D6의 내용으로서 저장하며, OFF의 경우에는 가산을 실행하지 않는 명령(심볼)을 나타내고 있다.
도 22에 나타나고 있는 명령(110) ~ 명령(114)은, 명령코드로서 시퀀스프로그램메모리(100)에 순으로 저장되어 있으며, 순차, 명령디코드부(104)에 판독된다. 먼저, 명령(110)을 인출(fetch)하면, 제어부(109)가 데이터메모리(102)내에 저장된 입력장치를 연산데이터저장부(106)에 판독하고, 연산부(107)에서 X0의 ON/OFF 상태를 비트추출하여 도통/비도통정보저장부(105)에 저장한다.
다음, 명령(111)을 인출하면, 제어부(109)가 데이터메모리(102)내에 저장된 입력장치를 연산데이터저장부(106)에 판독하고, 연산부(107)에서 X0의 ON/OFF 상태를 비트추출하고, 비트추출한 결과와 도통/비도통정보저장부(105)의 데이터의 논리적을 도통/비도통정보로서 저장한다.
다음, 명령(112)을 인출하면, 연산부(107)에서 실행안되는 명령인 것을 명령코드부(104)에서 식별하여 마이크로프로세서(103)를 기동하며, 데이터메모리(102)에 저장된 워드데이터(D0)와 워드데이터(D1)의 비교결과와 명령(111)에서 저장된 도통/비도통정보의 논리적을 행하여 그의 결과를 도통/비도통정보저장부(105)에 저장한다. 다음, 명령(113)을 인출하면, 제어부(109)가 데이터메모리(102)에서 D2와 D3와를 판독하여 도통/비도통정보가 ON의 경우에는 D2의 내용을 D3에, 도통/비도통정보가 OFF의 경우에는 판독한 D3의 내용을 그대로 D3에 기록한다.
최후에 명령(114)을 인출하면, 연산회로(101)에서 실행안되는 명령인 것을 명령디코드부(104)에서 식별하여 마이크로프로세서(103)를 기동하며, 도통/비도통정보가 ON의 경우에는 D4와 D5와의 가산을 행하고, 그의 가산결과를 D6에 기입하며, 도통/비도통정보가 OFF의 경우에는 가산을 실행하지 않는다.
상기와 같은 종래의 프로그래머블 컨트롤러에서는 도통/비도통정보의 상태에불구하고 반드시 명령의 판별을 행하므로 실행/비실행에 불구하고 명령의 처리사이클이 동일하게 되며, 그 때문에 비실행시의 시퀀스프로그램의 처리시간이 단축안되는 문제점이 있었다.
또, 상기와 같은 종래의 프로그래머블 컨트롤러에서는 2중워드의 데이터연산을 실행하는 경우에는 데이터메모리(102)에 대하여 상위어드레스를 생성못하므로 연산회로(101)에서는 실행안되는 명령으로서 마이크로프로세서(103)에 실행할 수 밖에 없으며, 명령의 처리시간이 길게된다는 문제점이 있었다.
또, 상기와 같은 종래의 프로그래머블 컨트롤러에서는 전회의 스캔에서 실행했는가 아닌가를 기록하는 수단이 없으므로 전회의 스캔의 실행/비실행정보를 사용하는 명령은 필연적으로 마이크로프로세서(103)에서 실행하여야 되며, 명령의 처리시간이 길게된다는 문제점이 있었다.
따라서, 본 발명은 비실행시의 시퀀스프로그램의 처리시간을 단축하며, 연산회로에서의 2중워드의 데이터연산 및 전회의 스캔의 실행/비실행정보를 사용하는 명령처리를 가능하게 하며, 시퀀스프로그램의 고속연산처리하는 프로그래머블 컨트롤러를 제공하는 것을 목적으로 하고 있다.
본 발명은 프로그래머블 컨트롤러에 관한 것이며, 특히 프로그래머블 컨트롤러에 있어서, 시퀀스프로그램을 고속처리하는 연산회로에 관한 것이다.
도 1은 본 발명에 의한 프로그래머블 컨트롤러의 구성을 나타내는 블록도이며, 도 2(a),(b)는 본 발명에 의한 프로그래머블 컨트롤러의 동작을 나타내는 사다리회로도 및 명령코드리스트도이며, 도 3은 도 2(a)에 나타난 사다리회로의 실행시의 타이밍차트이며, 도 4는 도 2(a)에 나타난 사다리회로의 비실행시의 타이밍차트이고, 도 5(a),(b)는 시퀀스프로그램메모리와 데이터메모리의 관계를 나타내는 설명도이며, 도 6은 프로그래머블 컨트롤러의 다른 동작을 나타내는 사다리회로 및 명령코드리스트도이고, 도 7은 도 6(a)에 나타낸 사다리회로의 실행시의 타이밍차트이며, 도 8은 도 6(a)에 나타낸 사다리회로의 비실행시의 타이밍차트이고, 도 9는 도 6(a)에 나타낸 사다리회로의 비실행시의 파이프라인레지스터의 동작을 나타내는 타이밍차트이며, 도 10은 도 6(a)에 나타낸 사다리회로의 실행시의 파이프라인레지스터의 동작을 나타내는 타이밍차트이고, 도 11은 본 발명에 의한 프로그래머블 컨트롤러의 다른 동작을 나타내는 사다리회로도 및 명령코드리스트도이다. 도 12는 도 11(a)에 나타낸 사다리회로의 실행시의 타이밍차트이며, 도 13은 도 11(a)에 나타낸 사다리회로의 비실행시의 타이밍차트이고, 도 14는 본 발명에 의한 프로그래머블 컨트롤러의 다른 동작을 나타내는 사다리회로 및 명령코드리스트도이며, 도 15는 도 14(a)에 나타낸 사다리회로의 실행시의 타이밍차트이고, 도 16은 도 14(a)에 나타낸 사다리회로의 비실행시의 타이밍차트이며, 도 17은 도 14(a)에 나타낸 사다리회로의 연산회로와 도통/비도통정보저장부의 블록도이고, 도 18(a) ~ (c)는 본 발명에 의한 프로그래머블 컨트롤러의 다른 동작을 나타낸 회로도 및 명령코드리스트도이며, 도 19는 도 18(a)에 나타낸 사다리회로의 1 스캔째의 동작을 나타낸 타이밍차트이며, 도 20은 도 18(a)에 나타낸 사다리회로의 2 스캔째 이후의 동작을 나타낸 타이밍차트이고, 도 21은 종래의 프로그래머블 컨트롤러의 구성을 나타내는 블록도이며, 도 22는 종래의 프로그래머블 컨트롤러의 동작을 나타내는 사다리회로이다.
본 발명은 시퀀스프로그램을 저장하는 시퀀스프로그램메모리와, 연산데이터를 저장하는 데이터메모리와, 상기 시퀀스프로그램메모리의 명령코드를 해석하는 명령디코드부와, 직전의 시퀀스프로그램의 접점의 상태를 저장하는 도통/비도통정보저장부와, 상기 데이터메모리에서 판독한 연산데이터를 일시적으로 저장하는 연산데이터저장부와, 상기 데이터메모리에 대한 리드/라이트제어 및 상기 연산데이터저장부의 제어를 행하는 제어부와, 명령코드의 내용에 따라 연산을 행하는 하드웨어구성의 연산부와를 구비한 프로그래머블 컨트롤러에 있어서, 상기 명령디코드부는 상기 도통/비도통정보저장부에 저장되어 있는 직전의 시퀀스프로그램의 접점의 상태에서 해당 명령디코드부에 디코드된 명령의 실행조건으로 한 실행/비실행을 판단하고, 상기 제어부에 데이터메모리제어부가 구비되고, 해당 데이터메모리부는 실행조건성립시에는 연산데이터를 상기 데이터메모리 또는 시퀀스프로그램메모리에서 판독하여 상기 연산부에서의 연산후에 연산결과를 상기 데이터메모리에 기록하는 제어를 행하며, 실행조건불성립시에는 상기 데이터메모리와 상기 연산부간의 연산데이터의 리드/라이트를 행하지 않는 제어를 행하고, 실행조건불성립시에는 연산을 실행하지 않고 다음의 명령으로 이행하는 프로그래머블 컨트롤러를 제공한다. 따라서, 접점의 도통/비도통정보에 의해 명령디코드부에서 실행/비실행을 판단하고, 비실행시에는 데이터메모리와 연산부간의 연산데이터의 리드/라이트 및 연산을 실행하지 않으므로 비실행시의 처리시간을 단축할 수 있다.
또, 본 발명은 시퀀스프로그램을 저장하는 시퀀스프로그램메모리와, 연산데이터를 저장하는 데이터메모리와, 상기 시퀀스프로그램메모리의 명령코드를 해석하는 명령디코드부와, 직전의 시퀀스프로그램의 접점의 상태를 저장하는 도통/비도통정보저장부와, 상기 데이터메모리에서 판독한 연산데이터를 일시적으로 저장하는 연산데이터저장부와, 상기 데이터메모리에 대한 리드/라이트제어 및 상기 데이터저장부의 제어를 행하는 제어부와, 명령코드의 내용에 따라 연산을 행하는 하드웨어구성의 연산부와를 구비한 프로그래머블 컨트롤러에 있어서, 상기 시퀀스프로그램메모리내에 전회의 스캔에서 명령을 실행했는가 아닌가를 저장하는 비트(실행프래그비트)가 구비되어 상기 명령디코드부는 상기 도통/비도통정보저장부에 저장되어 있는 직전의 시퀀스프로그램의 접점의 상태와 상기 시퀀스프로그램메모리내의 상기 비트의 ON/OFF 상태에서, 해당 명령디코드부에 디코드된 명령의 실행조건으로 한 실행/비실행을 판단하며, 상기 제어부에 데이터메모리제어부가 제공되어 해당 데이터메모리제어부는 실행조건성립시에는 연산데이터를 상기 데이터메모리 또는 시퀀스프로그램메모리에서 판독하여 상기 연산부에서의 연산후에 연산결과를 상기 데이터메모리에 기록하는 제어를 하며, 실행조건불성립시에는 상기 데이터메모리와 상기 연산부와의 사이에 연산데이터의 리드/라이트를 행하지 않는 제어를 하며, 실행조건불성립시에는 연산을 실행치 않고 다음의 명령으로 이행하는 프로그래머블 컨트롤러를 제공할 수 있다. 따라서, 접점의 도통/비도통정보와 실행프래그비트에 의해 명령디코드부에서 실행/비실행을 판단하고, 비실행시에는 데이터메모리와 연산부간의 연산데이터의 리드/라이트 및 연산을 실행하지 않으므로 비실행시의 처리시간을 단축할 수 있다.
또, 본 발명은 상기 시퀀스프로그램메모리내의 전회의 스캔에서 명령을 실행했는가 아닌가를 저장하는 비트에 상기 도통/비도통정보저장부의 데이터를 기입하도록 구성되어 있는 프로그래머블 컨트롤러를 제공한다. 따라서, 도통/비도통정보를 다음의 스캔의 실행프래그에 사용할 수 있도록 시퀀스프로그램메모리내의 해당비트에 기입함으로서, 접점이 ON한 스캔만 실행하는 명령을 하드웨어구성의 연산부에서 고속처리하는 것이 가능하게 되어 연산처리를 고속화할 수 있다.
또, 본 발명은 상기 데이터메모리에 액세스하는 어드레스를 인출하는 어드레스유지수단을 구비하며, 2중워드연산을 하는 명령코드를 상기 명령디코드부가 인식하여 실행조건이 성립한 상위워드데이터를 리드/라이트할 때에 상기 어드레스유지수단에 인출한 어드레스를 인크리먼트하여 상기 데이터메모리에 대한 어드레스를 생성하는 어드레스생성제어수단을 가지며, 상기 어드레스유지수단과 상기 어드레스생성제어수단의 동작에 의해 데이터메모리에 2중워드데이터를 리드/라이트하는 프로그래머블 컨트롤러를 제공할 수 있다. 따라서, 2중워드의 명령을 하드웨어구성의 연산부에서 고속처리하는 것이 가능하게 되어 연산처리를 고속화할 수 있다.
또, 본 발명은 상기 연산부와 비교기를 가지며, 상기 데어터메모리제어부는 실행조건성립시에는 연산데이터를 상기 데이터메모리 또는 시퀀스프로그램메모리에서 판독하여 상기 연산부의 비교기에 의해 비교연산후에 연산결과를 데이터메모리에 기록하는 제어를 하며, 실행조건불성립시에는 데이터메모리와 연산부와의 사이의 연산데이터의 리드/라이트를 하는 제어를 행하고, 실행조건불성립시에는 연산부의 비교기에 의해 비교연산을 실행하지 않고 다음의 명령에 이행하는 프로그래머블 컨트롤러를 제공할 수 있다. 따라서, 도통/비도통정보저장부에 연산결과를 저장하는 명령에서, 명령의 실행조건에 의해 비교연산을 실시하기전에 실행/비실행의 판단을 하여 명령이 비실행의 경우에는 비교연산을 실시하지 않으므로 비실행시의 처리시간을 단축할 수 있다.
또, 본 발명은 상기 시퀀스프로그램메모리에 상기 데이터메모리에서 연산데이터를 판독하는 명령 또는 시퀀스프로그램메모리의 내용을 판독명령과 연산을 나타내는 명령의 조합으로 구성된 명령코드가 저장되며, 상기 연산데이터저장부는 상기 데이터메모리에서 판독한 연산데이터를 저장하는 데이터저장용 레지스터와, 연산데이터를 저장하는 레지스터번지를 나타내는 스택포인터(stack pointer)와를 가지며, 상기 제어부는 연산데이터를 판독하는 명령 또는 시퀀스프로그램메모리의 내용을 실행하면, 상기 데이터저장용 레지스터에 연산데이터를 저장한 후 상기 스택포인터를 인크리먼트하며, 연산을 나타내는 명령을 실행하면, 상기 스택포인터를 디크리먼트한 후 상기 데이터저장용 레지스터에서 데이터를 판독하여 실행조건이 성립안되면, 연산을 나타내는 명령을 처리하는 경우에 상기 스택포인터의 초기화를 행하는 스택포인터제어부를 구비하고 있는 프로그래머블 컨트롤러를 제공할 수 있다. 따라서, 실행조건이 성립안되면, 연산을 나타내는 명령을 처리하는 경우에 스택포인터의 초기화만이 이루어져서 처리시간의 단축이 도모된다.
또, 본 발명은 시퀀스프로그램을 저장하는 시퀀스프로그램메모리내에 전회의 스캔에서 명령을 실행했는가 아닌가를 저장하는 비트(실행프래그비트)가 제공되어 데이터메모리에서 판독한 비트의 ON/OFF의 상태와 전회의 스캔에서 명령을 실행했는가 아닌가를 저장하는 상기 비트의 ON/OFF상태와의 논리연산을 행하여 연산결과를 상기 도통/비도통정보저장부에 기록하도록 구성되어 있는 프로그래머블 컨트롤러를 제공한다. 따라서, 시퀀스프로그램메모리의 실행프래그비트에 전회의 스캔의 비트장치의 상태를 기록하므로 비트장치가 변화한 스캔만 실행하는 명령을 하드웨어구성의 연산부에서 고속처리하는 것이 가능하게 되어 연산처리를 고속화할 수 있다.
또, 본 발명은 상기 데이터메모리에서 판독한 비트의 ON/OFF의 상태를 상기 시퀀스프로그램메모리내의 전회의 스캔에서 명령을 실행했는가 아닌가를 저장하는 비트(실행프래그비트)에 기록하도록 구성되어 있는 프로그래머블 컨트롤러를 제공할 수 있다. 따라서, 데이터메모리에서 판독한 비트의 ON/OFF의 상태를 상기 시퀀스프로그램메모리내의 전회의 스캔에서 명령을 실행했는가 아닌가를 저장하는 비트(실행프래그비트)에 기록하는 것이 행하여 지고, 비트장치가 변화한 스캔만 실행하는 명령을 하드웨어구성의 연산부에서 고속처리하는 것이 가능하게 되어 연산처리를 고속화할 수 잇다.
또, 본 발명은 상기 시퀀스프로그램을 저장하는 시퀀스프로그램메모리내에 전회의 스캔에서 명령을 실행했는가 아닌가를 저장하는 비트가 제공되어 상기 도통/비도통정보저장부에 저장되어 있는 직전의 시퀀스프로그램의 접점 ON/OFF의 상태와 전회의 스캔에서 명령을 실행했는가 아닌가를 저장하는 비트의 ON/OFF상태와의 논리연산을 행하고, 연산결과를 상기 도통/비도통정보저장부에 기록하도록 구성되어 있는 프로그래머블 컨트롤러를 제공할 수 있다. 따라서, 도통/비도통정보를 다음의 스캔의 실행프래그비트에 사용되도록 시퀀스프로그램메모리내의 해당비트에 기입하므로 접점이 ON된 스캔만 실행하는 명령을 하드웨어구성의 연산부에서 고속처리하는 것이 가능하게 되어 연산처리를 고속화할 수 있다.
또, 본 발명은 상기 도통/비도통정보저장부의 데이터를 세이브하는 레지스터를 가지며, 상기 레지스터에 세이브한 데이터를 상기 시퀀스프로그램메모리내의 전회의 스캔에서 명령을 실행했는가 아닌가를 저장하는 비트에 기입하도록 구성되어 있는 프로그래머블 컨트롤러를 제공할 수 있다. 따라서, 레지스터에 세이브한 도통/비도통정보를 시퀀스프로그램메모리내의 전회의 스캔에서 명령을 실행했는가 아닌가를 저장하는 비트에 기록할 수가 있어 접점이 ON된 스캔만 실행하는 명령을 하드웨어구성의 연산부에서 고속처리하는 것이 가능하게 되어 연산처리를 고속화할 수 있다.
(발명을 실시하기 위한 최량의 형태)
본 발명을 보다 상세히 기술하기 위하여 첨부도면에 따라 이것을 설명한다.
도 1은 본 발명에 의한 프로그래머블 컨트롤러를 나타내고 있다. 이 프로그래머블 컨트롤러는 시퀀스프로그램의 명령코드를 저장하는 시퀀스프로그램메모리 (1)와, 시퀀스프로그램의 연산회로(2)와, 연산데이터를 저장하는 데이터메모리(3)와를 구비하고 있다.
시퀀스프로그램메모리(1)내에는 전회의 스캔에서 명령을 실행했는가 아닌가를 저장하는 비트(실행프래그비트)가 구비되고 있다. 시퀀스프로그램의 연산회로 (2)는 시퀀스프로그램메모리(1)에 저장된 내용을 0 번지에서 순으로 판독하는 파이프라인레지스터(이하, B2R레지스터라 함)(4)와, B2R레지스터(4)의 내용을 판독하는 파이프라인레지스터(이하, B3R레지스터라 함)(5)와, B2R레지스터(4)의 내용을 디코드하는 명령디코드부(6)와, 직전의 시퀀스프로그램의 접점의 상태를 저장하는 도통/비도통정보저장부(7)와, 연산하는 데이터를 일시적으로 저장하는 연산데이터저장부(8)와, 명령코드의 내용에 따라 비트처리 및 워드처리(산술연산, 논리연산, 전송)를 실행하는 하드웨어구성의 연산부(9)와, 데이터메모리(3)에 대한 어드레스를 생성하는 어드레스생성부(10)와, 데이터메모리(3)에서 연산데이터를 연산회로 (2)에 판독하며, 연산부(9)의 연산결과를 데이터메모리(3) 및 도통/비도통정보저장부(7)에 기입할 때의 제어를 행하는 제어부(11)와, 정수데이터를 취급하는 경우에 정수데이터를 래치하는 정수래치레지스터(12)와, 비트연산을 행하는 경우에 비트지정데이터를 래치하는 비트지정레지스터(13)와, 데이터메모리(3)에서 판독한 연산데이터를 래치하는 입력레지스터(14)와를 구비하고 있다.
명령디코드부(6)는 디코드한 내용을 유지하는 파이프라인레지스터(이하, DEC1레지스터라 함)(15)와, DEC1레지스터(15)의 내용을 유지하는 파이프라인레지스터(이하, DEC2레지스터라 함)(16)와를 포함하고 있으며, 도통/비도통정보저장부(7)에 저장되어 있는 직전의 시퀀스프로그램의 접점의 상태 또는 도통/비도통정보저장부(7)에 저장되어 있는 직전의 시퀀스프로그램의 접점의 상태와 시퀀스프로그램메모리(1)내의 실행프래그비트의 ON/OFF상태를 명령디코드부(6)에 디코드된 명령의 실행조건으로 한 실행/비실행을 판단한다.
연산데이터저장부(8)는 데이터메모리(3)에서 판독한 연산데이터를 저장하는 데이터저장용 레지스터(17)와, 데이터저장용 레지스터(17)의 연산데이터를 저장하는 레지스터번지를 나타내는 스택포인터(18)와를 포함하고 있다. 어드레스생성부 (10)는 2중워드명령의 연산을 실행하는 경우에 데이터메모리(3)에 대한 어드레스를 저장하여 놓는 어드레스레지스터(어드레스 유지수단)(19)를 포함하고 있다.
어드레스레지스터(19)는 2중워드연산을 행하는 명령코드를 명령디코드부(6)가 인식하고, 실행조건이 성립하여 상위데이터를 리드/라이트할 때에 어드레스레지스터(19)에 래치한 어드레스를 인크리먼트하여 데이터메모리(3)에 대한 어드레스를 생성한다.
제어부(11)는 데이터메모리(3)에 대한 어드레스를 생성하는 어드레스생성부 (10)의 제어를 행하는 어드레스생성제어부(20)와, 연산데이터저장부(8)에 구비되어 있는 스택포인터(18)의 제어를 행하는 스택포인터제어부(21)와, 데이터메모리(3)의 리드/라이트 제어를 행하는 데이터메모리제어부(22)와, 파이프라인레지스터의 제어를 행하는 파이프라인제어부(23)와를 포함하고 있다.
스택포인터제어부(21)는 연산데이터를 판독하는 명령 또는 시퀀스프로그램메모리의 내용을 판독하는 명령의 실행시에 데이터저장용 레지스터(17)에 연산데이터를 저장한 후 스택포인터(18)를 인크리먼트하여 연산을 나타내는 명령을 실행하면,스택포인터(18)를 디크리먼트한 후 데이터저장용 레지스터(17)에서 데이터를 판독하여 실행조건이 성립되지 않으면, 연산을 나타내는 명령을 처리하는 경우에 스택포인터(18)의 초기화를 행한다.
데이터메모리제어부(22)는 명령의 실행조건 성립/불성립에 응하여 데이터메모리(3)의 리드/라이트 제어를 행한다. 파이프라인제어부(23)는 명령실행사이클이 2사이클이상으로 되는 경우에 시퀀스프로그램메모리(1)의 파이프라인 동작을 정지시키는 웨이트신호를 생성한다.
통전/비통전정보세이브레지스터(29)는 세이브한 데이터를 시퀀스프로그램메모리(1)내의 전회의 스캔에 명령을 실행했는가 아닌가를 저장하는 비트에 기록되도록 구성되어 있다.
도 2(a),(b)는 시퀀스프로그램의 사다리회로와 명령코드의 내용(예 1)을 나타내고 있다. 도 2(a)에서, 30, 31은 데이터메모리(3)에 저장된 X0장치, X1장치의 상태를 판독하여 도통/비도통정보저장부(7)에 저장하는 명령(심볼)을, 32는 도통/비통정보저장부(7)의 상태가 1(ON)의 경우에 워드데이터(D0)와 워드데이터(D1)의 가산을 행하고, 연산결과를 D2에 저장하는 명령(심볼)을, 33은 워드데이터(D3)에 1을 가산하여 연산결과를 D3에 저장하는 명령(심볼)을 각각 나타내고 있다.
명령(32)의 명령코드는 도 2(b)에 나타낸 것과 같이 시퀀스프로그램메모리 (1)의 a + 1 번지에서 a + 3 번지에 저장되며, 데이터메모리(3)에서 데이터저장용 레지스터(17)에 데이터를 판독하는 a + 1 번지와 a + 2 번지의 명령과 연산내용을 나타내는 a + 3 번지의 명령와로 구성된다. 마찬가지로, 명령(33)의 명령코드는 시퀀스프로그램메모리(1)의 a + 5 번지에서 a + 6 번지에 저장되고, 데이터메모리(3)에서 데이터저장용 레지스터에 데이터를 판독하는 a + 5 번지의 명령과 연산내용을 나타내는 a + 6 번지의 명령으로 구성된다.
도 3은 도 2에 나타내고 있는 예 1의 사다리회로를 도 1에 나타나 있는 연산회로(2)에서 동작시켰을 때 명령(32 및 33)을 실행한 경우의 동작을 나타내는 타이밍차트이며, 도 4는 명령(32 및 33)을 실행하지 않은 경우의 동작을 나타내는 타이밍차트이다.
도 3, 도 4에서 SCK는 기준클록을, B3RCK는 B3R레지스터(5)와 DEC1레지스터 (15)의 래치클록을, DECL2CK는 DEC2레지스터(16)의 래치블록을, DL2CRL은 DEC2레지스터(16)을 초기화하는 블록을, INCK는 데이터메모리(3)의 내용을 입력레지스터 (14)에 래치하는 클록을 각각 나타내고 있다. 또, V80WAIT는 명령의 실행사이클이 2사이클이상이 되는 경우에 시퀀스프로그램메모리(1)의 파이프라인 동작을 정지시키는 웨이트신호이다.
도 5(a),(b)는 시퀀스프로그램메모리(1)와 데이터메모리(3)에 저장된 데이터관계를 나타내고 있다. 또한, 도 5(a)에서, 시퀀스프로그램메모리(1)의 어드레스 a 번지에서 a + 3 번지에 저장된 명령코드는 도 2의 명령(30), 명령(32)의 예이다.
명령코드는 연산데이터가 저장되어 있는 데이터메모리(3)의 어드레스지정정보, 비트연산의 경우에 연산에 사용되는 비트번호를 저장하는 비트지정정보, 명령의 종별, 실행하는 명령이 펄스연산인가 어떤가를 저장하는 펄스지정부, 명령취급데이터길이, 명령이 H/W 처리가 되는 명령인가 아닌가를 저장하는 H/W 지정부, 전회의 스캔에서 실행했는가 아닌가를 저장하는 실행프래그비트를 포함한 데이터로 구성되어 있다. 또한, 실행프래그비트는 디폴드(default)에서 0 이 저장되어 있다.
시퀀스프로그램메모리(1)의 어드레스지정부에 저장된 어드레스는 그의 명령에서 취급하는 데이터가 저장되어 있다. 또, 2중워드의 연산에서는 a + n 번지의 예에서 나타낸 것과 같이 시퀀스프로그램메모리(1)의 어드레스지정부에 저장된 어드레스(f 번지)와, 거기에 + 1 한 어드레스(f + 1 번지)에 데이터가 저장되어 있다.
다음, 예 1의 시퀀스프로그램에 의한 동작에 대하여 설명한다. 명령(30)에서 나타내는 LD 명령의 동작에 대하여 설명한다. 기간(T1)은 시퀀스프로그램메모리(1)의 어드레스 a 번지에 저장된 LD 명령의 명령코드가 B2R레지스터(4)에 래치된 후를 나타내는 것이며, 여기서 H/W(하드웨어) 명령인 것을 인식하고, 명령의 종류, 데이터메모리(3)에의 리드/라이트의 유무, 연산에 필요한 웨이트 수를 디코드신호로서 출력한다.
기간(T2)에는 B3RCK래치블록으로 B2R레지스터(4)의 내용을 B3R레지스터(5)에 저장하는 동시에, 기간(T1)에서 디코드한 내용을 DEC1레지스터(15)에 래치한 후 B3R레지스터(5)에 저장된 데이터메모리(3)의 어드레스에서 워드데이터를 입력레지스터(14)에 판독한다. 이때, 데이터메모리(3)에 대한 판독신호는 DEC1레지스터(15)에 래치된 내용에 의해 데이터메모리제어부(22)에서 생성된다.
기간(T3)에는 입력레지스터(14)에 래치한 워드데이터에서 비트지정레지스터 (13)(도 5에 나타나 있는 명령코드중의 비트지정정보를 래치한 레지스터)로 지정된비트를 추출하고, 도통/비도통정보(이하, HWBO로 약칭하는 경우도 있슴)의 데이터로서 래치한다.
다음, LD 명령에 의해 HWBO에 1 이 저장된 경우에 명령(32, 33)의 동작을 도 3을 참조하여 설명한다. STMLD 명령의 동작에 대하여 a + 1 번지에 저장된 STMLD 명령을 사용하여 설명한다. STMLD 명령은 B2R레지스터(4)에 저장되면(도 3의 기간 T2), 명령디코드부(6)에 의해 H/W 명령인 것을 인식하고, 명령의 종별, 데이터메모리(3)에의 리드/라이트의 유무, 연산에 필요한 워드수를 디코드신호로서 출력한다.
다음, 기간(T3)에는 LD 명령과 동일하게 래치클록 B3RCK에서 B2R레지스터 (4)의 내용을 B3R레지스터(5)에 저장함과 동시에 기간(T2)에 디코드한 내용을 DEC1레지스터(15)에 래치한 후, B3R레지스터(5)에 저장된 데이터메모리(3)의 어드레스에서 연산데이터를 입력레지스터(14)에 판독한다.
기간(T4)에는 입력레지스터(14)의 내용을 스택포인터(18)가 나타내는 데이터저장용 레지스터(17)에 저장하고, 스택포인터제어부(21)에 의해 스택포인터(18)의 치를 인크리먼트한다. 또한, 이때, 연산부(9)와 도통/비도통정보저장부(7)는 동작하지 않는다.
a + 2 번지에 저장된 STMLD 명령도 동일한 동작을 하나, a + 1 번지에 저장된 STMLD 명령에 의해 스택포인터(18)가 인크리먼트되어 있으므로 다른 데이터저장용 레지스터(17)에 데이터가 저장된다.
다음, + 명령의 동작에 대하여 설명한다. + 명령이 B2R레지스터(4)에 저장되면(도 3의 기간 T4), 명령디코드부(6)에서 H/W 명령인 것을 인식하고, 명령의 종별, 데이터메모리(3)에의 리드/라이트의 유무, 연산에 필요한 웨이트 수를 디코드신호로서 출력한다. + 명령의 경우에는 가산데이터와 피가산데이터를 데이터메모리 (3)에서 판독하므로 반드시 STMLD 명령이 2회 필요하게 되며, + 명령이 B2R레지스터(4)에 저장되었을 때에는 HWB0(도통/비도통정보)가 반드시 확정되어 있다.
그 때문에, 명령디코드부(6)는 HWB0 = 1 의 경우에는 연산을 실행하기 위하여 2웨이트의 명령으로서 디코드하고, 이것에 대해 HWB0 = 0 의 경우에는 연산을 실행하지 않으므로 0 웨이트의 명령으로서 디코드한다.
기간(T5)에는 가산데이터와 피가산데이터가 데이터저장용 레지스터(17)에 아직 저장되지 않았으므로 연산을 실행하지 않고 파이프라인제어부(23)가 웨이트신호만 출력하여 파이프라인 동작을 정지시킨다.
기간(T6)에는 데이터메모리제어부(22)가 생성하는 판독신호에 의해 데이터저장용 레지스터(17)에 저장되어 있는 가산데이터와 피가산데이터를 연산부(9)내의 레지스터에 판독하여 연산부(9)내의 가산기에 의해 가산(연산실행)을 행한다.
기간(T7)에는 가산한 결과를 데이터메모리(3)에 기입한다. 이때 기록하는 어드레스는 B3R레지스터(5)에 저장된 데이터메모리어드레스에 기록을 하여 기록신호는 데이터메모리제어부(22)에 의해 생성한다. 또, 파이프라인제어부(23)가 웨이트신호를 해제하여 파이프라인 동작을 재개함과 동시에 연산의 최후에 초기화클록 DL2CRL에 의해 DEC2레지스터(16)의 내용을 지운다.
다음, 명령(32)에서 나타내는 INC 명령의 동작에 대하여 설명한다. INC 명령이 B2R레지스터(4)에 저장되면(도 3의 기간 T9), 명령디코드부(6)에 의해 H/W 명령인 것을 인식하고, 명령의 종별, 데이터메모리(3)에의 리드/라이트의 유무, 연산에 필요한 웨이트 수를 디코드신호로서 출력한다.
INC 명령의 경우는 + 명령과는 다르게 피가산데이터만을 데이터메모리(3)에서 판독하므로 STMLD 명령이 1 회만 있으며, INC 명령이 B2R레지스터(4)에 저장될 때에는 HWB0가 확정안되어 있다. 이 때문에 명령디코드부(6)에서는 HWB0의 치에 의하지 않고, 2웨이트의 명령으로서 디코드한다.
기간(T10)에는 피가산데이터가 데이터저장용 레지스터(17)에 저장되지 않았으므로 연산을 실행하지 않고, 파이프라인제어부(23)에서 웨이트신호를 출력하여 파이프라인 동작을 정지시킨다.
기간(T11)에는 데이터저장용 레지스터(17)에 저장된 피가산데이터를 데이터메모리제어부(22)의 판독신호에 의해 연산부(9)내의 레지스터에 판독하고, 연산부 (9)내의 가산기에 의해 인크리먼트한다. 또한, 기간(T10)에 확정한 HWBO의 데이터에 의해 HWBO = 1 의 경우에는 웨이트 수를 2웨이트 그대로 하며, HWBO = 0 의 경우에는 웨이트 수를 1 웨이트로 변경한다.
기간(T12)에는 가산한 결과를 데이터메모리(3)에 기입한다. 이때, 기록하는 어드레스는 B3R레지스터(5)에 저장된 데이터메모리어드레스에 기록을 하며, 기록신호는 데이터메모리제어부(22)에서 생성한다. 또, 파이프라인제어부(23)에 의해 웨이트신호를 해제하여 파이프라인 동작을 재개함과 동시에 연산의 최후에 초기화클록 DL2CRL에 의해 DEC2레지스터(16)의 내용을 지운다.
도 4를 참조하여 명령(33)의 + 명령이 비실행의 경우의 동작에 대하여 설명한다. + 명령에서는 상기와 같이 HWBO의 치가 DEC1레지스터(15)에 래치하기 이전에 확정되어 있으므로 기간(T5)에는 파이프라인제어부(23)에서 웨이트신호를 출력하지 않고, 파이프라인 동작을 정지시키지 않는다. 또, 기간(T6)에는 스택포인터제어부 (21), 데이터메모리제어부(22)의 동작에 의해 스택포인터(18)의 제어, 피가산데이터와 가산데이터의 연산부내 레지스터에의 전송, 데이터메모리(3)에의 연산결과의 기록의 어느 것도 실행하지 않으며, 기간(T6)의 최후에 스택포인터(18)의 초기화만을 행한다.
도 4를 참조하여 INC명령이 비실행의 경우의 동작에 대하여 설명한다.
INC 명령에서는 + 명령과는 다르며 HWBO의 치가 DEC1레지스터(15)에 래치하기 이전에 확정되지 않으므로 상기와 같이 기간(T7)에는 2웨이트의 명령으로서 디코드한다.
기간(T8)에는 파이프라인제어부(23)에서 웨이트신호를 출력하여 파이프라인 동작을 정지한다.
기간(T9)에는 HWBO = 0 에의해 웨이트신호를 비활동성으로 하여 파이프라인 동작을 개시하고, 스택포인터제어부(21), 데이터메모리제어부(22)의 동작에 의해 스택포인터(18)의 제어, 가산데이터의 연산부내 레지스터에의 전송, 데이터메모리 (3)의 연산결과의 기입의 어느것도 실행않으며 기간(T9)의 최후에 스택포인터(18)과 DEC2레지스터(16)의 초기화만을 행한다.
여기서, 스택포인터(18)의 동작에 대하여 도 3, 도 4를 사용하여 설명한다.
스택포인터(18)는 스택포인터제어부(21)에 의해 제어되여 연산회로(2)에서명령을 실행하는 경우에는 "0"으로 되어있어 STMLD명령을 실행하면 데이터저장용 레지스터(17)에 데이터를 저장한 후에 인크리먼트 한다.
예로서 도 3의 기간(T5)이 종료한 단계에서는 STMLD명령이 2회 실행되어 있으므로 스택포인터(18)의 치는 "2"로 되어 있다.
다음, + 명령이 계속되면 데이터저장용 레지스터(17)에서 연산부(9)내의 레지스터에 데이터를 전송하기전에 스택포인터(18)의 치를 디크리먼트하고 데이터를 전송한다.
이것을 2회 반복함으로서 스택포인터(18)의 치가 "1" 과 "0"인곳에 저장된 데이터가 연산부(9)에 전송되어 + 명령이 완료한 도 3의 기간(T7)이 종료한 단계에서 스텍포인터(18)의 치는 "0"으로 된다.
INC명령의 경우에는 스택포인터(18)의 디크리먼트와, 연산부(9)내에의 데이터의 전송이 1회로 된다.
비실행의 경우에는 + 명령 및 INC명령이 DEC2레지스터(16)에 저장된 최후에 초기화하여 스택포인터(18)의 치를 "0"으로 되돌아가게 한다.
다음, 도 2의 명령(32)에서 나타내는 데이터가 데이터메모리(3)의 DO의 내용이 아니고, 정수의 경우에 대하여 설명한다.
이 경우에는 가산하는 정수는 시퀀스프로그램메모리(1)내의 명령코드중의 어레스지정부(도 5참조)에 저장되어 있다.
이 명령이 B2R레지스터(4)에 저장되면(도3의 기간T3), 시퀀스프로그램메모리 (1)내의 정수데이터를 래치하는 명령인 것을 인식하며, 또한 기간(T4)에는 이 정수의 데이터가 정수래치레지스터(12)에 저장되어 기간(T5)에서 스택포인터(18)이 나타내는 데이터저장용 레지스터(17)에 저장되고, 다음에 계속하는 + 명령에서 동일하게 가산이 행하여진다.
앞에서 설명한 바와 같이 접점의 도통/비도통정보(HWBO)에 의해 명령디코드부(6)에서 실행/비실행을 판단하고, 비실행시에는 데이터메모리(3)와, 연산부(9)간의 연산데이터의 리드/라이트 및 연산을 실행하고, 비실행시에는 데이터메모리(3)와, 연산부(33)간의 연산데이터의 리드/라이트 및 연산을 실행하지 않고 처리사이클을 짧게 하였으므로 비실행시의 처리시간을 고속화하는 효과가 얻어진다.
도 6(a),(b)는 시퀀스프로그램의 사다리회로와 명령코드의 내용(예 2)을 나타내고있다.
도 6(a)에서 40,41은 데이터메모리(3)에 저장된 XO장치, X1장치의 상태를 판독하고, 도통/비도통정보저장부(7)에 저장하는 명령(심볼)을, 42는 도통/비도통정보저장부(7)의 상태가 0(OFF)에서 1(ON)으로 변화한 스캔에서 판독데이터 DO와 O1의 가산을 행하고, 연산결과를 D2에 저장하는 명령(심볼)을, 43은 도통/비도통정보 저장부(7)의 상태가 0(OFF)에서 1(ON)으로 변화한 스캔에서 워드데이터D3에 1을 가산하여 연산결과를 D3에 저장하는 명령(심볼)을 각각 나타내고 있다.
도 6(b)에 나타낸 것과 같이 시퀀스프로그램메모리(1)에 저장되는 명령코드는 도 2의 a+3번지의 명령을 「+P D2」에 a+6번지의 명령을 「+INCP D3」에 각각 바꿔놓은 조합으로 된다.
+ 명령과 + P명령의 구별은 도 5에 나타나 있는 명령코드의 펄스지정의 비트로서 구성된다.
도 7은 도 6에 나타나 있는 예 2의 사다리 회로를 도 1에 나타나 있는 연산회로(2)에서 동작 시켰을때에 명령(4) 및 명령(43)을 실행한 경우의 동작을 나타내는 타이밍차트이며, 도 8은 명령(42) 및 명령(43)을 실행않되는 경우의 동작을 나타내는 타이밍차트이다.
도 7, 도8에서 PMWRL은 도 5에 나타낸 시퀸스프로그램메모리(1)의 실행프래그비트에 대한 기록(라이트)신호, PM은 도 5에 나타낸 실행프래그비트의 데이터, SGDO는 실행프래그비트에 기록하는 데이터(다음의 스캔의 PM)이다.
또한,도 7, 도 8에서 도 3, 도 4의 타이밍차트와 동일한 것은 도 3, 도 4에 붙인 부호와 동일한 부호를 붙혀져 있다.
또, 도 9, 도 10은 도 6에 나타나 있는 예 2의 사다리 회로를 도 1에 나타나 있는 연산회로(2)에서 동작 시켰을때의 시퀀스프로그램메모리(1)와 파이프라인레지스터의 동작을 나타내는 타이밍차트이며, 그 중 도 9는 명령(42) 및 명령(43)을 실행않되는 경우를 도 10은 명령(42) 및 명령(43)을 실행한 경우의 동작을 나타내고 있다.
다음 예 2의 시퀀스프로그램에 의한 동작에 대하여 설명한다.
여기서, 도 2의 명령(32)과 도 6의 명령(42)와의 동작의 차이에 대하여 설명한다.
도 2의 명령(32)은 명령(30)에 의해 접점이 도통하면 접점이 도통하여 있는동안은 매 스캔 DO + D1 →D2의 연산을 실행한다.
그 때문에 D0와 D1의 치가 스캔마다 변화하면 D2의 치도 스캔마다 변화한다.이에 대하여 도 6의 명령(42)는 명령(40)에 의해 접점이 도통하면 접점이 도통한 스캔만 D0 + D1 →D2의 연산을 실행한다.
그 때문에 DO와 D1의 치가 스캔마다 변화해도 접점이 도통 → 비도통 →도통으로 변화하지 않는한 D2의 치는 변화하지 않는다.
명령(41)에는 나타난 + P명령의 실행시의 동작에 대하여 도 7을 사용하여 설명한다.
+ P명령이 B2R레지스터(4)에 저장되면(도 7의 기간T4), 명령디코드부(6)에서 H/W명령인 것을 인식하고, 명령의 종별, 데이터메모리(3)에의 리드/라이트 유무, 연산에 필요한 웨이트수를 디코드 신호로서 출력한다.
이때에 도 5에 나타나 있는 명령코드중의 펄스지정의 비트에 의해 펄스연산인 것을 판단하고, 명령디코드부(6)에서 HWBO와 PM의 반전의 논리적이 1의 경우에는 연산을 실행하므로 2웨이트 HWBO와 PM의 반전의 논리적이 D의 경우에는 연산을 실행하지 않으므로 O웨이트의 명령으로서 디코드 한다.
다음, HWBO와 PM의 반전의 논리적이 1인 경우를 설명한다.
기간(T5)에는 가산데이터와 피가산데이터가 데이터저장용 레지스터(17)에 저장되어 있지 않으므로 연산을 실행하지 않고, 파이프라인제어부(23)에서 웨이트신호만을 출력하여 파이프라인 동작을 정지 시킨다.
기간(T6)에는 데이터메모리제어부(22)의 판독신호에 의해 데이터저장용 레지스터(17)에 저장되어 있는 가산데이터와 피가산데이터를 연산부(9)내의 레지스터에 판독하고, 연산부(9)내의 가산기에서 가산을 하여 HWBO의 치(여기서는 HWBO = 1)을 시퀀스프로그램메모리(1)의 실행플래그비트의 데이터로서 기록한다.
또한, 파이프라인 동작에 대하여는 후에 설명한다.
기간(T7)에는 가산한 결과를 데이터메모리(3)에 기록한다. 이때 데이터메모리(3)에 기록하는 어드레스는 B3R레지스터(5)에 저장된 데이터메모리어드레스에 기록을 하여 기록신호는 데이터메모리제어부(22)에서 생성한다.
또, 파이프라인제어부(23)에 의해 웨이트신호를 해제하여 파이프라인 동작을 재개함과 동시에 연산의 최후에 초기화블록 DL2CRL에 의해 DEC2의 내용을 지운다.
여기서, 다음의 스캔에의 + P명령의 동작에 대하여 도 8을 사용하여 설명한다.
이 스캔에서는 도 7의 기간(T6)에 PM에 1이 기록되어 있으므로 HWBO의 치에 의하지 않고 HWBO와 PM의 반전의 논리적으로 O으로 되며 + P명령이 비실행의 명령으로서 디코드 된다.
기간(T5)에서는 연산은 실행하지 않으며 파이프라인제어부(23)에 의해 웨이트신호만을 출력하여 파이프라인 동작을 정지 시킨다.
또한, 기간(T6)에는 웨이트신호를 비활성으로 하여 파이프라인 동작을 재개함과 동시에 스택포인트제어부(21)와, 데이터메모리(22)의 동작에 의해 스택포인터 (18)의 제어, 피가산데이터와 가산데이터의 연산부내 레지스터에의 전송, 데이터메모리(3)에의 연산결과의 기입의 어느것도 실행하지 않고, 기간(T6)의 최후에 스택포인터(18)와, DEC2레지스터(16)의 초기화를 행함과 동시에 HWBO의 치를 시퀀스프롤그램메모리(1)의 실행플래그비트의 데이터로서 기입한다.
여기서 HWBO = 1(접점이 도통 그대로)의 경우에는 다음 스캔의 PM이 1로 됨으로 도 8에 나타난 기간(T4)의 상태와 동일한 동작으로 된다. 또, HWBO = 01(접점이 비도통)의 경우에는 PM = 0(초기의 상태)로 된다. 또한, 다음의 스캔에서 HWBO = 1 로되면 도 7에 나타난 기간(T4)과 동일한 동작을 하며 HWBO = 0으로 되면 도 8에 나타난 기간(T4)과 동일하게 된다.
INCP명령의 실행시의 동작에 관하여 도 7을 사용하여 설명한다.
INCP명령이 B2R레지스터(4)에 저장되면(도 7의 기간T9)명령디코드부(6)에서 H/W명령인 것을 인식하고, 명령의 종별, 데이터메모리(3)에의 리드/라이트의 유무, 연산에 필요한 웨이트수를 디코드신호로서 출력한다.
이때 상기의 INC명령과 동일하게 INCP명령이 B2R레지스터(4)에 저장되었을때에는 HWBO가 확정않되어 있으므로 명령코드부(4)에서는 HWBO와 PM의 치에 관계없이 2웨이트의 명령으로서 디코드 한다.
다음, 기간(T10)에는 연산을 실행하지 않고 파이프라인제어부(23)에서 웨이트신호를 출력하여 파이프라인 동작을 정지시킴과 동시에 HWBO와 PM의 반전의 논리적을 행한다.
기간(T11)에서는 파이프라인제어부(23)의 판독신호에 의해 데이터저장용 레지스터(17)에 저장되어 있는 피가산데이터를 연산부(9)내의 레지스터에 판독하고, 연산부(9)내의 가산기에서 인크리먼트를 행하고, HWBO의 치(여기서는 HWBO = 1)을 시퀀스프로그램메모리(1)의 실행플래그비트의 데이터로서 기록한다.
최후에 기간(T12)에는 가산한 결과를 데이터메모리(3)에 기록한다. 이때 데이터메모리(3)에 기록하는 어드레스는 B3R레지스터(5)에 저장된 데이터메모리어드레스에 기록을하며 기록신호는 데이터메모리제어부(22)에서 생성한다.
또, 파이프라인제어부(23)에 의해 웨이트신호를 해제하여 파이프라인 동작을 재개함과 동시에 연산의 최후에 초기화클록 DL2CRL에 의해 DEC2레지스터(16)의 내용을 지운다.
다음의 스캔에서의 INCP명령의 동작에 관하여 도 8을 사용하여 설명한다.
이 스캔에서는 도 7의 기간(T11)에서 PM에 1이 기입되어 있으므로 기간(T9)에서는 HWBO와 PM의 반전의 논리적은 0으로 되며, 기간(T10)에서는 웨이트신호를 비활성으로하여 파이프라인 동작을 재개함과 동시에 스택포인터제어부(21), 데이터메모리제어부(22)의 동작에 의해 스택포인터(18)의 제어, 피가산데이터의 연산부내레지스터에의 전송, 데이터메모리(3)에의 연산결과의 기록의 어느것도 실행하지 않으며 기간(T10)의 최후에 스택포인터(18)과 DEC2레지스터(16)의 초기화를 행함과 동시에 HWBO의 치를 시퀀스프로그램메모리(1)의 실행플래그비트의 데이터로서 기록한다.
여기서, HWBO = 1(접점이 도통한 그대로)의 경우에는 또한 다음의 스캔의 PM이 1로 됨으로 도 8에 나타난 기간(T8)의 상태와 동일한 동작으로 된다.
또, HWBO = 0 (접점이 비도통)의 경우에는 PM = 0(초기의 상태)로 된다. 또한, 다음의 스캔에서 HWBO = 1로 되면 도 7에 나타난 기간(T9)과 동일한 동작을 하며 HWBO = 0으로 되면, 도 8에 나타난 기간(T9)과 동일한 동작으로 된다.
상기의 + P명령과 INCP명령을 시퀀스프로그램메모리(1)에 저장하고, 동작시킨 경우 시퀀스프로그램메모리(1)에서 명령코드의 판독과 실행플래그비트에 데이터를 기록하는 경우의 파이프라인레지스터의 동작에 대하여 도 9 및 도 10을 사용하여 설명한다.
도 9 및 도 10은 도 6에 나타난 시퀀스프로그램의 파이프라인레지스터의 동작을 나타낸 도이며 2중 도 9는 + P명령이 비실행의 경우의 파이프라인레지스터의동작을 나타내는 도이며 도 10은 + P명령이 실행의 경우의 파이프라인레지스터의 동작을 나타내는 도이다.
도 9 및 도 10에서 B1R은 시퀀스프로그램메모리(1)에 저장된 명령코드를 저장하고, B2R레지스터(4)에 전송하는 입력레지스터, PMWRLA신호는 실행플래그비트에 데이터를 기록하는 경우에 저활동으로 하여 시퀀스프로그램메모리(1)의 어드레스를 -3으로하기 위한 제어신호, P2EN은 시퀀스프로그램메모리(1)에서 판독하는 데이터를 세이브하기 위한 제어신호, BOR은 P2EN신호에 의해 명령코드를 세이브하기 위한 레지스터이다.
시퀀스프로그램메모리(1)에 저장된 명령코드는 도 9 및 도 10에 나타난 것과 같이 시퀀스프로그램메모리(1)의 어드레스를 a번지 →a+1번지 →a+2번지로 순차 인크리먼트 하면서 파이프라인레지스터에 전송하여 간다.
이때, 실행플래그비트에 데이터를 기록하는 명령이 B2R레지스터(4)에 저장되면(도 9 및 도 10의 기간 T10) 도 5에 나타난 명령코드중의 펄스지정이 비트에 의해 펄스연산인 것을 판단하고 도 9 및 도 10의 기간(T7)에 PMWRLA신호를 출력한다.
PMWRLA신호가 출력되면 다음의 사이클(도 9 및 도 10의 기간T8)에서 시퀀스프로그램메모리(1)의 어드레스를 -3으로하여 + P명령이 저장되어 있는 어드레스에 실행플래그비트의 내용을 기록한다.
이때, + P명령이 B3R레지스터(5)에 저장된 사이클에서는 a+6번지의 명령을 인출하는 사이클과, a+3번지의 실행플래그비트에 데이터를 기록하는 사이클이 있으므로 도 8의 기간(T4)에서는 + P명령을 1웨이트의 명령으로서 디코드하고 있다.
다음 P2EN신호와 BOR레지스터의 동작에 대하여 설명한다.
P2EN신호는 실행플래그비트에 데이터를 기록하는 명령중, 실행사이클이 2사이클로 완료하는 경우, 해당하는 명령코드가 B3R레지스터(5)에 저장된 사이클에서 활동성으로 된다.
예로서 도 9의 기간(T7)은 여기에 해당된다. 이 P2EN 신호가 활동성으로 되면 기간(T7)의 명령코드를 기간(T8)에 일단 BOR레지스터에 세이브하며, 세이브되어있는 사이클에서 시퀀스프로그램메모리(1)의 어드레스를 - 3으로 하고, + P명령에 저장되어있는 어드레스에 실행플래그비트의 내용을 기록한다.
또한, 기간(T9)에는 BOR레지스터에 세이브한 명령코드를 BIR레지스터에 전송하여 파이프라인레지스터의 동작을 행한다.
다음 3사이클 이상의 경우의 동작에 대하여 도10을 사용하여 설명한다. 3사이클 이상의 경우에는 도 10의 기간(T9)에 다시 a+6번지의 어드레스를 인출할 수 있으므로 BOR레지스터에 세이브시키는 처리는 실시하지 않고 시퀀스프로그램메모리 (1)에서 BIR레지스터에 전송한다.
이상과 같이 접점의 도통/비도통정보(HWBO)와, 실행플래그비트(PM)에 의해 명령코드부와, 제어부에서 실행/비실행을 판단하고, 실행시에는 연산을 실행하며, 비실행시에는 연산을 실행하지 않고, 처리사이클을 짧게 하였으므로 비실행시의 처리시간을 고속화하는 효과가 얻어진다.
또, 도통/비도통정보(HWBO)를 다음의 스캔의 실행플래그비트에 사용되도록 시퀀스프로그램메모리내의 해당 비트에 기록함으로 접점이 ON된 스캔만을 실행하는 명령을 H/W연산회로에서 고속처리하는 것이 가능하게되어 이것에 의하여서도 처리시간을 고속화하는 효과가 얻어진다.
도 11(a),(b)는 시퀀스프로그램의 사다리 회로가 명령코드의 내용(예 3)을 나타내고 있다. 도 11(a)에서 50,51은 데이터메모리(3)에 저장된 XO장치, X1장치의 상태를 판독하고, 도통/비도통정보저장부(7)에 저장하는 명령(심볼)을, 52는 도통/비도통정보저장부(7)의 상태가 1(ON)시에 DO와 D1에 저장된 1중 워드데이터와 D2와 D3에 저장된 2중워드데이터의 가산을 행하고, 연산결과를 D4와 D5에 저장하는 명령(심볼)을 53은 D6과 D7에 저장된 2중워드데이터에 1을 가산하고, 그 결과를 D6과 D7에 저장하는 명령(심볼)을 각각 나타내고 있다. 명령(52와 53)은 모두 연산하는 데이터가 2중워드의 데이터로 되어 있다.
시퀀스프로그램메모리(1)에 저장되는 명령코드는 제2의 a+1번지, a+2번지, a+5번지의 명령을 DSTMLD 명령으로 치환하여 a+3번지의 명령을 D + 명령으로 치환하며, A+6번지의 명령을 DINC명령으로 치환한 조합으로 된다. 또, 도 2에서 나타낸 명령과의 구별은 도 5에 나타낸 명령코드중의 데이터장의 비트로서 구별된다.
도 12는 도 11에 나타나 있는 예 3의 사다리 회로를 도 1에 나타나 있는 연산회로(2)에서 동작 시켰을때에 명령(52,53)을 실행한 경우의 동작을 나타낸 타이밍 차트이며, 도 13은 명령(52,53)을 실행하지 않는 경우의 동작을 나타내는 타이밍 차트이다. 또한, 도 12, 도 13은 데이터메모리의 어드레스에서 B3R로 기재되어 있는 것은 B3R레지스터(5)의 치가 데이터메모리어드레스로되어 AOR로 기재되어 있는 것은 어드레스레지스터(19)의 치가 데이터메모리어드레스로 되는것을 나타낸다.
다음, 예 3의 시퀀스프로그램메모리에 의한 동작에 대하여 설명한다 DSTMLD 명령이 실행의 경우의 동작에 대하여 도 12를 사용하여 설명한다.
DSTMLD명령의 명령코드가 B2R레지스터(5)에 저장되면(도 12의 기간T2), 명령디코드부(6)에서 H/W명령인 것을 인식하여 명령의 종별, 데이터메모리(3)에의 리드 /라이트의 유무, 연산에 필요한 웨이트수를 디코드신호로서 출력한다.
다음, 기간(T3)에는 클로 B3RCK 에서 B2R레지스터(4)의 내용을 B3R레지스터 (5)에 저장함과 동시에 기간(T1)에서 디코드한 내용을 DEC1레지스터(15)에 래치한후 B3R레지스터(5)에 저장된 데이터메모리어드레스에서 데이터를 입력레지스터(14)에 판독한다. 또, 이때 B3R레지스터(5)에 저장된 어드레스를 어드레스레지스터(19)에 래치하여 인크리먼트를 행한다.
기간(T4)에는 직전의 LD명령의 연산에 의한 HWBO의 치에서 실행(HWBO = 1)/비실행(HWBO = 0)를 명령디코드부(6)에서 판단하고, HWBP = 1의 경우에는 스택포인터제어부(21)과, 데이터메모리제어부(22)의 동작에 의해 입력레지스터(14)의 내용을 스택포인터(18)가 나타내는 데이터저장용 레지스터(17)에 저장하며, 스택포인터(18)의 치를 인크리먼트함과 동시에 데이터메모리(3)에 대한 어드레스를 B3R레지스터(5)에서 어드레스레지스터(19)에 절환하여 데이터메모리(3)의 데이터를 입력레지스터(140에 판독한다. 이것에 의해 B3R레지스터(5)에 저장된 어드레스 + 1번지에는 데이터를 판독하게 된다.
기간(T5)에는 기간(T4)에서 판독한 입력레지스터(14)의 내용은 스택포인터 (18)에 나타내는 데이터저장용 레지스터(17)에 저장하고, 스택포인터(18)의 치를 인크리먼트 한다. 이때 연산부(9)와 도통/비도통정보저장부(7)는 동작하지 않는다.
다음 DSTMLD명령이 비실행의 경우에 대하여 도 13을 사용하여 설명한다.
도 13에서 기간(T2)와 기간(T3)은 도 12에 나타나 있는 동작과 완전히 동일한 동작을 행하나 기간(T4)에서 HWBO = O으로 되면 파이프라인 동작을 정지 시키고 있는 V80WAIT신호와 데이터메모리(3)에 대한 판독신호를 비활성으로 하여 파이프라인 동작을 재개하고 데이터메모리(3)의 판독을 중단한다.
또, 기간(T3)에 입력레지스터(14)에 판독된 데이터를 데이터저장용 레지스터 (17)에 전송하지 않고 처리를 종료한다.
다음, D+명령의 동작에 대하여 도 12와 도 13을 사용하여 설명한다.
D+명령에서는 데이터메모리(3)에서 데이터로 판독하는 명령이 2회 있으므로 D+명령이 B2R레지스터(4)에 저장된 단계에서 HWBO치는 확정되어 있다.
그 때문에 명령디코드부(6)에서는 HWBO = 1의 경우는 연산을하기 위하여 4웨이트, HWBO = 0의 경우는 연산을 실행하지 않으므로 0웨이트의 명령으로서 디코드되어 B3R레지스터(5)에 전송된다.
HWBO = 1의 경우에는 기간(T9)에서는 연산을 실행하지 않으며 파이프라인제어부(23)에 의해 웨이트신호만을 출력하여 파이프라인 동작을 정지 시킨다.
또, B3R레지스터(5)의 내용을 어드레스레지스터(19)에 전송하여 인크리먼트를 한다.
기간(T10)와 기간(T11)에서는 스택포인터(18)을 디크리먼트 하면서 데이터저장용 레지스터(17)에 저장되어 있는 가산데이터와, 피가산데이터를 연산부(9)내의레지스터에 판독하고, 또한 연산부(9)내의 가산기에서 가산을 행한다.
기간(T12)에서는 가산한 결과를 데이터메모리(3)에 기록한다. 이때 기록하는 어드레스는 B3R레지스터(5)에 저장된 데이터메모리어드레스에 하위 16비트의 데이터를 기록한다. 또 기록신호는 데이터메모리제어부(22)에서 생성한다.
또한, 웨이트신호를 해제하여 파이프라인 동작을 재개함과 동시에 T13의 기간(T)에서는 DSTMLD명령과 동일하게 어드레스레지스터(19)의 치를 데이터메모리어드레스로하여 상위 16비트의 데이터를 기록한다.
또, 웨이트 신호를 해제하여 파이프라인 동작을 재개함과 동시에 연산의 최후에 초기화 클록 DL2CRL에 의해 DEC2레지스터(16)의 내용을 지운다.
이에 대하여 HWBO = 0의 경우에는 B3R레지스터(16)에 전송된 단계에서 0웨이트의 명령으로서 디코드되어 있으므로 V80WAIT에 의한 파이프라인 동작의 정지와, 스택포인터(18)의 제어와, 가산기에 의한 가산과, 가산결과의 데이터메모리(3)에의기록을 일체로 실행하지 않고, 기간(T7)의 최후에 스택포인터(18)의 초기화만을 행한다.
다음, DINC명령의 동작에 대하여 도 12, 도13을 사용하여 설명한다.
D+명령에서는 데이터메모리(3)에서 데이터를 판독하는 명령이 1회밖에 없으나, 도 2에 나타난 INC명령과는 달라서 직전의 DSTMLD명령이 최저라도 1사이클 파이프라인 동작을 정지 시킨다.
이 때문에 DINC명령의 명령코드가 B2R레지스터(4)에 저장되어 B2R레지스터 (5)에 전송되기 이전에 HWBO의 치는 확정되어 있다.
이 때문에 명령디코드부(6)에서는 HWBO = 1의 경우에는 연산을 실행하므로 3웨이트, HWBO = 0의 경우에는 연산을 실행하지 않으므로 0웨이트의 명령으로서 디코드되어 B3R레지스터에 전송된다.
HWBO = 1의 경우에는 기간(T9)에서는 연산을 실행하지 않고 파이프라인제어부(23)에 의해 웨이트신호만 출력하여 파이프라인 동작을 정지 시킨다.
또, B3R레지스터(5)의 내용을 어드레스레지스터(19)에 전송하여 인크리먼트를 행한다.
기간(T9)에서는 스택포인터(18)를 디크리먼트 하면서 데이터저장용 레지스터 (17)에 저장되어있는 피가산데이터는 연산부(9)내의 레지스터에 판독하고, 또한 연산부(9)내의 가산기에서 가산을 행한다.
이때, DINC명령은 데이터저장용 레지스터(17)에서 연산부(9)내의 레지스터에 전송하는 데이터가 피가산데이터만 함으로 1사이클에서 전송이 완료한다.
기간(T20)에는 가산한 결과를 데이터메모리(3)에 기록한다. 이때 기록하는 어드레스 B3R레지스터(5)에 저장된 데이터메모리어드레스에 하위 16비트의 데이터를 기록하고, 데이터메모리제어부(22)에서 생성한다.
또한, 웨이트신호를 해제하여 파이프라인 동작을 재개함과 동시에 기간(T13)에는 DSTMLD명령과 동일하게 어드레스레지스터(19)의 치를 데이터메모리어드레스로 하여 상위 16비트의 데이터를 기록한다.
또, 웨이트신호를 해제하여 파이프라인 동작을 재개함과 동시에 연산의 최후에 초기화 클록 DL2CRL에 의해 DEC2의 내용을 지운다. 또한 DINC명령의 비실행의 경우의 동작은 D+명령의 동작과 완전히 동일하므로 그의 설명은 생략한다.
다음, D + P명령 및 DINCP명령과 같이 2중위드이며, 또 도통/비도통정보저장부(7)의 상태가 O(OFF)에서 1(ON)으로 변화한 스캔만 실행하는 명령에 대하여 설명한다.
D + P명령 및 DINCP명령은 상기의 D+명령 및 DINC명령과 동일하게 B2R레지스터(4)에 명령코드가 저장되어 있는 단계에서 HWBO가 확정됨으로 HEBO와 PM의 반전의 논리적에 의해 B2R레지스터(4)에서 DEC1레지스터(15)에 전송하는 경우에 실행조건이 성립하고 있는 경유에는 각각 4웨이트와, 3웨이트의 명령으로서 전송되어 실행조건이 성립하지 않은 경우에는 도 8에 나타내는 + P명령과 동일하게 1웨이트의 명령으로서 디코드 된다.
이때, 실행조건이 성립되어 있으면 도 10의 + P명령과 동일하게 DEC2레지스터(16)에 명령코드가 저장된 단계에서 시퀀스프로그램메모리(1)의 어드레스를 -3하여 실행플래그비트를 기록하고, 다음의 사이클 이후에서 명령을 인출한다.
이에 대하여 실행조건이 성립되지 않으면 도 9의 + P명령과 동일하게 DEC1레지스터(15)에 명령코드가 저장된 단계에서 BOR레지스터에 세이브 한다.
또한, DEC2레지스터(16)에 명령코드가 저장된 단계에서 시퀀스프로그램메모리(1)의 어드레스를 -3하여 실행플래그비트를 기록하고, 다음의 사이클에서는 DOR레지스터에 세이브한 명령코드를 BIR레지스터에 전송한다.
앞에서 설명한 것과 같이 2중위드의 명령을 실행하는 경우에는 데이터메모리 (3)에 대한 어드레스를 인크리먼트하여 어드레스를 생성하고, 데이터메모리(3)에 2중웨이터를 리드/라이트함으로 2중워드의 명령을 H/W연산회로에서 고속처리할 수가 있어 2중워드의 명령의 처리시간을 고속화하는 효과가 얻어진다.
도 14(a),(b)는 시퀀스프로그램의 사다리 회로와 명령코드의 내용(예 4)을 나타내고 있다. 도 11(a)에서 60은 데이터메모리(3)에 저장된 XO장치의 상태를 판독하고,도통/비도통정보저장부(7)에 저장하는 명령(심볼)을, 61은 데이터메모리(3)의 DO와 D1에 저장된 2중 워드데이터와, D2와 D3에 저장된 2중워드데이터의 비교를 하며 그의 비교결과와, HWBO와의 논리적으로 도통/비도통정보저장부(7)에 저장하는 명령(심볼)을, 62는 MOV명령을 각각 나타내고 있다.
시퀀스프로그램메모리(1)에 저장되는 명령(51)의 명령코드는 a+1번지와, a+2번지의 DSTMLD명령과, a+3번지의 ANDO = 명령을 조합시킨 구성으로 된다.
도 15는 도 14에 나타난 사다리 회로를 도 1에 나타내고 있는 연산회로(2)에서 동작 시켰을때에 명령(16)을 실행한 경우의 동작을 나타낸 타이밍차트이며, 도 16은 명령(16)을 실행하지 않는 경우의 동작을 나타낸 타이밍차트이다.
또한, 도 15, 도 16의 데이터메모리(3)의 어드레스에서 B3R로 기재되어 있는B3R레지스터(5)의 치가 데이터메모리어드레스로 되며, ADR로 기재되어 있는 것은 어드레스레지스터(19)의 치가 데이터어드레스로 되는 것을 나타내고 있다.
도 17은 도 14에 나타난 ANDD = 명령을 처리하는 연산부(9)내의 연산회로 (24)와, 도통/비도통정보저장부(7)의 회로도이다. 연산회로(24)는 비교기(25)와 AND회로(26,27)과 OR회로(28)를 구비하고 있다.
이 회로도에서 COMPBO신호는 비교기(25)에서 비교결과가 일치하고 있으면 1을 출력하고, 일치하지 않으면 0을 출력하는 신호, ANDD2와 2WAIT2와 NOWAIT2는 DEC2레지스터(5)에 레치된 디코드신호이며, 해당하는 명령이면 1을 출력하는 신호이다.
AND회로(26)은 COMPBO신호와 ANDD2신호와 2WAIT2신호의 논리적을 취하고, 또 한개의 AND회로(27)는 ANDD2신호와 NOWAIT2 신호와, HWBO신호의 논리적으로 취하고, OR회로(28)은 AND게이트(26,27)의 출력신호의 논리화를 취하며 도통/비도통정보저장부(7)에 출력한다.
또한 도통/비도통정보저장부(7)에는 다른 명령이라도 데이터가 기록되나 도 17에서는 그의 회로를 생략하고 있다.
다음, 예4의 시퀀스프로그램에 의한 동작에 대하여 설명한다. ANDD = 명령을 실행하는 경우의 동작에 대하여 도 15를 사용하여 설명한다.
ANDD = 명령이 B2R레지스터(4)에 저장된 단계(도 15의 기간 T6)에서는 HWBO의 치는 확정되어 있으므로 명령디코드부(6)에서는 HWBO = 1의 경우에는 연산을 실행하므로 2웨이트, HWBO = 0의 경우에는 연산을 실행하지 않으므로 0웨이트의 명령으로서 디코드되어 B3R레지스터에 전송된다.
HWBO = 1의 경우에는 기간(T9)에서는 연산을 실행하지 않고 파이프라인제어부(23)에 의해 웨이트신호만 출력하여 파이프라인 동작을 정지 시킨다.
기간(T10)와 기간(T11)에서는 스택포인터(18)를 디크리먼트 하면서 데이터저장용 레지스터(17)에 저장되어 있는 비교데이터를 연산부(9)내의 레지스터에 판독하고, 연산부(9)내의 비교기에서 비교를 한후에 COMPBO신호(비교결과가 일치하지 않으면 1을 출력하고 일치하지 않으면 0을 출력하는 신호)와 HWBO와의 논리적을 실시하여 HWBO에 기록한다.
다음 ANDD = 명령이 비실행의 경우의 동작에 대하여 도 16을 사용하여 설명한다. ANDD = 명령이 B2R레지스터(4)에 저장되면 (도16의 기간T5), 상기와 같이 0웨이트의 명령으로서 디코드 되어서 B3R레지스터(5)에 전송된다.
다음, 기간(T7)에는 처리를 행하지않고 OEC2레지스터(5)에 명령코드를 전송한다.
또한, 기간(T8)에는 HWBO = 0 가 확정되어 있으므로 COMPBO신호와 HWBO의 논리적을 저장하지 않고, 직전의 HWBO의 치를 그대로 HWBO에 기록한다.
또, 최후에 스택포인터(18)의 초기화를 실시하여 처리를 완료한다. 여기서는 DO와 D1에 저장된 2중워드데이터와, D2와 D3에 저장된 2중워드데이터가 일치하는 경우에 COMPBO신호 = 1로 하였으나 대소의 비교 및 불일치를 비교조건으로 하여도 동일하다.
다음, 도 17에 나타난 회로도에 대하여 설명한다. 도 17에서 2WAIT2신호와,NOWAIT2신호는 DEC2레지스터(16)에 래치된 디코드신호이며, B2R레지스터(5)에 저장된 단계에서 HWBO = 1의 경우에는 2WAIT2신호가 1로되며, HWBO = 0의 경우에는 NOWAIT2 신호가 1로 된다.
즉, 실행조건이 성립한 경우에는 비교기(25)의 데이터를 HWBO에 저장하고, 실행조건이 성립하지않는 경우에는 HWBO의 치를 그대로 기록한다.
또, 도 14(c)에 나타난 사다리 회로에서 63으로 나타낸 ORD = 명령은, ANDD = 명령과 다르며, 그의 비교결과와 HWBO의 논리화를 도통/비도통정보저장부(7)에 저장하는 명령이다.
이 경우 HWBO = 0의 경우에는 연산을 실행하며 HWBO = 1의 경우에는 연산을 실행하지 않으므로써 상기의 ANDD = 명령과 마찬가지로 처리시간을 단축할 수 있다.
앞에서 설명한 것과 같이 도통/비도통정보저장부(7)에 연산결과를 저장하는 명령에서 명령의 실행조건에 의해 비교연산을 실시 하기전에 실행/비실행의 판단을 하고, 명령이 비실행의 경우는 비교연산을 실시하지 않고, 그대로 도통/비도통정보저장부(7)의 데이터를 기록함으로서 처리를 단축하도록 하였으므로 비실행의 처리를 단축할 수가 있다.
도 18(a),(b)는 시퀀스프로그램의 사다리 회로와 명령코드의 내용(예 5)을 나타내고 있다. 도 18(a)에서 70은 비트장치(XO)의 치가 0 → 1로 변화한 스캔에서 접점이 도통하는 명령(심볼)을, 71은 전송명령(심볼)을, 72는 LD명령(심볼)을, 73은 X2와 명령(72)의 LD명령의 연산결과의 논리적 1의 경우에 접점이 도통하는명령(심볼)을, 74는 명령(73)까지의 접점의 상태가 0 →1로 변화한 스캔에서 접점이 도통하는 명령(심볼)을, 75는 전송명령(심볼)을 각각 나타내고있다.
도 19는 1스캔째의 명령(70,71)의 동작을 나타내는 타이밍차트이며, 도 20은 2스캔째 이후의 상기 명령의 동작을 나타내는 타이밍차트 이다.
다음, 도 18의 LDP명령(70)의 동작에 대하여 도 19와 도 20을 사용하여 설명한다. 도 19에서 LDP명령의 명령코드가 B2R레지스터(4)에 저장되면 1웨이트의 명령으로서 디코드되며 B3R레지스터(5)에 전송된다.
기간(T2)에서는 데이터메모리(3)에 판독을 행하고 비트장치(XO)의 상태를 입력레지스터(14)에 판독함과 동시에 V80WAIT신호에 의해 파이프라인레지스터의 동작을 정지 시킨다.
기간(T3)에서는 비트장치(XO)의 상태와, PM의 반전의 도통/비도통정보로서 HWBO에 저장함과 동시에 비트장치(XO)의 상태를 실행플래그비트에 저장한다.
다음 도 20을 사용하여 2스캔째 이후의 동작에 대하여 설명한다. 먼저 도 19의 기간(T3)에 XO = O가 SGDO에 저장된 경우에는 2스캔째도 PM = 0으로 되어 1스캔시의 LDP명령을 실행하는 것과 동일하다.
다음, 도 19의 기간(T3)에 XO = 1이 SGDO에 저장된 경우에 대하여 설명한다. 이 경우 도 20의 기간(T3)에 나타난 것과 같이 LDP명령의 PM의 치는 1이 저장되어 있으며 XO와 PM의 반전의 논리적은 XO의 상태에 관계없이 0으로되어 HWBO는 0(접점이 비도통)으로 된다.
이때, 도 20의 기간(T3)에 XO = 1이 실행플래그비트에 저장되면 3스캔째도 2스캔째의 LDP명령을 실행하기전의 상태와 동일하게 된다.
또, XO = 0가 실행플래그비트에 저장되면, 3스캔째도 1스캔째의 LDP명령을 실행하기전의 상태와 동일하게 된다.
도 18의 MEP명령(74)의 동작에 대하여 도 19와 도 20을 사용하여 설명한다.
도 19에서 MEP명령의 명령코드가 B2R레지스터(4)에 저장되면 1웨이트의 명령으로서 디코드되어서 B3R레지스터(5)에 전송된다.
기간(T9)에서는 V80WAIT신호에 의해 파이프라인레지스터의 동작을 정지 시킨다. 기간(T10)에서는 HWBO의 데이터를 도통/비도통정보저장부(7)내의 레지스터에 세이브시켜 HWBO와 PM의 반전의 논리적을 도통/비도통정로서 HWBO에 저장함과 동시에 세이브한 HWBO의 상태를 실행플래그비트에 저장한다.
다음, 도 20을 사용하여 2스캔째 이후의 동작에 대하여 설명한다. 먼저 도 19의 기간(T10)에 HWBO = 0를 세이브하여 SGDO에 저장된 경우에는 2스캔째도 PM = O으로 되어 1스캔째의 MEP명령을 실행하는 것과 같다.
다음, 도 19의 기간(T10)에 HWBO = 0을 세이브하여 SGDO에 저장된 경우에 대하여 설명한다. 이 경우 도 20의 기간(T10)에 나타낸 것과 같이 MEP명령의 PM의 치는 1이 저장되어 있으며, HWBO와 PM의 반전의 논리적은 HWBO의 상태에 불고하고 0으로 되어 HWBO는 0(접점이 비통전)으로 된다.
이때, 도 20의 기간(T10)에 HWBO = 1이 세이브된 실행플래그비트에 저장되면, 3스캔째도 2스캔째의 MEP명령을 실행하기전의 상태와 동일하게 된다.
또, HWBO = 0가 세이브된 실행플래그비트에 저장되면 3스캔째도 1스캔째의MEP명령을 실행 하기전의 상태와 동일하게 된다.
또 MEP명령에서는 도 19의 기간(T10)에 나타낸 것과 같이 MEP명령의 연산으로 HWBO를 갱신하므로 갱신하기전의 데이터를 일단 레지스터에 세이브 시키고 세이브된 데이터를 실행플래그비트에 기록한다.
또, 여기서는 오르막에서 동작하는 LDP명령과 MEP명령에 대하여 설명 하였으나, LDP명령의 HWBO에 저장하는 데이터를 XO의 반전과 PM의 논리적을 저장하면 비트장치(X)가 1 →0으로 하강한 스캔에서 동작하는 명령으로 된다.
또, MEP명령에서 HWBO의 반전과 PM의 논리적을 HWBO에 저장하면 접점이 1 →0으로 하강한 스캔에서 동작하는 명령으로 된다.
마찬가지로 XO의 상태와 PM의 반전과 HWBO의 논리적을 HWBO에 저장하면 도 18(c)의 명령(76)에 나타나는 ANDP명령으로 되며 XO의 상태와, PM의 반전의 논리적과, HWBO의 논리화를 HWBO에 저장하면, 도 18(c)의 명령(77)에 나타난 ORP명령으로 된다.
앞에서 설명한 것과 같이 데이터메모리(3)에서 판독한 비트장치와, 실행플래그비트에 의해 논리연산을하여 연산결과를 실행/비실행정보저장부(7)에 기록함과 동시에 시퀀스프로그램메모리(1)의 실행플래그비트에 전회의 스캔의 비트장치의 상태를 기록함으로 비트장치가 변화한 스캔만 실행하는 명령을 H/W연산회로에서 고속처리하는 것이 가능하게되며 처리시간을 고속화할 수가 있다.
또, 실행/ 비실행정보저장부(7)의 상태와 실행플래그비트에 의해 논리연산을 행하며 연산결과를 실행/비실행정보저장부(7)에 기록함과 동시에 시퀀스프로그램메모리(1)의 실행플래그비트에 전회의 스캔의 실행/비실행정보저장부(7)의 상태를 기록함으로 접점의 상태가 변화한 스캔만 실행하는 명령을 H/W연산회로에서 고속처리하는 것이 가능하게 되며 처리시간을 고속화할 수가 있다.
이상과 같이 본 발명에 의한 프로그래머블 컨트롤러는 시퀀스제어를 하는 각종 공작기계, 산업기계에 대하여 유용하다.

Claims (3)

  1. 시퀀스프로그램을 저장하는 시퀀스프로그램메모리와, 연산데이터를 저장하는 데이터메모리와, 상기 시퀀스프로그램메모리의 명령코드를 해석하는 명령코드부와, 직전의 시퀀스프로그램의 접점의 상태를 저장하는 도통/비도통정보저장부와, 상기 데이터메모리에서 판독한 연산데이터를 일시적으로 저장하는 연산데이터저장부와, 상기 데이터메모리에 대한 리드/라이트(판독/기록)제어 및 상기 연산데이터의 제어를 하는 제어부와, 상기 명령코드의 내용에 따라 연산을 행하는 하드웨어(H/W) 구성의 연산부를 구비한 프로그래머블 컨트롤러에 있어서,
    상기 명령디코드부는 상기 도통/비도통정보저장부에 저장되어 있는 직전의 시퀀스프로그램의 접점의 상태에 의해 해당명령 디코드부에 디코드된 명령의 실행조건으로한 실행/비실행을 판단하고, 상기 제어부에 데이터메모리제어부가 제공되며, 해당 데이터메모리제어부는 실행조건 성립시에는 연산데이터를 상기 데이터메모리 또는 시퀀스프로그램메모리에서 판독하여 상기 연산부에서의 연산후에 연산결과를 상기 데이터메모리에 기록하는 제어를 하며, 실행조건 불성립시에는 상기 데이터메모리와, 상기 연산부간의 연산데이터의 판독/기록을 하지 않는 제어를 하며 실행조건 불성립시에는 연산을 실행하지 않고 다음의 명령으로 이행하는 것을 특징으로 하는 프로그래머블 컨트롤러.
  2. 시퀀스프로그램을 저장하는 시퀀스프로그램메모리와, 연산데이터를 저장하는 데이터메모리와, 상기 스퀀스프로그램메모리의 명령코드를 해석하는 명령코드부와, 직전의 시퀀스프로그램의 접점의 상태를 저장하는 도통/비도통정보저장부와, 상기 데이터메모리에서 판독한 연산데이터를 일시적으로 저장하는 연산데이터저장부와, 상기 데이터메모리에 대한 리드/라이트(판독/기록)제어 및 상기 하드웨어(H/W) 구성의 연산부를 구비한 프로그래머블 컨트롤러에 있어서,
    상기 시퀀스프로그램메모리내에 전회의 스캔에서 명령을 실행 하였나 아닌가를 저장하는 비트가 제공되며, 상기 명령디코드부는 상기 도통/비도통정보저장부에 저장되어 있는 직전의 시퀀스프로그램의 접점의 상태와, 상기 시퀀스프로그램메모리내의 상기 비트의 ON/OFF상태에 의해 해당 명령디코드부에 디코드된 명령의 실행조건으로 한 실행/비실행을 판단하고 상기 제어부에 데이터메모리제어부가 제공되며 해당 데이터메모리제어부는 실행조건 성립시에는 연산데이터를 상기 데이터메모리 또는 시퀀스프로그램메모리에서 판독하여 상기 연산부에서의 연산후에 연산결과를 상기 데이터메모리에 기록하는 제어를 하며, 실행조건 불성립시에는 상기 데이터메모리와, 상기 연산부간의 연산데이터 판독/기록을 하지 않는 제어를 하며, 실행조건 불성립시에는 연산을 실행하지 않고 다음의 명령으로 이행하는 것을 특징으로 하는 프로그래머블 컨트롤러.
  3. 상기 데이터메모리에 액센스하는 어드레스를 래치하는 어드레스 유지수단을구비하고, 2중워드 연산을 행하는 명령코드를 상기 명령디코드부가 인식하며, 실행조건이 성립하여 상위 워드데이터를 판독/기록할때에 상기 어드레스 유지수단에 래치한 어드레스를 인크리먼트하여 상기 데이터메모리에 대한 어드레스를 생성하는 어드레스 생성 제어수단을 가지며, 상기 어드레스 유지수단과, 상기 어드레스 생성 제어수단의 동작에 의해 상기 데이터메모리에 2중워드를 판독/기록하는 것을 특징으로하는 청구범위 제1항 기재의 프로그래머블 컨트롤러.
KR10-2001-7001166A 1999-05-28 1999-05-28 프로그래머블 컨트롤러 KR100398759B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP1999/002839 WO2000073863A1 (en) 1999-05-28 1999-05-28 Programmable controller

Publications (2)

Publication Number Publication Date
KR20010106421A true KR20010106421A (ko) 2001-11-29
KR100398759B1 KR100398759B1 (ko) 2003-09-19

Family

ID=14235829

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-7001166A KR100398759B1 (ko) 1999-05-28 1999-05-28 프로그래머블 컨트롤러

Country Status (5)

Country Link
US (1) US6810477B1 (ko)
JP (1) JP3691435B2 (ko)
KR (1) KR100398759B1 (ko)
DE (1) DE19983210B4 (ko)
WO (1) WO2000073863A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4451010B2 (ja) * 2001-04-09 2010-04-14 三菱電機株式会社 プログラマブルコントローラ
US7554978B1 (en) * 2004-03-30 2009-06-30 Extreme Networks, Inc. System for accessing content-addressable memory in packet processor
US7574611B2 (en) * 2005-11-28 2009-08-11 Atmel Corporation Command decoder for microcontroller based flash memory digital controller system
CN105103064B (zh) * 2013-04-12 2017-03-08 三菱电机株式会社 可编程控制器的周边装置以及调试辅助方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3849765A (en) * 1971-11-30 1974-11-19 Matsushita Electric Ind Co Ltd Programmable logic controller
US3731280A (en) * 1972-03-16 1973-05-01 Varisystems Corp Programmable controller
CA1168377A (en) * 1980-04-25 1984-05-29 Michael L. Ziegler Data processing system having a memory system which utilizes a cache memory and unique pipelining techniques for providing access thereto
DE3279057D1 (en) * 1982-12-28 1988-10-27 Ibm Programmable logic controller
US5319783A (en) * 1989-03-31 1994-06-07 Allen-Bradley Company Inc. Programmable controller with an operator messaging function
JP2529429B2 (ja) * 1989-12-26 1996-08-28 株式会社日立製作所 プログラマブルコントロ―ラ
DE69324388T2 (de) * 1992-01-23 1999-09-09 Mitsubishi Electric Corp Speicherprogrammierbare Steuerung
JP2792778B2 (ja) * 1992-01-28 1998-09-03 三菱電機株式会社 プログラマブルコントローラ
JP2902888B2 (ja) * 1993-01-20 1999-06-07 三菱電機株式会社 プログラマブルコントローラ
JP3344020B2 (ja) * 1993-08-30 2002-11-11 富士電機株式会社 プログラマブルコントローラ
US5623401A (en) * 1995-08-16 1997-04-22 Allen-Bradley Company, Inc. Industrial controller with optimized execution of relay ladder logic programs
US5933651A (en) * 1995-09-29 1999-08-03 Matsushita Electric Works, Ltd. Programmable controller
JPH10171527A (ja) * 1996-12-05 1998-06-26 Meidensha Corp プログラムのデバッグ方式
JPH10254509A (ja) * 1997-03-14 1998-09-25 Yaskawa Electric Corp プログラマブルコントローラ

Also Published As

Publication number Publication date
KR100398759B1 (ko) 2003-09-19
WO2000073863A1 (en) 2000-12-07
JP3691435B2 (ja) 2005-09-07
DE19983210B4 (de) 2011-07-21
US6810477B1 (en) 2004-10-26
DE19983210T1 (de) 2001-08-30

Similar Documents

Publication Publication Date Title
EP0231928B1 (en) Program control circuit
US4841436A (en) Tag Data processing apparatus for a data flow computer
EP0241946B1 (en) Information processing system
US4181942A (en) Program branching method and apparatus
US6081887A (en) System for passing an index value with each prediction in forward direction to enable truth predictor to associate truth value with particular branch instruction
JPH11282677A (ja) マイクロプロセッサの分岐命令予測方法
US6581120B1 (en) Interrupt controller
KR100371686B1 (ko) 제한실행분기예측방법
KR20010106421A (ko) 프로그래머블 컨트롤러
JP2580396B2 (ja) パイプラインにおける分岐命令制御方式
JPH07182170A (ja) マイクロプロセッサ
US8631173B2 (en) Semiconductor device
KR910001708B1 (ko) 중앙처리장치
US5604876A (en) Apparatus for handling differing data length instructions using either directly specified or indirectly specified data lengths
JPH11306016A (ja) レジスタ間接分岐命令及び条件付き分岐命令実行方法
JPH1091441A (ja) プログラム実行方法およびその方法を利用した装置
JP3014682B2 (ja) プログラム制御方法及び装置
US6282632B1 (en) Information processor having duplicate operation flags
JPH024010B2 (ko)
JP2000029508A (ja) プログラマブルコントローラ
JP2781779B2 (ja) 分岐制御回路
JPS6325373B2 (ko)
JP2792778B2 (ja) プログラマブルコントローラ
JP2819753B2 (ja) パイプライン・マイクロプロセッサ
US5109516A (en) Sequence controller for controlling next operating state with a short sequence

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120821

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20130822

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20140825

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20150730

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20160818

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20170823

Year of fee payment: 15

LAPS Lapse due to unpaid annual fee