KR0137311B1 - 프로그래머블 콘트롤러 및 그 프로그램 용량 변경방법 - Google Patents
프로그래머블 콘트롤러 및 그 프로그램 용량 변경방법Info
- Publication number
- KR0137311B1 KR0137311B1 KR1019950000330A KR19950000330A KR0137311B1 KR 0137311 B1 KR0137311 B1 KR 0137311B1 KR 1019950000330 A KR1019950000330 A KR 1019950000330A KR 19950000330 A KR19950000330 A KR 19950000330A KR 0137311 B1 KR0137311 B1 KR 0137311B1
- Authority
- KR
- South Korea
- Prior art keywords
- program
- file
- data
- management table
- capacity
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99956—File allocation
- Y10S707/99957—Garbage collection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
이 발명에 의한 프로그래머블 콘트롤러는 기능블록으로 각각 분할하는 다수의 프로그램 도는 데이타를 화일로서 격납되는 유저 메모리(user memory)와, 각 화일의 격납장소, 속성 및 용량에 대한 데이타가 격납되는 유저 메모리 관리 테이블을 구성하며, 주변기기에서 화일을 새로 기록하는 수단과, 각 화일의 용량을 변경하는 수단과, 각 화일을 임의로 접근시키는 수단을 구비하여 화일 데이타의 연속성을 유지한다.
Description
제1도는 이 발명에 의한 프로그래머블 콘트롤러의 구성을 나타낸 블록도.
제2도는 이 발명에 의한 유저 메모리(user memory)의 구성 설명도.
제3도는 이 발명에 의한 유저 메모리 관리 테이블의 구성 설명도.
제4도는 이 발명에 의한 등록 에리어 관리 테이블의 구성설명도.
제5도는 이 발명에 의한 빈에리어 관리 테이블의 설명도.
제6도는 이 발명에 의한 새 화일(new file)을 기록하는 주변기기의 동작 예 설명도.
제7도는 이 발명에 의한 주변기기에서 새 화일을 기록하는 요구데이타 설명도.
제8A도는 이 발명에 의한 새 화일을 기록하는 CPU의 동작설명 흐름도.
제8B도는 이 발명에 의한 새 화일을 기록하는 CPU의 동작설명 흐름도.
제9도는 이 발명에 의한 새 화일을 기록하는 주변기기의 동작 예 설명도.
제10도는 이 발명에 의한 화일용량을 변경하는 CPU의 동작설명 흐름도.
제11A도는 이 발명에 의한 유저 메모리의 상태이동 예 설명도.
제11B는 이 발명에 의한 유저 메모리의 상태이동 예 설명도.
제12A도는 이 발명에 의한 사용자 관리테이블의 상태이동 예 설명도.
제12B도는 이 발명에 의한 사용자 관리 테이블의 상태이동 예 설명도.
제13도는 이 발명에 의한 주변기기의 프로그램 실행 동작 예 설명도.
제14도는 이 발명에 의한 프로그램 실행 관리 테이블의 구성설명도.
제15도는 이 발명에 의한 프로그램 실행 흐름도.
제16도는 이 발명에 의한 주변기기의 프로그램 실행 시간표시 예 설명도.
제17도는 이 발명에 의한 각 화일(file)에 대한 스캔 타임 테이블(scan time table) 구성 설명도.
제18도는 이 발명에 의한 프로그램 실행 흐름도.
제19도는 이 발명에 의한 주변기기의 공통 포인터(pointer) 설정 설명도.
제20도는 이 발명에 의한 프로그램 예 설명도.
제21도는 이 발명에 의한 포인터 관리 테이블 구성 설명도.
제22도는 이 발명에 의한 JMP 명령처리 흐름도.
제23도는 이 발명에 의한 화일 데이타 관리 메모리의 구성 설명도.
제24도는 이 발명에 의한 프로그램 실행 흐름도.
제25도는 이 발명에 의한 MOV명령의 흐름도
제26도는 이 발명에 의한 코멘트(comment) 관리 메모리의 구성 설명도.
제27도는 이 발명에 의한 프로그램 실행 흐름도.
제28도는 이 발명에 의한 LEDC명령의 흐름도.
제29도는 종래 타입의 프로그래머블 콘트롤러를 설명한 블록도.
제30도는 종래 타입의 유저 메모리 배정 예 설명도.
제31도는 종래 타입의 프로그램 예 설명도.
제32도는 종래 타입의 프로그램 판독 동작 설명도.
제33도는 종래 타입의 프로그램 변경 동작 설명도.
제34도는 종래 타입의 프로그램 예 설명도.
제35도는 종래 타입의 포인터 테이블(pointer table) 설명도.
제36도는 종래 타입의 JMP명령 흐름도.
제37도는 종래 타입의 MOV명령 흐름도.
제38도는 종래 타입의 코멘트 데이타(comment data) 구성설명도.
제39도는 종래 타입의 LEDC 명령 흐름도.
*도면중 주요부호에 대한 설명*
1 : 주변기기2 : CPU 유닛
3 : 접촉부(interface section)4 : 연산처리부
5 : 마이크로 프로그램 메모리(microprogram memory)
6 : 유저 메모리(user memoy)7 : 스캔 타임 메모리(scan time memory)
8 : 포인터 테이블(pointer table)
9 : 유저 메모리 관리 테이블(user memory management table),
10 : 프로그램 실행 관리 테이블(program execution management table)
11 : 스캔 타임 메모리(scan time memory)
12 : 포인터 관리 테이블(pointer management table)
13 : 화일 데이타 관리 메모리(file data management memory)
14 : 코멘트 관리 메모리(comment management memory)
15 : 유저 할당데이타 메모리(user allocation data memory)
이 발명은 프로그래머블 콘트롤러(programmable controller) 및 그 프로그램 용량 변경방법, 특히 프로그래머블 콘트롤러에 있어서 각종 타입의 데이타관리 및 실행방법(execution scheme)에 관한 것이다.
제29도는 종래 타입의 프로그래머블 콘트롤러의 구성을 설명한 블록도이다. 이 도면에서 부호 1은 주변기기이고, 부호 2는 CPU유닛이다. CPU유닛(2)에는 데이타 트랜잭션(data transaction)을 실행하는 주변기기의 접속부(interface section)가 부호 3으로 설정되어있고, 연산처리부(computing processing section)가 부호 4로, 시퀀스 프로그램(sequence program) 일부를 고속처리로 실행하는 하드웨어 연산회로가 부호 4A로, 그 시스템의 프로그램을 기억하는 마이크로 프로그램 메모리(microprogram memory)가 부호 5로, 시퀀스 프로그램, 화일 메모리 또는 그 코멘트(comments) 등의 사용자 데이타(user data)를 사용자가 기억하는 유저 메모리가 부호 6으로, 프로그램 전체의 스캔 타임(scan time)을 격납하는 스캔 타임 메모리가 부호 7로, 포인터(pointer)의 어드레스 데이타(address data)를 격납하는 포인터 테이블(pointer table)이 부호 8로, 유저 할당 데이타메모리(user allocation data memory)가 부호 15로 각각 설정되어 있다.
구체적 예에 따라 종래 타입의 프로그래머블 콘트롤러의 동작을 아래에서 설명한다.
제30도는 주변기기의 유저 메모리 할당 예를 나타내며, 이 경우 1000바이트가 시퀀스 프로그램에, 2000바이트가 화일 데이타에, 3000바이가 코멘트에 할당되어 있다.
이 경우 유저 할당 데이타 메모리(18)와 유저 메모리(6)의 할당은 이 도면(프로그램 에리어 6a, 화일 데이타 에리어 6b, 코멘트 에리어 6c)에 도시되어 있다. 이 도면에서 시퀀스 프로그램이 격납된 에리어(area)의 헤더 어드레스(header address)가 부호 15-1로, 데이타가 격납된 에리어의 헤더 어드레스가 부호 15-2로, 코멘트 데이타가 격납된 에리어의 헤더 어드레스가 부호 15-3으로 각각 설정되어 있다.
실제의 동작에서, 주변기기(1)에서 시퀀스 프로그램 판독 또는 기록요구가 있을 때 그 출력 유닛(16C)은 각 헤더 어드레스에서 데이타기록을 개시한다.
제31도는 제30도에 나타낸 프로그램 에리어(6a)의 구성에 대한 구체적 예를 나타낸 것이다.
이 도면에서, 기능 BK1∼BK5에 해당하는 블록은 그 실행 시퀀스에 할당된다. 여기서, BK1은 초기에서만 실행하는 설정된 개시 데이타 또는 초기데이타의 검사조건 등 기능블록(개시처리)을 나타낸다.
BK2는 제한스위치(17a) 또는 센서(17b)와 같은 장치에서 신호를 채취하는(fetch) 입력 유닛(16a) 또는 고속카운터(16b)의 처리를 실행하는 기능블록(입력처리)이다.
BK3는 BK2에서 명령에 따라 연산을 실행하는 기능블록(연산제어처리)이다.
BK4는 BK3의 연산명령에 따라 출력 유닛(16c) 또는 어날로그 유닛(16d)를 통하여 밸브 조절계(17c) 또는 모터(17d)에의 출력을 행하는 기능블록(출력처리)이며, 이 블록에서 FEDN은 그 처리의 완료를 나타낸 명령이다.
BK1∼BK4에 대한 일련의 처리를 스캔(scan)이라 한다.
이 처리는 제31도의 우측에 나타낸 바와 같이 연속적으로 그리고 주기적으로 실행하여 실제적으로 제어를 한다. BK5는 필요할 때에만 콜링(calling) 및 실행하는 수치데이타의 처리등 기능블록(서브루틴처리)이다. 이 구성은 시퀀스 프로그램의 구성예이다.
일반적으로, 시퀀스 프로그램은 위에서와 같이 수개의 기능블록으로 나누어지며, 각 블록은 여러사람(several person)에 의해 병행하여 개발된다.
다음으로, 프로그램 판독 또는 기록동작을 아래에서 설명한다.
제32도는 프로그램 판독 주변기기의 조작예를 나타낸 것이다. 프로그램 전체범위를 판독해야 하는지 또는 그 지정범위만을 판독해야 하는지에 대한 설정을 한다. 지정범위만의 프로그램을 판독할 필요가 있을 경우 개시스탭과 종료스텝을 지정한다.
제32도는 제31도의 BK2를 판독하는 경우 지정방법을 나타내며, 기록동작에 대해서도 동일하다.
그 다음으로, 새 내용을 프로그램 메모리에 추가하는 동작을 설명한다. 제33도는 시퀀스 프로그램에서 각 블록의 배치를 나타낸 것이다.
이 도면에서, 부호 6a(1)는 변경된 메모리내용(memory contents)을 나타내며, 부호6a(2)는 6a(1)의 100∼200의 BK2블록에서 프로그램 스텝의 변경 후 메모리 내용을, 부호 6a(3)은 BK6의 새 블록을 6a(2)에 추가하는 경우의 메모리 내용을 부호 1(2)는 6a(2)에 대응하는 주변기기에서의 동작을, 부호 1(3)은 6a(3)에 대응하는 주변기기에서의 동작을 각각 나타내며, 여기서 BK6은 입출력 첵크처리의 블록으로, BK2와 BK3사이에서 실행할 필요가 있다.
그 다음으로, 프로그램을 실행하는 동작을 설명한다.
프로그램을 실행할 때에는 먼저 시퀀스 프로그램 메모리의 선두(head), 즉 BK1의 선두를 실행개시를 하는 어드레스에 설정한 다음 블록 BK1, BK2, BK3를 연속해서 실행한다.
이 처리에서 간단한 명령은 하드웨어 연산회로(4A)에 의해 처리한다.
다른 명령은 마이크로 프로그램 메모리(5)에 기억된 마이크로 프로그램에 의해 처리한다. FEND명령이 검출될 경우 소정의 END처리를 행하며, 다시 그 프로그램을 주기적으로 BK1에서 실행한다.
또 BK5를 주기적으로 항상 실행하지 않으며, CALL 명령이 실행될 때에만 실행한다.
또, 일연의 스캔(scan)에 원하는 처리시간을 END처리에 의해 스캔 타임 메모리(scan time memory)(7)에 기억시킨다.
그 다음으로 포인터의 동작을 설명한다.
제34도는 BK1, BK2 및 BK4의 프로그램 예를 나타낸다.
여기서 JMP는 소정의 포인터(pointer)가지 점핑(jumping)하는 명령이며, 그 CALL명령은 그 소정의 포인터에 있는 서브루틴을 콜(call)하는 명령이다. 각 블록의 포인터NO.가 중복되지 않도록 하는 것이 필요하다.
MOV명령은 정수(constant)를 화일 메모리(fime memory)에 전송하는 명령이며, LEDC는 소정의 기기에 의해 명령을 표시부(display unit)에 표시하는 명령이다.
제35도는 그 포인터 테이블(pointer table)(8)의 구성을 나타낸 것으로, 이 테이블은 프로그램 실행전에 설정(set)된다. 포인터가 존재하지 않을 경우 FFFFH값 등 실제로 존재하지 않는 큰 프로그램 어드레스가 격납되는 것으로 한다.
제36도는 JMP명령을 처리하는 흐름도이다. JMP명령이 검추로디면 그 포인터 NO.는 시퀀스 프로그램 메모리(5)에서 판독되며(f141), 그 프로그램 어드레스는 제29도의 포인터 테이블(8)의 내용에 따라 산출된다(f142). 그 다음 그 값이 존재가능한 어드레스 인가의 여부를 판단하여(f143), 그 포인터의 어드레스가 최대 어드레스보다 더 큰 것으로 판단될 경우 포인터가 없는 것으로 에라처리(error processing)을 실행한다(f145). 역으로, 포인터의 어드레스가 최대어드레스보다 더 작거나 동일한 것으로 판단할 경우 지정 어드레스의 프로그램으로 점핑하는 처리를 행하여(f144), 명령이 종료된다.
제37도는 MOV명령처리에 대한 흐름도를 나타낸다.
먼저, 제1기기(first device)의 정수를 판독한 후(f281), 제2기기의 파일 NO.를 판독하여(f282), 유저 메모리의 배정데이터(15)의 화일 데이타 헤더 어드레스(15-2)(제30도 참조)에 의해 나타낸 값을 추가하여 얻어진 어드레스에 데이타가 기록된다(f283).
제38도는 코멘트 데이타 내부구성을 나타낸 것이다.
제39도는 코멘트 판독명령인 LEDC명령을 처리하는 흐름도이다. 우선, 격납된 코멘트 데이타를 유저 메모리 할당데이터(15)의 코멘트 헤더 어드레스(15-3)(제30도 참조)에서 판독한 다음(f291), 표시부(display unit)에서 그 데이타를 표시한다(f292).
다수의 데이타, 특히 프로그램의 관리방식에 대해서는 일본국 공개특허공번 1989-205203에 기재되어 있으나, 이 방식에서는 시스템 용량의 변경이 발생할 때 전 프로그램을 주변기기 측에서 판독할 필요가 있다.
또, 처리시간에 대해서는 전체 처리시간만을 검출할 수 있으므로 어느 부분의 처리시퀀스가 긴 처리시간을 필요로 하는지를 파악하기가 어렵다. 특히, 프로그래머블 콘트롤러에 사용되는 프로그램 크기는 시스템의 규모가 커짐에 따라 해마다 비대해지는 경향이 있다. 불과 수년전 까지만 하여도 수천 스텝이 프로그램에 충분하였으나, 최근에는 각각 100,000스텝 이상의 프로그램이 필요로 하였다.
이와같이 큰 크기의 프로그램의 경우 하나씩 각 스텝을 첵크하여 처리시간을 해석하기가 실제로 불가능하였다.
그러나, 프로그래머블 콘트롤러의 성능은 제어시스템의 전체의 리얼 타임(real-time)처리 특성에 크게 기여하였다. 따라서, 각각의 블록의 처리시간을 상세히 검토하여 판독하는 것이 가장 중요하다.
일본국 공개특허 공번 1990-249910호(수치제어 가공프로그램의 화일관리 방식)에서는 수치제어(NC)의 경우 화일관리 방식에 대해서 기재되어 있다.
그러나, 이 방식의 중요한 특징은 그 화일관리부에서 절대어드레스를 사용하는 데 있다. 이 화일방식은 일반 퍼스널 컴퓨터(personal computer)의 화일방식과 크게 차이가 없으나, FAT(factory automation techniques)에 의해 프로그램을 차례로 실행하는 것이 필요하며, 이 방식은 고속응답성을 일반적으로 요구하는 프로그래머블 콘트롤러에 적용하기가 어렵다.
또, 일본국 공개특허 공번 1991-222047은 미사용 기억영역의 효과적인 사용에 대해서 기재되어 있으나, 연속한 영역을 확보하기 위하여 빈 영역을 차례로 조사할 필요가 있다.
종래 타입의 프로그래머블 콘트롤러는 위에서 설명한 바와 같이 유저 메모리 관리시스템에 의한 것으로 다음의 문제점이 있다.
첫째로, 유저 메모리(user memory) 전체가 유저 할당데이타에 의해 관리되어 그 격납 장소에서 절대 어드레스의 변화를 발생하기 때문에 프로그램 또는 화일 데이타의 격납용량을 용이하게 변경시킬 수 없다.
둘째로, 시퀀스 프로그램을 수개의 블록으로 분할하여 작성할 경우, 각 블록은 하나의 프로그램으로 합체하여 CPU본체(basic system)에 격납될 필요가 있어, 그 프로그램의 한 블록만이 추가 변경되어 그 변경블록 이후에 배치된 전체의 블록을 다시 CPU에 기록할 필요가 있다.
또, 일반 퍼스널 컴퓨터에 사용되는 화일관리 시스템에 프로그래머블 콘트롤러에 도입되어도, 문제점이 발생한다. 즉, 하드웨어 연산회로에서 고속으로 시퀀스 프로그램이 통상실행되어, 시퀀스 프로그램이 실행될 때 프로그램의 실행을 정지시켜 또 다른 프로그램의 실행으로 점프하기가 어렵다. 따라서, 프로그램 화일 데이타를 연속해서 배치시킬 필요가 있다.
또, 시동시에만 실행하는 블록에 있어서도 항상 스캐닝(scanning)을 실행할 필요가 있어 처리시간을 헛되게 소비한다.
또, 그 처리시간이 전체로만 검출되어도 그 프로그램에 있어서 각각의 블록이 처리시에 어느정도의 시간이 걸렸는지에 대하여 판단할 수 없다.
따라서, 그 처리시간의 감축에 대한 필요한 효과적인 대책을 취하기가 어렵다.
특히, 프로그래머블 콘트롤러의 경우, 수 밀리초(ms)마다 1회씩 기계적 제어를 하므로 긴 처리시간을 요하는 블록의 검출은 전체의 처리시간의 단축과 제어 유닛의 성능제고에 있어서 대단히 중요하다.
셋째로, 일반포인터 NO.를 각 블록에 사용할 때 설계처리 개시전에 각 블록에 포인터 NO.를 할당할 필요가 있다. 역으로 사전에 한번 작성한 프로그램을 다시 사용할 경우 각 블록에 이미 할당한 포인터 NO.을 변경할 필요가 있다.
넷째로, 각 프로그램을 수개의 블록으로 분할하여 다수의 프로그램을 작성할 경우, 전체의 데이타 메모리는 전 프로그램에 의해 이용된다. 따라서, 각 프로그램마다 기기(device)를 할당할 필요가 있으며, 시퀀스 프로그램의 완성전 데이타의 증가를 필요로 할 때 그 재할당에 대응되는 프로그램의 변경과 데이타의 재할당 행할 필요가 있다.
다섯째로, 각 프로그램을 수개의 블록으로 분할하여 다수의 프로그램을 작성할 경우에도 전 코멘트 데이타는 다수의 프로그램에 의해 사용되므로 그 코멘트 데이타는 변경 또는 추가할 때마다 코멘트 데이타를 재결합 할 필요가 있다.
근년에, 제어시스템은 점점더 복잡하게 되어 위에서와 같은 문제점은 각 프로그램을 기능블록으로 분할하여 다수인에 의해 설게된 프로그램을 실시함과 동시에 각 프로그램의 기능을 명확하게 함으로써 설계효율을 향상시키는 데 큰 장해가 되었다.
따라서, 이 발명의 목적은 프로그램 또는 데이타를 다수의 화일에 할당함으로서 데이타를 용이하게 추가 또는 변경할 수 있으므로 다수의 프로그래머(programmers)에 의해 용이하게 프로그래밍(programming)을 할 수 있어 그 프로그램 또는 데이타를 CPU내 메모리에 임의로 기록할 수 있는 프로그래머블 콘트롤러를 제공하는 데 있다.
또, 그 프로그래머블 콘트롤러는 프로그램의 실행형태를 자유롭게 지정함으로서 스캔타임(scan time)을 경감한다.
또, 그 프로그래머블 콘트롤러는 그 프로그램의 각 블록의 실행에 요하는 시간을 감시함으로서 프로그램의 실행에 요하는 시간을 용이하게 첵크할 수 있다.
최종적으로, 각 프로그램마다 공통의 포인터 NO.를 사용할 수 있고, 또 각 프로그램에 따라 프로그램 코멘트 데이타에 의한 데이타를 스위칭(switching)할 수 있다.
이 발명에 의한 프로그래머블 콘트롤러에 있어서, 각 기능의 시퀀스 프로그램의 판독 및 기록을 임의로 실행할 수 있는 수단은 CPU로부터 변경 또는 추가하는 데 필요로하는 블록만을 판독 또는 기록한다.
이 발명에 의한 프로그래머블 콘트롤러에 있어서, 각 시퀀스 프로그램의 실행형태를 임의로 지정할 수 있는 수단은 반복실행한 프로그램으로부터 개시할 때에만 실행한 프로그램과 선별되며 사전에 지정된 순서에 따라 프로그램의 각 블록을 실행한다.
이 발명에 의한 프로그래머블 콘트롤러에 있어서, 프로그램을 실행하는데 요하는 시간을 감시하는 수단은 프로그램의 실행을 종료하는 시간마다 스캔 타임 테이블에 프로그램을 처리하는 데 요하는 시간을 기록한다.
이 발명에 의한 프로그래머블 콘트롤러에 있어서, 각프로그램사이에 공통으로 사용될 수 있는 공통포인터와 각 프로그램내에서만 유요한 로컬 포인터(local pointer)를 선택 실행하는 수단은 포인터가 포인터 관리 테이블에 의해 공통포인터인가 또는 로컬 포인터인가를 판별하여 그프로그램을 실행한다.
이 발명에 의한 프로그래머블 콘트롤러에 있어서, 화일 데이타 관리메모리에 의해 데이타의 어드레스를 스위칭하는(switching) 수단은 실행되는 프로그램의 이름이 변경될 때마다 그 프로그램에서와 동일한 이름을 가진 화일 레지스터의의 헤더 어드레스(header address)에서 사용되는 데이타의 헤더 어드레스를 설정한다.
이 발명에 의한 프로그래머블 콘트롤러에 있어서, 코멘트 관리메모리에 의해 데이타를 스위칭하는 수단은 실행되는 프로그램의 이름이 변경될 때마다 그 프로그램에서와 동일한 이름을 가진 화일 코멘트의 헤더 어드레스에서 사용되는 데이타의 헤더 어드레스를 설정한다.
이 발명의 다른 목적 및 특징은 첨부도면에 따르면 다음 설명에서 이해할 수 있다.
제1도는 이 발명의 실시예 1에 의한 프로그래머블 콘트롤러의 구성을 나타낸 블록도이다. 이 도면에서, 부호 2A는 프로그래머블 콘트롤러를 나타내머, 부호 1∼8은 종래기술을 나타낸 제29도의 구성과 동일하다.
또, 이 도면에서 부호 9는 유저 메모리(user memory)내에 격납된 각종 타입의 프로그램 또는 데이타의 격납장소(storage space)에 관련된 데이타 등 데이타의 관리에 사용되는 유저 메모리 관리 테이블(user memory management table)이다.
부호 10은 각 프로그램의 실행을 관리하는 프로그램 실행관리 테이블이고, 부호 11은 각 프로그램 화일의 스캔 타임에 대한 데이타를 격납시킨 각 화일의 스캔 타임 메모리(scan time memory)이며, 부호 12는 그 포인터 테이블(8)의 내용을 관리하는 포인터 관리 테이블(pointer management table)이고, 부호 13은 화일 데이타를 스위칭하는 화일 데이타 관리 메모리(file data management memory)이며, 부호 14는 필요한 스위칭 코멘트(switching comments)를 기억하는 코멘트 관리 메모리(comment management memory)이다.
제2도는 유저 메모리(6)의 구성예를 나타낸 것으로, 화일 BK1∼BK5가 차례로 격납되어 있다.
제3돈느 유저 메모리 관리 테이블(9)의 내부구성을 나타낸 것으로, 이 도면에서, 부호 9a는 유저 메모리(6)내에 등록되어 있는 데이타의 등록데이터를 격납하는 등록 에리어 관리 테이블(registration area management table)이며, 부후 9b는 그 유저 메모리(6)내의 빈 메모리 공간(empty memory space)을 관리하는 빈 에리어 관리 테이블(empty area management table)이다.
제4도는 등록 에리어 관리 테이블(9a)의 데이타 구성을 나타낸 것으로, 이 도면에서 부호 9a-1은 등록데이타의 개수 m이며, 부호 9a-2는 첫번째로 등록된 데이타의 프로그램이름이고, 부호 9a-3은 데이타가 시퀀스 프로그램 또는 화일 데이타인가를 판정하는 등 데이타의 속석이며, 부호 9a-4는 그 데이타가 개시되는 유저 메모리(5)의 헤더 어드레스(header address)이고, 부호 9a-5는 그 데이타의 용량이다. 동일하게 m개분의 데이타가 이 유저 메모리(5)에 격납되어 있다.
제5도는 빈 에리어 관리 테이블(empty area management table)(9b)의 데이타 구성을 나타낸 것이다. 이 도면에서, 부호 9b-1은 빈 에리어의 개수 p이며, 부호 9b-2는 첫번째 빈 에리어가 개시하는 유저 메모리(5)의 헤더 어드레스이고, 부호 9b-3은 그 빈 에리어의 용량이다. 동일하게 빈 에리어의 p개 데이타가 격납되어 있다.
제6도는 화일(file)을 새로 기록하는 주변기기의 조작예를 나타낸 것이다.
이 도면에서 부호 1(4)은 100스텝으로 구성되어 있는 BK6 프로그램이 새로 기록되는 경우를 나타낸다.
제7도는 제6도에 나타낸 조작을 할 때 주변기기에서의 요구를 처리하는 데이타의 구성을 나타낸 것으로, 이 도면에서 부호 R1은 새로운 등록요구를 처리하는 데이타이며, R2는 데이타 기록요구를 처리한느 데이타이고, A2는 그 요구에 대응하는 응답데이타이다.
제8A도 및 제8B도는 각각 제7도에서 처리되는 데이타의 각 요구에 응답하여 CPU측에서 실행하는 처리를 나타낸 것으로, 제8A도의 F1은 요구를 처리하는 데이타(R1)에 대응되는 처리를 나타내며 제8B도의 F2는 요구처리 데이타(R2)에 대응되는 처리를 나타낸다.
제9도는 주변기기에서 화일용량을 변경시키는 조작과 요구처리 데이타(R3)에 대하여 나타낸 것으로, 이 도면에서 BK2 프로그램에서 스텝의 수를 100스텝씩 증가시키는 경우를 나타낸 것이다. 제10도의 F3는 R3에 대응하는 CPU측의 처리를 나타낸 흐름도이다.
제11도는 제6도 및 제9도에 나타낸 조작을 실행할 때 유저 메모리(6)의 내용을 나타낸 것으로, 제11A도는 200용량을 가진 BK6을추가시킬 경우를 나타내며, 제11B도는 BK2의 용량을 100에서 200으로 변경시킬 경우를 나타낸 것이며, 부호 6(1)은 제6도에 나타낸 조작을 실행하기 전 상태이며, 부호 6(2)는 제6도에 나타낸 조작을 실행한 후 상태이고, 부호 6(3)은 제9도에 나타낸 조작을 실시한 후 상태이다.
제12도는 제11도에 대응하는 유저 메모리 관리 테이블(9)의 상태를 나타낸 것으다. 이 도면에서 9a(1)∼9a(3)의 상태는 각각 제11도에서 6(1)∼6(3)에 대응된다.
여기서, 제12A도는 등록 에리어 관리 테이블의 상태를 나타내며, 제12B도는 빈 에리어 관리 테이블의 상태를 나타낸다.
다음으로 아래에서는 조작에 대하여 설명한다.
제2도에 나타낸 바와같이 BK1∼BK5 프로그램이 그 유저 메모리(6)에 격납되어 있는 것으로 한다.
그 다음 등록 에리어 관리 테이블의 구성을 9a(1)에 나타낸 것과 동일한 것으로 한다. 즉, 모두 5개의 화일이 격납되어 있으며, 예로서 등록되어 있는 2번째 화일은 “BK2”의 프로그램 이름을 가진 시퀀스 프로그램으로, 100번째 바이트에서 100바이트가 그 화일에 격납되어 있음을 나타낸다.
또, 그 빈 에리어 관리 테이블은 9b(1)에 나타낸 것과 같이 된다. 즉, 9b(1)은 빈 에리어가 하나이며 500번째 바이트에서 500바이트분의 용량이 있음을 나타낸다.
다음으로 제6도에 나타낸 바와같이 새 화일을 기록하는 조작을 설명한다. 우선, 제7도에 나타낸 새 등록 R1의 요구가 주변기기(1)에서 CPU측으로 발생한다.
이때 CPU에 의해 행한 처리를 아래에서 제8A도의 흐름도 F1에 의해 설명한다.
우선, 요구 처리데이타에 포함된 프로그램 이름 R12가 그 등록 관리 테이블(9a)중에 존재하는가의 여부를 판단하여(f11), 그 이름이 존재할 경우 에러(error)를 나타낸 신호를 발생한다. 그 프로그램 이름이 존재하지 않을 경우 그 빈 에리어 관리 테이블(11b)은 요구 처리데이타중 용량(R14)을 확보할 수 있는지의 여부를 판단한다(f12).
그 용량이 확보될 경우 요구처리 데이타는 등록 관리 테이블(9a)에 등록되어(f13), 빈 에리어 관리 테이블(9b)의 내용을 변경시킨다(f14).
그 다음, 그 등록 관리 테이블(9a)의 등록 NO.를 응답데이터 A1중의 등록 NO.(A12)에 설정한다.
이 조작으로 그 처리를 완료한다(f15).
그 어던 빈 에리어라도 f12에 존재하지 않을 경우 모든 화일을 전방으로 폴러싱(flushing)하여(f16), 다시 f12에서 같이 동일한 판단을 한다(f12).
요구 처리 데이타를 격납하는 메모리공간이 아직도 부족할 경우 에러(error)를 나타내는 신호를 발생한다. 그러나, 요구 처리 데이타를 격납할 수 있을 경우 그 처리는 f13으로 이동한다. 이것은 일단 등록된 화일이 삭제될 경우 빈 에리어의 개수가 증가되어 연속적으로 확보될 수 있는 용량이 감소되기 때문이다.
새 화일이 완료될 때, 데이타 기록요구 R2가 주변기기(1)에서 실행된다. 이때의 처리를 제8B도에 나타낸 흐름도에 의해 아래에 설명한다.
우선, 그 등록 NO.R22가 그 등록 테이블(9a)에 존재하는지의 여부를 판단하여(f21), 그 등록 NO.가 존재하지 않을 경우 에러를 나타내는 신호를 발생한다. 그 등록 NO.가 존재할 경우, 오프셋 어드레스(offset address)(R23) 및 기록용량(R24)이 9a-5에 의해 나타낸 용량범위내에 있는지의 여부를 판단하여(f22) 그 용량범위내에 존재할 경우 기록데이타(R25)를 그 오프셋 어드레스(R23)와 기록용량(R24)에 의해 차례로 기록한다(f23).
이 처리에서, 기록하는 실제 헤더 어드레스(header address)는 오프셋 어드레스(R23)를 헤더 어드레스(9a-4)의 내용에 추가하여 얻어진 값으로 한다.
위 조작에 의해, 유저 메모리(6)의 내용은 제11도의 6(2)에 나타낸 내용으로 변경되며, 유저 메모리 관리 테이블의 내용은 제12도의 9a(2)와 9b(2)에 나타낸 내용으로 변경된다.
그 다음으로, 제9도에 나타낸 화일용량을 변경시키는 조작을 설명한다. 우선, 요구처리 데이타(R3)를 주변기기(1)에서 CPU로 발생시킨다. 이때 CPU에 의해 실행한 처리를 제10도의 흐름도 F3에 의해 아래에 설명한다.
우선, 그 프로그램 이름 R32가 등록 관리 테이블(9a)에 존재하는지의 여부를 판단하여(f31), 그 프로그램 이름이 존재하지 않을 경우 에러(error)를 나타내는 신호를 발생한다. 이 프로그램이름이 존재할 경우, 빈 에리어가 그 대응되는 파일 바로뒤에 존재하는지의 여부를 그 빈 에리어 관리 테이블(9b)에 의해 판단한다(f32).
빈 에리어가 그 대응되는 화일 바로 뒤에 존재할 경우 요구처리 데이타(R34)의 추가용량(R34)이 그 빈 용량에서 존재하는지의 여부를 판단한다(f33), 그 필요한 추가용량이 그 빈 용량내에 존재하면, 그 등록 관리 테이블(9a)의 내용과 빈 에리어 관리 테이블(9b)의 내용을 변경시켜(f34), 조작을 완료한다(f39).
f32 및 f33에서 설명한 조건이 성립되지 않을 경우 지정프로그램(R32)과 그 지정프로그램(R32)전의 모든 프로그램(더 작은 헤더 어드레스를 가각 가짐)을 전방으로 플러싱(flushing)하며(f35), 그 지정프로그램(R33)전의 프로그램(더 큰 헤더 어드레스를 각각 가짐)은 후방으로 플러싱하여 그 등록 관리 테이블(9a)의 내용과 빈 에리어 관리 테이블(9b)의 내용을 변경시킨다(f37). 이 때 f33에서와 동일한 판단을 다시하여(f38), 적합한 용량을 확보할 수 있는 경우, 관리를 f34의 처리로 이동하며, 적합한 용량을 확보할 수 없을 겨우 에러를 나타내는 신호를 발생한다(f40).
위에서 설명한 조작에 의해, 유저 메모리(6)의 내용을 제11A도와 제11B도의 6(3)에 나타낸 내용으로 변경시키며, 그 유저 메모리 관리 테이블의 용량을 제12A도와 제12B도의 9a(3) 및 9b(3)에 각각 나타낸 용량으로 변경한다.
그 다음으로, 실시예 2에 대하여 설명한다.
제13도는 주변기기(1)에서 유저 메모리에 격납된 다수의 프로그램을 실행하는 방법예를 나타낸 것이다.
이 도면에서 1(1)은 제11A도 및 제11B도에서 6(1)에 나타낸 바와 같이 할당된 다수의 프로그램을 실행하는 방법을 나타내며, 1(2)는 프로그램 “BK6”을 새로 추가 한 제11A도의 6(3)에 나타낸 바와 같이 할당된 다수의 프로그램을 실행하는 방법을 나태낸다.
제14도는 프로그램 실행 관리 테이블(10)의 내용을 나타내며 부호 10a는 프로그램이 초기에 개시할 때에만 실행하는 프로그램 실행 관리 테이블을 나타내며, 부호 10b는 프로그램이 반복실행(매회실행)하는 프로그램 실행 관리 테이블을 나타낸다.
실행되는 다수의 프로그램, 각 프로그램의 이름 및 헤더 어드레스는 각 테이블내에 격납되어 있다.
처음 개시할 때에만 프로그램이 실행되는 프로그램 실행 관리 테이블(10a)중에서 부호 10a-1은 처음 개시할 때에만 각각 실행되는 등록 프로그램이 개수이고, 부호 10a-2는 처음 개시할 때에만 각각 실행되는 프로그램의 이름이고, 부호 10a-3은 그 프로그램의 헤드 어드레스(header address)이다. 프로그램이 처음 개시될 때에만 실행되는 프로그램 실행 관리 테이블(10b)에서 10b-1∼10b-3도 동일하다.
제15도는 프로그램을 실행하는 흐름도를 나타낸 것이다.
그 프로그램의 동작에 대하여 아래에 설명한다.
우선, CPU에 의해 프로그램 실행이 개시되기 전에 제13도에 나타낸 주변기기에 의해 설정된 데이타에 의해 제14도에 나타낸 처음 개시할 때에만 실행되는 프로그램의 개수(10a-1), 반복실행되는 프로그램의 개수(10b-1), 처음 개시할 때에만 실행되는 프로그램의 개수(10a-2) 및 반복실행되는 프로그램의 이름(10b-2)를 기록한다. 그 CPU 는 프로그램 실행 관리 테이블(9a)에 의해 10a-3 또는 10b-3에 각각 프로그램이 헤더 어드레스를 설정한다.
위 동작이 완료될 대 프로그램 실행이 개시되어 프로그램 실행 동작을 제15도의 흐름도에 따라 아래에 설명한다.
우선, 처음 개시할 때에만 실행되는 프로그램이 있는가의 여부를 판단하여(f71), 처음 개시할 때에만 실행되는 프로그램이 존재하지 않을 경우 반복실행하는 프로그램을 실행하는 처리로 관리를 이동시킨다(f77). 개시할 때 실행되는 프로그램이 존재할 경우 개시 NO.를 첫번째 어드레스에 설정하고(f72), 프로그램 실행 개시 어드레스를 그 NO.에 대응되는 어드레스에 설정하며, 그 프로그램을 END명령가지 실행한다(f74). 그 다음, 그 해당 NO.를 하나씩 증가시키면서(f75) 소정회수 P까지 처리를 반복한다(f76).
스텝 f76에서 전체 실행을 완료할 때 반복실행되는 프로그램을 스텝 f77∼f81에서 동일하게 실행한다.
반복실행되는 프로그램 실행이 스텝 f81에서 완료될 때 소정의 END 처리를 행하여 스텝 f77의 처리로 이동한다. 즉, 매회 실행되는 프로그램만을 매회 처리하게 된다.
제13도의 1(2)에서 나타낸 바와 같이 프로그램 “BK2”와 “BK3”의 실행사이에서 프로그램 “BK6”의 실행이 추가될 경우 프로그램이 반복실행되는 프로그램 실행 관리 테이블(10b)의 내용을 사전에 변경시켜 두는 것이 바람직하다.
다음으로 실시예 3에 대하여 설명한다.
제16도는 주변기기(1)에서 각 화일의 스캔 타임의 표시예를 나타낸 것이다.
제17도는 각 화일의 스캔 타임 메모리(11)의 구성을 나타낸 것이다.
이 도면에서, 부호 11a는 프로그램이 처음에 개시할 때에만 실행되는 스캔 타임이 격납되고, 처음 개시할 때에만 실행되는 스캔 타임 테이블이며, 처음에 개시할 때에만 프로그램이 실행되는 프로그램 실행 관리 테이블(10a)에 등록된 프로그램 개수(10a-1)의 스캔타임이 격납되어 있다.
반면에, 부호 11b는 프로그램이 반복 실행되는 스캔 타임이 격납된 매회 실행되는 스캔 타임 테이브리며, 프로그램이 반복 실행되는 프로그램 실행 관리 테이블(10b)에 등록된 프로그램 개수(10b-1)의 스캔 타임이 격납되어 있다.
제18도는 각 프로그램 화일의 스캔 타임을 측정하는 동작을 나타낸 흐름도이다. 이 도면에서, 동작 f73a, f74a, f74b, f78a, f79a 및 f79b는 제15도에 나타낸 f71∼f81의 동작에 추가되어 있다.
그 다음으로, 동작에 대하여 설명한다.
그 동작을 실행하는 기본방법은 실시예 2에서와 동일하나, 초기 실행의 경우 개시 어드레스를 설정하여(f73), 그 타이머의 측정치를 0(zero)으로 설정하고(f73a), 프로그램을 실행하며(f74), 그 타이머 값을 스캔 타임으로하여(f74a), 그 스캔 타임을 각 화일의 스캔 타임 메모리에 격납한다(f74a). 반복실행되는 프로그램의 실행에 있어서도 동일하며 f78a, f79a 및 f79b에서의 처리를 추가하는 것이 바람직하다.
주변기기(1)에서는 정기적으로 각 화일마다 스캔 타임 메모리의 내용을 판독하여 표시한다.
그 다음으로, 실시예 4를 설명ㅎ나다.
제19도는 주변기기에서 공통포인터(pointer)의 설정예를 나타낸 것이다. 제20도는 공통포인터와 로컬 포인터를 사용할 때의 프로그램 예를 나타낸 것으로, 각 명령의 기능은 위에서 설명한 종래타입의 프로그램에서와 동일하다. 제21도는 포인터 관리 테이블(12)의 구성을 나타내며, 제22도는 JMP명령을 처리하는 동작을 나타낸 흐름도이다.
그 다음으로, 관련된 동작에 대해서 설명한다.
우선, 공통포인터의 개시 NO.를 제19도에 나타낸 바와 같이 주변기기에 설정한다.
소정의 포인터 NO. 이후의 포인터는 각 프로그램에 의해 공통적으로 사용된 포인터를 나타낸다. 즉, 제20도에서, PO에서 P299까지의 포인터는 각 프로그램마다 사용할 수 있으며, 포인터 NO.P300은 각 프로그램에서 의해 공통적으로 사용할 수 있다. 따라서, 메모리 할당은 한 방법으로만 할 수 있다. 그 다음 CPU는 각 프로그램 화일의 내용을 첵크하여 포인터 테이블(8a)과 포인터 관리 테이블(12)을 작성한다. 포인터 관리 테이블(12)에서는 각 프로그램의 포인터가 개시하는 포인터 테이블의 헤드 어드레스와, 공통포인터가 개시하는 포인터 테이블의 헤더 어드레스를 격납한다.
그 다음으로, JMP명령이 검출될 때, 제22도에 나타낸 흐름도 마다 처리를 행한다.
우선, 포인터 NO.를 그 프로그램에서 판독하여(f141), 셀프 프로그램(self program)의 포인터 NO.가 존재하는 시퀀스 프로그램 어드레스를 포인터 관리 테이블(12)과 포인터 테이블(8a)에서 산출한다(f142). 그 다음, 포인터의 설정을 행할지의 여부를 판단하여(f143), 포인터 설정을 행할 경우 소정의 어드레스로 점핑하는 조작을 행하여(f141), 처리를 완료한다. 포인터 설정을 행하지 않는 것으로 f143에서 판단할 경우 공통포인터가 확보될 수 있는지의 여부를 판단하여(f145), 확보될 수 있을 경우, 점핑을 f144에서 동일하게 행한다. 역으로 확보될 수 없을 경우 에러를 나타내는 신호를 발생한다(f146).
다음에 실시예 5를 설명한다.
제23도는 화일 데이타 관리 메모리(13)의 내용을 나타낸 것이다.
이 도면에서, 부호 13-1은 현재 선택한 화일 데이타의 헤더 어드레스를 나타내며, 부호 13a-1∼13a-q는 처음에 개시할 때에만 실행되는 프로그램에 대응되는 화일 데이타의 헤더 어드레스를 나타낸다. 또, 부호 13b-1∼13a-r은 반복 실행되는 프로그램에 대응되는 화일 데이타의 헤더 어드레스를 나타낸다. 제24도는 프로그램 실행 동작을 나타낸 흐름도이다. 이 도면에서, f73a-1 및 f78a-1의 처리를 제18도에 나타낸 처리에 추가한다.
제25도는 정수를 화일 데이타에 전송하는 MOV명령을 실행하는 동작을 나타낸 흐름도이다.
그 다음으로, 그 관련동작을 설명한다. 우선, 프로그램 실행전에 화일 데이타 관리 메모리(13)를 작성한다.
프로그램 실행 관리 테이블(10)에 등록된 프로그램 이름과 동일한 이름을 가진 화일 데이타를 유저 메모리 관리 테이블(9)에서 찾아 이와같은 화일 데이타가 존재할 경우 그 데이타를 화일 데이타 관리 메모리(13)에서 차례로 등록시켜야 한다.
그 다음으로 제24도의 흐름도에 따라 프로그램 실행의 동작을 설명한다. 그 기본동작은 실시예 3에서와 동일하나, 처음에 개시할 때 실행하는 프로그램의 경우 개시 어드레스를 설정한다(f73). 그 다음 현(current) 화일 데이타 어드레스를 초기실행하는되는 프로그램 NO.1의 화일 데이타 어드레스에 설정시킨 다음(f73a-1), 다음 처리를 개시한다(즉 다음 처리로 이행한다).
반복 실행되는 프로그램의 경우(즉, 매회 실행을 하는 경우) 처음 f78a-1을 추가할 필요가 있다. 이 동작에 의해, 현(current)화일 데이타 어드레스에는 어느 하나의 프로그램과 동일한 이름을 가진 화일 데이타가 반드시 선택된다.
그 다음으로, 제25도에 따라 MOV명령 처리에 대하여 설명한다.
우선, 제1기기(first device)의 정수를 판독한 다음(f251) 제2기기의 화일 NO.를 판독하여(f252), 유저 메모리 할당데이터(15)의 화일 데이타 헤더 어드레스(15-2)에 의해 나타낸 값을 추가시켜 얻어진 어드레스에 데이타기록을 행한다(f253).
그 다음으로, 실시예 6에 의하여 설명한다.
제26도는 코멘트 관리 메모리(14)에 대하여 나타낸 것으로, 이 도면에서, 부호 14-1은 현재 선택중인 코멘트 헤더 어드레스를 나타내며, 부호 14a-1∼14a-q는 초기 실행되는 프로그램에 대응되는 화일 데이타의 헤더 어드레스를 나타낸다. 또, 부호 14b-1∼14b-r은 반복 실행되는 프로그램(즉, 매회 실행되는 프로그램)의 헤더 어드레스를 나타낸다. 제27도는 프로그램 실행의 동작을 나타낸 흐름도이다. 처리동작 f73a-2 및 f78a-2는 제24도에 나타낸 시퀀스에 추가시킨다.
제28도는 코멘트를 나타난 LEDC명령을 실행하는 동작을 나타내 흐름도이다.
다음으로, 그 관련동작에 대하여 설명한다.
우선, 그 프로그램을 실행하기 전에 코멘트 관리 테이블을 작성한다. 순서에 따라, 그 프로그램 실행 관리 테이블(10)에 등록된 프로그램과 동일한 이름을 가진 화일 데이타를 그 유저 메모리 관리 테이블(9)에서 찾아, 그 화일 데이타가 존재할 경우 그 데이타를 차례로 화일 데에타 관리 메모리(14)에 등록시킨다.
그 다음으로, 제27도에 따라 프로그램 실행동작을 설명한다.
기본동작은 실시예 5에서와 동일하나, 초기 실행되는 프로그램의 경우 현(current)화일 어드레스를 설정시켜(f73a-1), 초기 실행되는 프로그램 NO.i의 화일 데이타 어드레스에 현 코멘트 어드레스를 설정하여(f73a-2), 다음 처리를 개시한다.
매회 실행되는 프로그램의 경우에도 동일하게 처리 f78a-2를 추가시킨다.
이 동작에 의해, 현(current) 데이타 어드레스에는 프로그램과 동일한 이름을 가진 코멘트 데이타를 반드시 선택한다.
그 다음으로, 제28도에 따라 LEND명령의 실행에 대하여 설명한다. 그 해당기기의 코멘트 데이타를 현(current) 코멘트 어드레스에서 취출해서(f281) 그 코멘트 데이타를 표시부(display unit)에 표시한다.
위에서 설명한 바와 같이, 유저 메모리를 각 화일에 의해 분할하여 CPU로 격납시킬 수 있으므로 데이타의 변형 및 추가가 필요할 경우 다른 화일을 의식할 필요없이 조작을 실행할 수 있다. 또, 화일사이의 데이타의 연속성을 이 발명에 의한 화일의 기록수단에 의해 유지시킬 수 있으므로, 이 발명은 또 하드웨어 처리를 하는 시퀀스 프로그램 실행에도 적용할 수 있다.
또, 시동시에만 실행되는 블록등 실행조건을 임의로 지정할 수 있으므로, 처리시간의 낭비를 방지할 수 있어 최적 처리가 가능하게 되었다. 또, 프로그램을 새로 추가할 경우에도 그 조립이 대단히 용이하다.
또, 각 블록마다 처리하는데 요하는 시간을 잠시 할 수 있어 긴 처리시간을 요하는 블록을 용이하게 검출할 수 있으므로 처리시간을 효과적으로 단축시킬 수 있다.
더 나아가서, 각 블록간의 임의로 사용할 수 있는 로컬 포인터를 설정할 수가 있으므로 설계 개신전 각 블록마다 포인터 수를 할당할 필요가 없으며, 다수의 프로그래머에 의해 프로그램을 설계할 때의 효율을 향상시킬 수 있다.
또, 프로그램을 서로 스위칭(switching)시킬 때마다 화일 데이타를 자동적으로 스위칭되므로 화일 데이타를 임의로 각 프로그램에 의해 사용할 수 있다.
또, 프로그램을 서로 스위칭시킬 때마다 코멘트 데이타를 자동적으로 스위칭하므로 각 프로그램에서 필요에 따라 코멘트 데이타를 작성할 수 있다.
이 발명은 실시예에 따라 설명하였으나, 첨부한 청구범위는 여기에 한정되어 있는 것은 아니며, 이 발명의 구성 요지내에서 여러가지로 변형할 수 있다.
Claims (11)
- 자동 프로그래밍(automatic programming)을 실행할 때 처리되는 각 공정 또는 각 대상의 다수의 시퀀스 프로그램 및 공정 스캐듈(production schedule) 또는 처리 데이타(processing data) 등 사수의 데이타를 화일(files)로서 격납하는 유저 메모리(user memory)와,각 화일의 등록 데이타와 빈 격납 에리어 데이타(empty storage area data)에 대한 데이타를 격납하는 유저 메모리 관리 수단(user memory managemat means)과,주변기기에서 새 화일(new file)을 기록하는 기록수단 및 그 유저 메모리 관리수단의 내용에 응답하여 화일의 용량을 변경시키는 용량 변경 수단(capacity changing means)을 구성함을 특징으로 하는 프로그래머블 콘트롤러(programmable controller).
- 제1항에 있어서,그 유저 메모리 관리 수단은 그 유저 메모리내에 등록 데이타에 대한 데이타를 격납시키는 등록 에리어 관리 테이블(registered area management table)과,그 유저 메모리내에 빈 공간(empty space)을 관리하는 빈 에리어 관리 테이블(empty area management table)을 구성함을 특징으로 하는 위 프로그래머블 콘트롤러.
- 제1항에 있어서,그 용량 변경수단은 그 유저 메모리내에서 사용할 수 있는 빈 에리어(available empty area)의 크기를 첵크하여 사용할 수 있는 빈 에리어내에서 등록을 하도록 하거나 그 유저 메모리의 내용을 조정하여 더 큰 사용할 수 있는 빈 에리어를 형성하도록 작동함을 특징으로 하는 위 프로그래멉르 콘트롤러.
- 제3항에 있어서,그 용량 변경수단은 전 후 방향중 적어도 한 방향으로 그 유저 메모리내에서 격납된 플러싱(flushing)할 수 있도록 함을 특징으로 하는 위 프로그래머블 콘트롤러.
- 지정 프로그램(specified program)이 존재하는지의 여부를 판단하고,그 지정 프로그램이 존재할 경우 빈 에리어(empty area)가 그해당 화일에 바로 인접하여 존재하고 있는지의 여부를 판단하여,빈 에리어가 존재할 경우 그 요구 데이타의 추가용량이 빈 빈 용량인지의 여부를 판단하고,그 요구 데이타의 추가용량이 빈 용량이 아니거나 빈 용량이 그 해당화일 바로 뒤에 존재하지 않는 것으로 판단될 때, 더 작은 어드레스를 각각 지닌 지정 프로그램 앞의 프로그램과 지정 프로그램을 전방으로 보내며,그 지정프로그램에 이어서 더 큰 어드레스를 각각 가진 프로그램을 후방으로 보내어 그 프로그램의 용량을 변경시킴을 특징으로 하는 위 프로그램 용량 변경방법.
- 제5항에 있어서,등록관리 및 빈 에리어 관리의 기록을 유지시켜, 전방 또는 후방 이행스텝을 실해할 때 그 스텝의 판단에 따라 빈 에리어 관리 및 기록 관리에 대한 위 기록을 재조절함을 특징으로 하는 위 프로그램 용량 변경방법.
- 자동 프로그래밍(automatic programming)을 실행할 때 처리되는 각 공정 또는 각 대상의 다수의 시퀀스 프로그램 및 공정 스케듈 또는 처리 데이타 등 다수의 데이타를 화일로서 격납하는 유저 메모리(user memory)와,각 화일의 격납장소(storage space), 속성(attribute) 또는 용량에 대한 데이타를 격납하는 유저 메모리 관리 테이블(user memory management table)과,주변기기에서 새 화일(new file)을 기록하는 기록수단과,그 화일 각각의 용량을 변경하는 유저 메모리 관리 테이블의 내용에 응답하는 용량 변경수단과,초기에 실행하는 프로그램과 매회 실시한느 프로그램을 적어도 확인함으로서 프로그램 실행을 관리하는 프로그램 실행 관리 테이블과,유저 메모리(user memory)에 격납된 다수의 시퀀스 프로그램간에 필요한 시퀀스 프로그램만을 선택적으로 실행하는 제어수단을 구성함을 특징으로 하는 프로그래머블 콘트롤러.
- 자동 프로그래밍을 실행할 때 처리하는 각 공정 또는 각 대상의 다수의 시퀀스 프로그램 및 공정스케듈 또는 처리데이타 등 다수의 화일로서 격납되는 유저 메로리(user memory)와,각 화일의 격납장소, 속성 또는 용량에 대한 데이타를ㅕㅕ 격납하는 유저 메모리 관리 테이블(user memory management table)과,주변기기에서 새 화일(new file)을 기록하는 기록수단과,위 유저 메모리 관리 테이블의 내용에 응답하여 그 화일 각각의 용량을 변경하는 용량 변경수단과,실행하는 프로그램을 등록하여 프로그램 실행을 관리하는 프로그램 실행 관리 테이블과,위 화일 각각의 스캔 타임(scan time)을 격납하는 스캔 타임 메모리(scan time memory) 및 그 프로그램 실행 관리 테이블과 스캔 타임 메모리에 응답하여 각 화일의 확인 된 시퀀스 프로그램을 실행하는 데 필요한 시간을 감시하는 제어수단을 구성함을 특징으로 하는 프로그래머블 콘트롤러.
- 자동 프로그래밍을 실행할 때 처리되는 공정 도는 각 제어대상의 다수의 프로그램 및 공정 스케듈 또는 처리데이타 등 다수의 데이타를 화일로서 격납하는 유저 메모리(user memory)와, 각 화일의 격납장소, 속성 또는 용량에 대한 데이타를 격납하는 유저 메모리 관리 테이블(user memory management table)과,주변기기에서 새 화일(new file)을 기록하는 기록수단과,그 화일 각각의 용량을 변경시키는 용량 변경수단과,프로그램 실행을 관리하는 프로그램 실행 관리 테이블과,포인터(pointer)로 격납하는 포인터 테이블(pointer table)과,그 포인터 테이블에 그 어드레스를 격납하여 적어도 공통의 포인터를 관리하는 포인터 관리 테이블(pointer management table)과,그 포인터 테이블과 포인터 관리 테이블에 응답하여 각 시퀀스 프로그램에만 효과적인 로컬 포인터(local pointers) 또는 전 시퀀스 프로그램에 공통적으로 이용할 수 있는 공통의 포인터를 선택적으로 실행하는 제어수단을 구성함을 특징으로 하는 프로그래머블 콘트롤러.
- 자동 프로그래밍을 실행할 때 처리되는 각 공정 또는 각 제어대상에 대한 다수의 시퀀스 프로그램 및 공정스케듈 또는 처리 데이타 등 다수의 데이타를 화일로서 격납하는 유저 메모리(user memory)와,각 화일의 격납장소, 속성 또는 용량에 대한 데이타를 격납하는 유저 메모리 관리 테이블(user memory management table)과,주변기기로부터 새로운 화일을 기록하는 기록수단(write means)과,각 화일의 용량을 변경시키는 용량 변경수단과,프로그램 실행을 관리하는 프로그램 실행 관리 테이블과,화일 데이타를 관리하는 화일 데이타 관리 테이블과,그 프로그램 실행 관리 테이블에 응답하여 제1시퀀스 프로그램이 제2시퀀스 프로그램에 스위칭할 때 동기하여, 화일 데이타 관리 테이블과 유저 메모리 관리 테이블이 데이타 화일을 스위칭하는 제어수단을 구성함을 특징으로 하는 프로그래머블 콘트롤러.
- 자동프로그래밍을 실행할 때 처리되는 각 공정 또는 각 제어대상에 대한 다수의 시퀀스 프로그램 및 공정스케듈 또는 처리 데이타 등 다수의 데이타가 화일로서 격납되는 유저 제모리(user memory)와,각 화일의 격납장소(storage space), 속성 또는 용량에 대한 데이타를 격납하는 유저메모리 관리 테이블과,주변기기에서 새 화일을 기록하는 기록수단과,그 화일 각각의 용량을 변경시키는 용량 변경수단과,프로그램 실행을 관리하는 프로그램 실행 관리 테이블과,코멘트(comments)를 관리하는 코멘트 관리 테이블 및 그 프로그램 실행 관리 테이블에 응답하여 제1시퀀스 프로그램이 제2시퀀스 프로그램에 스위칭(switching)할때 동기하여, 그 코멘트 관리 테이블이 코멘트 화일을 스위칭하는 제어수단을 구성함을 특징으로 하는 프로그래머블 콘트롤러.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP00120394A JP3251414B2 (ja) | 1994-01-11 | 1994-01-11 | プログラマブルコントローラおよびそのプログラム容量変更方法 |
JP94-1203 | 1994-01-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR950024040A KR950024040A (ko) | 1995-08-21 |
KR0137311B1 true KR0137311B1 (ko) | 1998-06-01 |
Family
ID=11494910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019950000330A KR0137311B1 (ko) | 1994-01-11 | 1995-01-10 | 프로그래머블 콘트롤러 및 그 프로그램 용량 변경방법 |
Country Status (6)
Country | Link |
---|---|
US (1) | US5610809A (ko) |
JP (1) | JP3251414B2 (ko) |
KR (1) | KR0137311B1 (ko) |
DE (1) | DE19500626A1 (ko) |
GB (1) | GB2285527B (ko) |
HK (1) | HK1009657A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100817364B1 (ko) * | 2006-04-05 | 2008-03-26 | 미쓰비시덴키 가부시키가이샤 | 프로그래머블 로직 컨트롤러의 주변 장치 및 그 프로그램작성 방법 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6749604B1 (en) * | 1993-05-10 | 2004-06-15 | Arthrocare Corporation | Electrosurgical instrument with axially-spaced electrodes |
KR100300776B1 (ko) * | 1996-01-17 | 2001-09-06 | 칼 하인쯔 호르닝어 | 자동화 장치 |
AU1849397A (en) * | 1996-02-06 | 1997-08-28 | Fisher-Rosemount Systems, Inc. | System and method for managing a transaction database of records of changes to field device configurations |
JP4001461B2 (ja) * | 1999-01-25 | 2007-10-31 | 三菱電機株式会社 | プログラマブルコントローラの周辺装置 |
DE19946096A1 (de) * | 1999-09-27 | 2001-04-12 | Mannesmann Vdo Ag | Steuergerät, insbesondere für ein Kraftfahrzeug |
US7822495B2 (en) | 2002-04-15 | 2010-10-26 | Fisher-Rosemount Systems, Inc. | Custom function blocks for use with process control systems |
JP5066185B2 (ja) * | 2007-08-27 | 2012-11-07 | 株式会社アドバンテスト | シーケンス制御装置および試験装置 |
JP5574688B2 (ja) * | 2009-12-10 | 2014-08-20 | 東洋電機製造株式会社 | プログラマブルコントローラのコメント情報ダウンロード装置 |
CN103838679B (zh) * | 2012-11-22 | 2017-08-04 | 中兴通讯股份有限公司 | 一种缓存处理方法及装置 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4281392A (en) * | 1979-05-01 | 1981-07-28 | Allen-Bradley Company | Memory circuit for programmable machines |
US4484303A (en) * | 1979-06-19 | 1984-11-20 | Gould Inc. | Programmable controller |
EP0038703A3 (en) * | 1980-04-22 | 1983-10-05 | Westinghouse Electric Corporation | Solid state data acquisition and data retrieval system |
JPS58222310A (ja) * | 1982-06-21 | 1983-12-24 | Omron Tateisi Electronics Co | 状態パタ−ン比較機能を備えたプログラマブル・コントロ−ラ |
JPH01205203A (ja) * | 1988-02-10 | 1989-08-17 | Mitsubishi Electric Corp | プログラマブルコントローラのプログラム管理方式 |
JPH0233653A (ja) * | 1988-07-25 | 1990-02-02 | Mitsubishi Electric Corp | プログラマブル制御装置 |
JPH0293742A (ja) * | 1988-09-30 | 1990-04-04 | Toshiba Corp | データファイルの未使用領域再配置方式 |
JPH02140825A (ja) * | 1988-11-21 | 1990-05-30 | Fujitsu Ltd | プログラムの再配置処理方法 |
JPH02259910A (ja) * | 1989-03-31 | 1990-10-22 | Yaskawa Electric Mfg Co Ltd | Nc加工プログラムのファイル管理方式 |
JPH03222047A (ja) * | 1990-01-29 | 1991-10-01 | Nec Software Ltd | 領域管理方式 |
EP0532643B1 (en) * | 1990-06-04 | 1998-12-23 | 3Com Corporation | Method for optimizing software for any one of a plurality of variant architectures |
US5339411A (en) * | 1990-12-21 | 1994-08-16 | Pitney Bowes Inc. | Method for managing allocation of memory space |
GB2251323B (en) * | 1990-12-31 | 1994-10-12 | Intel Corp | Disk emulation for a non-volatile semiconductor memory |
GB2251324B (en) * | 1990-12-31 | 1995-05-10 | Intel Corp | File structure for a non-volatile semiconductor memory |
-
1994
- 1994-01-11 JP JP00120394A patent/JP3251414B2/ja not_active Expired - Lifetime
- 1994-12-28 US US08/365,191 patent/US5610809A/en not_active Expired - Lifetime
-
1995
- 1995-01-05 GB GB9500146A patent/GB2285527B/en not_active Expired - Fee Related
- 1995-01-10 KR KR1019950000330A patent/KR0137311B1/ko not_active IP Right Cessation
- 1995-01-11 DE DE19500626A patent/DE19500626A1/de not_active Withdrawn
-
1998
- 1998-09-01 HK HK98110348A patent/HK1009657A1/xx not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100817364B1 (ko) * | 2006-04-05 | 2008-03-26 | 미쓰비시덴키 가부시키가이샤 | 프로그래머블 로직 컨트롤러의 주변 장치 및 그 프로그램작성 방법 |
Also Published As
Publication number | Publication date |
---|---|
JP3251414B2 (ja) | 2002-01-28 |
KR950024040A (ko) | 1995-08-21 |
GB2285527B (en) | 1998-04-01 |
HK1009657A1 (en) | 1999-06-04 |
GB2285527A (en) | 1995-07-12 |
DE19500626A1 (de) | 1995-07-20 |
GB9500146D0 (en) | 1995-03-01 |
US5610809A (en) | 1997-03-11 |
JPH07210217A (ja) | 1995-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4189781A (en) | Segmented storage logging and controlling | |
US4080651A (en) | Memory control processor | |
KR0137311B1 (ko) | 프로그래머블 콘트롤러 및 그 프로그램 용량 변경방법 | |
US4080652A (en) | Data processing system | |
US4126893A (en) | Interrupt request controller for data processing system | |
KR970002637A (ko) | 멀티프로세서 시스템 | |
US20080270855A1 (en) | Method For Detecting Memory Error | |
KR970002621A (ko) | 최적화장치 | |
WO2009104330A1 (ja) | メモリ制御方法及び装置、メモリアクセス制御方法、コンピュータプログラム、記録媒体 | |
US4197588A (en) | Segmented storage logging and controlling for random entity selection | |
US4975872A (en) | Dual port memory device with tag bit marking | |
JPH10214203A (ja) | 情報処理装置 | |
US4198681A (en) | Segmented storage logging and controlling for partial entity selection and condensing | |
JP6812637B2 (ja) | プログラマブルコントローラシステム、その開発支援装置、ターゲット装置 | |
US11809750B1 (en) | Automated overlay regrouping | |
JPH05297911A (ja) | シーケンスコントローラ用シーケンス制御回路 | |
JPS59158450A (ja) | プログラムテスト装置 | |
JPH1125006A (ja) | メモリテスト装置 | |
JP2716254B2 (ja) | リストベクトル処理装置 | |
JPH11212606A (ja) | プログラム作成装置及びプログラムモニタ装置 | |
JP3098501B2 (ja) | ソースステップ実行方法およびその装置 | |
JP2798492B2 (ja) | リストベクトル処理装置 | |
TW202014899A (zh) | 記憶體履歷管理系統 | |
KR100545654B1 (ko) | 시스템 시동 후 디스크에 존재하는 파일의 무결점을감지하는 방법 | |
JPH01286199A (ja) | 書替え可能な不揮発性メモリ書替え装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20020130 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |