본 예제는 IEC-Series에서 지원되는 옵션 제품 중 Smart I/O-I, II, III의 기능을 테스트할 수 있도록 만든 예제 프로그램(C#, VB.NET) 입니다.
본 예제 프로그램으로 아래의 표와 같이 Smart I/O - Block Series와 SmartX Framework의 H/W 제어기능을 연동 테스트하실 수 있습니다.
SmartX Framework |
Smart I/O - Block Series |
|
---|---|---|
SmartGPIO (INPUT) |
↔ | INPUT Block |
SmartGPIO (OUTPUT) |
↔ | Relay Block |
SmartGPIO (OUTPUT) SmartPWM |
↔ | FET Block |
SmartADC | ↔ | ADC Block |
SmartDAC | ↔ | DAC Block |
SmartInputCounter (INPUT) |
↔ | InputCounter Block |
SmartX Framework와 관련된 컴포넌트의 사용법은 SmartX Framework Reference Guide(Programming Guide)의 SmartGPIO, SmartPWM, SmartADC, SmartDAC편을 참조하시기 바랍니다. Smart I/O-I, II, III의 하드웨어 설명 및 사용법은 Smart I/O-Series 제품매뉴얼을 참조하시기 바랍니다.
본 자료는
1. SmartGPIO, SmartPWM, SmartADC, SmartDAC, SmartInputCounter의 사용 용도
1-2. SmartPWM
1-3. SmartADC
1-4. SmartDAC
1-5. SmartInputCounter
2. Smart I/O-Series 사용시 주의 사항
2-2. 케이블 사용시 주의
3. 예제 프로그램 동작 설명
4. Smart I/O-Series와 연동 및 테스트 방법
4-2. Smart I/O-II/III 설정 및 Test 방법 의 순서로 설명합니다.
5. 프로그램 전체 소스
순서로 진행합니다.
1. SmartGPIO, SmartPWM, SmartADC, SmartDAC, SmartInputCounter의 사용 용도
스위치, 외부 센서들로부터 데이터를 입력 받을 때(INPUT), 장치 및 장비의 On/Off 제어를 할 경우 (OUTPUT)사용합니다.
1-2. SmartADC온습도, 근접, 압축, 가속도, 자이로센서 등 아날로그센서로부터 데이터를 입력 받는 용도로 사용합니다.
1-3. SmartDAC전압을 조절하여 모터드라이버 및 각종 구동장치(Acatuator)의 속도제어 시 사용합니다.
1-4. SmartPWMDC모터 속도제어, 냉온소자 온도제어, Servo모터 각도제어 등 DutyRate를 이용한 전압제어로 속도 및 강약조절에 사용합니다.
1-5. SmartInputCounter기존 SmartGPIO의 입력 성능을 대폭 개선하여 SmartGPIO의 입력대비 고속의 입력 처리 기능을 지원합니다.
2. Smart I/O-Series 사용시 주의 사항
Input Block의 경우 Smart I/O보드에 별도의 전원을 연결하지 않아도 기능 사용에 문제가 없지만 Relay, ADC, DAC Block의 경우 입력전원이 없을 경우 기능을 사용할 수 없습니다.
Smart-I/O I, II, III보드 입력전원은 AC(220V) 또는 DC(12V)를 입력해야 하며 Smart-I/O I, II 에 DC전원 사용시 Smart-I/O보드의 SMPS를 제거 후 0Ω을 연결 해야 합니다.
Smart-I/O III 에 DC전원 사용시 DC 커넥터를 납땜하여 사용합니다.
IEC-Series와 Smart I/O 확장 케이블(Extension Port) 연결 시 포트와 케이블이 바뀌지 않도록 주의합니다.
3. 예제 프로그램 동작 설명
-
① SmartGPIO
- 1) 사용하려는 Port의 Pin 방향(INPUT/OUTPUT)을 설정한 뒤 적용합니다.
(INPUT/OUTPUT) 버튼이 토글 모드라서 클릭할 때 마다 INPUT과 OUTPUT의 방향설정이 변경됩니다. 버튼 클릭으로 입/출력 방향 전환을 한 다음 해당 내용을 적용하려면 Set Apply 버튼을 클릭해야 합니다.
- 2) 설정이 적용된 GPIO 기능을 시작합니다.
Start 버튼을 클릭하면 INPUT의 경우 외부에 연결된 입력센서로부터 입력 신호가 감지되는 경우 해당하는 핀 옆에 LED가 ON 되며, OUTPUT으로 사용시 출력전압을 Low/High로 출력신호를 내보낼 수 있습니다.
-
② SmartADC
- 1) 사용하려는 ADC 채널을 선택한 뒤 시작합니다.
사용하려는 ADC 채널을 선택한 뒤 Start 버튼을 클릭하면 외부에 연결된 아날로그(Analog) 센서로부터 데이터를 입력 받아 화면에 디지털(Digital)값으로 출력합니다.
-
③ SmartDAC
- 1) 사용하려는 DAC 채널을 선택한 뒤 시작합니다.
사용하려는 DAC 채널을 선택한 뒤 Start 버튼을 클릭하면 디지털(Digital)값을 외부에 연결된 장치로 아날로그(Analog) 신호를 출력합니다. (0~5V 또는 0~10V)
-
④ SmartPWM
- 1) 사용하려는 PWM 채널을 선택한 뒤 시작합니다.
사용하려는 PWM 채널을 선택한 뒤 Start 버튼을 클릭하면 PWM_Duty 설정 값에 따라 PWM 출력값이 다르게 출력되며 오실로스코프(Oscilloscope)를 통해 파형으로 관찰 가능합니다. 캐리어 주파수는 기본 설정되어 있으며 변경할 수 없고 듀티비(DutyRate)만 변경 가능합니다.
-
⑤ SmartInputCounter
- 1) Form2로 이동한 뒤 지정한 Port의 입력신호를 고속으로 카운팅합니다.
화면 우측 상단의 Form2 버튼을 클릭하여 Form2화면으로 이동합니다. A1(A0~A3), A2(A4~A7), B1(B0~B3), B2(B4~B7)포트 중에 고속 카운팅을 원하는 포트(핀)을 체크하여 선택하고 SET버튼을 클릭하면 사용 준비상태가 됩니다. 체크된 포트에서 START버튼을 클릭하면 고속 카운팅의 감지를 시작하고 STOP 버튼을 클릭하면 감지를 중지합니다.
4. Smart I/O-Series와 연동 및 테스트 방법
Smart I/O-I은 INPUT0~7(B0~B7), OUTPUT(TROUT1~4) `A0~A3, OUTPUT(RY_SW1~4), A4~A7, PWM(PWM1, PWM2), ADC(ADIN0, ADIN1)으로 구성되어 있습니다.
① AC90V~240V. 50Hz/60Hz
② Relay S/W 1~4(A4~A7) OUTPUT사용
③ PWM 1~2 사용
④ FETOUT 1~4(A0~A3) OUTPUT사용
⑤ A/DIN 0~1 ADC사용
⑥ INPUT 0~7(B0~B7) INPUT사용
프로그램 실행은 위와 같이 셋팅 후 Set Apply → Start(시작) → Stop(중지)로 실행
Smart I/O-I의 각포트와 프로그램상의 연결(매칭) 정보는 다음과 같습니다.
입력(INPUT). DC입력
Smart I/O-I에서 PORT-B는 INPUT(입력)기능으로 사용하므로 프로그램에서 PORT-B의 모든 핀을 INPUT(입력)으로 설정해야 합니다.
Smart I/O-I 실크 명칭 |
INPUT 0 (B0) |
INPUT 1 (B1) |
INPUT 2 (B2) |
INPUT 3 (B3) |
---|---|---|---|---|
INPUT 4 (B4) |
INPUT 5 (B5) |
INPUT 6 (B6) |
INPUT 7 (B7) |
|
Extension Port-I |
PORT-B0 | PORT-B1 | PORT-B2 | PORT-B3 |
PORT-B4 | PORT-B5 | PORT-B6 | PORT-B7 |
- 외부상태(입력)에 따른 PortData값 변환
Direction | 외부상태 (입력) |
PortData 값 (High/Low) |
---|---|---|
입력 | High(12~24V) | High(1) |
Low(0V) | Low(0) |
출력(OUTPUT)
Smart I/O-I에서 PORT-A는 OUTPUT(출력)기능으로 사용하므로 프로그램에서 PORT-A의 모든 핀을 OUTPUT(출력)으로 설정해야 합니다.
Smart I/O-I 실크 명칭 |
TROUT1 (A0) |
TROUT2 (A1) |
TROUT3 (A2) |
TROUT4 (A3) |
---|---|---|---|---|
RY_SW4 (A4) |
RY_SW3 (A5) |
RY_SW2 (A6) |
RY_SW1 (A7) |
|
Extension Port-I |
PORT-A0 | PORT-A1 | PORT-A2 | PORT-A3 |
PORT-A4 | PORT-A5 | PORT-A6 | PORT-A7 |
- PortData값에 따른 외부상태 변화
Direction | Port Data 값 (High/Low) |
외부상태 | LCD Status |
---|---|---|---|
출력 | High | ON | ON |
Low | OFF | OFF |
입력(ADC)
ADC는 INPUT(입력)으로 Smart I/O-I에서 A/D IN0과 A/D IN1 기능으로 사용하므로 프로그램에서 ADC1과 ADC2로 설정해야 합니다.
Smart I/O-I 실크 명칭 |
A/DIN0 | A/DIN1 |
---|---|---|
Extension Port - I |
AIN0 | AIN1 |
- 외부상태(입력전압)에 따른 Digital 값 변환
0 ~ 5V | 0 ~ 10V | |
---|---|---|
IEC667 4Ch/12Bit (4096) |
0V : 0 5V : 4095 |
0V : 0 10V : 4095 |
IEC1000 4Ch/12Bit (4096) | 0V : 0 5V : 4095 |
0V : 0 10V : 40955 |
출력(PWM)
Smart I/O-I 실크 명칭 |
PWM1 | PWM2 |
---|---|---|
Extension Port - I |
PWM1 | PWM2 |
고속입력(SmartInputCounter)
SmartI/O-I에서 InputCounter(고속입력) 기능은 사용할 수 없습니다
4-2. Smart I/O-II 설정 및 Test 방법Smart I/O-II는 A0~A7, B0~B7을 전부 입력(INPUT)으로 사용하거나 전부 출력(OUTPUT) 또는 부분 입력과 출력으로 사용이 가능합니다. 각블록 장착 가능위치는 Smart I/O-Series 제품 메뉴얼의 Smart I/O-II, III Base Board 편을 참고바랍니다.
아래설명은 따라서 해볼 수 있는 예시로서 A0~A3(INPUT Block), A4~A7(FET Block), B0~B3(FET Block), B4~B7(DAC Block)을 사용하는 예시이며 또한 PWM(PWM1, PWM2)보드 포함, ADC(ADIN0, ADIN1) 보드 포함으로 구성되어 있습니다. 실제 개발시에는 개발 환경에 맞게 재구성하여 사용바랍니다.
①POWER(AC90V~240V)
②A/D(AIN2~3) 사용안함
③PORT A(A0~A3) INPUT설정
④PORT A(A4~A7) OUTPUT설정
⑤PWM1/PWM2 설정
⑥PORT B(B4~B7) DAC설정
⑦PORT B(B0~B3) OUTPUT설정
⑧ADC(0~5V또는0~10V)
⑨ADC(0~5V또는0~10V)
⑩A/DIN0, A/DIN1설정
프로그램 실행은 위와 같이 셋팅 후 Set Apply → Start(시작) → Stop(중지)로 실행
Smart I/O-II 보드 장착 예시(Form2)
아래설명은 따라서 해볼 수 있는 예시로서 A0~A3(InputCounter Block), A4~A7(InputCounter Block), B0~B3(InputCounter Block), B4~B7(InputCounter Block)를 사용하는 예시입니다.
①POWER(AC90V~240V)
②A/D(AIN2~3) 사용안함
③PORT A(A0~A3) InputCounter설정
④PORT A(A4~A7) InputCounter설정
⑤PWM 사용안함
⑥PORT B(B4~B7) InputCounter설정
⑦PORT B(B0~B3) InputCounter설정
⑧ADC(0~5V또는0~10V) 사용안함
⑨ADC(0~5V또는0~10V) 사용안함
⑩A/DIN0, A/DIN1 사용안함
Smart I/O-II 내부에는 Port A 8Ch, Port B 8Ch, A/D 4Ch, PWM 2Ch로 구성되어 있습니다.
입력(INPUT). DC입력Smart I/O-II에서 PORT-A, PORT-B는 INPUT(입력)으로 사용 가능합니다.
Smart I/O - II |
BLOCK | Smart I/O-II 포트이름 |
프로그램 위치 |
Channel |
---|---|---|---|---|
DIGITAL I/O |
PORT A |
A0~A7 | PORT A 0~7 |
8Ch |
PORT B |
B0~B7 | PORT B 0~7 |
8Ch |
외부상태(입력)에 따른 PortData 값 변환
Direction | 외부상태 (입력) |
PortData 값 (High/Low) |
---|---|---|
입력 | High (12~24V) |
High (1) |
Low (0V) |
Low (0) |
출력(OUTPUT)
Smart I/O-II에서 PORT-A, PORT-B는 입력(INPUT) 또는 출력(OUTPUT)기능으로 사용 가능합니다.
Smart I/O - II |
BLOCK | SmartI/O-II 포트이름 |
프로그램 위치 |
Channel |
---|---|---|---|---|
DIGITAL I/O |
PORT A |
PORT A0 ~ A7 |
PORT A0 ~ 7 |
8Ch |
PORT B |
PORT B0 ~ B7 |
PORT B0 ~ 7 |
8Ch |
- Port Data값에 따른 외부상태 변화
Direction | Port Data 값 (High/Low) |
외부상태 | LCD Status |
---|---|---|---|
출력 | High | ON | ON |
Low | OFF | OFF |
입력(ADC)
ADC는 INPUT(입력)으로 Smart I/O-II에서 A/D 0~1(기본제공), A/D 2~3(블록장착) 기능으로 사용하므로 프로그램에서 ADC1~4까지 사용이 가능합니다.
Smart I/O-II 실크 명칭 |
A/D IN0 (기본제공) |
A/D IN1 (기본제공) |
A/D IN2 (블록장착) |
A/D IN3 (블록장착) |
---|---|---|---|---|
Extension Port-I | AIN0 | AIN1 | AIN2 | AIN3 |
- 외부상태(입력전압)에 따른 Digital 값 변환
0 ~ 5V | 0 ~ 10V | |
---|---|---|
IEC667 4Ch/12Bit (4096) |
0V : 0 5V : 4095 |
0V : 0 10V : 4095 |
IEC1000 4ch/12Bit (4096) |
0V : 0 5V : 4095 |
0V : 0 10V : 4095 |
출력(DAC)
DAC는 OUTPUT(출력)으로 DAC1과 DAC2 기능으로 사용하므로 프로그램에서 DAC1과 DAC2만 사용이 가능합니다. Smart I/O-II/III에서 DAC1, DAC2를 사용하려면 DAC Block을 구매하여 장착해야만 합니다.
Smart I/O-II 실크 명칭 |
DAC1 PORT B블록 |
DAC2 PORT B블록 |
---|---|---|
Extension Port-I |
DAC1 | DAC2 |
- 내부 Digital값에 따른 출력전압 변환
0 ~ 5V | 0 ~ 10V | |
---|---|---|
IEC-Series 2Ch/12Bit (4096) |
0 : 0V 4095 : 5V |
0 : 0V 4095 : 10V |
PWM은 OUTPUT(출력)으로 PWM1과 PWM2(기본제공) 기능으로 사용하므로 프로그램에서 PWM1과 PWM2만 사용이 가능합니다. Smart I/O-II에서 PWM1, PWM2는 보드에서 기본 제공됩니다.
Smart I/O-II 실크 명칭 |
PWM1 (기본제공) |
PWM2 (기본제공) |
---|---|---|
Extension Port - I |
PWM1 | PWM2 |
Smart I/O-II에서 PORT-A, PORT-B는 InputCounter(고속입력) 기능으로 사용 가능합니다.
Smart I/O-II |
BLOCK | SmartI/O-II 포트이름 |
프로그램 위치 |
Channel |
---|---|---|---|---|
DIGITAL I/O |
PORT A |
PORT A0~A7 |
PORT A 0~7 |
8Ch |
PORT B |
PORT B0~B7 |
PORT B0~7 |
8Ch |
- 외부상태(입력)에 따른 PortData 값 변환
Direction | 외부상태 (입력) |
PortData 값 (True/False) |
---|---|---|
입력 | High (12~24V) |
False (0) |
Low (0V) |
True (1) |
Smart I/O-III는 A0~A7, B0~B7, C0~C7, D0~D7, E0~E7, F0~F7을 전부 INPUT(입력)으로 사용하거나 전부 출력, 또는 부분 입력과 출력으로 사용이 가능합니다. 각블록 장착 가능위치는 Smart I/O-Series 제품 메뉴얼의 Smart I/O-II, III Base Board 편을 참고바랍니다.
아래 설명은 따라서 해볼 수 있는 예시로서 A0~A3(INPUT Block), A4~A7(FET Block), B0~B3(FET Block), B4~B7(DAC Block)을 사용하는 예시이며 또한 PWM(PWM1, PWM2)보드포함, ADC(ADIN0, ADIN1) 보드 포함으로 구성되어 있습니다. 실제 개발시에는 개발 환경에 맞게 재구성하여 사용바랍니다.
① PORT F0~F3, A/D(AIN 4~5) INPUT설정
② PORT F4~F7 INPUT설정
③ PORT C0~C3, PWM 1,2 PWM설정
④ PORT C4~C7 INPUT설정
⑤ PORT E0~E3 INPUT설정
⑥ PORT E4~E7 INPUT설정
⑦ PORT D0~D3, A/D(AIN 0~1) ADC설정
⑧ PORT D4~D7, A/D(AIN 2~3) ADC설정
⑨ PORT B4~B7, DAC(DAC1, DAC2) DAC설정
⑩ PORT B0~B3 OUTPUT설정
⑪ PORT A0~A3 INPUT설정
⑫ PORT A4~A7 INPUT설정
프로그램 실행은 위와 같이 셋팅 후 Set Apply → Start(시작) → Stop(중지)로 실행
Smart I/O-III 보드 장착 예시(Form2)아래설명은 따라서 해볼 수 있는 예시로서 A0~A3(InputCounter Block), A4~A7(InputCounter Block), B0~B3(InputCounter Block), B4~B7(InputCounter Block)를 사용하는 예시입니다.
① PORT F0~F3, A/D(AIN 4~5) 사용안함
② PORT F4~F7 사용안함
③ PORT C0~C3, PWM 1,2 사용안함
④ PORT C4~C7 사용안함
⑤ PORT E0~E3 사용안함
⑥ PORT E4~E7 사용안함
⑦ PORT D0~D3, A/D(AIN 0~1) 사용안함
⑧ PORT D4~D7, A/D(AIN 2~3) 사용안함
⑨ PORT B0~B3 InputCounter설정
⑩ PORT B4~B7 InputCounter설정
⑪ PORT A0~A3 InputCounter설정
⑫ PORT A4~A7 InputCounter설정
Smart I/O-III 내부에는 Port A 8Ch, Port B 8Ch, Port C 8Ch, Port D 8Ch, Port E 8Ch, Port F 8Ch, A/D 4Ch, PWM 2Ch, DAC 2Ch로 구성되어 있습니다.
입력(INPUT). DC입력
Smart I/O-III에서 PORT-A~F는 입력(INPUT) 또는 출력(OUTPUT)으로 사용 가능합니다.
Smart I/O - III |
TYPE | Smart I/O-III 포트이름 |
프로그램 위치 |
Channel |
---|---|---|---|---|
DIGITAL I/O |
PORT A |
PORT A0~A7 |
PORT A0~7 |
8Ch |
PORT B |
PORT B0~B7 |
PORT B0~7 |
8Ch | |
PORT C |
PORT C0~C7 |
PORT C0~7 |
8Ch | |
PORT D |
PORT D0~D7 |
PORT D0~7 |
8Ch | |
PORT E |
PORT E0~E7 |
PORT E 0~7 |
8Ch | |
PORT F |
PORT F0~F7 |
PORT F0~7 |
8Ch |
외부상태(입력)에 따른 PortData 값 변환
Direction | 외부상태 (입력) |
PortData 값(High/Low) |
---|---|---|
입력 | High (12~24V) |
High (1) |
Low (0V) |
Low (0) |
출력(OUTPUT)
Smart I/O-III에서 PORT-A~F는 입력(INPUT) 또는 출력(OUTPUT)으로 사용 가능합니다.
Smart I/O-III |
BLOCK | Smart I/O-III 포트이름 |
프로그램 위치 |
Channel |
---|---|---|---|---|
DIGITAL I/O |
PORT A |
PORT A0 ~ A7 |
PORT A 0~7 |
8Ch |
PORT B |
PORT B0 ~ B7 |
PORT B 0~7 |
8Ch | |
PORT C |
PORT C0 ~ C7 |
PORT C 0~7 |
8Ch | |
PORT D |
PORT D0 ~ D7 |
PORT D 0~7 |
8Ch | |
PORT E |
PORT E0 ~ E7 |
PORT E 0~7 |
8Ch | |
PORT F |
PORT F0 ~ F7 |
PORT F 0~7 |
8Ch |
- PortData 값에 따른 외부상태 변화
Direction | PortData 값 (High/Low) |
외부상태 | LCD Status |
---|---|---|---|
출력 | High | ON | ON |
Low | OFF | OFF |
입력(ADC)
ADC는 INPUT(입력)으로 Smart I/O-II에서 A/D 0~1(기본제공), A/D 2~3(블록장착) 기능으로 사용하므로 프로그램에서 ADC1~4까지 사용이 가능합니다. (IEC1000-Series의 경우 A/D IN 0~5(최대 6Ch)을 지원합니다.
Smart I/O-III 실크 명칭 |
A/DIN0 | A/DIN1 | A/DIN2 | A/DIN3 | A/DIN4 | A/DIN5 |
---|---|---|---|---|---|---|
Extension Port - II |
AIN0 | AIN1 | AIN2 | AIN3 | AIN4 | AIN5 |
- 외부상태(입력전압)에 따른 Digital 값 변환
0 ~ 5V | 0 ~ 10V | |
---|---|---|
IEC667 4Ch/12Bit (4096) |
0V : 0 5V : 4095 |
0V : 0 10V : 4095 |
IEC1000 4Ch/12Bit (4096) |
0V : 0 5V : 4095 |
0V : 0 10V : 4095 |
출력(DAC)
DAC는 OUTPUT(출력)으로 DAC1과 DAC2기능으로 사용하므로 프로그램에서 DAC1과 DAC2만 사용이 가능합니다. Smart I/O-II/III에서 DAC1, DAC2를 사용하려면 DAC Block을 구매하여 장착해야만 합니다.
Smart I/O-III 실크 명칭 |
DAC1 PORT B블록 |
DAC2 PORT B블록 |
---|---|---|
Extension Port - II | DAC1 | DAC2 |
- 내부 Digital값에 따른 출력전압 변환
0 ~ 5V | 0 ~ 10V | |
---|---|---|
IEC-Series 2Ch/12Bit (4096) |
0 : 0V 4095 : 5V |
0 : 0V 4095 : 10V |
PWM은 OUTPUT(출력)으로 PWM1과 PWM2 기능으로 사용하므로 프로그램에서 PWM1과 PWM2만 사용이 가능합니다. Smart I/O-III에서 PWM1, PWM2기능은 보드에서 기본 제공하지 않습니다. PWM1, PWM2 출력은 FET블록 장착을 통해 사용이 가능합니다.
Smart I/O-III 실크 명칭 |
PWM1 (블록장착) |
PWM2 (블록장착) |
---|---|---|
Extension Port - II |
PWM1 PORT C블록 |
PWM2 PORT C블록 |
Smart I/O-III에서 PORT-A, PORT-B는 InputCounter(고속입력) 기능으로 사용 가능합니다.
Smart I/O-II |
BLOCK | Smart I/O-II 포트이름 |
프로그램 위치 |
Channel |
---|---|---|---|---|
DIGITAL I/O |
PORT A |
PORT A0~A7 |
PORT A 0~7 |
8Ch |
PORT B |
PORT B0~B7 |
PORT B 0~7 |
8Ch |
- 외부상태(입력)에 따른 PortData 값 변환
Direction | 외부상태 (입력) |
PortData 값 (True/False) |
---|---|---|
입력 | High (12~24V) |
False (0) |
Low (0V) |
True (1) |