KR20130046204A - 머신코드 생성 방식을 이용한 원격감시제어장치의 설비 제어방법 및 그 원격감시제어장치 - Google Patents

머신코드 생성 방식을 이용한 원격감시제어장치의 설비 제어방법 및 그 원격감시제어장치 Download PDF

Info

Publication number
KR20130046204A
KR20130046204A KR1020110110635A KR20110110635A KR20130046204A KR 20130046204 A KR20130046204 A KR 20130046204A KR 1020110110635 A KR1020110110635 A KR 1020110110635A KR 20110110635 A KR20110110635 A KR 20110110635A KR 20130046204 A KR20130046204 A KR 20130046204A
Authority
KR
South Korea
Prior art keywords
program
machine code
facility
memory
control
Prior art date
Application number
KR1020110110635A
Other languages
English (en)
Other versions
KR101333639B1 (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 KR1020110110635A priority Critical patent/KR101333639B1/ko
Publication of KR20130046204A publication Critical patent/KR20130046204A/ko
Application granted granted Critical
Publication of KR101333639B1 publication Critical patent/KR101333639B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/048Monitoring; Safety
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/24Pc safety
    • G05B2219/24015Monitoring
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/24Pc safety
    • G05B2219/24048Remote test, monitoring, diagnostic
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Abstract

본 발명은 원방감시제어장치에서 설비 제어 프로그램을 중간코드인 머신코드 형식으로 변환하여 메모리에 저장한 후 필요에 따라 이를 호출하여 실행함으로써 고속의 데이터 연산 처리가 가능하도록 하는 머신코드 생성 방식을 이용한 원방감시제어장치의 설비 제어방법 및 그 원방감시제어장치에 관한 것이다.
본 발명에 따른 원방감시제어장치의 설비 제어방법은 원방(遠方)에 위치한 설비를 제어하는 원방감시제어장치의 설비 제어방법에 있어서, 설비(500)를 제어하기 위한 설비 제어 프로그램을 머신코드 생성 프로그램(240)을 통하여 중간코드 형식인 머신코드로 변환하고, 상기 변환된 머신코드를 메모리(170)에 저장하는 단계와; 설비 제어 실행 명령에 따라 상기 메모리(170)에 저장된 머신코드를 호출하여 실행하고, 실행 결과를 출력하여 설비(500)를 제어하는 단계;를 포함하여 이루어지는 것을 특징으로 한다.

Description

머신코드 생성 방식을 이용한 원방감시제어장치의 설비 제어방법 및 그 원방감시제어장치 {FACILITY CONTROL METHOD OF REMOTE SUPERVISORY CONTROL APPARATUS USING MACHINE CODE GENERATION, AND THE REMOTE SUPERVISORY CONTROL APPARATUS}
본 발명은 원방감시제어장치의 설비 제어방법 및 그 원방감시제어장치에 관한 것으로, 더욱 상세하게는 원방감시제어장치에서 설비 제어 프로그램을 중간코드인 머신코드 형식으로 변환하여 메모리에 저장한 후 필요에 따라 이를 호출하여 실행함으로써 고속의 데이터 연산 처리가 가능하여 설비를 신속하게 제어할 수 있도록 하는 머신코드 생성 방식을 이용한 원방감시제어장치의 설비 제어방법 및 그 원방감시제어장치에 관한 것이다.
원방감시제어장치는 원방(遠方)에 위치한 설비를 감시하고 제어하는 장치로서, 근래 들어 원방감시제어장치의 성능이 향상됨에 따라 종래에 대규모 제어시스템에 사용하던 분산제어시스템(DCS)을 대체하는 용도로까지 그 사용 범위가 확대되고 있다. 이러한 원방감시제어장치는 다량의 데이터를 고속으로 처리하기 위하여 처리속도의 고속화가 절실하게 요구되는데, 감시 및 제어 대상인 설비의 규모 및 종류가 많아질수록 처리하여야 하는 데이터의 양이 많아지게 된다. 따라서, 원방에 위치한 다양한 설비를 정확하고 신속하게 제어하기 위해서 원방감시제어장치는 매우 빠른 데이터 연산처리 속도를 필요로 하게 된다.
이러한 연산처리 속도 문제를 해결하기 위해서, 종래 원방감시제어장치에서는 속도가 빠른 중앙처리장치(CPU) 또는 DSP(Digital Signal Processing)와 같이 고속의 범용 프로세서를 이용하여 설비 제어 프로그램을 하나씩 해석해 가면서 실행하는 인터프리터 방식을 사용하였다. 이러한 인터프리터 방식은 범용 프로세서를 사용하여 제어로직을 쉽게 변경할 수 있다는 장점이 있는 반면, 제어 프로그램(명령)을 한 명령(스텝)씩 읽고 해석하고 실행하기 때문에 한 스텝의 명령을 수행하는데 약 수 100nS의 실행 시간이 필요하여 처리 속도가 늦은 단점이 있다.
한편, 연산처리 속도를 빠르게 하기 위한 다른 방법으로 별도의 전용 고속처리를 위한 하드웨어(LSI ; Large Scale Integrated Circuit, 고밀도집적회로)를 개발하여 보조 연산장치를 부가함으로써, 일부의 프로그램은 하드웨어적으로 고속 처리하고 복잡한 명령은 소프트웨어적으로 처리하는 하드웨어 및 소프트웨어 병행 방식을 사용하기도 하고 있다. 이러한 하드웨어 및 소프트웨어 병행 방식은 고속 데이터 처리를 위하여 전용 집적회로를 VHDL(VHSIC Hardware Description Languae) 등의 언어로 개발하여 특정한 명령을 고속으로 처리하는 방식으로, 명령어 디코더와 연산장치, 메모리를 포함하는 소자를 별도로 개발하여야 한다.
또한, 이러한 방식은 특정한 명령에 대해서는 20~50nS로 고속 처리가 가능하지만 전용 소자의 개발기간도 오래 걸리고 반도체 제조공장에 별도로 의뢰하여 제작해야 하기 때문에 비용도 많이 소요되며 한번에 대량으로 제작해야 하므로 재고의 부담이 큰 문제점이 있었다.
뿐만 아니라, 이러한 방식은 제어 로직이 변경되는 경우 이미 생산된 소자를 폐기하고 다시 생산해야 하므로 소자를 다시 설계하고 제작하는데 많은 시간과 비용이 소요될 뿐 아니라 설계자 입장에서 큰 부담감을 안아야 하는 문제점이 있었다.
본 발명은 상기 종래 원방감시제어장치의 연산처리속도 문제점을 해결하기 위하여 제안된 것으로서, 본 발명의 목적은 원방감시제어장치에서 범용 프로세서를 이용하여 설비 제어 프로그램을 미리 머신코드로 변환하여 메모리에 저장한 후, 설비 제어시 머신코드를 호출하여 실행함으로써 고속의 데이터 연산 처리가 가능하여 설비를 신속하게 제어할 수 있도록 하는 머신코드 생성 방식을 이용한 원방감시제어장치의 설비 제어방법 및 그 원방감시제어장치를 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명에 따른 원방감시제어장치의 설비 제어방법은 원방(遠方)에 위치한 설비를 제어하는 원방감시제어장치의 설비 제어방법에 있어서, 상기 설비를 제어하기 위한 설비 제어 프로그램을 머신코드 생성 프로그램을 통하여 중간코드 형식인 머신코드로 변환하고, 상기 변환된 머신코드를 메모리에 저장하는 단계와; 설비 제어 실행 명령에 따라 상기 메모리에 저장된 머신코드를 호출하여 실행하고, 실행 결과를 출력하여 설비를 제어하는 단계;를 포함하여 이루어진다.
상기 설비 제어 프로그램을 머신코드로 변환하여 메모리에 저장하는 단계에서, 상기 원방감시제어장치는 외부의 제어프로그램 작성장치를 통하여 작성되어 통신망을 통하여 수신되는 설비 제어 프로그램을 SRAM 메모리의 통신버퍼 영역에 저장하고, 이 통신버퍼 영역에 저장되는 설비 제어 프로그램의 CRC 검사를 수행하여 오류가 없는 경우 FLASH 메모리의 제어프로그램 영역에 저장하게 된다. 또한, 상기 원방감시제어장치는 FLASH 메모리에 저장되는 설비 제어 프로그램을 머신코드 생성 프로그램을 통하여 즉시 호출하여 머신코드로 변환하고, 변환되는 머신코드를 FLASH 메모리의 머신코드 영역에 저장하게 된다.
한편, 상기 설비 제어 프로그램을 머신코드로 변환하여 메모리에 저장하는 단계에서, 상기 원방감시제어장치와 통신망을 통하여 연결된 제어프로그램 작성장치를 통하여 설비 제어 프로그램이 생성되고, 상기 생성되는 설비 제어 프로그램이 머신코드 생성 프로그램을 통하여 머신코드로 변환된 후, 상기 통신망을 통하여 원방감시제어장치에 수신되어 원방감시제어장치에 구비된 메모리에 저장될 수 있다.
상기 머신코드가 호출되어 실행하는 단계에서, 상기 원방감시제어장치는 입력/표시부에 구비된 모드 스위치의 실행(RUN) 명령 또는 통신망을 통하여 실행 명령이 수신되면, 정주기 인터럽트 처리 프로그램을 통하여 메모리에 저장된 머신코드를 호출하여 실행하게 된다.
여기에서, 상기 원방감시제어장치는 머신코드의 실행 결과에 따라 I/O 디바이스 프로그램을 통하여 I/O 디바이스 영역에 위치한 장치를 제어하여 원방에 위치한 설비를 제어하게 되는데, 상기 I/O 디바이스 프로그램을 통하여 제어되는 I/O 디바이스 영역에 위치한 장치는 TCP 또는 UDP 프로토콜을 지원하는 통신부와, 외부 확장용 베이스와 데이터를 송수신하는 외부 확장용 버퍼와, 외부 디지털 장치 및 아날로그 장치와 데이터를 송수신하는 인터페이스부를 포함하여 이루어지는 것이 바람직하다.
한편, 상기 목적을 달성하기 위한 본 발명에 따른 원방감시제어장치는 제어프로그램 작성장치를 통하여 작성된 설비 제어 프로그램을 머신코드 생성 프로그램을 통하여 중간코드 형식인 머신코드로 변환하여 메모리에 저장한 후, 설비 제어 실행 명령에 따라 상기 메모리에 저장된 머신코드를 호출하여 실행함으로써 설비를 제어하게 된다.
여기에서, 상기 메모리에는 제어프로그램 작성장치에 의해 작성된 설비 제어 프로그램과, 상기 설비 제어 프로그램을 머신코드로 변환하는 머신코드 생성 프로그램, 상기 변환된 머신코드를 설비 제어 실행 명령에 따라 실행하는 정주기 인터럽트 처리프로그램, 상기 머신코드 실행에 따라 원방에 위치한 설비를 제어하는 I/O 디바이스 프로그램을 포함하는 메인 프로그램과, 상기 머신코드 생성 프로그램을 통하여 생성된 머신코드가 저장되고; 상기 메모리에 저장된 메인 프로그램은 중앙처리부에 의해 실행되어, 설비 제어 프로그램이 머신코드로 변환되고, 변환된 머신코드가 실행되어 설비가 제어되게 된다.
또한, 상기 메인 프로그램에 구비된 I/O 디바이스 프로그램은 TCP 또는 UDP 프로토콜을 지원하는 통신부와, 외부 확장용 베이스와 데이터를 송수신하는 외부 확장용 버퍼와, 외부 디지털 장치 및 아날로그 장치와 데이터를 송수신하는 인터페이스부를 포함하는 I/O 디바이스 영역의 장치를 통하여 설비를 제어하게 된다.
한편, 상기 메모리에는 설비의 스케쥴을 관리하는 스케쥴 관리 프로그램과, 우선순위가 낮은 프로그램을 동작시키거나 대기하는 백그라운드 처리 프로그램이 구비될 수 있다.
본 발명은 범용프로세서를 이용하여 설비 제어 프로그램을 최적화된 머신코드 형식의 중간코드를 생성하고 이를 별도의 메모리에 저장한 후 필요에 따라 주기적으로 이 머신코드를 호출하여 수행함으로써, 종래 인터프리터 방식에 비해 고속으로 데이터를 연산처리할 수 있어 설비의 신속한 제어가 가능하며, 별도의 소자가 추가되지 않기 때문에 저렴하면서도 최적화된 성능을 얻을 수 있는 효과가 있다. 또한, 본 발명에 따른 원방감시제어장치는 일반적인 중앙처리장치에서 제공하는 실수연산 처리기능(FPU), CAN 통신, SPI 통신, TCP/IP 통신 등 유용한 기능을 그대로 사용할 수 있기 때문에 보다 효율적이며, 제어 로직이 변경되어도 손쉽게 수정하여 대응할 수 있는 효과가 있다.
도 1은 본 발명에 따른 원방감시제어장치의 네크워크 연결도,
도 2는 본 발명에 따른 원방감시제어장치의 블록 구성도,
도 3은 본 발명에 따른 중앙처리부에 의해 실행되어 설비를 제어하는 메인 프로그램의 블록 구성도,
도 4는 본 발명에 따른 원방감시제어장치의 하드웨어와 프로그램 저장번지 관계를 나타낸 개념도,
도 5는 본 발명에 따라 원방에 위치한 설비가 제어되는 과정을 나타낸 전체 흐름도.
도 6은 본 발명에 따른 원방감시제어장치에 설비 제어프로그램이 수신되어 메모리에 저장되는 과정을 나타낸 흐름도,
도 7은 본 발명에 따라 메모리에 저장된 설비 제어 프로그램이 머신코드로 변환되는 과정을 나타낸 흐름도,
도 8은 설비 제어 프로그램의 일례,
도 9는 설비 제어 프로그램의 AND 명령에 대한 C 언어 프로그램 일례,
도 10과 도 11은 상기 도 9의 AND 명령 C 언어 프로그램을 어셈블리 프로그램으로 변환한 명령 일례,
도 12는 본 발명에 따른 중앙처리부의 AND 명령 머신코드 포맷 일례,
도 13은 본 발명에 따른 AND 명령에 대한 C 언어 프로그램 일례,
도 14는 본 발명에 따른 AND 명령어에 해당하는 머신코드 일례,
도 15는 본 발명에 따른 머신코드의 실행 시간 측정 화면의 일례를 나타낸 것이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
도 1은 본 발명의 실시예에 따른 원방감시제어장치의 전체적인 네크워크 연결도를 나타낸 것이다.
도 1에 도시된 바와 같이, 본 발명에 따른 원방감시제어장치(100)는 통신망을 통하여 연결된 원방에 위치한 설비(500)를 감시하고 제어하는 장치로서, 이 원방감시제어장치(100)는 제어프로그램 작성장치(400)를 통하여 작성된 설비 제어프로그램을 전송받아 실행함으로써 해당 설비를 원방에서 제어하게 된다.
본 발명에 따른 원방감시제어장치는, 종래 설비(500) 제어 시 제어 프로그램을 한 문장(스텝)씩 읽고 해석하여 처리하는 인터프리터 방식이 아니라, 외부의 제어프로그램 작성장치(400)로부터 설비 제어 프로그램을 수신하는 즉시 제어 프로그램을 한 문장씩 읽고 해석하여 최적화된 머신코드 형식의 중간코드로 변환하여 메모리에 저장한 후, 설비(500) 제어가 필요한 경우 중간코드인 머신코드를 호출하여 수행하는 방식으로 설비를 제어하게 된다. 따라서, 종래 인터프리터 방식에 비해 고속의 데이터 처리가 가능하며, 필요시 제어로직을 용이하게 변경할 수 있는 장점을 갖게 되어 최적화된 성능을 얻을 수 있게 된다.
상기 제어프로그램 작성장치(400)는 설비(500)를 제어하기 위한 프로그램을 작성하는 컴퓨터로서, 설비 관리자는 제어 대상인 설비(500)에 따라 제어 프로그램을 작성하여 통신망을 통하여 원방감시제어장치(100)에 제공하게 된다.
도 2는 본 발명의 실시예에 따른 원방감시제어장치의 블록 구성도를 나타낸 것이다.
도 2에 도시된 바와 같이, 본 발명에 따른 원방감시제어장치(100)는 데이터 입력 및 표시를 위한 입력/표시부(120)와, 통신망을 통하여 외부 장치와 통신을 수행하는 통신부(130)와, 외부 장치와 데이터를 송수신하는 인터페이스부(140)와, 추가적인 I/O 디바이스를 설치하기 위한 외부 확장용 베이스(151)에 제어신호를 출력하는 외부 확장용 버퍼(150)와, 입력/표시부(120)와 통신부(130), 인터페이스부(140), 외부 확장용 버퍼(150), 메모리(170) 등의 소자를 정해진 번지에서 제어하기 위한 소자선택신호(Chip enable), 읽기(Read) 및 쓰기(Write) 신호를 발생하는 제어신호 출력부(160)와, 각종 프로그램 및 데이터가 저장되는 메모리(170)와, 원방감시제어장치(100)에 전원을 공급하는 전원부(180)와, 상기 각 구성부의 동작을 제어하는 중앙처리부(110)를 포함하여 이루어진다.
상기 입력/표시부(120)는 원방감시제어장치(100)의 동작 모드를 선택하고 데이터를 입력하는 입력장치와, 원방감시제어장치(100)를 통하여 처리되는 데이터가 화면에 표시되는 표시장치를 포함하여 이루어진다. 본 발명의 실시예에서 상기 입력장치로는 원방감시제어장치(100)의 동작 모드, 예를 들면 실행 명령인 'RUN', 임시 정지 명령인 'PAUSE', 정지 명령인 'STOP' 등의 모드를 선택하는 모드 스위치와 데이터를 입력하기 위한 키 입력장치 등으로 이루어지며, 표시장치로는 데이터를 화면에 표시하는 LCD, LED 등의 디스플레이 장치로 이루어진다.
상기 통신부(130)는 통신망을 통하여 연결된 제어 대상인 설비(500) 및 제어프로그램 작성장치(400)와 데이터를 송수신하기 위한 통신장치로서, 본 발명의 실시예에서 상기 통신부(130)는 이더넷을 이용하여 고속의 데이터 전송이 가능한 이더넷포트, RS-232, RS-422, RS-485, CAN BUS, PROFI BUS 등 다양한 통신장치로 이루어진다.
상기 인터페이스부(140)는 외부 장치와 데이터를 송수신하는 인터페이스 장치로서, 이 인터페이스부(140)에는 외부 디지털 장치와 데이터를 송수신하는 디지털 인터페이스(141)와, 외부 아날로그 장치와 데이터를 송수신하는 아날로그 인터페이스(142)가 구비된다. 상기 디지털 인터페이스(141)는 디지털 신호를 입력받거나 출력하기 위하여 광절연소자 등으로 외부 신호와 내부 신호를 절연하고 안정화하는 장치이고, 상기 아날로그 인터페이스(142)는 아날로그 신호를 입력받아 저역필터로 노이즈를 제거하고 적정한 크기로 증폭하여 아날로그-디지털 변환기를 통하여 아날로그 신호를 디지털화하거나 외부로 아날로그 신호를 출력하기 위하여 디지털-아날로그 변환기를 통하여 디지털 데이터를 아날로그 데이터로 변환해 주는 역할을 하게 된다.
상기 외부 확장용 버퍼(150)는 외부에 추가적으로 I/O 기능이 필요한 경우에 I/O 디바이스를 설치하기 위한 외부 확장용 베이스(151)에 어드레스 버스 및 데이터 버스, 제어 버스를 외부로 출력하는 버퍼 회로로서, 외부로 신호를 출력하거나 입력받기 위하여 신호를 절연해주고 안정화시키는 장치이다.
상기 제어신호 출력부(160)는 중앙처리부(110)를 통한 제어 프로그램의 실행에 따른 제어 신호를 출력하는 장치로서, 입력/표시부(120)와 통신부(130), 인터페이스부(140), 외부 확장용 버퍼(150), 메모리(170) 등의 소자를 정해진 번지에서 제어하기 위하여 소자 선택신호(Chip enable), 읽기신호(Read) 및 쓰기신호(Write) 등의 신호를 발생하게 된다. 이때, 두 개 이상 신호의 AND 혹은 OR 로직의 조합에서 하드웨어 처리가 필요한 경우 일반 게이트 소자로 회로를 구현하게 되면 배치하는 면적이 많아지게 되므로, 본 발명의 실시예에서는 이를 방지하기 위하여 FPGA(Field Programmable Gate Array)로 설계하여 배치되는 면적을 최소화하였으며, 내부 제어 로직이 변경되어야 하는 경우 소프트웨어로 기능을 변경할 수 있도록 하였다.
상기 메모리(170)는 데이터를 저장하는 기억장치로서, 이 메모리(170)는 데이터 저장용 배터리 백업된 SRAM 메모리(171)와 FLASH 메모리(172)를 포함하여 이루어진다. 상기 SRAM 메모리(171)는 중앙처리부(110)에 의해 처리되는 데이터를 저장하는 메모리(170)로서, 이 SRAM 메모리(171)는 배터리로 백업되어 정전 후에도 데이터를 저장하는 기능을 수행하게 된다. 상기 FLASH 메모리(172)는 한번 저장되면 전원이 차단되어도 데이터가 계속 유지하는 메모리(170)로서, 이 FLASH 메모리(172)에는 메인 프로그램 및 설비 제어 프로그램을 비롯한 각종 프로그램이 저장된다.
상기 전원부(180)는 외부로부터 전원을 공급받아 원방감시제어장치(100)에 공급하는 전원 공급장치로서, 이 전원부(180)는 외부로부터 공급되는 전원을 원방감시제어장치(100)에서 필요로 하는 전원(예를 들면, 입력 전원 전압 200V를 1.8V, 3V, 3.3V 등)으로 변환시켜주는 역할을 수행하며, 전원 전압이 정격전압보다 낮거나 높을 경우 중앙처리부(110)로 하여금 데이터 처리에 오류가 발생하는 것을 방지하기 위하여 상시 전원 전압을 감시하고 있다가 정격 전압을 벗어나면 프로세서의 작동을 정지시켜 시스템을 보호하는 리셋 기능을 수행하게 된다.
상기 중앙처리부(110)는 원방감시제어장치(100) 각 구성부의 동작을 제어하며, 메모리(170)에 저장된 메인 프로그램을 실행하여 프로그램에 따라 각종 신호 및 데이터를 순서대로 처리하는 기능을 수행하는 중앙처리장치이다. 상기 중앙처리부(110)는 메모리(170)에 저장된 메인 프로그램을 실행하여 시스템을 운영하며, 통신망을 통하여 제어프로그램 작성장치(400)로부터 전송되는 설비 제어 프로그램을 머신코드 형식의 중간코드로 변환하여 메모리(170)에 저장한 후, 설비 제어가 필요한 경우 중간코드인 머신코드를 실행하여 신속하게 설비를 제어하게 된다.
도 3은 이러한 중앙처리부에 의해 실행되어 설비를 제어하는 메인 프로그램의 블록 구성도를 나타낸 것이다.
도 3에 도시된 바와 같이, 본 발명에 따른 메인 프로그램(200)은 시스템 초기 운영을 위한 시스템 초기화 프로그램(210)과, 통신부(130)의 통신 기능을 지원하기 위한 통신지원 프로그램(220)과, 메모리(170)를 관리하는 메모리 관리 프로그램(230)과, 설비 제어 프로그램을 중간코드인 머신코드로 변환하는 머신코드 생성 프로그램(240)과, 설비 제어 실행 명령에 따라 머신코드 생성 프로그램(240)을 통하여 생성된 머신코드를 주기적으로 호출하여 실행하는 정주기 인터럽트 처리 프로그램(250)과, I/O 디바이스 장치를 관리하는 I/O 디바이스 프로그램(260)과, 스케쥴을 관리하는 스케쥴 관리 프로그램(270)과, 백그라운드 프로그램을 실행하는 백그라운드 처리 프로그램(280)을 포함하여 이루어진다.
상기 시스템 초기화 프로그램(210)은 원방감시제어장치(100)의 시스템 초기 운영시 시스템의 각 구성부를 제어 가능하도록 초기화하는 프로그램이고, 통신지원 프로그램(220)은 통신부(130)에 구비된 각종 통신 포트, 예를 들면 이더넷 포트, RS-232, RS-422, RS-485 등의 미디어 특성과 MODBUS-RTU, MODBUS-TCP, CAN BUS, PROFI BUS 등의 다양한 프로토콜을 지원하는 프로그램이다. 또한, 상기 메모리 관리 프로그램(230)은 메모리 소자에 따라 특정한 헤더와 써넣는 방식이 다르므로 이를 지원하거나 연속적인 데이터 로깅 등이 가능하도록 지원하는 프로그램이다.
상기 머신코드 생성 프로그램(240)은 통신부(130)를 통하여 설비 제어 프로그램이 수신되면, 설비 제어 프로그램을 한 문장(스텝)씩 읽어서 최적의 머신코드로 변환 생성한 후 이를 메모리(170)의 머신코드 영역(322)에 저장하는 프로그램이다.
또한, 정주기 인터럽트 처리 프로그램(250)은 정해진 시간이나 명령(예를 들면, 1mS 혹은 10mS, 100mS, 1초 등)에 따라 인터럽트가 발생하여 그에 해당하는 인터럽트를 처리하는 프로그램으로서, 이 정주기 인터럽트 처리 프로그램(250)은 설비 제어 프로그램의 실행 명령이 수신되면, 머신코드 생성 프로그램(240)을 통하여 생성된 머신코드를 주기적으로 호출하여 실행함으로써 설비를 제어하게 된다.
상기 I/O 디바이스 프로그램(260)은 원방감시제어장치(100)에 구비되는 다양한 장치를 제어하는 프로그램으로서, 입력/표시부(120)의 모드 스위치와 키 입력장치 및 표시장치, 통신부(130)의 각 통신 포트, 인터페이스부(140)의 각 인터페이스, 외부 확장용 버퍼(150), 제어신호 출력부(160), 전원부(180) 등을 포함하는 각종 I/O(Input/Output) 장치의 동작을 제어하게 된다. 상기 스케쥴 관리 프로그램(270)은 시계 및 요일, 시간에 관련하여 설정한 시간에 정해진 일을 수행하도록 하는 프로그램이고, 백그라운드 처리 프로그램(280)은 우선순위가 낮은 프로그램을 백그라운드에서 수행하거나 대기시키는 프로그램이다.
도 4는 본 발명의 실시예에 따른 원방감시제어장치의 하드웨어와 프로그램 저장번지 관계를 나타낸 개념도이다.
도 4에 도시된 바와 같이, 메모리(170) 중 SRAM 메모리(171)에는 통신 데이터가 저장되는 통신버퍼 영역(311)과, 사용자 변수 정보가 저장되는 사용자변수 영역(312)과, 시스템 변수 정보가 저장되는 시스템변수 영역(313)과, 메모리(170) 정보가 저장되는 메모리버퍼 영역(314) 등이 구비되는데, 이 SRAM 메모리(171)는 배터리 백업을 통하여 정전 후에도 데이터를 저장하게 된다.
또한, 메모리(170) 중 FLASH 메모리(172)에는 통신망을 통하여 수신되는 설비 제어 프로그램이 저장되는 제어프로그램 영역(321)과, 설비 제어 프로그램이 머신코드 생성 프로그램(240)에 의해 변환되어 생성된 머신코드가 저장되는 머신코드 영역(322)과, 프로그램 실행과 관련된 각종 파라메터 정보가 저장되는 파라메터 영역(323)과, 시스템 운영 및 설비 제어 프로그램의 머신코드 변환을 위한 메인 프로그램(200)이 저장되는 메인 프로그램 영역(324) 등이 구비된다. 이 FLASH 메모리(172)에 한번 저장된 데이터는 전원이 차단되어도 데이터가 유지된다.
한편, 입력/표시부(120), 통신부(130), 디지털 인터페이스(141), 아날로그 인터페이스(142), 외부 확장용 버퍼(150), 제어신호 출력부(160) 등의 장치 정보는 I/O 디바이스 영역(330)에 저장되어 관리된다.
이하, 상기의 구성으로 이루어진 원방감시제어장치를 통하여 설비 제어용 머신코드가 생성되고, 이를 통하여 원격의 설비가 제어되는 과정에 대하여 설명하기로 한다.
도 5는 본 발명의 실시예에 따라 원방에 위치한 설비가 제어되는 과정을 나타낸 전체적인 흐름도이다.
단계 S100 : 설비 관리자가 제어프로그램 작성장치(400)를 통하여 제어 대상 설비(500)의 용도에 맞는 제어 프로그램을 작성한 후 이를 통신망을 통하여 원방감시제어장치(100)에 전송하게 되면, 원방감시제어장치(100)는 통신부(130)를 통하여 수신되는 설비 제어 프로그램을 중앙처리부(110)의 제어를 통하여 메모리(170)의 제어프로그램 영역(321)에 저장하게 된다.
단계 S300 : 원방감시제어장치(100)의 중앙처리부(110)는 머신코드 생성 프로그램(200)을 실행하여, 메모리(170)의 제어프로그램 영역(321)에 저장된 설비 제어 프로그램을 한 문장(스텝)씩 읽고 분석하여 설비 제어 프로그램의 각 명령어에 대하여 미리 작성된 프로그램 방식에 따라 최적의 머신코드 형식의 중간코드를 생성하여 메모리(170)의 머신코드 영역(322)에 저장하게 된다.
단계 S500 : 상기 머신코드 생성 후, 모드 스위치가 실행 명령인 'RUN' 모드로 선택되거나 통신부(130)를 통하여 'RUN' 명령이 입력되어 설비의 제어 명령이 수신되면, 중앙처리부(110)는 정주기 인터럽트 처리 프로그램(250)을 통하여 메모리(170)의 머신코드 영역(322)에 저장된 머신코드를 호출하여 실행하게 된다.
단계 S600 : 상기 머신코드를 호출하여 실행한 후 그 결과에 따라 I/O 디바이스 영역(330)의 I/O 디바이스를 제어하게 된다. 이러한 I/O 디바이스 제어에 있어, 예를 들면 아날로그 인터페이스(142)에서 아날로그-디지털 변환기의 경우 사용자가 요구하는 정밀도가 12비트형 또는 16비트형, 24비트형 등이 있을 수 있고, 데이터를 변환하는 속도도 저속형과 고속형 등이 있을 수 있으며, 전압입력 또는 전류입력, 온도센서, 습도센서, 진동센서 등 다양한 종류가 있을 수 있다. 본 발명에서는 이러한 사용자의 요구에 따라 적정한 형태의 아날로그 인터페이스 모듈을 선정하여 사용하게 되는데, 선택된 아날로그 인터페이스 모듈에 따라 제어소자가 각기 다르므로 이에 맞는 적정한 프로그램이 작동되어 목적에 맞는 기능이 구현되게 된다. 이러한 머신코드의 수행 결과에 따라 원방감시제어장치(100)의 I/O 디바이스 영역(330)에 구비된 각 장치를 통하여 원방에 위치한 설비(500)의 제어가 이루어지게 된다.
단계 S700, S800 : 또한, 스케쥴 관리 프로그램(270)을 통하여 설비의 스케쥴 관리, 예를 들면 어느 요일 몇 시부터 몇 시까지 조명을 켠다든지 보일러를 작동시키는 등의 스케쥴 관리가 이루어지며(S700), 그 외 우선순위가 낮은 프로그램을 동작시키거나 대기하는 백그라운드 처리 프로그램(280)을 통하여 백그라운드 프로그램을 처리하게 된다(S800).
도 6은 본 발명의 실시예에 따른 원방감시제어장치에 설비 제어 프로그램이 수신되어 메모리에 저장되는 과정을 나타낸 흐름도이다.
단계 S110, S120, S130 : 설비 관리자가 제어프로그램 작성장치(400)를 통하여 설비 제어 프로그램을 작성한 후 이를 통신망을 통하여 원방감시제어장치(100)에 전송하게 된다. 원방감시제어장치(100)는 통신부(130)를 통하여 외부로부터 데이터가 수신되면(S110), 수신된 데이터의 종류가 프로그램에 해당되는지를 판단한 후(S120), 데이터가 프로그램에 해당되는 경우 프로그램 관련 변수를 초기화하게 된다(S130).
단계 S125, S126, S218 : 만약, 수신된 데이터가 프로그램이 아닌 파라메터 관련 데이터인 경우에는(S125), 파라메터 관련 변수를 저장한 후 데이터 수신을 종료하게 된다(S126). 또한, 수신된 데이터가 기타 통신 데이터인 경우에는 해당 통신 데이터를 처리한 후 데이터 수신을 종료하게 된다(S128).
단계 S140, S150, S160, S170, S180 : 한편, 프로그램 관련 변수를 초기화한 후 수신되는 데이터의 선두 코드(STX)가 확인되면(S140), 데이터 저장 포인터(위치)를 초기화한 후(S150), 데이터 버퍼에 저장하며(S160), 데이터 저장 포인터를 증가시키게 된다(S170). 상기 데이터 저장 과정(S160, S170)은 데이터 종료 코드(ETX)가 수신될 때까지 반복 수행된다(S180).
단계 S190, S200, S210 : 프로그램 데이터 수신 중 데이터 종료 코드(ETX)가 수신되면, 수신된 프로그램 데이터의 CRC(Cyclic Redundancy Check) 검사를 수행하여(S190), 계산한 CRC 코드와 수신한 CRC 코드가 일치하면(S200), 수신된 프로그램 데이터를 메모리(170)의 제어프로그램 영역(321)에 저장하게 된다(S210).
상기 메모리(170)에 저장되는 설비 제어 프로그램은 머신코드 생성 프로그램(240)에 의해 머신코드로 변환하게 되는데, 도 7은 상기 도 6의 과정을 통하여 메모리에 저장된 설비 제어 프로그램을 통하여 머신코드가 생성되는 과정을 나타낸 흐름도이다.
단계 S310, S320 , S330 : 원방감시제어장치(100)의 중앙처리부(110)는 메인 프로그램(200)에 구비된 머신코드 생성 프로그램(240)을 실행하여 메모리(170)의 제어프로그램 영역(321)에 저장되는 설비 제어 프로그램을 머신코드로 변환하게 된다. 머신코드 생성을 위하여 머신코드 생성 프로그램(240)은 메모리(170)의 제어 프로그램 영역(321)에 저장된 설비 제어 프로그램 데이터를 불러들이게 되는데(S310), 이때 머신코드가 저장될 머신코드 저장 포인터(위치)를 초기화한 후(S320), 제어 프로그램 데이터를 한 명령어씩 읽게 된다(S330).
단계 S340 : 만약, 읽어 들인 명령어가 설비 제어 프로그램의 끝을 나타내는'END' 명령인 경우에는 제어 프로그램을 머신코드로 변환하는 과정을 종료한다.
단계 S350, S351 : 읽어 들인 명령어가 'END' 명령이 아니라면, 먼저 명령어가 'Load' 명령인지를 판단하여(S350), 'Load' 명령인 경우 'Load' 명령에 대한 머신코드를 생성하여 메모리(170)의 머신코드 영역(322)에 저장한 후, 머신코드 저장 포인터를 증가시킨다(S351).
단계 S360, S361 : 만약, 읽어 들인 명령어가 'And' 명령인 경우(S360), 'And' 명령에 대한 머신코드를 생성하여 메모리(170)의 머신코드 영역(322)에 저장한 후, 머신코드 저장 포인터를 증가시킨다(S361).
단계 S370, S371 : 만약, 읽어 들인 명령어가 'Or' 명령인 경우(S370), 'Or' 명령에 대한 머신코드를 생성하여 메모리(170)의 머신코드 영역(322)에 저장한 후, 머신코드 저장 포인터를 증가시킨다(S371).
단계 S380, S381 : 만약, 읽어 들인 명령어가 'Out' 명령인 경우(S380), 'Out' 명령에 대한 머신코드를 생성하여 메모리(170)의 머신코드 영역(322)에 저장한 후, 머신코드 저장 포인터를 증가시킨다(S381).
단계 S390, S391 : 읽어 들인 명령어가 기타 로직 명령인 경우(S390), 기타 로직 명령에 대한 머신코드를 생성하여 메모리(170)의 머신코드 영역(322)에 저장한 후, 머신코드 저장 포인터를 증가시킨다(S391).
단계 S400 : 마지막으로 이러한 명령이 아닌 응용 명령인 경우 해당 응용 명령을 처리한 후, 상기 데이터를 읽는 과정(S330)으로 돌아가 제어 프로그램의 다음 명령어를 읽어 머신코드로 변환하는 과정을 반복하여 수행하게 된다. 이러한 머신코드 변환 과정은 제어 프로그램 종료 코드인 'END'가 인식될 때까지 반복 수행한다.
상기의 과정을 통하여 설비 제어 프로그램은 머신코드로 변환되어 메모리(170)의 머신코드 영역(322)에 저장된 후, 모드 스위치의 'RUN' 선택 또는 통신망을 통하여 외부로부터 'RUN' 명령이 입력되는 경우 실행되어 원방에 위치한 설비(500)의 제어가 이루어지게 된다.
이하에서는, 설비 제어 프로그램을 통하여 머신코드가 생성되는 실시예를 설명하기로 한다.
도 8은 일반적인 설비 제어 프로그램의 일례를 나타낸 것이다.
도 8의 제어 프로그램을 살펴보면,
'LOAD M0000'
'AND X0035'
'AND M0005'
'LOAD Y0107'
'AND M0001'
'OR LOAD'
'ANDNOT X0002'
'AND X0003'
'OUT Y0107'
로 표시되는데, 이 제어 프로그램의 명령 중 'AND X0035' 명령에 대하여 살펴보기로 한다.
본 발명의 설명에 앞서, 먼저 종래의 인터프리터 방식으로 'AND'명령을 수행하는 과정을 설명한다.
상기 제어 프로그램의 'X0035' 명령에서, 'X'는 입력변수를 나타내는데 이는 디지털 인터페이스부(141)를 통하여 설비의 상태 즉 'X0000'으로부터 설비의 입력소자의 구성된 량만큼 순차적으로 읽어들여 사용자 변수영역(312)에 저장하는 변수를 나타내며, 다른 변수 'Y'는 출력변수, 'M'은 보조메모리(170)변수, 'F'는 상태변수, 'T'는 타이머변수, 'C'는 카운터변수를 나타낸다. 또한, 숫자 '003'은 카드번호, '5'는 비트번호를 나타낸다.
도 9는 이러한 AND 명령에 대한 인터프리터 방식의 C 언어 프로그램 예를 나타낸 것이다.
상기 도 9에 표시된 AND 명령에 대한 C 언어 프로그램을 설명하며, 첫 번째 줄 'else if (cmd1 == 'A') {' 항에서 제어 프로그램의 첫 번째 문자가 'cmd1'이라는 변수에 저장되어 있다고 정의하고, 'cmd1'이 'A' 이면 'AND' 명령이라고 정의하였다면 'cmd1'이 'AND' 명령인지 판단하는 기능이며,
AND' 명령이면 다시 사용자변수가 opr1에 저장되었다고 가정하여 'X'인지, 'Y'인지, 'M'인지, 'F'인지, 'T'인지, 'C'인지 판단하기 위하여
'if (opr1 == 'X') bb = X_bit[var1];'
'if (opr1 == 'Y') bb = Y_bit[var1];'
'if (opr1 == 'M') bb = M_bit[var1];'
'if (opr1 == 'F') bb = F_bit[var1];'
'if (opr1 == 'T') bb = T_bit[var1];'
'if (opr1 == 'C') bb = C_bit[var1];'
에서 'X' 변수에 대하여 분류하고,
다시 'var1'에 해당비트의 번지가 저장되어 있다고 가정하는 이 값은 '카드번호 × 16 + 비트번호'로 계산된 값이며, 'X'변수 내에서 'var1'가 지정하는 값을 읽어 들이면 비로소 'X0035'의 값, 즉 입력변수 'X'의 3번째 카드의 5번째 비트의 상태('1또는 '0')를 읽어 들여 변수 'bb'에 저장한다.
이미 앞에서 계산된 결괏값이 'ACC_bit'에 저장되었다고 가정하고 지금 읽어 들인 'X'의 3번째 카드의 5번째 비트의 상태가 저장된 'bb'변수의 상태를 AND 처리하기 위하여 'ACC_bit = ACC_bit & bb' 연산하여 그 결과를 다시 'ACC_bit'에 저장한다.
이러한 과정을 중앙처리부(110)에서 실제로 수행하기 위하여 상기 도 9에 표시한 C 언어로 작성된 AND 명령 프로그램을 어셈블리어로 변환한 예를 도 10과 도 11 및 도 12에 도시하였다.
도 10에서 상기 'AND' 명령의 C 언어 프로그램을 어셈블리 프로그램으로 변환한 명령을 표시하였는데, 'else if (cmd1 == 'A') {' 항의 경우를 수행하기 위하여
'EXTU.B R1, R2'
'MOV R2, R0'
'CMP/EQ #H'41, R0'
'BF @H'4294:B'
로 변환되며, 이러한 방법으로 하나의 'AND' 명령을 수행하기 위해서는 모두 105 라인의 머신코드가 필요하게 된다. 따라서 이러한 종래의 방식은 처리속도가 매우 늦고 코드길이가 긴 단점이 있는 것을 알 수 있다.
다음으로 본 발명에서 제안하고 있는 머신코드 방식의 중간코드 생성과정을 설명하면 다음과 같다.
상기 도 8의 제어 프로그램 중에서 'X0035' 명령의 의미는 이미 설명한 바 있다. 이를 다시 좀더 상세히 설명하면 'X'변수는 디지털 인터페이스부(141)의 기능 중에서 설비의 상태를 입력하는 기능을 나타내고, '003'은 디지털 입력 개수가 많은 경우에 여러 개의 디지털 입력부(카드) 중 세 번째 카드를 나타낸다. 또한, 하나의 디지털 입력부(카드)는 8비트, 16비트, 32비트 등 다수의 입력기능을 갖는데, '5'는 이 비트 중에서 여섯 번째 비트(000→005)의 상태를 나타내게 된다.
도 13은 본 발명의 실시예에 따른 중앙처리부의 'AND' 명령 머신코드 포맷 일례를 나타낸 것이다.
도 13에 도시된 머신코드 포맷(0011nnnn0iii10010100dddddddddddd)은, 중앙처리장치(110)의 내부 레지스터가 16개의 레지스터 R0~R15가 있는 경우 이 중에서 하나의 레지스터(Rn)를 선택하는 nnnn 항과 지정한 데이터 중 몇 번째 비트를 선택할지 지정하는 iii 항과 12비트 범위의 변위 어드레스번지(disp)를 지정하는 dddddddddddd 항으로 구성되며, 이때 nnnn 항을 '0'으로, iii 항을 '0'으로, dddddddddddd 항을 '0'으로 간주하면 명령어 기본값은 '0x30094000'이 된다.
이 명령의 연산을 위하여 I/O 디바이스 영역(330)에 구비된 디지털 인터페이스부(141)의 상태를 8비트 혹은 16비트의 카드단위로 입력하여 'X0000' 부터 구성된 입력 개수만큼 순차적으로 읽어서 메모리(170)의 번지 사용자변수 영역(312)에 저장하고, 중앙처리장치(110)의 내부 레지스터 R0~R15 중 하나를 지정하여 'X'변수의 선두번지를 나타내기 위하여 선택된 레지스터(Rn)와 여러 개의 카드 중 하나의 카드를 지정하기 위한 변위 어드레스 값이 더해진 (disp + Rn)번지가 되며, 선택된 카드 내에서 다시 하나의 비트를 지정하기 위한 iii 번째의 비트가 선택되며, 이 비트의 값은 1 또는 0이 된다.
이 비트의 값(1 또는 0)은 이전에 연산한 결과가 중앙처리부(110)의 상태 레지스터 중 'T' 비트에 저장되어 있고, 이 'T' 비트 값(1 또는 0)과 AND 연산된 후 다시 상태 레지스터 중 'T' 비트에 저장되게 된다.
도 8의 제어 프로그램 중에서 'AND X0035'명령은 'ADX0035'로 줄여서 전송된다고 가정하여, 이 명령을 머신코드로 변환하는 과정은 다음과 같다.
도 14는 본 발명의 실시예에 따른 'AND' 명령에 대한 C 언어 프로그램 일례를 나타낸 것이다.
도 14에서, '#define AND_code 0x30094000' 는 'AND' 명령어의 기본값을 16진수 '0x30094000'로 정의한다.
또한, 'cmd1 = EEP_ROM[index++];'은 제어 프로그램의 'A'에 해당하는 첫 번째 명령을 'cmd1'에 저장하고, 'cmd2 = EEP_ROM[index++];'는 제어 프로그램의 'D'에 해당하는 두 번째 명령을 'cmd2'에 저장하며, 'opr1 = EEP_ROM[index++];'는 사용자변수 'X'가 저장된다.
C 언어 프로그램의 첫 번째 줄에 'else if (cmd1 == 'A') {' 항과 두 번째 줄의 'if (cmd2 == 'D') CODE_Base_buf = AND_code;'에서 제어 프로그램의 첫 번째 문자와 두 번째 문자가 'AND' 명령을 나타내는 'A'와 'D' 인지 판단하는 역할을 하며, 판단결과 'AND' 명령으로 판단되면 CODE_Base_buf 변수에 미리 정의한 AND_CODE의 기본값 '0x30094000'이 대입된다.
다시 'opr1'에 저장된 사용자변수가 'X'인지, 'Y'인지, 'M'인지, 'F'인지, 'T'인지, 'C'인지 판단하기 위하여 'opr1'을 인자로 하는 switch 명령을 이용하여 다음과 같이 선별하여
switch (opr1) {
case 'X': CODE_Base_buf = CODE_Base_buf | X_BIT_reg; break;
case 'Y': CODE_Base_buf = CODE_Base_buf | Y_BIT_reg; break;
case 'M': CODE_Base_buf = CODE_Base_buf | M_BIT_reg; break;
case 'F': CODE_Base_buf = CODE_Base_buf | F_BIT_reg; break;
case 'T': CODE_Base_buf = CODE_Base_buf | T_BIT_reg; break;
case 'C': CODE_Base_buf = CODE_Base_buf | C_BIT_reg; break;
}
만일 사용자변수 opr1의 값이 'X'라면, 중앙처리장치(110)의 내부 레지스터중 레지스터 R1에 X_BIT 변수의 선두번지를 가리키기 위한 X_BIT_reg 값을 미리 레지스터 R1을 나타내는 값 '0x0100000'을 입력해 놓았다고 가정하여, CODE_Base_buf에 R1의 값을 더하여 다시 CODE_Base_buf에 저장한다.
다시 카드번호 '003'을 인출하기 위하여 제어 프로그램이 저장된 변수 EEPROM[index++]에서 순차적으로 3개의 값을 읽어서 카드번호를 환산하여 변수 'sum'에 저장하는데 하나의 카드번호는 16비트로 구성되었다고 가정하여 'sum'에 2를 곱하여 'Card_num'에 저장되며,
끝으로 비트변수 '5'를 인출하기 위하여 EEPROM[index++]에서 하나의 명령을 더 읽어서 이를 16진수로 변환하는 함수 hex_bin()를 이용하여 16진수로 변환되어 변수 'Bit_num'에 저장된다.
이렇게 인출된 카드값 Card_num 과 비트값 Bit_num을 도 13의 머신코드 포맷 항목에 입력하기 위하여,
'CODE_Base_buf = CODE_Base_buf | Card_num;'에서 카드번호가 저장된 변수 'Card_num'을 더하여 다시 CODE_Base_buf에 저장하며,
'CODE_Base_buf = CODE_Base_buf | (Bit_num < 20);' 에서 비트번호가 저장된 변수 'Bit_num'을 머신코드 포맷의 iii의 위치로 맞추기 위하여 왼쪽으로 20번 이동(시프트)시킨 후 CODE_Base_buf에 더하여 다시 CODE_Base_buf에 저장하게 된다.
이를 다시 계산해보면 'AND' 명령의 기본값 '0x30094000'에 입력변수 'X'의 선두번지를 레지스터 R1에 입력한 것으로 가정하여 레지스터 R1을 나타내는 '0x01000000'을 더하고, 카드번호 '003'에 해당하는 값 '0x00000006'을 더하고, 비트번호를 나타내는 '0x00500000'를 더하면 결과적으로 16진수 '31594006'가 생성되는데 이 데이터를 머신코드로 표시하면 도 15와 같이 'AND' 명령어에 해당하는 단 한 줄의 머신코드 'AND.B #5, @(H'0006:12, R1)'가 생성되는데, 이 값은 도13에 표시한 Logical AND 명령 AND.B #imm3, @(disp12, Rn)에 일치함을 알 수 있다.
여기서 #imm3는 3비트 범위(0~7)의 값을 나타내며, disp12는 12비트 범위(0~4095)의 값을 나타낸다.
따라서 이 머신코드는 단 한 문장으로 구성되어 더 이상 최적화할 수 없는 가장 최적화된 명령어임을 알 수 있다.
이러한 과정은 제어 프로그램에 'END' 명령이 나타날 때까지 계속되며 'END'명령에 도달하여 머신코드 생성 프로그램(240)이 종료되면 머신코드 영역(322)으로 이 데이터가 저장된다.
이러한 머신코드 생성 단계가 끝나면, 중앙처리부(110)는 모드 스위치가 'RUN'모드로 선택되거나 통신부(130)를 통하여 'RUN' 명령이 입력되는 경우, 정주기 인터럽트 처리 프로그램(250)을 실행하여 머신코드 영역(322)을 호출하여 수행하게 되며, 수행 결과에 따라 I/O 디바이스 영역(330)에 있는 각 구성요소를 제어하여 원방에 위치한 설비(500)를 제어하게 된다.
도 16은 본 발명의 실시예에 따라 제어 프로그램을 변환하여 생성된 머신코드의 실행 시간 측정 화면의 일례를 나타낸 것이다.
도 16에서, 워드변수 W_buf[10]은 측정한 제어 프로그램의 명령어 수가 3001 문장(스텝)이었음을 나타내며, 제어 프로그램을 머신코드 형태의 중간코드로 변환하여 머신코드 영역(322)에 저장하고, 백그라운드 처리 프로그램(280)에서 이 머신코드 영역(322)을 1000회 호출하고 나서 1회 수행할 때마다 워드변수 W_buf[12]를 1씩 증가하도록 하였고, 이를 반복해서 수행하였으며, 이렇게 5분 동안 수행한 W_buf[12]의 증가 횟수가 8642회임을 나타내고 있다.
따라서, 5분 동안 수행한 총 문장(스텝) 수 N은 다음의 수학식 1과 같다.
Figure pat00001
상기 수학식 1의 결과를 300초(5분)로 나눈 1초당 수행한 스텝 수 Ns는 다음의 수학식 2와 같다.
Figure pat00002
상기 수학식 2의 결과를 주기로 환산하면 다음의 수학식 3과 같다.
Figure pat00003
따라서 본 발명에 의하여 하나의 AND 명령를 처리하는데 소요되는 시간은 불과 11.57 ns 임이 입증되었다.
종래 사용되고 있는 범용 중앙처리장치를 이용한 인터 프리터 방식은 한 문장(스텝)당 수행시간이 약 70s~800nS 이고, 고속 데이터처리를 위하여 별도의 집적회로인 보조연산장치를 부가하는 방식의 경우에는 한 문장(스텝)당 수행시간이 약 20~100nS이다. 이와 비교해보면, 본 발명에 따라 제어 프로그램을 머신코드로 변환하여 수행하는 경우 초고속으로 데이터 처리가 이루어짐을 확인할 수 있다.
이와 같이, 본 발명에 따른 원방감시제어장치(100)는 외부 제어프로그램 작성장치(400)로부터 제어 프로그램을 수신하면, 이를 즉시 한 문장씩 읽고 해석하여 최적화된 머신코드 형식의 중간코드로 변환하여 메모리(170)에 저장한 후, 설비 제어 실행 명령에 따라 메모리(170)에 저장된 머신코드를 호출하여 수행함으로써, 고속의 데이터 처리가 가능하며 설비를 신속하게 제어할 수 있게 된다.
한편, 본 발명의 실시예에서는 원방감시제어장치(100)가 외부로부터 제어 프로그램을 전송받고 이를 원방감시제어장치(100) 내에 구비된 머신코드 생성 프로그램(240)을 통하여 머신코드로 변환하는 것으로 설명하는데, 이러한 제어 프로그램 제작 및 머신코드 생성 방법은 적절하게 변경될 수 있다.
예를 들면 원방감시제어장치(100) 내에 설비 제어프로그램 작성용 프로그램을 구비하여 원방감시제어장치(100) 내에서 직접 설비 제어 프로그램을 작성할 수 있음은 당연하다. 또한, 원방감시제어장치(100) 내에 구비된 머신코드 생성 프로그램(240)을 외부 장치에 구비하여 외부 장치에서 설비 제어 프로그램을 머신코드로 변환하고, 변환된 머신코드를 원방감시제어장치(100)에서 통신망을 통하여 수신하여 메모리(170)에 저장하여 사용할 수 있도록 할 수 있음은 당연하다.
이와 같이, 본 발명은 상술한 실시예에 한정되는 것은 아니며 본 발명이 속하는 기술 분야에서 통상의 지식을 갖는 자에 의해 본 발명의 기술사상과 아래에 기재될 특허청구 범위의 균등범위 내에서 다양한 수정 및 변형이 이루어질 수 있음은 물론이다.
100 : 원방감시제어장치 110 : 중앙처리부
120 : 입력/표시부 130 : 통신부
140 : 인터페이스부 141 : 디지털 인터페이스
142 : 아날로그 인터페이스 150 : 외부 확장용 버퍼
160 : 제어신호 출력부 170 : 메모리
171 : SRAM 메모리 172 : FLASH 메모리
180 : 전원부 200 : 메인 프로그램
210 : 시스템 초기화 프로그램 220 : 통신지원 프로그램
230 : 메모리 관리 프로그램 240 : 머신코드 생성 프로그램
250 : 정주기 인터럽트 처리 프로그램 260 : I/O 디바이스 프로그램
270 : 스케쥴 관리 프로그램 280 : 백그라운드 처리 프로그램
311 : 통신버퍼 영역 312 : 사용자변수 영역
313 : 시스템변수 영역 314 : 메모리버퍼 영역
321 : 제어프로그램 영역 322 : 머신코드 영역
323 : 파라메터 영역 324 : 메인 프로그램 영역
330 : I/O 디바이스 영역 400 : 제어프로그램 작성장치
500 : 설비

Claims (11)

  1. 원방(遠方)에 위치한 설비를 제어하는 원방감시제어장치의 설비 제어방법에 있어서,
    (a) 상기 설비(500)를 제어하기 위한 설비 제어 프로그램을 머신코드 생성 프로그램(240)을 통하여 중간코드 형식인 머신코드로 변환하고, 상기 변환된 머신코드를 메모리(170)에 저장하는 단계와;
    (b) 설비 제어 실행 명령에 따라 상기 메모리(170)에 저장된 머신코드를 호출하여 실행하고, 실행 결과를 출력하여 설비(500)를 제어하는 단계;를 포함하여 이루어지는 것을 특징으로 하는 원방감시제어장치의 설비 제어방법.
  2. 제 1항에 있어서,
    상기 설비 제어 프로그램을 머신코드로 변환하여 메모리에 저장하는 단계(a)에서,
    상기 원방감시제어장치(100)는 외부의 제어프로그램 작성장치(400)를 통하여 작성되어 통신망을 통하여 수신되는 설비 제어 프로그램을 SRAM 메모리(171)의 통신버퍼 영역(311)에 저장하고, 이 통신버퍼 영역(311)에 저장되는 설비 제어 프로그램의 CRC 검사를 수행하여 오류가 없는 경우 FLASH 메모리(172)의 제어프로그램 영역(321)에 저장하는 것을 특징으로 하는 원방감시제어장치의 설비 제어방법.
  3. 제 2항에 있어서,
    상기 원방감시제어장치(100)는 FLASH 메모리(172)에 저장되는 설비 제어 프로그램을 머신코드 생성 프로그램(240)을 통하여 즉시 호출하여 머신코드로 변환하고, 변환되는 머신코드를 FLASH 메모리(172)의 머신코드 영역(322)에 저장하는 것을 특징으로 하는 원방감시제어장치의 설비 제어방법.
  4. 제 1항에 있어서,
    상기 설비 제어 프로그램을 머신코드로 변환하여 메모리에 저장하는 단계(a)에서,
    상기 원방감시제어장치(100)와 통신망을 통하여 연결된 제어프로그램 작성장치(400)를 통하여 설비 제어 프로그램이 생성되고, 상기 생성되는 설비 제어 프로그램이 머신코드 생성 프로그램을 통하여 머신코드로 변환된 후,
    상기 통신망을 통하여 원방감시제어장치(100)에 수신되어 원방감시제어장치(100)에 구비된 메모리(170)에 저장되는 것을 특징으로 하는 원방감시제어장치의 설비 제어방법.
  5. 제 1항에 있어서,
    상기 머신코드가 호출되어 실행하는 단계(b)에서,
    상기 원방감시제어장치(100)는 입력/표시부(120)에 구비된 모드 스위치의 실행(RUN) 명령 또는 통신망을 통하여 실행 명령이 수신되면, 정주기 인터럽트 처리 프로그램(250)을 통하여 메모리(170)에 저장된 머신코드를 호출하여 실행하는 것을 특징으로 하는 원방감시제어장치의 설비 제어방법.
  6. 제 5항에 있어서,
    상기 원방감시제어장치(100)는 머신코드의 실행 결과에 따라 I/O 디바이스 프로그램(260)을 통하여 I/O 디바이스 영역(330)에 위치한 장치를 제어하여, 원방에 위치한 설비(500)를 제어하는 것을 특징으로 하는 원방감시제어장치의 설비 제어방법.
  7. 제 6항에 있어서,
    상기 I/O 디바이스 프로그램(260)을 통하여 제어되는 I/O 디바이스 영역(330)에 위치한 장치는,
    TCP 또는 UDP 프로토콜을 지원하는 통신부(130)와, 외부 확장용 베이스와 데이터를 송수신하는 외부 확장용 버퍼(150)와, 외부 디지털 장치 및 아날로그 장치와 데이터를 송수신하는 인터페이스부(140)를 포함하여 이루어지는 것을 특징으로 하는 원방감시제어장치의 설비 제어방법.
  8. 원방(遠方)에 위치한 설비를 제어하는 원방감시제어장치에 있어서,
    제어프로그램 작성장치(400)를 통하여 작성된 설비 제어 프로그램을 머신코드 생성 프로그램(240)을 통하여 중간코드 형식인 머신코드로 변환하여 메모리(170)에 저장한 후, 설비 제어 실행 명령에 따라 상기 메모리(170)에 저장된 머신코드를 호출하여 실행함으로써 설비(500)를 제어하는 것을 특징으로 하는 원방감시제어장치.
  9. 제 8항에 있어서,
    상기 메모리(170)에는 상기 제어프로그램 작성장치(400)에 의해 작성된 설비 제어 프로그램과, 상기 설비 제어 프로그램을 머신코드로 변환하는 머신코드 생성 프로그램(240), 상기 변환된 머신코드를 설비 제어 실행 명령에 따라 실행하는 정주기 인터럽트 처리프로그램(250), 상기 머신코드 실행에 따라 원방에 위치한 설비를 제어하는 I/O 디바이스 프로그램(260)을 포함하는 메인 프로그램(200)과, 상기 머신코드 생성 프로그램(240)을 통하여 생성된 머신코드가 저장되고;
    상기 메모리(170)에 저장된 메인 프로그램(200)은 중앙처리부(110)에 의해 실행되어, 설비 제어 프로그램이 머신코드로 변환되고, 변환된 머신코드가 실행되어 설비(400)가 제어되는 것을 특징으로 하는 원방감시제어장치.
  10. 제 9항에 있어서,
    상기 메인 프로그램(200)에 구비된 I/O 디바이스 프로그램(260)은
    TCP 또는 UDP 프로토콜을 지원하는 통신부(130)와, 외부 확장용 베이스와 데이터를 송수신하는 외부 확장용 버퍼(150)와, 외부 디지털 장치 및 아날로그 장치와 데이터를 송수신하는 인터페이스부(140)를 포함하는 I/O 디바이스 영역(330)의 장치를 통하여 설비(400)를 제어하는 것을 특징으로 하는 원방감시제어장치.
  11. 제 9항에 있어서,
    상기 메모리(170)에는 설비(400)의 스케쥴을 관리하는 스케쥴 관리 프로그램과, 우선순위가 낮은 프로그램을 동작시키거나 대기하는 백그라운드 처리 프로그램(280)이 구비된 것을 특징으로 하는 원방감시제어장치.
KR1020110110635A 2011-10-27 2011-10-27 머신코드 생성 방식을 이용한 원격감시제어장치의 설비 제어방법 및 그 원격감시제어장치 KR101333639B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110110635A KR101333639B1 (ko) 2011-10-27 2011-10-27 머신코드 생성 방식을 이용한 원격감시제어장치의 설비 제어방법 및 그 원격감시제어장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110110635A KR101333639B1 (ko) 2011-10-27 2011-10-27 머신코드 생성 방식을 이용한 원격감시제어장치의 설비 제어방법 및 그 원격감시제어장치

Publications (2)

Publication Number Publication Date
KR20130046204A true KR20130046204A (ko) 2013-05-07
KR101333639B1 KR101333639B1 (ko) 2013-11-27

Family

ID=48657958

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110110635A KR101333639B1 (ko) 2011-10-27 2011-10-27 머신코드 생성 방식을 이용한 원격감시제어장치의 설비 제어방법 및 그 원격감시제어장치

Country Status (1)

Country Link
KR (1) KR101333639B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103941714A (zh) * 2014-05-13 2014-07-23 江苏高远电力科技有限公司 变电站环境智能控制装置
KR20160060250A (ko) * 2014-11-19 2016-05-30 엘지전자 주식회사 설비 제어 장치, 이를 포함한 빌딩 자동화 시스템 및 설비 제어 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1165622A (ja) * 1997-08-20 1999-03-09 Denso Corp プログラマブルコントローラ
KR200250315Y1 (ko) * 2001-07-19 2001-11-17 컴파일테크놀로지(주) 반도체형 소형 피엘씨
KR100838235B1 (ko) * 2007-08-07 2008-06-17 (주)성림엠앤씨 제어장치 및 그에 의한 제어방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103941714A (zh) * 2014-05-13 2014-07-23 江苏高远电力科技有限公司 变电站环境智能控制装置
KR20160060250A (ko) * 2014-11-19 2016-05-30 엘지전자 주식회사 설비 제어 장치, 이를 포함한 빌딩 자동화 시스템 및 설비 제어 방법

Also Published As

Publication number Publication date
KR101333639B1 (ko) 2013-11-27

Similar Documents

Publication Publication Date Title
US9778630B2 (en) Control device and system program for maintaining global variable and reference data consistency during parallel processing of multiple tasks
US20160054718A1 (en) Monitoring control system and control device
CN111095195B (zh) 控制器、控制方法以及存储介质
US11061377B2 (en) Control device
JP6481267B2 (ja) プログラマブル表示器
JP2018173883A (ja) 制御装置、制御プログラム、制御システム、および制御方法
JP2015176191A (ja) コントローラ
TWI534569B (zh) 控制裝置、開發裝置,及開發程式
KR101333639B1 (ko) 머신코드 생성 방식을 이용한 원격감시제어장치의 설비 제어방법 및 그 원격감시제어장치
US20030009508A1 (en) Method and system for providing processor task scheduling
CN111095194B (zh) 控制系统、控制器以及控制方法
US11287793B2 (en) Control device, control method for control device, information processing program, and recording medium
US20210064318A1 (en) Display Device, Screen Generation Method, and Screen Generation Program
CN112639636B (zh) 开发支援装置、开发支援方法以及存储介质
EP3952218A1 (en) Network management device, management method, management program, and recording medium
US11550286B2 (en) Control apparatus, monitoring method, and monitoring program
CN111052010A (zh) 控制系统、开发辅助装置和开发辅助程序
JP4324866B2 (ja) ツール
US20180059649A1 (en) Simulator linkage device, control method of simulator linkage device, information processing program and recording medium
CN110442986B (zh) 一种基于cpld逻辑代码生成器管理服务器主板的方法
US20220276643A1 (en) Control system
US20060155392A1 (en) Method and a tool for allocating computational resources in a distributed control system
CN110076626B (zh) 加工时间预测装置
JP2018022288A (ja) 制御装置、制御システム及び制御方法
US20190081864A1 (en) Gateway and method of determining machines to be networked at gateway

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171121

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20191111

Year of fee payment: 7