C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[7142] Re:제어계측쪽에서 필요한 제어 프로그램머의 기본이 무엇인지 고수님들께...조언 부탁바랍니다.
김성진.kark [kark] 973 읽음    2003-05-02 08:53
제어계측이라고 하면 제어와 계측으로 나눠집니다.

제어를 위한 SW는 실시간 처리를 해야하기 때문에 임베디드 플랫폼에서 작성됩니다.

그러다보니 모니터링 등의 서비스를 추가하기가 곤란합니다. 해서 계측이라는 분야가

접목된 것입니다. 즉 제어대상의 제어를 위한 SW와 제어대상 및 제어 SW의 모니터링 및

보정(Calibration)툴의 분야로 나눌 수 있다는 겁니다.


먼저 제어 SW를 생각해봅시다. 첫째, 제어 SW에 대해서 고수가 될려면 제어대상에 대해서

감각이 있어야 합니다. 이해가 아니고 감각이라고 한 이유가 있습니다. 제어대상 자체에

대한 연구가 목적이라면 철저한 이해가 필요하겠지만, 대게 어떤 원리로 돌아가고 어떤 신호를

받아서 어떤 값을 계산해서 어떻게 출력하면 되겠구나 하는 정도의 감각만 있으면 대부분의

제어대상을 극복할 수 있습니다. 왜냐하면 제어대상에 대해서 잘 알고있는 사람(전기,기계

전문가)에게 조언을 구하면 자세한 사양을 구할 수 있기 때문입니다.

둘째, HW에 대해서 깊이 있는 접근이 필요합니다. 제어 SW의 특성상 임베디드(embedded) 플랫

폼에서 작성을 하기때문에, MCU(Micro Control Unit)을 직접 다루는 경우가 대부분입니다. 직접

다룬다는 것은 MCU의 Register 조작, interrupt 설정 및 timer 셋팅 등을 MCU 메뉴얼을 참고

하여 직접해야 한다는 겁니다. 직접하지 않는 방법은 실시간운영체제(RTOS:Real-Time Operating

System)을 사용하면 한겹 덮을 수가 있는데요, RTOS 역시 HW에 좀더 가깝습니다. 실제로 RTOS의

dispatch time와 task scheduling 수준에서 각종 인터럽터를 실시간으로 처리하기에는 한계가

있습니다.

셋째, 제어 알고리즘 및 각종 DAQ 처리를 익혀야 합니다. 제어 알고리즘은 PID, fuzzy logic 등

많으나 실제로는 PID 정도면 충분합니다. 그리고 ADC(Analog to Digital Convertor), DAC(Digital

to Analog Convertor)를 이용해서 입출력 처리하는 것과 주파수 베이스의 PWM(Pulse Width Modulation)

와 Port ON/OFF를 이용한 logic input/output 정도만 처리하실 수 있으면 됩니다. 아! filtering

쪽도 해야겠군요.


이번에는 모니터링, 보정 툴에 대해서 생각해봅시다. 첫째, 제어대상의 상태를 실시간으로

데이터화 할 수 있는 환경을 만들어야 합니다. 실시간이라고해서 이벤트가 있어난 시간과 동일한 시간(물론

정해진 사양내에서)에 데이터를 시각화해야 한다는 것은 아닙니다. 단지 이벤트가 특정 시간에 일어났다는

보장을 해주면 된다는 것입니다. 이 센서 신호 데이터는 10msec resolution으로 발생한 것입니다라고 얘기

를 할수 있으면 됩니다. 그리고 이 데이터를 바로 보내던 늦게 보내던 상관은 없습니다. (물론 alarm이나

warning 등의 시스템 이벤트에 대해서는 즉각 반응을 해야겠죠.) 이러한 것은 입력 데이터 가공 시에 지원

이 되어야 합니다. 제어 SW에서 할 수도 있고 DAQ 전용 모듈에서 할 수도 있을겁니다. (여기에서 좀 복잡

한 문제를 생각해봐야하지만, 다음에 얘기할 기회가 있을것 같습니다.)

둘째, 모니터링하면서 데이터를 보정하는 기능을 지원해야 합니다. 단순하다면 단순한 것이지만, 제어 SW

쪽에 포함된 상수나 테이블을 외부 툴에서 수정을 할 수 있는 기능을 말합니다. Memory map을 작성해서

