KR102200592B1 - Plc 명령어 스캔 분할 처리 방법 - Google Patents
Plc 명령어 스캔 분할 처리 방법 Download PDFInfo
- Publication number
- KR102200592B1 KR102200592B1 KR1020190000386A KR20190000386A KR102200592B1 KR 102200592 B1 KR102200592 B1 KR 102200592B1 KR 1020190000386 A KR1020190000386 A KR 1020190000386A KR 20190000386 A KR20190000386 A KR 20190000386A KR 102200592 B1 KR102200592 B1 KR 102200592B1
- Authority
- KR
- South Korea
- Prior art keywords
- scan
- command
- time
- special
- scan time
- Prior art date
Links
Images
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/18—Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
- G05B19/414—Structure of the control system, e.g. common controller or multiprocessor systems, interface to servo, programmable interface controller
- G05B19/4148—Structure of the control system, e.g. common controller or multiprocessor systems, interface to servo, programmable interface controller characterised by using several processors for different functions, distributed (real-time) systems
-
- 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/18—Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
- G05B19/4093—Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by part programming, e.g. entry of geometrical information as taken from a technical drawing, combining this with machining and material information to obtain control information, named part programme, for the NC machine
-
- 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/18—Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
- G05B19/4155—Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by programme execution, i.e. part programme or machine function execution, e.g. selection of a programme
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Manufacturing & Machinery (AREA)
- General Physics & Mathematics (AREA)
- Automation & Control Theory (AREA)
- Geometry (AREA)
- Programmable Controllers (AREA)
Abstract
본 발명은 PLC에서 사용되는 명령어를 여러 스캔에 분할 처리하여 전체 시스템 스캔시간에 영향을 최소화할 수 있는 PLC 명령어 스캔 분할 처리 방법에 관한 것이다. 본 발명의 PLC 명령어 스캔 분할 처리 방법은 (A) 통신부의 초기화가 이루어지면, 프로그램의 연산을 시작하기 전에 입력접점의 값을 읽어서 메모리 영역에 저장하는 단계; (B) 상기 저장된 프로그램에 포함되는 특수 명령어를 여러 스캔에 분할 처리하여 프로그램 연산 처리하는 단계; 및 (C) 상기 프로그램의 연산이 종료하면 출력 이미지 영역에 저장된 데이터를 출력접점에 일괄 출력하고 스캔 앤드(END) 처리하는 단계를 포함할 수 있다.
Description
본 발명은 PLC에서 사용되는 명령어를 여러 스캔에 분할 처리하여 전체 시스템 스캔시간에 영향을 최소화할 수 있는 PLC 명령어 스캔 분할 처리 방법에 관한 것이다.
PLC(Programmable Logic Controller)의 기본적인 프로그램 수행 방식은 사용자가 작성한 프로그램을 처음부터 마지막 스텝까지 반복적으로 수행하는 방식이다. 이러한 일련의 과정을 프로그램 스캔(Scan)이라고 하며, 이때 수행된 시간을 스캔타임(Scan Time)이라고 부른다.
스캔타임 중 가장 많은 비중을 차지하는 요소는 사용자가 접점, 코일, 명령어 등을 조합해 작성한 프로그램을 처리하는 시간이며, 이는 전체 시스템 성능에 가장 큰 영향을 미치는 요소가 된다. 특히, 사용자 프로그램에 복잡한 연산 수행이 필요한 명령어가 사용되는 경우 처리를 위해 긴 시간이 필요하므로 해당 시점에 스캔이 튀는 현상이 발생한다.
이러한 현상은 주기적으로 통신이나 주변 기능을 처리해야 하는 PLC 성능에 치명적인 영향을 끼쳐 문제를 일으킬 수 있다.
도 1은 종래의 PLC 프로그램 수행 방법을 설명하기 위한 흐름도이다.
도 1을 참조하여 설명하면, PLC 시스템은 먼저 최초 전원이 온(ON)하여 회로의 기동이 시작되면, 통신부의 초기화 과정을 수행하게 된다(S10). 이 초기화 과정에서 하드웨어는 정상동작을 위한 대기상태가 된다.
이어서, PLC 시스템은 초기화가 이루어지면, 프로그램의 연산을 시작하기 전에 입력접점의 값을 읽어서 PLC 내부의 입력 이미지 메모리 영역에 저장한다(S20). 참고로, PLC 시스템은 외부기기와 입출력 신호를 송수신하기 위하여, 입력단자 및 출력단자와 각각 연결된 입력접점과 출력접점을 구비하고 있고, 각 접점은 내부 회로를 통해 중앙처리장치(Central Processing Unit: CPU)와 연결되어 있다.
이어서, 사용자에 의해 PADT(Programming And Debugging Tool) 등과 같은 디버깅 장치를 이용하여 작성한 프로그램을 연산 처리한다(S30).
그리고 프로그램의 연산이 종료하면 출력 이미지 영역에 저장된 데이터를 출력접점에 일괄 출력한 후(S40), 스캔 앤드(END) 처리한다(S50).
이처럼, 입력 이미지 영역 리프레시(Refresh) 과정(S20)부터 스캔 앤드 처리(S50)까지의 과정을 일반적으로 스캔이라고 하며, 이때 수행에 걸린 시간을 스캔타임이라고 한다.
이러한 스캔 구성 요소 중 가장 많은 처리 시간이 있어야 하는 것은 프로그램 연산 처리 과정이다.
도 2는 도 1에서 프로그램 연산 처리 과정을 설명하기 위한 실시예이다.
이때, 함수 수행시간 테이블에 기재된 접점의 수행 시간(0.1μs)은 입력접점과 출력접점에서 이루어지는 처리 시간이며, 코일의 수행 시간(0.1μs)은 PLC 내부에 구성되는 코일(릴레이 코일 등)에서 이루어지는 처리 시간이다. 또한, 일반 명령어의 수행 시간(10μs)은 프로그램에 포함되는 일반 명령어의 처리 시간을 나타내는 것으로, 도 1에서는 일 실시예로서 수행 시간이 10μs인 일반 명령어를 1개 기재하고 있으나, 실제 함수 수행시간 테이블에는 복수개의 일반 명령어 별로 각각 수행시간이 기재될 것이다. 또한, 특수 명령어의 수행 시간(20ms)은 프로그램에 포함되는 특수 명령어의 처리 시간을 나타내는 것으로, 도 1에서는 일 실시예로서 수행 시간이 20ms인 특수 명령어를 1개 기재하고 있으나, 실제 함수 수행시간 테이블에는 복수개의 특수 명령어 별로 각각 수행시간이 기재될 것이다.
도 2를 참조하여 설명하면, 작성된 프로그램은 사용자가 작성한 로직의 순서로 각 로직에 포함된 함수 단위의 명령어 들을 순차적으로 실행한다.
먼저, 로직 1의 명령어의 연산 및 알고리즘을 수행한다(S31). 로직 1은 예로서, 접점 100개, 코일 100개 및 일반 명령어 10개를 포함한다. 로직 1의 프로그램 연산에 필요한 전체 시간은 명령어 별로 미리 저장되어 있는 함수 수행시간 테이블을 참고하면 다음 수학식 1과 같이 유추할 수 있다.
이어서, 로직 2의 명령어의 연산 및 알고리즘을 수행한다(S32). 로직 2는 예로서, 접점 10개, 특수 명령어 1개를 포함한다. 로직 2의 프로그램 연산에 필요한 전체 시간은 명령어 별로 미리 저장되어 있는 함수 수행시간 테이블을 참고하면 다음 수학식 2와 같이 유추할 수 있다. 참고로, 특수 명령어는 복잡한 연산 또는 알고리즘을 가지고 있어 처리에 긴 시간이 필요한 명령어를 말한다.
이어서, 로직 3의 명령어의 연산 및 알고리즘을 수행한다(S33). 로직 3은 예로서, 접점 50개, 코일 150개 및 일반 명령어 50개를 포함한다. 로직 3의 프로그램 연산에 필요한 전체 시간은 명령어 별로 미리 저장되어 있는 함수 수행시간 테이블을 참고하면 다음 수학식 3과 같이 유추할 수 있다.
이어서, 로직 4의 명령어의 연산 및 알고리즘을 수행한다(S34). 로직 4는 예로서, 접점 100개, 코일 100개 및 일반 명령어 10개를 포함한다. 로직 4의 프로그램 연산에 필요한 전체 시간은 명령어 별로 미리 저장되어 있는 함수 수행시간 테이블을 참고하면 다음 수학식 4와 같이 유추할 수 있다.
이에 따라, 전체 프로그램 연산 처리 시간은 다음 수학식 5와 같이 유추할 수 있다.
이처럼, 도 1에서 S20, S40, S50 단계의 처리 시간은 PLC 시스템에 증설된 모듈에 CPU만 장착된 상태라면 그 과정의 처리 시간은 무시할 수 있을 정도의 짧은 시간이다.
그러나, 도 2의 로직 2와 같이 특수 명령어가 포함된 경우는 연산 처리에 긴 시간을 필요로 하기 때문에, 명령어가 수행되는 스캔에서 스캔시간이 튀는 문제점이 존재한다
본 발명은, 이와 같은 문제를 해결하기 위하여, PLC에서 사용되는 명령어를 여러 스캔에 분할 처리하여 전체 시스템 스캔시간에 영향을 최소화할 수 있는 PLC 명령어 스캔 분할 처리 방법을 제공하는 것을 목적으로 한다.
본 발명의 목적들은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있고, 본 발명의 실시예에 의해 보다 분명하게 이해될 것이다. 또한, 본 발명의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.
이와 같은 목적을 달성하기 위하여, 본 발명의 PLC 명령어 스캔 분할 처리 방법은 (A) 통신부의 초기화가 이루어지면, 프로그램의 연산을 시작하기 전에 입력접점의 값을 읽어서 메모리 영역에 저장하는 단계; (B) 상기 저장된 프로그램에 포함되는 특수 명령어를 여러 스캔에 분할 처리하여 프로그램 연산 처리하는 단계; 및 (C) 상기 프로그램의 연산이 종료하면 출력 이미지 영역에 저장된 데이터를 출력접점에 일괄 출력하고 스캔 앤드(END) 처리하는 단계를 포함할 수 있다.
또한, 상기 (B) 단계는 현재의 PLC 시스템에서 전체 명령어에 대한 전체 스캔시간을 산출하는 단계; 및 상기 산출된 전체 스캔시간을 기반으로 특수 명령어가 한 스캔 내에서 사용할 수 있는 스캔시간을 설정하는 단계를 포함할 수 있다.
또한, 상기 (B) 단계는 현재 수행해야 할 스텝 번호와 이전 실행 결과 정보를 이용하여 프로그램을 연산 처리를 수행하고, 상기 설정된 특수 명령어의 스캔시간 별로 특수 명령어 현재 스텝 조건에 맞는 함수를 실행하는 단계; 상기 현재 스텝 조건에 맞는 함수 실행 과정에서, 특수 명령어의 마지막 스텝에 해당되면, 특수 명령어의 처리를 종료하는 단계; 상기 현재 스텝 조건에 맞는 함수 실행 과정에서, 특수 명령어의 마지막 스텝에 해당되지 않으며, 다음 스텝 실행의 가능여부를 확인하는 단계; 상기 확인 결과, 다음 스텝 실행이 가능하지 않는 경우는 현재까지 실행한 스텝 번호와 결과를 메모리에 저장하고 특수 명령어 실행을 종료하는 단계; 및 상기 확인 결과, 다음 스텝 실행이 가능한 경우는 다음 스텝 수행이 가능한 상태이므로 현재 스텝 번호에 1을 증가시키고, 다음 스텝 조건에 맞는 함수를 설정된 특수 명령어의 스캔시간 동안 실행하는 단계를 포함할 수 있다.
또한, 상기 다음 스텝 실행의 가능여부는 설정된 특수 명령어의 스캔시간과 함수 수행시간 테이블을 참조하여 다음 판단조건에 의해 다음 스텝 실행이 가능한지 여부를 판단하며, 상기 판단 조건은 "(한 스캔 처리 가능시간 - 이미 사용한 시간 - 다음 스텝 실행시간) > 0 또는 <= 0" 인 것을 특징으로 할 수 있다.
또한, 상기 설정되는 특수 명령어의 스캔시간은 명령어 입력 오퍼랜드를 통해 사용자로부터 입력 받은 비율을 기반으로 조절할 수 있다.
또한, 상기 설정되는 특수 명령어의 스캔시간은 특수 명령어의 스캔시간이 상기 산출된 전체 스캔시간의 10% 미만 값으로 조절할 수 있다.
또한, 상기 설정되는 특수 명령어의 스캔시간은 일반 명령어와 특수 명령어의 비율, 일반 명령어의 전체 스캔시간, 특수 명령어의 전체 스캔시간 중 적어도 하나 이상의 조건을 포함하여 조절할 수 있다.
또한, 상기 설정되는 특수 명령어의 스캔시간은 일반 명령어의 비율이 클수록 특수 명령어의 스캔시간을 증가시킬 수 있다.
또한, 상기 설정되는 특수 명령어의 스캔시간은 전체 스캔시간이 클수록 특수명령어 스캔시간을 증가시킬 수 있다.
또한, 상기 설정되는 특수 명령어의 스캔시간은 코드 단위로 분할된 특수 명령어의 모든 스캔시간이 한 스캔 내에서 이루어질 수 있도록 특수 명령어의 스캔시간을 조절할 수 있다.
또한, 상기 (B) 단계는 특수 명령어 중 연산 처리시간이 미리 정의된 기준시간보다 길거나 코드 사이즈가 미리 정의된 기준값보다 많은 함수를 대상으로 분리된 한 코드에서 특수 명령어 처리 시간을 변경하여 특수 명령어의 분할되는 개수를 변경할 수 있다.
또한, 상기 (B) 단계는 특수 명령어에 따른 연산을 코드에 기반하여 여러 구간으로 분리한 뒤 한 스캔당 한 구간씩 분리된 코드가 실행될 수 있다.
전술한 바와 같은 본 발명에 의하면, 본 발명의 PLC 명령어 스캔 분할 처리 방법은 다음과 같은 효과를 얻을 수 있다.
첫째, 긴 수행시간이 필요한 명령어 처리에서도 PLC 시스템 전체 스캔시간에 변동성을 최소화할 수 있다.
둘째, 적용되는 시스템의 성능(스캔시간)에 맞춰 명령어 스캔 분할이 결정되므로 효율적인 운영이 가능한 효과가 있다.
상술한 효과와 더불어 본 발명의 구체적인 효과는 이하 발명을 실시하기 위한 구체적인 사항을 설명하면서 함께 기술한다.
도 1은 종래의 PLC 프로그램 수행 방법을 설명하기 위한 흐름도이다.
도 2는 도 1에서 프로그램 연산 처리 과정을 설명하기 위한 실시예이다.
도 3은 본 발명의 실시예에 따른 PLC 명령어 스캔 분할 처리 방법을 설명하기 위한 흐름도이다.
도 4는 도 3에서 특수 명령어를 여러 구간으로 한 스캔에 분할 처리하여 프로그램을 연산 처리하는 과정을 나타낸 제1 실시예이다.
도 5 및 도 6은 도 4의 코드 분할 명령어 처리 방법의 문제점을 해결하기 위한 제2 실시예이다.
도 2는 도 1에서 프로그램 연산 처리 과정을 설명하기 위한 실시예이다.
도 3은 본 발명의 실시예에 따른 PLC 명령어 스캔 분할 처리 방법을 설명하기 위한 흐름도이다.
도 4는 도 3에서 특수 명령어를 여러 구간으로 한 스캔에 분할 처리하여 프로그램을 연산 처리하는 과정을 나타낸 제1 실시예이다.
도 5 및 도 6은 도 4의 코드 분할 명령어 처리 방법의 문제점을 해결하기 위한 제2 실시예이다.
전술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술되며, 이에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 상세한 설명을 생략한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하기로 한다. 도면에서 동일한 참조부호는 동일 또는 유사한 구성요소를 가리키는 것으로 사용된다.
이하에서는, 본 발명의 바람직한 실시예에 따른 PLC 명령어 스캔 분할 처리 방법에 관하여 도면을 참조하여 상세하게 설명하도록 한다.
도 3은 본 발명의 실시예에 따른 PLC 명령어 스캔 분할 처리 방법을 설명하기 위한 흐름도이다.
도 3을 참조하여 설명하면, PLC 시스템은 먼저 최초 전원이 온(ON)하여 회로의 기동이 시작되면, 통신부의 초기화 과정을 수행하게 된다(S100). 이 초기화 과정에서 하드웨어는 정상동작을 위한 대기상태가 된다.
이어서, PLC 시스템은 초기화가 이루어지면, 프로그램의 연산을 시작하기 전에 입력접점의 값을 읽어서 PLC 내부의 입력 이미지 메모리 영역에 저장한다(S200). 참고로, PLC 시스템은 외부기기와 입출력 신호를 송수신하기 위하여, 입력단자 및 출력단자와 각각 연결된 입력접점과 출력접점을 구비하고 있고, 각 접점은 내부 회로를 통해 중앙처리장치(Central Processing Unit: CPU)와 연결되어 있다.
이어서, 사용자가 PADT(Programming And Debugging Tool) 등과 같은 디버깅 장치를 이용하여 작성한 프로그램에 포함되는 특수 명령어를 여러 스캔에 분할 처리하여 프로그램 연산 처리한다(S300)
그리고 프로그램의 연산이 종료하면 출력 이미지 영역에 저장된 데이터를 출력접점에 일괄 출력한 후(S400), 스캔 앤드(END) 처리한다(S500).
도 4는 도 3에서 특수 명령어를 여러 구간으로 한 스캔에 분할 처리하여 프로그램을 연산 처리하는 과정을 나타낸 제1 실시예이다. 이때, 도 4에서 설명하는 제1 실시예는 특수 명령어에 따른 복잡한 연산을 코드에 기반하여 여러 구간으로 분리한 뒤 한 스캔당 한 구간씩 분리된 코드가 실행되는 방식이다. 이를 통해 연산 처리에 긴 시간을 필요로 하는 특수 명령어를 실행하더라도 전체 시스템 스캔시간에 영향을 줄일 수 있도록 하는 방법이다.
도 4에서 도시하고 있는 것과 같이, PLC 시스템은 미리 정의된 시간 별로 여러 구간으로 분리하여 코드화 한다. 그리고 분리된 코드에 기반하여 한 스캔당 한 구간씩 미리 정의된 시간 동안 특수 명령어에 따른 연산 처리를 수행한다.
예로서, 특수 명령어 수행을 제외한 전체 스캔시간이 각각 200ms, 20ms, 1ms인 시스템에서 특수 명령어를 실행하는 경우를 설명한다. 이때, 특수 명령어를 실행하는데 필요한 시간은 10ms라 가정한다.
이 경우, 다음 표 1에서 나타내고 있는 것과 같이, 200ms의 스캔시간에 특수 명령어를 실행하는데 필요한 시간 10ms가 더해져 210ms의 스캔시간이 필요하게 된다. 또한, 20ms의 스캔시간에 특수 명령어를 실행하는데 필요한 시간 10ms가 더해져 30ms의 스캔시간이 필요하게 된다. 또한, 1ms의 스캔시간에 특수 명령어를 실행하는데 필요한 시간 10ms가 더해져 11ms의 스캔시간이 필요하게 된다.
특수 명령어를 제외한 전체 스캔시간 | 200 | 20 | 1 |
특수 명령어 스캔시간(코드 분할 전) | 10 | 10 | 10 |
전체 스캔시간 | 210 | 30 | 11 |
증가율(%) | 약 5% | 약 50% | 약 1000% |
단위: ms
표 1에서 나타내고 있는 것과 같이, 기존의 방법으로 특수 명령어가 포함된 프로그램을 실행시키게 되면, 전체 스캔시간은 전체 PLC 시스템의 평균 스캔시간보다 각각 5%, 50% 및 1000% 비율로 증가하는 것을 확인할 수 있다.
동일한 조건으로 도 4에서 도시하고 있는 것과 같이, 미리 정의된 시간 별로 여러 구간으로 분리하여 코드화 한 후, 분리된 코드에 기반하여 한 스캔당 한 구간씩 미리 정의된 시간 동안 특수 명령어에 따른 연산 처리를 수행하는 경우를 살펴보면 다음 표 2와 같다. 이때, 미리 정의된 시간은 1ms로서, 특수 명령어의 실행 스캔시간을 1ms로 10단계로 분할한 것으로 가정한다.
이 경우, 다음 표 2에서 나타내고 있는 것과 같이, 200ms의 스캔시간에 특수 명령어를 실행하는데 필요한 시간 1ms가 더해져 201ms의 스캔시간이 필요하게 된다. 또한, 20ms의 스캔시간에 특수 명령어를 실행하는데 필요한 시간 1ms가 더해져 21ms의 스캔시간이 필요하게 된다. 또한, 1ms의 스캔시간에 특수 명령어를 실행하는데 필요한 시간 1ms가 더해져 2ms의 스캔시간이 필요하게 된다.
특수 명령어를 제외한 전체 스캔시간 | 200 | 20 | 1 |
특수 명령어 스캔시간(코드 분할 후) | 1 | 1 | 1 |
전체 스캔시간 | 201 | 21 | 2 |
증가율(%) | 약 0.5% | 약 5% | 약 100% |
단위: ms
표 2에서 나타내고 있는 것과 같이, 제안된 방법으로 특수 명령어가 포함된 프로그램을 실행시키게 되면, 전체 스캔시간은 전체 PLC 시스템의 평균 스캔시간과 큰 증가가 없는 것을 알 수 있다. 이에 따라, 본 발명의 방법으로 PLC 시스템에서는 특수 명령어를 실행하는 경우 증가율이 작기 때문에 스캔이 튀는 현상을 제거할 수 있다.
한편, 200ms, 20ms의 스캔시간을 갖는 PLC 시스템에서는 특수 명령어를 실행하더라도 전체 스캔시간은 10% 내의 스캔시간만이 증가하기 때문에 스캔이 튀는 현상을 제거할 수 있다. 그러나 전체 스캔시간이 1ms인 PLC 시스템에서는 약 100%의 스캔시간 증가가 발생되는 것을 알 수 있다.
이처럼, 전체 스캔시간이 작은 경우의 문제점을 해결하기 위한 방법으로, 특수 명령어 분할을 10단계가 아닌 더 세분화한 경우에는 변동성은 제거될 수 있지만, 다음과 같은 이유로 새로운 문제점이 발생할 수 있다.
즉, 동일한 조건으로 도 4에서 도시하고 있는 것과 같이, 미리 정의된 시간 별로 여러 구간으로 분리하여 코드화 할 때, 10분할한 특수 명령어를 100분할할 경우를 살펴보면 다음 표 3과 같다. 이때, 미리 정의된 시간은 0.1ms로서, 특수 명령어의 실행 스캔시간을 0.1ms로 100단계로 분할한 것으로 가정한다.
이 경우, 다음 표 3에서 나타내고 있는 것과 같이, 200ms의 스캔시간 후 특수 명령어를 실행하는데 필요한 시간 0.1ms가 더해져 200.1ms의 스캔시간이 필요하게 된다. 또한, 20ms의 스캔시간 후 특수 명령어를 실행하는데 필요한 시간 0.1ms가 더해져 20.1ms의 스캔시간이 필요하게 된다. 또한, 1ms의 스캔시간 후 특수 명령어를 실행하는데 필요한 시간 0.1ms가 더해져 1.1ms의 스캔시간이 필요하게 된다.
특수 명령어를 제외한 전체 스캔시간 | 200 | 20 | 1 |
특수 명령어 스캔시간(코드 분할 후) | 0.1 | 0.1 | 0.1 |
전체 스캔시간 | 200.1 | 20.1 | 1.1 |
증가율(%) | 약 0.05% | 약 0.5% | 약 10% |
단위: ms
표 3에서 나타내고 있는 것과 같이, 제안된 방법으로 특수 명령어를 100분할 했을 경우, 모든 프로그램에 대해서 전체 스캔시간 증가율이 모두 작기 때문에 세분화한 분할을 통해 스캔이 튀는 현상을 완전히 제거할 수 있게 된다. 하지만, 분할한 만큼 특수 명령어 수행에 필요한 스캔횟수가 늘어났기 때문에 표 2에서 나타내고 있는 10분할한 경우보다 표 3에서 나타내고 있는 100분할한 경우는 90스캔이 더 필요하게 되는 문제점이 발생하게 된다. 예로서, 200ms의 스캔시간이 필요한 시스템에서 100스캔을 처리하기 위해서는 20s라는 시간이 필요하게 된다.
도 5 및 도 6은 도 4의 코드 분할 명령어 처리 방법의 문제점을 해결하기 위한 제2 실시예이다. 도 5 및 도 6에서 설명하는 제2 실시예는 특수 명령어 중 연산 처리시간이 길거나 코드 사이즈가 많은 함수를 대상으로 분리된 한 코드에서 특수 명령어 처리 시간을 변경하여 특수 명령어의 분할되는 개수를 변경한다. 이를 통해 특수 명령어의 연산 처리로 인해 발생되는 전체 스캔시간 증가율을 모두 작게 하여 연산 처리에 긴 시간을 필요로 하는 특수 명령어를 실행하더라도 전체 시스템 스캔시간에 영향을 줄일 수 있도록 하는 방법이다.
도 5를 참조하여 설명하면, PLC 시스템은 프로그램 연산 처리 중에 명령어 진입 후에 현재의 PLC 시스템에서 진입한 전체 명령어(특수 명령어, 일반 명령어)의 전체 스캔시간을 산출한다. 이때, 전체 스캔시간은 특수 명령어 전체 스캔시간 및 일반 명령어의 전체 스캔시간을 더한 전체 스캔시간을 산출한다. 그리고 산출된 전체 스캔시간을 기반으로 특수 명령어가 한 스캔 내에서 사용할 수 있는 스캔시간을 설정한다(S301).
예로서, PLC 시스템은 특수 명령어를 여러 구간으로 한 스캔에 분할 처리한 후, 특수 명령어 중 연산 처리시간이 길거나 코드 사이즈가 많은 함수를 대상으로, 코드를 분할한다. 이때, 코드를 분할하는 과정은 제1 실시예의 방법을 이용한다. 도 6(a)는 분할처리 하기 전 특수 명령어를 나타내고 있는 특수 명령어에 대한 코드 구성이며, 도 6(b)는 도 6(a)에서 코드 분할 후 특수 명령어에 대한 코드 구성을 나타낸 도면이다.
이어서, PLC 시스템은 도 6(b)에서 도시하고 있는 것과 같이 분할된 특수 명령어에 대하여, 분할된 함수 단위로 수행시간을 측정하여 저장한 함수 수행시간 테이블과 이를 기반으로 명령어가 동작할 수 있는 코드를 작성할 수 있다. 도 6(c)는 도 6(b)에서 분할된 특수 명령어에 대하여 함수 단위로 특수 명령어가 동작할 수 있는 코드 구성을 나타낸 도면이다. 도 6(c)에서, 함수 단위로 수행시간을 측정한 테이블 기반의 명령어 동작은 “swith()~case”문의 처리 코드로 변환된다.
이때, 설정되는 특수 명령어의 스캔시간은 명령어 입력 오퍼랜드를 통해 사용자에게 직접 이 비율을 설정 받아 변경할 수 있다. 그러나 이에 한정되지 않으며, 자동으로 스캔시간이 설정될 수도 있다. 예로서, 일반적으로 특수 명령어 스캔시간이 전체 스캔시간의 10% 미만 값이면 전체 스캔시간 증가율을 낮출 수 있다. 따라서, 특수 명령어의 스캔시간은 상기 산출된 전체 스캔시간을 이용하여 자동으로 설정될 수 있다. 즉, 전체 스캔시간 * 0.1(10%) = 특수 명령어 한 스캔 수행 시간으로 설정될 수 있다.
이어서, PLC 시스템은 현재 수행해야 할 스텝 번호와 이전 실행 결과 정보를 인스턴스 메모리나 글로벌 변수 등에서 가져온다(S302). 참고로 스텝 번호는 특수 명령어의 분할되는 분리된 코드에 기반하여, 한 스캔 동안 처리 가능한 복수의 코드에 연산 처리 순서를 기재한 번호이다.
그리고 PLC 시스템은 작성된 프로그램을 연산 처리를 수행하여, 설정된 특수 명령어의 스캔시간 별로 특수 명령어 현재 스텝 조건에 맞는 함수를 실행한다(S303).
현재 스텝 조건에 맞는 함수 실행 과정에서, 특수 명령어의 마지막 스텝에 해당되면(S304), 특수 명령어의 처리를 종료한다(S308).
그리고 현재 스텝 조건에 맞는 함수 실행 과정에서, 특수 명령어의 마지막 스텝에 해당되지 않으며(S304), 다음 스텝 실행의 가능여부를 확인한다. 이때, 다음 스텝 실행의 가능여부는 설정된 특수 명령어의 스캔시간과 함수 수행시간 테이블을 참조하여 미리 설정된 판단 조건에 의해 다음 스텝 실행이 가능한지 여부를 판단한다.
예로서, 판단 조건은 "(한 스캔 처리 가능시간 - 이미 사용한 시간 - 다음 스텝 실행시간) > 0 또는 <= 0" 이다.
즉, 다음 스텝 실행이 가능하지 않는 경우, 예로서 판단조건 값이 0보다 작거나 같은 경우에는 현재까지 실행한 스텝 번호와 결과를 메모리에 저장하고(S307) 특수 명령어 실행을 종료한다(S308).
그리고 다음 스텝 실행이 가능한 경우, 예로서 판단조건 값이 0보다 큰 경우에는 다음 스텝 수행이 가능한 상태이므로 현재 스텝 번호에 1을 증가시키고, 다음 스텝 조건에 맞는 함수를 설정된 특수 명령어의 스캔시간 동안 실행한다(S303). 이는 특수 명령어 수행 완료 스텝 번호(마지막 스텝 번호)에 도달할 때까지 해당 과정을 반복한다.
이처럼, 제2 실시예는 특수 명령어를 코드 단위로 단순 분할하는 것이 아니라, 전체 명령어 실행에 필요한 전체 스캔시간에 따른 스캔 증가율을 조정 할 수 있기 때문에 제1 실시예에서 전체 스캔시간 증가율이 커져 스캔이 튀는 현상을 효과적으로 방지할 수 있다.
제2 실시예에서는 특수 명령어의 스캔시간을 조절하는 조건으로 전체 스캔시간만을 조건으로 포함하고 있지만, 이에 한정되는 것은 아니다. 즉, 일반 명령어와 특수 명령어의 비율, 일반 명령어의 전체 스캔시간, 특수 명령어의 전체 스캔시간 중 적어도 하나 이상의 조건을 포함하여 특수 명령어의 스캔시간을 조절할 수 있음에 주의하여야 한다.
예로서, 프로그램 내에 포함된 명령어 중 일반 명령어의 비율이 20%, 특수 명령어의 비율이 80%인 경우보다, 일반 명령어의 비율이 80%, 특수 명령어의 비율이 20%인 경우에 특수 명령어의 스캔시간을 더 길게 조절하는 것이 바람직하다. 즉, 일반 명령어의 비율이 클수록 특수 명령어의 스캔시간을 증가시킬 수 있다.
또한, 프로그램 내에 포함된 명령어 중 일반 명령어의 비율이 20%이고, 특수 명령어의 비율이 80%인 경우라 하더라도, 전체 스캔시간이 10ms인 경우보다 전체 스캔시간이 100ms인 경우에 특수 명령어의 스캔시간을 더 길게 조절하는 것이 바람직하다. 즉, 전체 스캔시간이 클수록 특수명령어 스캔시간을 증가시킬 수 있다.
또한, 코드 단위로 분할된 특수 명령어의 모든 스캔시간이 한 스캔 내에서 이루어질 수 있도록 특수 명령어의 스캔시간을 조절할 수도 있다.
전술한 본 발명은, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.
Claims (12)
- (A) 통신부의 초기화가 이루어지면, 프로그램의 연산을 시작하기 전에 입력접점의 값을 읽어서 메모리 영역에 저장하는 단계;
(B) 상기 저장된 프로그램에 포함되는 특수 명령어를 여러 스캔에 분할 처리하여 프로그램 연산 처리하는 단계; 및
(C) 상기 프로그램의 연산이 종료하면 출력 이미지 영역에 저장된 데이터를 출력접점에 일괄 출력하고 스캔 앤드(END) 처리하는 단계를 포함하고,
상기 (B) 단계는
특수 명령어 중 연산 처리시간이 미리 정의된 기준시간보다 길거나 코드 사이즈가 미리 정의된 기준값보다 많은 함수를 대상으로 분리된 한 코드에서 특수 명령어 처리 시간을 변경하여 특수 명령어의 분할되는 개수를 변경하는
PLC 명령어 스캔 분할 처리 방법.
- 제1 항에 있어서,
상기 (B) 단계는
현재의 PLC 시스템에서 전체 명령어에 대한 전체 스캔시간을 산출하는 단계; 및
상기 산출된 전체 스캔시간을 기반으로 특수 명령어가 한 스캔 내에서 사용할 수 있는 스캔시간을 설정하는 단계를 포함하는 PLC 명령어 스캔 분할 처리 방법.
- 제2 항에 있어서,
상기 (B) 단계는
현재 수행해야 할 스텝 번호와 이전 실행 결과 정보를 이용하여 프로그램을 연산 처리를 수행하고, 상기 설정된 특수 명령어의 스캔시간 별로 특수 명령어 현재 스텝 조건에 맞는 함수를 실행하는 단계;
상기 현재 스텝 조건에 맞는 함수 실행 과정에서, 특수 명령어의 마지막 스텝에 해당되면, 특수 명령어의 처리를 종료하는 단계;
상기 현재 스텝 조건에 맞는 함수 실행 과정에서, 특수 명령어의 마지막 스텝에 해당되지 않으며, 다음 스텝 실행의 가능여부를 확인하는 단계;
상기 확인 결과, 다음 스텝 실행이 가능하지 않는 경우는 현재까지 실행한 스텝 번호와 결과를 메모리에 저장하고 특수 명령어 실행을 종료하는 단계; 및
상기 확인 결과, 다음 스텝 실행이 가능한 경우는 다음 스텝 수행이 가능한 상태이므로 현재 스텝 번호에 1을 증가시키고, 다음 스텝 조건에 맞는 함수를 설정된 특수 명령어의 스캔시간 동안 실행하는 단계를 포함하는 PLC 명령어 스캔 분할 처리 방법.
- 제3 항에 있어서,
상기 다음 스텝 실행의 가능여부는 설정된 특수 명령어의 스캔시간과 함수 수행시간 테이블을 참조하여 다음 판단조건에 의해 다음 스텝 실행이 가능한지 여부를 판단하며,
상기 판단 조건은 "(한 스캔 처리 가능시간 - 이미 사용한 시간 - 다음 스텝 실행시간) > 0 또는 <= 0" 인 것을 특징으로 하는 PLC 명령어 스캔 분할 처리 방법.
- 제2 항에 있어서,
상기 설정되는 특수 명령어의 스캔시간은 명령어 입력 오퍼랜드를 통해 사용자로부터 입력 받은 비율을 기반으로 조절하는 PLC 명령어 스캔 분할 처리 방법.
- 제2 항에 있어서,
상기 설정되는 특수 명령어의 스캔시간은 특수 명령어의 스캔시간이 상기 산출된 전체 스캔시간의 10% 미만 값으로 조절하는 PLC 명령어 스캔 분할 처리 방법.
- 제2 항에 있어서,
상기 설정되는 특수 명령어의 스캔시간은 일반 명령어와 특수 명령어의 비율, 일반 명령어의 전체 스캔시간, 특수 명령어의 전체 스캔시간 중 적어도 하나 이상의 조건을 포함하여 조절하는 PLC 명령어 스캔 분할 처리 방법.
- 제7 항에 있어서,
상기 설정되는 특수 명령어의 스캔시간은 일반 명령어의 비율이 클수록 특수 명령어의 스캔시간을 증가시키는 PLC 명령어 스캔 분할 처리 방법.
- 제7 항에 있어서,
상기 설정되는 특수 명령어의 스캔시간은 전체 스캔시간이 클수록 특수명령어 스캔시간을 증가시키는 PLC 명령어 스캔 분할 처리 방법.
- 제7 항에 있어서,
상기 설정되는 특수 명령어의 스캔시간은 코드 단위로 분할된 특수 명령어의 모든 스캔시간이 한 스캔 내에서 이루어질 수 있도록 특수 명령어의 스캔시간을 조절하는 PLC 명령어 스캔 분할 처리 방법.
- 삭제
- 제1 항에 있어서,
상기 (B) 단계는
특수 명령어에 따른 연산을 코드에 기반하여 여러 구간으로 분리한 뒤 한 스캔당 한 구간씩 분리된 코드가 실행되는 PLC 명령어 스캔 분할 처리 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190000386A KR102200592B1 (ko) | 2019-01-02 | 2019-01-02 | Plc 명령어 스캔 분할 처리 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190000386A KR102200592B1 (ko) | 2019-01-02 | 2019-01-02 | Plc 명령어 스캔 분할 처리 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200084229A KR20200084229A (ko) | 2020-07-10 |
KR102200592B1 true KR102200592B1 (ko) | 2021-01-11 |
Family
ID=71604249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190000386A KR102200592B1 (ko) | 2019-01-02 | 2019-01-02 | Plc 명령어 스캔 분할 처리 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102200592B1 (ko) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000148472A (ja) * | 1998-11-18 | 2000-05-30 | Nec Kofu Ltd | マイクロプロセッサ装置及びそのソフトウェア命令高速化方法並びにその制御プログラムを記録した記録媒体 |
JP2016062125A (ja) * | 2014-09-12 | 2016-04-25 | 発紘電機株式会社 | I/o制御機能付プログラマブル表示器、制御システム |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3389745B2 (ja) * | 1995-07-19 | 2003-03-24 | 富士通株式会社 | プログラムの性能測定装置と方法 |
KR100972509B1 (ko) * | 2003-03-19 | 2010-07-28 | 엘에스산전 주식회사 | 피엘씨의 스캔 프로그램 제어 방법 |
-
2019
- 2019-01-02 KR KR1020190000386A patent/KR102200592B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000148472A (ja) * | 1998-11-18 | 2000-05-30 | Nec Kofu Ltd | マイクロプロセッサ装置及びそのソフトウェア命令高速化方法並びにその制御プログラムを記録した記録媒体 |
JP2016062125A (ja) * | 2014-09-12 | 2016-04-25 | 発紘電機株式会社 | I/o制御機能付プログラマブル表示器、制御システム |
Also Published As
Publication number | Publication date |
---|---|
KR20200084229A (ko) | 2020-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106776104B (zh) | 一种Nand Flash控制器和终端以及控制Nand Flash的方法 | |
EP3349370A1 (en) | Method for controlling transmission power of wireless communication terminal, and wireless communication terminal | |
KR102200592B1 (ko) | Plc 명령어 스캔 분할 처리 방법 | |
US20130040590A1 (en) | Electronic circuit and radio communications system | |
JP2017134505A (ja) | 加工シミュレーションで解析したデータを実加工に使用する数値制御システム | |
US20150323975A1 (en) | SYNCHRONIZATION OF ACTIVITY OF MULTIPLE SUBSYSTEMS IN A SoC TO SAVE STATIC POWER | |
CN110096233A (zh) | 基于固态硬盘的后端参数动态适配方法和装置 | |
CN112106071B (zh) | 射频识别通信单元及其控制方法与计算机可读存储介质 | |
CN111915475B (zh) | 绘制命令的处理方法、gpu、主机、终端和介质 | |
US7590295B2 (en) | Semiconductor device and an image processor | |
US11342960B2 (en) | Relay device, relay method, and computer program | |
CN111147091B (zh) | 一种天线调谐开关逻辑控制方法、系统及终端 | |
CN111694033A (zh) | 移动装置的位置确定方法、装置及移动装置 | |
JP4976817B2 (ja) | プログラム処理装置及びプログラム処理方法 | |
CN113271115B (zh) | 一种射频电路控制方法及其系统 | |
US9727121B2 (en) | Wireless communication device | |
EP1715587A1 (en) | Encoding/decoding device | |
CN116204489A (zh) | 控制装置、方法及设备 | |
US10680849B2 (en) | Built-in apparatus, communication method, and computer readable medium | |
CN111819039A (zh) | 机器人控制方法、装置及可读存储介质 | |
US10372644B2 (en) | Programmable controller | |
KR102095224B1 (ko) | 프로그램 제공 장치 및 그에 의한 프로그램의 실행을 처리하는 cpu모듈 | |
KR101994812B1 (ko) | 웨어러블 장치를 포함하는 통신 시스템 및 그 동작 방법 | |
CN112596503A (zh) | 一种控制系统扫描周期的配置方法和相关设备 | |
CN116388335A (zh) | 充电电路、电子设备及充电方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |