컴퓨터 계측 및 실습 개 요 영남대학교 기계공학부
PC의 기본장치
PC의 작동구조
컴퓨터의 기본구성
CPU의 구조
IBM-PC의 입출력 단자
Analog and Digital Analog: 측정치의 값이 연속적인 형태 Digital의 장단점: Digital화 된 이후에는 추가적인 noise가 없으나, resolution이 제한적임
디지털의 장점 잡음을 거의 타지 않음 작동전압이 낮음 (5V 혹은 12V) 자동 스케일링이 가능(scaling) 다른 기기(혹은 컴퓨터)와의 연결이 용이 데이터의 처리(data reduction, filtering...)가 가능하다
계측제어계의 구성요소
어드레스 디코드
Breadboard의 모양
Breadboard의 배선
COMI-SD104 Multi-Function Board 커미조아 인터페이스보드 COMI-SD104 Multi-Function Board
기본 사양 Bus BM PC Bus(32Bit PCI) 크기 195 * 107 mm 자원할당 Plug & Play 방식의 자동할당
입출력 채널 아날로그 입력 Differential 8 Channel, Single Ended 16 Channel
A/D Conversion Complete 12 bit A/D Conversion A/D Converter : Burr Brown ADS7899 Type of ADC : Successive approximation A/D Channel : 16 Single Ended, 8 Differential Input Voltage Range : 10 V, 5 V, 2, 1, 0 10V, 0 5V, 0 2V,0 1V Resolution : 14 Bits, 1 in 16384 Maximum Sampling Rate : 375 kHz Streaming to Disk Rate : 375 kHz (Tested on PentiumⅢ 700MHz) Input Impedance : 10 Mohm A/D Trigger Mode : Programmable Timer, Software, External Trigger Data Transfer : Programmed I/o, Interrupt, Block Mode Channel Configuration : Uni polar/Bipolar, Gain, Channel, Channel No FIFO Size : 4 Kbytes
D/A Conversion D/A Converter : Burr Brown DAC7545 D/A Channel : 2 Channel (for single DC Output) Resolution : 12 Bits, 1 in 4096 Setting time : 2usec Output Voltage Range : 10 V D/A Trigger Mode : Software Data Transfer : Programmed I/O
Digital Input TTL Compatible Input Channel : 8 Channel Voltage Level : Low(0~0.8 V), High(2V~) Input Load : Low 0.5V(0.2 mA), High 2.7V(20 mA) Data Transfer : Programmed I/O
Digital Output TTL Compatible Output Channel 8 Channel Voltage Level Low(0~0.4 V), High(2.4V~) Input Load Low 0.5V(0.2 mA), High 2.7V(0.4 mA) Data Transfer Programmed I/O
Programmable Counter COMI-SD Counter Clock Input Channel 2 Channel Resolution 32 bits Gate Input Software Reset Real Time Clock
COMI-SD104 Reading 레지스터 구조
COMI-SD104 Writing 레지스터 구조
프로그램 작성 공통 사항 (1) Comidas.h와 Comidas.cpp를 Include하기 ComidasCommon.h, Comidas.h 그리고 Comidas.cpp 파일을 프로젝트가 있는 폴더에 복사한다. Comidas.cpp 파일을 프로젝트에 추가한다. Comidas.cpp 소스파일의 맨 처음 부분에 #include "stdafx.h" 구문을 추가한다. COMI-SD104 보드를 제어하는 함수를 사용하는 소스파일에 #include “Comidas.h” 구문을 추가한다.
프로그램 작성 공통 사항 (2) 디바이스 핸들 디바이스 핸들은 COMI-SD104를 제어하는 모든 함수의 파라미터로 사용되므로 전역변수 또는 메인 윈도우 클래스의 멤버 변수로 관리한다. 일반적으로 다이얼로그 기반 프로그램인 경우 메인 다이얼로그 클래스(XXXXDlg)의 멤버변수로 선언한다. class CASISTDlg : public CDialog { ………... public: //user parameter HANDLE m_hDevice; };
프로그램 작성 공통 사항 (3-1) 라이브러리 및 디바이스 로딩(Loading) 프로그램 시작 부분에서 다음과 같은 함수를 수행하여 라이브러리 및 디바이스를 로드하여야 한다. BOOL COMI_LoadDll(void) : 라이브러리를 로드한다. HANDLE COMI_LoadDevice (COMIDAS_DEVID deviceID, ULONG instance) : 지정한 디바이스를 로드한다. 일반적으로 다이얼로그 기반 프로그램인 경우에는 OnInitDialog()함수에서 라이브러리 및 디바이스 로딩을 수행하면된다.
프로그램 작성 공통 사항 (3-2)
프로그램 작성 공통 사항 (4-1) 라이브러리 및 디바이스 언로딩(Unloading) 프로그램 종료 부분에서 다음과 같은 함수를 수행하여 라이브러리 및 디바이스를 언로드하여야 한다. void COMI_UnloadDll(void) : 라이브러리를 로드한다. void COMI_UnloadDevice (HANDLE hDevice) : 지정한 디바이스를 언로드한다. 일반적으로 다이얼로그 기반 프로그램인 경우에는 WM_CLOSE이벤트 핸들러인 OnClose()함수에서 라이브러리 및 디바이스 언로딩을 수행하면된다.
프로그램 작성 공통 사항 (4-2) ☞ OnClose() 함수 생성 및 작성 예
Digital Output 구동 프로그램 LED, 7세그먼트, 스테핑 모터
기본함수 SetTimer ( UINT nIDEvent, 10, NULL ) OnTimer ( UINT nIDEvent ) KillTimer ( UINT nIDEvent )
SetTimer ( 0, 10, NULL) SetTimer 는 OnTimer, KillTimer 와 함께 사용되며 OnTimer 함수를 구동하는 함수이다. 여기서 첫번째 매개변수 0은 실행되는 Timer 번호, 10은 단위가 msec로 OnTimer 실행 간격을 의미한다. 즉 0번 Timer가 0.01초 마다 실행된다.
OnTimer ( UINT nIDEvent ) nIDEvent는 Timer 번호를 의미한다. SetTimer 함수가 한 개만 존재할 때는 nIDEvent는 0으로 인식하고 여러 개의 SetTimer 함수가 존재할 때는SetTimer 함수의 첫번째 매개변수 값을 받아 작업이 분기되어진다.
KillTimer ( 0 ) KillTimer 함수의 매개변수는 Timer 번호(nIDEvent)를 의미한다. 여기에는 0 번 Timer를 지시하고 있다. 따라서 이 KillTimer 함수는 0 번 Timer를 끝낸다.