본 예제는 IEC-Series에서 지원되는 옵션 제품 중 Smart I/O-Series의 GPIO(Input) 기능을 테스트할 수 있도록 만든 예제 프로그램(C#, VB.NET) 입니다.
SmartX Framework와 관련된 컴포넌트의 자세한 사용법은 SmartX Framework Reference Guide (Programming Guide)의 SmartGPIO편을 참조하시기 바랍니다.
Smart I/O-Series의 하드웨어적인 설명 및 사용법은 Smart I/O-Series제품매뉴얼을 참조하시기 바랍니다.
본 자료는
1. SmartGPIO(Input) 기본 설명
2. SmartGPIO(Input) 관련 속성, 메서드, 이벤트
3. Input Block과 센서 결선 안내
3-2. Smart I/O-2 또는 Smart I/O-3에 Input Block 장착
4. 예제 프로그램 동작 설명
5. 프로그램 전체 소스
순서로 설명합니다.
1. SmartGPIO(Input) 기본 설명
IEC667Lite-Series, IEC1000Lite-Series는 Port-A, B만 지원되며 IEC667非Lite-Series, IEC1000非Lite-Series는 Port-A, B, C, D, E, F, G, H 이렇게 8개의 Port를 지원하여 SmartGPIO에서도 해당되는 속성, 메서드, 이벤트들이 추가됩니다. 단 Port-H는 0~3까지 4개의 핀만 사용할 수 있습니다.
입/출력 방향 설정각 포트마다 핀별(Bit) 방향(입력/출력)을 DirPin0~7 속성을 통해 설정할 수 있습니다.
포트 초기 상태 값초기값이 Floating 되거나 High로 표시되는 경우에는 Pull down/Pull up 저항을 걸어서 사용하시면 됩니다.
SmartGPIO 입력성능SmartGPIO의 입력처리는 하드웨어(Hardware)인터럽트 방식을 지원하지 않으며 소프트웨어(Software)인터럽트 방식인 폴링(Polling)과 이벤트(Event)방식을 크게 지원합니다.
SmartGPIO 입력이벤트 사용한 최대입력속도IEC667 | IEC1000 | |
---|---|---|
출력속도 | 55.2ms | 41.2ms |
환경변화에 따라 속도는 달라질 수 있으며 실제 프로젝트 적용 시 Event 수신코드 내부에서는 필요한 수행 코드만을 작성하여 CPU자원이 코드처리에 낭비되지 않도록 주의 바랍니다.
2. SmartGPIO(Input) 관련 속성, 메서드, 이벤트
Port-A, B, C, D, E, F, G, H중 사용할 포트를 설정 ※ 여러 개의 포트를 사용하는 경우 SmartGPIO 컴포넌트를 사용할 포트의 개수만큼 추가합니다. Ex) smartGPIO1 = PortA, smartGPIO2 = PortB |
|
---|---|
C# 사용법 |
// GPIO Port를 A로 설정 smartGPIO1.PortSelect = SmartX.SmartGPIO.PORTID.PORTA; |
VB 사용법 |
smartGPIO1.PortSelect = SmartX.SmartGPIO.PORTID.PORTA |
선택한 Port에서 핀 별 방향을 설정 Output이면 출력 / Input이면 입력 |
|
---|---|
C# 사용법 |
// PortA의 0핀을 입력으로 사용 smartGPIO1.DirPin0 = SmartX.SmartGPIO.PINDIR.INPUT; |
VB 사용법 |
smartGPIO1.DirPin0 = SmartX.SmartGPIO.PINDIR.INPUT |
선택한 Port의 방향을 포트 단위로 설정합니다. 비트 값이 1이면 출력(Output) / 비트 값이 0이면 입력(Input) |
|
---|---|
C# 사용법 |
// PortA의 모든 핀을 출력으로 설정 smartGPIO1.PortDirs= 0xFF; // or 255 |
VB 사용법 |
smartGPIO1.PortDirs= &HFF |
선택한 Port에서 핀 별 데이터를 읽거나 쓰기 | |
---|---|
C# 사용법 |
// PortA의 0핀을 High로 설정 smartGPIO1.Data0 = SmartX.SmartGPIO.PinStatus.High; |
VB 사용법 |
smartGPIO1.Data0 = SmartX.SmartGPIO.PinStatus.High |
선택한 Port의 데이터를 포트 단위로 읽거나 쓰기 비트 값이 1이면 High / 비트 값이 0이면 Low |
|
---|---|
C# 사용법 |
// PortA의 Pin0, 1, 4, 5를 High로 설정 smartGPIO1.PortDatas = 0x33; // or 51 |
VB 사용법 |
smartGPIO1.PortDatas = &H33 |
입력 신호 변경 감지를 시작합니다. 입력 신호 변경이 감지되면 OnPortDatasChange 이벤트가 발생합니다. | |
---|---|
C# 사용법 |
// PortA의 입력 신호 감지를 시작 smartGPIO1.PortWatchStart(); |
VB 사용법 |
smartGPIO1.PortWatchStart() |
입력 신호의 변경 감지를 중지합니다. | |
---|---|
C# 사용법 |
// PortA의 입력 신호 감지를 중지 smartGPIO1.PortWatchStop(); |
VB 사용법 |
smartGPIO1.PortWatchStop() |
Port-A~H로 입력되는 신호의 변화 시점에 따라 신호를 감지합니다. TRIGGERMODE로 입력 신호 감지 시점을 설정할 수 있습니다. |
|
---|---|
C# 사용법 |
// Low → High로 입력신호가 변경된 Pin의 정보를 저장 SmartX.SmartGPIO.PORTPIN iBit; iBit = smartGPIO1.PortDetection(SmartX.SmartGPIO.PORTID.PORTA, SmartX.SmartGPIO.TRIGGERMODE.HighActive); |
VB 사용법 |
Dim iBit As SmartX.SmartGPIO.PORTPIN iBit = smartGPIO1.PortDetection(SmartX.SmartGPIO.PORTID.PORTA, SmartX.SmartGPIO.TRIGGERMODE.HighActive) |
PortSelect로 선택한 Port에서 PortWatchStart 메서드가 호출된 이후 입력되는 신호의 상태가 변경되었을 때 발생하는 이벤트 |
---|
3. Input Block과 센서 결선 안내 3-1. 테스트 적합 모듈 안내 및 Input Block과 센서 결선
• 테스트 적합센서:스위치
• INPUT0(B포트 B0)
Input Block와 스위치 연결모양
• 테스트 적합센서: ㈜오토닉스(PRT18-8DO)
• INPUT0(B포트 B1)
Input Block와 근접센서 연결모양
• 테스트 적합센서: ㈜오토닉스(PR18-8DP)
• INPUT0(B포트 B2)
Input Block와 근접센서 연결모양
• 테스트 적합센서: ㈜오토닉스(PR18-8DN)
• INPUT0(B포트 B4)
Input Block와 근접센서 연결모양
3-2. Smart I/O-2 또는 Smart I/O-3에 Input Block 장착
스위치, 2선식 근접센서(-COM), 3선식 PNP 근접센서가 연결된 모습
3선식 NPN 근접센서가 연결된 모습
스위치, 2선식 근접센서(-COM), 3선식 PNP 근접센서가 연결된 모습
3선식 NPN 근접센서가 연결된 모습
4. 예제 프로그램 동작 설명
① Input 센서로부터 입력신호가 들어오는 경우 카운트가 증가
② 카운트가 증가될 때 마다 특정 이미지를 출력하여 센서입력의 시각화
③ 초기의 데이터 값은 ALL High로 설정, 이미지 초기화, 카운트를 0으로 초기화