phygical address에 바로 쓰던지, 아님 통신의 application layer에서 처리를 해주던지는 관계없습니다.

왜 이런 기능이 필요하냐하면, 제어이기 때문입니다. 기계쪽이면 제작단계에서 이미 수학적(ㅜ.ㅜ)으로 치밀

한 계산하에 설계가 되어, 보정을 하지 않을겁니다. 실패하면 새로 만들어야죠. 하지만 제어쪽은 Gain 튜닝

등으로 제어루틴을 최적화 시킵니다. 그리고 다른 시각으로는 센서 스팩 등이 바뀔 수 있다는 문제도 있고(

이럴때는 센터 테이블을 수정해줘야합니다.) 실험적으로 테이블이나 상수값을 구해야할 경우도 있습니다.

셋째, 양쪽다 포함되는 얘기입니다만, 통신 방법을 가지고 있어야 합니다. Serial이든 CAN이든 ethernet이든

상황에 맞게 사용하면 됩니다.


제어 SW를 연마할 수 있는 가장 확실한 방법은 그쪽 일을 하는 것입니다. 그럴 상황이 아니라면, 주로 사용할

MCU의 개발보드를 구하셔서 직접 코딩해가면서 감각을 익힐 수 있을 것입니다. 어느정도 감각이 익혀졌다면

RTOS 및 임베디드 유틸 SW(임베디드 디버깅, 모니터링 툴, 파일시스템 등)을 해보시면 됩니다.

모니터링, 보정 툴은 C++Builder로 직접 만드시는게 확실한 방법인 것 같습니다. MCU 개발보드에 SW를 다운

로드 시켜서 C++Builder로 만든 톨과 통신으로 각종 데이터를 주고 받는 모습을 그려보시면 될 것 같습니다.


읽으시느라 수고하셨습니다. 저도 이렇게 길어질줄 몰랐네요. 결과적으로 거창하게 늘여놓게

되었지만, 실제로는 필요한 모듈하나씩 만들다보면, 그걸 계속 우려먹게 됩니다. 사양을 만족하는

루틴만 있으면 되니까요. 에구..무슨 얘길 하는지..^^

좋은 하루 되시길...


P.S: 원자력이라고 하시면..혹시 대전에 계신가요? 한국원자력연구원..

     원자력 있을만한데가 잘없자나요. 저도 대전에 있는데...


원자력 님이 쓰신 글 :
: 안녕하십니까....
:
: 현장에서 실무를 뛰고 계신 고수님들께.....
:
: 저는 제어계측쪽 회사에서 근무하고 있는데요....
:
: 좀더 고급 인력으로 상승할려면......
:
: 프로그램을 공부해야 할것 같아서요...
:
: 학교 다닐때. c언어 문법 조금 본것 밖에 없는데요..
:
: 제어쪽으로는 c언어를 공부해야 한다는 이야기를 들은적 있어서요..
:
: 이렇게 고수님들의 조언을 듣고자...여기에 글 남겨 봅니다.
:
: ..
:
: 기간은 최대 3년 생각하고 있습니다.(기본을 다지는데 필요한 시간이라고 생각하고 있습니다.)
:
: 회사 다니면서....24시간 공부할수는 없는것이고..
:
: 조금씩 저 자신의 내공을 쌓아 볼려고 하는데...
:
: 안하던 공부를 시작할려니....앞이 컴컴해 보이네요...
:
: 조금 황당한 질문이 되겠지만...
:
: 제가 제어쪽 프로그램을 공부해야 한다면..
:
: 뭐부터 다시 공부해야 하는지....방향좀 제시해주실분을 찾고 있습니다.
:
: 고수님들의 많은 지도 편달 부탁드리면.....
:
: 내공을 올리는 그날까지...이사이트에서...죽치고 살고 싶네요..^^
:
: P.S 성하야.....많이 도와 줄꺼지....
:
:

+ -

관련 글 리스트
7135 제어계측쪽에서 필요한 제어 프로그램머의 기본이 무엇인지 고수님들께...조언 부탁바랍니다. 원자력 871 2003/05/01
7142     Re:제어계측쪽에서 필요한 제어 프로그램머의 기본이 무엇인지 고수님들께...조언 부탁바랍니다. 김성진.kark 973 2003/05/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.