[Chapter 7] I/O 디바이스
본문
7. I/O 디바이스
산업 현장에서는 다양한 장치들을 컴퓨터와 연결하여 자동으로 제어 한다든지 아니면 현장에서 생산되는
수많은 데이터들을 컴퓨터에 저장하여 생산 효율을 극대화하려고 노력하고 있습니다.
또한 자동 디바이스 장치 제조사에서는 이를 위하여 컴퓨터 통신을 위한 통신 터널(Tunnel)을 제공하게 되는데
이를 통하여 컴퓨터와의 인터페이스를 가능하게 합니다.
기본적으로 인터페이스가 가능하도록 하기 우해서는 표준 인터페이스 장치 및 소프트웨어 개념의 통신규약인
프로토콜이 제공되는데 이것은 장치 제조사 별 상이한 방식으로 제공되고 있습니다. 이렇게 다양하고 상이한
장치 인터페이스를 통일된 방식의 사용자 인터페이스로 제공하고자 I/O 디바이스 드라이버가 필요하게 됩니다.
이번 장에서는 당사에서 현재 준비되어 있는 장치 통신드라이버를 eRun에 등록하고 프로젝트에 연동하는 방법을 소개합니다.
통신드라이버에 대한 내부 설정 방법은 별도로 제공되는 [Chapter 14] 디바이스 드라이버 설정 방법을 참조하시기 바랍니다.
아래는 프로젝트 관리자에 I/O디바이스에 등록된 드라이버 예시입니다.
"디바이스 이름(디바이스 드라이버 파일); 디바이스 설명"
7.1 디바이스 생성하기
프로젝트 관리화면에서 [I/O 디바이스] 학목을 마우스 우클릭으로 선택하면 I/O 디바이스 팝업메뉴가 나타납니다.
메뉴에서 [새 디바이스]를 선택하면 새로운 I/O디바이스 드라이버를 생성하고 프로젝트에 추가합니다.
항목 |
설명 |
디바이스 활성화 |
프로젝트 실행 시 디바이스 통신 활성화를 선택합니다. 비활성화가 되면 프로젝트 관리자에 디바이스 리스트 아이콘이 회색으로 바뀝니다. |
새 디바이스 |
프로젝트에 디바이스를 생성 추가합니다. |
디바이스 편집 |
디바이스 설정 편집합니다. |
이름 변경 |
디바이스 이름을 변경합니다. 디바이스 이름은 태그에서 사용합니다.
|
디바이스 삭제 |
프로젝트에서 디바이스를 삭제합니다. |
디바이스 통신시험 |
디바이스와 연결을 시험하고 설정된 통신 프레임이 유효한지 확인합니다. |
다른이름으로 추가 |
동일한 드라이버를 다수개 사용할 경우 동일한 설정으로 디바이스 이름만 변경하여 추가합니다. |
불러오기 |
다른 프로젝트에서 디바이스 설정 정보를 가져올 때 사용합니다. |
내보내기 |
현재 프로젝트에 등록된 디바이스 설정 정보를 다른 프로젝트로 복사할 경우 사용 합니다. |
새 디바이스 추가 설정파일이 나타납니다.
항목 |
설명 |
이름 |
디바이스 이름을 입력합니다. 스튜디오에서 태그속성 설정할 때 연결 디바이스명으로 사용됩니다. |
드라이버 |
디바이스 드라이버 DLL파일을 선택합니다. 선택버튼을 누르면 아래와 같이 드라이버 리스트가 나타납니다.
|
설명 |
디바이스 참고용 설명을 달아두면 편리합니다. |
드라이버 활성화 |
프로젝트 실행 시 I/O서버에서 디바이스 통신을 하도록 활성화 합니다. |
설정 |
통신내용 및 프레임을 등록 편집합니다. 설정화면 내용은 디바이스 드라이버의 종류에 조금씩 다릅니다. 자세한 내용은 [Chapter 14] 디바이스 드라이버 를 참고하시기 바랍니다.
|
7.2 디바이스 통신시험
eRunStudio에서 디바이스를 여러 개 등록한 후 통신포트 및 설정이 정상적인지 시험하고, 디바이스와 연결을
시험하고 설정된 통신 프레임이 유효한지 확인합니다. 디바이스 설정화면으로 들어가서 [RunTest]를 통해서
통신연결 확인도 가능하지만, 이것은 한번에 하나의 디바이스 통신시험만 가능합니다. 여러 개 디바이스 통신시험이
필요할 경우 [디바이스 통신시험] 기능을 사용하면 가능합니다.
통신시험 화면은 설정화면과 동일하지만, 설정내용 및 프레임 등록 편집은 불가능합니다.
통신시험 화면에서 하단에 [Run Test] 버튼을 클릭하여 통신 시험을 합니다.
디바이스 통신시험 Monitoring 페이지에서 통신이 제대로 되면 [OUT], [IN]데이터가 나오고
통신이 제대로 안되면 [OUT] 데이터만 나옵니다.
송수신 데이터를 확인하는 방식은 Ascii, Hex, ListView 3가지로 볼 수 있습니다.
[ASCII VIEW]
아스키 코드 문자형태로 표시합니다. 제어코드 또는 아스키코드가 아니면 <> 괄호로 표시되고
HEX값으로 나타납니다.
[ASCII VIEW]
[HEX VIEW]
16진 HEX CODE값으로 표시됩니다.
[HEX VIEW]
[LIST VIEW]
통신 프레임별 리스트 형태로 표시하며, 각 프레임의 송신횟수, 수신횟수, 수신오류율을 표시합니다.
[LIST VIEW]
[디바이스 쓰기시험]
[Run Test]실행으로 디바이스와 통신중에 특정 값을 디바이스에 쓰고자 할 경우 [Send Test]버튼을 누르면
아래와 같이 [Write to device]화면이 나타납니다. 적당한 값을 넣어주고 [Send]버튼을 누르면 디바이스로 즉시 출력됩니다.
항목 |
설명 |
Frame Code |
시험중인 디바이스에 등록된 프레임코드명을 입력합니다. |
Offset |
프레임 코드에서 변위값을 지정합니다. (1부터 시작) |
Bit No. |
OFFSET에 해당하는 데이터의 비트번호 (0부터 시작) |
Data Type |
디지털(0 또는 1), 아날로그, 문자열 데이터형으로 내보냅니다. |
Send Value |
출력값 |
Hex Mode |
아날로그 데이터일 때 Send Value값을 Hex값으로 인식해서 내보냅니다. |
7.3 다른 이름으로 추가하기
설정된 프레임 리스트를 똑같이 사용하는 디바이스가 여러 개 등록되어야 할 경우 다른 이름으로 추가하면 됩니다.
test 디바이스가 ttest 이름의 디바이스로 추가되었습니다.
7.4 디바이스 내보내기(Export) / 불러오기(Import)
현재 프로젝트에 등록된 디바이스를 다른 프로젝트로 복사할 경우 [내보내기]를 통해서 파일로 저장하고
다른 프로젝트에서 [불러오기]하면 됩니다.
[내보내기]
7.5 디바이스 관련 스크립트 함수
프로젝트 실행 시 스크립트 함수를 통해서 디바이스에 직접 내보내야 하는 데이터를 처리하거나
디바이스 송수신 횟수 등을 가져 올 수 있습니다. 대량의 데이터를 한번에 내보내서 통신과 관련하여
전체적인 성능 저하를 줄이기 위한 방법으로 사용합니다. 단, 해당 스크립트는 디바이스 드라이버에 따라서
지원하지 않는 경우도 있으니 드라이버 매뉴얼을 참고하시기 바랍니다.
_DeviceWriteString("디바이스명", "프레임명", "문자열");
문자열(string)을 디바이스로 직접 내보낸다. 한번에 내보낼 수 있는 최대길이는 4000바이트.
_DeviceWriteBytes("Device Name", "FrameCode", "offset", "bytes_data", bytesSize);
바이트 데이터를 디바이스로 직접 내보낸다. 최대 바이트길이 4000바이트 이내.
7.6 아스키 코드(ASCII) 테이블
DEC |
HEX |
CHAR |
DEC |
HEX |
CHAR |
DEC |
HEX |
CHAR |
DEC |
HEX |
CHAR |
0 |
0x00 |
NUL |
32 |
0x20 |
SP |
64 |
0x40 |
@ |
96 |
0x60 |
` |
1 |
0x01 |
SOH |
33 |
0x21 |
! |
65 |
0x41 |
A |
97 |
0x61 |
a |
2 |
0x02 |
STX |
34 |
0x22 |
" |
66 |
0x42 |
B |
98 |
0x62 |
b |
3 |
0x03 |
ETX |
35 |
0x23 |
# |
67 |
0x43 |
C |
99 |
0x63 |
c |
4 |
0x04 |
EOT |
36 |
0x24 |
$ |
68 |
0x44 |
D |
100 |
0x64 |
d |
5 |
0x05 |
ENQ |
37 |
0x25 |
% |
69 |
0x45 |
E |
101 |
0x65 |
e |
6 |
0x06 |
ACK |
38 |
0x26 |
& |
70 |
0x46 |
F |
102 |
0x66 |
f |
7 |
0x07 |
BEL |
39 |
0x27 |
' |
71 |
0x47 |
G |
103 |
0x67 |
g |
8 |
0x08 |
BS |
40 |
0x28 |
( |
72 |
0x48 |
H |
104 |
0x68 |
h |
9 |
0x09 |
HT |
41 |
0x29 |
) |
73 |
0x49 |
I |
105 |
0x69 |
i |
10 |
0x0A |
LF |
42 |
0x2A |
* |
74 |
0x4A |
J |
106 |
0x6A |
j |
11 |
0x0B |
VT |
43 |
0x2B |
+ |
75 |
0x4B |
K |
107 |
0x6B |
k |
12 |
0x0C |
FF |
44 |
0x2C |
, |
76 |
0x4C |
L |
108 |
0x6C |
l |
13 |
0x0D |
CR |
45 |
0x2D |
- |
77 |
0x4D |
M |
109 |
0x6D |
m |
14 |
0x0E |
SO |
46 |
0x2E |
. |
78 |
0x4E |
N |
110 |
0x6E |
n |
15 |
0x0F |
SI |
47 |
0x2F |
/ |
79 |
0x4F |
O |
111 |
0x6F |
o |
16 |
0x10 |
DEL |
48 |
0x30 |
0 |
80 |
0x50 |
P |
112 |
0x70 |
p |
17 |
0x11 |
DC1 |
49 |
0x31 |
1 |
81 |
0x51 |
Q |
113 |
0x71 |
q |
18 |
0x12 |
DC2 |
50 |
0x32 |
2 |
82 |
0x52 |
R |
114 |
0x72 |
r |
19 | 0x13 | DC3 | 51 | 0x33 | 3 | 83 | 0x53 | S | 115 | 0x73 | s |
20 | 0x14 | DC4 | 52 | 0x34 | 4 | 84 | 0x54 | T | 116 | 0x74 | t |
21 | 0x15 | NAK | 53 | 0x35 | 5 | 85 | 0x55 | U | 117 | 0x75 | u |
22 | 0x16 | SYN | 54 | 0x36 | 6 | 86 | 0x56 | V | 118 | 0x76 | v |
23 | 0x17 | ETB | 55 | 0x37 | 7 | 87 | 0x57 | W | 119 | 0x77 | w |
24 | 0x18 | CAN | 56 | 0x38 | 8 | 88 | 0x58 | X | 120 | 0x78 | x |
25 | 0x19 | EM | 57 | 0x39 | 9 | 89 | 0x59 | Y | 121 | 0x79 | y |
26 | 0x1A | SUB | 58 | 0x3A | : | 90 | 0x5A | Z | 122 | 0x7A | z |
27 | 0x1B | ESC | 59 | 0x3B | ; | 91 | 0x5B | [ | 123 | 0x7B | { |
28 | 0x1C | FS | 60 | 0x3C | < | 92 | 0x5C | \ | 124 | 0x7C | | |
29 | 0x1D | GS | 61 | 0x3D | = | 93 | 0x5D | ] | 125 | 0x7D | } |
30 | 0x1E | RS | 62 | 0x3E | > | 94 | 0x5E | ^ | 126 | 0x7E | ~ |
31 | 0x1F | US | 63 | 0x3F | ? | 95 | 0x5F | _ | 127 | 0x7F | DEL |
댓글목록 0