KR19990001075A - 순차기능도(sfc) 해석 및 그를 이용한 시퀸스 제어방법 - Google Patents

순차기능도(sfc) 해석 및 그를 이용한 시퀸스 제어방법 Download PDF

Info

Publication number
KR19990001075A
KR19990001075A KR1019970024279A KR19970024279A KR19990001075A KR 19990001075 A KR19990001075 A KR 19990001075A KR 1019970024279 A KR1019970024279 A KR 1019970024279A KR 19970024279 A KR19970024279 A KR 19970024279A KR 19990001075 A KR19990001075 A KR 19990001075A
Authority
KR
South Korea
Prior art keywords
task
sfc
transition
output
input
Prior art date
Application number
KR1019970024279A
Other languages
English (en)
Other versions
KR100243331B1 (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 윤덕용
Priority to KR1019970024279A priority Critical patent/KR100243331B1/ko
Publication of KR19990001075A publication Critical patent/KR19990001075A/ko
Application granted granted Critical
Publication of KR100243331B1 publication Critical patent/KR100243331B1/ko

Links

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
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Abstract

본 발명은 SFC 를 이용한 시퀀스 제어방법에 관한 것으로서, SFC프로그램을 해석하여, 스텝이 타스크로 생성되어 실행될 때 필요한, 각 천이 및 스텝에 대한 소정의 정보를 생성하는 해석단계; SFC 내의 스텝 개수 만큼의 엘리멘트(element)를 가지는 큐(queue)를 생성하고, 큐에 스텝 고유번호를 저장하는 큐생성단계; SFC 내의 스텝 마다 하나씩 할당되며 스텝을 타스크로 생성한 스텝타스크가 수행되는 조건을 나타내는 비트 패턴을 저장하는 EFG를 스텝 개수만큼 생성하는 단계; SFC 내의 각 스텝을 다중처리 운영체제에 의해 다중처리되는 타스크로 생성하는 타스크생성단계; 및 맨 먼저 수행되어야 하는 첫 번째 스텝 타스크를 실행시켜 소정의 타스크가 모두 수행되도록 하는 타스크실행단계를 포함함이 바람직하다.
본 발명에 의하면, SFC의 구조가 중첩되더라도 그대로 구현이 가능하다. 또한 변경된 SFC 구조에 대해 별도의 작업스케쥴링 등이 필요치 않아 시스템의 설치, 시운전, 유지, 보수가 용이하며, 각 스텝이 독립된 타스크로 존재하므로 각 스텝별로 디버깅(debugging )이 용이하고, 프로그램의 수정, 추가 및 삭제가 편리하다.

Description

순차기능도(SFC) 해석 및 그를 이용한 시퀀스제어방법
본 발명은 시퀀스 제어방법에 관한 것으로서, 특히 시퀀스 흐름제어기 설계 및 구현에 있어 PLC용 프로그래밍 언어의 국제표준인 IEC 1131-3의 SFC로 표기된 프로그램을 해석하는 프로그램해석방법 및 상기 해석된 프로그램을 이용하여 시퀀스 흐름을 제어하기 위한 시퀀스 제어방법에 관한 것이다.
일반적으로 제어시스템(control system)내의 각 단위요소들은 내부에서 각각의 시퀀스 흐름 제어(sequence flow control)를 하게 된다. 그리고 제어 소프트웨어의 전형적인 기능으로는 작업의 순서를 정하는 것, 시스템의 상태를 감시(monitor)하는 것, 실시간으로 시스템의 동적인 상태를 결정하는 것 등이 있다. 기존의 LLD(Ladder Logic Diagram)는 이러한 시스템의 작업순서를 구성하는데 이용되어 왔다. 그것들은 PLC(Programmable Logic Controller)의 입출력 프로시져(procedure)들을 지정하고, 이들을 반복적으로 수행하는 일들을 한다. 그러나 상기 LLD는 시스템의 크기가 커짐에 따라 그 복잡성이 훨씬 심해져서 문제가 발생했을 경우 해당 문제를 찾는 일이 상당히 어려웠고, 시스템의 사양이 변하게 되면 대부분의 내용을 바꾸어야하는 경우가 많았다.
이러한 LLD의 한계를 극복하기 위해 PLC 업체들은 여러 가지의 PLC용 프로그래밍(programming) 언어들을 개발해 왔다. 이러한 여러 가지 언어들 사이의 호환성과 규격통일을 위해 IEC(International Electrotechnical Commission)에서 IEC 1131을 만들게 되었고, 이 규격중에 전체 시스템의 흐름을 표시하는 언어들 중의 하나가 순차기능챠트(Sequential Function Chart:이하 SFC라 함)이다. 그러나 상기 SFC 내부구조가 복잡해지거나 서로 다른 성격의 분기가 중첩되면 전체 흐름을 이어가는데 어려움이 있고, 작업(job) 스케쥴러(scheduler)와 같은 별도의 제어기를 두어 작업 스텝을 관리해야 하는 번거로움으로 인해, 시스템의 설치, 시운전, 유지, 보수가 용이하지 못하다. 그리고 작업 스텝(step)이 많아질수록 상기 스케쥴러의 부하(load)도 함께 늘어나 스케쥴러의 부하로 인해 정작 필요한, 각 스텝을 실행할 시간이 부족하여 작업능률이 저하된다.
본 발명이 이루고자하는 기술적 과제는, 상기 SFC로 표기된 순차 프로그램을 수행함에 있어 별도의 스케쥴러없이 SFC 각 스텝들이 전체의 흐름을 자체적으로 제어하면서 수행될 수 있도록 하기 위해, 각 스텝들을 별도의 타스크(task)로 생성하고, 상기 SFC로 표기된 프로그램을 해석하는 프로그램해석방법 및 상기 해석된 프로그램을 이용하여 실행에 필요한 데이터를 만들어 전체 시퀀스 흐름을 자체적으로 제어하는 시퀀스 제어방법을 제공함에 있다.
도 1은 IEC 1131-3에서 제시한 PLC용 프로그래밍 언어들 중의 하나인 SFC로 표기된 프로그램의 한 예를 도시한 것이다.
도 2는 상기 도 1에 제시된 SFC의 한 예를 원시코드로 표시한 것이다.
도 3은 도 2와 같이 SFC가 천이를 기준으로 하여 상기 천이에 대한 입력스텝과 출력스텝 및 천이가 일어나는 천이조건 정보가 나타나도록 원시코드로 표현될 때, SFC 를 이용한 시퀀스 제어방법을 흐름도로 도시한 것이다.
도 4는 SFC 원시프로그램을 해석하는 해석기(translator)의 동작을 흐름도로 도시한 것이다.
도 5a 내지 도 5c는 도 2에 도시된 SFC 원시코드를 해석기로 해석하여 생성된 데이터를 도시한 것이다.
도 6은 SFC의 스텝을 타스크로 생성한 후, 상기 해석기를 통해 생성된 데이터를 이용하여 상기 타스크를 실행하는 실행기(executer)의 동작을 흐름도로 도시한 것이다.
상기의 기술적 과제를 만족하기 위한 본 발명에 의한, IEC 1131-3 SFC 가 천이(transition)를 기준으로 하여 상기 천이에 대한 입력스텝(input step)과 출력스텝 및 상기 천이가 일어나는 천이조건 정보가 나타나도록 소정의 SFC 프로그램으로 표현될 때 상기 SFC 프로그램을 해석하는 방법은, 사용자가 정한 상기 스텝 고유번호(ID)를 일련번호로 매핑하는 매핑단계; 상기 천이 각각에 대해, 입력스텝 개수와 상기 매핑된 입력스텝 고유번호 어레이 및 출력스텝 개수와 상기 매핑된 출력스텝 고유번호 어레이를 생성하는 단계; 상기 SFC 내의 전체 스텝들 상호 간의 입출력 관계를 나타내는 테이블을 생성하는 단계; 상기 천이 각각에 대해, 천이조건 파라미터들과 그 천이조건 연산자를 해석하는 단계; 상기 각 스텝에 대해, 입출력 천이개수와 기설정된 상기 입출력천이의 고유번호 어레이를 작성하는 단계; 및 각 스텝이 타스크로 생성될 때, 상기 스텝 타스크가 동작시작할 조건을 나타내는 마스크값을 계산하는 단계를 포함함이 바람직하다.
상기의 다른 기술적 과제를 만족하기 위한 본 발명에 의한, IEC 1131-3 SFC 가 천이(transition)를 기준으로 하여 상기 천이에 대한 입력스텝(input step)과 출력스텝 및 상기 천이가 일어나는 천이조건 정보가 나타나도록 소정의 SFC 프로그램으로 표현될 때 상기 SFC 를 이용한 시퀀스 제어방법은, 상기 SFC프로그램을 해석하여, 상기 스텝이 타스크로 생성되어 실행될 때 필요한, 각 천이 및 스텝에 대한 소정의 정보를 생성하는 해석단계; 상기 SFC 내의 스텝 개수 만큼의 엘리멘트(element)를 가지는 큐(queue)를 생성하고, 상기 큐에 상기 스텝 고유번호를 저장하는 큐생성단계; 상기 SFC 내의 스텝 마다 하나씩 할당되며 상기 스텝을 타스크로 생성한 스텝타스크가 수행되는 조건을 나타내는 비트 패턴을 저장하는 EFG(Event Flag Group )를 스텝 개수만큼 생성하는 단계; 상기 SFC 내의 각 스텝을 다중처리 운영체제에 의해 다중처리되는 타스크로 생성하는 타스크생성단계; 및 맨 먼저 수행되어야 하는 첫 번째 스텝 타스크를 실행시켜 소정의 타스크가 모두 수행되도록 하는 타스크실행단계를 포함함이 바람직하다.
그리고 상기 해석단계에서 생성되는 정보는, 각 천이에 대한, 입출력스텝 개수, 상기 입출력스텝 고유번호의 어레이, 천이조건 파라미터 및 천이조건 연산자; 각 스텝에 대해서는 입출력천이 개수, 상기 입출력천이 고유번호의 어레이 및 상기 스텝이 타스크로 표시될 때 상기 타스크가 펜드할 조건; 및 상기 SFC 내의 스텝들 간의 입출력관계를 나타낸 정보이다.
또한 상기 타스크 생성단계에서 생성되는 타스크의 실행은, 상기 생성된 큐에서 할당된 자신의 고유번호를 받는 단계; 상기 EFG에 설정된 동작시작 조건이 만족될 때 까지 기다리는 펜딩단계; 상기 EFG에 설정된 동작시작 조건이 만족되면, 상기 스텝이 수행해야 할 스텝코드를 실행하는 코드실행단계; 상기 해석단계에서 생성된, 상기 스텝의 출력 천이조건을 순차적으로 검색하여 상기 출력 천이조건을 만족하는지 검사하는 단계; 상기 출력 천이조건이 만족하는 천이가 있으면 해당 천이의 출력스텝에 해당하는 스텝의 고유번호를 찾는 단계; 상기 입출력스텝 관계를 나타내는 정보를 참조하여, 상기 찾아진 출력스텝의 고유번호에 상응하는 EFG에 저장될 마스크값을 계산하는 단계; 및 상기 계산된 마스크값을 상기 해당 스텝타스크의 EFG에 보내어 저장하는 단계를 포함함을 특징으로 한다.
이하에서 첨부된 도면을 참조하여 본 발명을 상세히 설명하고자 한다. 도 1은 IEC 1131-3에서 제시한 PLC용 프로그래밍 언어들 중의 하나인 SFC로 표기된 프로그램의 한 예를 도시한 것이다. 도 1을 참조하여 상기 SFC에 대해 설명하면, 네모상자로 표시된 것(S1, S2, S3, ...)을 SFC에서는 스텝(STEP) 이라고 부르고, 가로로 짧게 그어진 막대(T1, T2, T3, ...)로 표시되어 상기 스텝과 스텝을 연결하는 것을 천이(transition)라고 한다. 각 스텝은 IEC 1131에서 제시된 다른 언어에 의해 시스템의 어떤 동작내지는 작업을 기술하게 되고, 천이는 도 1에서 C1, C2, C3, ... 등으로 표시된 주어진 천이조건(transition condition)을 검사하면서 다음 스텝으로 흐름을 연결시키는 기능을 한다. 이 때 천이조건이 참(TRUE)인 경우에만 다음 스텝으로 흐름이 진행될 수 있고, 거짓(FALSE)인 경우는 참(TRUE)이 될 때까지 그곳에 머물러 있게 된다. 이러한 조건은 하나의 이진 산술식(a boolean expression)으로 표현된다.
그리고 SFC에서 제공하는 흐름의 종류에는 크게 3가지가 있는데, 그 첫째로는 도 1에 도시된 'S1-T1-S2'와 같이 한 스텝(S1)이 완료되면, 다음 스텝으로 가기위한 천이조건(C1)을 검사하고, 상기 천이조건(C1)이 참이면 다음 스텝으로 진행되는 것이다. 두 번째 흐름으로는 도 1에 도시된 바를 참조하면, 'S2-T2-S3', 'S2-T2-S4', 'S2-T2-S5'와 같이 하나의 스텝이 완료된 후에 다음 천이조건을 검사하고, 상기 천이조건이 참일 경우, 여러개의 스텝이 동시에 수행되는 경우이다. 이 경우를 동시분기(Simultaneous Branch)라고 하고, 도 1에 도시된 횡으로 겹줄(100)로 표시된 것이 이에 해당한다. 이때, 동시에 수행되는 스텝들간에는 별도의 우선권(priority)이라든가 하는 제약은 전혀 없고, 동시에 독립적으로 수행된다. 마지막 세 번째 흐름의 경우는 도 1의 'S5→T4→S7' 또는 'S5→T5→S8' 또는 'S5-T6-S9'과 같이 여러개 중에 하나의 작업만을 수행하는 경우이다. 이와 같은 경우를 선택분기(Selection Branch)라 하고, 도 1에서는 횡으로 한줄로 표시것(110)이 이에 해당한다. 이 때 흐름의 연결은 S5 스텝 수행후에 연결된 다음 천이들 중에 가장 왼쪽의 것부터 차례로 조건을 검사하여 참인 조건에 해당하는 길로 흐름이 연결된다.
상기 설명한 바와 같은 SFC의 사양(specification)에 있어 본 발명에서 의도하는 바는, 상용의 lex, yacc 프로그램을 이용하여 만들어진 해석기(translator )가 상기 SFC 원시코드(source code)를 해석해서 만든 데이터를 이용해서 SFC 각 스텝(step)을 실시간 다중처리 운영시스템에서 운영하는 하나의 타스크로 만든다. 그리고나서 각 스텝이 자신의 작업을 독립적으로 수행할 수 있도록 하고, 상기 스텝들 사이의 흐름을 연결시키기 위해 운영시스템에서 제공하는 EFG(Event Flag Group)라는 도구를 이용한다. 상기 EFG는 32개의 비트들로 구성된 하나의 변수(variable)로서 각 비트의 SET/RESET(또는 1/0) 여부에 따라 프로그램을 진행하거나 기다릴수 있도록 하는 것이다.
그리고 도 2는 상기 도 1에 제시된 SFC의 한 예를 원시코드(source code)로 표시한 것으로서, 상기 SFC 원시코드를 설명하면 다음과 같다. 먼저 도 2의 ①②는 SFC내의 스텝개수 및 천이개수를 나타내고 있으며, 반드시 표시할 필요는 없다. 그리고 도 2의 ③~⑬까지의 천이리스트(transition list)에서, 각 줄의‘’를 기준으로 해서 '’앞에 나온 스텝리스트(step list)는 해당 천이의 입력스텝을, 뒤에 나온 스텝리스트는 출력스텝을 정의한다. 또한 다음에 있는 하나의 이진 산술식은 천이조건을 지정한다. ④와 같은 경우에는 입력스텝은 하나이지만, 출력 스텝은 3개인 천이가 되는 것이고, ⑬의 경우는 반대로 입력스텝이 3개이고, 출력 스텝은 하나인 경우이다. 이러한 입,출력 step의 개수는 뒤에 설명되는 타스크의 실행에 있어서 중요한 값으로 사용된다.
도 3은 상기 도 2와 같이 SFC가 천이(transition)를 기준으로 하여 상기 천이에 대한 입력스텝(input step)과 출력스텝(output step) 및 상기 천이가 일어나는 천이조건(transition conditon) 정보가 나타나도록 원시코드로 표현될 때, 상기 SFC 를 이용한 시퀀스 제어방법을 흐름도로 도시한 것이다.
먼저, 상기 SFC 원시코드로 된 SFC 프로그램을 해석하여, 상기 스텝이 타스크로 생성되어 실행될 때 필요한, 각 천이 및 스텝에 대한 소정의 정보를 생성한다.(300단계) 이를 위해서는 소정의 해석기(translator)가 필요하며, 상기 해석기를 실핼하기 위해서는 상기 해석기와 관련된 변수를 초기화하고 상기 해석기를 실행시킨다. 상기 해석기는 도 4에서 보다 상세히 설명하기로 한다.
해석기를 통해 타스크실행에 필요한 정보가 생성되고 나면, 상기 SFC 내의 스텝 개수 만큼의 엘리멘트(element)를 가지는 큐(queue)를 생성하고, 상기 큐에 상기 스텝 고유번호(step ID number)를 저장한다.(310단계) 즉 상기 큐의 첫 번째 element 에는 '0'을 저장하고, 두 번째 element에는 '1'을, 마찬가지로 계속해서 상기 큐의 마지막 element 에는 상기 '스텝개수-1'을 저장한다. 이 값들은 상기 스텝들이 나중에 실행가능한 타스크로 생성될 때, 각 타스크가 받아가게될 자신의 고유번호(ID number)가 되는 것이다.
그 다음에는 타스크가 실행될 때 타스크 간의 흐름을 제어하기 위해 각 타스크에서 사용할 EFG들을 스텝 개수 만큼 만든다.(320단계) 상기 EFG는 상기 SFC 내의 스텝 마다 하나씩 할당되며, 상기 스텝 타스크가 대기(pend)상태에서 동작(active)상태로 되는 조건을 나타내는 비트 패턴(bit pattern)을 저장한다.
그리고 상기 SFC 내의 각 스텝을 다중처리 운영체제에 의해 다중처리되는 타스크로 생성한다.(330단계) 상기 각 스텝을 타스크로 생성할 때, 상기 타스크의 내부실행과정은 도 6에 도시되어 있으며, 도 6에서 보다 상세히 설명하기로 한다.
이렇게 하여 시퀀스 제어에 필요한 자원은 모두 만들어지게 되면, 일정한 주기를 가지고(340단계), 맨 먼저 수행되어야 하는 첫 번째 스텝 타스크에게 신호를 주면(360단계), SFC 흐름은 진행된다. 이 때 상기 첫 번째 스텝 타스크에게 보내는 신호는 미리 정해진 방법에 의해 이루어지는데, 예를 들어 사용자가 시작버튼을 누르는 방식으로 첫 번째 타스크의 시작을 제어할 수 있다.(350단계) 이는 첫 번째 스텝 타스크의 경우는 이전 스텝이 없기 때문에 특별히 외부에서 신호를 주게 되는 것이고, 또한 외부에서 전체 흐름의 주기를 일정하게 유지할 수 있도록 하는 기능도 한다. 그리고 상기 첫 번째 타스크가 실행이 되면, 실행된 타스크는 다음에 실행될 타스크에게 신호를 전달하여 다음 타스크가 실행되게 하는 방식으로 하여, 실행되어야 할 모든 타스크가 실행된다.(370단계) 이렇게 실행이 끝나면 상기 과정(340단계 내지 370단계)을 다시 반복할 것인지 판단하여(380단계), 동작완료여부를 결정하게 된다.
도 4는 SFC 원시프로그램을 해석하는 해석기(translator)의 동작을 흐름도로 도시한 것으로서, lex 및 yacc 과 같은 자구해석 및 구문해석 프로그램을 통해 도 2의 SFC 소스코드(source code)를 입력으로 하여 도 5a 내지 도 5c에 도시된 바와 같은 데이터를 생성한다. 도 5a는 각 천이(transition)에 대한 정보를 도시한 것으로서, 입력스텝 개수, 출력스텝 개수, 상기 입력스텝의 고유번호 어레이, 상기 출력스텝의 고유번호 어레이, 천이조건 파라미터 및 천이조건 연산자(operator)로 이루어진다. 도 5b는 각 스텝(step)에 대한 정보를 정보를 도시한 것으로서, 입력천이 개수, 상기 입력천이의 고유번호 어레이, 상기 출력천이 개수, 상기 출력천이의 고유번호 어레이 및 상기 스텝이 타스크로 표시될 때 상기 타스크가 펜드(pend)할 조건을 나타내는 마스크(mask) 값으로 이루어진다. 도 5c는 상기 도 5a 및 도 5b의 데이터를 이용하여 상기 SFC 내의 스텝들 간의 입출력관계를 이중 어레이(StepTable [i][j])로 도시한 것으로서, 가로축은 입력스텝을, 세로축은 출력스텝을 나타내며, 해당 입출력은 스텝은 굵은 도트(dot)로 표시하고 있다.
도 4를 참조하여 상기 해석기의 동작을 설명하기로 한다. 도 2에 도시된 바와 같이 IEC 1131-3 SFC 가 천이(transition)를 기준으로 하여 상기 천이에 대한 입력스텝(input step)과 출력스텝 및 상기 천이가 일어나는 천이조건 정보가 나타나도록 소정의 SFC 프로그램으로 표현된다.
먼저 사용자가 정한 상기 스텝 고유번호(ID)를 0으로 시작하는 일련번호로 매핑(mapping)한다.(400단계) 이렇게 하는 이유는 상기 큐의 element 넘버링과 상기 큐에 저장되는 스텝 고유번호를 일치시켜 데이터처리를 간단하게 하기 위함이다. 그 다음에 상기 천이 각각에 대해, 도 2에 도시된 원시코드의 ③~⑬까지의 천이리스트를 해석하면서, 입력스텝 개수와 상기 매핑된 입력스텝 고유번호 어레이(array) 및 출력스텝 개수와 상기 매핑된 출력스텝 고유번호 어레이를 생성한다.(410단계) 이렇게 하여 상기 천이리스트를 해석하는 과정에서 도 5c에 도시된 바와 같이 상기 SFC 내의 전체 스텝들 상호 간의 입출력 관계를 찾아내어 이중어레이 형태의 테이블로 생성할 수 있다.(420단계)
그리고 상기 천이 각각에 대해, 이진 산술식을 천이조건으로 인식하여 천이조건 파라미터(parameter)들과 그 천이조건 연산자(operator)를 해석한다.(430단계) 상기 천이조건의 경우에 있어서는 하나의 파라미터만으로 구성되는 경우와 2개의 파라미터를 가지는 하나의 이진 산술식으로 되는 경우가 있는데, 천이과정에서 연산자의 존재 여부에 따라 이를 결정하게 된다. 파라미터가 하나인 경우는 연산자가 없게 되고, 이는 다음의 실행되는 타스크가 해당 천이조건을 검사하는 과정에서 참조하게 된다.
도 2의 ③~⑬까지의 천이리스트를 모두 해석하고 나면 역으로 스텝 하나하나에 대해, 입출력 천이개수와 기설정된 상기 입출력천이의 고유번호 어레이를 작성한다.(440단계) 그리고나서 상기 스텝의 입출력 관계를 나타내는 테이블을 기초로 스텝 타스크가 동작을 시작할 조건을 나타내는 마스크값을 계산한다.(450단계) 즉 하나의 스텝에 대해 자신의 입력 스텝리스트를 가지고 그 개수만큼의 SET(1)된 비트 값들을 가지는‘pend mask value’를 만든다. 예를 들어, 도 1의 스텝 S3의 경우에 그 입력 스텝은 S1 하나이므로 pend mask value는 0x01 =‘1’이 되고, S11의 경우는 입력스텝이 S2, S9, S10 3개이므로 0x0111 = ‘7’이 되게 되는 것이다. 이러한 pend mask value는 스텝타스크가 수행되기 위한 조건을 결정하는데 사용된다. 이에 대한 상세한 설명은 다음의 도 6의 타스크 실행에 대한 설명부분에서 하기로 한다.
도 6은 SFC의 스텝을 타스크로 생성한 후, 상기 해석기를 통해 생성된 데이터를 이용하여 상기 타스크를 실행하는 실행기(excuter)의 동작을 흐름도로 도시한 것이다. 먼저, 실행될 타스크가 만들어지면 상기 생성된 큐에 넣어놓은 자신의 고유번호를 받는다.(600단계) 하나의 실행 타스크는 하나의 고유번호(ID number)만을 받고 그것을 자신의 고유번호로 사용하게 된다. 그리고 상기 고유번호는 실행 타스크가 사용하게 되는 EFG 어레이, 본 스텝의 입출력 천이 어레이, 본 스텝의 입출력 스텝 테이블 등의 인덱스(index)로 사용된다.
일단 고유번호를 받은 실행 타스크는 상기 EFG에 설정된 동작시작 조건, 즉 앞서 만들어 놓은 pend mask value 가 만족될 때 까지 기다린다.(610단계) 상기 EFG는 앞서 설명한 대로 32 비트로 구성된 하나의 변수이고, 임의의 비트패턴(bit-pattern)을 지정하고 그 값이 만들어질때까지 타스크가 기다릴수 있는 도구이다. 즉, 어떤 조건을 정해진 비트패턴으로 지정한 다음에 그 조건이 만족되면 해당 EFG에 그 비트패턴에 해당하는 값을 던져주고, 이를 기다리는 타스크는 미리 그 비트패턴으로 자신의 EFG를 세팅(setting )한 채로 그 값을 기다리다가 그 값이 전달되면 자신의 작업을 수행하는 것이다. 이러한 도구는 상용의 실시간 다중처리 시스템에서 제공되는 것으로 특별히 VRTX/OS에서는 이를 EFG(Event Flag Group)이라 부른다.
상기 EFG에 설정된 동작시작 조건이 만족되면, 상기 스텝이 수행해야 할 스텝코드를 실행하기 전에 사용자로부터 타스크 수행을 중지하거나 멈추게 하는 명령을 받는다.(620단계) 상기 EFG에 설정된 동작시작 조건이 만족되면, 상기 스텝이 수행해야 할 스텝코드를 실행한다.(630단계) 상기 해석단계에서 생성된, 상기 스텝의 출력 천이조건을 순차적으로 검색하여 상기 출력 천이조건을 만족하는지 검사한다.(640단계)
상기 출력 천이조건이 만족하는 스텝이 있으면(650단계), 상기 스텝의 고유번호를 찾는다.(660단계) 상기 입출력스텝 관계를 나타내는 정보를 참조하여, 상기 찾아진 출력스텝의 고유번호에 상응하는 EFG에 저장될 마스크값을 계산한다.(670단계) 상기 계산된 마스크값을 상기 해당 스텝타스크의 EFG에 보내어 저장한다.(680단계)
한편, 도 1의 SFC를 수행하는 과정을 도 6의 흐름도를 통해 설명해 보기로 한다. 일단 앞서 설명한대로 첫 번째 실행타스크인 실행 타스크 #0에 대한 시작 신호는 주 프로그램(main program)이 일정한 주기를 가지고 주게 된다. 실행 타스크 #0는 미리 정해진 비트패턴의 값을 가지고 EFG[0]에 기다리고 있다.(610단계) main program에서는 이 정해진 값을 EFG[0]에 던져 주게 되어 실행 타스크 #0가 실행되게 되는 것이다.(620단계)
실행 타스크 #0가 자신의 스텝코드를 실행하고 나면(630단계), 천이를 통해 만들어진 출력천이 개수와 고유번호 어레이를 이용하여 해당 천이조건들을 검색한다.(640단계) 이때에는 해석기에서 만들어 놓은 파라미터 데이터를 사용하여 검색할 천이조건의 파라미터 개수와 그 연산자 형태(operator type)에 따라 필요한 연산을 하고, 그 결과가 참인지, 거짓인지를 판단한다.(650단계)
만일 참(true)인 천이조건이 있으면, 그 천이번호(transition number)의 출력 스텝개수와 출력 스텝 고유번호를 검색한다.(660단계) 그리고 나서 다음에 던져줄 값을 계산하여(670단계), 이를 다음 EFG에 전달한다.(680단계) 예를 들어, 도 1의 S1 다음에 T1 의 조건이 참이었다면, T1의 출력 스텝이 3개이고 그들이 S2,S3,S4 이므로 EFG[2], EFG[3], EFG[4]에 각각 0x01 =‘1’이라는 값을 전달하게 된다. 여기서‘1’을 던지게 되는 이유는, 던지는 타스크는 자기 자신뿐이므로 ‘1’이 되는 것이고, S2,S3,S4 입장에서는 그들 각각의 입력 스텝이 각 하나이므로 실행 타스크 #2, #3, #4에서는 각각이 EFG[2], EFG[3], EFG[4]에 0x01 =‘1’값을 가지고 펜드(pend)되어 있게 된다.
또 다른 경우에 도 1의 S11과 같은 경우는 EFG[11]에 펜드(pend)하게 될때, 입력 스텝의 개수가 3개이므로 0x0111 =‘7’이라는 값을 가지고 펜드하게 되고, S2, S9, S10에 해당하는 실행 타스크 #2, #9, #10 각각이 하나씩의 ‘1’을 전달해 주게 된다. 단, 이 경우에는 천이 T10이 공유되어 있는 상태이므로 T10의 입력 스텝고유번호 어레이를 보고, 해당하는 스텝 고유번호들의 위치를 찾아 해당 비트를 SET(1)시키게 되는 것이다.
한편 실행 타스크의 선두에서 pend mask value에 펜드(pend)하는 조건에 있어서, 도 1의 S10과 같은 경우는 입력 스텝의 개수가 3개이지만, 입력천이 개수 역시 3개이므로 이 경우에는 0x0111 ='7'이라는 값에 펜드하기는 하지만, 3개중에 한 비트 만이라도 값을 받게 되면 프로그램을 수행할수 있게 된다. 이것이 위에서 설명한 S11과 다른 점이다. 즉, S10은 입력스텝 3개 중에 하나만이라도 작업이 완료되고 해당 천이가 참이면 수행이 되어야 하고, S11은 입력스텝 3개가 모두 완료되고 천이조건이 참이 되어야 수행될수 있다는 의미이다.
이와 같은 일련의 과정을 통해 SFC 하나의 흐름이 처음부터 끝까지 이어지게 되고, 맨 마지막에서는 출력스텝이 없으므로 EFG로의 포스트(post)를 안하면 된다. 각 실행 타스크들의 우선순위(priority )는 동일한 값을 가지게 되므로 실시간 다중처리 운영시스템에서 적당한 시간을 나누어 사용하면서 다중처리가 일어나게 되고, main program 은 다른 타스크들보다 더 높은 우선순위를 가지고 전체를 관장하게 된다. 이러한 우선순위의 지정 역시 상용의 실시간 다중처리 운영시스템에서 제공되어지는 것이다.
한편, 도 6에 도시된 바와 같은 형태를 갖는 동일한 형태(내부 실행 program code)를 가진 실행기를 복수개의 스텝에 그대로 적용할 수 있다. 즉, 도 6의 참조번호 630 부분만 스텝별로 별도의 함수(function)로 처리하면 되고 나머지 부분의 program code는 완전히 동일하며, 단지 각 스텝 자신의 고유번호(ID number)를 여러 가지 어레이(array)의 인덱스 번호(index number)로 사용하면서 실행기를 실행시킬수 있다. 이러한 장점을 통해 사용자 프로그램이 어떤 형태로 변경되더라고 융통성(flexible)있게 대응할수 있고, 시스템 개발에 따르는 복잡성을 배제할수 있다.
본 발명에 의하면, SFC내의 하나의 스텝을 하나의 타스크로 만들어줌으로써 SFC의 구조가 중첩되더라도 그대로 구현이 가능하다. 또한 변경된 SFC 구조에 대해 별도의 작업스케쥴링(job scheduling ) 등이 필요치 않아 시스템의 설치, 시운전, 유지, 보수가 용이하며, 각 스텝이 독립된 타스크로 존재하므로 각 스텝별로 디버깅(debugging )이 용이하고, 프로그램의 수정, 추가 및 삭제가 편리하다.
그리고 SFC 원시코드를 해석할 때, 해석기가 필요한 데이터들을 미리 만들어 놓고, 실제 시스템이 수행될때에는 이를 참조하는 형태로 되어 있어 실행시에 별도의 작업이 거의 필요치 않고 각 실행 타스크 내에서도 천이조건을 출력부분에서만 검색함으로써 실행시간을 줄일수 있다. 또한 상용 실시간 다중처리 운영시스템에서 제공하는 타스크 간의 통신도구(예: queue, EFG 등)을 사용함으로써 흐름을 제어하는데 드는 부담(overhead )를 최소화할 수 있으며 시스템의 안정성을 높일 수 있다.

Claims (6)

  1. IEC 1131-3 SFC 가 천이(transition)를 기준으로 하여 상기 천이에 대한 입력스텝(input step)과 출력스텝 및 상기 천이가 일어나는 천이조건 정보가 나타나도록 소정의 SFC 프로그램으로 표현될 때 상기 SFC 프로그램을 해석하는 방법에 있어서,
    사용자가 정한 상기 스텝 고유번호(ID)를 일련번호로 매핑하는 매핑단계;
    상기 천이 각각에 대해, 입력스텝 개수와 상기 매핑된 입력스텝 고유번호 어레이 및 출력스텝 개수와 상기 매핑된 출력스텝 고유번호 어레이를 생성하는 단계;
    상기 SFC 내의 전체 스텝들 상호 간의 입출력 관계를 나타내는 테이블을 생성하는 단계;
    상기 천이 각각에 대해, 천이조건 파라미터들과 그 천이조건 연산자를 해석하는 단계;
    상기 각 스텝에 대해, 입출력 천이개수와 기설정된 상기 입출력천이의 고유번호 어레이를 작성하는 단계; 및
    각 스텝이 타스크로 생성될 때, 상기 스텝 타스크가 동작시작할 조건을 나타내는 마스크값을 계산하는 단계를 포함함을 특징으로 하는 SFC 프로그램 해석방법.
  2. 제1항에 있어서, 상기 매핑단계의 일련번호는
    0부터 시작하는 일련번호임을 특징으로 하는 SFC 프로그램 해석방법.
  3. IEC 1131-3 SFC 가 천이(transition)를 기준으로 하여 상기 천이에 대한 입력스텝(input step)과 출력스텝 및 상기 천이가 일어나는 천이조건 정보가 나타나도록 소정의 SFC 프로그램으로 표현될 때 상기 SFC 를 이용한 시퀀스 제어방법에 있어서,
    상기 SFC프로그램을 해석하여, 상기 스텝이 타스크로 생성되어 실행될 때 필요한, 각 천이 및 스텝에 대한 소정의 정보를 생성하는 해석단계;
    상기 SFC 내의 스텝 개수 만큼의 엘리멘트(element)를 가지는 큐(queue)를 생성하고, 상기 큐에 상기 스텝 고유번호를 저장하는 큐생성단계;
    상기 SFC 내의 스텝 마다 하나씩 할당되며 상기 스텝을 타스크로 생성한 스텝타스크가 수행되는 조건을 나타내는 비트 패턴을 저장하는 EFG(Event Flag Group )를 스텝 개수만큼 생성하는 단계;
    상기 SFC 내의 각 스텝을 다중처리 운영체제에 의해 다중처리되는 타스크로 생성하는 타스크생성단계; 및
    맨 먼저 수행되어야 하는 첫 번째 스텝 타스크를 실행시켜 소정의 타스크가 모두 수행되도록 하는 타스크실행단계를 포함함을 특징으로 하는 시퀀스 제어방법.
  4. 제3항에 있어서, 상기 타스크실행단계는
    첫 번째 타스크부터 실행하여 타스크를 모두 수행한 후, 소정의 시간 지연을 두고 사용자의 시작신호에 의해 다시 상기 첫 번째 타스크부터 수행함을 특징으로 하는 시퀀스 제어방법.
  5. 제3항에 있어서, 상기 해석단계에서 생성되는 정보는
    각 천이에 대한, 입출력스텝 개수, 상기 입출력스텝 고유번호의 어레이, 천이조건 파라미터 및 천이조건 연산자;
    각 스텝에 대해서는 입출력천이 개수, 상기 입출력천이 고유번호의 어레이 및 상기 스텝이 타스크로 표시될 때 상기 타스크가 펜드할 조건; 및
    상기 SFC 내의 스텝들 간의 입출력관계를 나타낸 정보이며,
    상기 타스크 생성단계에서 생성되는 타스크의 실행은
    상기 생성된 큐에서 할당된 자신의 고유번호를 받는 단계;
    상기 EFG에 설정된 동작시작 조건이 만족될 때 까지 기다리는 펜딩단계;
    상기 EFG에 설정된 동작시작 조건이 만족되면, 상기 스텝이 수행해야 할 스텝코드를 실행하는 코드실행단계;
    상기 해석단계에서 생성된, 상기 스텝의 출력 천이조건을 순차적으로 검색하여 상기 출력 천이조건을 만족하는지 검사하는 단계;
    상기 출력 천이조건이 만족하는 스텝이 있으면, 상기 스텝의 고유번호를 찾는 단계;
    상기 입출력스텝 관계를 나타내는 정보를 참조하여, 상기 찾아진 출력스텝의 고유번호에 상응하는 EFG에 저장될 마스크값을 계산하는 단계; 및
    상기 계산된 마스크값을 상기 해당 스텝타스크의 EFG에 보내어 저장하는 단계를 포함함을 특징으로 하는 시퀀스 제어방법.
  6. 제5항에 있어서, 상기 펜딩단계와 코드실행단계 사이에
    상기 EFG에 설정된 동작시작 조건이 만족되면, 상기 스텝이 수행해야 할 스텝코드를 실행하기 전에 사용자로부터 타스크 수행을 중지하거나 멈추게 하는 명령을 받는 단계를 더 구비함을 특징으로 하는 시퀀스 제어방법.
KR1019970024279A 1997-06-12 1997-06-12 순차기능도(sfc)해석 및 그를 이용한 시퀸스제어방법 KR100243331B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019970024279A KR100243331B1 (ko) 1997-06-12 1997-06-12 순차기능도(sfc)해석 및 그를 이용한 시퀸스제어방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970024279A KR100243331B1 (ko) 1997-06-12 1997-06-12 순차기능도(sfc)해석 및 그를 이용한 시퀸스제어방법

Publications (2)

Publication Number Publication Date
KR19990001075A true KR19990001075A (ko) 1999-01-15
KR100243331B1 KR100243331B1 (ko) 2000-08-01

Family

ID=19509320

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970024279A KR100243331B1 (ko) 1997-06-12 1997-06-12 순차기능도(sfc)해석 및 그를 이용한 시퀸스제어방법

Country Status (1)

Country Link
KR (1) KR100243331B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100423742B1 (ko) * 2000-10-31 2004-03-24 삼성중공업 주식회사 순차기능챠트에 의한 전용 제어 시스템
CN104503765A (zh) * 2014-12-31 2015-04-08 北京纵横机电技术开发公司 一种连续功能图编程方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100423742B1 (ko) * 2000-10-31 2004-03-24 삼성중공업 주식회사 순차기능챠트에 의한 전용 제어 시스템
CN104503765A (zh) * 2014-12-31 2015-04-08 北京纵横机电技术开发公司 一种连续功能图编程方法

Also Published As

Publication number Publication date
KR100243331B1 (ko) 2000-08-01

Similar Documents

Publication Publication Date Title
US5177420A (en) Method of and apparatus for generating control program
US5325530A (en) Controller for sequential programming tools executed in a parallel computing environment
US5926176A (en) Control program tracking and display system
US4852047A (en) Continuous flow chart, improved data format and debugging system for programming and operation of machines
US7302676B2 (en) Method for debugging flowchart programs for industrial controllers
US5504902A (en) Multi-language generation of control program for an industrial controller
EP0383506A2 (en) Method and system for mutual exclusive resource control
EP0709777A2 (en) Method of and apparatus for debugging multitask programs
CN104898546B (zh) 一种基于soc的plc在线调试系统和方法
CN112860362B (zh) 一种机器人自动化流程的可视化调试方法及调试系统
Shaw et al. Automatic planning and flexible scheduling: a knowledge-based approach
CN105137817B (zh) 控制程序处理器的片上系统的控制程序执行方法
WO2018210007A1 (zh) 一种虚拟控制器的组态调试器实现方法
KR100243331B1 (ko) 순차기능도(sfc)해석 및 그를 이용한 시퀸스제어방법
Bourne CML: a meta-interpreter for manufacturing
US5239476A (en) Multi-level state language controller for multi-threaded machine control
JP2022542488A (ja) 異種埋め込み型の表形式化動作プロセスの処理および実行方法および装置
KR100190131B1 (ko) 로봇제어방법 및 장치
KR100423742B1 (ko) 순차기능챠트에 의한 전용 제어 시스템
US20040049622A1 (en) Programming tool
KR100348196B1 (ko) 시퀀스 제어방법
US11188061B2 (en) Configuration of an automation system
JP2533370B2 (ja) 制御プログラム作成方法
US20040098240A1 (en) State machine modelling
JPS62293305A (ja) Faコントロ−ラのソフトウエア開発装置

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: 20050831

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee